initial checkin
authorMichael Prokop <mika@grml.org>
Sun, 28 Jan 2007 08:26:05 +0000 (09:26 +0100)
committerMichael Prokop <mika@grml.org>
Sun, 28 Jan 2007 08:26:05 +0000 (09:26 +0100)
80 files changed:
README [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/postrm [new file with mode: 0755]
debian/preinst [new file with mode: 0755]
debian/rules [new file with mode: 0755]
refcard.dvi [new file with mode: 0644]
refcard.pdf [new file with mode: 0644]
refcard.ps [new file with mode: 0644]
refcard.tex [new file with mode: 0644]
zsh-lovers.1 [new file with mode: 0644]
zsh-lovers.html [new file with mode: 0644]
zsh-lovers.pdf [new file with mode: 0644]
zsh-lovers.ps [new file with mode: 0644]
zsh.vim [new file with mode: 0644]
zsh_people/ZWS-1.0.tar.bz2 [new file with mode: 0644]
zsh_people/adam_spiers/zshrc [new file with mode: 0644]
zsh_people/arne_schwabes/zshrc [new file with mode: 0644]
zsh_people/bruno_bonfils/.zshrc [new file with mode: 0644]
zsh_people/bruno_bonfils/Changelog [new file with mode: 0644]
zsh_people/bruno_bonfils/bin/report-suid.zsh [new file with mode: 0755]
zsh_people/bruno_bonfils/bin/zshist [new file with mode: 0755]
zsh_people/bruno_bonfils/functions/_auto-apt [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_auto-apt.zwc [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_gpg.zwc [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_mplayer [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_mplayer.zwc [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_mutt [new file with mode: 0644]
zsh_people/bruno_bonfils/functions/_mutt.zwc [new file with mode: 0644]
zsh_people/bruno_bonfils/hosts/cisco [new file with mode: 0644]
zsh_people/bruno_bonfils/hosts/general [new file with mode: 0644]
zsh_people/bruno_bonfils/misc/dircolors.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/misc/zshist.1 [new file with mode: 0644]
zsh_people/bruno_bonfils/misc/zshistrc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.host/fs.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.host/jazzland.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.host/julie.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.host/workstation.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.os/FreeBSD.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.os/Linux.zsh [new file with mode: 0644]
zsh_people/bruno_bonfils/rc.users [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/alias.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/bindkeys.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/functions.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/history.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/misc.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/options.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/titles.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/variables.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/rc/zstyle.rc [new file with mode: 0644]
zsh_people/bruno_bonfils/users [new file with mode: 0644]
zsh_people/caphuso/zshrc [new file with mode: 0644]
zsh_people/damien_elmes/zshrc [new file with mode: 0644]
zsh_people/grml/.zshrc [new file with mode: 0644]
zsh_people/grml/keephack [new file with mode: 0644]
zsh_people/grml/zshrc [new file with mode: 0644]
zsh_people/marijan_peh/zshrc [new file with mode: 0644]
zsh_people/stchaz/mouse.zsh [new file with mode: 0644]
zsh_people/strcat/zlogin [new file with mode: 0644]
zsh_people/strcat/zlogout [new file with mode: 0644]
zsh_people/strcat/zshaliases [new file with mode: 0644]
zsh_people/strcat/zshbindings [new file with mode: 0644]
zsh_people/strcat/zshcompctl [new file with mode: 0644]
zsh_people/strcat/zshdevel [new file with mode: 0644]
zsh_people/strcat/zshexports [new file with mode: 0644]
zsh_people/strcat/zshfunctions [new file with mode: 0644]
zsh_people/strcat/zshmisc [new file with mode: 0644]
zsh_people/strcat/zshoptions [new file with mode: 0644]
zsh_people/strcat/zshrc [new file with mode: 0644]
zsh_people/strcat/zshstatusbar [new file with mode: 0644]
zsh_people/strcat/zshstyle [new file with mode: 0644]
zsh_people/strcat/zshzle [new file with mode: 0644]
zsh_people/thomas_koehler/klammer.zsh [new file with mode: 0644]
zsh_people/thomas_koehler/uhr.zsh [new file with mode: 0644]
zsh_people/thomas_koehler/zshrc [new file with mode: 0644]
zsh_people/zyrnix/zshrc [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..4848bca
--- /dev/null
+++ b/README
@@ -0,0 +1,110 @@
+################################################################################
+
+               +---------------------+
+               |README of zsh-lovers |
+               +---------------------+
+
+Please report feedback, additional information and bugs
+you notice in 'man zsh-lovers' to zsh-lover (at) michael-prokop.at
+
+zsh-lovers.*: zsh-lovers project -> man zsh-lovers
+
+refcard.*:    reference card for the Z shell
+              Please notice that the reference card for zsh was
+              created based on version 3.1.9 so is a little
+              out-of-date. 
+
+zsh.vim:      syntax file for zsh for editor Vim by Nikolai Weibull
+
+
+directory zsh_people
+====================
+
+adam_spiers
+-----------
+
+Description:  zshrc
+Author:       Adam Spiers
+Web:          http://www.adamspiers.org/computing/zsh/
+
+arne_schwabes
+-------------
+
+Description:  zshrc
+Author:       Arne Schwabes
+Web:          http://plai.de/misc/zshrc
+
+bruno_bonfils
+-------------
+
+Description:  Zsh resources files. (per Host/OS resource file)
+Author:       Bruno Bonfils
+Web:          http://www.asyd.net/arch/zsh/zsh-latest.tar.gz
+
+caphuso
+-------
+
+Description:  zshrc
+Author:       Stephen 'caphuso' Rüger
+Web:          http://caphuso.dyndns.org/~caphuso/
+
+damien_elmes
+------------
+
+Description:  zshrc
+Author:       Adam Spiers
+Web:          http://www.adamspiers.org/computing/zsh/
+
+grml
+----
+
+Description:  zsh configuration provided by the grml distribution
+Author:       Michael Prokop
+Web:          http://www.grml.org/
+
+marijan_peh
+-----------
+
+Description:  zshrc
+Author:       Marijan Peh
+Web:          http://free-po.htnet.hr/MarijanPeh/files/zshrc
+
+strcat
+------
+
+Description:  zsh configuration files
+Author:       Christian 'strcat' Schneider
+Web:          http://www.strcat.de/dotfiles/#zsh
+
+stchaz
+------
+
+Description:  mouse.zsh
+Author:       Stephane Chazelas
+Web:          http://stchaz.free.fr/mouse.zsh
+
+thomas_koehler
+--------------
+
+Description:  zshrc, klammer.zsh, uhr.zsh
+Author:       Thomas Koehler
+Web:          http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/zsh/index.html
+
+zyrnix
+------
+
+Description:  zshrc
+Author:       zyrnix
+Web:          http://zshwiki.org/ZyrnixZshrcConfig
+
+ZWS-1.0.tar.bz2
+---------------
+
+Description: ZWS is a simple web server written in ZSH.
+Author:      Adam Chodorowski
+Web:         http://www.chodorowski.com/software/zws/
+
+################################################################################
+
+ -- Michael 'mika' Prokop         <mika (at) grml.org>
+    http://www.michael-prokop.at/ http://www.grml.org/
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..18728ec
--- /dev/null
@@ -0,0 +1,71 @@
+zsh-lovers (0.5-2) unstable; urgency=low
+
+  * Fixed small typo (mp3 vs. pdf) (thanks Florian Hassler).
+
+ -- Michael Prokop <mika@grml.org>  Wed, 14 Dec 2005 22:44:45 +0100
+
+zsh-lovers (0.5-1) unstable; urgency=low
+
+  * Some small improvements in manpage 'zsh-lovers'.
+  * Updated README.
+  * Updated zsh_people/grml/.
+
+ -- Michael Prokop <mika@grml.org>  Sun, 19 Jun 2005 12:03:53 +0200
+
+zsh-lovers (0.5) unstable; urgency=low
+
+  * Reworked debian package with help of Reinhard Tartler
+    <siretart@tauware.de> [thanks!].
+  * Let's ship manpage in nroff-format without any modification (removed
+    'nroff -man zsh-lovers.nroff > zsh-lovers.1').
+
+ -- Michael Prokop <mika@grml.org>  Sat, 18 Jun 2005 15:42:39 +0200
+
+zsh-lovers (0.4) unstable; urgency=low
+
+  * Replaced $PAGER with $READNULLCMD [thanks, wuehlmaus!].
+  * Replaced http://w9y.de/ with http://w9y.de/zsh/zshrc
+    [thanks, wuehlmaus!].
+  * Added section "Variables can be modified by
+    modifiers, too." [thanks, wuehlmaus!].
+
+ -- Michael Prokop <mika@grml.org>  Mon,  9 May 2005 01:45:03 +0200
+
+zsh-lovers (0.3) unstable; urgency=low
+
+  * Updated zsh_people/stchaz/mouse.zsh (thanks Stephane Chazelas).
+  * Updated zsh_people/grml/zshrc and added zsh_people/grml/.zshrc.
+  * The "grml 0.3 hustenstopper"-release.
+
+ -- Michael Prokop <mika@grml.org>  Mon, 21 Feb 2005 09:19:12 +0100
+
+zsh-lovers (0.2-2) unstable; urgency=low
+
+  * Some small updates (fixed URL and date).
+
+ -- Michael Prokop <mika@grml.org>  Sat, 19 Feb 2005 16:28:30 +0100
+
+zsh-lovers (0.2-1) unstable; urgency=low
+
+  * Added zsh-lovers manpage in html format.
+
+ -- Michael Prokop <mika@grml.org>  Thu, 27 Jan 2005 23:53:45 +0100
+
+zsh-lovers (0.2) unstable; urgency=low
+
+  * Updated manpage zsh-lovers.
+  * Updated zsh.vim by Nikolai Weibull to version 2004-12-12.
+  * Added README.
+  * Added ZWS, stchaz/mouse.zsh, grml/zshrc.
+  * Added thomas_koehler -> klammer.zsh uhr.zsh
+  * Added configuration files of Christian 'strcat' Schneider.
+  * Added configuration files of Stephen 'caphuso' Rueger.
+
+ -- Michael Prokop <mika@grml.org>  Tue, 21 Dec 2004 21:08:51 +0100
+
+zsh-lovers (0.1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Michael Prokop <mika@grml.org>  Wed, 18 Aug 2004 12:19:12 +0200
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b8626c4
--- /dev/null
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..f99cac0
--- /dev/null
@@ -0,0 +1,16 @@
+Source: zsh-lovers
+Section: doc
+Priority: optional
+Maintainer: Michael Prokop <mika@grml.org>
+Build-Depends-Indep: debhelper (>= 4.0.0), gs-common, troffcvt, groff-base
+Standards-Version: 3.6.1
+
+Package: zsh-lovers
+Architecture: all
+Description: tips, tricks and examples for the zsh
+ Whenever you look at the zsh manual you might wonder
+ why there are no examples for those simply things in
+ (shell) life. The zsh contains many features, but
+ there was no manpage with some examples (like
+ procmailex(5)). That's why the package zsh-lovers
+ exists. See man zsh-lovers and included documentation.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..6eb7a0a
--- /dev/null
@@ -0,0 +1,27 @@
+This package was debianized by Michael Prokop <mika@grml.org> on
+Wed, 18 Aug 2004 12:19:12 +0200.
+
+It was downloaded from http://grml.org/zsh/
+
+Upstream Author: Michael Prokop <mika@grml.org>
+
+Copyright:
+
+   This software is copyright (c) 2004-2005 by Michael Prokop.
+
+   This package 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; version 2 dated June, 1991.
+
+   This package 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 package; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..57ba6df
--- /dev/null
@@ -0,0 +1,3 @@
+usr/share/doc/zsh-lovers/zsh_people
+usr/share/man/man1/
+usr/share/vim/syntax/
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..9a694f0
--- /dev/null
@@ -0,0 +1,7 @@
+zsh_people/
+refcard.*
+zsh-lovers.ps
+zsh-lovers.pdf
+zsh-lovers.html
+zsh.vim
+README
diff --git a/debian/postrm b/debian/postrm
new file mode 100755 (executable)
index 0000000..798c73a
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Filename:      postrm
+# Purpose:       postrm script for package zsh-lovers
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Sam Jun 18 19:34:53 CEST 2005 [mika]
+################################################################################
+
+set -e
+TO_UNDIVERT="zsh.vim"
+undivert_gen() {
+    DEXT=${3:-original}
+    dpkg-divert --remove --rename --package zsh-lovers \
+        --divert $2/$1.$DEXT $2/$1 #> /dev/null
+}
+
+case "$1" in
+    remove|purge)
+       for cmd in $TO_UNDIVERT; do
+               undivert_gen $cmd /usr/share/vim/syntax
+       done
+     ;;
+
+    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+      ;;
+    *)
+      echo "postrm called with unknown argument \`$1'" >&2
+      exit 1
+esac
+
+exit 0
+
+## END OF FILE #################################################################
+
+#DEBHELPER#
diff --git a/debian/preinst b/debian/preinst
new file mode 100755 (executable)
index 0000000..113a239
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Filename:      preinst
+# Purpose:       preinst script for package zsh-lovers
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Sam Jun 18 19:34:55 CEST 2005 [mika]
+################################################################################
+
+set -e
+TO_DIVERT="zsh.vim"
+divert_gen() {
+    DEXT=${3:-original}
+    dpkg-divert --add --rename --package zsh-lovers \
+        --divert $2/$1.$DEXT $2/$1 > /dev/null
+}
+
+case "$1" in
+   install|upgrade)
+       for cmd in $TO_DIVERT; do
+               divert_gen $cmd /usr/share/vim/syntax
+       done
+     ;;
+   *)
+     echo "preinst called with unknown argument \`$1'" >&2
+     exit 1
+esac
+
+exit 0
+
+## END OF FILE #################################################################
+
+#DEBHELPER#
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..42bb404
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/make -f
+
+build: build-stamp
+
+build-stamp: 
+       dh_testdir
+
+       # save old files
+       mkdir $(CURDIR)/debian/saved
+       cp zsh-lovers.1 $(CURDIR)/debian/saved
+       cp *pdf $(CURDIR)/debian/saved
+       cp *ps $(CURDIR)/debian/saved
+       cp zsh-lovers.html $(CURDIR)/debian/saved
+
+       groff -Tps -mandoc zsh-lovers.1 > zsh-lovers.ps
+       ps2pdf zsh-lovers.ps
+       man -Thtml ./zsh-lovers.1 > zsh-lovers.html
+
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+
+       if [ -d $(CURDIR)/debian/saved ]; then \
+               mv $(CURDIR)/debian/saved/* $(CURDIR); \
+               rmdir $(CURDIR)/debian/saved ; \
+       fi
+       rm -f build-stamp
+       dh_clean 
+       rm -rf $(CURDIR)/debian/zsh-lovers/
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       install -m 644 $(CURDIR)/zsh.vim $(CURDIR)/debian/zsh-lovers/usr/share/vim/syntax/zsh.vim
+
+binary-indep: build install
+       # We have nothing to do
+
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installman zsh-lovers.1
+       dh_link
+       dh_compress
+       dh_fixperms
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/refcard.dvi b/refcard.dvi
new file mode 100644 (file)
index 0000000..68055fb
Binary files /dev/null and b/refcard.dvi differ
diff --git a/refcard.pdf b/refcard.pdf
new file mode 100644 (file)
index 0000000..62a8ffa
Binary files /dev/null and b/refcard.pdf differ
diff --git a/refcard.ps b/refcard.ps
new file mode 100644 (file)
index 0000000..b01e154
--- /dev/null
@@ -0,0 +1,3323 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: refcard.dvi
+%%Pages: 7
+%%PageOrder: Ascend
+%%Orientation: Landscape
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR10 CMCSC10 CMSL10 CMBX10 CMSY10 CMTT10 CMMI10 CMSY7
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips refcard.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2004.08.18:1258
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: f7b6d320.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
+%     cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
+%     cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
+%     cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
+%
+/TeXf7b6d320Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
+/period /slash /zero /one /two /three /four /five /six /seven /eight
+/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
+/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
+/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 0ef0afca.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmr5
+%
+/TeX0ef0afcaEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi
+/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls
+/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright
+/numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft
+/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash
+/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda
+/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup
+/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj
+/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe
+/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 09fbbfac.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
+/TeX09fbbfacEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
+/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
+/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: aae443f0.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
+%
+/TeXaae443f0Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
+/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
+/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
+/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
+/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
+/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
+/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
+/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
+/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
+/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
+/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
+/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
+/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueID 5000817 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
+8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
+F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
+E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
+424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
+E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
+C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
+868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
+089B2D24FD35886901F6B9C56C38E6F9E4514CB6194FBF40F9EAAA1DF96589DF
+76A095EB6F7E11369CD67CA8FE07FEF38D94FB1F11DA0F1BEA497A6076A009D4
+600BD8E1113CB70AEC0C309B94BC981761DAF83EF7FE0EB81B464992E209E8FB
+E48789F8B8ADFDF4F739A36F2BA60A62BA1D69B5AB8F6619A391141D1E59DB2A
+DA428BDF8A3A38E2EB5C13B3C2AA2DBF556CA03CA2E60E79CEE931D46F4AC5AB
+B67EF8AD0C6194F834478D8E560F654FA3B71F7A4C0E28FC741EB62CCBDB6C32
+36C76D7C9A1D2CE60C20B23CC4C77880C1BEEC354E1CAE42FDD2CFC19685745E
+F2B62337B02DB4A60236DA417E86658E604A7CD6D3C1970C9ABCBEAB14DFB6FF
+9D9046E5470CCE2D345122A2488DA114773C1CEA48CF97747BD6F704BF7820E6
+100EF183C5E1C06B9D593F6A7E2AF5AE3660969EF77169F28EF156D16C9E333A
+F8617F3870453EE66956CE6AFA728DD9DBC65093CBD5D3E03E6A7BF751D36BB2
+413968D8576C12
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueID 5087385 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+956017667C419C4021DA92976C7550A196C257FC2124FAD1219D917D75E11299
+E7C59A90860E58D3C32DFBF59EA3C2CC10923A49690C438B3D0A6EC7F3439BF5
+123D18E54A317CF38A707F1E8FB16BABA63508A7621727B1897A95F1CAEDAD16
+F82F9E8604CC7E00CD31218BA27AA3D1FA9833177E3B11971E4C4B0A7C35EF68
+84B38B24DF9FEF362515B5F08A95FDD1680D1D8AA458EAA10F4436624D4C0284
+1D95031E5DEB7663921711DB5A3631DAF5431068EA44C971BD2EF417BC368F8D
+36B844BEFE32305E1ED5C0E794F85E4CFFCEA02BAA0B9C9E062DA219B2872C69
+EB1E49B47EAEA0D65060F243889165356A4B063350634B4D6BA2BED7A6DEDA0E
+C310464185B55E7EE94EFCDE33D5F9AB7A3B1799ECA413641903DC1329FC7D60
+53E276DA963F96A886B20E5E9D9A1F094CAB12A3124B945889C93951FD3AB9E4
+D41AFF0FF367AF9D15D50569F95B6E66A9998A0B7F00CCF10A985FD2C7F0E4BF
+94CD755FB149AD40434CFDF60B8ACA00AEFF3D23CDC4CE40F8184E6393C91D9D
+9AB72292A67B865BFB05709442399854ADBF536E16C9F98CB695FD09DD1FD05D
+2214F7E1D7A545B46BABB149598B6BABAE1EA9995AA613F9DAE821FDCA0A1824
+6E3F3ECCF12527B43236DB942E938108D1A64BB6B4229F32D02F3ACCC9A29458
+D7585D8E4EF1923415A7B41638C0E1561B08FA4E0A915CECBAFE4BBB6BFEBC97
+1540F500F6FBEB8F0819BBAE8096B901C0C0C76202558C41FB164F2C4CD79599
+518464EA562B7109FDC5B10F4618954C86519ABA4995174C7A21B67DAC5D8CA0
+01CE835D548CC6055996A04AA9D2AD65B8AEC9C022E4A14EA6F7B3D5A9538721
+3AE10B577356650E2EBA2A0926B927FEF75E3788E7F939A027E0BB951EA3157F
+80BD0720404F27E49107E692A2B50F7B7F6CF4BBC076B43795D76871AD192678
+611DDEFA925880411B3E897C18B31A0BBFB2D1DB16AEE79355B01F0C2B65D062
+2C17F28021298526D1D847A8520C5A14C097246F27E7D7EC85DE3FB269F0BD7B
+4676DA36F66C367E16A0B60A24D771B66E865BA137B49D7206C23AE046A5F100
+227032208A57ED7E158BF6E108DD07E27C2D5CFF80BFB70FE6B7339A6D4752FD
+3729E7485ED8000B2995F6E4CE7634E9DC1A0639647AB79D1D1614B0D147BFA4
+B71C78921933569F8E87EDA67D6C15F4235A11B4C69E35F889ADCD34E6872F64
+B317ACC0B99C55B1CF1646AAED42E879C0AE0E9177E109F16E5CD0C94E707FEB
+EABC1E1648615B69D7156CF62C4BFB997296A7029EC60D4E8494C087A3B04896
+C7D49804789B90033051B4F69BA647A68DC5542DC89A5B6AA3AF7185B6A28E0E
+E5E695C09EAA3CB7A49AD0AE5177EB048362A1D46F5FEB4C834D05E8A83FF7C0
+14140B56618B345BA1A0BC6BF87994FF766B3144FECA6DD970A7B4301CB7604F
+C54395F8E50DF9A9A45164963CF02A44F985C6B05CF8D745BBFB567991BBF02A
+01C7E93664A93190C70FE081E50DEBDEF5DB5D7450C1F6B036FBA83D44BBD504
+9A7F9BBAE80C09B65923504209847BFAB56BECBDBA4D76A3B8BA56C67F4ECAD6
+D60E7A4A66738FA4721B7FC4C90A45D2A140C308CCD582B70A6DF5DCE1B804F6
+A3FE80471D1D2346A1FD805106FAADFDD9010F019F09E4C3006D1FE0D1EB395C
+63AB3B5F3D6D7920A64A455BC88DBA472B27E9B8673E7785BB8FE97F17B5ACCC
+4C340445327162D745532154EFA1A85353647F90C0E42C761BFA8FD2E87A8612
+B29D34A0999F17966CA0E545F599DE92A3C1D5AB21D01711B99447D551E882EE
+676269547C19F69BC26FA9BBBC328C922924F66B55884A78C10C10FDD55D65B1
+3A57E9E8D1E08D111FA03986E29C4FDCA5EDC4FF5098D6538E6CDB956CE755F7
+75A218D7BAAC1F03EF558EFC75B71011F27B8F0CED6AC4A5B909C2C76037ED48
+9CAEA4FB1B722D62DF7A316C4C8FED3209DF390FF1CD8D39A76DECE79CBA91E2
+E5737B6553AEAC363AFFA4F00177796B5300F567FFC2853E6AF7A2AA94176FFE
+717DE7B98F026AA009B2ADBDB2A990F3449058E618334236365F3C5B876D65FA
+659E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueID 5000832 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
+726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
+CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
+7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8BFAA3D4CB5E17327404D6A8
+35514F62BD91BFC544B7C5E0DCD6D6D2C4E3CF6589E9D3E6301F8D9F0BE23759
+F4F6C873CE2D380084EF6C3C222E4BC5A6ED0E8D0E067E2A3D0BE8B2D378E5E3
+EAAD4EA0CAAE67CF7CBE17D596AB665A2A28783E51369C07C862C9E91F1D6E6A
+B2EA5AD89ECF7C42B7B0CEBAFBF72CBD3CE294737DF5C1326032FF8E5E0C1985
+604FCFD4B49BEB4AA07CDE6FAAF5344D89B8892F2DBA833118B83C5A42C2D54F
+9300D4117F0C9718A4B1A8AE4D1F2E61774A8BD508B285E88B183257BBE55C58
+4D2618007F415A4E6FC67344F7F0E3010B9BAC5F3C44109E63A052FD253B8DDC
+FE3D01F1EFB2A679ECCA23DC0CEB40DC2AC998DBC5AEDC5573FF35CB7152BC20
+D4D9554ECCD80F9D941510CAF81FCE73C77BFD275F6F73FFA8311F7864293ABF
+D077D3233573325F7ADE854C00B999BFC45178C54AF1646204CFA8DE394D0EC9
+679007F27757D44231EADA1A542635B7DA2300ED4D694E380AFFD7C21922731C
+45591EDF98D7738FE0A885CBA7D0909A3E218B49CFDB2E7C37ACDB7D858B6719
+E0A4DFE4E723CAAD1FA80328613C1EDFB95780E1D34676357887A02E6223DC19
+55E30BE2FE3A17C7D6570911F9850C11D749D169B4E1511C924FA76B3CAF7950
+1E0993B34EE009D8312FBAC8665F6BB1CCF6BA2FDFD5AE9F1D7267FB51CF42EE
+AD7BB0A046AAB95C99A5E9EAFC6665DCCBB86BF657EB7196295ACE7E9404EDEC
+01C1403E2ABFC8962C812057FAD7DD409AFCD1115BF0ADDF1DAB45385AD75D96
+8CF0F8A88CB7C4043A7BFBF0F6600EFA1E7D096BD5DC87289F60FF9773D1EE3F
+EA594C5D1CAEC9E0D22EC9A18377D0C8F0B3F8CFBD1E7F8B44F1F93848F6440D
+E39EF553A2AF46BDB93386A32D9444784CADAE7C4B6BE1869430C6DE57F0218C
+AEAED798110DDFE49D7EEC51422296314D0D5174712E009AD9CECB2D86E47391
+7CF388C614331792FE06D7D66F26CC754168AC2D1394202B3E48FCFACA1B9683
+1C17BD9C1EF8BA247BBD3CBD6AE54F71AA118B88CAD5C7878947D5976B91E1B5
+4B3EACB6797C55654CEB29E574FCA219729A2B4E5D7948653423EE0671727422
+A644F6653A89EB4BA5BAE3E1F1D402988370AF091E00F819FB8A4960FE4A4EA2
+D794D313AF6F8498A08571F5013175920FAFDEEFA827AC73D41455805B017B89
+CE774D73BADA32480899D9ED4A4D09B23424BC3708974DB2BA779182C42C0B9A
+359AD276F360590A189881A23B169A5C5A160271DE30204B0D69B11E4326373C
+A0F2DE72D2DF256CF5FC5DBAA49D2D687C38F27A9A084176DD446B9E4824EB35
+E0CC50DC43E624C9A9E43306B05CF269B89D12B60804E1F32AB61509D9E0049A
+B039F0D9160435D2B5BA1C1F316682CA1CE7535330273FB6692FDF511C8A35D6
+2C37AC0FF3E77827546D25AC7DAD5EB219E847E001628942AA628B47B2D2F6A3
+C573BCF5528B4600B1F46689D4B8F9ED7CA0D3241D908AD3FFBD7DA31BEB99B0
+2F683BA7CEF7F65844F3462108FD17136B2ABCB40F6CC495E0628B4C178B9221
+0E2604400536A4C4990979E97E922A7B5E9040470498480AB3477E9BA6BD247F
+5F9C705EDF44F85495741048323DA8F34CADB78524B56A786761E3B1F481C561
+2F175928E4EEF5715A1126399D7A5B90F46CAEA8E645376D94666AD7FDFC2840
+ED777AA644D8D78EE321BCBFDC3EBCC581F8ADAA978AFBC852034B0A51C06B03
+5877C637AB61C540F3494F58E4A143E8B13663CB8C0521D91647B8FA58452010
+B878E57EDF7BC10BA5FBDC9B79E1E683BD9D079C9C75291364F8AB35714B68BD
+173200B2F5EE66FB182CA19C8EF00A6D2BDE4CE40592CE14E2923F552F4E46CF
+7A62C769F89A65CB6D7E31298180B1118B6D8AE1A769689D76ECE9C6BE5AEB1D
+CBD98A8BA51D37E379EDDB85076B951CCD3647B339685564FFDBFFEBACFCD592
+B3281EBEC0D230E2DE573D834E06A1DF1844E8243A5CDD48D49D1566152B18AA
+162CCA1320C43900473467552D24A639ADA28E0E15FD5F8D47A726A1C68A3188
+069ADF47BE93677CF661F67898A706D538DDA994B0A43656A4F78EFB544FD147
+998054356BAB9506073490F270EACAE3EF78D9A23EBD1BF8DAF17D2A93F9FFF9
+778BFF9953A94503894EFB6E5F3768C0C5F4A6A1A0F85E0A825755ED0EED3A3D
+FEFF0D7C06D841461C88CD3D4CAD688C4C79B16B9DD60EC745682084A00DB260
+BB090F2C90798202608E433096EA695B9B0BCF3433E4AF8A2D6347DB7429BF9E
+D4AAF6898725D520EB1B3444A2E59E4CB4FD6C64EB69C20D513504D0DD8710C9
+317A116EF155EA3B09D17E091EB35A9478647EB099A4C03F0F4DC0031777B0E7
+A9010721755C3E0C4A7899B0DAE9717A597C2EB9D16A4DD795C051222C8AEF33
+7540F5B691B9D977F2AEE8663E7FD39770D505C879959BC97E7EBC3F68FB184C
+B045DB83F04452C017FD6E566345898AF1DA1D5BEEC1C8C61E009D59DF7D35A9
+60E54F19DEF5F0BD54B51C46C000190D4E889FB8CEDC958D547F309169CE0A6E
+703BEA5CCD6474264AF6D93DDDFF7F4BC2D6C96CF6C21710E651B71C75B5F73D
+F06743B138ED3B58C72B28BCEE8C1BE334D37C7AFE5F80F930146C9875CB4C71
+FA9ED6E3FD669D41A41868A6B31EC99F2C4E0551B270AE3AFFBF82582E0B66C0
+A2B32568C1C84FB42F341DF7F84E887361396E93F949A03DF13710303D1DA39E
+F61A49009B044D8CA6B21E9E013F11F2E1D1A64B1677DE14D17560F9CADDF4D5
+E87F4652C6D229D4912A3F9F7747189AFD3756E3A4D9C00742374C9F1EB382C7
+A4936D4AB20486648BE2739011F6D264D860207B4E4C9604076A227EB7BFBDA9
+DA7117D50F435D69F29E41F43A16E9B73C75C9C0B5ADECBCF0DA8FE105E41DD3
+3F655308770989AA5D32093EBF85339EE47B866F2F959271979A18B775701219
+57C9C6A3674072859AD7DC1B2DBAB8ECD553B64AAA536ECC63AE451FC53CC6FF
+7576B349EA4D58BA4099D0E3AC4CB685B64597E51477E33AD70952FEE2FAFD95
+8A41A4A8738AE54133B2C6B8E031D59888CA7F3C686A1ABBD7F322718133A75A
+9604BB4ACFE6F76E3483580E156A6533BA1D224C02B4D2FBE025DEE3965A7844
+85D38B5EFEC809D4E9A3CD0503FBC11CD88310AC7304459DF8BB51D794554C42
+0E6C3E9944468FF2029F4F3B3550D9C5B4EA684CD4B49AFA29F64FC299A8A6AA
+36874E121CD06D81D23D417B4E7378D48882DD3F7858FA16060ED9A004849CDB
+CBB4635A7A0B134FAAC6102848FD8276DD75B02A1280AB5C0950061519B6F894
+DC7BE6134EC22ACF4FB239FFD0AFA669D3E67FDDB252A5E49FA42AC79EE6D748
+88F78C64A672223FE204B6ACA0BBAB6A8B6AB9D5B1DD1D6416C935966B870A68
+2FEBC7F54E2639F504DB05413B07D033870B8847B7D134D4DCFD89E87527E941
+2FB660A86C94506CBD1C1D8393DBD283325B31C1A1A0F2AEBA1A11CE34372280
+E56BBE7D8AB0511372CC206C85CBE7658A8449921A582692B3F3792CDB089DCE
+E6B08AFFA1DBF42EFDA03D2EB2BAC4ADE90B11F2ECB141ACFE13B726D978635B
+51E8C83B816521D8879F2003F2EE0D9192FC89182E5E120961A791C8CD73B41A
+20D9C90645BC3139E019917B8B0FF1FFA182BBD0FD8DBDB4E0A62C46559541EE
+CCA5A619276903B75B9C5842AEDA05A422003E736BA4DF47906F54178BF5342F
+430E184D3F61C751C956D1B0D5DC2B89B3617CD9993FEE9E2BED2A897DBF661D
+A369BE1603D7848BE9C64CBC4BDC6F263BD65766C033BBCBDF07DB38D6E34011
+5FE41E0D92C4E435E386F1E62D6BFD999A360A2747940191FF687D7C585CDFF4
+AFAD406B0858753F5F4D3D898B2EF58E5D6C225633FB7A03BBA6E2DBE5FB0EE5
+B2359436E6D17EE5017CEF952EE9652DA99C04567D92A0488EF86088867F51CC
+AFE3584944CE91C61D17760BBA6BF35054D30C6C867628303F73D82C94345E69
+35DEBD357D67571E9245FB89D76AD87C24D18F4D4B2219B57FC5CB60AD5BF09D
+B528656BACB8823F484F6B0716C122439F057EB5CCE4C5CB6B6974F0409EFC53
+709C554E3802318C3704BD749A8E58637C54C3F88867CDC9C5F3D171B4627A54
+F3FD024404A4C03605610C9BC498C1678152412F3EB0928EF11583B7CC54F1A6
+DF4DBD23F5EACABE902B097C180969017301169A9D4F44C073AE3C642B8191FB
+CF4EADCD61A8B6C15619ABFDAA021392392DDBA1A73F2DB4586DC431653D27D3
+D8E392F21921B17C5A92AE3A689A0A2A8AC0B7E32A6F209978B4C7A4108A1D23
+4E910648378782A75FE8D71B7D9399D7691B859520F4A5ADC8A52B09280CFDA5
+FAFBC0E41FBA41D3F8ABCC5A7C4907C33ED4662EF2415B9B2F4C67807B9204F0
+C7F6735067D8B48CA78BA10A53474EDE06AE79B029A847E5886DAE6BAE81D0FE
+8A80E38DA360575E7D9FA99C678862BF15A3712205456A3451325B26F1DBDB35
+ABAC242E316BE8767CD197CFEF1070A7BE17BED756D7355833EB034F933AAE67
+0425298BB04352B9746C48CB293B56C0FCAD5DD46ABA133573D9276172AFFFE7
+5A24BF52E4DBE9F8A7CB9384537EA7EF57C636987F0E7424A9A5A911E481A2F9
+D0C297D350AB00193854965388532487E19A2F55E18246FD41020C4BBCD8FA6D
+231BE832437A194AF2BC80192CE199E45F1B017FA6D122B776B1D6B4BBD0EAA0
+6140EFC088E1A6B0DACA41291875CB8518925C7367FEE5BA6BBE09F31F918E32
+654B14A8858034399FB445C80D6F3427E1A77561A5C6DEB536B3610AC54B86B1
+547EFC6954048D81A3AA32DF2E71896614A87DF3D39285547937F4E04D9F287B
+C3AC1442F8E82BB45644E652CFA7AF51B0F2F174BF500A0481ED08C6C20E697B
+C6A934137705BE7A7759566BC7D724208B17F69FDB558C9E2DAC38A153CB8614
+FADC51B1B08174250FF89F2FBA2B5349FD9B0CBC71DC69D8EB169851DD4C71D0
+8250DB465E73AA7024F34269E3981C0361F7A0D97F21130C3C7D305554C4483F
+21906BD3C55FF4AF172C2F89D4BB80F2E03F58698AB2CBEDBA76C0ECCB6AEFAA
+23BF554663838A9BB1E58D7DA8171B2293BE0D648EF6B50C13FE922CAB525F0F
+09D23525485C5B40A9C34992C78C6907C5AE722F010AE94E6BFF75A5E8782F1F
+7B64664BE9E7C12A3D3E137A4E7304FAEB573AD70087376D3DEEF58B8D8A2B6B
+BBC91990871F5463EDFA92FF611CB9BA5D7F259147EDD1F1CDDF7DEF32FD34DB
+47BAB2F4E4DD38611649461E00366FB88CA0750CB15E302EF7735E5AA1FA251C
+1B4E893DD2B319FF571B359ECC3F85BA1F572A665630DBF98989ED3588563290
+5B1CDE616F2A78A116B50B44B6CF538731A02506231E23CE9F006649E8807AB6
+E3AEA36385D10758CEAD581D9334B2E87AE80EF21AF220C3B319345F8C91E502
+555E0EEB9918BC0C9D4F8C553050F8DDAB5D88BABC824D858CD856BC3ECF2A32
+DA19F06186E4B52ECFCC486452904790C93554B2105CF784DA0917438679B718
+BC1407D018AB4269DDE2BC96A934CD25B89C04309A5AEE3CAD069CBE692D31FE
+7CE8B1ADDA2469C1742B58B0E89A10765FF4C9C528CF7614C47D8325A69162E2
+7AEA57B98679DF753F3B4CB66E6BC9C8B7238323494BBEE47AA073B70789A2B3
+6F69F60832AB3EA19A22815C2DA89209D356BF4FED634F99006730F4BC78A4A8
+7C339779D9C0B588DF061A1276DE32419766E6426AB1FA1BE688DEE864D27805
+239A9FBEBA9B05A3511C24928101BE89D173257A344AC5545690DAF26AF99D3B
+27F847DA582DA89C9BEFAA12788242B14D1A345D23EE4D0B2294BEF5F11B3BA2
+F74C1265F5490D3ACEBFA4721D8E125111E13CD233398EF9A1E722D2E4445BAD
+DB78755B74B1D5C79215E3244E4017319447F57BB75DECA88A1345F43AF31A72
+6E6EF21F456F01BC9AF3A68B5EBEC505E7207760F39A5714B3C4B93C86D6C6A7
+0161AF00C7B0DA47F34A6212C280073D1276D6985F4AF74530D78D3F143AE927
+B5BAFBDF1ED9F9E97EF3A3C8D235EB70A1C1049273347095F620220503324D22
+DD6DC98568634216286B9F584B9C78A4C0C51035BE32DA7C93FF94709117D5B2
+8B4E236682FA67830E31E461E824F220B9668590DC595B9475C37A00AF53E77E
+E337FCA911447E161BB7A1F9067BC597AE358234DCA0C06B76D7CF66DDE51057
+58A2DF3DFF18A14F39B45A1FAAA061C9EF6CDD5BF990C46DA035A516FA2C8FFC
+8CC2CC1BD4D10FC7FDE199683657AFC1AFD5B56BD4B6269AAD124508C03BD66C
+2FB57686077DA5BA445B28E7F28E0CFDF23D05812E6CD646474644FD695E2079
+FA207AA171FFE44AE3B0D408E5F6CCB2D89719B830A786124776BE514083B748
+42FB24A990A3CDFE37AC62012AE30F27C6814EA1D84AB9FD95E8ACD505061164
+3DD2198993F80F9AF5A1984C85617A0271237F81ECEB4687349557616CB16B01
+D5B3CFB20ACE864B15CE01977FF0A96C3B8E5D4F1012AF5D914BBD4135EDC4BD
+02E7D2BAA0EA890A81497D38DEBCF5EFA84E5CF7996B962DB15215E63D601207
+497995E5C3290B19EF0D29424D3B53C6B7677CEC092F706BDBD1C310BCBDDE65
+8F67144990E8927CAD542D6EA574A887DB03C7FCC3E3B7B9023A4E2B8A6D6578
+160573A5083F7ED82B58E1F6E10AE48208D62C89E082DD176E29FE584C3ADA8A
+562EDF9FCE0F16932B1B48A225C6E63F671F90EF8E4DFC246B196477F7F2E5F4
+B379FF7CEC7B5966C39F12C49C7A5DCEF22B276867D106377E23EB4A8849D36D
+449962FB1F3CF0022F01E2F6DD52EC2EBA45C37D2F3DBCF02CA03A8AF3A4A519
+0E6894D4E4D6343BF91E09FB2D3885A40EF985ACD3118DF89A106E0E6A6E246C
+FF9944F32E6734221C5B3CE53817306663F43135D4ED0EE6D5D6D63A20D5988B
+B4E0A768717CBF0AD921C54B24B6A80C6D0DFAF0740E678B6E2C10FD376D163B
+E22D299FE79178AB02A0D4CCE219064B4F97263289AA1F4A72AD2E24E119E0F9
+27144ADA2A780551C6D0C52414781DE120B3597407CACB22A76D3AC984A89823
+97B5A24E495A3A57CAF274C6653D6900E76EBE283EBC89EF2D7EF9992FDB2064
+0D764C82811CA3541AD771A38A96BD4FFE2A120E2F6782EF4FAFB9C57158CB2C
+18B35B44724005C818E921B3597E51F29DDAC5610E49B0417D51876965F8C702
+7A682333FE6DB070216679065295107BE8C365D5CE35E7D50E2B13758A0838A1
+F70ECB24605EB9E031984B12BB77CA5B48C6C4126AF7A6295425D24CAEF811F8
+69EEBC50B3F7C529CC501CF3BD01BB7B4220128DEBC666D37BB4E44272294C6E
+A96CDADBFA36835B9B18322DEB7D662EAF0E61A8D8982C342B730C0B851CE908
+BC13C9D5973D800CF091C0EC75D42F3161AD21CBD2B43A21A12B2C699B30A188
+AB737B744315843CBC05DAB759EF5F6028AFBEB5308419483FAF25D00B29776F
+E6CDD3B3A683C419A007DD8E0422E2E428B70BD6939E5B29D6BDD12570BE1009
+E55075EC3EDD6AFC299B5734A3C1DAE8F2EE508024C93108D8BF5C531DFAE7F5
+BF50972D37718A58A232BC67449D8E31478BDA9BFA6CD0FDEE6A5E6B98DC8DDF
+EBBD3621F95D5792E4EB3000F93BF13B00FC2FED626696C091C9EBFB1B1C2441
+638AE24EF45D7ABD294550397ABF5FA0BF504B4FB7294B2FF5984E74B9A4FEB1
+F7B1125A61264309CFD4C6D0F1C7B0B302798FA6CD86A1DD7054930C6DC5F03D
+B31D96769C0F0490495A3D24A9F00CB6E054DB05531360FB14BCD3A0CF45D205
+8A87FB862C88243320DF187139D1FB5A70A71A7EA843F2D26B0247E456E575BE
+8EE1200EE156E66CA87CB26660BD5F5FCE5AC44C17B1C0FEE3054523C834CA4F
+9E5DEA5327B191B1FB5F6399B6211AD05A3946BCC04E0D0420C5204354C69A86
+FAC4025531C27C606F92EED58315D46B34C4EFF7CCB6FC6F62E876EC01C59AC7
+C8AC26317883006C95726E4B88C0611787CF6B73D4A7DC89BA8BAF4204C106FB
+4489B12C976E0CF9024037EB333F6A604C9E3C5F78DAE92615002E6430C631A9
+1382EA3E3B464C02647E1E69FACF8135AE59F6B8CD4DFA3F610A888829946687
+512E1054C694D2AF2050229FDD6E030D3C8C74890D565AE2431BA600E5BD2F1D
+2E8ECF294405DF34E70B6A89387F8ACF6BD8D839FECFFE087B86DF408831D6EB
+9489B1D6949B5C2D1B3458EA849CE8E916F4D68E2154A7D4D9FC4551477F99A8
+9800D33F9F96E182F2F177884060A87E1E3598E0B74B1A8D328FD2D089B0909C
+0FC41EDDB8ACA80F03B7A688885AF7193E9DCD74926646A84D83790469C36957
+B15DE1E33F8FC17E99E1F1E7F75D48DCF249843182018929B9BBD21AA76FA275
+34DC7E47F3CF94E451DDF5D2893FE049FD691BFA98FD90A0B43961BBB847A789
+628D388B1992A3323305500664CB0E66EC62CFB12E52F8C55F3B6C7FC1997B44
+82BD6E1392F5C3DC31A1D2D4764E73C90EC27645467421378932770DD433D1FE
+BA2456D9EF2CDA03302FF1C0A5B7C92AA9611508236E87D44BFCEE9DD854397B
+7B5C2999A41D56C1A4C8619B5DC214936856DB0E518356D8F8A2DE65CCBE4733
+46BD6B422FFF640C37AFCBF109F80278910FF351E8633BEA78CC6429ECDCDB23
+03DEE225E06F4DD41F88CBD60F5E10A535D7A0249D335E8561EDFC493EE18403
+A6ABD9219C919D7ED23FDF9F57106AB478074730CD9CA3DE9CF5321F8502183F
+E0CFB3725173B773B55CEB083E0E8AE1E93C80045BAF59DEC70442DF1D4B8A2D
+6CA856DA00F98E2EEB81D53199C8FB70BE6D16241E065429C9B4FAD55CC0ADEA
+394CD990FDBFE661B60A0B3C03CA4454378856E6A8E9CA752B1978BD2D5517F2
+1417F636B8DDC309BFE6E82370B150C782BFC499DFD2E6A70185370500B472FE
+17B9D917FA66D3E8BCC832C1E6C5B992817A4441F477934AC37737509ADCEB9B
+56E5EC785C973DE149FB93F0944E2FC560B9B6B3DEC6624CD69DFB536BE6A3CA
+AB35C74893C433E3867B2EB1CFC790731FFB62C1AB4243472115F7D3C229E62B
+F14EFA46168E54F92723357F1E9971DE0723FE06011B19D4842DA42C07B35C3F
+2A72599EB0B5E24FFAE5CFA1C16216CB7B7F15C4C869775241D420AADC507992
+8E9D46967FA7E9A4BF572F524325640D1C93B36D54A7B110A2953D1D4175D6C6
+D077B55D42083325EFE222B3F10165879D06A9AF8B6B58F88F62B3C3E3C7421C
+310AD3D84CC0BC241623218B4F672A10D9C9E920C831AC38E0216AFCAB82AD7C
+E467B6A1C2DC21BA829F4F55A833BF7938869DBA4AC5DA9E54D40506C3053294
+A323738B2BFE8AA25E591E60BE33355AA88C637A2AB6AE9FF1861582F2D89B14
+E45C3741312E88F2B0AB29D49FB516548C30F9AED1F85A0A9A7E9566DBD9053E
+A5A6E66B8B3D9B651F2F880A9C83C09D80E4360E776461072498FE52EA548111
+A35E635A2D7AC735444A77F2BF452FA28C0F645E50283E156AF9BBD74269CAC0
+92CAAA73641FAE10F4E6C5D5E82C2A90284059BD2C239367F9FA343BD554C176
+14A9C007127324B1F71E104810A2AE8AEC1F2A8E254CF9AB80167FEDD3874CD7
+ED932E0314BA1653DD904FA9F74882EBE659B357F9958019265929F35BAA2E72
+F1A5D473B194EA3D41009FA408BA731D2210C074198FF2E986C84806FDFB36DF
+890BA8AA5D6D18FFBC8D35736FBDB635E7BC2F4A8EFD6BAC0F6E1EDBFC47E83E
+A1CD4FA452429E61D615E127B122B1F9DA19528693327E46FB6820238CEBE4A5
+70BB64D5D5C9C8A1EC694118B8047804A35D707A970171015FBCFA68BA55C1B6
+C3C156BCB7569ED6DE4BC498C6DB46EAE3F322979180EA71ED2A82C9EDDB9F52
+15BE7AACF7846F865742FB8A75FBC9297EED2AF608D8CC2F519EC75671E792E4
+1928B547815C469F377C3C50A9FBCF610222061EC412894AAB1386B36C025924
+FD5A1E6D23090C16D15D68E0BB53FEBB10E7B63E01A91173BC4DF90A6C24693D
+6D26B1AB0C8E8F7CF627DFAE0C7E25F575D66DB136ACAA6B27BB117F223CE6BA
+F3D622FA1A80BFBAFD62298A6DD8BE99B5EEF9ECAE21C668D4F609706AC43837
+991FED93EACFA8EEEC596C02C6A6863342F0B801924ACA377B7CE41E6287B1B4
+CA070553B41658C4ACED417F8B995A83F27F23911028F59153484CB753C1BF3A
+87F515C435AC5280697E5F2BEC83D93F639A5DED93AD4337707FBF447DE57443
+4B71785FCE49D3EE1BD338BF4418E47785D1B8E580A05983A37FDDE196013DF7
+554E8E2AE9ABD618958A7BF0A865C7420D72FDE48618A0F0A515568350FFFD90
+34C842F952EE42B3E57CB7CA2A1E1377D9BA7123348C62E264AE8C51898F1295
+2714E052C40324B6F15EE93847A42A81BE39F062A1522B0F4B3337BA3E0B26D3
+F7726EB8C208FAB53CA72DCD6F1490E05BAD67BDCDA712BA24BF27F1D364D854
+2230CDF2D28F5EB51E2530766E12F003CBCCEE64EDEA745AB655283F4D260617
+1526D54E2D629C88F6CBD1152191C8C0CD7F9070EA93133E76C4752A0E7B1A1A
+87F90B59AF8181E25604401FD72E4C4AE45088D37735F580D0C18520053411C1
+606B11DB3A0CECD72DCB8C3B2D65AA4C639EDC2A902D615F3F6DD833F3E2BCB0
+B9E89A38C7516AA8E034A9EB7CE79660D935A534B8157BEDEDC8716AD5CAF3FD
+EBE0DDA6661C00F72A059523A13D2C7DE9A0B667EE5EFD9C772F6BB63920AFCE
+AF5593CD1C399BC62472E52863DCD931A1E9A59CA387005C8B65C999BA0A1919
+FBC984708FAF4C66FAED2015901747415CBD3FD7D5649501AB54EEDD4C31D96D
+9FDDE420892AC987C63C8C5645240F6D4111DE74C5A5D563647DBECAC26342A9
+F14C9B6EB69001DD51A73BF42E73156BAD40FFEABD12542EBEFA99A4D797C2EA
+93FE08D4F9281884D0D84D0E25C169622CAA48B427B7EE5443C475BFF66A6F8C
+0F177E4F5250B034C257F69376CA68C7F0894B663AF6E12659C4F2DCDAFB3197
+A94E811F3FB6723D830C4A630687598CBD9F8F6D45CE051B65C17CD766104641
+84ABB23221E3F747B563078BE63B44803789366FFDE280D7E17C122A6B73A25A
+5CFC5F118D9662B0572821D542FA4EBC1BEBAD129C357B68C9D07B4527F88F5D
+37EB254C61FDD7570868CF5C4E1829767FAEF36A19D2B24040879D5F48CF28B5
+747299DF6DA067CF2EAEFE2C070A91B7927BA03E0515B28C4E60A8D8E0B9F307
+06BF57A218BE8615DC410A6D2B81666D01E7B922CBDD9A312D4AB939DCAC9AA0
+307F1F80CCAC649563523FD2159992E0A55BA4415D3302BE5BB6CE682F16EBB7
+D698721E26AC9E18EA09C39E2811379517FE166EE5C0585CBC7453FED5F56943
+2C8278A9C5E1B1E1912915180560259243C2A05FFEE736DB3AC19CB59786AB26
+70EFD38BBBE2D1B06032F49F58DC540AA21D6F905CB92F415502FD3AD32C69A7
+4F10BEA075D33A3F1620CEDA52E8AFC4DCBB67FD36BBCC85C32F2982F6190345
+46ACDEBF1415E8C326731AD561401C139F3555B6A321B4C13EB1298EE4D8AC37
+B206B71E2DEF7F9E01AC07AE5930398B62BBCAD3E149ED9C99DA08E9E19AA9BD
+6444261C835BB75D9909D14E5BCEA44DF15CAACDA077048FBB9BDF3D9149D96A
+06889664555F7448A775D0BEFBEFFF898A37348FD65126E4E5D775372585C5BC
+B2041BEBF3213EE136CB6921223E1311A8D11A37CA13ECB565F1A15341C6DE58
+310D3CE3F9F1F7397932026D02047F21036962C1843195D600A6CEFFF368FE04
+DC9683DA7ED7074C0C19787D6D5F1A4F6D2113386F5EBB9B906C8706491A34FE
+2AAD962470F8D476D1210C4190A530CB55E5FF09DA8FBD42BD42D093664DDC91
+21DFA2BD6F0F3ECE73A0AB598684F5CF2F27EC3A6679574A0539E4A27602F2C5
+F43DA88C24ABB70F5DBF32C8AB1A947274D0EF4197D4BA1538BC8301367A3251
+5D9049007D261A379B734EC53A4A0F5B0DD3E9FA26EFA0F636328CAF4BE7BB9F
+BDB3607BAFD8296CE9854E6E5A5877886F9C8675BF98FC089F9253B57A4532CA
+2145DA20C8EF375CC4D4AA6416359686A351C1AAABA45402651125D404C7865B
+F6B24496857D3857D5CB7C251EF57E7C8C12EB143ED65E3218BB29A20169A586
+37C818E95FE00966A7CEAABC07F309B143A36F6FEE1274B7E56DF32223535F59
+82DD8A2B920EEA569643D96398E44F8FA7FCCC2D409EE68E5B6B0849D8B1AEB3
+35B327445CF29BB8885273D918594A9EE3CE4CE6657AE5B9D1CA7401DB7CB385
+7F1213DB0438988F64506CECE90759259FBD47AC8E6B1D93915FB93B396B5C3C
+95057EFD1400C4820D986C21B8BD194AA43F1AF8B87160AF53D1A76DA558637C
+7B3D8FCBC43CC594207EE11685A358FD540AFD48F5E783817CDAEBC1CE60DF30
+63AE2F40873B1232C9BCA393284A518717CC67D3630852EB427CDFEB6CDA696B
+5A6538B641E8FB037256BDBA6A27FF90E374EA209D3CBFA18FC48883F94F5DC7
+317EA7C10CF07F1ACB2B00700849D4C06E6B57CC69502C6DFBBBBB2ECB5CE066
+25884C5D72743413B8E4B6CC69500D57D6A59E7E048CA1A0C1851823B97F1C08
+4C1B1850E0DB83F16A2B63A9FDBF2FC31AE312294B4F873A3AD0CE2626106287
+3621223C06DCC055266CA762F4D3D5401AFC5861E153874A7777221DF8AD6E6A
+44BABF6FE476E621DF72281FDA61401F5680796207A2F57700928D9981D80F80
+A3DEC302F97CD077698CBB38B787E5E085766471B85E76CA35D1E641D704127B
+91DD549B7303452404A1AD4C2704098B65E75B7E01DA1393546BEA61785A71EA
+4D2603F85CF445B97C2DDC1946E3855D72EB18989765E8FCE97D0820CB0E1903
+1C97C71A882E0B3144DC5CD56963F0BEA715DBCD1CC10263B09F74C326027993
+6246B452368767F8B60BA6464BC5329E95D12D5C9A5018767A0D1068B1AFAFB3
+FBE4CE35186A8AC744B3A4FEA263B79AC847B4658211A8EEE347A6E08C8C0605
+7B3080B666E86D54668534357D118C228C684466DBBBD08CADE9054A4B51E594
+EE0001F4F37626EEE857F9FEB787E63322FCB32856490AE31EF362B1F3DD16AB
+738D3F5392FA277C851AC38D590BB43196CA56A9582B9DBBF2C8EC92AD6F2C62
+0ADED7B3D304ACB9BED49C7DF18BA03270CDC9F48BEAC2BDA25EC7AC6E4700EB
+A0613198FDBD21363588796FBBDA5EF174908C16C003D5186937605D7BC11CE0
+01C095FD5377F8454A677D15B2E5A4B2E1ABB68BC59E180FAB8E5760BE9F23DF
+DF3298B4657B336A761810685B2513E3096A2A33E4876721410DDCB32A696709
+16F2B4794BE01DF4AA8C6B2F915725CA33C5DB1360F03F4CD0031E0A09AF40FA
+0F63D80C05589AA69FC0623653E11929F27D783D86405896CDE257C7212E53D3
+83DE8BB2C8A7240760A9C6A2AB4AF168542E263F715063297FDC91876C502206
+5B2DBDA54B9EB1162B94A155E889F5AB55A90F3C99CD9AAC6EB2A37EDD759E24
+CCEDA38BD1B03CD130F45A5B79AC717BE59C108DB064BF889DD22793C6EDCFB4
+E3058DE303382E94FC71220C34D5321A6634BBE9ED098ADE8CE75BA11939D504
+34D2C65344E59585FFDCF5CD0F48485AB60F13ED682913C21BB23CF2F3F7C269
+609B1E9E81F18498D63D22C830FBEA0A36E6545809FAAE0B0ABEBA75EBDAAD59
+E3BDABEE4F57F68DB6554E85417D58572AC9ACD5019879781F1705EDA17E4DD3
+3267BAC9CC9B2D6C67401F775247F30916E9F23A454DF635FDE83570BCAAE011
+6D8F146201A6A8CB4833E59256BC7F417A4243F2A948CB08C12BD176794614F0
+6688689A7A832081F62675748D056068B25B0295074F0202D5B98BCF4CF59A5C
+4C1A4A0868483EC836C9E6B240D56AA32AE14708E1FED1FE89191B1075F1404B
+10B35007A9AA6DFEA107681D9FD79511D3CC8878C51CCCCF6B8B835A95C237EF
+6961CC95F898E8AEE5A53541B675E4F1F63508947CDC7B8BB6E86F0C3BE41AB5
+001CBE940ACA016696465B4B25B33A6EE3CCA6BF55EB5D73162474A22C93EA5A
+9071FF261146D129E414F7DE599E39D0D1CD09675210A467245450252D994E4B
+45A039B2D271869B37F3A37293B66016BD169EAD5306B7B4A620B416B92F670A
+6C35FA0BBA0ACEF2FF08F3AF402C4028321A9BA4D65FDBFD90FA840660A3E8F7
+C65AC1ABBB4BD516424CF27F4C520FE7470DB2C42E6EF4A6162F5A7E070C8492
+98ABC2836AAB67261A4570A2313D3A781063BD716F591C2BEFB2661AF02ECA11
+A6BF5BB6A7A27CA31BD51555351E00538A0561113184C961EE853755B3852D0E
+324325FEA940066D7DD6428D3251ACA2D261B586F01435186762D798906928C1
+CC79BA9817BF112CFA4DC41A4D49C71930BE2B4E89963BA11FD30ABABECC5E0C
+C890FF05FCDA1293B8AE68BF063C57AB28C2D2CEDA05CB69896C8097D3FDB11D
+0903F53088C37C9C639F3ABA419BCB95DAEC4A07FB0DC63C91B25339F5E4E769
+4856784884447A1987F1760D0EA2406941492F7988696831225231621006A044
+480E15B85A05AE3703B4B40108999C886A2542D198F939F6FDD917373078C36B
+3223267843AF2C78BA395ADA072233275F07B1932AE4494088B4BA6853E40745
+8EE4C672C19DAC6477E3659F13B5046628285B4EC3BCA21CAE23AF9EEA3F465C
+79131984A93733BD74FCD31660F9AEF149C4C09A9BBFE0D085DD89E40008B401
+C4D2AD0814E375B763C10B891ECAD64DAF1178DA5C8B9776580034287F0C1B5D
+20AB1998A6BAD7E011A096C83FB4D42F141B170D2AC743D61166F64CBDC1C2F8
+9ED96D6FF13F2446CEFCF0BC039011A7D753F99CC630113574EEC430F808D051
+4E14BA78A4E990D067ABB230E7A2DC9B5E6A8E3C026427B28B2E41B2C45CE3F6
+F74C1629717A963ACC6F1B351C111069FDFC235DD68D89506CC58153BE07FC58
+B0CC5873C4664638EE6F7BD602BFF40D8913AD0E1DFCC1C546C934CEA68BDCC3
+E5B2DFC124D15A2426BB0AC353B5751437252C57F6F4589B524A4B7294DA7EAF
+A0F7A8F86D2ACBA8920256B41A6CF452D5897D5A51523C764B9C7FCD5BFA867E
+AB29351A0C90519D66C87732137D8C24F92F4D9DBF73355135F938816BEF7A0F
+4E51ED9D218F57E8CA8BE558B32BA95C92D8B893F71BD8456B9C12DC6BE3FDFC
+5C0EAC228AA26ABB8FF113D4F6C9FA275E27B215D50F45BB654691F0D54E1224
+3EA4A2F8284DF34D25C8AB80A5D6BCA4E9AAAF89BD448218E21EF78D9A6CA7AD
+CE3319F6B83559D3B2F583E6B7EDDF9A9CE9BA0AA2C5545BF95DBE48DEECD7C7
+214AADFE69D01E7FE2C966CBC666E035AC6FC7CD06AEE0C3B42F4C04180F1660
+5C99737AF417F0BB29DC6BDC3C0721E014BA6FA4D0E148E97FFD2036CF5B6FF9
+80531F2989B011754D6658F0CA9BB6BB211A0324CDB8F0482811A6A33F3EF24A
+57932E1AA044EBD17FDBF71ED536E0BEB75B79AB368E2E15B6C386119FA35430
+79479C6F56FB01416DE45551F0F0FB839C7F759BA5D37859B0E13AED52BD795E
+A65AFD7D4B3B701FDD41983CD88853D5023CBF55DA7D0DAD666932E2865DB738
+0F806BFAAED8F8CED4B05468098B68F490DB2189AD16C3442F815D178ED47B05
+5CBA69399059D4CE5341839765D8588B9C2B48311D1F394FE32A59BF0BE35ABB
+FF260C39F20F03B4CE857FD6CE60EEDECCD9757497225C62E9023B12EEB9E68C
+712343C5EFBFEF067CFB5B4F726CAC5BB9BA0761ED23136762C237968C494B8B
+7BA81E35C4AFFCE02BBC60C4BF5B449EF41EB6AECA7CDDCF293B2AC26BD0FFE0
+738A15BAC65E0F5E39475C3FF2C53147EA34536C71C83C06125D6504F93D431F
+04301A7CB1485BE790799AB91DB6FCBD3AFBBFFB758DE4AADF0FD2E331656971
+6CCDC0A8798104CED060FA54AB55674E0516834E6DDD3133C149498B76A11F2E
+030645228B40DEE82AD96B7C272D8DD9EC1506D9D40BE5B6ACEE9F6A8662DC1E
+40C3EA7EB18B6CBD575F29228D654A7C68D7C93A36B55232D4305767D76E381A
+64B7C7A2E58D1155F09A499DB0DD9E3689F629301B8D9449779137B90C44E85F
+7DAAA227AA85218E237C831675BAB09D172C8B7BBE8F695E94A33C622EA238DF
+52CB151D763C16AEDBAEA6EAD4EF0960363534510EC8809EB5DDED232C75693C
+36248CB8580F0C2A73EF8E4443B967B0AA448588CA17E298D05AC264AD336FF8
+8CD69FA8BDE638337D0012B1B983A5436BBCCB48E26C834A6D7FF1A0B5146FC3
+C1F3E020DBA81E92B8DF01D1A05470180BF313A170A7C97908D455958F4D1504
+2B61E68326B0D36205E6AF89526E41DBC70B28B1F74950E0D193DEBA757BB9DD
+AA5D94E8A85326537C6A9C010749D2F15974814B5DCF9A18E2C3EA5B40E44E2C
+B6E30E02B71295BE624D467AC7524312087891606C0A606895CB5F359EA2A6B4
+E151DC99BEF37EE226F5EB0768386A6EA17F238145DF27435E34342A58BE5632
+F94B3A3EB70CC94FF4FFAF182E603096B5BC19C122EAD0DBD9F0A5EB32D3213B
+EC05DF1A8326CBE598D3328512C5CB1720708C49DF3415543AB266E1165D0992
+0B3E2C500359E35358B33600D12E5523A8BB5A40F3FD553DB55941FBB6473EAE
+A52F9660DF3C40EB30CDED250D1CBD8A35C235FBF23019C4D0FEF48D8E6D01C4
+07A83E6F472DC17FFB2427F2BFA767EF558CCBF35C0BE75F708C52208AB5C2FF
+DCBDAFFE129A8904EAEC4604BF84FC47F6757DA1F6F3ABE84CD56F01DF62D941
+B28821B5205328CAE9316095B7408CFBDA13702AB7F628FEDBFAF73F60EB2973
+E8F8279D13462A950491D6231375E697B7E5142CEA42AC00687151BE6F56EDCE
+79287217162E7493559654F9E3C197B279CC1F60C62263887B446DCA564402B4
+5C4AD168F606FA080770E87110192F8F5C2EBB615AAA677EDA19E6BFACFBC2BC
+D927E355BFCC0664719E8EC67AE547F963EB8A4863BA4528DA24F9B17A559C1B
+293EC83C206F24E945249FFDD18A9A65EED3542A8D2B4406A35DBC9F814C2259
+92F17EBF881E7C4F049FCF1AD0850795A8250298971823C7FE142AD40976C543
+FEE42B96C1ACC4C045BB22EDE1365CBA2D979597C0DA3637A97E39B2F7106019
+B2F9226223A69A96BE756E8BD8AB1C26AE72E9C1D23E04E9BEBBA9FC30CA0CD6
+1D0D4CCC0269C641F0C8D38D628D4A4531175CC9BCC616D135C6A4E5C356048E
+3DEE5CEC911A6BCBF0D2DFA2C3FB0900E3BBB2B790CE8BCDEE409C8A115544AE
+F120D05AC57658681B93308BB2BACB925A7E6CFCA922712BDB8EB76F379C0483
+6ACCDFC37D87A52DC243A3A287FA813B951CB549CA5D34D4837F89EC41E21511
+5D64F2F930B62C97CBB857D18337381F42ADFDF3BDE24B99283CC0108892FC8B
+617B2FA025BE8CB295EEA42EC0B2FFA7BC6F76A05C1CF1C706036E717E5FCED7
+7F131B9A4B84F6B18E2413414E0B4FE3C6E9484B7735AE60DA49DA8111D1A417
+6626650B8EA736B6BBF7800E5033B47E40B91D2267CEA571D7789E6CA7D2A1C6
+42C5C26FCA8D9C706C2C0EDF1E97D530C94A649B203AB4F30C95031527528238
+FC3C02C78A0B846E00F5B08383B5A843C1CAC0F0FAC0E18BE69485AE5AE6DD4A
+196D1EDE7398575CD50585271DFAA0121AB15F44AA958BCDCA8C8ECD6F023CE9
+CFDA381F208AE6680DA0E18B4C9D5778D5C9ECF1E826E67A99970A0E6EED22E3
+04B91EA0B0598827562F6D88AFB0DBDE2C1FBF18D519AF76DEF4F34D8E0F028E
+82E2F54D903CCFF3495BE6734184124085252E0CBED25959FEEA99550E869D00
+447BAEF352C9B8F8C59806C60DCD94363BBADADD8CAF49C06230241A41E33F57
+756411B3AF87BF762D071D3CBC29E443A4DDBD8F72FF4C3C81BF81185F43B60E
+F24404BBA9B5136022066CE89EC7C555A560E99BD877196674D3D17E30474B3A
+D15129CCB1254A9240CDC8A4B0E8E611385A71E4917D0A51575CA94CBB8384EC
+3C92016E10989253CD81CC727DFA795C8D29C4F2F262C47E1DE764DE0248A0CB
+881670F7A021B3BC8EFAE6D5CA385B3EF3CE41AB481A9AC3A10490924D196993
+C728A61858EC555B19161F39210BDA1EA235CF3C027886C59B4152825C62475C
+47A4034D2FA576C118BBAE92C83B90AA4AC29676FB0D2FE897553214BA148A39
+6A6222D6759C9E3ECE5121AAC0CD0A1A510358ED1D8F126673880D5F7E434B77
+8707EFC7BF4669EA116C5F13E3048F0D88C6CAADF3DCB3B46D038B42D21EBB26
+F08D5257BA29FA4732ADE2DD8F082C350FDE3A733E611C67234AC917B9E22D75
+4AA30811BBA3D43BF8D8A3E7A983774C321DC72A3921B57A5DD537DC4F243BE4
+265805BEFF0F4FA7721F013E867FE3211D73A4BF75D675019987A6D2B91824A8
+F01CFF2A376A1C22197A2BE6E06E2A59FF024F4D6731E524DBB1101DE55F95EC
+805E5A1B6FE53DA6AF5F1851B4E03D7F7CE2EEB757D745996114512130AA3687
+22439CCF4EF86B3B6E88209022A312FDAF4889D0CD6E69FC79E97F22B535E74E
+76CAF782B6E890DDF35C30425CDE0CCFBC3703547F522730B8552E16390B4FB8
+A2D3CBA8E0E931065A32C9357A9213B5297F61C183C0E6C846CA129F8FA04BEC
+2E19878F7C7BAEBFE09F756CD0F53E1FA3EFFDF5864FAD97B730E25F0C124BEB
+788762883BD18D074FB60D049E6C2FA73ADCEBFD0C183EC510006C32E7EC30E8
+204C4FCFC9983D23F6EC3ED004E627D4EDA6EE2B51E0B46B9E5FE726BD9C6CE6
+6B899E1A6F5EF972CEB46AD8C8C5CE927564314D045F695565638754FA6542A3
+9DFDE80154C1C82C1018AE32EC782F1B9C54AE93A6311C4B7E431FA70EA77D69
+27162AFCC6D235EB66FB67AD999651DDA061128A5F86AF532ADBDB6BC42D2C49
+AB7C13D566321EC17BAB94DB2F6DAD54FB608EC8DC2B7E5F9C3BE8B51129C728
+CB0249157705C23F8BC1E3220A82E18145D8DDF7222CFCA73D550A9B4A0ECF9F
+100DEC1189F23F9D07793909574EB6831D487FC8EAD30172D4DE620230D9898F
+257D1DCF3C20132EF4CF7F5635A38E54E492139CDC9922F3106147DA93F98958
+2A48219D6A64BAFA687EE9E2A9CB73C88F2184C9FA0AAFCADD96F5F689055C6A
+30BEE383BCBDD2C2BFC7FFE6DD0BE1CFBBE974DC99A2CCD01A2BDA17BAAB6926
+76349E2A8F842D3412CD8147144E7861A2BCE8BDCE10EF3A87FA20403DA06DF0
+3AEA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5000820 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC5703D288CAFFEFC421ABEC649FD87E34B
+8152B84146CDFB2F6EF70587463C7B64D6091443A6A1373E1C637EC3DC2E7AE0
+93FD49C1C313DA4A744277953F738D8162B9FEB352FFD8DD432C6C209E93EEB2
+0685962F3E92C1A1C2C75A2794B09E93508FA6D5462B67515E81F96A6D1B2B7D
+A113F4AD2528A238181AE2D3E5DBDA3F6B1AE3F664EC03D0E54B865405319AC1
+FF9A0B9E55E707842047227D5BF209C6A6AEAF57947D5902391D2A9169DC6D54
+AD4308ACAD9E33975FC278100B83A1C469A260060D66407AB6AEAA97E959EB03
+5122CB1B78730038F67F2A5E90399A0DA73522B4DEC7C548A59588EAD44F515F
+CC82F37DEF97FE431837BFD0A4619D4A36E314296B7F79EFB059D4BC49DB44A0
+77A4DFD6AE3C533E6AB8835E8558BFA249409C0A51D1D762D581D64184A1EFA8
+486791C47A36B92C118153CA0948D270567249AEFC1BE5E990B8F923458EC991
+F1914BCD999CD0103C19A69E05B9F0E2800AA17E1DAC55DC5B9C5EE44CF950AF
+5CE3D8A9FC1D08ED4C6E18D3E82FF0951AA7C33B44B6E48251772EE583EFCF33
+BA9065B104D398FC97FB18CF53DCF9DBF4B5344CD71D4563F8EBAA4E05CCB08F
+73BFE3B800A577DEEBCC7E38039AFBC6D58DB2ED62762413C39844AEB41369DD
+39E1A9CEBC9484007AB872C1D03F78DEAA430C6F4E9ED01FC880BDC8588C1C29
+B9659B9944528B300A0D2F3420F49365E471E4F48936F148E4D96C90890366CD
+E3F560D6F594559DBDE6BECE24BAFED8A406C9C658BCD48B038F30A805AE6BFC
+0C6A15B5D64F8A94A80FE40AA6E2FF2D401323C0EFA7FFB00B5BDDCE921252B7
+C1C11A5332164557658C8B440DF5F587AE41A1797EBCD9555161EFB5C6148ADD
+0E40CF56528674AF8E4BFA5879261254A4B5804835392117527D0BD3B1F18079
+32E51D3EAFF7CEF44C1E2C8E9B07F277579A79AF7CF7CD0F6482484A42A59876
+8AF0C4946643B90A63E8C15FF20D787E2482661867A95944A8ECC37A782303E0
+AE1E5090CE734BF62F54425743FF1C9424B774E537A93E8AA59895B31D08B73A
+9CC7D10068130D0650DC0B17EB9E6805D5D7D481F1AB3F890AD4F52ADE83A93A
+C1D1669F15D2A04E0FF6DF6DBF7181B264A5BA45ABE94898BEC3064DDE45EB94
+BE352E4EFB8D9FA90214196B04EB7267AB84FC47FFE2F6507D3FD314C44E9BDA
+1DD45DD411B09E2D9D778C68622EDFA89494F35D9B4ECAFBA74CA56AE47C2D9A
+8F4EB5A6AB6FC95994A5CB28370A2691403C2D3F5D7E7C678766E108B69FA825
+A4D6CCC4CF3BBACBD5F098CCB11EAD06CE4FDB4D239D72D5D5C075F51C66431A
+0EDA5B4AC740C996156B6255CF34203666F4766EB221AA4D902B1FAEB9627CB6
+6B7C11A33B5024D33058A8C49E249D484F01F9882F7A2B6346DA8C503C725CC6
+6F471436CDD0C0D7D69DC15C33E1EF327552370A5F59F0A29E801D789D77971D
+DA5911295A73FE746F2D32950F09C807FF6547A0C94236A69D889BD932A17D22
+BDDD0C02820B238D22772A5DB4702C72293B07D362E88B63507E0D6B3AA54A81
+EB8FDFF1B2EFEA2FA1EB0F35C3AD299ADA9FA13642571F69FC868EC7CC056344
+0EB8A4F17E0621E04771878585CBFBC2795129CC7B0B10152EF9C4349EFA134A
+EF1A24E8EBC8F7193B9D6CD2C49E32B8CCD107F37F5EAC13AC819A897B86CB00
+E892533B92EDEBD6DEFA41AD1721EF68770154B515A2C5B65FEE91C3C2B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueID 5000768 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
+61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
+92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
+EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
+43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
+FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
+DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
+3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
+7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
+CDCA11A1FF27AFA7FF189A7E8A7C099AEEE0CAF3E121798B2721ABE8808D20A4
+AB6E704C0C376BD242C4966325D4C939669E28B55BC335405C400A9983B89EBB
+B13D8C5F3A148E38E9ABD86D0171C927F1051266CBBD5C5D12522AF7CC17918F
+410BABDD5FDD279338E8B17434DBF20B8E06B58D9E13B731E3C07E4CC350C431
+CE2034CB23828A19AE93124011BF053A3C5705D9BEF6D95205FB8360391C84B3
+7C6D719C0FB459A312AAC3C4256EAB293B6DC729CC5070524D1BDA41091E8B42
+2B6C4A092995AFB40CCF35730350CBA197F3D5BC5BB83CEDDBC6FBDE23A885CE
+61D416B3A6CEC46474A0F42D5B923A61832262F234001DBCED9A7A00F5511F3D
+C2178422A46CA5494AA8C4389E525553A8791632EAE32B6E8D2193932FAB7E55
+09857AE3A30369989F927AC31385BFC243086EAC7C56B5B1798196CB1811C215
+A2E2A34BEB5AC2E4602F15668A98FB080EE199F5077DA1AFBBA84FA8482C8FF3
+D8D78F94BF6DD85ECA89C32EC8E7C53B29F81983BEB2D27DEB31F26193ACBA2F
+1B6EE4E11645E6AAA818ED1F5850A24E674740B030B8B165E060B5F24CD02D90
+213BFF2DD80221E13EEA2B1341312F40A002062899D5142347BAF6BBAAE13BD7
+D67620B5D4DD4DF018DA681DBB195BD71912BE341023BF925569004C0C422472
+85737CD8DEFA1E8EDDFB554324238F71836827211B879B0652D79EDC835375ED
+38756CF825DB774EFD3AE4D7F6B695E7A7A4ED77EE16B2A8DD93D555CDC7979E
+D83F54480891D4C56AC6291450B594A4E3351A39F820F1E358CF0EF99B5C327A
+E1B7BBA69A339F9980F23BFB6492B77B0CE670B749C687AF586979A94269E0D4
+F050660F516492D7B9665A846823BD58FEC9A47AFE38070F2FAA052FAD32E7EE
+266DCD2EF2699CCD728899E17FA0F903F0F5FD315EE4C1EA704A154645DFC342
+513361C9C3293EE056A6E26D52CC6926F2E881FD138844339910D8FE9A48E944
+A2B4D03F0162CC8BDB0FF69B02479DD383FEE2AA382C2172B3F3982E018078BF
+C370AEBA1F754A346B602A97D3DEDA745FCD2AE5B99CCCFA085C6D7DBD05302B
+FE807CC62B5B5B89C7E03BEA2C35B6336642F3186E9442A06D67526024362DC9
+2E6715E0324ADB7A3F14F1E4081320BD30911378083AB6C18127C0B7C285C5E4
+ED13B3A0927E3F0C41E18B2F9813BDB10AE00E9D2076FB7907A688CE88793161
+81F342A113CE6E63A9E7DAA4691A4F17981988508E138B9416C054F23629108A
+9D0DB41FB214F4561418B05D7380CC40B056AE6463033161ABAA3F8598647DEE
+060C7AA83DA25E5F874B8A42AB5CBB40E43411E0B7CCC9D268E889578604F8C5
+012A5A1F070C3AC62E1ADAF0480EF5B65E934C2F512CF1C8A2283B3FBEAF96AD
+4777717B438E55AFBD484E252001C461F96C481FF8C06C59031E5CFCCF068290
+AD0E9971FBEACB4A17B9A9FF890D6FD92A9577ADE65C8621F60F14553F997C32
+33613056F5E5DD74D14B6982391E567A57DFDD56C085E1371C2E3CD096810A9C
+8AFDFF93B190414C979FE67440E78ECA71275F70EC758426A791308AF8D7BA61
+AE674AEC833037B24A30B26B0870D00CAFB69E40371EF538671F88D700459AAD
+3C1B75E67F68B872FFE55D09930EEB33DDD9505817CF2B95B7E20D3D9AF1E424
+8E689E11B2B6FEE8FBD93EB341374F09637CFE94D3B5D31D6B56E988F89398A2
+04A21BA099CB43E29D0537E27C9C38D0AED069318D2E0D7B3664F842D77FC0BC
+D6E04B0B7B2CC664BDA34A3982E5BC039B7C78F16DBA92640B8EA60A59B23519
+F7082A4FC999FD4E1E3BA20594CE6A47451C0DA51C5800D505751ABA7FA46B72
+1D73D7F4A60384CC443CB4E3EC1F014C8E8EE592F044892F5B2806A4237B1CFF
+226A71294C059B97C468CA64B3843AA61FBD4FA6D91FBE8E6127855155C9D799
+D54721B4C395C821B5492403C1DDD7AF0539291BB5B04CE9B1B63BF0B81A64D7
+AB6032B17C5E22D635E0A4E9E148AE4051AA50904755BC041319124C172C0CF4
+6D8248815026702C6EC39B7F6CEAD6F2519FE4ADF69CAC69A5D8BAD88CC4BDBA
+0C2A6F1B8D4D73A62C8D37C82059B92EA10849038D0B15C6E3DF8297E220119D
+C0287E001D461B5FE6865F7297AEE2263D6CF11C0C015C376D57D61C3EB5A957
+4699F370BAD97727FCF4048589C9C8E38884F7CB2D8A675DEE2D93A957DB564C
+788FCE0435B3E4779B8FC24B077A2DFDFD5C4A158B5245B8CD64106485ACBC5D
+27A77FB542A0B9223F4BEDE8F02E510B71E13F11E6DAD92929C77E9FF2F0D913
+9F91DCBD767D8F7167EF5C3FE4E860CC998DB47B38C16835BFB286B76358A2C7
+E730531ACD497DAAE46948CDC9588EFBD6AB75D87875DB052980849F8745EF6B
+8530E105D8650AD6EE30041DD37CDEAAB499C37FFDF8D1C83BA4291A4E99ACA5
+593DDFF09A32784C95B14657707107A61C8402747AD9F1BA9BB7FF6C9C675A43
+8E597BB4D93CE240434CD31EA3BF53CDE1BD98A4BC3436737030DAB72E726C86
+C0AA22DE06C1978FD6C9A2E57A4A00C09E187DC92DD6D1883AB4C4618D921B6A
+79646CEFB47A1118DE6BA34A433D0D3500F283758D02E2196EDB1C557ECF6081
+A7A124CCFC003F3D65B30B23691BE055F1AC0B3AE0A96F13218EF19702FCA4D2
+147810EC8DC40C496A8EA4377B721934B3035DF00BE4825C8C3E3810DB2D3271
+C046926F574800F3EFEC372217515FC33EA7BF8425BD023C5FD16F6C4626C45C
+7DDA6C95EEE0DD71D42D799B00D50577F1DA2C10C4A50B7A84113948331B44BB
+FF75D467598EA3F38954E811D5342953B3363EE1D71D783BEACE9112BA8AD886
+4D46757F63EBA35C7762BACAE842020CED514B2E033E82401A8EB721024D4CDF
+3DBA1E242F4A3CB56DE77BABA36C8581CF18FCE1A4F3C7CE6AF4153EF47B88FB
+176CD8B27F3E6E2BB91676F294EA40077A32150E94B3319E25B6E6B5A9C9EC14
+0E9D6D1BD4CD4063F01A72D0A2199483BBD5DDB598177DAD0BD89BC5BE7AC02B
+A220D722B46CBC76B7544B025192D0FC5DE4119B2F8A5E25325BBAE071F2D638
+EB7B7E63BA49A266B2B6E95D71A9AA876524EED792C621629ED599D664B51952
+F116D4421ED4E629D608FCFC34B70718DFD033F30E7AF3B6AA4E909E494941D4
+A8788C7DC1FD896B0A5F3EDE80FCFEC5F37BC22309315849869093B4990E222A
+4B5DD2082ED2006B9D2763A485A31FA76362DBE5569568D560C66CE94CD4B747
+76FB209B195FE8268F9DC5CBC4FA5A6C4F041AC8929FDDB70007170BAB43B0EB
+FDB1053F3328005AE3B2CAE786B8247E87E8A20595909CD81BA7FDCBC185DD17
+F0B7491477C47AFDBFCFF568EA7B7B7C5E9409AACD3DCE2AA58B6AFD6F8578AE
+80380D04DE0217BC5A05C20A0F361397C47EAD784B7173217108F0B5021711ED
+3367D3B207C16E52E3DC857759C6DCCF36EACD3AEEEE16D10014B1A42F10DAB7
+1D7ED6326322F9C01D9617E92F9A9BF7A4C5528ED82712A9301C9247FBC0EC81
+012967918D265D380B908A08951323D85DE90958E24B9C0F5FD7D31CD1B1486B
+597DD8A28713959BCB348AE1D5E65E88DA082A7AEB7A620B58BE007E8CB58E31
+2694ACFFAC0AEEB454D3333F7D33854BFEE29232FBD7F3A622DB05CF17E7D057
+9ADAB1BC4CBA06C6627EACC77FF4466C5096C589BC1B836248D24DF4A1F6AB8D
+3D64465060DA268BE30BFF6D426FDCA848A812E38B662D6EFDBC499987527C2A
+7CB8977CC1131799CC30EF0D8A07D4CD5619B239947D6A09495589D8FEABCEA7
+2210FEF9B545FF9CBB49C91742E2D13606D63A204894FE39827B62FD7210A12F
+03EA21AAFA0CC9A3C21EFB13210AA3A9B58890B430582DBADFDC0F94E9438A71
+6A69383B1494EA2CA71F7D86211D0C37DABD3C3152FC94D78FD99C39198EB95D
+ACB28BC75614093A2B722BECF9B7C95CE411123626E8C9753A5D87BB7A321D94
+0A6E2B1309F287E1422858186AB6AF0A14573AACA23F212E2DBBD789B6A4B6D3
+7098DE1F18495605C0EA0A9115CA41A67366931E2150D209AFEF26E3BAB34F94
+13538772C789DA2B954BE8C3FD6B18DF2CEA36556CF18A99682DF33C458E6D36
+2D6135036DA8CE346060120B1D80AA6C332B12E0324BF2656A89153DFEA3EE10
+B1650632733ECDC2A54F4BD8C7B81AEF9D7889A3D05364699E9676DB8DDD74C8
+4D5E028FC91EB70F6A558D3FD64032D3C1EE4945CBB9D8EBDB0C8F8A20037DFF
+CB8DFD9502122EA4ECB5CC1B003939CB673BF3D999066220AAE4AB37CAD30373
+6240149AF900B9E52575A8522325FF8778A68809150C397F66C885762B7F4567
+26CC9AB036FB5879B5187954ADCB1343E7A2F5594C4B00827A2312AB808C257C
+500B967B64A9034380A9DB8C96CB7DE9E1B8AB8B9DC555C7C45AFBE2D2C2A98E
+660D76DD64BF6C26E0F20BA5B1FD0E7ED5236F9415C371C1E5DDFD446FB8AA83
+C65FAF7770A156CB6E4BDE971017378868853161CDCCFE3EA5C848AE0559123B
+49816964E30213E5D36088235EC3A0909F24310CC989394B19418944C23BC2BB
+9FA5D84554E53F28257819550183A11439BEA46D2D158A6798F5454F14490F54
+9893F73A0F193F31CAE3B2A8A81C108AF89FE3B5846F4F628EC8BA1BAEB144D8
+F88581960E7D6E98FCDC4C01E2F4261EE3B00B6F5B95D03F3042509F19F365C5
+53AB035042CE78AF0E6A6A90F8FF6265626D172A450AEA1F62ECF086B86476C0
+EEBCC13B02442F8FEE42E8059324092CE521338E91C7BD383DEC1B62BCF99E7A
+4B826B887B0EA5D09FB315C7D8406179FECB59E0DA60E05CF7728094F60E80FC
+DB06015661464D7C0D636905E50F468A308E73AB78BCA5A49A27722D0EAF4296
+86E090E97D4CA866D8F7F95159CE2B5909400C537147C9AA348CAA17CF9E668F
+AE8ACF49C0144452C622BC614D7DFF3E1A44AA2C2D0016BDEF998BF694B807EB
+6E14643E676228F0D867049F59C1D7B5B59687A1C1A917175A76573F8044297B
+A09A377A2D99EDE6DD1426A56E79424D8604F67DE3F06B98F8DA5CEBD6310796
+2C4828A8388BA2AC1FB880E452CDF98D670820E7536A44C11E98256B60947624
+C6F89C654478E571EB7391B1AB33B741B4AEF7253AB496DFCCC4E9D49693588A
+E7B212F54C896C0703537341DB0D70E9A8661C96ADE3BD4794C22819BA34C5FC
+2BCC0212C596F79FC85E673F06D8180185C9BDB015A59D4D92C5CDBF5E6B16C1
+1BCAAD3B39B7D2E300995343AD5B98E70D18DC03F524183A3B519DBFB55E1D00
+F73FD96B72D8884DB49E7739B23B8BFDCFEC91CB6E343406473D7BF95993D5BA
+9A2961D629598AADA260D312196E81EFEFA3EAAB610C85385F7C5181793D3D9E
+DDA9D9082A979740FD1E5FA3907C3ACA3E4ECE7BF4ECFEDB2A73FA465971C6B1
+C53D9827AA732A9A8CD990DF326FBA7361C1E65F76E10918DFB23F8888C076A6
+8910712171B46A2C137D6FCE03EC2AF69298839FF7FF0E6B79ADCE52546244DA
+B80866A55FDC53073DBB9BBF4F9ED18AA61054548870CEBF5F02EBC0ACFE4ED0
+290BDC15D7BA556F60C3E6CE4A2286568F055CB4E8128E712CDFDA86FA6B3AB5
+FFD2E47C0B51054B1E08F8665705959F444FD13C8DA5830A3109AD37BAA2182B
+CB86CC9E1B08F672ED881A4526F1C19A7CACB98C530880AFC4481709D02E593F
+584D864A3D2C29E679D4F693493C968F444DB113EF2760DF154A4CA617B75D41
+0FE562209B2C4B13B946298B663B3B0D13B7D5EA0DD758254EC65E09BF3BB2DA
+FA4D20D490AEAB51821FCEC9841EBC0D5970C8F4F097EAC03FBB0632E5F371BF
+3D9715413167591722C11DCEACF12A2FE17637271386E973D4616DEFF2BA10FF
+E59B770CCE5E02DBB12920D44B5609C7BB25C8977B3A0836C748CD6AC234279F
+61DA1B0AE507877764938598AB8F607DCCA379CCFCEFE80972F76702E09B7268
+39CA1434FBD6A3C1697FC0C64770C98F9957F6E7F46CC9EF6864227214B08D8E
+0CB5E4CC7BB35472D563972D1D89C276F514D5EE9CCDB8CA5E8AAE12C3329914
+71EFECB3B61ACD2D8BDFC39C2230D184F671D2A3F730BCF891451E9391FD8F71
+0D3132D33BF275E3EB90C39A48D0E1F40BD3DDF5FD845AB93520BFB417519DE5
+59863EB4BE1E7D7A809E582F7229667048D06C853997A71202DDA2051A33539B
+ECDFB4FD26CFDA4EBE35276AE9CF4F99E36987097E7E784E55D9A26727B524DB
+C9D871C1A9864A600A2B16C199F95F32BE4AA2D3C610B2D531F48241B0A6B511
+E542B2FFC82FF85F2D0609C246CED8E035B957C71C9F5D9A75C1407C8C47B66F
+19151590E09BBCF32FF7CF252671B4F6962ABA507665DB5EF9A591C03394BB2B
+FE709B01DB994C5F6A7CC4624C63EEB61E17C0C56577FB8B571AFEEDDE75C342
+7C8F7122F66C7CD0CB2F8AA2970CFC1875F362CEFB6063ADA7074C5848F5AF89
+518ACA10185470A9FD9256230437B666C20CC718CA477367E9700B66392ABC2D
+38515390AECD647826D52189C8BAB26B75D80AA7055A3D92266AA6741A3BAE1F
+8B168325DCD13C53C424A1B63634E82C6B1E36D861B5CE6BEF7840185F0678EC
+B4993417F68AB0E83C23FE93C933AF26730BD788826B01D1CFC0ED91BBCA8D13
+4A4053730757F2E1499E82FF4F50D979A5FB98EA4371E126CABBC2E54FBE0DA0
+0163797698D5935F0DD9506B014BD3D72A97BC20D35F8B1922E62A03E148EC62
+35C8668C7EF3FEB1BB7BD91E8812004F9B9FDB133B2A1EDB8EFAA48C547C8388
+B8610F92A0F495160AC4E3AE97EF27846B077ECB8C161656F32FB365B532DB7C
+E610079A7C8520EEAF7BD69FDA5B8CBE7A281DF6AAAE8ED85726050A36BF5B72
+B0A22C60FD78D73DB124534B3039D2682F019316BD96C880AE16891504423792
+5E71DE4184264382E51D459DE02BFE53139F5E0F93A4132804FB5F31864B74CD
+03663F46A0830EF22EE846ED3038C3E57DB68615FEAEBD82C8FDA7ED7857A53C
+B6FA68CFC863F6A0767D20FFC06ABAB0D8710D8793523470F6B5A405E28D8F05
+47F56FEB80F67A9010C60958C9D0B82187F754D0A172E92371C1B58B6E303FC6
+CA97F355E5ED29F1B715D5014A7571DCE15113938E40F4AD5C29B6F459ABCA1D
+42AD1E054C22B7B80A3D1953B3939C71426173A4F7B5E5F9DEDECB5E8F664649
+1ACD9DFCA11DF7A1ECF14C5CA71406C52D8E7767E0472C1F32FC15EB6F9F1474
+223B27442BF133E89F9CFBCCB644DDF752971D49DB312599438A6B276441AC94
+3234D0C65074A40EB755A0063D52F325F1675E965DF19D15A8295E8DB991B7A7
+FA23FC53F6CC39B79C99DE018B2B4310CF1A0A77C68715548A9F18713C67F174
+62FC4C456461CA992E1AD8DAD03B7B1A09F2CAC7DF2E71F0F5461442B7FBD132
+0C0E65B4D1DC308849EA091974B6052E1BC26FC0A39CB2664C68B027DDDBD35D
+70E8C3B96AF4010E527E11620D93726345CE3F06E6E829A8E1209ED88B93A7D3
+6F02406F15F8284B1AF1CB6958C0A9FB7B0E65B3F54007103C9FE12E6C0A4D83
+A234258C15CC5E0EB548590C857A5AAC25A0605FCBC1E1FC42F31627D34CBCA4
+93426D72296DE5C420CE6559D8A1E4BF699510103D8B26F1772C9CB6DD0F9295
+9CBD05E966A33FCBBA8173AED836A42CD551858826C0DF2DEE98C5E1B0909480
+6BE84CCD9B9EA1C3AA78C355510D21F2847B747F37B6530A7F93D71FD82550BF
+7B33FADC62C4877CC94C071AC8EFF533B69FE225523D35C4833DE421E41D15DB
+BC66E08B78D3DCE662BAE9346ECD89E96988AA8BCE57BD76310E3C283E9442B5
+E74C2D50282439E14D7C43896138DE610221D9D77F73575853E0445703757D16
+F4F264CF84E8C56DB96A0C9CF1AC901F7B332327AF79CF70D2004AD996B2A59F
+6268A4F9731E74308A9639079F505D61060DFCD22D5E05A60DB961339CE9B2C7
+36B8C21DE3D2706B12CEA9E25EA8F00355286DF4CC2913D10BBEC797203AFB0B
+E33C33FF6C77EE1D5E9BA3FD94E0D47AC95D56F53B23115345BB861C07FA9152
+D0866A0AC05DBCBACC846AA31FA0FB71AF781366D08E3534B0AA079C58448688
+CCC61B79DB20E61C8AB018811BF3868CB93B03B2F1550A566E9B9C3CF248B7A0
+96788999784D3173BA5D69A668E9DE97DE2226F455B9410CB83DAD71D7FB279A
+D395A37C1A5273C2E0A0872C1F7650FB28E62764389C0E8C34677E32C512D84A
+4FF359C735D2631463FE3E0CC4F4C483C46A2DEB50394ED5CCA4EEB8A47BA3D3
+00EB9F45AF3EF523DF353CDD6286DBC38495A303E9C282C9CA5444B88F16CDEB
+53F737F2237B0BF48BB849C2EE2C27824CAE0AD1AAACC7944F76C5330A5A4F70
+FAF6C5702CFF6EA6E0F7D5DB41D679BBE4908E4180A3F08F341C4AF53880FA08
+19A643E798692B984C34F82FBB2CE109FCA0AA4411C5640E5F49D482125C8784
+1513196E8391E1DAAA14037A5B135AAA1F9152DE270C2E5143733A4E74525789
+BC194EFAF9CFBB071FC2F490DE4E3844FC4F95DE3CEE4086196C115CF2D89C22
+A6D329B7D6E666D5838BBB92C31E52B54D7DCFDFC4028E5B19728729AEF651A7
+95420280C97B815AE3FA09D884264EEA5650C739D2A8EED2CEED54D8C2D8178B
+3314727814028B115CC89FBA78A4C6D9003BB5B8485124BF40240B970D2926D6
+F372287AC4B1022F3A28E29186ED63486F81F9FAE6F92A778016812AB2D38BDD
+B9FC8972BCBAD0D48C4392FE0260A02AFDBDBF239AF9F76024CCB75C5FBCEB81
+1EE5E6CA04C2E19351501572E7E04B86E157FC36E5EB8AE86324815633B7193A
+539DB0D440BB60EE1A167204866E46F8D2EAD361420C112FD1C47222303E21DD
+AD5A19836A3C01732D18A9F14B84333B1F59C6099B6C6DA6E692EDC27A16F665
+6BDAEA09C0A841B700BDEC37626CBD040922A8A2483EAB3AE8B93E0A37EEDD17
+04E00F4A45A78E816C3D586F81390F6579DFBE32B2C659292D507B35339C0256
+3877D1D6B55AA07B5CDB4F96943A0196F205F031E43A890F7557BEEC6AD4237F
+CD3D1D49AE3E069F59BFB4A1E66AF16929CCB112B22B86AE333A36641B467080
+A5146D0D8187DD91BADC0C0092ED72EF5C62AF87B7D2FD425487790F35E3D1AC
+CA636CF762381716D5A1FCCBBF4DFC5FE790D451B88F7F43FAAF2B772138B098
+1060BAA2387456DEB529C6E51BAD64A4352D54F05F300C4B9E38350FB68A3673
+E44BC6691E5130E8A960A281AD509A914066EE25DF195012E210118ACBF96B7E
+C319EFBFCEACE6DE0D453E74548C79EEE359A22F88FCD0D064C569BB7AB826EE
+FEA31EE497D97EAD13B0B8F43C7962D21BFC41FE60B1FF5B95D95CDB7AF449F6
+C86FCFA37A890FABDDE7811CAE9F64E4A7FF26AAFC675810F9DF8C0E56E660F9
+C0D8DC04D564D440E6EF708B0B81CA266CE585883739765DAF13AC727DC116D3
+EB29820F869D57A5AE77C649BBDFD6C1E0F3AE60A439339F21E028D0ACB749A7
+7EE89A08301D7526762DD31F9016FB18D49FFC6D6625B32342A51BFD29B34D7A
+93544D796720B19849A783408BAC74419E75D36F59B2BE65BADD067DF29E6E3C
+7F98FAA12B340BA2ADC8C26713E4685F9D79C22066F531A63D2700AE5DDD2B6A
+63E0A75E2BB841BE62CADBFD05A4158704F4C98EC05C5267A3E51A15FEC1E28D
+5AAE63FADD01F4C06A0A7E92D46C2B656F0F167BD7E3CEF0C61061721D6A4F08
+35D92ED294FC359B66EDB161854C78B52E868407CA76706CBA6E343AD8FD9CDC
+91D1476AD4C09ADEF004476F20FDB774199EC66FED6B8FF21483E18138339370
+51B44BBCFD2C81AE007B7F62700239D94942103AF6E89EF941B8EC9919EC5D9D
+36CAAF714D990CF4434139EFD73F4CF2CC88D9BFCE4B42F0378A2A739580AABC
+D3ACD285F81D5410E1F418A02409184E69C56E9C7B5D8E7FF8474E12C56654B4
+25B0B6F02052F2017A180CBD1BCFC37A9469575C29BB248AD97FF02D6FD72FEA
+640FB108D79466BE5FDF8361287FB8EEDB58FF42E67B19C86D3CF2673AB2FA7C
+6564C114A7D6D3798C47A519048255CF5D44954D8A8ACC8D1E75869EBDB7C826
+E4941CE834C9346C00F649222F8435BB4E82CF08528B35E2B767028E5A89AE5A
+99CBD7A7D28586F21A12CA4BA3F9F4438BC279FE5022F40857737A9D9E912026
+0D7018555CAA6527AF23890E92B22E49DF47C1BD2474EFAB20A9AFF79E9ABD75
+9A53D94A81CD251215EE9EF10A4C2CFCC2631362CB9864DC104668A17F66A909
+F163C090F1448F0B739273EB971754F5070949733B9747B433E2FCC157CB7BD6
+E694597450A894CCEA322707DB0FFFE16827743D7098014073B9BFDD18643840
+3D80CD926AE4843542549A392AD3F1D538AD9333DDB7A3A68D903C8024AFBF57
+15190F19AD59E58A3DC6C11BECBA1C526798090FDD36C4FA216412CB73F56012
+C4969ED577B15AC870ECD624DB347415B63636DBEA23B6B98A240E8D45ABF1D2
+C6D044F07491A87A8ABFEC6AF396A2448C0755E7C88C01882B44F82E36FB7F17
+FB5277F5B430BE8C9FA349E982E8F8195862CDA1199996F3166B767F10A685C9
+55179D70A03176E9CE23458AB6B9CD7C85E4B5C9C16174FB821465D5F909A0BD
+93AB68C27AF2EEB213FE50CC86CD9125B600CA58071B5C19A83FD733563E60A6
+5B3D519A2CE0B3C4D56C086DE21052CEFF9CE95272299B4EDEBD5D967215662F
+8B2A1BB1CE8D686A4B16E2EBDF54A490D0AAE226921113ABF33C4CCA9D9DE9D9
+BC30379DEE25BAD4E6C55F0C97C48B2EBDADD7EE3C08C18AA829BBA6F1A17BA3
+07755C99920A49DF55BC14E2C98686071FDDBAD9F9C8424599AD7D2AAFCD7B56
+F217A1CBE03CF3C20E52BB3E544293A60DDE05F51F680661684E27432F86929B
+B31960DD93F10862B39907CAA10FB9234EE0392E4964F41AF0AC671B10C7C0E1
+DA55260307E6F0E2F57AC34BC186F857B6142554B847547E6C1C077EF5360BC1
+8F1FF1E8A9A7C57068734224BF5790C1A80E20560E4194AE737EE455A900D7B5
+21D77E86909AAC8B0AB8A5AC64CD89CA8474769185F3A57AB253E5AF0A0D8B79
+3B3C7B78F63E26857CCC3DE7BBE3B2581196869FC9F79F787259B321F5DB9014
+E189C5EBDCA1B5C12859692383B90C6A7974B74AE3B08C25353EB340A82B8FE9
+64E7AC20431FEE6535F6AB3370E7C1D7D400A20E89354C1120F3D16F9AD8CE0A
+D42811339C1EC0002986E937EB592B872C3DEA7B094734D8C06108AD0EA7EB4F
+A5C9010F658E6140050A1ECFA6BF057DCEB9CFF4B92907160C224B96CB0BE3B4
+E75E874BC27FE00BAE0B9CDFF2255D079CC3FE07FCBE090F31C7839F4289710A
+8E8CB82E686B54447F91C72C02E514EDE0463D0DD757913E75FBB1927EC0F2B2
+F02339FFD4C0A7AB5AB082164155C5176B89C6E0731867F8F1A5B59E04B9952C
+A9863C24A756173D43118EBC14D10CA7790A1DD16FE7E96CD3493D4090822E41
+F9B2292EE2DE4CCD2F9393504659B4F8591F2FA712D882BF233FA968AA24463F
+48DA645E2C38DBCF1F389FB81E94667455E996DFF0859D258B8162BCB553CF5E
+5AF0A1A5BBE1D5A5712EF045A490D6CE5439EEBF5CBFE3321D37EC4C89600175
+D7404FE29C96FB83675A06F71FC7B6A59C6B02581541D2FD25E57B79E298A1BA
+AD811CB68A7A2F9634A832909C33CB512980E82EC666D2C74A31B5AB997271E7
+FE103C5AD546D0DC2098C3DFA4B42465BFCB949AE41F2982D9DE0751F8652B6A
+3140490FC40C7A92C0A27686511D41EAE6A8EBFEA7F0DE4E55802A4405A81653
+1C9ACD183039B1A783A8EF4513BBC3CEB745D03DBCA0A4ACA89DE690D779DA2F
+ECA1375B6EB211E14A4DB37E91909A9F0CE3078658BD8A57652BA6398A947788
+EF69628519A3D34DED5B1402DC0C955609930C68B29015CD1F7BA6C7738F911F
+180BE8EAA845E628B4B9D11B46F6B9D6380DB3ED024385BAE4C9F7A569116F00
+0D3A6C5A65E489E300A254DF23C3C50CB8157EB1A9A9CDD27AC3CAE78A22EC1F
+88EAF61306D1F0F1CDFA28DF416FDC69BD527883CCFF6564CB932EEF9A6EFFF5
+C5B05E9328E5AFCB3CAEA778858ED1F0664C7060F2A97F3373FFF22B905EE77C
+710510DBCC149C72B36C409A4103ABF9CF93EF2004FC410CAD9B9490AEE0F8E4
+2D6A5D065A3392B794F917BD0D666E021670A9748B7DB4F6333532BBA338AD64
+9985E555A2FCD5E7DF78F12ED1E12D1E6463A74858EB6B13D339E774C74AF975
+8C56845ABCCCACAE023B671C79D8EE97E91364C3555123F59AF24E21A39521C6
+E55382E1481EF8856F50CD71A058174EB8A94F0EBF73AD97B625F22204C154E5
+E4495A769071EA31CB2274B24C1E032EA22945A68DC1A8F7B0300B5398A7986F
+56463C8FF9B28B100F9C26058E42A3D2706A4F9AF6A8D11852FA661AD07FDA05
+2676C1001669EC6FA17AAB68FFDB32F7BFDD6D463AF6DD3C22901A5BAD532BB8
+75003890C6E9E4CCFBD4CEDD9930A32FCD1AA9D87E93E9BA4B17B1B34ED00C5C
+50BAD03466B8C56536C5C03DB02DE3040138DC5A4ABC7BF89B791BF3141BFF11
+377C720A17DB65919739ACF298AEDB9DA5091AAF9E90EB828BEA3B033D66488B
+B53A664939D0D03144692E94CB8F11B78BC7BF80AB8F9C6F6B64279871F74F64
+6518
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+/UniqueID 5000798 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
+08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
+30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
+C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
+BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
+5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
+43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
+374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
+DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
+B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
+63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
+89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
+5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
+C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
+7B6DF50EE617C00966B9A2828882804DB7477F4A8CF5345B7F3568B4F72BCE73
+2E2AA5BC4B4C70E21F3AD9AFC3B8605A00D67EF9ED1F4D13DDAA920D45B43CE0
+0941BF17CF05D2B777C11D4D844AB20C0693D1DDF00B27D9E1AA2D98A4A06CC6
+D342AD8F644F4787B66CA7D861E7CE13FCDA85C1B0C9F94009768EA89838EBA2
+7818F40A3E173BB4F22A212B951CCD7D4DB259032DAB0CE92745949E64A31B4C
+39C37D8A5AE24EC87A0E6ADB4094447147FDCD5F9A0462CE365AABAA446B0BE6
+982E3CF0F5E0026E5AB84C80F5A74BD955EAF8EAA3DA7A33DAF2319D2A39BBE3
+85DF08A898E91E050A22C0DD9ED1803E06883E84B4CA6FE2571F07D87D63FFB0
+22D82977F92FCB32DC0AEE5977B8207707941CF41B80ED7F93350693F9D62032
+CAE14B3AF45D8939EBC3A2E7BE8A52BE749F19B75DCE45FA51AB493C2683432B
+D9ADC7896C904494C6D195A4EB347BE72ED933661D45B4FB9E970477A7C6A683
+8DA6882DF10530B88B23A27DD0F3A740956A7E4EB238D2F0A9463C2A1794E584
+BDE65D2D3250703BAEC1597F893B8DB55138F3AC4637594173D2B7537AC2758D
+C5C467E7FBF2C7915631C01E96E4341A09D08A85A9F8260405353C15C85B0323
+135BC209E53069C96F0103756F013197191C159E175DBF9B440C2AAD56464DF3
+3B8777C52F338111E641088D933391AA89AC6DBF6ABF69964F76DAB4AC39194A
+80C90AC25BF2D55F914482917C47651345B5DBB1E677FC1F1F56CCE428BA1826
+2B98CCD285772FFA48EB2A6C3451DD8D7D33A100C4D4403FDE31C89C6891B7B5
+E1F45ED909F93EE4AB09A38EF7FB370C5E6D0589AFB1BCE8EB6EBDF969611E01
+DADA9F9336D68217D6C054A70C3384B076FDD3F789A12E05E89E152C2B87A226
+1B0BDC603C961FBD05B51DECF0AB35A8E6A523332B9717F6012B9722D5B57109
+9E2A0E84E2DBC4F0299D17AFE8941EEABCEAAFADC021B6658B1F0C6EFC5A6B3B
+2ECA2E194E844D4D9FD2EC64D37F89E92A0E1A42FE7CF95691F4267B21BD5BAC
+62623AFF1981D2D8D82D20C1887DB354971AB276DEFE4929C03E890C8A4569A2
+0BABFF1243EF092A33A0FD59EF17D30FAC1D0E0AA87DECB98EE01E72EBA8D7EE
+B6C139CC8F232AA2130B4A85D834B0C0F14709A6A61297CD130170E2161ED706
+0B03AA30A235B52B4B75729A73399727F949FFA33D8150963C062B1F0B56A0DB
+74CFCC1B7CFDF847847554A825865834A52ACF4BE7E87D7E7F6811DBE34D7997
+F5B7E168B7A517247A6A342B9C9E349B2F58127EA25ED2A2D739FB96B3A2862E
+5B044E7580000970D7D7248184EEBE72FF1FD62741E8E736B0DD6B3CA5339839
+79DDAFD3344D945C29BD0483A11BA8EC73149A9C36156B303A734B906CEA6BB6
+AC87CE5B305E6AF93E5762D4BED4CCD3C0D2DC1023C018B17B126289D1BB03FF
+7F50CF9CB07EC7C12D1BB6C1E41373A9B73B9E561CBF6FDB0FBE4289F616A53F
+E39E49145DD3DC23D309203D1EA0838ED3BE9FF149230FE1FD3E16D7CD9522EB
+097AB9146BD2C1ABE26300DA325675F0D7A6A2041DDEC52685D68B8AF0D86453
+82CAAB0A88D628321C29E690082D063B6B585BE0361FC8A41CA5F08AF0B3C46E
+6988265BEF76B777FFC2933557C4C1C2E7115D72BC2BCF7300C2020E068F41E8
+7BD13E3102CEB5FA2BAC80BC5964B899833E680B2CDD3519647585B8387A9A02
+9F27BF2BD017174012B4247FCEA426CFB92D2F6CEB050777288D6509BF61C28D
+AECB1726EC8E67B075EDA43DAC1D328C1227C4647D39B69E5C616817C1A2FFEE
+28BD3423BBF448BD73E68BB9799E560DF05C4CA09E613D73037BF2CF0E047FAB
+D78EBF92087CDCB20BCFA99D9DAC79CFF718F3269D887301D3D718B90F9CADFB
+C93A9E0A17D900918C365FBD3CF1AC1E0A0E8DBCA982EDBC9D4B08C8FAA3C229
+7D79EA0BB72CE876CF4ECBD17B3C61EFEC79E253B19D2620D307A18FA4990D7B
+DEA25F28188B5F64118FDF816A4760DA64F64AB4910C9F50A655259D319E108A
+FD5AF00FE562B2ACDB874F8624D9E57231715EEDCCB8D40379B20DBA7589BAC2
+596D9545AD24FB617967F42F47385A855A0FEEBDE36D269206C4EF00D8634904
+CC7983F4097147A8472399A3AB9AE05B230EE0DE2B45ADC3CF03EB9BA571FCBD
+71E81ECB3DD319987CCA3A7FC194D102218E49445EB12887E5263E25B00A3786
+FC29B625E5B30660E364A6D9297B322A671E8374F1BF68C0420899111E4B8BB4
+DEB3607E506AAD0C3F8854C501E0D7B92BF57C0526B5F75DA53A4255E5B57F34
+E0E7F51194676DA2367A5B0908FCF24874DE0E6AC47EAF55FE4DAE88894EF855
+259B20AE9A2AC275944A7CB2FBB3B7FFC28E032593FE2A35353B6C17A185A8FF
+78A19AB42F7F796AB4C3085AD72B4E6F00DD64A3334D1F681E6EFA465B2D1427
+AFBA0D3E57147AF7EF83726CC836852E80E22908635642C39CF71C8B2F083B34
+781EE9E2DEA205AA1FB3C3DF397A4C55AC916A5F5D94AB3860A2338E93E2F0F0
+06AAF80AD47D1C8726A63B2A4F6B9F2BCB92622788551AD68F4B60667C3125C5
+BA8A3C1F60E06136B6038800B11A85F076B5E1EC5A8BF2DF996859FE60CB0A82
+477EF64041BAA9C03C5288BE8BBCDA9E5E7D2CF3BF0467219F0D7D30C7F55FF1
+9136B5CDCA6CABD9AFCD766B9713F6F75B49C023F60279F1E2779E7440A03952
+DC589E7A1FA9610F4FA9CCC31277B42FB30CF757E05D1438C4E90FB225EA33A3
+D4BD4FDC70B0ABC701401F592BA32301474F8B3372FC9572C648B581B3D47170
+3142D9B7F857FB2943209C2411D182237EEB4B41A70A1E695995E285EA4DF051
+E26292931647815F72FEC9886B74CCDD2C7C536AE85EF928190E315CFD550B9F
+ADAA97984F391C3FD3583E0098EAA35528A9CC0849222565872FD29C1C80FDBC
+B9DE41695FFBC45EB1EE783257A231890B13A4D67FFBC48E223940C4892626DA
+0F9FE7B17D5DE93AFA6FBC3FAE5A2A502B26FA745BAFF01D647E2566F78D2B6F
+5A4FD2141399894C8DA2FA82B6BCAECBF70698CCBD55F69716D0764880BB53A7
+5E3C518EDFE8ADF5E4DD7F90E8069C40DAB208CDBBD831E75C67755D4EC6AFD2
+293EFA066D75CAD657AC44B189EA5CC9E05A3151E3D9AEA5A6AF710B1BEDE4F1
+EA2E9DDC5D8E15AD1C4D74A8B3DC62665AFBC5C6837F54A89BD4480AFAC58E5C
+CD5DD3FB447FA6BC4D0988E6E9558B9CD05F295DCE656FC0D527E9FA126250EC
+72DB8349E5E2C7F65C16A9674D2DFBF2F391829EAB5480BBAECCD54C8213EAB3
+348804F01EFA8B5AAAABE23F2503EF472854D9295439E34704938B9A897A983A
+F7BE4837FA6F201D602AADCCE630C00AD613ACE4D8044361CE136CDF5913A81E
+63CA21000B814ED4DDCCEDFC37F9603B27A9C9C94A0C7630B52651D324E642F5
+8D5124B4781123E4D6343774EAA29D4F1401C5754FB7245FA5EECABCD2F004E4
+E96E73CD64C3CC28DD0540F7C4BDA6EB3C8C0BD703E594019EBD15C1AEAAA9FD
+C634930341D0442CE3C03BD140EF67A0350747FB09883BB7C066C4609BD2AA8F
+951BF83210B69C5B9D7932D23D6226017BB1734FA48A8FCA5ADC7005B455A961
+F017C29372A19F782F86AEB69F16C444995CCF7F9D219731A2BE9E511EF050E4
+9159A66E48DE4606A4F4096077F78EEB45022A7C6656F6E05AB090F20B5FDCC5
+790A2B4CF90AAFE3C6C9F4AD7695A67388F6DC8B063DF59BEAD146BA5CC8ECA9
+A2B6E57B795FF56069EC7DAB30D1CE9C6406BF23F39AAFCE62BEDD6D0109B086
+FC57DB7FA8B735B7D29918A2AEF24F85A6C6ADF0165F97E70991889134027001
+8CC02BD82DB93807153FA6E109CB0C1429CB1084AC4E3714B34CAFBC2885710F
+92B2085ED2FC0313BB94E092B7A0FA1DAC7044D33F577DC29647178A1A30930B
+DBA842161DA09F47B5B2D83D8BD50D8A3B82E5FAB2A71F34E3D2DACF25FD58D4
+0BA4948848CD9E73805C50263AF27202072270B467C78FF2036B2A98B538684F
+B3CB0AD1088BCDE9CDF8C94E5A32149EB3B1242F5C8FE74021C6DA4AE55D18C6
+87956E45471A3FFE8FA9AF517AE639E5FC7CD805456DBD1444563B2802563F8C
+36CB915C87B571773DF5DE008B17D6F32E7A3861CD1864872735672AC73D2920
+5F98806227DFFC6A0F755F3DDF0C0CD4E58CF81044ED7905B235B581E2BBC6E6
+A0A574A651D5ED3F547609628B03848C44B1A32A4D2D852EAC73F83BB6C1CE42
+2CC0C5E854A689B294A38CACBF7D79AD4F4AC37DF0FD677CC04408465D822A8B
+2F1755C8D4AE92D58B5B8F1C08B0B4A4F27E3EE1121A4BB0D5DF2B624946C5EF
+AA3A746D69C02BCB907A0AE88221443E43ED7AC3B8671673141C9C65BA5CD769
+69E5B86874B7CA556845CFF209063F8B0807D2106A72FE0176F23C4FFFBC23B8
+F9410CEB41DCA21B128BD4E98AD209AEE16FB4D940BD32A9EE639454C0DE5A0D
+22981A0D52FD7031B89AF64114BAE19EB611DC1DDFD342E869F029AC6553A0F3
+F00B85BBB8DD1E06CC6D944ED34FF813785CA7E3190FF68FE36E659AC9DBF210
+E907C79DDF8594522605396929E32016A6EAAAD8DA6131D1DDA64A7C28A60573
+6A19EBBCC9EBD27B453FEF5DA75029A00A9D952246E2D1DF6EBB27F3F645E9BF
+32E06BC543F7919414A3C4F827B57238BB59CA6E8240BD5548EF780CA6190547
+109CD0127CEF6F10C9520B554A5DE8E7C37CD4E94834153FBACEB1750C559DAD
+05857C0FA0A86247F245DB4BA04792C06A6894D45A3AD5DE8A73862E8E131E70
+CB2B66CA803D3173641FFBDC7D697017E3DEF51437CF707BCF5D0E82923ACB72
+3D92AE7327CC9699B4DC65F5F17E1B4F952499A56D3A4D979A335142A67E81D0
+1E0B7CB4B10B05AC5B3DC0ADFAFFC4DDCB71A484F0FB1D8728F993754776E165
+4792639BA92692D37B67507AE3E4212DA472BCA20A43049409E9691CAD91DF2D
+DBAAB9E87B5BA29FDDF211DCB35A85188FA92B564013B2D6F7C2C691A4BA42AC
+BE8F331E44DDA8604D8C4443F2593323D3333395CB4950180671D637D0896D91
+8CD34B42DD05569D99A65BBBC6ECC238CBB300C1207F7F95C932BF9A851572C2
+D262E06870C26EB65E8F1916F00679BE210F0427F6EB30403333C91B1285487C
+2B7A63A74626C2A30144B1DA378A9334964ABFC63D660CE998CE2D057DBC346F
+D15E024673E34DEE1A2880E3266F4CACD4FDFA1ADC18E454710E13775A17E006
+2EB1456323A45E8B80A395D200444C7461862EEB335065126E28D4B220ED1483
+4C144A02B9451391E7E94BA83FC4290E20259F80ED6A9B977FEFDED9FF80C5FD
+D58E172C6E06A30D4E30D6783675961FADDD29E2F689DC1363E1356A368E3E59
+DDCB6C0EC97C3BB2F0B0B96986AD4681E6533A97282C7D95D44FDAA6468CAA0E
+C974BC759C92CD8CDC09A4D16705AF027F2CFEC57851A5386872729E7E8F4A8B
+A3BB0F40FB5756960612B1C3D91CD9AE00A8D50937078C5478B500D22E3B54B5
+F98980C5E463F453202894DCCD64F52B51AC3DBC615A30C141AFF8F422AA2E22
+86D602B036FE0CD8C7BF9FB30FF8D91D49B36AD5A43A79BE7492017A597A71D3
+BB8C60DFFDB9F373026BC4434B0E7A0EF830319CC3A48439E2DEE5225A9434EB
+58EB056ACE6160A26E2B05D193758C7401922D63227BB152A1579A97B07FE15D
+7E37D9E90FF41C253F3C24EA53AA6672B33909B62546CEC31865B4E454EF28C6
+DE58FDE9325DA799377BC261B8F24C946A96CB71B979439FF2E050CC3B4EC197
+80AD1DE6B106F01735875DB34A7E39431F88447104393E7BB48660B51028CA39
+A4F5F3B5660C04CA7CA01907170B661E7B80DED67750F975FE94C0DC26E1E1C9
+E2669F3BAD3563D27651D579F856365384BAC2181853F1995992C1EBDD1165EB
+25850E1B418B8963C150C4F466D6FA7CF0955D04E3264EF6EDE732EE49331D6E
+6D4C6FC0FCB6203C5409EEDD1E923ACDE24E2BC7942479E48314B44323B4A7AA
+7BF88A0D06F7D0691BEB5C1923ED4014DC31C84BFC7D93DB8F85AC228EA798FC
+B52FF86E17FB05F8BB1DC31206629C375ECEC6B5AF2D5CF5362D7A8C204A270A
+CE76E0B24DE9B5D8EEFCAC82E8B02584719D0D4C5E7DCED4B30577A9460C9D3E
+B08702D9D4FF31AAD8E0E4A9A62D3904EFA2D2AD84CDFF3DE638337D8D748C2B
+2EA9978D9A1434FBE39E1933BDC0D55C8BABC9A26C97ED662B5264F65DFAA9B7
+33BA61AB7F281141738D3892BDC365EFB9ECA2B8CB53C87B0FDFC309A993A9E2
+D264D4D95A6F642B05C774D2C77A9E2E0F1B6D7C2268089609FF68F90A802FAA
+9685F60613CBB99503896837B0A52ACE1DD2F9FEE36ACBBB2A2673BC713D4109
+CCF8CADB4DD899B17D76F5ADF3CBA827F29B731DDE54F033D5A71263B41BF077
+D208804CD978555B20E4F265C74EA90130010F28EF74005341327C6470F681E8
+68C42C6FB8E2026BA537934CAAD1F8D14310824747364C2B89AE274598036F65
+2F54D6848FFCE5529D780D662F27C1D72269C51CE8D15662A88F7923BA6133CC
+C9AE371333D08F870784BF274547AB22E7E883AC8E07E71E165CC9ACD562A70D
+3DCC9E80A4713F0FDF247641F4A4AAE6FCA60BA7E7CB21356F5786A7E3873B18
+CD9A28CDF689972505367805ACB6385C975A4434B83F4A8C42CEF08E3FC9E0E4
+E8956A23AB7105B651B5F101880BC795E85C3470ABA6E12DA9D857FCE509DCCF
+DD8FC30CE6D4C3485F37DF5F30FD99C7BE98316939CBA4D5885730E5497F76FA
+D013E6B21DCC8DFD2BA5E59F0E193FBF16D0A2A96B519BA7CB057A3BC0C426A3
+CFE3B899A88B8C6F423D430CD27C6D2358C5081F92A3140E587CD9B632BE933F
+F9EBFD976C1F5C9BAB2CD19A65E94F0809CC02D7EEB9DDA68B7469DB375E3E8C
+2142C50416F477A1F9EDC61F116FC9F7750B8570DAA3B35AF17D80EA2EFE3122
+E50BF47572E1916F42806704690B4F0BBFE0B3AF1919C486423B06C89102EB9C
+5F8CE9EE0F91672D523F6A85980B6DA1FCA707BCF31EF2309B90BF61B05A6DEE
+F0B59E527192185EE9D87F250A8842DAFB2DD5D7009EC2453C99088595594AA1
+219D31C4466D8758A5E580505606AB81B223365F02023BF958529C331540380D
+E311166D641FDA8F6A20A6A3C8654DE4F2CA27ED355AB582CD728492B21090CF
+D1AC14EA8442123AC08731AF0764F676A9914BD8BD4D1DE5A6A1DD56AA5BAA73
+5CB69353C8BCC3514C4A4FBF27CD226B13389E90E6648E1E0A5C116F98A86250
+B14EB30DA6C49B02FC8C2839A05C0B018B67ECEAEC56BF0F9C066569D00D33FC
+AD5E0F795E5FF3810BC6F13EB8BEDAF82EB3F8D5E8435307A65DE42BC8021E0F
+BAB2563F9FB41D4D8BCCBD3328E145FD5087115F19E0875AAA2CDD75A0D2CDA9
+C6079332D11434C5C4B98D7A78E159E0A624C5F22A74C6B95389C273450B973D
+1A011EC649CF7054C95FB65528745585C818E552B1DE9E10C67B286C7D22DE7B
+02E5F0A92B0F09F346D1A02D35BE4714671B1C08B385E2D72B4A1A7443FE3691
+A4E5A44F6235EC7CD398EB4AD0161FA6A31CB4C50390749EF605A61056577F72
+F4F648B4C4867C5FAA4F84B9259E4EA2E5656DC8BC15715269B72783FC5699A6
+BEFF91A7C67E7DC4D5F80D4E4322A483AC830D69F8EF17FAC57BE3D7D105759A
+9028C12152DB0A9A89C0030D688E9E883A32B926402DFDC0B311ED41485A3934
+AA90EC281D27A870E83F46BF9235289DA5515C105D849D661BE0A6CFDE8F0D9B
+73858A4D368E8A2242198D763E0CE921A56D71FECCE83DB7093A1EF6560992FC
+DE2E0461EBF359E54D12710A047E9534ED666856C684182625A3E5B60DEA323E
+7C5DA88A3E31DFE475C9B0B03E856F4921865F738EC48E7CEE089F91F95FDD76
+907618CF784C8D5F0E4ECCCB42C9461506C56AF1200D3A71ACB3C0CA82F90350
+2D75C83FE0BB2E63869DB9CB68D3D07A0FE6AD86F9F0D7312387D20A26E17759
+433EF74AF800A5E41F798F4C481E24DADD4B51023F6CDF1382D3E27829685DD4
+6CE4507E9DB4F2664A9016641AB3604505EBCA9658C36D52E966EAA1F7A76335
+EA0DEF0F61F25B55AC8511D1A834FC0599F947B6268A790F3F78680839AD021E
+3E556203D46180B28DAF04D15767B08BCC07B47BEC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueID 5000772 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337
+900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA
+87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98
+076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518
+9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A
+FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD
+B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9
+CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30
+40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D
+C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B
+7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5
+FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC
+81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D
+5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90
+CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6AD4B2482A
+0E7D070D7497892E9E942DF58E88CAF0C8221BF36BF7C435BF2C683A4A2EF4CB
+E85820A8AD3486155A40143011BA9D76297F46DEF69ECA4596D6E4CAABF84091
+22A96A4BC78A8DD072FEB759A68A44BE1164638B6D952147EE3C628F9A022060
+1D1941E73310943FA782532ABB1116532AD67AEFE0758C051241E301C7E13A98
+6447EB0180BF6799814BEA4DC0F727D0A40B7BC3B1269CDE174453D6A3C4479C
+146001CF717DE25AC1BE5AEA5F2F1C17719251C429D3AED19EFAADBB532AFA81
+CEA5183AD85762D8C4BE9DBC3DA26BBAA169DA4604796B650CF3959113A6094C
+A886E97E2DF029A8185DA7351DBEE131F105E75AE4BD0991415486B706F44269
+DD5917E69BC6D838CA8ED11F2BB5C5B94A27DFCCE6622D8BD114B33A5E6EEAF8
+F80F038165783BA2FB0CA9AE894BA1E9E34C487107C002443274744ED5C6FA61
+8FF21E94D5C0FBE8E839721836FBBAC1B8D32C267CB704F82DB68EE1C921A832
+F41AE764762496079BA4C3BA139E8C00E78ADC12F551F5BDBDC147BEC0A9C0DB
+6116DE065E5AA30C069FB6548C307FF87CD4E12EA47FDBB4001A4BE6CB3E3CE4
+2B67AC773B6B5E7686287DAB0046E3D99261F87F1B988CAF7C542DF6BBE07A34
+5662B58B381606BC52695A2199D3305D9FCCA288176C889763D6D5F857C7849B
+CC0EC954FEC598D226282C08E002D56D85FB20CB20BD6A895BE902F0FA66CB11
+93EFCB903FA4B7270DEDC3D0A7AD26D4DF2B8DDB82F73D286CF668FF470122B9
+105E40855A565B0581B3D780D9D272CAE9364D0785985D3C52B0D21ED481A624
+0D0907E2194692D27AF0075668D0729DDA9CAC215A213659143B97581B50A050
+42E9A46233C13B84C15889AEEA88B867F837D666F2A679526E98B7D6C883A0CF
+DB5C2334B87BC2D189318C75A7EBFE25DCF32BE5C5852AEF4BBDF064A7B9668E
+66809D930FE7692E15AE986CC85F69096B2646BBAB1CEC75F0BD58EC6E2CF511
+31994BE0843B263C4E124852E1F71A8AF87A3952E5C1765AB729B66810B63DA7
+3BC0BAB2C7A280E3EC7FB3B19CB78ED191BF863EFE3A812F3F00B14180200151
+9BEBA285D48A21256DB2AD5627CA957DBB65BB229A3639A4511B494D4C0B92A5
+F8782E16BD56C10F54A8A87B3EC3B0FDBB25E0DDAE869DA7D0DEEF3C82A7C031
+CE55E3E3EDB0FA0A071F36E91A272D5796272A8BADCC2710D6E3DC0AB3B4B165
+02AA9F11765C170FC254E485C6FE8C048F975B9621B3C2357937624669C2DEA3
+AFBFD876296DCD6F2DC0AF08D2AF357EBC37FDCF779C59D80C3BA4CEDB494C2C
+A73798C744157FC78CDFC9809F9C5FC2C5075E12AFAED9CB3C76595FC5FEC296
+27A6BC81258B8AA5CA6D92B925BA2A2C14DE4D0B775FC98689175433EB31D9E8
+66C3CF68FADB9132E5549FF5287F839AF76E88ACBB5C756C07E56BB6C87F5AF9
+3E0A2C82D49CD78C9046F811A696AAF1B1E8244E1D11ED544CA1F4FBD89A938B
+533CE9A5DB74078E1D4429A05D01BAACDE742ACA68BC144E8A1D46DA52DB02C6
+50AC422DE7D50CCBDBFCC2E402EE95BB014378558B6C2EE35DD83F79FFF36036
+5461E9158FEB691961FADC0D25E848CF962EF2142B7BBEF8D3D16400259811EB
+08AA6F94031D2F16E995895EB3A0112E744BDFAC84C01C8835CBBCCEF59C94FB
+EB63B4D207695358118AC35EB460F8AF2933F60BDEC8543EA85C7BE955549E8B
+A02E78B2EE64A2168FDFFD042C95A2FFFC98948C16C32093D7EE9631D90C5276
+C07573CB1CCC565E79A9A7F6525839933903C2684A33BFA1AAC5BFA9C85CD147
+5BB93DB531A4D5CCA5B5FD4A91CA626B2CBCEF9DDE71C21F555A25154E968FD9
+DF2FAB34435D123C5414CF53050DCECBE9B672776B991ED34F56E63B378DDE11
+546E249C0B9DDE7C01D6CCAB652605345BBBDF8EDB61736418A3DAF5F86A1B2F
+A1DB912B07EE9AA628A500C1C48DC678BD236626DB0F5838C9AD58951B124925
+FC76D84D73ACF6B4C3BA347B05571068E9A06A9CCF9F37BCD744E9FF255933F1
+452AE06E62949285432A770D333EECD47132CC49D0BA0C08A663B8C8B271C71B
+DC26F6753454C6A84128F58E10105330A73D8F2BB9DF67B62BE209344379384E
+EC3149689FDF04A25D80AC0EE392A6C76EB8778D25F3E8CF73A9DDA7C27FBE4D
+2E93C7FFD0A030CD3FDF4B4C09B8EDC31B7C7C37C562B6C8F609228A314EFB4E
+DCB2511E865AA5684EC82BE87F9A1BD15F5CE95770DBD0BBC3DD04E3AC4E4451
+154809E65D4C82143C8B57C6F9655DE0E9416CDB002EC77D588C2DB3F87E11E4
+54A808DF52ADB9196671170886C61FE83E3C98914A4462ACB9C4BF7644EC45CF
+99D8505FDD87986A1787DA5A250F641A595F857CFBB12FD0B5FE6E4716A0B43C
+2524A24110A93062EDEEEA1C9B3FD8F9AF39DDC0F1A98AC82F9988ECE56F5CF9
+8F536BB63494D265AA7212FFD551C571D6FC09108D6FAB7CB81D30037605A5DD
+4C4DBC243C100D6C5D2E2831BA62739719970547CA1193E8032107D390D9707C
+E00BD2423C9ED6BAC571273DB97E7407809EFFA1BDFE41BFA7CE14DFB7136268
+79F2591D5B38B653D3171C55CB9A42DE6729E6F16750DC29650991A7F514F513
+64A02FF70FFA1AD04FA6D0423A653DE2B48A4B096DDB963F67D53CF50768ACA4
+53D3E49A1F2B3628A0ED069D3FD7BA6504F349E3D9AD14D93E860057F0192F7B
+B2B4FFF8CDF0150B6BFCBC01F22EB03951C6C3816B0231EC58F98EF35E31718B
+F9AD8E2E439BFF1D639E075DF1A4B384EC53E0B79534EE59180D61EC970E90CD
+790046A4246F30FD8E6FC229AF02286352F2636FEFBBBCAA7596B19EEB0B8367
+2026AA7EAA1840B511CB6828122E0FF9630683A2FF8C30C057215212B5CAE157
+1174877B848C2BA2EB77E286B4889953F06B7CA40E0CA42F395CB31C1D4428E5
+AF3CE74352F1EC79511D588ACE082E6B228DFF5C04E124587D29CA5DFDA93E38
+7E50BD4AECFBC33FEF9F850AD157DB5C2AD3A60751B98D1005B442EF228756D2
+17A4A89BBCA8E0313B8D61E987099DB75E548B171E7CF3DF38B09549F17ED4A7
+7210A84F7D72945C366BFFD7739F1BFFE3EE8E9A44882D0176E38EC34709A4B8
+E4794D8E21A77600A009B07399FA955010AF3076B2C54440785F77AE27D52FB9
+A3AFCC49F422163A05A1FAB6E4808E1EB9CBEECA41C507F02783E885BF39197B
+7A8A6C0FAFE06544D19757E2314414E550FC61D88DF22AAE7BD5FFF87A3359C6
+3E38FE2214979ADF577C4FC508DA6834652D1A583C117100D6BFA72A11E16C23
+FA1D03B94DD6148051290ABC26A33E883BE020773EBAD0906FAF4A403C77186D
+83331ABD9FF9BD8DDDF15846B4EFCACC9CB5710A0E2A18DAC2A11D5B13DD74BF
+0407CBF4CAD8C55BCF3D7E0A58425843A9AE42FEC19B12D246C170E5ECC7D337
+021D20DA5538D22F8BCDC996D3C48E592A51789532CD5242B52379CB341CFD89
+3A800BEA3BBFE9F5E5F473A99815E981E676D44765D23BF58BF52FAF9CD38B2E
+C6DA83EF51FBEBAA1B735F28E3E8855398ED6231595795EAE0D90FD4A9AF106E
+2E7017A9F6D22C53C96CC7EF0EEBB102B8FCE9107EEF17809B8D2BC5BE251902
+009D8581498F93C3F2CEEDE35A139BA566D35C024747E829F30569AA3923DF2B
+BFAC37CC37783E12FD30F301D3FCCFABB173E74CE925BBDA0C381C5DADA5EC92
+5791F2F3ECF0AEDA7F851186E458A462A3F0F74D46A5A5C047BB354498F0FB07
+BD475CAD481B59B2525320A477B5E1E2823F9DBD0C5DB231E770F425B250ECD8
+4A0412CF1CABDB1BEF44B5B06C79C6609DB822FD46D1489B3F4724D9D260C75D
+8851CE770556FDF34CAA00CD31AC2724ECBED0D816C2B6A26B09C344E11B6F7D
+1E7D9EC4C55FA55B9290A0488A94D4AB708F9312CCA6475E6EDD0527FCEAA8AF
+D7BE1A773A918A0803A16749D4C7F8139C6030DCA889412E712C29CB5BFF045B
+32993F210CED905AFB715D18C595D56FFD7B7447F6C317361CCE0FBB2A5BA917
+5905101AD5096CD4D6CB456B2A6F3FE28E7AE2D0C03FDC32FA71446F2C075BE2
+238D20883F4C72080B11202D4BD3BE1E167BB0C3251B0B2A82DC4D2350D83D1E
+91CB6F9D301C1585B2A5DAA205EBB8BC4243B9B42C1884B9A89F8D9B7464C70D
+20B66E5CC3EF0C919536C0E6B8C06EDFEE9308317701776DCBB219C6E5412183
+C8EC581531F66C8D1FFA8CA3E66524290ECE7E0F658B76F7ED30C21A7675C340
+878BB0FADBC21705D6D49F896B0832DA3A71B18C585F17AE19D874A016FC8C66
+DBD19C22591693E366F26A1CC775AE5BE15CECFF71A37EE167E8355996FEF7E6
+6766C67CC225B76FBA78A47BB389F8433CB3CE3FB8611C6F9E6C6498B2BFF81E
+879A8739A0EC67CA632DBCB6C3E1A48B255B417E3460651B794C38406F527399
+A1EC4C5FECA434D0D35F919AC89334E503391D2DA3F8F1F3170E8643F7470A2D
+4942291F126F35778D75662AD8BB4D7701F16982C906AEB01FD0EC0F5D284C55
+7F09B432AE52C18F2F208B028E54C56988DA1F44D3C0D9E82ABA4E1EF5493BBB
+0A0E72B2091D20C2C3A76F1BD71388D1B5545414D0E08A52E3C37E8750D25A34
+6C3B0374CF4FDD2DCA2BF63B38B0E80ED61FDA8B383EBD42EB18FAD8F50CF71C
+95ED5A7CF1F9F354BA6FE27C58066957FD60360672419AC62B7339F64E03EE9B
+6C6971D6DF8A3ACAA1A3F924709A01DB616340AF56534F258B72DFFE4D2CEF3D
+4156C2C0DF22413A435AE01AE93B615DB8CF61CC986B9A0D7C2C9E50F004D42D
+05A42503E3ECE6186CD428DB2C21CC35305EE91227C9EBCE4FD1F8FEE5FD55C4
+581614EB52686E60A8A291A19E36CFF188DB13A07F0A99B053F297594007B949
+2C0EF272992D56E382EB87352716CD6CED8A69B8CA0C4FC89B6F6615E6B39432
+E4913BBDD691D6654457535F7948F758CF105771286B293F9E7CF6BD1BCF5BC5
+B0B285C145161BA4D91D48C8D4D069AD5BD9045236E71BE35A62FB02EAA2F26F
+7ECC0A128E25D69A5F6DF84E09F5E03737B07FAA54B751B004BDA7DC0CD9C5F4
+AD9D274BC083174A7EA3B254F9C80EF29A3210085C0ABAB33442F9D4C5A8BA94
+8C26A1FE8AD303E2217ED6464B7A32C12BC194EE2C785821636A0D4391589F54
+F780B163C13426381ACF8B088F0599193B6025131E0284393C05EDC4E1832E30
+F53A2F1FA1D778B6D48C07F3754268FBFAAFA24BC0C0084D2C73328453B00542
+542E560EFF04899C9A3DC342473C49271E6843AC49FF425FC9187E11856B765D
+E5D50E962041BF7BB8BB0C0EAE5980D2ABDC5CF1DF82F704D81A96FB2B259DD9
+11056A90D9B7A798013458B5C8FCFD4A1901AB71880E7D354E765691C22DB3E1
+D35E0D6D5AEC66B169046C7AB47905A7F025788E93DED43185878E5E65E61C27
+25F8A3A4725F0746601255429B44CB92434D40D71492BEC70453348C375D58AC
+911628CF4ABE4ED198EA9EFCE33A5ED045602C72A64208F5AD02F8F87FABEF09
+6431C96C7DAE0170BEA94D4282B8A3E88089EA7282716F271F9C5484C40A1EC5
+313723F33EA73D774CE10F2DA03C67F33CE91038A77E6BA56C13DF9E7793CAAB
+8570365EB1B35D4C762D6B6F10618EF603CEB94B6200A582DF429AAC5FD910B9
+FD799426808026C7E993D48261A9AE134127AC561B2840E262C64CCC368331A8
+A0A2626A9B6F9E067D8D0E8A5A98452EC0AFB79360C1BD351D72CFCC41918533
+49B90E7329D475ECDE669497FCD2E4844F419821F8E80681ED9020F4F82BB68E
+BCBD8F9FCC92FDDB4AFE9353736ADAB2E97679A8EFBBC4B7046AF10B485AF313
+6EF51AD16E7732768A4375A9C5AC3A0E19764801D7D828B2BAC9B906BDE20A9D
+F03F06D06F31663FCDFFAC0DB98FDA945466A93882A8607ECD5A302033D4C5D0
+3E2F75800CC827D4A5CFEEDC1C843473390A88282720965E46EA14B1EA36C550
+5EE18D1B275824FC8CD4A4D938FFE7D182BD81F8560F4A6765A6C9D6CDEB3D0B
+65E4D4B887920016BC5B5B4DC432F14D656C722953F51A19779AD259022033AA
+70C5CF9D7CBD50A9FDD854D997EAA05A88C37AF2CC8C26C93D51D75863556D4A
+FA3CEAE7F8319BA9451509010583594BEE4CE4D7246648F4128A46EDA9BFE7EB
+E42E42C3DBE386588C44D29A8C183AB55C109E6E0C7A1AF2F4E0274CD9DFA3F8
+B12A6C2B362C5CE42E8957DA68D9A930A3BF1A861A2A9E7E33FAA271EE6602F3
+C04E2DC9D8AC4116EFED444D5463B198136F91390C60C49E63041E33D843CED0
+29533ECF1EBF56CC043D2E39F7F878F48C3344AD1039D6ACC3017EF01D2ABDCC
+170E74E9F75C57AF288668EA8E1C4E5264220EFC226276F1A8E1563FAB6B52BB
+AB41DA3981433953F415D2D517AB711BA61DDF41D06D419CCCF9F937879BA81E
+9140A6BF67A6D387A6F0E57A3F3F9E35AF7B3807AD462A59E7A3D2D745F036A4
+9ABBEE0B92D47305EACDCDBC02F77C8F38D84A893E8C5DBD3EBCE5D8D0C3C987
+BE0F1A6D598565D031E8D7E438D85C46CE50ED1B642A1E84AA9B4C483CA1AE01
+7253A232EAB7357CFEB23F5AA5E7C5388CFE27077B23DD5BCA756059ACE435DA
+1B0A71D1765A0B4CDD31663116FFC237DBDBA4FD14DFC9304D35692B659C8B8F
+707FADFBAEB56A89659AE14DBA90BA20C62C0A14DF69A14045169647D9201E4C
+351C4CC88729FB3006E65D2209C50582A878FAF10AADD6B0C4C443B1BFF412B7
+FBE53806FEFCC685C09DC30CE7227FEFA1D88400AF75917810AD2307D5BB837F
+CA1A6D1E4B0BBDF26A59C0E24FF5658B893ECF91E660FEE950753D71402FF4EC
+63BBAED9C1B58FE53282B0FB5779BCA9AF509BFE4965AAF51C3B87A6D088ACC7
+B4CA4941C18B643578A05C045BCC544380EA01E3382BC6DC3890B85C201CCE73
+5DDB136A434B6374AF6A0866FE5BFD79253604F91C86B77075FD6F02D72EAE59
+151C482EF438A5B139E86EF9C3CA0F5550893BA802025CB557150E1A7CBD0660
+7DD07913DD9D50A6F677AAF6B60D182A7ECB9ABE256005ACABACFF58713B18CB
+110239E6D7EB1551856328217A3A718210048F3419F81CB86EE41F9B19577B3B
+E038A7FE1F0FC1E424C245479EA34B8ABD2E4FDDA1843CB547E77CAA0435A397
+2934C0190AFBEBBD7F80EE7404E5D11179CC46FAB0634CC66D6BBD97B2B353BD
+F4B792412CD4A055FF160EB560E9E790A9E9B3F19AD77FF503B406D8066118EB
+40ACB977D48700AB80033C2036776CDFB8F1C55FB8DA0C084B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueID 5000793 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A
+45A24ADAEC63F61C9FD18376D39E0FDDE3FB4FBCDD6A7B66068A99D31CF54CD7
+DF2262DA91CCC72889CAA62B1D6F2155CC8E940A2C35D8CD3EC75326188E2D30
+1090F31AB50F30AC77D2C445BAF7323389406C44641B3A72C26BCDA442504D03
+6C22A3BA1A69E5F87EA400501A3B3231E46F96AC3A6C0E4A4F6F21E0B2BEEF53
+E016F34D7003351FD12436520926C632218410359AF9FF167750D3CE0DAC3B91
+B310C457402E05C316F400246C8C38B98CC8030F71104BC4FA0505B5EFA4F5C5
+9E4FA27C3E790D698690336254D7E34451E692AE23BF5FFBACBDF33E25359BD2
+B0E7A0686602568BC87422F32486CB50776C7EAAE7F1BF78B228CA3254510653
+3D6368A4985C5FF5A48AEF16E1AB71D7CE2C6649F2CF4B2879D4FA042239B504
+F988D2FBE87C3BC784E55B8EE36F1BB5EF14FD5836CA448E139EF8FE221E827D
+0608A6B90E08CBF44A30669AF4E20CD5C0C80518B7AF4FC2F56904C2849F7F05
+BD9E5029B6C79D25E34E18176A2755CA288597D1CC18D81511E93FE88B94DACB
+67F312A4986FDFD913164AD228F5201FE02EA6C5FF3F6B1BD792FB99819E2589
+7BFC7A527E99FD1C1163D10B83BD61D7CB962C4EA67E887FBA85DEA3B2A1698C
+6A896388E3CBA13AEB278D02354D5D40ED45A86BAE6F213806E9A598FB92FF2E
+8F498BA926D0DC8E167B32DDB47D5A71212CC63EE2BA1332B23C48433BF78C22
+E5A050397513C7B9A954B20801ADE837DC725EE53845DAA89D59C4CC24F9C849
+0A7DDD7808E5E31755CE6F8957C95FB68823B9F944BACC8E18307C10E9D566D1
+D6A4BEA8A230E5C3ED80B9BD0F2A30F39C905F11843A9C3B873F2050025DD297
+F61A7D44A58B63C18C16C4BDDEDBA73979AD1CC2C211E15E42F6AF3AFE4B686C
+9EA058B6A330AF99BB0673333FC04ED65CF45BAFE78F1899DF782FC2E0C10A45
+622720545FE9E04DC3703FF862999D20CD6BBC8944F7EF1EA84EE89A863FEFD2
+9C2E61C7A244AA254CB70319C57F7BC4E7EC1B7ED0E2E0BEFB7BABA64360690B
+32DE9FD9158DAE19BC5605AE0006A614D4E3D70321708BA09AF5774D4EF62EBF
+6CDFD17652326A6BFDEDC298BCAAB0B20209AFB82CD9E4AA63BE5CAD1455AA9D
+C5D6170F697E088ACB6FAAE3427B3A26E0D8D0E14968C973CA0D8BC90F4278B1
+BDB067AB3428719BEA95A88E93D13409A2A02A7EC0773CD94FD43625A90B2141
+2B341C59871983359614089B5292C2BB9C184A5F3F9187988A4F6627C63FE9BF
+1212A94D185FE803E6B9654524E569ADB223E8DE809E44DB791D1C46AFE2BD85
+2E5382B3968CB9762BF37A38626A385D5F03D69C90B1989EB0996CEE0E1C7AF3
+DD198CF50AC697B3489FBF119FC29242EA5A6F02B7041833027D327EB8A9AEE9
+28681EF627A2AAD81E6881C369D9C09FAFCFDF22C504167CD5C4869C1B13A1C0
+5114C83FF30BB4BF72E1D6B8495CC1460BA66BBD6E8DE75815F8D410B5D77A27
+7C3962C77552FC7C017AFB1A425A8247ADAAF529E6FE9E4F63E827236900DC04
+430885BA55165BA9622BEE1399B53D9C310EDB2F9D792DF042BBC19A74885247
+5E7923E2867BA013E8E7739589047021A7FBCA966774443694699AA5D52F2C06
+43EB763C89A488D79BA8A460541F2581DB4AA645D4F69E09E233D94B051CD4CA
+B792C590364CAC3D4ABD44E1E41178DA55B565419DCEBC3C336639494518CA79
+6AE1E85C0E6A0F5B6B049E16AAE96DFFA9DE46ED382865699CDEED81706C69E5
+E3B3C1FE39E6B3F460CF6DCB7FD30C7714BA0D3BAE4EF978A6A39F4B3024C4CA
+D1FA0203DFF3A053066340C0E53EF8FEF62C35868410CD5DFAF7A4F557203453
+DE9FC027D3472519BC974D2C5C5F344D5BF4935F816EC147BAE7A713FE139166
+D20AD3FA49D35C99C9E8405FCC5A7CD18884111EDBB98E1C32832976BD42BA0B
+385EF51DFFE0FD964C4A477130E1C91E29692E2341A39781A3AE0A8B9C65C838
+49979877FB5722A7056DB947264AF6872840B5E9B513F144E3D896BFB91B7AB1
+65E07AF8D6A94636021ACB4B8FD7B28BF14B14E89350DB6503276903E31E732C
+9777DB8284CA9DB336CB61E6F8C64F87EB9264CCAD576CADB3AEFC0D1559E02D
+E33C4DBEAF46F875B776D6AF999C84B9A47E40F3097B0A0743C8BD070CBAAF4D
+8B6FB3ADD52392C9BFA066C34F74A294B9ECDC75FF7DDA71F03A8FCFE83E04D5
+385FA8A1FC95FC72B030BB1D7F526B9E50C3721AD8D50F316334B7BA94DE4515
+2E478479F40B3BDD9B7B4570A1A44AACF8CF4131E31D2790EA83504E63FB9600
+8D8BC57B52FBC689F3A7C77AC662AFBB547BEE8935D1EC6BBB8BCDF8E604FCE1
+0EBB2DF7E510940BE79ACA6D84F1C20AC51E8B0FF5ACA83DA0CF3B83820AE4AE
+CDC2EEE5D28D1648AE7CFB3B982DDA57FA452F62CBADC97142D9FD4AE402A7F9
+DF3B2BE19046F2E3077C86B429A9E812BF19FFAD85C261ABCCE4539D25FD1407
+0AA8FD91D76206205EA8F47F99A0C87F8EC912E3C8715F35DBEE077B3D355CC7
+A17F270401B323478C9428614F751FFFE641EAF14CB817AEC2FD1FC9774AD7AE
+71492DFF5AFCA586357BDE536E4BBBB92E2ECA042C4494C798A079643D1D948C
+F8BA6DD6AE6F18E3D4106533ABF87B192FD891C359993C8EDA73D11A119DED61
+EA52FFAD9AB3D2801E298D45C8E32E1CAF2BEF324AF84B76C7C91ABDB7E1396A
+D716C155993D4881C6E888E8440FDDD9CC619B678F3B1BA8F71BE88648571F53
+4A2BB8476E05BC32EA5C6B2F07A74B12DAC3FACAFC0F71070EEC3D9B46AADF2D
+0CF96FDCCF69F7C4D9BBA06E1284D5647B268890AC803042019500AD9ECF5E1A
+67B554A89A55C1BFBEFCF601C65135BACFDF10FD632A532AB3B87B5DAB1448FA
+F5E980BB5984C46CBAFDAD1DF1F56631A40D60672DDE7821E33CB9C65B9D5614
+482FBFA27B3778808F066BA64EF30C642DF84EDFC779FF2464EA62360F3B9F8C
+120A108D7D5BBFAF8DCE92C9E08890BF9F37094ACE9E85E700EED9A2ACEC7E26
+0AB73B046131F03F720DD0FBC02A2314099AB6C85785327F08DB02B6688EF31F
+02D256B0EDC8EA7B4109B398D53AB187E620B24D0EDA6C07BA3E3194BF8EAA36
+DCD01FDA27DDDFC8E5896E289643EED56E391A76F6A27EEF40FEA28E426B1962
+C923CA88E0F92E8F7E90DA303B0D8CE42EB52E49E6CE482DEB1AD6909A4DE51C
+04380638C5E87926DBFF73B1BF9239F59852279B50F7C2730DF516D4D59D23F0
+D9633CE13596D6B23D4D5DB945D5E764C97BE50E3887CB7362C4AABF3A54549E
+90EBFA6CB81480A6493F66A6E808A80B5234FDFF16F7B678B29BC158D49650FD
+DEA26C11C91C55E28E953A1D65B1D995406D8719A9CAD99381D5134F5AD9A322
+67789B87194DC83C128CE0519F9AE109168C77C675C9B33FF896EF6EA4B00C07
+EC30096518398DD78A417B7BE230EF90A0A4B6CB0D3FBE9CEBE4C59114F8F049
+B0E5F72920DB977DAE4A46743E0F95C10488F753185279D9898BDE7D581C03CF
+BCE0EA9A67BE65281A7A16B5523E41D09A45C19A5A887B8461EE0FF19B043A32
+FE215ACD220499D77B9B49B70E3E8AC00D688800D42B93F10D47E4C0414C6A28
+F15AA6DD01A8831757A2F825DCAB172DCCB79EF38C88800595605085009A9AF4
+D38FF7C0A579F00FCE67C75FDC7956ECB1231573D9F7567F258FD2D6644101B2
+79B9180D90870431A5FAF9766F171E895F794923D388447006C5CBED3AAA4F12
+B2CEF0DC0A528C0916F3A7776F71B3845DC022538570E98C5F0B723A8805E35D
+CEC5EC23208A37AB34E0E86B60388281D7C2E5AD4CD997FF2DA167D6BA0D3E9E
+BA94F260334A905A553E1531DFB27FE9442F830ECBCDE2BFEFACB527F0F1CEF9
+64B1EBB849DB3A50625608DBBA59CE27C982EFD5E10DA1D300AA95BC1D32364C
+F4219A7DFEE7FC7083B8EE140E31C1653F356FC144A409C0218703695AEB448D
+5AEBD7F3363086BD0321EFC1A50BE47B840D9BEF378249D4299DB21B8978D4A3
+D68475AB1A7CC5CE44A24C085CE5B51321352A2711DD38907C2025C0A68CD9B7
+71676EB27B746E27BA950F148C10DA3CEB24C73C236E33585B89542FBD876762
+C84B345F37F3006CEEE8D15154C9ED3BB7308EF0AF6B199FA3F514BF948619D2
+7B8954FA1829BF0BC4AA422CEAD143623E22F09769B338703FD0BB7FDC23F4EC
+080C0F18E15418294925ED2C06EBC69226C284320423E40B03118D2A40646D6C
+FAC4621BC637F46E11703AFC1ED9C152DF85E109FB91F6F401CAFEE1B2163FA7
+33A000E09CAF559FC7D86044FB897C8BA507B5F67879E492415C5ADA39DB59C1
+AC95B539D04D582183AAF4D528DBD358263C45891E3E08341C864965E9BACCE2
+1820778C9BB895311D26E9F37C5F3424BBE8A2CDA1DDAAB295FED57493037705
+B52611A1C4AFF54E37F9B0E9C6273F4A4C1CC483FC571A0CC6B7F57D3A00008E
+0D0D3DF6B4A8FA14445AECCA5CFF432D44D6E5869ED27B92EB325D9B0422E322
+8EF53F3522893A30F812C0A72F92383FB8B07A471F632124DBCF171AFC86DFAA
+9551693A8847BAA367E1730FB68DD270984839F1790391E8004B53E1ECCCCDB0
+324B13F3B617E4FAB2681E8D93A44C057B3B8ADC62DE8DCF94F301667AC9E4AD
+2FBD9B95FFF09F6C0AD2950C48808FADFD5E2EE03819E70C0FFD7F8385AFFAE6
+C03A9D975D76670D3FAC340EC238ADF7E0E5940D3BD08AE85A7EC3409564BB7B
+6003071FCB2DE6E06B23321EF8EBEA487D626C827C6D43421A9EEFB4BA4EC4EB
+0D41D7C9BF5307CBB32C61FEDADBAB099F9F195F7A851F029AD9C0B87F89F45A
+608FD4EF96797768511114D6A7124277CB6A8A43242EAF009B79C4429126321A
+CEABE50C7EC36544D401DDE120D1DA7EB600D2E3F8F980F69394370A5C8AF2EB
+721B5A071F2AFB06F6B2FED2073BCB9C0BFA196BE7360D8B6908229125FB0CE4
+8AFD63C5C840106F6515534B463F8490D736D87F57845051E8CFECF17BF5278C
+2B8D76C32CD3FA73EAF88689C24126B3AA698DBC568210A3F7F6148E792AEE02
+7EDE67D5833D091AC001EE376898CE6EFD0995ED7E3E2831B7CA2FAB08524FE6
+F003E5EEF625EDBB828D1670D3D897E3ECFF2E72F51ADA4A40568A15D783C5E8
+8B9311F199CE24380D47037CFCA921452777D5A558283825BFD8687F81087E23
+968B7AFD48AD655EECEFEB9AECA9AFE9CAE91113E5CD1D2899FC50BE50C5A1FD
+1DC8A817563A428DF7E78F687D388A95EEB7DD6949CB1C398A3858CEA4C27C48
+75F5F52A567E2E032C62ACE789C2634E1EC682B22506F7E64D14C6CC0FF2F51D
+0BB5E6BE8E60569B9918F21FC79132E571578177996C06CA890A6F94B31A8BAA
+646D0A329EA1DC23D0A4265EEA07BCF312E32C859746E167A91B64934AFF405F
+FEEEB5E8EC9FC5FD828152D821CA5B4A830074E3EFEDA24F5391EA3B9CE11E3A
+7A05D89FE223BEC7726B8049B249285C7E6BE846598948B7C9A4430074D3EB4F
+1554BA21DC368A35BBBF0A01F7843C73B6D93895FF4AFC72145C6A4232FBF422
+5DF6D03C1650767A267A2616F87F095455B57540515D986EA6874EA745D03BBE
+B9B4E545FB9082D7F95BCF2736F5EB3F1C2885DF0BB99A60EC2B5E7C931F46D5
+B8B8A8C980654A970DDF42D01FAAF31BCA98385B187337CA853CD479F689B790
+7527A1BEDBE4795B00DCF019860B7CB5AD0FD076689DA94D66A93FBACC2136BF
+D3C2C9D08E1BC75CEA5B032F05390BA112E34FF2EADA402169087A54BC09C40A
+828C3CFD5EB769CF72B2EC2271AC80B0F805CE7427DD27192AB93AF9DCF10533
+B88234E054AD03899F118AB3B2BFF3213E4AAE06C5927260A0A89BA8BF680343
+B6AF7E5149D63D8C9A43C84966FA56D6BFEEA9D1F71F39FCC65F4F971FFB8575
+05C5A2AD89E6D7825553D50C1CE6AF80BF48276D1CD6A89CF4CC8DC060BABC31
+11D690BF76C4A80B7FF4D581BC851724F51134BFB386921A44CCEB9E367C2355
+E1E692EF0A96E88E7FEA98EC4C50B5ACD62F75D1F7BE1CB0C7CBF3BBB42918AF
+8A3BD75C6C4394183A20CBC61DF6DE9F8A73334E5953FBB97B5E7FB1E8BD8DA0
+E8732D244C8E33BACD0F28A1B8CBAEC3009A06F79A9346BC431ECF08FBA5C444
+D9B245C5C4A431D3D8FCA60017E1DCE1ACE760C91EF55B105ACB849615C7B3FA
+675DFBB473707E2D126EEAE41F7F4236C77CBA4F883DCF416784BF83DA79D653
+DB3FBDBE3757AFBE8A3EC78FFFB6F826CB90A618AC8E431EB33031ED71631A92
+62B557345FED099FE2DD1A65051F08F74B17269FE5D9F055D65718BFCCDAD56D
+A57529C0005B4BA303CD98DD6A48A391C7022E72999EA07FC9291F1FE738015C
+D71E38D70D303CEB37EE148AED938CC2E4680C7A58DE3C54508DC3CF529521AC
+B0528AC8C78A99E1E5416302D9A40592065C7756580D3F00C759772FC2B5429D
+C2F52E008EA5E60CFDE30BF41DC982243209B45224E00699AF5B9EC0F66BBEE1
+1328F202818A0323AFD277E0BED124CB537F0F244A90B889438ACCF303632964
+075410CB671BDBAAF5BED6BF4A55BAEB7C02BA8EBC3DD581EB72B25CCF2E02C5
+AC26F4428733785A3CC7466114E5976F14FB38154D905C362B831EB6F8CF3FD5
+CA854413B5CDE036C7462C826CC60D8CBA4C60C95B524630E2ED00CAB53CE8D2
+6EBC285975C5647A7683E307A7DBD7A269CD42C897E1205D5F2F3F58AA53740A
+DC8AF0F4C205C0FAA30E89E23A9925F435CF1B398A9DE5C0C1CF05300244EC18
+3AEF22F4AE3B8C409558773A3C4A703C1E4C900BF803F03C0CD714B0667DC048
+47D46F8893657CF1DE4C5AC9244830F7DD7D1746E2F86990EF69A6B76824CA56
+453C11EE0283226BC766ADF397C64A7B09331D37B95BE09F81B38CD3A0D0EFF7
+CB3664460391C79A76BBD5746714A99071E4E91402707B010266B2428BD0CC0A
+AAA0ABCBBC3EC36F6946E18039CAA29BE5CD267D0C47F850B23F9189345DD8DC
+D0E8363558F0E80305450B2364627FFE0BB5E4CC87C3CA7A14AA324BC3EE8176
+551A75F2CC4051B07DDB2E310B936A8E24C07ADDDD492D52E721707E0452AB9D
+95B6E96B4EA1DAA77E6EF433011872D91E3EDF839A5EEADD286236365D51FDF2
+239CF7DA5B437A75C7E2209D0C27F0FD1B60171D9B9BCA83073461021DFFB814
+914E581DA3C3F1303BFBF0445C4926FA6462B45FF62ED7357C4F529A87F83AB3
+8BBD6562EAA9E1AB8FCD15C3F9D48A0B9B23BDC155B260B9B81EC4FB491ACDBE
+FA5DF31B3C68CC7DA447430D71F8827091D574D9376A29748EF62F1413F9A47D
+B7459807ED91141BDC10A82AE4405C0A890BB996B6B58F9ABCCAACF6029030A6
+0729430DA6829862C3530CB08B0515D52158DCE3284168EFE9F2F55F9F7ED586
+54C722A229B741FD7F7515671C52898EC270D9BB2788BB8D999F697C3F89741D
+9223DCB8E1C60B4286EDF121C8562B99EF56A352EF812BA6CC2B268E2E8F667C
+9A81153DE6037A689B7AB794E9A7AF7E720A7FBA7660E209685275E7C6960057
+0E22CAAE4E89EE6355C376CFFFF7542EE2D58D1DBCC66A8813A1199A8C9C439A
+BC13D1C13B98BFC66B49AF9AF28904ACE9A1109FA7760B56DB2BFB5E034937B7
+7C3041B2FDC5F30370BC9B34AA23749EE4932E811AC0E56E83487403582C345B
+E6F7398E5F1D21EACF506DEB734E59675A865D9D43B0C9EB452AF00CB883A0A3
+F5E107EDF40487D55F2E7B1C6EC7222DAB7D77AC7C8046B063B5E32BA2776873
+36D1013D316447BE227CD81EFEB689A8B6693E03FF8919E90AF7E41A077194C9
+933A95DAB43B07E909032722E75F7E6015C1B4AD78C2614573973D032D7034A4
+3C67A27C3F27A74D96699BB5DA67DA5C2BC29DDF5E2F70383739973FCE7398CD
+64ACADB5A7CA15F2B581E190250648D675EFD4145B7F60B344D5F9BF8486EC1A
+5B60BD8760C5AA3C6A26D3F676F9CE0FB8644F158F8D76F59569F967DF7CECD6
+84ADE877DAF26D55E2AE938114AFA8E908CFF3FC6691CD27793872359841BC36
+7F6EE59A5A870E299BA40F939F0751B0D3D246EE9C664FB32D73489EBDF45B76
+EA49A4092ACEF4B6E58B696AC353A6E5E3414B77BA499288F8064EA46D4716F5
+A9EAA880DBCFA7B41E647DC96443EFDDB7FEC657907487AF992F0C5A35FDC37A
+3164899AEF5DE6DB27423511B07682C2C691A32666C6B0BC654C3F792C96AC3B
+DDBD34802A357C681FD8ED74C4D3BB3B88043C3C3E78EE02733D9AE71CC80EB0
+7749CA9A8DA9DEF073C92865D79899FD59FB82C2FC287B23DC8DA2044CA9F4DD
+0AAC485BEC548AE9A3F246C031A32AAAE69A64BCC3CED228C1BFD98C988200B3
+2D16888A9FE1B24C53779259B5EEA8DEBB0E4DF065101F1573BC8AC4FF9D7002
+5335BAEED966D827CD0A965C0D5B3C463D4D20539723353E5A57FE60C8F26814
+E34391409907DA2A47CE3E22505B6F625A0EAFCEF830B1076546742F1D838426
+E411D26027046E49ED64CCB386858141F8316265D8FDB2D25F85DA1FDAD1BB82
+128AD8932CADF83486E05BFA7E6D8613E92A71CFF0347BCC6265283D37B5CD96
+A91BE08CC1469477C4A1B4368EDB556D12D442D1A57F99220CC93F531D62A94A
+034733AA97D8528E6925C9ED631B384816B5F1DB594095AA76142125D8958C58
+1C848A93838C0688748C64E13A6EF8567B268EDE65B8894012BE414D2E2597EF
+CA3831D290DDCC26A77D3580D85196414DD60E0F4ABC0B09A12C69DE410A8347
+72E34E2F8BB11AE9F3F9F3E2D068F17A619B7E106CE3FDE98407EDFEBDCF9F71
+4A5332857DAC85F98BF966437278D296AB30425AB88746CBB4413501E398A8FC
+37E8EEB3702F9048EFBA0B3C2079DBC91C34EA28A6E22EC74408A8C5917D2191
+5522FB5BFAD1AB40B2C5AC75319A10A1CBA796D31449375B753288DA309F93D9
+30BDCFF67694A23B45BDDDC977824C3ED9381BDEE42FE68B9EA887C55225BFEF
+EFF2374A3F85E19981F3644585899A9E51E3C03AAFC3842A344A6BCAD2987AEB
+A681DD8365BA3A3404C1EDF816C3E81C8E7B10B47C192E5DB3A0B062973F18D4
+0863EBBB4E5A5C4BED7B3FE8FA1EB903A32BDACF6205810BE636CDB00CFE2A9E
+725A39C6E87B76D34F1891C1A47531725DD7894AF0630672C8341DD107983F3C
+CF49A92C3DA10F7AFF5F11E9B2877E75650B2BDCF7D8A0FB87D873F20C1A1C68
+4DBFA4340AE04DE59E64FB2037DDABC076464368BE1571FD2466F99D1AE32FCA
+1E7F115ADCB167EAA4AB07D2E7308E7B0B63B3B9555E58EF41A3D9B1917A5138
+F48858A9E409B1190DEACCF696B37CB94DB891135D7B19E447A38D395BF678D0
+E5C35A0B5BB682A3A858E8E3674E16667938634A8CCC1CDA04ADA5B284C5DC11
+D20AAC0974192205DF0364E37811129BA0DCE980CFB32069D39FB4EA07E326E6
+9CD44E50B7DC1A0D3E353186BD9B829BEDD0321E13C1F41183973700ED89BA24
+4B38CA7D51761A25B4F69B1C6CBE8FB5C87B6E49863DA3D76805781F152C6F67
+EDD82D284A634C80FEE84DCFF296213D29D68217E29F35B9E97467CBA06623CD
+8735DCF2664E1A05A3F9FD3DF0CC6D313C959A34BE15CF88F7F4C571B9625404
+D62B3DA9D4186C6A71703885D9170081783C63138A8A3D4A0944BAF33E736696
+5AC0D90488FEC62F51C855DD6CAF92986E6346F527986F3BFF91FAE3032E291A
+6B951B248C48F7406C91B50580F25566E82CF9E36F25B74DF8377B5712F26B6E
+CF6AD6CB96CF211721F60EDBE5320ACC60F57B195D2A3B60689D4B04AD464710
+937997528D8CEBE156E6D0EC834F3A26E95B5EEDCFDC3E9C2B97284E5B3FDCAD
+162037BC9E8E2CCAD3DB43299B97648DC1138D48A0DFAD179374D3C39169AC9C
+95DAA8ADCFDE9ABBB2FABDAF927DB1DABDDCA87898FAF71D77DE55926F16B067
+1A90DB7B8B958CE2AAD209691AA0B3B0E8E7F6C8DB3C2B101043700CD90392CD
+6AB98B4FDDEAC3870D404DE018DEE40207033E668F11AB81874A6064C90E0AEC
+E76F94295A847477A19CD0CDF518EC959015DC7854170F7E1E61E88380DBC2BD
+96F1C423E033F22895A6583CCF475679824BEF417F170BA7000CA924F966BE78
+EC3FAC3F31E67392732EC19D13F3126F811ACF0E79AD5F4038F52E078F9B9A0D
+8D07072CE21FA40017886408DBB95B60BA72425708EEA540432BF96D547DC17E
+FA87B1268ED6FF1BECB28E0441916A9666A8FBDF1A3DAB1B004BF77C5CBFE15D
+11DD9F603FA5270DEE57928E6399ACEA26BA0C9A4C428DCBDCB65DDD68C11E5F
+74505DD8E6FDA3635D2DCA48D20004A26B8DED6DC011464189A8A37039F1E7F5
+10B51BC445D9DBE416F066C9D05BC88DD18F0838076C8EED239C3E1D51791DD3
+1A7BA7AD51F1C892AFEE3E200103AE7896D19FA4BAA85B6D6312F3E8F214757C
+EC01CE15C71913B9FF165F74C533A25C0DDC1EFE012B8C2EF521F1CAFFCE22CC
+95D793A74068AC9E64777CD45E7F92FBF54B9BF6A3D344D23B56394960520616
+BA04094BDD6A458A6A844092A98A6746140F2BF6139B9FD3865013963446C2FF
+63AD84CFD285AB125421C812FD585ABB3F5B187DD792D30C75CA62A99A25029A
+A8FF971220139A3800DB70C622DD48618D3E1B84AE6AD1254F848B58A09FD5A4
+825DA94482362F5047EC1FE372E706AF98FAB6E1FC4FFD30EDB491FCB473ACC2
+2A6C5AF45441C6A4B2BDE198471F85E283D223B62A8093A6A89A8708D02917B2
+3F8C3E9E546BA098D317458D86E30032A6C74F158B8B60D2D9452CE85A9A88D8
+0DA8F40998A4C8A874E12304AFBBEA93EDF7037197BD9613A8BB0316749A7637
+7A2AABB5A5CF3EB30CE5824B9F533787D060A6561553E002EF64D830D78C19F4
+A481E0A880C58B1A459C19C29E00EE3CD7B2D6C6D7D936198B7032EFE0407906
+B05C0A9B6566D3A147A2C7B611F8E79995830488D3F62439F4402A3D8B0B103F
+87339B269EFD5B72C7A293700BFE1091595A26509418F042557BDADE01FE4ECE
+85D291F9041AA2ED0366A5034E043582038DFEE00D342345FE4EAC7B421F424B
+71624BDD300E53F6C8CA8D7127980D9E9C4AFB4FB179C47A76A2F4DF4997C490
+54AB71DA59B024474A94725750E1ACA9EB5296CCE33BA81228AD64C4E4AD08E8
+07CFD29FBACAD037DF40DFBED586DDF003CD7615704EC55287909F5BB758F5DA
+ED6E40BBEA1BB5A45EDC7B1A7E8CDDFB2CA876D9A4F71B40C6F1BE896E21C03D
+3BC4815E39E69C632194C250BEDF724FD91F3968623B221FCAB14AA86A5C6C88
+A5F9D49FD7032AB592BA177C67CA80796026305FE0EDEAAD6A8B1B8D7E5DBFA1
+46FFD811B2A06A635AD73A9344BA38603E1A09A5901C1F40AB81D5369EE6F7A1
+8EF642156DC4E51385D44C89BAA801CDA6F19A00DC734C77147520CEE7DD6EC2
+C0224A70B771EED8BD26BCCD2C86929D2FC5DC8BABB8EC305F8280D49DF17A1F
+48A55A31403FFE5A08BEC6AC49B6AD039DD2CCEFBDEDA0EAD950FA19791F4E37
+DF9696F26971701F5AB3F30AA92810158508F3F4319FBF9BB8D49AD0F5DD1D95
+64DA1EC791A11A8033822810C907728C08499DB1FB8384C957251AED05E2E1AE
+F88A07EE76CB5A50E7529A7A31390527C88390079585B67D4B9430CC3FCA397E
+D519D176E460EE4C90867F867E0899FF595BF9ADA4AA15323E057D29C929F3B5
+D1DB045EBE334276D34A96B2FE42D79BAD4110F826E96A92F4BECED0BC64DD18
+923FEC82E472DBD31B3AEE413F9E92E462B5F48420286548099788C2D687C47C
+A61A6C014D0F3D99BA6FC9D4BE9AF83064CEE7AED32F420A6A9B7D09A151E906
+101C55EB09A2E8CE38B5877B79F583228643FED35966B0904BDB4988675F9E54
+1C1A281591D342A66EBA9A708F6080C2EA7730DEAAD686C32BAA63FCC0E0AC17
+7C59A36566FDF49451F5AB092C755364E8A28736FD41E1F55F03C1747F40510F
+0F9320EAFA8D1B77DD1B1D2E23463DE8BAE7D3ECF25130EB01C389433F542730
+F035B2BCE879F15A6214862307BA6CB37F85FC83FE44A834DCB8C690F6E77F28
+3E8D384B6FFF59F734509709EDB67A9C3E62879215D733D417048AEE575D8379
+909F4C4A026F8D44B7C78543A468B64E5EB786DC800B049D95299F98077AC89D
+6964BD2A6093566EAED1FE939E4FDD59D026AF9CD9AF3E97F388840408A16880
+EE106E4173AD245EC69A05935167478D9EE1162E5D00FBEE9CB54D6FDE20D8C4
+47843F49A92EF3BC7A2AC6C359B0F7F7C09B935500C9F76CA274865935C1CFC3
+AFF4078825858D4356941096DEBC186C92166F393462FEBEDFE205EF802E4B01
+135182DB9FA2F54FB5748C2552D775437177FB72479F0769051B531D31A1FFE4
+59DE9FFC01BE24DECEAD0F5222F97DAC33B07ACF4127D8D28C1921C008AF4B6D
+2EDCF3901D8A1DDEE446BAA858FF540DF87B37906B9116FCCA5B6E3DDBEA6720
+AA9598CBC262357E097969493A829B330C611FE16B69417ABEE796A91291514B
+BD3BB47C656879CB3A7D3A0503E23657D182B11FB17DB1C222160E513EE6DFB1
+EBBDBB7AABAB57126CAEB8EC07811BC892AA35216C9D37458082D7EABA580F86
+962408D6CC608718F9371B8FD13B517C8BAFDBB797104956C588E3C7E26F39CF
+3C3A0B6F51E82BD1A2DDE2A6A619B9B1739F9F14F41A6A6A704CB7ACE04921BF
+0DB785DCED7AF39CE226AA502166B94769698D4F5FA5F7BC414578BA436515C3
+8E7A8F72208003C18A2D0616395663CF9E626D5356242577F9B16BACBD81281B
+357933282219D668E186FCF837BAABA9B0EAD6303EE6837E625DBE59EAC53023
+7C3CEC4417B1256DB9C5621802CC83A6B6BFCDE49E87E8F499AE15AB0F4305AF
+5D57EE8BA531C2B83B860B7D294C2393E3B061CA646F770CDA2C6F28640C28EC
+0EF962FF89C25CA26FBD335658D6C14A7338F28C9086D635505183BCC73ACEE4
+8593FA88822BACFBA56EA7F7DD5041F23EE0F2BBB374801E18F78E16185A3AED
+EB53737F7BA4C4918FD55185918614C5B184834E5D64FEDBF45AE1E92AB4DB79
+DE00975F48FEA3A98B4BF6ABAB35977CD4C9F0A455FEB66F224D60E8761B88B2
+A2A3F9086C9167873B60992F3359F04DEE49E88E020D2BF21559CEB5983AD2D4
+582A9E00B4B481F8D32F457123CC8013AF9E59BE6EACD53BDEE3BECFB89FC2A3
+5E57A796CCDEB7CE3A9637EBFFCB49484BFC6650482D599B41B4B5C0FE3F661E
+AEFF07967AB97E006D1F2C7A445FAAE593244F0A3BE578410B66731739B0F654
+7A7BE6096DE5ABEDDF8BF34A57843746DDAF74CCBD3F3EE1A2D8FEE169247A69
+16AFE1DCE367A73F0843013D4925B9DCDA86764D2048170469C61541842923E4
+59251247CFBD67AA73E88F9679A6D7190E0E268935E9C552ACD3860D3428B1D2
+34E075DC23A6F23B8DAC90457886897EA1C492C703220706DCED6C0E5ED26734
+781AA18D070574855395CA66D956CC042D8AA8CF09038EF718A12AD5D0B5912B
+442DCAC17F7AAAF349DBDAA7CDE05C88E02D3F832F1D17043ED66DAA7A2CD616
+D9CA01DD0B921B6843EC6EDB61610A3A14E733D6910F9448C3AB3F7274485C67
+CB57740F21EDAB816863A6CCFEF043950D346FA1336E54673C2ED8A26FC3D12E
+CAAAB83AFE8A632DA294CC6E578DA6B7AD1E464E94FD370D025380A559A9F4AF
+6BFBA9064DE3BE973E37EF65C911C47FDE3ACBFBF4A2F29E65C1FB67A2A35484
+FEEDD79300F34E8089C18301788D8AA70FA15AAFDDE9D4229F9D58DA1D1FD458
+FE29DCA5BDE6F2250164E69EF665A56C8F43346D15D01CE7A8005BA57EF3C78B
+6F94B8E4FC7C8865CF650B1B74C9033054F9ED30E20E7640FE0D97F20307E04F
+0595428A9E1B571A065E1D9374C30342723E79918F0E9703B634445B29CB5B3E
+B9615C32C88D36B1849B4AAB237D9E6B3E34A8807B74D884139796D7883CED3A
+C41E4B7A1B7C6AEFA919FF1E7D3C808E59FCDA04055487A64555516FBE49FD59
+52D5D690348E192B776400E689559D1416FA6B0E3DE6842A805BC347FE1EAFF2
+9B4357D10B7F55E718952B4EB6B7D7DB2138F37F1B1FC60A0080B125A16392C5
+0C2A5D3617F8D775F60227DACB75B25E8B5D2232AB9164F19BC85D344ADBFDF7
+1F4EA8910C40CBBB7DA5675470E098627F00B16CA136A8A7CD64A29719E808EB
+3D3D72FE0EFC051FDD53F15B7D56D6475295A8862764EF6E8BE2030DC68552F7
+A70BA60C1E9167DEA89527C8725831674E45ABA86251DED3B6294423F7DAFFCA
+114FB878F7DC487FE561348C7F4370AF2C2AFD5E9D5024AC4EE3D51108872142
+DA7172C89361784BC79F7ADEC9348060609DC5FD8B6980D149881E3A1075BF5D
+786E63AD7E6E30EA00C2B54347C81EF30FBB11F6FF1DB771672DE13919307C81
+83AFEBC8B54C1A8632B92ADFD511E4774DF2659FA914DFBAA9AE672634ED7782
+59598801CD5FD773183C148A9BE270CA5CA2C8D3A2A01DDB3390A517F8935F63
+E0860EBB41E1EE00FEAFECA2112EFAB11F201D48E9D80B6835918B2CF7CF04E2
+74493CB23FEF8C7B77644963D4F5602960A13984B246D3B3544D256EFFDD82D1
+6AC36A3C7AFEA3466137424CC42BE5720CC9CF7EFE4EF51C545C416C9295A569
+D3A9B5A67F287D23D4BA80F9940F82701ED884B239E358687CC3F8F45EF71906
+B223E576642BDF3D2CAA97EED673B9E66C7987B1C5B015A85467257FEDEC78D4
+68A9C339FBA31BD07DB3E472B0A6291543257B02D98B5136295B415BEA0DF0AA
+ACA126EF6DBBB56AD23A5B69D3AC96F882389E1EDAB92691B96E54F8175DFAF8
+91A61AD5B0832FA8317D480B652B2F2502089CCB1BD96892E4B43BD6E674E9F2
+935E0AFCF2371E5F84D238BFCF4533BF53164F0DAA127A60BCFB5204D1F06E40
+2BAE6EE51D0114BDCD18C26EE44EFD3E98B4D8053AB1688876F55DF6FF74BD26
+F5B611CA27E7ED62626EA3205E858197E1EB9D1D702F4BD9C99B4D3807E694AC
+7DE0FFD7DCFDA0931F8757CFBA4CB67F93A1099BF83BFF334646FBD93F127C65
+3C5A7C47BC26F55F82B64A72FEA98AA012083C58A4194F82F2B6BD91B2088816
+A644CCA9444147E6CCAC6E4D25A8AD6379584161797108475815030349E3CE05
+2721450D5E6C732D37FA41480C959AC3A1F1323A62F54DCB762BC237298A44CE
+6BA07092FD1E0D7192783901DB92FD3C1B2ADF1A5EBB22CC08728687B7418FCB
+04105201978855998458F6944A986F88659B125D349EFFDD131161E32D184C0C
+40B52A57D49367D114B1B51F4612D74D6CE24281065906EDBB408AD2AA75F648
+B06D710D25AA0DAA0DDC42656C586AB1EDE45A6E01F624D2600C3EB7D326E075
+C837204DDC9375AB5B187FD4FF1B37503BCEF2B61EDCE8394350A296C71DFDF8
+997AC20367B9A1721923D28FE78609FA56408DCFBD5E25CB4EDCE2EB440BD629
+5544E28FAF352546E0CFEE350152A077B7AD5B8FC57A314508018272EAA04FEA
+AF6281E0329994439074413964E1F6AFE629F15186FF547E7B6A5424CD055678
+1DBE58F704984B9C56A4BC99C3FF2DED8BC431FB556754A65B5187FB67FF0A6B
+9E086DF05EFD1C88E6F06173F544AFFD6584DCDD44257D57623BADCC52F0A1CD
+CEB062C5CAA3882B5CE1414880DD1DD8DF5F8F530C4E76F398315A69B5DF6FFC
+D844632108E32B6B7737C00211257AA647BB5769C566ADAFD68CD66E3EBE8B84
+A36957E451646B718EB245EFDBC6078B4C383ADBB048A870BEC5A63108F7ECFA
+2AB7BA68BB666813C88DC88FA866BFC5FA53D26583346C8F342FA8F0CE093F98
+223856F44B51BECBCE7F8CCFF890CAEDDF8DE2C9ADC8C4FE22D545D22AF7B370
+ECADA09B6F210B2C8EEC3D9327C94920ADE0D29C6083847A7303602D6481BB05
+B6C4B94FFDFF04E664C3ED4DB0A6098260782AC135F86BF252A4ED8338C8FEC0
+A69B14DD48C2D578C44613C2B23A8DD9C6DC373286A2034B29F532DD66FF18E2
+D6DD63C0F9C9C4DA2C2E9AF9C498B5905D07E54B1F19524248600A4694D04932
+E3664A27253B9462AC373AE5BE600BE58F762A3D1E2BD14001A1120975DAB065
+D322E54B62B02BD4B81AA3782702DDA8E3DFB24C46AB4C150542BE2DBB78F053
+334550C08F87D801E57E7573B51822DD486B6D83ADDA22C7B6131CECDA0FCFA3
+A556E05384186E526BAA6C192F9C15B7156B87681BE5D7360F94A870B0C5A272
+C0665EA2EE34E4EA492E184837023A71BF70CDC88F30D18113C80CD32E22FCF2
+0A214AE062B1FD8ABC37FB3F3BC38343BF21467AFB6CD56EA4456EE6801C48CE
+916EF395BAC561027CE57A2A66984BE33E1021FC36F56E2747E96649C8CDAE3D
+001EEE1C2B2527F281355957F9A5C5EA10B585407598BBED15A3F6A6C3F50070
+2C06A167E6BC7AD760C7883222A1BA53FF315F82F45FBE046D287021E4BAD14B
+2A9A42B47BE652908335266EE18BD3F02BF689B49CB2D6AB9AD29713A80052EE
+190F676A845352F160E379F2D69B8BD4D309E61CEACC54660C33DE081216F260
+2A852601C0154F45632DFEA66AFE77AF21247B73542C93C23A265375234F600C
+095CD46EE88B2632F0EF5FC360B0F510F00FAAE57B6D624E9A0F3AD5D45B8BD6
+943F4D97C3B6D457848F2143A0D23A421721D1CDB9C0B280044181787B73F6D9
+A87811D2032B48B4DB3E0141B406EC6ACE226962BB1CC627A22A49CDA3B42499
+7D2B9F45573BE416C21747E816ED500B0BA895C98A3BA2E08EEB2BE7F2F21D02
+2C3237CB51D2E18F8D72BB3A317B39D84A08953AA2522A86AB0DD3DACF9019FB
+E9E8E20D9D58CA698A0D49A3A8F08C8402D59A1F7A1729BD79865F2B4611C22E
+574291E2731485F1FF16A615F553EC04188908B448805A0ECA3899A3A9EF51AC
+62F282A10D48847F44F3C1B618C937CDD787BF1FC7EB680FCF69F953E9DD3809
+61C449957A6F56CAA7B4FC2A0DC497D64A4652689067509774641CF3B67A829D
+EC3E97C3C73BCDB12AD27B117ADD0041C66CE88EE44E5F524488B51A52C6F5F3
+C2F21748BA0D3FD05611799B52E5925E07DA2A2DE1D35C1C5C59123C888C7F6B
+7AF8A7F200A454D028D0DF179EDC98C00EC6716D7D0DDB35F4DAA7292ED01483
+0BA2A3F63DBF7079DA720CAB72FC5D6BC7DACA69EDE9DBC061C7342DB69FC031
+13A25B7B99198D360F9D1B42D28C12F8D87AFC240EB5A8936F5F4058CE145ED0
+7834B8DE1B8D9853161CE2B18A62F7FEDCB9853CDEA4FF3EA2254F8B871A214E
+73A88EF9EC290531C8ED1BAD2D1BF60166845449644C4F5A584E9745B5AC69B6
+A76B45F69490A15778E19EE02809349AFF7DDA897E9ACC4D283BB6C62603E4AB
+23C0F89FA16484F06185189B3ADBAC83AFA525A739261E6C4920CC52F3725A90
+920E04466752A2A2E485E389987BF4FCDD804BC6C6E40F658B87456622865884
+B9680BFBA53DE7093C2D6D65D48BE40BA1028F5146218D93CACAE9B772074563
+EC3D62051E4B8AF97E3925C24E65C82C9965CF99A7A5A5C0615B615D40574B1E
+56093A0C836A4A0354E19A17C1BFC6B3C4E513CBC68DAAE0C01ECA065F8F8E40
+DB9306E0C5C744B0683B4A1A5BA15CD3238EC0696C962290578C6F3542D08F98
+176DBE2D0DF5FA6FEF7EB4A9A52EE0CEBB20A5077B51C2D306E697CD5F33C336
+3C8F79D0D29477105E3410D908901D34DC12537847908DB56D9D1B55A36C3319
+CE9ADE2F682D94B31959373128A99F84EA50434B2B1B26E44E7E0F8BE3189BD6
+E46A1746253D5540D7B08E634D742A5D4DA369F8A027E8E2C9C1252A851DF59E
+4F8A74E0E63BB0415EBA33718EB897A743B008AC396C45EEB5CF23EB9986BED9
+252F845B933FB11C5AC4DB3ADF0F08415F33640B419C495A91AE4BD3577B2B6A
+FF8EE5A853BABADCA9BC47579E12685D86D93EE74F7CD53D788C622F315E6468
+FCD8C06A147A6E99064C43DB397B1ABEBDE2DE3B9C54F7F4FC2A6B9533F5A377
+7772430C9C0FB14E1CD6908398FE573E7A537A194798BC644510069AA7481E6C
+44BE8211F9EA3B14DC3EB9EFC4AAFE88A803F236962B87BEE8719C4EB467D30E
+D32CD99BB953F58DC8E388DBE744F9DEF36728FD3B77F0D9D59AF769905203D4
+4ADC4AF9F868B8A431C57276F9EFB9F489E7D2CC4959DDB513F6FA432D97E065
+634CF1EA079C2C9B5540FE039B1F99FC49053F1EDA30B3CF2B3DA396D74DF243
+54FD1D0CAF981B02A2C0BEC760E69FA81C55A51CD5A07B7D6AEA1AED63DE3E54
+745E760F16F057FEC5040D49623D8B6B43FCB62B40BA84E8545239CFE1AE43AB
+AE5F30DF4B268EDB01855321D32768067D1B3C3025C3687C01C5E62B4B003772
+264194EF32172ADBD87A80FA7FBB1E396D6B70618CE10407EE95A63240BC989F
+DB43A42AACA3067BAD458C169A78FB07959112C5715BE13C3ED7FCFC747B2F5C
+832396D548A2DD95640953CAC24C1EFD41C668E09541D6EF024A438E9F4840F0
+FB478AE1118443EF3B0D27A9348D8BC24B50B24C2B615A4FFD89FE96E9A61D68
+A9AAF0B4C4CDBED614EEFDF44913DF732BB3217D0186BCB3960D8FAE6B0B2330
+5AA1A0F57EE589D5560ADC4026C4E1FAD9ADEB219E63559B6534F9180F4C174D
+BAC11C615727701BD8C5E82E58AC7C4803F5F390E8E0B6525323B3E4307A32E8
+2E7A04DCBD6426D90AB9C1312FE26DB4EFFEBC03C5286633288E67C3C5C01ED7
+B868097A31F32B211AAE38E1532CAF30CB7D590CC198A250FAFB620CF931CE5A
+58647597D8215D0473932BB59F9827B988A188E4239F428C43793EB04B373262
+E02126B915287589564D9093E56AA4952A8CEE60913BE32E2E9DA087A83273FB
+906A2520943C51AC71DF2C9996C6DB09F61793E428F62DD8C28F346D620BAEC8
+AF15C901DA1AD8B8CB87BAE796DE6E479CB989F56DEED68D451D5B3EE1620934
+102CE76C089B04B3AA9107B1FD84E1CBEEE0E1C6AB9546D317E98DF24C1E5940
+53259ED5693C3E9708CFD99123444EB52A38B500F2EF227687F4578A2BB026F8
+2D370CA759D639866E4DBCB4F95F3655E2E7F639F64891DB887F5C683A15311D
+7571278B43F412D0E6470F36776B54D17F1DC69304A95ADF50D0CA956E572CEA
+63009B822977A295B2F9B94C43AA67D6740A868FEB92045E7B776702913FE952
+8BF767E4B50A326C32F5FB0A9F67DE1BA0D543524112F4FCD3F5177D84BB7BCF
+D5BF6DD61C9F9B49B5FA7ECB39D9622E1BA69BAD968E6A2D6B907D2AE3E06215
+51FE793E5A53F43EEAF676B910C93B928005CE33D70B286BE668560275E2599D
+5A37780159781910D2A64AE523D7D40B1A5CB97D78F02C489879B2C61FD9FD11
+14C70C08CDD0941CBE83F1AC479D0A30F5F0AB24F248615643EDD27FE13D4114
+054FB7165D9E5CA119CD188D7F0B3BFB29264F1210A371CEBAB955F2051E3FA1
+80F3BD16EBDCA1260330FF4063C0837828BCF1E7989A9C6FC464C70BB5869A54
+B9C501DD46EBFD62B28EE2224C22944A35E563BB0239552987A933564AF64E42
+79A67777F6DEB040B35114F32948D8A6A4B520ADFA9A341BFC2672E50A51479B
+8EFA5667108A9E67500372C96A1B15DB8F31AF386D1AF4F4CD4F33E25C58A30A
+5015C8C2FF49110DC4DDAD677C12D7FDDB9CBCD6FF6EDA0B44629D70D2DCA454
+307B774C25E0FF5C64F53344A294C59A371D4CD6C1039DB470A5D80C8DB36239
+D0F547AB5788AB3F04ED7824D50A50BB04C9C21287D579B2B06A377BB831A688
+16164290F9E02FD1792AE16410DD06449CD7B6A7F40324C7481BDF55F6A05E97
+95B0FFA372369D8A7F2B6123855D6DF2CCAE6CC04CBE8502E149A67BD4CBC8F7
+FE9F1944DEA57561CDF8344A5668797C29B9D8BD452D2D6C470AAB7257FD8C6A
+AB7A489A2E5FC9D109F07C8737285C51B8BB33B0337D03C565EDD84FEF1B4F87
+BC178FE9B8B886E46898E20602BCD952E062EEFF9DCABE57A6FB90601BE22D98
+73635DCD84A9841687FCE87B215F2853AEE5C89ADC684D3B7C0A504F06137B52
+3300B7F87E3513257C6E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+TeXDict begin 55380996 39158280 1000 600 600 (refcard.dvi)
+@start /Fa 134[30 121[{ TeXbbad153fEncoding ReEncodeFont }1
+58.1154 /CMSY7 rf /Fb 134[41 47 9[50 11[36 44 34[65 1[65
+60[{ TeXaae443f0Encoding ReEncodeFont }7 83.022 /CMMI10
+rf /Fc 129[44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 2[44 2[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 44 44 44 44 33[{ TeX09fbbfacEncoding ReEncodeFont }90
+83.022 /CMTT10 rf /Fd 149[23 2[42 42 52[83 15[83 11[65
+65 20[{ TeXbbad153fEncoding ReEncodeFont }7 83.022 /CMSY10
+rf /Fe 133[42 50 1[69 50 53 37 38 39 1[53 48 53 80 27
+2[27 53 48 29 44 53 42 1[46 3[27 1[27 58 72 72 99 72
+73 66 53 72 1[65 72 75 91 57 75 49 36 75 75 60 63 73
+69 68 72 5[27 11[48 5[37 37 27[53 12[{
+ TeXf7b6d320Encoding ReEncodeFont }53 83.022 /CMBX10
+rf /Ff 134[44 44 60 44 46 32 33 33 1[46 42 46 69 23 2[23
+46 42 25 37 46 37 46 42 13[46 6[52 8[60 3[39 4[23 7[42
+42 2[23 28 45[{ TeXf7b6d320Encoding ReEncodeFont }31
+83.022 /CMSL10 rf /Fg 134[51 51 2[51 49 38 50 1[46 53
+51 62 43 2[25 1[53 1[46 52 49 48 51 16[62 70 6[68 71
+3[65 11[46 46 46 46 46 46 46 49[{ TeX0ef0afcaEncoding ReEncodeFont }30
+83.022 /CMCSC10 rf /Fh 133[37 44 44 60 44 46 32 33 33
+44 46 42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 23
+2[23 1[23 51 62 62 85 62 62 60 46 61 65 57 65 62 76 52
+65 43 30 62 65 54 57 63 60 59 62 3[65 1[23 23 42 42 42
+42 42 42 42 42 42 42 42 23 28 23 65 1[32 32 23 1[69 3[23
+18[69 46 46 48 11[{ TeXf7b6d320Encoding ReEncodeFont }82
+83.022 /CMR10 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+ @landscape end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin @landscape 1 0 bop -390 -157 a Fh(P)n(age)26
+b(1)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 163 a Fg(1)92 b(Constr)n(ucts)-390
+346 y Ff(List)29 b Fh(is)f(an)n(y)f(sequence)g(of)g(commands)g
+(separated)g(b)n(y)h Fe(;)f Fh(or)-390 445 y Fe(newline)p
+Fh(,)f(whic)n(h)i(are)e(alw)n(a)n(ys)g(in)n(terc)n(hangeable.)-307
+678 y Fe(if)36 b Ff(list)r Fh(;)28 b Fe(then)g Ff(list)-307
+777 y Fh([)g Fe(elif)35 b Ff(list)r Fh(;)28 b Fe(then)g
+Ff(list)h Fh(])f(.)14 b(.)g(.)-307 877 y([)28 b Fe(else)e
+Ff(list)k Fh(])-307 977 y Fe(\014)-307 1143 y(for)e Ff(name)k
+Fh([)c Fe(in)f Ff(w)n(ord)f(.)14 b(.)g(.)51 b Fh(])-307
+1242 y Fe(do)27 b Ff(list)-307 1342 y Fe(done)-307 1475
+y(for)h Ff(name)k Fe(in)27 b Ff(w)n(ord)g(.)14 b(.)f(.)h
+Fh(;)28 b Fd(f)f Fh(list)h Fd(g)-307 1608 y Fe(foreac)m(h)h
+Ff(name)j Fe(\()p Ff(w)n(ord)27 b(.)13 b(.)h(.)g Fe(\))1925
+346 y Ff(list)1925 445 y Fe(end)1925 599 y(while)27 b
+Ff(list)r Fh(;)h Fe(do)f Ff(list)r Fh(;)h Fe(done)1925
+725 y(un)m(til)g Ff(list)r Fh(;)f Fe(do)h Ff(list)r Fh(;)g
+Fe(done)1925 878 y(rep)s(eat)g Ff(w)n(ord)s Fh(;)f Fe(do)g
+Ff(list)r Fh(;)h Fe(done)1925 1005 y(rep)s(eat)g Ff(w)n(ord)i(sublist)
+1925 1158 y Fe(case)e Ff(w)n(ord)i Fe(in)1925 1257 y
+Fh([)e Ff(pattern)g Fe(\))f Ff(list)j Fh(;;)e(])g(.)13
+b(.)h(.)1925 1357 y Fe(esac)1925 1483 y(case)28 b Ff(w)n(ord)i
+Fd(f)d Fh([)h Ff(pattern)f Fe(\))h Ff(list)i Fh(;;)e(])f(.)14
+b(.)g(.)g Fd(g)1925 1637 y Fe(select)27 b Ff(name)32
+b Fh([)c Fe(in)f Ff(w)n(ord)j Fh(.)14 b(.)g(.)g(];)28
+b Fe(do)f Ff(list)r Fh(;)h(done)3950 346 y Ff(Subshell:)43
+b Fe(\()28 b Ff(list)i Fe(\))3950 510 y Ff(Curren)n(t)d(shell:)43
+b Fd(f)27 b Ff(list)i Fd(g)4158 673 y Fe(function)f Ff(w)n(ord)h
+Fh([)f Fe(\(\))g Fh(])g(.)14 b(.)g(.)f Fd(f)28 b Ff(list)h
+Fd(g)4158 805 y Ff(w)n(ord)h Fh(.)13 b(.)h(.)g Fe(\(\))28
+b Fd(f)f Fh(list)h Fd(g)4158 937 y Ff(w)n(ord)i Fh(.)13
+b(.)h(.)g Fe(\(\))28 b Ff(sublist)4158 1101 y Fe(time)e
+Fh([)i Ff(pip)r(eline)33 b Fh(])3950 1265 y Ff(Condition:)43
+b Fe([)o([)27 b Ff(exp)j Fe(]])4075 1442 y Fh(Other)d(constructs)g(dep)
+r(end)h(on)f(the)h(options)4075 1542 y Fe(NO)p 4228 1542
+29 4 v 34 w(SHOR)-8 b(T)p 4592 1542 V 34 w(LOOPS)27 b
+Fh(and)h Fe(CSH)p 5331 1542 V 34 w(JUNKIE)p 5736 1542
+V 35 w(LOOPS)4075 1641 y Fh(and)f(should)h(b)r(e)g(a)n(v)n(oided)e(in)i
+(scripts.)-390 1857 y Fg(2)92 b(Globbing)-390 1957 y
+Fh(See)28 b(also)e(options)h Fe(GLOB)p Fh(,)h Fe(EXTENDED)p
+1092 1957 V 34 w(GLOB)p Fh(,)g Fe(KSH)p 1652 1957 V 34
+w(GLOB)p Fh(,)g Fe(NULL)p 2271 1957 V 35 w(GLOB)p Fh(,)g
+Fe(NOMA)-8 b(TCH)p Fh(,)27 b Fe(SH)p 3319 1957 V 35 w(GLOB)g(GLOB)p
+3925 1957 V 35 w(DOTS)p Fh(.)h Fc(X)p Fh(,)f Fc(Y)p Fh(,)h(.)13
+b(.)h(.)42 b(are)27 b(an)n(y)f(pattern.)37 b Fc(#)27
+b Fh(and)h Fc(##)f Fh(require)f(grouping)-390 2057 y(of)i(previous)e(c)
+n(haracters;)f(those)j(and)f Fc(~)p Fh(,)g Fc(^)h Fh(require)e
+Fe(EXTENDED)p 1831 2057 V 34 w(GLOB)p Fh(.)-390 2256
+y Fc(*)288 b Fh(An)n(y)28 b(string)-390 2355 y Fc(?)288
+b Fh(An)n(y)28 b(c)n(haracter)-390 2455 y Fc([...])112
+b Fh(An)n(y)28 b(of)f(the)h(enclosed)f(c)n(haracters)-390
+2554 y Fc([[:X:]])d Fh(Character)i(classes)g(where)h(X)h(ma)n(y)f(b)r
+(e:)-346 2654 y Fc(alnum)68 b Fh(Alphan)n(umeric,)-346
+2754 y Fc(alpha)g Fh(Alphab)r(etic,)-346 2853 y Fc(blank)g
+Fh(Space)27 b(or)g(tab,)-346 2953 y Fc(cntrl)68 b Fh(Con)n(trol)26
+b(c)n(haracter,)-346 3053 y Fc(digit)68 b Fh(Decimal)28
+b(digit,)-346 3152 y Fc(graph)68 b Fh(Prin)n(table)27
+b(non-whitespace)f(c)n(haracter,)-346 3252 y Fc(lower)68
+b Fh(Lo)n(w)n(ercase)25 b(c)n(haracter,)-346 3351 y Fc(print)68
+b Fh(Prin)n(table)27 b(c)n(haracter,)-346 3451 y Fc(punct)68
+b Fh(Prin)n(table,)27 b(not)g(aln)n(um)h(or)e(space,)-346
+3551 y Fc(space)68 b Fh(Whitespace)28 b(c)n(haracter,)-346
+3650 y Fc(upper)68 b Fh(Upp)r(ercase)27 b(c)n(haracter,)-346
+3750 y Fc(xdigit)d Fh(Hexadecimal)j(digit.)-58 3850 y(Ab)r(o)n(v)n(e)g
+(use)h(lo)r(cales,)e(ma)n(y)h(b)r(e)h(com)n(bined)f(with)-58
+3949 y(other)g(c)n(haracters)e(e.g.)37 b Fc([-+[:xdigit:]])-390
+4049 y([^...])68 b Fh(An)n(y)28 b(c)n(haracter)d(except)j(those)f
+(enclosed)1842 2256 y Fc(<x-y>)112 b Fh(An)n(y)28 b(n)n(um)n(b)r(er)f
+(b)r(et)n(w)n(een)h Fb(x)g Fh(and)g Fb(y)i Fh(inclusiv)n(e:)2174
+2355 y(b)r(oth)f(optional,)d(defaults)i(0,)f Fd(1)1842
+2455 y Fc(^X)244 b Fh(An)n(ything)28 b(not)g(matc)n(hing)g
+Fc(X)1842 2554 y(\(X|Y\))112 b Fh(Either)28 b Fc(X)f
+Fh(or)g Fc(Y)1842 2654 y(X~Y)200 b Fh(P)n(attern)27 b
+Fc(X)p Fh(,)g(but)i(not)e Fc(Y)1842 2754 y(\(X|Y~Z\))d
+Fh(Either)k Fc(X)f Fh(or)g(\()p Fc(Y)g Fh(but)h(not)g
+Fc(Z)p Fh(\))1842 2853 y Fc(X#)244 b Fh(Zero)27 b(or)g(more)f(o)r
+(ccurences)h(of)34 b Fc(X)1842 2953 y(X##)200 b Fh(One)28
+b(or)e(more)h(o)r(ccurences)g(of)34 b Fc(X)1842 3053
+y(\(X\))200 b Fh(Grouping)27 b(of)h(\(part)f(of)6 b(\))29
+b(pattern.)1842 3152 y Fc(**/)200 b Fh(\(As)28 b(path)g(segmen)n(t\))f
+(short)g(for)g Fc(\(*/\))p Fh(:)2174 3252 y(matc)n(h)h(all)f(sub)r
+(directories)1842 3351 y Fc(***/)156 b Fh(The)28 b(same,)f(follo)n
+(wing)g(sym)n(b)r(olic)g(links)1842 3616 y(Globbing)h(\015ags)e(app)r
+(ear)h(in)h(the)g(form)f Fc(\(#X\))f Fh(and)i(require)e(the)1842
+3715 y Fc(EXTENDED)p 2199 3715 27 4 v 28 w(GLOB)g Fh(option.)37
+b(They)28 b(ma)n(y)e(app)r(ear)h(in)h(groups.)35 b Fc(X)1842
+3815 y Fh(ma)n(y)27 b(b)r(e:)1842 3966 y Fc(i)288 b Fh(Matc)n(h)28
+b(case)f(insensitiv)n(ely)1842 4066 y Fc(l)288 b Fh(Lo)n(w)n(er)26
+b(case)h(matc)n(hes)g(upp)r(er)h(case)4075 2256 y Fc(I)288
+b Fh(Case)27 b(sensitiv)n(e:)36 b(cancel)27 b Fc(i)g
+Fh(and)h Fc(I)4075 2355 y(b)288 b Fh(Activ)-5 b(ate)28
+b(bac)n(kreferences)d(for)j(paren)n(theses.)4407 2455
+y Fc($match)p Fh(,)d Fc($mbegin)p Fh(,)g Fc($mend)h Fh(arra)n(ys)4407
+2554 y(giv)n(e)h(matc)n(hed)g(string,)g(b)r(eginning/end)g(indices)4075
+2654 y Fc(B)288 b Fh(Deactiv)-5 b(ate)28 b(bac)n(kreferences,)d
+(negating)i Fc(b)4075 2754 y(m)288 b Fh(Set)28 b Fc($MATCH)p
+Fh(,)d Fc($MBEGIN)p Fh(,)g Fc($MEND)h Fh(for)h(string)4075
+2853 y Fc(M)288 b Fh(Deactiv)-5 b(ate)28 b Fc(m)p Fh(.)4075
+2953 y Fc(a)p Ff(n)n(um)129 b Fh(Allo)n(w)27 b Ff(n)n(um)h
+Fh(errors)d(in)j(matc)n(hes)f(\(0)h(to)f(turn)h(o\013)6
+b(\))4075 3053 y Fc(s)288 b Fh(Matc)n(h)27 b(only)g(at)h(start)f(of)g
+(string)g(\(use)h(in)g(param)e(expn\))4075 3152 y Fc(e)288
+b Fh(Matc)n(h)27 b(only)g(at)h(end)g(of)f(string)4075
+3410 y(Globbing)g(mo)r(di\014ers)g(app)r(ear)g(in)h(paren)n(theses)e
+(after)h(a)g(pattern)4075 3509 y(\(usually)g Ff(and)s
+Fh('ed\):)4075 3667 y Fc(/)288 b Fh(directory)4075 3767
+y Fc(.)g Fh(plain)27 b(\014le)4075 3867 y Fc(@)288 b
+Fh(sym)n(b)r(olic)27 b(link)4075 3966 y Fc(=)288 b Fh(so)r(c)n(k)n(et)
+4075 4066 y Fc(p)g Fh(named)27 b(pip)r(e)i(\(FIF)n(O\))p
+eop end
+%%Page: 2 2
+TeXDict begin @landscape 2 1 bop -390 -157 a Fh(P)n(age)26
+b(2)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 163 a Fc(*)288 b Fh(executable)27
+b(plain)h(\014le)g(\(0100\))-390 263 y Fc(\045)288 b
+Fh(device)27 b(\014le)h(\(c)n(haracter)e(or)h(blo)r(c)n(k\))-390
+362 y Fc(\045b)244 b Fh(blo)r(c)n(k)27 b(sp)r(ecial)-390
+462 y Fc(\045c)244 b Fh(c)n(haracter)26 b(sp)r(ecial)-390
+562 y Fc(r)288 b Fh(readable)26 b(\(0400\))-390 661 y
+Fc(w)288 b Fh(writable)27 b(\(0200\))-390 761 y Fc(x)288
+b Fh(executable)27 b(\(0200\))-390 860 y Fc(A)288 b Fh(group-readable)
+25 b(\(0040\))-390 960 y Fc(I)288 b Fh(group-writable)26
+b(\(0020\))-390 1060 y Fc(E)288 b Fh(group-executable)26
+b(\(0010\))-390 1159 y Fc(R)288 b Fh(w)n(orld-readable)25
+b(\(0200\))-390 1259 y Fc(W)288 b Fh(w)n(orld-writable)26
+b(\(0200\))-390 1359 y Fc(X)288 b Fh(w)n(orld-executable)26
+b(\(0200\))-390 1458 y Fc(s)288 b Fh(setuid)28 b(\(04000\))-390
+1558 y Fc(S)288 b Fh(setgid)27 b(\(02000\))-390 1657
+y Fc(t)288 b Fh(\014les)28 b(with)g(the)g(stic)n(ky)f(bit)h(\(01000\))
+-390 1757 y Fc(f)p Ff(sp)r(ec)133 b Fh(c)n(hmo)r(d-lik)n(e)27
+b(access)f(p)r(ermissions)-58 1857 y(e.g.)37 b Fc(f70?)26
+b Fh(or)g Fc(f:u+w,go-w:)-390 1956 y(e)p Ff(str)190 b
+Fh(ev)-5 b(al)27 b Ff(str)p Fh(,)h(use)f(\014le)h(\()p
+Fc($REPLY)p Fh(\))e(if)i(status)f(0)2174 163 y(or)g(set)h
+Fc($reply)d Fh(to)i(\014le)h(arra)n(y)1842 263 y Fc(d)p
+Ff(dev)161 b Fh(on)28 b(device)f(n)n(um)n(b)r(er)h Ff(dev)1842
+362 y Fc(l)p Fe([)p Fc(-)p Fd(j)p Fc(+)p Fe(])n Ff(ct)56
+b Fh(link)28 b(coun)n(t)g Ff(ct)h Fh(or)e(less)g(\()p
+Fc(+)p Fh(\))h(or)f(more)f(\()p Fc(-)p Fh(\))i(than)g
+Ff(ct)1842 462 y Fc(U)288 b Fh(o)n(wned)27 b(b)n(y)h(curren)n(t)f
+(e\013ectiv)n(e)g(uid)1842 562 y Fc(G)288 b Fh(o)n(wned)27
+b(b)n(y)h(curren)n(t)f(e\013ectiv)n(e)g(gid)1842 661
+y Fc(u)p Ff(uid)173 b Fh(o)n(wned)27 b(b)n(y)h(uid)g
+Ff(uid)s Fh(;)g(ma)n(y)f(also)f(tak)n(e)h(forms)2174
+761 y Fc(.)p Ff(name)5 b Fc(.)p Fh(,)27 b Fc(!)p Ff(name)5
+b Fc(!)p Fh(,)26 b(.)14 b(.)g(.)41 b(or)2174 860 y Fc(\()p
+Ff(name)5 b Fc(\))p Fh(,)27 b Fc({)p Ff(name)5 b Fc(})p
+Fh(,)26 b(.)14 b(.)g(.)1842 960 y Fc(g)p Ff(gid)177 b
+Fh(o)n(wned)27 b(b)n(y)h Ff(gid)p Fh(,)f(as)g(for)g Fc(u)p
+Ff(uid)p Fh(.)1842 1060 y Fc(a)p Fe([)p Fc(Mwhm)p Fe(])m([)p
+Fc(-)p Fd(j)p Fc(+)p Fe(])o Ff(n)2174 1159 y Fh(accessed)g(\(less)g
+(than,)h(more)f(than\))h Ff(n)g Fh(da)n(ys)2174 1259
+y(\(mon)n(ths,)g(w)n(eeks,)f(hours,)g(min)n(utes\))h(ago)1842
+1359 y Fc(m)p Fe([)p Fc(Mwhm)p Fe(])m([)p Fc(-)p Fd(j)p
+Fc(+)p Fe(])o Ff(n)2174 1458 y Fh(mo)r(di\014ed)g(ditto)1842
+1558 y Fc(c)p Fe([)p Fc(Mwhm)p Fe(])m([)p Fc(-)p Fd(j)p
+Fc(+)p Fe(])o Ff(n)2174 1657 y Fh(ino)r(de)g(c)n(hanged)f(ditto)1842
+1757 y Fc(L)p Fe([)p Fc(kKmMpP)p Fe(])m([)o Fc(-)p Fd(j)p
+Fc(+)p Fe(])o Ff(n)2174 1857 y Fh(size)h(in)g(b)n(ytes)f(\(or)g(kb,)h
+(m)n(b,)f(blo)r(c)n(ks\))g(=)h(\(or)f Fb(<)p Fh(,)g Fb(>)p
+Fh(\))g Ff(n)1842 1956 y Fc(^)288 b Fh(negate)27 b(follo)n(wing)g
+(quali\014ers)4075 163 y Fc(,)288 b Fh(`)p Ff(or)6 b
+Fh(')27 b(lists)g(of)h(qualifers)f(together)4075 263
+y Fc(-)288 b Fh(toggle)26 b(follo)n(wing)h(links)g(\(o\013)h(b)n(y)g
+(default\))4075 362 y Fc(M)288 b Fh(set)27 b Fe(MARK)p
+4852 362 29 4 v 34 w(DIRS)p Fh(,)h(this)g(pattern)f(only)4075
+462 y Fc(T)288 b Fh(set)27 b Fe(LIST)p 4754 462 V 36
+w(TYPES)p Fh(,)h(this)g(pattern)g(only)4075 562 y Fc(N)288
+b Fh(set)27 b Fe(NULL)p 4804 562 V 36 w(GLOB)p Fh(,)h(this)g(pattern)f
+(only)4075 661 y Fc(D)288 b Fh(set)27 b Fe(GLOB)p 4814
+661 V 35 w(DOTS)p Fh(,)h(this)g(pattern)f(only)4075 761
+y Fc(n)288 b Fh(set)27 b Fe(NUMERIC)p 5021 761 V 34 w(GLOB)p
+5327 761 V 35 w(SOR)-8 b(T)p Fh(,)27 b(this)h(pattern)g(only)4075
+860 y Fc(o)p Fe([)o Fc(nLlamcd)p Fe(])4407 960 y Fh(sort)f(order)f(of)h
+(resulting)g(\014les:)37 b(b)n(y)28 b(name,)f(size,)4407
+1060 y(no.)36 b(of)28 b(links,)g(access/mo)r(di\014cation/ino)r(de)d
+(time,)4407 1159 y(depth-\014rst)i(order)4075 1259 y
+Fc(o)p Fe([)o Fc(nLlamcd)p Fe(])4407 1359 y Fh(same)g(but)h(rev)n
+(ersed)e(order;)g Fc(Od)h Fh(depth-last)4075 1458 y Fc([)p
+Ff(b)r(eg)7 b Fe([)o Fc(,)p Ff(end)s Fe(])o Fc(])4407
+1558 y Fh(Index)28 b(of)f(matc)n(hed)g(\014le\(s\))i(to)e(select)4075
+1657 y Fc(:)p Fh(.)13 b(.)h(.)192 b(remainder)26 b(treated)i(as)f
+(history)4407 1757 y(mo)r(di\014ers)g(\(eac)n(h)g(with)h(o)n(wn)f
+Fc(:)p Fh(\))-390 2125 y Fg(3)92 b(Options)-390 2196
+y Fa(y)-355 2226 y Fh(means)27 b(set)g(b)n(y)h(default:)37
+b(these)28 b(options)f(app)r(ear)f(with)i Fc(no)f Fh(in)h(fron)n(t)f
+(in)h(option)f(listings;)h Fc(+)p Ff(o)j Fh(turns)c(single-letter)g
+(option)g(o\013)h(\(sho)n(wn)f(in)h(paren)n(theses\))-390
+2429 y Fc(ALL)p -253 2429 27 4 v 30 w(EXPORT)401 b Fh(Exp)r(ort)27
+b(all)g(new)h(shell)g(params)e(\(-a\))-390 2529 y Fc(ALWAYS)p
+-121 2529 V 29 w(LAST)p 84 2529 V 30 w(PROMPT)64 b Fh(Bac)n(k)27
+b(to)g(prompt)h(after)f(list)-390 2628 y Fc(ALWAYS)p
+-121 2628 V 29 w(TO)p -4 2628 V 30 w(END)284 b Fh(End)28
+b(of)f(w)n(ord)g(after)g(completion)-390 2728 y Fc(APPEND)p
+-121 2728 V 29 w(HISTORY)226 b Fh(App)r(end)29 b(history)e(to)g(\014le)
+-390 2828 y Fc(AUTO)p -209 2828 V 30 w(CD)533 b Fh(Directory)27
+b(as)g(command)g(do)r(es)g Fc(cd)g Fh(\(-J\))-390 2927
+y Fc(AUTO)p -209 2927 V 30 w(LIST)445 b Fh(List)28 b(on)f(am)n(biguous)
+f(completion)i(\(-9\))-390 3027 y Fc(AUTO)p -209 3027
+V 30 w(MENU)445 b Fh(Men)n(u)28 b(after)f(second)g Fc(TAB)-390
+3126 y(AUTO)p -209 3126 V 30 w(NAME)p -3 3126 V 29 w(DIRS)240
+b Fh(P)n(arams)26 b(with)i(paths)f(b)r(ecome)h(names)-390
+3226 y Fc(AUTO)p -209 3226 V 30 w(PARAM)p 41 3226 V 29
+w(KEYS)196 b Fh(Clev)n(er)27 b(del)h(after)f(param)f(completion)-390
+3326 y Fc(AUTO)p -209 3326 V 30 w(PARAM)p 41 3326 V 29
+w(SLASH)152 b($path<TAB>)24 b Fd(!)j Fc($path/)-390 3425
+y(AUTO)p -209 3425 V 30 w(PUSHD)401 b Fh(Mak)n(e)27 b
+Fc(cd)g Fh(act)g(lik)n(e)g Fc(pushd)f Fh(\(-N\))-390
+3525 y Fc(AUTO)p -209 3525 V 30 w(REMOVE)p 85 3525 V
+29 w(SLASH)108 b Fh(Strip)28 b(slash)f(after)g(completion)-390
+3625 y Fc(AUTO)p -209 3625 V 30 w(RESUME)357 b(cmd)27
+b Fh(can)g(b)r(eha)n(v)n(e)g(lik)n(e)g Fc(\045cmd)f Fh(\(-W\))-390
+3725 y Fc(BAD)p -253 3725 V 30 w(PATTERN)80 3695 y Fa(y)437
+3725 y Fh(Error)f(on)j(bad)f(glob)g(pattern)h(\(+2\))-390
+3825 y Fc(BANG)p -209 3825 V 30 w(HIST)-8 3795 y Fa(y)437
+3825 y Fh(Use)g Fc(!hist)d Fh(on)j(cmd)g(line)f(\(+K\))-390
+3926 y Fc(BARE)p -209 3926 V 30 w(GLOB)p -3 3926 V 29
+w(QUAL)197 3896 y Fa(y)437 3926 y Fh(Use)h(glob)f(quals)g(with)h(just)g
+(parens)-390 4026 y Fc(BASH)p -209 4026 V 30 w(AUTO)p
+-3 4026 V 29 w(LIST)197 3996 y Fa(y)437 4026 y Fh(List)g(only)f(on)g
+(second)g(tab)1842 2429 y Fc(BEEP)2018 2399 y Fa(y)2670
+2429 y Fh(Beep)g(on)g(errors)f(etc.)37 b(\(+B\))1842
+2529 y Fc(BG)p 1935 2529 V 31 w(NICE)2137 2499 y Fa(y)2670
+2529 y Fh(Lo)n(w)n(er)25 b(priorit)n(y)i(of)g(bg)h(jobs)f(\(-6\))1842
+2629 y Fc(BRACE)p 2067 2629 V 30 w(CCL)446 b(foo{ab})24
+b Fd(!)k Fc(fooa)42 b(foob)1842 2729 y(BSD)p 1979 2729
+V 31 w(ECHO)489 b Fh(Builtin)28 b Fc(echo)e Fh(w)n(orks)g(lik)n(e)h(in)
+h(BSD)1842 2828 y Fc(CDABLE)p 2111 2828 V 29 w(VARS)359
+b(cd)42 b(foo)27 b Fh(lik)n(e)g Fc(cd)43 b(~foo)26 b
+Fh(\(-T\))1842 2928 y Fc(CHASE)p 2067 2928 V 30 w(DOTS)402
+b Fh(Resolv)n(e)26 b(links)i(when)f Fc(..)g Fh(in)h(dir)1842
+3028 y Fc(CHASE)p 2067 3028 V 30 w(LINKS)358 b Fh(Resolv)n(e)26
+b(symlinks)h(in)h(directories)e(\(-w\))1842 3128 y Fc(CHECK)p
+2067 3128 V 30 w(JOBS)2268 3098 y Fa(y)2670 3128 y Fh(Rep)r(ort)h(job)h
+(status)f(at)h Fc(exit)1842 3228 y(CLOBBER)2150 3198
+y Fa(y)2670 3228 y Fc(>)f Fh(to)g(existing)h(\014le)f(needs)h
+Fc(>|)f Fh(\(+C\))1842 3328 y Fc(COMPLETE)p 2199 3328
+V 28 w(ALIASES)140 b Fh(Completion)27 b(uses)g(unexpanded)h(aliases)
+1842 3428 y Fc(COMPLETE)p 2199 3428 V 28 w(IN)p 2315
+3428 V 31 w(WORD)153 b Fh(Complete)27 b(at)h(cursor)e(p)r(oin)n(t)h(in)
+h(w)n(ord)1842 3527 y Fc(CORRECT)520 b Fh(Correct)26
+b(command)h(sp)r(elling)h(\(-0\))1842 3627 y Fc(CORRECT)p
+2155 3627 V 29 w(ALL)359 b Fh(Correct)26 b(sp)r(elling)h(of)h(all)f
+(args)f(\(-O\))1842 3726 y Fc(CSH)p 1979 3726 V 31 w(JUNKIE)p
+2274 3726 V 28 w(HISTORY)65 b Fh(Single)27 b Fc(!)g Fh(is)h(last)f
+(command)1842 3826 y Fc(CSH)p 1979 3826 V 31 w(JUNKIE)p
+2274 3826 V 28 w(LOOPS)153 b Fh(Lists)27 b(can)g(b)r(e)h
+Fc(list;)42 b(end)1842 3926 y(CSH)p 1979 3926 V 31 w(JUNKIE)p
+2274 3926 V 28 w(QUOTES)109 b Fh(No)27 b(unescap)r(ed)h(newlines)f(in)h
+(quotes)1842 4025 y Fc(CSH)p 1979 4025 V 31 w(NULLCMD)357
+b Fh(Don't)28 b(use)f Fc($NULLCMD)p Fh(,)e Fc($READNULLCMD)4075
+2429 y(CSH)p 4212 2429 V 30 w(NULL)p 4418 2429 V 30 w(GLOB)283
+b Fh(Only)27 b(one)h(glob)e(m)n(ust)i(matc)n(h)4075 2529
+y Fc(DVORAK)563 b Fh(Use)28 b(Dv)n(orak)e(k)n(eyb)r(oard)g(for)h(sp)r
+(elling)4075 2629 y Fc(EQUALS)4339 2599 y Fa(y)4902 2629
+y Fh(P)n(erform)f Fc(=cmd)g Fh(expansion)4075 2729 y
+Fc(ERR)p 4212 2729 V 30 w(EXIT)489 b Fh(Exit)27 b(shell)h(on)f(error)f
+(\(-e\))4075 2829 y Fc(EXEC)4251 2799 y Fa(y)4902 2829
+y Fh(Execute)h(commands)g(\(+n\))4075 2929 y Fc(EXTENDED)p
+4432 2929 V 28 w(GLOB)271 b Fh(Use)28 b Fc(#)p Fh(,)f
+Fc(~)g Fh(and)h Fc(^)f Fh(in)h(patterns)4075 3028 y Fc(EXTENDED)p
+4432 3028 V 28 w(HISTORY)139 b Fh(Sa)n(v)n(e)26 b(timestamp)i(to)g
+(history)f(\014le)4075 3129 y Fc(FLOW)p 4256 3129 V 30
+w(CONTROL)4589 3099 y Fa(y)4902 3129 y Fc(^S)p Fh(,)g
+Fc(^Q)g Fh(do)g(\015o)n(w)g(con)n(trol)4075 3229 y Fc(FUNCTION)p
+4432 3229 V 28 w(ARGZERO)4763 3199 y Fa(y)4902 3229 y
+Fh(Set)h Fc($0)f Fh(on)g(function)h(or)f(source)4075
+3329 y Fc(GLOB)4251 3299 y Fa(y)4902 3329 y Fh(P)n(erform)f(globbing)h
+(\(+F\))4075 3430 y Fc(GLOBAL)p 4344 3430 V 29 w(EXPORT)4632
+3400 y Fa(y)4902 3430 y Fc(typeset)41 b(-x)27 b Fh(applies)g(globally)
+4075 3530 y Fc(GLOBAL)p 4344 3530 V 29 w(RCS)4500 3500
+y Fa(y)4902 3530 y Fh(Use)h Fc(/etc)e Fh(startup)h(\014les)4075
+3630 y Fc(GLOB)p 4256 3630 V 30 w(ASSIGN)357 b(scalar=*)24
+b Fh(globs)j(on)g(righ)n(t)4075 3729 y Fc(GLOB)p 4256
+3729 V 30 w(COMPLETE)269 b Fh(Complete)28 b(globbing)e(with)i(men)n(u)
+4075 3829 y Fc(GLOB)p 4256 3829 V 30 w(DOTS)445 b Fh(Leading)27
+b(dots)g(matc)n(h)h(wildcards)e(\(-4\))4075 3929 y Fc(GLOB)p
+4256 3929 V 30 w(SUBST)401 b Fh(T)-7 b(ext)28 b(from)f(params)f(can)i
+(glob)4075 4029 y Fc(HASH)p 4256 4029 V 30 w(CMDS)4457
+3999 y Fa(y)4902 4029 y Fh(Hash)f(commands)g(when)h(run)p
+eop end
+%%Page: 3 3
+TeXDict begin @landscape 3 2 bop -390 -157 a Fh(P)n(age)26
+b(3)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 163 a Fc(HASH)p -209 163 27 4
+v 30 w(DIRS)-8 133 y Fa(y)437 163 y Fh(Hash)h(directory)e(when)i(cmd)g
+(runs)-390 263 y Fc(HASH)p -209 263 V 30 w(LIST)p -3
+263 V 29 w(ALL)153 233 y Fa(y)437 263 y Fh(Hash)g(all)f(cmds)h(on)f
+(completion)-390 363 y Fc(HIST)p -209 363 V 30 w(ALLOW)p
+41 363 V 29 w(CLOBBER)64 b Fh(Allo)n(w)27 b(clobb)r(ering)g(redirects)g
+(in)h(hist)-390 463 y Fc(HIST)p -209 463 V 30 w(BEEP)-8
+433 y Fa(y)437 463 y Fh(Beep)g(on)f(bad)g Fc(!)p Fh(-history)-390
+563 y Fc(HIST)p -209 563 V 30 w(EXPIRE)p 85 563 V 29
+w(DUPS)p 290 563 V 29 w(FIRST)-307 663 y Fh(T)-7 b(rim)28
+b(duplicate)f(lines)h(to)f(squeeze)g(history)-390 762
+y Fc(HIST)p -209 762 V 30 w(FIND)p -3 762 V 29 w(NO)p
+114 762 V 31 w(DUPS)121 b Fh(Nev)n(er)27 b(sho)n(w)g(duplicates)g(in)h
+(history)-390 862 y Fc(HIST)p -209 862 V 30 w(IGNORE)p
+85 862 V 29 w(ALL)p 246 862 V 30 w(DUPS)-307 962 y Fh(Nev)n(er)f(sa)n
+(v)n(e)f(duplicate)i(of)f(existing)g(hist)h(en)n(try)-390
+1061 y Fc(HIST)p -209 1061 V 30 w(IGNORE)p 85 1061 V
+29 w(DUPS)152 b Fh(No)28 b(adjacen)n(t)f(duplicates)g(in)h(history)f
+(\(-h\))-390 1161 y Fc(HIST)p -209 1161 V 30 w(IGNORE)p
+85 1161 V 29 w(SPACE)108 b Fh(`)44 b Fc(cmd)p Fh(')26
+b(lines)i(not)g(sa)n(v)n(ed)e(\(-g\))-390 1260 y Fc(HIST)p
+-209 1260 V 30 w(NO)p -91 1260 V 30 w(FUNCTIONS)107 b
+Fh(Don't)28 b(store)f(function)h(de\014nitions)-390 1360
+y Fc(HIST)p -209 1360 V 30 w(NO)p -91 1360 V 30 w(STORE)283
+b Fh(No)28 b(history)e(commands)h(in)h(history)-390 1460
+y Fc(HIST)p -209 1460 V 30 w(REDUCE)p 85 1460 V 29 w(BLANKS)64
+b Fh(T)-7 b(rim)28 b(excess)e(whitespace)i(in)f(history)-390
+1559 y Fc(HIST)p -209 1559 V 30 w(SAVE)p -3 1559 V 29
+w(NO)p 114 1559 V 31 w(DUPS)121 b Fh(T)-7 b(rim)28 b(duplicates)f(if)h
+(sa)n(ving)e(history)-390 1659 y Fc(HIST)p -209 1659
+V 30 w(VERIFY)357 b Fh(Edit)28 b(after)f Fc(!)g Fh(expansion)-390
+1759 y Fc(HUP)-258 1729 y Fa(y)437 1759 y Fh(Send)h(SIGHUP)g(to)g(jobs)
+f(on)g(exit)-390 1859 y Fc(IGNORE)p -121 1859 V 29 w(BRACES)270
+b Fh(No)28 b Fc({)p Fh(.)13 b(.)h(.)g Fc(,)p Fh(.)f(.)h(.)g
+Fc(})28 b Fh(expansion)e(\(-I\))-390 1959 y Fc(IGNORE)p
+-121 1959 V 29 w(EOF)402 b Fh(No)28 b(exit)f(on)h(\014rst)f(ten)h(eof)6
+b('s)28 b(\(-7\))-390 2058 y Fc(INC)p -253 2058 V 30
+w(APPEND)p 41 2058 V 29 w(HISTORY)64 b Fh(Sa)n(v)n(e)27
+b(history)f(as)h(it)h(happ)r(ens)-390 2158 y Fc(INTERACTIVE)343
+b Fh(Shell)28 b(is)g(in)n(teractiv)n(e)e(\(not)i(settable\))g(\(-i\))
+-390 2257 y Fc(INTERACTIVE)p 99 2257 V 27 w(COMMENTS)437
+2357 y Fh(Use)g(commen)n(ts)f(in)n(teractiv)n(ely)f(\(-k\))-390
+2457 y Fc(KSH)p -253 2457 V 30 w(ARRAYS)401 b Fh(Arra)n(y)26
+b(syn)n(tax)h(more)g(lik)n(e)g(ksh)-390 2556 y Fc(KSH)p
+-253 2556 V 30 w(AUTOLOAD)313 b Fh(Em)n(ulate)27 b(ksh)h(function)g
+(loading)-390 2656 y Fc(KSH)p -253 2656 V 30 w(GLOB)489
+b Fh(Em)n(ulate)27 b(ksh)h(patterns,)f Fc(*\(...\))e
+Fh(etc.)-390 2756 y Fc(KSH)p -253 2756 V 30 w(OPTION)p
+41 2756 V 29 w(PRINT)152 b Fh(Prin)n(t)27 b(options)g(lik)n(e)g(ksh)h
+(do)r(es)-390 2855 y Fc(LIST)p -209 2855 V 30 w(AMBIGUOUS)225
+b Fh(Only)28 b(list)f(am)n(biguous)g(completions)1842
+163 y Fc(LIST)p 2023 163 V 30 w(BEEP)446 b Fh(Beep)27
+b(on)g(am)n(biguous)g(completion)1842 263 y Fc(LIST)p
+2023 263 V 30 w(PACKED)358 b Fh(Squeeze)27 b(completion)g(listings)1842
+362 y Fc(LIST)p 2023 362 V 30 w(ROWS)p 2229 362 V 30
+w(FIRST)196 b Fh(List)27 b(ro)n(ws)f(\014rst)i(in)g(completion)1842
+462 y Fc(LIST)p 2023 462 V 30 w(TYPES)402 b Fh(File)28
+b(t)n(yp)r(es)f(in)h(completion)f(list)h(\(-X\))1842
+562 y Fc(LOCAL)p 2067 562 V 30 w(OPTIONS)270 b Fh(Options)27
+b(set)g(in)h(functions)g(are)f(lo)r(cal)1842 661 y Fc(LOCAL)p
+2067 661 V 30 w(TRAPS)358 b Fh(Reset)27 b(traps)g(on)g(lea)n(ving)g
+(func)1842 761 y Fc(LOGIN)608 b Fh(Shell)28 b(is)f(login)g(\(not)h
+(settable\))g(\(-l\))1842 860 y Fc(LONG)p 2023 860 V
+30 w(LIST)p 2229 860 V 30 w(JOBS)240 b Fh(Alw)n(a)n(ys)26
+b(use)i Fc(jobs)41 b(-l)27 b Fh(\(-R\))1842 960 y Fc(MAGIC)p
+2067 960 V 30 w(EQUAL)p 2317 960 V 29 w(SUBST)109 b Fh(An)n(y)27
+b Fc(var=expr)e Fh(\014le-expands)h Fc(expr)1842 1060
+y(MAIL)p 2023 1060 V 30 w(WARNING)314 b Fh(W)-7 b(arn)27
+b(if)h(mail)f(\014le)h(accessed)f(\(-U\))1842 1159 y
+Fc(MARK)p 2023 1159 V 30 w(DIRS)446 b Fh(App)r(end)28
+b Fc(/)g Fh(to)f(globb)r(ed)g(directories)g(\(-8\))1842
+1259 y Fc(MENU)p 2023 1259 V 30 w(COMPLETE)270 b Fh(Cycle)27
+b(completions)g(on)g Fc(TAB)g Fh(\(-Y\))1842 1359 y Fc(MONITOR)520
+b Fh(Allo)n(w)27 b(job)h(con)n(trol)e(\(-m\))1842 1459
+y Fc(MULTIOS)2150 1429 y Fa(y)2670 1459 y Fh(Implicitly)i(tee/cat)f(m)n
+(ultiple)h Fc(<)p Fh(,)f Fc(>)1842 1559 y(NOMATCH)2150
+1529 y Fa(y)2670 1559 y Fh(Error)e(on)i(unmatc)n(hed)h(globs)e(\(+3\))
+1842 1660 y Fc(NOTIFY)2106 1630 y Fa(y)2670 1660 y Fh(Rep)r(ort)h(bg)g
+(jobs)h(on)f(c)n(hange)g(\(-5\))1842 1759 y Fc(NULL)p
+2023 1759 V 30 w(GLOB)446 b Fh(Remo)n(v)n(e)26 b(unmatc)n(hed)i(globs)e
+(\(-G\))1842 1859 y Fc(NUMERIC)p 2155 1859 V 29 w(GLOB)p
+2360 1859 V 30 w(SORT)109 b Fh(Num)n(b)r(ers)27 b(sorted)g(in)h(glob)
+1842 1959 y Fc(OCTAL)p 2067 1959 V 30 w(ZEROES)314 b
+Fh(0)27 b(in)n(tro)r(duces)g(o)r(ctal)g(in)h(math)g(expn)1842
+2058 y Fc(OVER)p 2023 2058 V 30 w(STRIKE)358 b Fh(Editor)26
+b(starts)h(in)h(o)n(v)n(erstrik)n(e)d(mo)r(de)1842 2158
+y Fc(PATH)p 2023 2158 V 30 w(DIRS)446 b Fh(Searc)n(h)26
+b(path)i(for)f Fc(dir/cmd)e Fh(\(-Q\))1842 2257 y Fc(POSIX)p
+2067 2257 V 30 w(BUILTINS)226 b(builtin)24 b Fh(command)k(is)f(sp)r
+(ecialer)1842 2357 y Fc(PRINT)p 2067 2357 V 30 w(EIGHT)p
+2317 2357 V 29 w(BIT)197 b Fh(Sho)n(w)27 b(c)n(hars)f(with)i(high)g
+(bit)g(in)g(listings)1842 2457 y Fc(PRINT)p 2067 2457
+V 30 w(EXIT)p 2273 2457 V 29 w(VALUE)153 b Fh(Sho)n(w)27
+b(non-zero)f(exit)h(status)h(\(-1\))1842 2556 y Fc(PRIVILEGED)388
+b Fh(Privileged)26 b(mo)r(de:)37 b(safet)n(y)27 b(\014rst)g(\(-p\))1842
+2656 y Fc(PROMPTT)p 2155 2656 V 29 w(BANG)315 b(!)27
+b Fh(is)g(sp)r(ecial)h(in)g(prompts)1842 2756 y Fc(PROMPT)p
+2111 2756 V 29 w(CR)2223 2726 y Fa(y)2670 2756 y Fh(Prin)n(t)f(CR)g
+(just)h(b)r(efore)g(prompt)f(\(+V\))1842 2857 y Fc(PROMPT)p
+2111 2857 V 29 w(PERCENT)2443 2827 y Fa(y)2670 2857 y
+Fh(Do)g Fc(\045)h Fh(expansions)e(in)i(prompt)4075 163
+y Fc(PROMPT)p 4344 163 V 29 w(SUBST)314 b Fh(Expand)27
+b(substitutions)h(in)g(prompts)4075 263 y Fc(PUSHD)p
+4300 263 V 29 w(IGNORE)p 4593 263 V 29 w(DUPS)109 b Fh(Only)27
+b(one)h(instance)f(of)g(dir)h(on)f(stac)n(k)4075 362
+y Fc(PUSHD)p 4300 362 V 29 w(MINUS)358 b Fh(Sw)n(ap)27
+b(plus)h(and)f(min)n(us)h(in)g(pushd)4075 462 y Fc(PUSHD)p
+4300 462 V 29 w(SILENT)314 b Fh(Don't)28 b(prin)n(t)g(directory)e(stac)
+n(k)h(\(-E\))4075 562 y Fc(PUSHD)p 4300 562 V 29 w(TO)p
+4417 562 V 31 w(HOME)283 b Fh(With)29 b(no)e(args,)f
+Fc(pushd)f Fh(go)r(es)i(home)h(\(-D\))4075 661 y Fc(RC)p
+4168 661 V 30 w(EXPAND)p 4462 661 V 29 w(PARAM)196 b(A${array}Z)24
+b Fd(!)j Fc(Aa1Z)42 b(Aa2Z)26 b Fh(.)14 b(.)g(.)g(\(-P\))4075
+761 y Fc(RC)p 4168 761 V 30 w(QUOTES)445 b(echo)42 b('''')26
+b Fd(!)i Fc(')4075 861 y(RCS)4207 831 y Fa(y)4902 861
+y Fc(.)p Fh(-\014les,)f(else)g(just)h Fc(/etc/zshenv)23
+b Fh(\(+f)6 b(\))4075 961 y Fc(REC)p 4212 961 V 30 w(EXACT)445
+b Fh(Prefer)26 b(exact)i(matc)n(h)f(in)h(completion)f(\(-S\))4075
+1060 y Fc(RESTRICTED)387 b Fh(Can't)28 b(cause)f(as)f(m)n(uc)n(h)i
+(damage)4075 1160 y Fc(RM)p 4168 1160 V 30 w(STAR)p 4374
+1160 V 30 w(SILENT)239 b Fh(No)28 b(query)e(on)i Fc(rm)42
+b(*)28 b Fh(\(-H\))4075 1260 y Fc(RM)p 4168 1260 V 30
+w(STAR)p 4374 1260 V 30 w(WAIT)327 b Fh(Don't)28 b(b)r(eliev)n(e)g
+(\014rst)f(RMST)-7 b(AR)28 b(reply)4075 1359 y Fc(SHARE)p
+4300 1359 V 29 w(HISTORY)270 b Fh(Read/write)27 b(history)f(as)h(it)h
+(happ)r(ens)4075 1459 y Fc(SH)p 4168 1459 V 30 w(FILE)p
+4374 1459 V 30 w(EXPANSION)107 b Fh(P)n(erform)26 b Fc(~file)p
+Fh(,)g Fc(=cmd)g Fh(\014rst)4075 1559 y Fc(SH)p 4168
+1559 V 30 w(GLOB)533 b Fh(Disable)28 b Fc(\()p Fh(,)f
+Fc(|)p Fh(,)g Fc(\))p Fh(,)h Fc(<)f Fh(in)h(patterns)4075
+1658 y Fc(SHIN)p 4256 1658 V 30 w(STDIN)401 b Fh(Read)27
+b(commands)g(from)h(stdin)g(\(-s\))4075 1758 y Fc(SH)p
+4168 1758 V 30 w(NULLCMD)401 b Fh(Null)28 b(commands)f(assume)g
+Fc(:)g Fh(b)r(eha)n(viour)4075 1857 y Fc(SH)p 4168 1857
+V 30 w(OPTION)p 4462 1857 V 29 w(LETTERS)108 b Fh(Letter)28
+b(options)f(w)n(ork)f(lik)n(e)h(in)h(ksh)4075 1958 y
+Fc(SHORT)p 4300 1958 V 29 w(LOOPS)4544 1928 y Fa(y)4902
+1958 y Fh(Short)14 b(v)n(erb!for!,)26 b Fc(select)p Fh(,)f
+Fc(if)p Fh(,)i Fc(function)4075 2057 y(SH)p 4168 2057
+V 30 w(WORD)p 4374 2057 V 30 w(SPLIT)283 b Fh(Split)28
+b(w)n(ords)f(lik)n(e)g(lesser)f(shells)i(do)f(\(-y\))4075
+2157 y Fc(SINGLE)p 4344 2157 V 29 w(COMMAND)226 b Fh(Read)27
+b(a)h(command)f(and)g(exit)h(\(-t\))4075 2257 y Fc(SINGLE)p
+4344 2257 V 29 w(LINE)p 4549 2257 V 29 w(ZLE)197 b Fh(Editor)27
+b(only)g(uses)g(one)g(line)h(\(-M\))4075 2356 y Fc(SUN)p
+4212 2356 V 30 w(KEYBOARD)p 4594 2356 V 28 w(HACK)109
+b Fh(Ignore)26 b(unmatc)n(hed)i(trailing)f Fc(`)g Fh(\(-L\))4075
+2457 y Fc(UNSET)4295 2427 y Fa(y)4902 2457 y Fh(Unset)h(parameters)e
+(cause)h(error)e(\(+u\))4075 2556 y Fc(VERBOSE)519 b
+Fh(Prin)n(t)27 b(input)h(lines)g(as)f(read)g(\(-v\))4075
+2656 y Fc(XTRACE)563 b Fh(Prin)n(t)27 b(cmds)h(and)f(args)f(when)i(run)
+f(\(-x\))4075 2756 y Fc(ZLE)695 b Fh(Use)28 b(the)g(shell's)f(line)h
+(editor)f(\(-Z\))-390 3041 y Fg(4)92 b(P)-7 b(arameter)31
+b(exp)-6 b(ansion)-390 3223 y Fc($)p Ff(name)-390 3323
+y Fc(${)p Ff(name)5 b Fc(})-224 3423 y Fh(Basic)27 b(parameter)f
+(substitution)-390 3522 y Fc(${+)p Ff(name)5 b Fc(})-224
+3622 y Fh(1)27 b(if)h Ff(name)k Fh(set,)c(0)f(otherwise)-390
+3721 y Fc(${)p Ff(name)5 b Fc(:-)p Ff(w)n(ord)s Fc(})-224
+3821 y($)p Ff(name)32 b Fh(if)c(non-n)n(ull,)f(else)g
+Ff(w)n(ord)-390 3921 y Fc(${)p Ff(name)5 b Fc(-)p Ff(w)n(ord)s
+Fc(})-224 4020 y($)p Ff(name)32 b Fh(if)c(set,)f(else)h
+Ff(w)n(ord)2008 3223 y Fh(\(Similar)g(for)f(others)g(with/without)h
+(colon.\))1842 3323 y Fc(${)p Ff(name)5 b Fc(:=)p Ff(w)n(ord)s
+Fc(})2008 3423 y($)p Ff(name)32 b Fh(if)c(non-n)n(ull,)f(else)h(use)f
+Ff(w)n(ord)2008 3522 y Fh(and)h(set)f Ff(name)33 b Fh(to)27
+b(that)1842 3622 y Fc(${)p Ff(name)5 b Fc(:==)p Ff(w)n(ord)s
+Fc(})2008 3721 y Fh(Unconditional)28 b(assignmen)n(t)e
+Fc(${)p Ff(name)5 b Fc(:?)p Ff(w)n(ord)s Fc(})2008 3821
+y($)p Ff(name)32 b Fh(if)c(non-n)n(ull,)f(else)h(prin)n(t)f
+Ff(w)n(ord)j Fh(and)d(exit)1842 3921 y Fc(${)p Ff(name)5
+b Fc(:+)p Ff(w)n(ord)s Fc(})2008 4020 y Ff(w)n(ord)30
+b Fh(if)e Fc($)p Ff(name)k Fh(non-n)n(ull,)27 b(else)g(nothing)4075
+3223 y Fc(${)p Ff(name)5 b Fc(#)p Ff(pattern)p Fc(})4075
+3323 y(${)p Ff(name)g Fc(##)p Ff(pattern)p Fc(})4241
+3423 y($)p Ff(name)31 b Fh(with)e(shortest)d(\(longest\))i(matc)n(h)f
+(of)4241 3522 y Ff(pattern)g Fh(remo)n(v)n(ed)f(from)i(head.)36
+b(P)n(atterns)26 b(as)4241 3622 y(globbing;)h(original)f(parameter)g
+(unc)n(hanged)4075 3721 y Fc(${)p Ff(name)5 b Fc(\045)p
+Ff(pattern)p Fc(})4075 3821 y(${)p Ff(name)g Fc(\045\045)p
+Ff(pattern)p Fc(})4241 3921 y Fh(As)28 b(for)f Fc(#)p
+Fh(,)g(but)h(remo)n(v)n(e)e(from)h(tail)h(of)f(matc)n(h)4075
+4020 y Fc(${)p Ff(name)5 b Fc(/)p Ff(pattern)p Fc(/)p
+Ff(repl)s Fc(})p eop end
+%%Page: 4 4
+TeXDict begin @landscape 4 3 bop -390 -157 a Fh(P)n(age)26
+b(4)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -224 163 a(Substitute)i(longest)e(matc)n(h)g(of)h
+Ff(pattern)f Fh(b)n(y)g Ff(repl)-390 263 y Fc(${\(S\))p
+Ff(name)5 b Fc(/)p Ff(pattern)p Fc(/)p Ff(repl)s Fc(})-224
+362 y Fh(Substitute)29 b(shortest)e(matc)n(h)-390 462
+y Fc(${)p Ff(name)5 b Fc(//)p Ff(pattern)p Fc(/)p Ff(repl)s
+Fc(})-224 562 y Fh(Substitute)29 b(all)e(non-o)n(v)n(erlapping)e
+(longest)i(matc)n(hes)-390 661 y Fc(${)p Ff(name)5 b
+Fc(/#)p Ff(pattern)p Fc(/)p Ff(repl)s Fc(})-224 761 y
+Fh(Subst)28 b(if)g Ff(pattern)g Fh(at)f(start)g(of)h(string)-390
+860 y Fc(${)p Ff(name)5 b Fc(/\045)p Ff(pattern)p Fc(/)p
+Ff(repl)s Fc(})-224 960 y Fh(Subst)28 b(if)g Ff(pattern)g
+Fh(at)f(end)h(of)f(string)-390 1060 y Fc(${)p Ff(name)5
+b Fc(:/)p Ff(pattern)p Fc(/)p Ff(repl)s Fc(})-224 1159
+y Fh(Subst)28 b(if)g Ff(pattern)g Fh(matc)n(hes)f(en)n(tire)g(string)
+-390 1259 y Fc(${#)p Ff(sp)r(ec)5 b Fc(})-224 1359 y
+Fh(Coun)n(t)27 b(length)h(of)g(scalar)e(or)g(w)n(ords)h(of)g(arra)n(y)
+-390 1458 y Fc(${^)p Ff(sp)r(ec)5 b Fc(})-390 1558 y(${^^)p
+Ff(sp)r(ec)g Fc(})-224 1657 y Fh(T)-7 b(urn)28 b(on)f(\(o\013)6
+b(\))28 b Fe(R)m(C)p 429 1657 29 4 v 35 w(EXP)-8 b(AND)p
+876 1657 V 34 w(P)g(ARAM)-390 1757 y Fc(${=)p Ff(sp)r(ec)5
+b Fc(})-390 1857 y(${==)p Ff(sp)r(ec)g Fc(})-224 1956
+y Fh(T)-7 b(urn)28 b(on)f(\(o\013)6 b(\))28 b Fe(SH)p
+419 1956 V 35 w(W)m(ORD)p 767 1956 V 34 w(SPLIT)-390
+2056 y Fc(${~)p Ff(sp)r(ec)5 b Fc(})-390 2156 y(${~~)p
+Ff(sp)r(ec)g Fc(})-224 2255 y Fh(T)-7 b(urn)28 b(on)f(\(o\013)6
+b(\))28 b Fe(GLOB)p 563 2255 V 35 w(SUBST)-390 2355 y
+Fc(${)p Ff(sp)r(ec)5 b Fc(:)p Ff(mo)r(d)s Fc(})-224 2454
+y Fh(Apply)28 b(history)f(mo)r(di\014er)g Ff(mo)r(d)-390
+2554 y Fc(${${name\\dots})p Fh(.)8 b(.)14 b(.)g Fc(})-224
+2654 y Fh(P)n(erform)26 b(b)r(oth)i(sets)f(of)h(mo)r(di\014cations)f
+(on)g(v)-5 b(alue)-224 2753 y(N.B.)28 b(do)r(es)f(not)h(do)f(extra)g
+(lo)r(okup,)g(see)g Fc(\(P\))-390 3018 y Fh(Flags:)36
+b(usage)26 b Fc(${\(o\))p Ff(name)5 b Fc(})25 b Fh(etc.)-390
+3169 y Fc(A)122 b(${...:=...})23 b Fh(creates)k(arra)n(y)-390
+3269 y Fc(AA)78 b Fh(.)14 b(.)g(.)g(creates)26 b(asso)r(ciativ)n(e)g
+(arra)n(y)-390 3368 y Fc(@)122 b Fh(Split)28 b(in)n(to)g(w)n(ords)e(in)
+i(double)f(quotes)-390 3468 y Fc(e)122 b Fh(Use)28 b(shell)f(expansion)
+g(on)g(result)-390 3568 y Fc(P)122 b Fh(F)-7 b(orce)27
+b Fc($)p Ff(name)k Fh(to)d(b)r(e)g(re-used)f(as)g(name)-390
+3667 y Fc(o)122 b Fh(sort)27 b(w)n(ords)f(in)i(ascending)f(order)-390
+3767 y Fc(O)122 b Fh(sort)27 b(w)n(ords)f(in)i(descending)f(order)-390
+3867 y Fc(i)122 b Fh(case-indep)r(enden)n(t)27 b(with)h
+Fc(o)g Fh(or)e Fc(O)-390 3966 y(L)122 b Fh(all)27 b(letters)h(lo)n(w)n
+(er)e(case)-390 4066 y Fc(U)122 b Fh(all)27 b(letters)h(upp)r(er)f
+(case)1842 163 y Fc(C)122 b Fh(capitalise)27 b(w)n(ords)1842
+263 y Fc(V)122 b Fh(mak)n(e)27 b(sp)r(ecial)h(c)n(haracters)d(visible)
+1842 362 y Fc(q)122 b Fh(quote)28 b(result)f(with)h Fc(\\)1842
+462 y(qq)78 b Fh(quote)28 b(result)f(with)h Fc(')1842
+562 y(qqq)34 b Fh(quote)28 b(result)f(with)h Fc(")1842
+661 y(qqqq)2008 761 y Fh(quote)g(result)f(with)h Fc($')p
+Fh(.)13 b(.)h(.)g Fc(')1842 860 y(Q)122 b Fh(remo)n(v)n(e)26
+b(one)i(lev)n(el)f(of)g(shell)h(quoting)1842 960 y Fc(\045)122
+b Fh(Expand)27 b(prompt)h(escap)r(es)1842 1060 y Fc(\045\045)78
+b Fh(Expand)27 b(as)g(prompt)h(with)g(curren)n(t)f(settings)1842
+1159 y Fc(X)122 b Fh(Rep)r(ort)28 b(parse)e(errors)g(with)i(quotes,)f
+(patterns)1842 1259 y Fc(c)122 b(${#)p Ff(name)5 b Fc(})26
+b Fh(coun)n(ts)h(c)n(haracters)1842 1359 y Fc(w)122 b(${#)p
+Ff(name)5 b Fc(})26 b Fh(coun)n(ts)h(w)n(ords)1842 1458
+y Fc(W)122 b Fh(As)28 b Fc(w)p Fh(,)f(but)i(coun)n(t)e(empt)n(y)h(w)n
+(ords)1842 1558 y Fc(k)122 b Fh(With)29 b(asso)r(c)d(include)i(k)n(eys)
+1842 1657 y Fc(v)122 b Fh(With)29 b(asso)r(c)d(include)i(v)-5
+b(alues)1842 1757 y Fc(p)122 b Fh(Use)28 b(prin)n(t)g(escap)r(es)e(in)i
+(args)e(b)r(elo)n(w)1842 1857 y Fc(F)122 b Fh(Join)27
+b(w)n(ords)g(with)h(newlines)1842 1956 y Fc(f)122 b Fh(Split)29
+b(on)e(newlines)1842 2056 y Fc(z)122 b Fh(Split)29 b(using)e(ordinary)f
+(parsing)1842 2156 y Fc(t)122 b Fh(Subsituted)29 b(description,)e(not)h
+(v)-5 b(alue)1842 2409 y(Flags)27 b(with)h(delimiters;)g(use)f(an)n(y)g
+(pair)g(of)g(c)n(hars)g(in)h(place)f(of)1842 2509 y(colon,)g(also)g
+(matc)n(hed)g Fc(<>)p Fh(,)g Fc(\(\))p Fh(,)g Fc({})p
+Fh(,)g Fc([])1842 2662 y(l:)p Ff(expr)6 b Fc(::)p Ff(string1)h
+Fc(::)p Ff(string2)g Fc(:)2008 2762 y Fh(P)n(ad)27 b(w)n(ords)f(on)h
+(left)i(to)e Ff(expr)33 b Fh(c)n(hars)26 b(using)2008
+2862 y Ff(string1)33 b Fh(rep)r(eated)28 b(\(default)g(space\),)2008
+2961 y Ff(string2)33 b Fh(app)r(ears)27 b(just)h(once)1842
+3061 y Fc(r:)p Ff(expr)6 b Fc(::)p Ff(string1)h Fc(::)p
+Ff(string2)g Fc(:)2008 3161 y Fh(Ditto)29 b(padded)e(on)h(righ)n(t)1842
+3260 y Fc(j:)p Ff(string)7 b Fc(:)2008 3360 y Fh(Join)27
+b(w)n(ords)g(using)g Ff(string)2008 3459 y Fh(\(o)r(ccurs)g(b)r(efore)h
+(splitting\))1842 3559 y Fc(s:)p Ff(string)7 b Fc(:)2008
+3659 y Fh(Split)29 b(w)n(ords)d(at)h Ff(string)1842 3812
+y Fh(Flags)g(applying)g(with)h Fc(${...#...})c Fh(or)i
+Fc(${...\045...})1842 3966 y(S)122 b Fh(searc)n(h)27
+b(substrings)f(to)r(o)1842 4066 y Fc(I:)p Ff(expr)6 b
+Fc(:)4241 163 y Fh(Searc)n(h/substitute)26 b Ff(expr)6
+b Fh(th)28 b(matc)n(h)4075 263 y Fc(M)122 b Fh(Include)28
+b(matc)n(hed)f(p)r(ortion)4075 362 y Fc(R)122 b Fh(Include)28
+b(unmatc)n(hed)f(p)r(ortion)g(\(Rest\))4075 462 y Fc(B)122
+b Fh(Include)28 b(index)f(of)h(b)r(eginning)4075 562
+y Fc(E)122 b Fh(Include)28 b(index)f(of)h(end)4075 661
+y Fc(N)122 b Fh(Include)28 b(length)f(of)h(matc)n(h)4075
+915 y(Summary)f(of)g(rules)h(for)f(substitution)4075
+1068 y(1)124 b(Nested)28 b(substitution,)g Fc(${${)p
+Fh(.)12 b(.)i(.)g Fc(}})4075 1168 y Fh(2)124 b(Subscript)28
+b(of)f(parameter)f(b)n(y)i(name,)f Fc(${)p Ff(name)5
+b Fc([)p Ff(i)t Fc(]})4075 1268 y Fh(3)124 b Fc(\(P\))26
+b Fh(\015ag)4075 1367 y(4)124 b Fc("${)p Fh(.)13 b(.)g(.)h
+Fc(}")27 b Fh(joining)4075 1467 y(5)124 b(Nested)28 b(subscript,)f
+Fc(${${)p Fh(.)12 b(.)i(.)g Fc(}[)p Ff(i)t Fc(]})4075
+1567 y Fh(6)124 b Fc(#)p Fh(,)27 b Fc(\045)p Fh(,)g Fc(/)p
+Fh(.)37 b Fc(:)27 b Fh(mo)r(di\014cations)4075 1666 y(7)124
+b Fc(\(j\))26 b Fh(\015ag)h(or)g(space)g(joining)4075
+1766 y(8)124 b Fc(\(s\))p Fh(,)26 b Fc(\(f\))p Fh(,)h
+Fc(\(z\))f Fh(or)h Fc(=)g Fh(splitting)4075 1865 y(9)124
+b(Shell)28 b(w)n(ord)e(splitting)i(\(no)g(\015ags\))4075
+1965 y(10)82 b Fc(\(e\))26 b Fh(\015ag)4075 2065 y(11)82
+b Fc(\(l\))26 b Fh(or)h Fc(\(r\))f Fh(padding)4075 2318
+y(Flags)h(in)g(indexing:)37 b(usage)27 b Fc($)p Ff(name)5
+b Fc([\(i\))p Ff(index)h Fc(])24 b Fh(etc.)4075 2472
+y Fc(e)122 b Fh(Bac)n(kw)n(ard)25 b(compatabilit)n(y)i(only)4075
+2571 y Fc(w)122 b Fh(Index)27 b(b)n(y)h(w)n(ords)e(of)i(scalar)4075
+2671 y Fc(s:string:)4241 2771 y Fh(Separate)e(w)n(ords)h(with)h
+Fc(string)4075 2870 y(p)122 b Fh(Use)27 b(prin)n(t)h(escap)r(es)f(in)h
+(follo)n(wing)f Fc(s)4075 2970 y(f)122 b Fh(Index)27
+b(b)n(y)h(lines:)37 b(same)27 b(as)g Fc(pws:\\n:)4075
+3070 y(r)122 b Fh(Rev)n(erse)26 b(index)i(arra)n(y/substring/w)n(ord)
+4241 3169 y(F)-7 b(or)27 b(asso)r(cs,)f(matc)n(h)h(against)g(v)-5
+b(alues)4075 3269 y Fc(R)122 b Fh(As)28 b Fc(r)p Fh(,)f(but)h(last)f
+(matc)n(h)h(\(all)f(for)g(asso)r(cs\))4075 3368 y Fc(k)122
+b Fh(In)28 b(asso)r(c,)e(k)n(eys)h(are)f(patterns;)i(get)f(\014rst)4075
+3468 y Fc(K)122 b Fh(In)28 b(asso)r(c,)e(k)n(eys)h(are)f(patterns;)i
+(get)f(all)4075 3568 y Fc(i)122 b Fh(As)28 b Fc(r)p Fh(,)f(but)h
+(return)f(index)4241 3667 y(F)-7 b(or)27 b(asso)r(cs)f(matc)n(h)h
+(against)g(k)n(eys)4075 3767 y Fc(I)122 b Fh(As)28 b
+Fc(I)p Fh(,)f(but)h(last)f(matc)n(h)h(\(all)f(for)g(asso)r(cs\))4075
+3867 y Fc(n:)p Ff(expr)6 b Fc(:)4241 3966 y Fh(Use)27
+b Fc(expr)p Fh('th)g(\014rst/last)f(matc)n(h)i Fc(b:)p
+Ff(expr)6 b Fc(:)4241 4066 y(r)p Fh(,)27 b Fc(R)p Fh(,)g
+Fc(i)p Fh(,)h Fc(I)f Fh(start)g(searc)n(h)f(at)i Ff(expr)6
+b Fh(th)27 b(elt.)p eop end
+%%Page: 5 5
+TeXDict begin @landscape 5 4 bop -390 -157 a Fh(P)n(age)26
+b(5)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 163 a Fg(5)92 b(Histor)-6 b(y)-390
+263 y Fh(See)28 b(also)e(parameters)g Fe(histc)m(hars)p
+Fh(,)i Fe(HISTFILE)p Fh(,)h Fe(HISTSIZE)p Fh(,)f Fe(SA)-11
+b(VEHIST)29 b Fh(and)e(options)g Fe(APPEND)p 3143 263
+29 4 v 35 w(HISTOR)-8 b(Y)p Fh(,)28 b Fe(CSH)p 3864 263
+V 34 w(JUNKIE)p 4269 263 V 34 w(HISTOR)-8 b(Y)p Fh(,)28
+b Fe(EXTENDED)p 5340 263 V 34 w(HISTOR)-8 b(Y)p Fh(,)-390
+363 y Fe(HIST)p -154 363 V 35 w(ALLO)m(W)p 235 363 V
+35 w(CLOBBER)p Fh(,)27 b Fe(HIST)p 1019 363 V 35 w(IGNORE)p
+1447 363 V 33 w(DUPS)p Fh(,)i Fe(HIST)p 2026 363 V 35
+w(IGNORE)p 2454 363 V 33 w(SP)-8 b(A)m(CE)p Fh(,)28 b
+Fe(HIST)p 3079 363 V 35 w(NO)p 3261 363 V 34 w(STORE)p
+Fh(,)f Fe(HIST)p 3901 363 V 35 w(VERIFY)p Fh(,)h Fe(BANG)p
+4652 363 V 34 w(HIST)p Fh(,)g Fe(HIST)p 5197 363 V 35
+w(BEEP)p Fh(,)-390 463 y Fe(HIST)p -154 463 V 35 w(EXPIRE)p
+252 463 V 34 w(DUPS)p 550 463 V 35 w(FIRST)p Fh(,)g Fe(HIST)p
+1153 463 V 35 w(FIND)p 1432 463 V 1466 463 V 69 w(NO)p
+1648 463 V 34 w(DUPS)p Fh(,)h Fe(HIST)p 2228 463 V 34
+w(IGNORE)p 2655 463 V 34 w(ALL)p 2875 463 V 35 w(DUPS)p
+Fh(,)g Fe(HIST)p 3456 463 V 35 w(NO)p 3638 463 V 33 w(FUNCTIONS)p
+Fh(,)f Fe(HIST)p 4531 463 V 35 w(REDUCE)p 4979 463 V
+34 w(BLANKS)p Fh(,)-390 562 y Fe(HIST)p -154 562 V 35
+w(SA)-11 b(VE)p 130 562 V 35 w(NO)p 312 562 V 33 w(DUPS)p
+Fh(,)29 b Fe(INC)p 841 562 V 34 w(APPEND)p 1288 562 V
+35 w(HISTOR)-8 b(Y)p Fh(,)28 b Fe(SHARE)p 2147 562 V
+34 w(HISTOR)-8 b(Y)p Fh(.)-390 662 y(Ev)n(en)n(ts:)-390
+845 y Fc(!)454 b Fh(start)27 b(history)g(substitution)h(unless)f(after)
+108 944 y(space,)g(newline,)h Fc(=)p Fh(,)f Fc(\()-390
+1044 y(!!)410 b Fh(immediately)28 b(previous)e(command)-390
+1144 y Fc(!)p Ff(n)408 b Fh(command)27 b(line)h Ff(n)1842
+845 y Fc(!-)p Ff(n)365 b Fh(line)27 b Ff(n)h Fh(b)r(efore)f(curren)n(t)
+1842 944 y Fc(!)p Ff(str)357 b Fh(last)27 b(line)h(b)r(eginning)f(with)
+h Ff(str)1842 1044 y Fc(!)p Ff(?str)6 b Fe([)o Fc(?)p
+Fe(])215 b Fh(last)27 b(line)h(con)n(taining)e Ff(str)1842
+1144 y Fc(!#)411 b Fh(curren)n(t)26 b(command)h(so)g(far)4075
+845 y Fc(!{...})234 b Fh(insulate)27 b(history)g(reference)4075
+944 y Fc(!")410 b Fh(no)27 b(more)g(expansion)g(this)h(line)-390
+1312 y(W)-7 b(ords:)36 b(separated)27 b(from)g(ev)n(en)n(t)g(b)n(y)g
+(`:')-390 1511 y Fc(0)454 b Fh(\014rst)27 b(w)n(ord)g(on)g(line)h
+(\(command\))-390 1611 y Ff(n)452 b(n)p Fh(th)28 b(argumen)n(t)f(of)g
+(command)-390 1710 y Fc(^)454 b Fh(\014rst)27 b(argumen)n(t)g(of)h
+(command)-390 1810 y Fc($)454 b Fh(last)27 b(argumen)n(t)g(of)g
+(command)1842 1511 y Fc(\045)455 b Fh(w)n(ord)26 b(matc)n(hed)h(b)n(y)h
+Fc(?s)1842 1611 y Ff(x)6 b Fc(-)p Ff(y)361 b Fh(range)26
+b(of)h(w)n(ords)1842 1710 y Fc(-)p Ff(y)411 b Fh(same)27
+b(as)f Fc(0-)p Ff(y)1842 1810 y Fc(*)455 b Fh(all)27
+b(argumen)n(ts)4075 1511 y Ff(x)6 b Fc(*)404 b Fh(same)27
+b(as)g Ff(x)6 b Fc(-$)4075 1611 y Ff(x)g Fc(-)404 b Fh(same)27
+b(but)h(omit)g(w)n(ord)e Fc($)-390 1979 y Fh(Mo)r(di\014ers:)36
+b(also)27 b(with)h(globbing)f(and)g(parameters)-390 2178
+y Fc(h)454 b Fh(\(head\))28 b(strip)f(last)h(path)f(cpt)-390
+2277 y Fc(r)454 b Fh(remo)n(v)n(e)26 b(su\016x)i Fc(.)p
+Ff(suf)-390 2377 y Fc(e)454 b Fh(lea)n(v)n(e)26 b(only)i(su\016x)f
+Ff(suf)-390 2477 y Fc(t)454 b Fh(\(tail\))28 b(lea)n(v)n(e)f(only)g
+(last)g(path)h(cpt)-390 2576 y Fc(&)454 b Fh(rep)r(eat)27
+b(last)h(substitution)-390 2676 y Fc(p)454 b Fh(don't)28
+b(execute)f(new)h(command)-390 2776 y Fc(q)454 b Fh(quote)27
+b(w)n(ords)g(from)g(further)g(subst)1842 2178 y Fc(Q)455
+b Fh(remo)n(v)n(e)25 b(one)j(lev)n(el)f(of)g(quotes)1842
+2277 y Fc(x)455 b Fh(same)27 b(but)h(split)g(w)n(ords)e(at)h(space)1842
+2377 y Fc(l)455 b Fh(all)27 b(letters)g(lo)n(w)n(er)f(case)1842
+2477 y Fc(u)455 b Fh(all)27 b(letters)g(upp)r(er)h(case)1842
+2576 y Fc(s/)p Ff(old)s Fc(/)p Ff(new)7 b Fe([)o Fc(/)p
+Fe(])2341 2676 y Fh(replace)26 b Ff(old)31 b Fh(b)n(y)c
+Ff(new)35 b Fh(\(string\))1842 2776 y Fc(g)455 b Fh(\(b)r(efore)27
+b(s\))h(c)n(hange)e(ev)n(ery)h(o)r(ccurrence)4075 2178
+y Fc(f)454 b Fh(rep)r(eat)27 b(till)h(no)g(further)f(c)n(hange)4075
+2277 y Fc(F:)p Ff(expr)6 b Fc(:)200 b Fh(same)27 b(but)h(max)f
+Ff(expr)33 b Fh(c)n(hanges)4075 2377 y Fc(w)454 b Fh(\(as)27
+b(pre\014x\))h(apply)f(to)g(eac)n(h)g(w)n(ord)4075 2477
+y Fc(W:)p Ff(sep)s Fc(:)247 b Fh(same)27 b(but)h(separate)e(w)n(ords)h
+(on)g Ff(sep)-390 2944 y Fg(6)92 b(P)-7 b(arameters)-390
+3127 y Fh(Sp)r(ecial)28 b(parameters:)35 b(arra)n(ys)25
+b(are)h(lo)n(w)n(er)g(case)h(except)h Fc(status)p Fh(;)-390
+3227 y(those)f(mark)n(ed)96 3197 y Fa(y)157 3227 y Fh(are)g
+(assignable:)-390 3367 y Fc(!)550 b Fh(Last)27 b(bg)g(PID)-390
+3467 y Fc(ARGC)-390 3566 y(#)550 b Fh(P)n(os.)26 b(param)h(coun)n(t)
+-390 3666 y Fc($)550 b Fh(Curren)n(t)27 b(PID)-390 3765
+y Fc(-)550 b Fh(Shell)28 b(\015ags)e(set)-390 3866 y
+Fc(argv)-214 3836 y Fa(y)-390 3966 y Fc(*)-346 3936 y
+Fa(y)204 3966 y Fh(P)n(os.)g(params)g(as)h(arra)n(y)-390
+4066 y Fc(@)550 b Fh(Same)27 b(as)g Fc(argv[@])1842 3127
+y(status)1842 3227 y(?)550 b Fh(Last)27 b(prog)g(status)1842
+3326 y Fc(pipestatus)154 b Fh(Arra)n(y)26 b(of)i(statuses)f(for)g(pip)r
+(eline)1842 3426 y Fc(_)550 b Fh(Last)27 b(arg)g(of)g(prev)g(cmd)1842
+3526 y Fc(CPUTYPE)286 b Fh(CPU)28 b(determined)f(at)h(run)f(time)1842
+3626 y Fc(EGID)2018 3596 y Fa(y)2436 3626 y Fh(E\013ectiv)n(e)g(GID)
+1842 3726 y Fc(EUID)2018 3696 y Fa(y)2436 3726 y Fh(E\013ectiv)n(e)g
+(UID)1842 3826 y Fc(ERRNO)374 b Fh(System)28 b(error)e(no.)1842
+3926 y Fc(GID)1974 3896 y Fa(y)2436 3926 y Fh(Curren)n(t)h(GID)1842
+4026 y Fc(HOST)418 b Fh(Curren)n(t)27 b(host)g(name)4075
+3127 y Fc(LINENO)330 b Fh(Input)28 b(line)g(no.)4075
+3227 y Fc(LOGNAME)286 b Fh(User)27 b(name)4075 3326 y
+Fc(MACHTYPE)242 b Fh(Mac)n(hine)27 b(t)n(yp)r(e)4075
+3426 y Fc(OLDPWD)330 b Fh(Previous)25 b(w)n(orking)h(dir.)4075
+3526 y Fc(OPTARG)4075 3625 y(OPTIND)330 b Fh(V)-7 b(alue,)27
+b(index)h(of)g(last)f Fe(getopts)g Fh(option)4075 3725
+y Fc(OSTYPE)330 b Fh(OS)27 b(t)n(yp)r(e)4075 3824 y Fc(PPID)418
+b Fh(PID)27 b(of)h(paren)n(t)f(pro)r(c.)4075 3924 y Fc(PWD)462
+b Fh(Curren)n(t)26 b(w)n(orking)g(dir.)4075 4024 y Fc(RANDOM)4339
+3994 y Fa(y)4669 4024 y Fh(Random)h(in)n(teger:)36 b(assign)26
+b(to)i(seed.)p eop end
+%%Page: 6 6
+TeXDict begin @landscape 6 5 bop -390 -157 a Fh(P)n(age)26
+b(6)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 163 a Fc(SECONDS)-82 133 y Fa(y)204
+163 y Fh(Seconds)g(since)g(start)g(of)h(shell)-390 263
+y Fc(SHLVL)374 b Fh(Incremen)n(ted)27 b(for)g(eac)n(h)g(zsh)-390
+362 y Fc(signals)286 b Fh(Names)27 b(of)h(signals)-390
+462 y Fc(TTY)462 b Fh(Name)27 b(of)h(shell)f(terminal)-390
+562 y Fc(TTYIDLE)286 b Fh(Idle)28 b(time)g(of)f(tt)n(y)h(\(secs.\))37
+b(or)27 b(-1)-390 662 y Fc(UID)-258 632 y Fa(y)204 662
+y Fh(UID)-390 762 y Fc(USERNAME)-38 732 y Fa(y)204 762
+y Fh(username)-390 862 y Fc(VENDOR)330 b Fh(Mac)n(hine)27
+b(man)n(ufacturer)-390 962 y Fc(ZSH_NAME)242 b Fh(Shell)28
+b(in)n(v)n(o)r(cation)e(name)-390 1061 y Fc(ZSH_VERSION)110
+b Fh(ID)28 b(of)f(zsh)h(v)n(ersion)-390 1294 y(Other)f(parameters)f
+(used)i(b)n(y)f(shell)g(\()806 1264 y Fa(y)841 1294 y
+Fh(colon-separated)e(path\))-390 1427 y Fc(ARGV0)457
+b Fh(Exp)r(ort)27 b(to)g(c)n(hange)g Fc(argv[0])-390
+1527 y(BAUD)501 b Fh(Line)28 b(sp)r(eed)f(\(zero)g(to)h(ignore\))-390
+1627 y Fc(cdpath)p Fh(,)d Fc(CDPATH)186 1597 y Fa(y)287
+1627 y Fh(Directories)h(searc)n(h)g(for)h Fe(cd)i Fh(command)-390
+1727 y Fc(COUMNS)413 b Fh(No.)27 b(of)h(columns)f(on)h(terminal)-390
+1826 y Fc(DIRSTACKSIZE)149 b Fh(Max)27 b(size)g(of)h(dir.)f(stac)n(k)
+-390 1926 y Fc(FCEDIT)413 b Fh(Default)28 b(editor)f(for)g
+Fe(fc)i Fh(cmd.)-390 2026 y Fc(fignore)p Fh(,)c Fc(FIGNORE)274
+1996 y Fa(y)370 2026 y Fh(Su\016xes)i(ignored)g(for)g(completion)-390
+2127 y Fc(fpath)p Fh(,)f Fc(FPATH)99 2097 y Fa(y)287
+2127 y Fh(P)n(ath)h(to)g(searc)n(h)f(for)h(autoload)g(fns.)-390
+2226 y Fc(histchars)281 b Fh(three)27 b(c)n(hars:)36
+b(1\))27 b(start)g(of)h(history)f(\()p Fc(!)p Fh(\),)-224
+2326 y(2\))h(quic)n(k)f(history)f(sub)i(\()p Fc(^)p Fh(\),)g(3\))f
+(commen)n(t)h(\()p Fc(#)p Fh(\))-390 2426 y Fc(HISTCHARS)281
+b Fh(same)27 b(as)g Fc(histchars)-390 2525 y(HISTFILE)325
+b Fh(Where)27 b(to)h(sa)n(v)n(e)e(shell)h(history)-390
+2625 y Fc(HISTSIZE)325 b Fh(Max)27 b(history)g(lines)g(in)n(ternally)
+1842 163 y Fc(HOME)501 b Fh(Default)29 b(target)d(for)h
+Fe(cd)i Fh(cmd.)1842 263 y Fc(IFS)545 b Fh(W)-7 b(ord)27
+b(sep)r(erators)f(for)h(input)1842 362 y Fc(KEYTIMEOUT)237
+b Fh(Time)28 b(to)g(w)n(aits)e(for)i(k)n(ey)e(in)i(sequence)1842
+462 y Fc(LANG)501 b Fh(General)27 b(lo)r(cale)g(setting)1842
+562 y Fc(LC_ALL)413 b Fh(Ov)n(errides)26 b Fc(LANG)g
+Fh(and)h(other)g Fc(LC_*)1842 661 y(LC_COLLATE)237 b
+Fh(Determines)28 b(c)n(haracter)e(ordering)1842 761 y
+Fc(LC_CTYPE)325 b Fh(Determines)28 b(t)n(yp)r(es)g(of)f(c)n(haracters)
+1842 860 y Fc(LC_MESSAGES)193 b Fh(F)-7 b(or)27 b(messages:)35
+b(not)28 b(used)g(b)n(y)f(zsh)1842 960 y Fc(LC_NUMERIC)237
+b Fh(F)-7 b(or)27 b(decimal)h(p)r(oin)n(t,)f(n)n(um)n(b)r(er)h
+(separator)1842 1060 y Fc(LC_TIME)369 b Fh(Date)28 b(and)f(time)i
+(format)1842 1159 y Fc(LINES)457 b Fh(No.)28 b(of)f(lines)h(on)f
+(terminal)1842 1259 y Fc(LISTMAX)369 b Fh(No.)28 b(of)f(\014les)h(to)f
+(list)h(without)g(asking)1842 1359 y Fc(LOGCHECK)325
+b Fh(Ho)n(w)27 b(often)h(to)g(c)n(hec)n(k)e Fc(watch)g
+Fh(\(secs.\))1842 1458 y Fc(MAIL)501 b Fh(File)28 b(to)g(c)n(hec)n(k)e
+(for)h(mail)1842 1558 y Fc(MAILCHECK)281 b Fh(Ho)n(w)27
+b(often)h(to)g(c)n(hec)n(k)e Fc(MAIL)g Fh(\(secs.\))1842
+1658 y Fc(mailpath)p Fh(,)f Fc(MAILPATH)2594 1628 y Fa(y)2008
+1758 y Fh(List)j(of)g(\014les)f(to)h(c)n(hec)n(k)e(for)h(new)h(mail.)37
+b(Can)27 b(follo)n(w)2008 1857 y(eac)n(h)g(with)h Fc(?'message)40
+b(to)j(print')1842 1958 y(manpath)p Fh(,)25 b Fc(MANPATH)2506
+1928 y Fa(y)2008 2057 y Fh(Not)j(used)g(b)n(y)f(shell,)h(probably)e
+(used)i(b)n(y)g Fe(man)g Fh(cmd.)1842 2158 y Fc(module)p
+2111 2158 27 4 v 29 w(path)p Fh(,)e Fc(MODULE)p 2629
+2158 V 29 w(PATH)2829 2128 y Fa(y)2008 2257 y Fh(P)n(ath)h(for)g
+(dynamic)h(mo)r(dules;)f(not)h(imp)r(orted)1842 2357
+y Fc(NULLCMD)369 b Fh(Used)28 b(for)f(redirs.)g(with)h(no)f(cmd.)1842
+2457 y Fc(path)p Fh(,)f Fc(PATH)2243 2427 y Fa(y)2519
+2457 y Fh(Where)i(to)f(searc)n(h)f(for)h(commands)1842
+2557 y Fc(POSTEDIT)325 b Fh(Output)28 b(when)g(line)g(editor)f(exits)
+1842 2657 y Fc(PROMPT)p Fh(,)f Fc(prompt)4075 163 y(PS1)545
+b Fh(Prompt)26 b(used)i(b)n(y)f(editor)4075 263 y Fc(PROMPT2)p
+Fh(,)e Fc(PS2)189 b Fh(Con)n(tin)n(uation)26 b(prompt)4075
+362 y Fc(PROMPT3)p Fh(,)f Fc(PS3)189 b Fh(Prompt)26 b(used)i(b)n(y)g
+Fe(select)f Fh(cmd.)4075 462 y Fc(PROMPT4)e(PS4)212 b
+Fh(Execution)27 b(trace)f(prompt)4075 562 y Fc(psvar)p
+Fh(,)f Fc(PSVAR)4563 532 y Fa(y)4752 562 y Fh(Replace)i
+Fc(\045v)g Fh(in)h(prompts)4075 662 y Fc(READNULLCMD)193
+b Fh(Command)27 b(used)h(with)g(only)f(input)h(readir.)4075
+762 y Fc(REPORTTIME)237 b Fh(Longer)26 b(commands)h(prin)n(t)g(usage)g
+(\(secs.\))4075 861 y Fc(RPROMPT)4075 961 y(RPS1)501
+b Fh(Prompt)26 b(displa)n(y)n(ed)h(at)g(righ)n(t)g(of)h(line)4075
+1060 y Fc(SAVEHIST)325 b Fh(Max)27 b(no.)g(of)h(lines)f(in)h(history)f
+(\014le)4075 1160 y Fc(SPROMPT)369 b Fh(Prompt)26 b(used)i(for)f(sp)r
+(elling)h(correction)4075 1260 y Fc(STTY)501 b Fh(Args.)36
+b(to)27 b(follo)n(w)h Fe(stt)m(y)p Fh(,)4752 1359 y(exp)r(ort)f(to)g
+(run)h(b)r(efore)f(external)g(cmd.)4075 1459 y Fc(TERM)501
+b Fh(T)n(yp)r(e)27 b(of)h(terminal)f(for)g(editing)4075
+1559 y Fc(TIMEFMT)369 b Fh(F)-7 b(ormat)27 b(of)g(pro)r(cess)g(time)h
+(rep)r(orts)4075 1658 y Fc(TMOUT)457 b Fh(SIGALRM)28
+b(if)g(idle)g(this)g(long)f(\(secs.\))4075 1758 y Fc(TMPPREFIX)281
+b Fh(P)n(ath)26 b(to)i(temp)g(\014les)g(\()p Fe(/tmp/zsh)p
+Fh(\))4075 1858 y Fc(watch)p Fh(,)d Fc(WATCH)4563 1828
+y Fa(y)4752 1858 y Fh(List)i(of)h(users)f(to)g(w)n(atc)n(h)g(log)g
+(in/out)4752 1958 y(\(also)f Fe(all)p Fh(,)i Fe(notme)p
+Fh(,)f Fc(\045)g Fh(tt)n(y)-7 b(,)28 b Fc(@)f Fh(host\))4075
+2057 y Fc(WATCHFMT)325 b Fh(F)-7 b(ormat)27 b(of)34 b
+Fc(watch)25 b Fh(rep)r(orts)4075 2157 y Fc(WORDCHARS)281
+b Fh(Non-alphan)n(umeric)26 b(c)n(haracters)f(used)4752
+2257 y(as)i(part)g(of)g(a)g(w)n(ord)g(b)n(y)g(editor)4075
+2356 y Fc(ZBEEP)457 b Fh(Sequence)27 b(to)h(output)g(instead)f(of)h(b)r
+(eeping)4075 2456 y Fc(ZDOTDIR)369 b Fh(Where)27 b(to)h(\014nd)g
+Fc(.zshrc)d Fh(etc.)-390 2848 y(Prompt)i(escap)r(e)g(sequences:)36
+b(those)27 b(with)992 2818 y Fa(y)1027 2848 y Fh(can)g(use)h(in)n
+(teger)e(coun)n(t)i Ff(n)p Fh(,)f(whic)n(h)h(m)n(ust)g(immediately)f
+(follo)n(w)g Fc(\045)p Fh(.)37 b(Default)28 b(is)g(1)f(except)g(for)g
+Fc(\045_)p Fh(.)-390 3047 y Fc(\045\045)327 b Fh(A)28
+b(`\045')-390 3147 y Fc(\045\))327 b Fh(A)28 b(`\)')-390
+3247 y Fc(\045d)f(\045/)-187 3217 y Fa(y)25 3247 y Fc($PWD)-390
+3347 y(\045~)-302 3317 y Fa(y)25 3347 y Fc($PWD)p Fh(,)f(but)i(use)g
+Fc(~)p Fh(-abbrevs)-390 3447 y Fc(\045h)f(\045!)212 b
+Fh(Curren)n(t)27 b(history)g(ev)n(en)n(t)g(no.)-390 3547
+y Fc(\045L)327 b Fh(The)28 b(curren)n(t)f(v)-5 b(alue)27
+b(of)h Fc($SHLVL)-390 3646 y(\045M)327 b Fh(F)-7 b(ull)28
+b(hostname)-390 3747 y Fc(\045m)-302 3717 y Fa(y)25 3747
+y Fh(Host)g(up)g(to)f Ff(n)p Fh('th)h(dot)-390 3846 y
+Fc(\045S)f(\045B)g(\045U)97 b Fh(Start)28 b(standout,)f(b)r(old,)h
+(underline)-390 3946 y Fc(\045s)f(\045b)g(\045u)97 b
+Fh(Stop)28 b(corresp)r(onding)d(mo)r(de)-390 4046 y Fc(\045t)i(\045@)
+212 b Fh(Time)28 b(in)g(12)e(hour)h(format)1842 3047
+y Fc(\045T)328 b Fh(Time)27 b(in)h(24)f(hour)g(format)1842
+3147 y Fc(\045*)328 b Fh(Same)27 b(with)h(seconds)1842
+3246 y Fc(\045n)328 b($USERNAME)1842 3346 y(\045N)g Fh(Name)27
+b(of)h(script,)f(sourced)f(\014le,)i(function)1842 3446
+y Fc(\045i)328 b Fh(Line)27 b(n)n(um)n(b)r(er)g(inside)h
+Fc(\045N)1842 3545 y(\045w)328 b Fh(Date)27 b(as)g Fc(day-dd)1842
+3645 y(\045W)328 b Fh(Date)27 b(as)g Fc(mm/dd/yy)1842
+3744 y(\045D)328 b Fh(Date)27 b(as)g Fc(yy-mm-dd)1842
+3844 y(\045D{)p Ff(string)7 b Fc(})2258 3944 y Fh(Use)27
+b Fc(strftime)d Fh(to)k(format)f Ff(string)1842 4043
+y Fc(\045l)328 b Fh(Curren)n(t)26 b(tt)n(y)4075 3047
+y Fc(\045?)327 b Fh(Return)28 b(status)f(of)h(last)f(command)4075
+3147 y Fc(\045_)4163 3117 y Fa(y)4490 3147 y Fh(P)n(arser)e(status,)i
+Ff(n)h Fh(for)f(max)g(lev)n(el)4075 3247 y Fc(\045E)327
+b Fh(Clear)27 b(to)g(end)h(of)f(line)4075 3347 y Fc(\045#)327
+b(#)27 b Fh(if)h(ro)r(ot,)f(else)g Fc(\045)4075 3447
+y(\045v)4163 3417 y Fa(y)4490 3447 y Ff(n)p Fh('th)h(elemen)n(tt)g(of)g
+Fc($psvar)4075 3547 y(\045{...\045})107 b Fh(String)27
+b(whic)n(h)h(do)r(es)f(not)h(mo)n(v)n(e)e(cursor)4075
+3646 y Fc(\045<string<)e(\045>string>)g(\045[<string])f(\045[>string])
+4490 3746 y Fh(T)-7 b(runcate)27 b Fc(string)e Fh(on)i(L)h(or)f(R,)4490
+3846 y Ff(n)h Fh(giv)n(es)e(max)h(length.)4075 3946 y
+Fc(\045c)4163 3916 y Fa(y)4224 3946 y Fc(\045.)4312 3916
+y Fa(y)4490 3946 y Fh(Comp)r(onen)n(t)g(of)h Fc($PWD)e
+Fh(\(deprecated\))4075 4046 y Fc(\045C)327 b Fh(Same)27
+b(but)i(don't)e(expand)h Fc(~)p Fh('s)p eop end
+%%Page: 7 7
+TeXDict begin @landscape 7 6 bop -390 -157 a Fh(P)n(age)26
+b(7)2706 b(Zsh)27 b(Reference)g(Card)2700 b(zsh)27 b(3.0)p
+-390 -124 6615 4 v -390 304 a(Co)r(des)g(for)g(ternary)g(expressions)f
+(in)h(prompts,)h(format)-390 404 y Fc(\045\()p Ff(c)n(har)6
+b Fc(.)p Ff(true-text)r Fc(.)p Ff(false-text)r Fc(\))p
+Fh(,)23 b(in)n(teger)k(coun)n(t)g Ff(n)h Fh(ma)n(y)-390
+503 y(pro)r(ceded)f(or)g(follo)n(w)g(`)p Fc(\()p Fh('.)36
+b(T)-7 b(est)28 b(is)f(true)h(if:)-390 636 y Fc(c)f(.)h(~)145
+b Fh(Tilde'd)28 b(path)g(has)f Fb(>)p Fh(=)22 b Fb(n)28
+b Fh(elts)-390 736 y Fc(/)f(C)217 b Fh(Ditto)28 b(for)f(absolute)g
+(path)-390 836 y Fc(t)288 b Fh(Curren)n(t)27 b(min)n(ute)h(is)f
+Ff(n)-390 935 y Fc(T)288 b Fh(Curren)n(t)27 b(hour)g(is)g
+Ff(n)-390 1035 y Fc(d)288 b Fh(Curren)n(t)27 b(da)n(y)g(of)g(mon)n(th)h
+(is)f Ff(n)-390 1134 y Fc(D)288 b Fh(Mon)n(th)28 b(is)f
+Ff(n)h Fh(\(Jan)23 b(=)f(0\))-390 1234 y Fc(w)288 b Fh(W)-7
+b(eekda)n(y)27 b(is)g Ff(n)h Fh(\(Sun)c(=)f(0\))1842
+163 y Fc(?)288 b Fh(Last)28 b(exit)f(status)h(w)n(as)e
+Ff(n)1842 263 y Fc(#)288 b Fh(Running)28 b(as)f(uid)h
+Ff(n)1842 362 y Fc(g)288 b Fh(Running)28 b(as)f(gid)h
+Ff(n)1842 462 y Fc(L)288 b($SHLVL)21 b Fb(>)p Fh(=)h
+Fb(n)1842 562 y Fc(S)288 b($SECONDS)20 b Fb(>)p Fh(=)i
+Fb(n)1842 661 y Fc(v)288 b(${#psvar})20 b Fb(>)p Fh(=)i
+Fb(n)1842 761 y Fc(_)288 b Fh(A)n(t)28 b(least)g Ff(n)f
+Fh(shell)h(constructs)1842 860 y Fc(!)288 b Fh(T)-7 b(rue)28
+b(if)g(shell)f(is)h(priv)n(eleged)1842 1095 y(Escap)r(e)f(sequences)g
+(in)h Fc($WATCHFMT)p Fh(:)1842 1229 y Fc(\045n)328 b
+Fh(Name)27 b(of)h(user)4075 163 y Fc(\045a)327 b Fh(`logged)26
+b(on')i(or)e(`logged)h(o\013)6 b(')4075 263 y Fc(\045l)327
+b Fh(User's)27 b(tt)n(y)4075 362 y Fc(\045M)327 b Fh(F)-7
+b(ull)28 b(remote)f(host)g(name)4075 462 y Fc(\045m)327
+b Fh(Host)27 b(to)h(\014rst)f(`.')4075 562 y Fc(\045S)g(\045U)f(\045B)
+98 b Fh(Start)27 b(standout,)h(underline,)f(b)r(oldface)4075
+661 y Fc(\045s)g(\045u)f(\045b)98 b Fh(Stop)28 b(corresp)r(onding)d(mo)
+r(de)4075 761 y Fc(\045t)i(\045@)212 b Fh(Time)28 b(in)g(12-hour)d
+(format)4075 860 y Fc(\045T)327 b Fh(Time)28 b(in)g(24-hour)d(format)
+4075 960 y Fc(\045w)327 b Fh(Date)28 b(as)f Fc(day-dd)4075
+1060 y(\045W)327 b Fh(Date)28 b(as)f Fc(mm/dd/yy)4075
+1159 y(\045D)327 b Fh(Date)28 b(as)f Fc(yy-mm-dd)-390
+1444 y Fh(T)-7 b(ernary)26 b(expressions)g(in)i Fc($WATCHFMT)p
+Fh(,)c(format)j Fc(\045\()p Ff(c)n(har)6 b Fc(.)p Ff(true-text)r
+Fc(.)p Ff(false-text)r Fc(\))p Fh(,)23 b(can)k(b)r(e)h(used)g(with)g
+Fc(l)p Fh(,)f Fc(n)p Fh(,)h Fc(m)f Fh(or)g Fc(M)g Fh(\(true)h(if)g
+(non-empt)n(y)f(v)-5 b(alue)27 b(for)h(corresp)r(onding)d
+Fc(\045)p Fh(\),)j(or)e Fc(a)i Fh(\(true)g(for)f(login,)g(false)g(for)
+-390 1544 y(logout\).)-390 1743 y Fg(7)92 b(Conditions)-390
+1926 y Fh(File)28 b(tests:)37 b(follo)n(w)n(ed)26 b(b)n(y)i(a)f(\014le)
+h(name)-390 2059 y Fe(Cond)-224 2158 y(true)k(if)g(\014le)-390
+2258 y Fc(-a)78 b Fh(exists)-390 2358 y Fc(-b)g Fh(blo)r(c)n(k)27
+b(sp)r(ecial)-390 2457 y Fc(-c)78 b Fh(c)n(haracter)26
+b(sp)r(ecial)-390 2557 y Fc(-d)78 b Fh(directory)-390
+2657 y Fc(-e)g Fh(exists)-390 2756 y Fc(-f)g Fh(plain)28
+b(\014le)-390 2856 y Fc(-g)78 b Fh(has)27 b(setgid)g(bit)i(set)-390
+2955 y Fc(-h)78 b Fh(sym)n(b)r(olic)27 b(link)-390 3055
+y Fc(-k)78 b Fh(has)27 b(stic)n(ky)g(bit)h(set)-390 3155
+y Fc(-p)78 b Fh(FIF)n(O/pip)r(e)-390 3254 y Fc(-r)g Fh(readable)-390
+3354 y Fc(-s)g Fh(has)27 b(size)g Fb(>)c Fh(0)-390 3454
+y Fc(-u)78 b Fh(has)27 b(setuid)h(bit)g(set)-390 3553
+y Fc(-w)78 b Fh(writeable)1842 1926 y Fc(-x)g Fh(executable/dir.)27
+b(readable:)1842 2026 y Fc(-L)78 b Fh(sym)n(b)r(olic)28
+b(link)1842 2125 y Fc(-O)78 b Fh(o)n(wned)27 b(b)n(y)h(UID)1842
+2225 y Fc(-G)78 b Fh(o)n(wned)27 b(b)n(y)h(GID)1842 2324
+y Fc(-S)78 b Fh(so)r(c)n(k)n(et)1842 2424 y Fc(-N)g Fh(access)27
+b(time)h(not)g(new)n(er)e(than)i(mo)r(d)g(time)1842 2670
+y(Other)f(tests)h(with)g(single)f(argumen)n(t:)1842 2816
+y Fc(-n)78 b Fh(string,)27 b(length)h Fb(>)23 b Fh(0)1842
+2916 y Fc(-o)78 b Fh(option,)28 b(is)f(set)1842 3015
+y Fc(-t)78 b Fh(fd,)29 b(op)r(en)e(to)h(tt)n(y)1842 3115
+y Fc(-z)78 b Fh(string,)27 b(length)h(zero)1842 3361
+y(Tw)n(o)f(argumen)n(t)g(tests)g(\()p Fe([[)p Ff(a)g
+Fc(test)f Ff(b)k Fe(])o(])p Fh(\):)1842 3507 y Fc(-nt)k
+Fh(\014le)28 b Ff(a)f Fh(new)n(er)g(than)h Ff(b)4075
+1926 y Fc(-ot)34 b Fh(\014le)28 b Ff(a)f Fh(older)g(than)g
+Ff(b)4075 2026 y Fc(-ef)34 b Fh(names)27 b(refer)g(to)g(same)g(\014le)
+4075 2125 y Fc(=)4075 2225 y(==)78 b Ff(string)34 b Fh(matc)n(hes)27
+b Ff(pattern)4075 2324 y Fc(!=)78 b Fh(.)14 b(.)g(.)g(do)r(es)27
+b(not)g(matc)n(h)4075 2424 y Fc(<)122 b Fh(ASCI)r(I)28
+b(b)r(efore)4075 2524 y Fc(>)122 b Fh(ASCI)r(I)28 b(after)4075
+2623 y Fc(-eq)34 b Fh(Num)n(b)r(ers)27 b(equal)4075 2723
+y Fc(-ne)34 b Fh(Num)n(b)r(ers)27 b(unequal)4075 2823
+y Fc(-lt)34 b Fh(Numeric)27 b Fb(a)c(<)g(b)4075 2922
+y Fc(-gt)34 b Fh(Numeric)27 b Fb(a)c(>)g(b)4075 3022
+y Fc(-le)34 b Fh(Numeric)27 b Fb(a)c Fd(\024)g Fb(b)4075
+3121 y Fc(-ge)34 b Fh(Numeric)27 b Fb(a)c Fd(\025)g Fb(b)4075
+3387 y Fh(Also)k(grouping)g Fe(\()p Fh(.)14 b(.)g(.)g
+Fe(\))p Fh(,)28 b(negation)f Fc(!)p Fh(,)g(and)h Fc(&&)p
+Fh(,)e(or)h Fc(||)p Fh(;)g(sp)r(ecial)4075 3487 y(handling)g(of)34
+b Fe(/dev/fd)p Fh(.)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/refcard.tex b/refcard.tex
new file mode 100644 (file)
index 0000000..b9c6a58
--- /dev/null
@@ -0,0 +1,951 @@
+\documentclass{article}
+% Needed for multiple column output:
+\usepackage{multicol}
+% Used to get a reasonable A4 size:
+%\usepackage{a4wide}
+\oddsidemargin 0.05 in
+\evensidemargin 0.05 in
+\marginparwidth 0.75 in
+\voffset -0.6in
+\hoffset -0.7in
+\textheight 170 mm
+\textwidth 280 mm
+
+% Used for easy swapping to landscape:
+%\usepackage{portland}
+% Needed for easy redefinition of running headings/page style:
+\usepackage{fancyheadings}
+% Needed for boldsymbol (distinguishes sorts of square brackets):
+\usepackage{amsmath}
+%% % Needed for complex if-then-else structures as used in Lentry
+%% \usepackage{ifthen}
+%% \usepackage{calc}
+
+\lhead{Page \rm\thepage}
+\chead{Zsh Reference Card}
+\rhead{zsh 3.0}
+\cfoot{}
+
+% Make the section command a little more manageable.
+% This makes it look more like a normal subsection.
+\makeatletter
+\renewcommand{\section}{\@startsection
+  {section}%                          % name
+  {1}%                                % level
+  {0mm}%                              % indent
+  {-\baselineskip}%                   % beforeskip
+  {0.1pt}%                 % afterskip
+  {\normalfont\normalsize\scshape}} % style
+\makeatother
+
+
+% Command for environment that contains a piece of code.
+\newcommand{\codelabel}[1]{\mbox{\textsl{#1}}\hfil}
+\newenvironment{code}%
+{\begin{list}{}{\renewcommand{\makelabel}{\codelabel}%
+    \setlength{\rightmargin}{0pt}%
+    \setlength{\leftmargin}{1em}}}%
+{\end{list}}
+
+
+\newcommand\B[1]{\textbf{#1}}
+\newcommand\I[1]{\textsl{#1}}
+\newcommand\T[1]{\texttt{#1}}
+
+% Left/right square brackets in bold (actual text for syntax
+% table, optional arguments in commands etc.)
+\newcommand\Lsq{\ensuremath{\boldsymbol{[}}}
+\newcommand\Rsq{\ensuremath{\boldsymbol{]}}}
+% Left/right square brackets (indicates optional in syntax entries)
+\newcommand\Lop{\ensuremath{[}}
+\newcommand\Rop{\ensuremath{]}}
+% Left/right curly brackets
+\newcommand\Lcu{\ensuremath{\mathbf{\{}}}
+\newcommand\Rcu{\ensuremath{\mathbf{\}}}}
+% Left/right parentheses
+\newcommand\Lpa{\textbf{(}}
+\newcommand\Rpa{\textbf{)}}
+
+% Dagger for marking things
+\newcommand\D{$^\dag$}
+
+\newlength{\codesep}
+\setlength{\codesep}{1.5mm}
+
+\parindent = 0pt
+\raggedright
+
+\begin{document}
+
+% This is a bit simpler than using the portland package,
+% and works with dvips.
+\special{landscape}
+%\landscape
+
+\pagestyle{fancy}
+
+\raggedcolumns
+\setlength{\premulticols}{100pt}
+%\setlength{\multicolsep}{20pt plus 6pt minus 4pt}
+\begin{multicols}{3}[\section{Constructs}]
+
+\I{List} is any sequence of commands separated by \B{;} or
+\B{newline}, which are always interchangeable.
+\medskip
+
+\begin{code}
+\item \B{if} \I{list}; \B{then} \I{list} \\
+\Lop\ \B{elif} \I{list}; \B{then} \I{list} \Rop\ \dots \\
+\Lop\ \B{else} \I{list} \Rop \\
+\B{fi}
+
+\item \B{for} \I{name} \Lop\ \B{in} \I{word \dots} \Rop \\
+\B{do} \I{list} \\
+\B{done}
+
+\B{for} \I{name} \B{in} \I{word \dots}; \Lcu\ list \Rcu
+
+\B{foreach} \I{name} \Lpa \I{word \dots}\Rpa \\
+\I{list} \\
+\B{end} \\
+
+\item \B{while} \I{list}; \B{do} \I{list}; \B{done}
+
+\B{until} \I{list}; \B{do} \I{list}; \B{done}
+
+\item \B{repeat} \I{word}; \B{do} \I{list}; \B{done}
+
+\B{repeat} \I{word} \I{sublist}
+
+\item \B{case} \I{word} \B{in} \\
+\Lop\ \I{pattern} \Rpa\ \I{list} ;; \Rop\ \dots \\
+\B{esac}
+
+\B{case} \I{word} \Lcu\ \Lop\ \I{pattern} \Rpa\ \I{list} ;; \Rop\ \dots \Rcu
+
+\item \B{select} \I{name}
+  \Lop\ \B{in} \I{word} \dots \Rop; \B{do} \I{list};
+  done
+
+\item[Subshell:] \Lpa\ \I{list} \Rpa
+
+\item[Current shell:] \Lcu\ \I{list} \Rcu
+
+\item \B{function} \I{word} \Lop\ \Lpa\Rpa\ \Rop\ \dots \Lcu\ \I{list}
+  \Rcu
+
+\I{word} \dots \Lpa\Rpa\ \Lcu\ list \Rcu
+
+\I{word} \dots \Lpa\Rpa\ \I{sublist}
+
+\item \B{time} \Lop\ \I{pipeline} \Rop
+
+\item[Condition:] \Lsq\Lsq\ \I{exp} \Rsq\Rsq
+\end{code}
+
+Other constructs depend on the options \B{NO\_\-SHORT\_\-LOOPS} and
+\B{CSH\_\-JUNKIE\_\-LOOPS} and should be avoided in scripts.
+
+\end{multicols}
+
+%\begin{multicols}{3}[\section{Globbing}]
+\section{Globbing}
+
+See also options \B{GLOB}, \B{EXTENDED\_\-GLOB}, \B{KSH\_\-GLOB},
+\B{NULL\_\-GLOB}, \B{NOMATCH}, \B{SH\_\-GLOB} \B{GLOB\_\-DOTS}. \texttt{X},
+\texttt{Y}, \dots\ are any pattern. \verb!#! and \verb!##! require grouping
+of previous characters; those and \verb!~!, \verb!^! require
+\B{EXTENDED\_\-GLOB}.
+
+% Due to setting verbatim text, use basic tabbing environment for following.
+\begin{multicols}{3}
+\begin{tabbing}
+\hskip 40pt \= \kill
+\verb!*!       \>  Any string \\
+\verb!?!       \>  Any character \\
+\verb![...]!   \>  Any of the enclosed characters \\
+\verb![[:X:]]! \>  Character classes where X may be: \\
+\verb! alnum!  \>  Alphanumeric, \\
+\verb! alpha!  \>  Alphabetic, \\
+\verb! blank!  \>  Space or tab, \\
+\verb! cntrl!  \>  Control character, \\
+\verb! digit!  \>  Decimal digit, \\
+\verb! graph!  \>  Printable non-whitespace character, \\
+\verb! lower!  \>  Lowercase character, \\
+\verb! print!  \>  Printable character, \\
+\verb! punct!  \>  Printable, not alnum or space, \\
+\verb! space!  \>  Whitespace character, \\
+\verb! upper!  \>  Uppercase character, \\
+\verb! xdigit! \>  Hexadecimal digit. \\
+               \>  Above use locales, may be combined with \\
+              \>  other characters e.g. \verb![-+[:xdigit:]]! \\
+\verb![^...]!  \>  Any character except those enclosed \\
+\verb!<x-y>!   \>  Any number between $x$ and $y$ inclusive: \\
+               \>  both optional, defaults $0$, $\infty$ \\
+\verb!^X!      \>  Anything not matching \texttt{X} \\
+\verb!(X|Y)!   \>  Either \texttt{X} or \texttt{Y} \\
+\verb!X~Y!     \>  Pattern \texttt{X}, but not \texttt{Y} \\
+\verb!(X|Y~Z)! \>  Either \texttt{X} or (\texttt{Y} but not \texttt{Z}) \\
+\verb!X#!      \>  Zero or more occurences of \texttt{X} \\
+\verb!X##!     \>  One or more occurences of \texttt{X} \\
+\verb!(X)!     \>  Grouping of (part of) pattern. \\
+\verb!**/!     \>  (As path segment) short for \verb!(*/)!: \\
+               \> match all subdirectories \\
+\verb!***/!    \>  The same, following symbolic links \\
+\end{tabbing}
+
+Globbing flags appear in the form \verb!(#X)! and require the
+\T{EXTENDED\_GLOB} option.  They may appear in groups.  \verb!X! may be:
+\begin{tabbing}
+\hskip 40pt \= \kill
+\verb!i!       \> Match case insensitively \\
+\verb!l!       \> Lower case matches upper case \\
+\verb!I!       \> Case sensitive: cancel \verb!i! and \verb!I! \\
+\verb!b!       \> Activate backreferences for parentheses. \\
+               \> \verb!$match!, \verb!$mbegin!, \verb!$mend! arrays \\
+              \> give matched string, beginning/end indices \\
+\verb!B!       \> Deactivate backreferences, negating \verb!b! \\
+\verb!m!       \> Set \verb!$MATCH!, \verb!$MBEGIN!, \verb!$MEND! for
+                  string \\
+\verb!M!       \> Deactivate \verb!m!. \\
+\T{a}\I{num}   \> Allow \I{num} errors in matches (0 to turn off) \\
+\verb!s!       \> Match only at start of string (use in param expn) \\
+\verb!e!       \> Match only at end of string \\
+\end{tabbing}
+
+Globbing modifiers appear in parentheses after a pattern (usually
+\I{and}'ed):
+\begin{tabbing}
+\hskip 40pt \= \kill
+\verb!/!       \> directory \\
+\verb!.!       \> plain file \\
+\verb!@!       \> symbolic link \\
+\verb!=!       \> socket \\
+\verb!p!       \> named pipe (FIFO) \\
+\verb!*!       \> executable plain file (0100) \\
+\verb!%!       \> device file (character or block) \\
+\verb!%b!      \> block special \\
+\verb!%c!      \> character special \\
+\verb!r!       \> readable (0400) \\
+\verb!w!       \> writable (0200) \\
+\verb!x!       \> executable (0200) \\
+\verb!A!       \> group-readable (0040) \\
+\verb!I!       \> group-writable (0020) \\
+\verb!E!       \> group-executable (0010) \\
+\verb!R!       \> world-readable (0200) \\
+\verb!W!       \> world-writable (0200) \\
+\verb!X!       \> world-executable (0200) \\
+\verb!s!       \> setuid (04000) \\
+\verb!S!       \> setgid (02000) \\
+\verb!t!       \> files with the sticky bit (01000) \\
+\T{f}\I{spec}  \> chmod-like access permissions \\
+               \> e.g. \verb!f70?! or \verb!f:u+w,go-w:! \\
+\T{e}\I{str}   \> eval \I{str}, use file (\verb!$REPLY!) if status 0 \\
+               \> or set \verb!$reply! to file array \\
+\T{d}\I{dev} \> on device number \I{dev} \\
+\T{l}\Lsq\T{-}$\mid$\T{+}\Rsq\I{ct}
+           \> link count \I{ct} or less (\T{+}) or more (\T{-}) than \I{ct} \\
+\T{U}          \> owned by current effective uid \\
+\T{G}          \> owned by current effective gid \\
+\T{u}\I{uid}   \> owned by uid \I{uid}; may also take forms \\
+               \> \T{.}\I{name}\T{.}, \T{!}\I{name}\T{!}, \dots\ or \\
+               \> \T{(}\I{name}\T{)}, \verb!{!\I{name}\verb!}!, \dots \\
+\T{g}\I{gid}   \> owned by \I{gid}, as for \T{u}\I{uid}. \\
+\T{a}\Lsq\T{Mwhm}\Rsq\Lsq\T{-}$\mid$\T{+}\Rsq\I{n} \\
+               \> accessed  (less than, more than) \I{n} days \\
+               \> (months, weeks, hours, minutes) ago \\
+\T{m}\Lsq\T{Mwhm}\Rsq\Lsq\T{-}$\mid$\T{+}\Rsq\I{n} \\
+               \> modified ditto \\
+\T{c}\Lsq\T{Mwhm}\Rsq\Lsq\T{-}$\mid$\T{+}\Rsq\I{n} \\
+               \> inode changed ditto \\
+\T{L}\Lsq\T{kKmMpP}\Rsq\Lsq\T{-}$\mid$\T{+}\Rsq\I{n} \\
+               \> size in bytes (or kb, mb, blocks) $=$ (or $<$, $>$) \I{n} \\
+\verb!^!       \> negate following qualifiers \\
+\verb!,!       \> `\I{or}' lists of qualifers together \\
+\verb!-!       \> toggle following links (off by default) \\
+\T{M}          \> set \B{MARK\_DIRS}, this pattern only \\
+\T{T}          \> set \B{LIST\_TYPES}, this pattern only \\
+\T{N}          \> set \B{NULL\_GLOB}, this pattern only \\
+\T{D}          \> set \B{GLOB\_DOTS}, this pattern only \\
+\T{n}          \> set \B{NUMERIC\_GLOB\_SORT}, this pattern only \\
+\T{o}\Lsq\T{nLlamcd}\Rsq \\
+               \> sort order of resulting files: by name, size, \\
+               \> no. of links, access/modification/inode time, \\
+               \> depth-first order \\
+\T{o}\Lsq\T{nLlamcd}\Rsq \\
+               \> same but reversed order; \verb!Od! depth-last \\
+\verb![!\I{beg}\Lsq\verb!,!\I{end}\Rsq\verb!]! \\
+               \> Index of matched file(s) to select \\
+\verb!:!\dots  \> remainder treated as history \\
+               \> modifiers (each with own \verb!:!)\\
+\end{tabbing}
+\end{multicols}
+
+\section{Options}
+\D means set by default: these options appear with \T{no} in front in option
+listings; \verb!+!\I{o} turns single-letter option off (shown in parentheses)
+
+\begin{multicols}{3}
+\begin{tabbing}
+\hskip 1em \= \T{AUTO\_REMOVE\_SLASH} \= \kill
+\T{ALL\_EXPORT}          \>\> Export all new shell params (-a) \\
+\T{ALWAYS\_LAST\_PROMPT} \>\> Back to prompt after list \\
+\T{ALWAYS\_TO\_END}      \>\> End of word after completion \\
+\T{APPEND\_HISTORY}      \>\> Append history to file \\
+\T{AUTO\_CD}             \>\> Directory as command does \T{cd} (-J) \\
+\T{AUTO\_LIST}           \>\> List on ambiguous completion (-9) \\
+\T{AUTO\_MENU}           \>\> Menu after second \T{TAB} \\
+\T{AUTO\_NAME\_DIRS}     \>\> Params with paths become names \\
+\T{AUTO\_PARAM\_KEYS}    \>\> Clever del after param completion \\
+\T{AUTO\_PARAM\_SLASH}   \>\> \verb!$path<TAB>! $\to$ \verb!$path/! \\
+\T{AUTO\_PUSHD}          \>\> Make \T{cd} act like \T{pushd} (-N) \\
+\T{AUTO\_REMOVE\_SLASH}  \>\> Strip slash after completion \\
+\T{AUTO\_RESUME}         \>\> \T{cmd} can behave like \verb!%cmd! (-W) \\
+\T{BAD\_PATTERN}\D       \>\> Error on bad glob pattern (+2) \\
+\T{BANG\_HIST}\D         \>\> Use \verb.!hist. on cmd line (+K) \\
+\T{BARE\_GLOB\_QUAL}\D   \>\> Use glob quals with just parens \\
+\T{BASH\_AUTO\_LIST}\D   \>\> List only on second tab \\
+\T{BEEP}\D               \>\> Beep on errors etc. (+B) \\
+\T{BG\_NICE}\D           \>\> Lower priority of bg jobs (-6) \\
+\T{BRACE\_CCL}           \>\> \verb!foo{ab}! $\to$ \verb!fooa foob! \\
+\T{BSD\_ECHO}            \>\> Builtin \T{echo} works like in BSD \\
+\T{CDABLE\_VARS}         \>\> \T{cd foo} like \verb!cd ~foo! (-T) \\
+\T{CHASE\_DOTS}          \>\> Resolve links when \verb!..! in dir \\
+\T{CHASE\_LINKS}         \>\> Resolve symlinks in directories (-w) \\
+\T{CHECK\_JOBS}\D        \>\> Report job status at \T{exit} \\
+\T{CLOBBER}\D            \>\> \verb!>! to existing file needs \verb!>|! (+C) \\
+\T{COMPLETE\_ALIASES}    \>\> Completion uses unexpanded aliases \\
+\T{COMPLETE\_IN\_WORD}   \>\> Complete at cursor point in word \\
+\T{CORRECT}              \>\> Correct command spelling (-0) \\
+\T{CORRECT\_ALL}         \>\> Correct spelling of all args (-O) \\
+\T{CSH\_JUNKIE\_HISTORY} \>\> Single \verb.!. is last command \\
+\T{CSH\_JUNKIE\_LOOPS}   \>\> Lists can be \verb!list; end! \\
+\T{CSH\_JUNKIE\_QUOTES}  \>\> No unescaped newlines in quotes \\
+\T{CSH\_NULLCMD}         \>\> Don't use \verb!$NULLCMD!, \verb!$READNULLCMD! \\
+\T{CSH\_NULL\_GLOB}      \>\> Only one glob must match \\
+\T{DVORAK}               \>\> Use Dvorak keyboard for spelling \\
+\T{EQUALS}\D             \>\> Perform \verb!=cmd! expansion \\
+\T{ERR\_EXIT}            \>\> Exit shell on error (-e) \\
+\T{EXEC}\D               \>\> Execute commands (+n) \\
+\T{EXTENDED\_GLOB}       \>\> Use \verb!#!, \verb!~! and \verb!^! in
+   patterns \\
+\T{EXTENDED\_HISTORY}    \>\> Save timestamp to history file \\
+\T{FLOW\_CONTROL}\D      \>\> \verb!^S!, \verb!^Q! do flow control \\
+\T{FUNCTION\_ARGZERO}\D  \>\> Set \verb!$0! on function or source \\
+\T{GLOB}\D               \>\> Perform globbing (+F) \\
+\T{GLOBAL\_EXPORT}\D      \>\> \verb!typeset -x! applies globally \\
+\T{GLOBAL\_RCS}\D         \>\> Use \verb!/etc! startup files \\
+\T{GLOB\_ASSIGN}         \>\> \verb!scalar=*! globs on right \\
+\T{GLOB\_COMPLETE}       \>\> Complete globbing with menu \\
+\T{GLOB\_DOTS}           \>\> Leading dots match wildcards (-4) \\
+\T{GLOB\_SUBST}          \>\> Text from params can glob \\
+\T{HASH\_CMDS}\D         \>\> Hash commands when run \\
+\T{HASH\_DIRS}\D         \>\> Hash directory when cmd runs \\
+\T{HASH\_LIST\_ALL}\D    \>\> Hash all cmds on completion \\
+\T{HIST\_ALLOW\_CLOBBER} \>\> Allow clobbering redirects in hist \\
+\T{HIST\_BEEP}\D         \>\> Beep on bad \verb.!.-history \\
+\T{HIST\_EXPIRE\_DUPS\_FIRST} \\
+                         \>   Trim duplicate lines to squeeze history \\
+\T{HIST\_FIND\_NO\_DUPS} \>\> Never show duplicates in history \\
+\T{HIST\_IGNORE\_ALL\_DUPS} \\
+                         \>   Never save duplicate of existing hist entry \\
+\T{HIST\_IGNORE\_DUPS}   \>\> No adjacent duplicates in history (-h) \\
+\T{HIST\_IGNORE\_SPACE}  \>\> `\verb! cmd!' lines not saved (-g) \\
+\T{HIST\_NO\_FUNCTIONS}  \>\> Don't store function definitions \\
+\T{HIST\_NO\_STORE}      \>\> No history commands in history \\
+\T{HIST\_REDUCE\_BLANKS} \>\> Trim excess whitespace in history \\
+\T{HIST\_SAVE\_NO\_DUPS} \>\> Trim duplicates if saving history \\
+\T{HIST\_VERIFY}         \>\> Edit after \verb.!. expansion \\
+\T{HUP}\D                \>\> Send SIGHUP to jobs on exit \\
+\T{IGNORE\_BRACES}       \>\> No \verb!{!\dots\verb!,!\dots\verb!}!
+   expansion (-I) \\
+\T{IGNORE\_EOF}          \>\> No exit on first ten eof's (-7) \\
+\T{INC\_APPEND\_HISTORY} \>\> Save history as it happens \\
+\T{INTERACTIVE}          \>\> Shell is interactive (not settable) (-i) \\
+\T{INTERACTIVE\_COMMENTS} \\
+                         \>\> Use comments interactively (-k) \\
+\T{KSH\_ARRAYS}          \>\> Array syntax more like ksh \\
+\T{KSH\_AUTOLOAD}        \>\> Emulate ksh function loading \\
+\T{KSH\_GLOB}            \>\> Emulate ksh patterns, \verb!*(...)! etc. \\
+\T{KSH\_OPTION\_PRINT}   \>\> Print options like ksh does \\
+\T{LIST\_AMBIGUOUS}      \>\> Only list ambiguous completions \\
+\T{LIST\_BEEP}           \>\> Beep on ambiguous completion \\
+\T{LIST\_PACKED}         \>\> Squeeze completion listings \\
+\T{LIST\_ROWS\_FIRST}    \>\> List rows first in completion \\
+\T{LIST\_TYPES}          \>\> File types in completion list (-X) \\
+\T{LOCAL\_OPTIONS}       \>\> Options set in functions are local \\
+\T{LOCAL\_TRAPS}         \>\> Reset traps on leaving func \\
+\T{LOGIN}                \>\> Shell is login (not settable) (-l) \\
+\T{LONG\_LIST\_JOBS}     \>\> Always use \verb!jobs -l! (-R) \\
+\T{MAGIC\_EQUAL\_SUBST}  \>\> Any \verb!var=expr! file-expands \T{expr} \\
+\T{MAIL\_WARNING}        \>\> Warn if mail file accessed (-U) \\
+\T{MARK\_DIRS}           \>\> Append \verb!/! to globbed directories (-8) \\
+\T{MENU\_COMPLETE}       \>\> Cycle completions on \T{TAB} (-Y) \\
+\T{MONITOR}              \>\> Allow job control (-m) \\
+\T{MULTIOS}\D            \>\> Implicitly tee/cat multiple \verb!<!,
+   \verb!>! \\
+\T{NOMATCH}\D            \>\> Error on unmatched globs (+3) \\
+\T{NOTIFY}\D             \>\> Report bg jobs on change (-5) \\
+\T{NULL\_GLOB}           \>\> Remove unmatched globs (-G) \\
+\T{NUMERIC\_GLOB\_SORT}  \>\> Numbers sorted in glob \\
+\T{OCTAL\_ZEROES}        \>\> 0 introduces octal in math expn \\
+\T{OVER\_STRIKE}         \>\> Editor starts in overstrike mode \\
+\T{PATH\_DIRS}           \>\> Search path for \verb!dir/cmd! (-Q) \\
+\T{POSIX\_BUILTINS}      \>\> \T{builtin} command is specialer \\
+\T{PRINT\_EIGHT\_BIT}    \>\> Show chars with high bit in listings \\
+\T{PRINT\_EXIT\_VALUE}   \>\> Show non-zero exit status (-1) \\
+\T{PRIVILEGED}           \>\> Privileged mode: safety first (-p) \\
+\T{PROMPTT\_BANG}        \>\> \verb.!. is special in prompts \\
+\T{PROMPT\_CR}\D         \>\> Print CR just before prompt (+V) \\
+\T{PROMPT\_PERCENT}\D    \>\> Do \verb!%! expansions in prompt \\
+\T{PROMPT\_SUBST}        \>\> Expand substitutions in prompts \\
+\T{PUSHD\_IGNORE\_DUPS}  \>\> Only one instance of dir on stack \\
+\T{PUSHD\_MINUS}         \>\> Swap plus and minus in pushd \\
+\T{PUSHD\_SILENT}        \>\> Don't print directory stack (-E) \\
+\T{PUSHD\_TO\_HOME}      \>\> With no args, \T{pushd} goes home (-D) \\
+\T{RC\_EXPAND\_PARAM}    \>\> \verb!A${array}Z!  $\to$ \verb!Aa1Z Aa2Z!
+   \dots (-P) \\
+\T{RC\_QUOTES}           \>\> \verb!echo ''''! $\to$ \verb!'! \\
+\T{RCS}\D                \>\> \verb!.!-files, else just
+   \verb!/etc/zshenv! (+f) \\
+\T{REC\_EXACT}           \>\> Prefer exact match in completion (-S) \\
+\T{RESTRICTED}           \>\> Can't cause as much damage \\
+\T{RM\_STAR\_SILENT}     \>\> No query on \verb!rm *! (-H) \\
+\T{RM\_STAR\_WAIT}       \>\> Don't believe first RMSTAR reply \\
+\T{SHARE\_HISTORY}       \>\> Read/write history as it happens \\
+\T{SH\_FILE\_EXPANSION}  \>\> Perform \verb!~file!, \verb!=cmd! first \\
+\T{SH\_GLOB}             \>\> Disable \verb!(!, \verb!|!, \verb!)!,
+   \verb!<! in patterns \\
+\T{SHIN\_STDIN}          \>\> Read commands from stdin (-s) \\
+\T{SH\_NULLCMD}          \>\> Null commands assume \verb!:! behaviour \\
+\T{SH\_OPTION\_LETTERS}  \>\> Letter options work like in ksh \\
+\T{SHORT\_LOOPS}\D       \>\> Short \!verb!for!, \verb!select!, \verb!if!,
+     \verb!function! \\
+\T{SH\_WORD\_SPLIT}      \>\> Split words like lesser shells do (-y) \\
+\T{SINGLE\_COMMAND}      \>\> Read a command and exit (-t) \\
+\T{SINGLE\_LINE\_ZLE}    \>\> Editor only uses one line (-M) \\
+\T{SUN\_KEYBOARD\_HACK}  \>\> Ignore unmatched trailing \verb!`! (-L) \\
+\T{UNSET}\D              \>\> Unset parameters cause error (+u) \\
+\T{VERBOSE}              \>\> Print input lines as read (-v) \\
+\T{XTRACE}               \>\> Print cmds and args when run (-x) \\
+\T{ZLE}                  \>\> Use the shell's line editor (-Z) \\
+\end{tabbing}
+\end{multicols}
+
+\begin{multicols}{3}[\section{Parameter expansion}]
+
+\begin{tabbing}
+\hskip 20pt \= \kill
+\verb!$!\I{name} \\
+\verb!${!\I{name}\verb!}! \\
+                \> Basic parameter substitution \\
+\verb!${+!\I{name}\verb!}! \\
+                \> 1 if \I{name} set, 0 otherwise \\
+\verb!${!\I{name}\verb!:-!\I{word}\verb!}! \\
+                \> \verb!$!\I{name} if non-null, else \I{word} \\
+\verb!${!\I{name}\verb!-!\I{word}\verb!}! \\
+                \> \verb!$!\I{name} if set, else \I{word} \\
+                \> (Similar for others with/without colon.) \\
+\verb!${!\I{name}\verb!:=!\I{word}\verb!}! \\
+                \> \verb!$!\I{name} if non-null, else use \I{word} \\
+                \> and set \I{name} to that \\
+\verb!${!\I{name}\verb!:==!\I{word}\verb!}! \\
+                \> Unconditional assignment
+\verb!${!\I{name}\verb!:?!\I{word}\verb!}! \\
+                \> \verb!$!\I{name} if non-null, else print \I{word}
+                and exit \\
+\verb!${!\I{name}\verb!:+!\I{word}\verb!}! \\
+                \> \I{word} if \verb!$!\I{name} non-null, else nothing \\
+\verb!${!\I{name}\verb!#!\I{pattern}\verb!}! \\
+\verb!${!\I{name}\verb!##!\I{pattern}\verb!}! \\
+                \> \verb!$!\I{name} with shortest (longest)
+                match of \\
+                \> \I{pattern} removed from head. Patterns as \\
+                \> globbing; original parameter unchanged \\
+\verb!${!\I{name}\verb!%!\I{pattern}\verb!}! \\
+\verb!${!\I{name}\verb!%%!\I{pattern}\verb!}! \\
+                \> As for \verb!#!, but remove from tail of match \\
+\verb!${!\I{name}\verb!/!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Substitute longest match of \I{pattern} by \I{repl} \\
+\verb!${(S)!\I{name}\verb!/!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Substitute shortest match \\
+\verb!${!\I{name}\verb!//!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Substitute all non-overlapping longest matches \\
+\verb!${!\I{name}\verb!/#!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Subst if \I{pattern} at start of string \\
+\verb!${!\I{name}\verb!/%!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Subst if \I{pattern} at end of string \\
+\verb!${!\I{name}\verb!:/!\I{pattern}\verb!/!\I{repl}\verb!}! \\
+                \> Subst if \I{pattern} matches entire string \\
+\verb!${#!\I{spec}\verb!}! \\
+                \> Count length of scalar or words of array \\
+\verb!${^!\I{spec}\verb!}! \\
+\verb!${^^!\I{spec}\verb!}! \\
+                \> Turn on (off) \B{RC\_EXPAND\_PARAM} \\
+\verb!${=!\I{spec}\verb!}! \\
+\verb!${==!\I{spec}\verb!}! \\
+                \> Turn on (off) \B{SH\_WORD\_SPLIT} \\
+\verb!${~!\I{spec}\verb!}! \\
+\verb!${~~!\I{spec}\verb!}! \\
+                \> Turn on (off) \B{GLOB\_SUBST} \\
+\verb!${!\I{spec}\verb!:!\I{mod}\verb!}! \\
+                \> Apply history modifier \I{mod} \\
+\verb!${${name\dots}!\dots\verb!}! \\
+                \> Perform both sets of modifications on value \\
+               \> N.B. does not do extra lookup, see \verb!(P)! \\
+\end{tabbing}
+
+Flags:  usage \verb!${(o)!\I{name}\verb!}! etc.
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{A}           \> \verb!${...:=...}! creates array \\
+\T{AA}          \> \dots creates associative array \\
+\verb!@!        \> Split into words in double quotes \\
+\T{e}           \> Use shell expansion on result \\
+\T{P}           \> Force \verb!$!\I{name} to be re-used as name \\
+\T{o}           \> sort words in ascending order \\
+\T{O}           \> sort words in descending order \\
+\T{i}           \> case-independent with \T{o} or \T{O} \\
+\T{L}           \> all letters lower case \\
+\T{U}           \> all letters upper case \\
+\T{C}           \> capitalise words \\
+\T{V}           \> make special characters visible \\
+\T{q}           \> quote result with \verb!\! \\
+\T{qq}          \> quote result with \verb!'! \\
+\T{qqq}         \> quote result with \verb!"! \\
+\T{qqqq}        \\
+                \> quote result with \verb!$'!\dots\verb!'! \\
+\T{Q}           \> remove one level of shell quoting \\
+\verb!%!        \> Expand prompt escapes \\
+\verb!%%!       \> Expand as prompt with current settings \\
+\T{X}           \> Report parse errors with quotes, patterns \\
+\T{c}           \> \verb!${#!\I{name}\verb!}! counts characters \\
+\T{w}           \> \verb!${#!\I{name}\verb!}! counts words \\
+\T{W}           \> As \T{w}, but count empty words \\
+\T{k}           \> With assoc include keys \\
+\T{v}           \> With assoc include values \\
+\T{p}           \> Use print escapes in args below \\
+\T{F}           \> Join words with newlines \\
+\T{f}           \> Split on newlines \\
+\T{z}           \> Split using ordinary parsing \\
+\T{t}           \> Subsituted description, not value \\
+\end{tabbing}
+
+Flags with delimiters; use any pair of chars in place of colon, also
+matched \verb!<>!, \verb!()!, \verb!{}!, \verb![]!
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{l:}\I{expr}\T{::}\I{string1}\T{::}\I{string2}\T{:} \\
+                \> Pad words on left to \I{expr} chars using \\
+                \> \I{string1} repeated (default space), \\
+                \> \I{string2} appears just once \\
+\T{r:}\I{expr}\T{::}\I{string1}\T{::}\I{string2}\T{:} \\
+                \> Ditto padded on right \\
+\T{j:}\I{string}\T{:} \\
+                \> Join words using \I{string} \\
+                \> (occurs before splitting) \\
+\T{s:}\I{string}\T{:} \\
+                \> Split words at \I{string}
+\end{tabbing}
+
+Flags applying with \verb!${...#...}! or \verb!${...%...}!
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{S}           \> search substrings too \\
+\T{I:}\I{expr}\T{:} \\
+                \> Search/substitute \I{expr\/}th match \\
+\T{M}           \> Include matched portion \\
+\T{R}           \> Include unmatched portion (Rest) \\
+\T{B}           \> Include index of beginning \\
+\T{E}           \> Include index of end \\
+\T{N}           \> Include length of match \\
+\end{tabbing}
+
+Summary of rules for substitution
+\begin{tabbing}
+\hskip 20pt \= \kill
+1              \> Nested substitution, \verb!${${!\dots\verb!}}! \\
+2              \> Subscript of parameter by name,
+\verb!${!\I{name}\verb![!\I{i}\verb!]}! \\
+3              \> \verb!(P)! flag \\
+4              \> \verb!"${!\dots\verb!}"! joining \\
+5              \> Nested subscript, \verb!${${!\dots\verb!}[!\I{i}\verb!]}! \\
+6              \> \verb!#!, \verb!%!, \verb!/!. \verb!:! modifications \\
+7              \> \verb!(j)! flag or space joining \\
+8              \> \verb!(s)!, \verb!(f)!, \verb!(z)! or \verb!=! splitting \\
+9              \> Shell word splitting (no flags) \\
+10             \> \verb!(e)! flag \\
+11             \> \verb!(l)! or \verb!(r)! padding \\
+\end{tabbing}
+
+Flags in indexing: usage \verb!$!\I{name}\verb![(i)!\I{index}\verb!]! etc.
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{e}           \> Backward compatability only \\
+\T{w}           \> Index by words of scalar \\
+\T{s:string:} \\
+                \> Separate words with \T{string} \\
+\T{p}           \> Use print escapes in following \T{s} \\
+\T{f}           \> Index by lines: same as \verb!pws:\n:! \\
+\T{r}           \> Reverse index array/substring/word \\
+                \> For assocs, match against values \\
+\T{R}           \> As \T{r}, but last match (all for assocs) \\
+\T{k}           \> In assoc, keys are patterns; get first \\
+\T{K}           \> In assoc, keys are patterns; get all \\
+\T{i}           \> As \T{r}, but return index \\
+                \> For assocs match against keys \\
+\T{I}           \> As \T{I}, but last match (all for assocs) \\
+\verb!n:!\I{expr}\verb!:! \\
+                \> Use \T{expr}'th first/last match
+\verb!b:!\I{expr}\verb!:! \\
+                \> \T{r}, \T{R}, \T{i}, \T{I} start search at \I{expr}th elt.
+\end{tabbing}
+\end{multicols}
+
+\goodbreak
+\section{History}
+See also parameters \B{histchars}, \B{HISTFILE}, \B{HISTSIZE},
+\B{SAVEHIST} and options \B{APPEND\_\-HISTORY},
+\B{CSH\_\-JUNKIE\_\-HISTORY}, \B{EXTENDED\_\-HISTORY},
+\B{HIST\_\-ALLOW\_\-CLOBBER}, \B{HIST\_\-IGNORE\_\-DUPS},
+\B{HIST\_\-IGNORE\_\-SPACE}, \B{HIST\_\-NO\_\-STORE},
+\B{HIST\_\-VERIFY}, \B{BANG\_\-HIST}, \B{HIST\_\-BEEP},
+\B{HIST\_\-EXPIRE\_\-DUPS\_\-FIRST}, \B{HIST\_\-FIND\_\_NO\_\-DUPS},
+\B{HIST\_\-IGNORE\_\-ALL\_\-DUPS}, \B{HIST\_\-NO\_\-FUNCTIONS},
+\B{HIST\_\-REDUCE\_\-BLANKS}, \B{HIST\_\-SAVE\_\-NO\_\-DUPS},
+\B{INC\_\-APPEND\_\-HISTORY}, \B{SHARE\_\-HISTORY}.
+
+\begin{multicols}{3}[\mbox{Events:}]
+\begin{tabbing}
+\hskip 60pt \= \kill
+\verb.!.        \> start history substitution unless after \\
+                \> space, newline, \verb!=!, \verb!(! \\
+\verb.!!.       \> immediately previous command \\
+\verb.!.\I{n}   \> command line \I{n} \\
+\verb.!-.\I{n}  \> line \I{n} before current \\
+\verb.!.\I{str} \> last line beginning with \I{str} \\
+\verb.!.\I{?str}\Lsq\verb.?.\Rsq
+                \> last line containing \I{str} \\
+\verb.!#.       \> current command so far \\
+\verb?!{...}?   \> insulate history reference \\
+\verb.!".       \> no more expansion this line \\
+\end{tabbing}
+\end{multicols}
+
+\begin{multicols}{3}[\mbox{Words: separated from event by `:'}]
+\begin{tabbing}
+\hskip 60pt \= \kill
+\T{0}           \> first word on line (command) \\
+\I{n}           \> \I{n\/}th argument of command \\
+\verb!^!        \> first argument of command \\
+\verb!$!        \> last argument of command \\
+\verb!%!        \> word matched by \verb!?s! \\
+\I{x}\verb!-!\I{y} \> range of words \\
+\verb!-!\I{y}   \> same as \verb!0-!\I{y} \\
+\verb!*!        \> all arguments \\
+\I{x}\verb!*!   \> same as \I{x}\verb!-$! \\
+\I{x}\verb!-!   \> same but omit word \verb!$! \\
+\end{tabbing}
+\end{multicols}
+
+\begin{multicols}{3}[\mbox{Modifiers: also with globbing and parameters}]
+\begin{tabbing}
+\hskip 60pt \= \kill
+\T{h}           \> (head) strip last path cpt \\
+\T{r}           \> remove suffix \verb!.!\I{suf} \\
+\T{e}           \> leave only suffix \I{suf} \\
+\T{t}           \> (tail) leave only last path cpt \\
+\verb!&!        \> repeat last substitution \\
+\T{p}           \> don't execute new command \\
+\T{q}           \> quote words from further subst \\
+\T{Q}          \> remove one level of quotes \\
+\T{x}           \> same but split words at space \\
+\T{l}           \> all letters lower case \\
+\T{u}           \> all letters upper case \\
+\verb!s/!\I{old}\verb!/!\I{new}\Lsq\verb!/!\Rsq \\
+                \> replace \I{old} by \I{new} (string) \\
+\T{g}           \> (before s) change every occurrence \\
+\T{f}           \> repeat till no further change \\
+\verb!F:!\I{expr}\verb!:! \> same but max \I{expr} changes \\
+\T{w}           \> (as prefix) apply to each word \\
+\verb!W:!\I{sep}\verb!:! \> same but separate words on \I{sep} \\
+\end{tabbing}
+\end{multicols}
+
+\begin{multicols}{3}[\section{Parameters}]
+
+Special parameters: arrays are lower case except \T{status}; those
+marked\D\ are assignable:
+\begin{tabbing}
+\hskip 1em \= USERNAME \= \kill
+\T{!}             \>\> Last bg PID \\
+\T{ARGC} \\
+\verb!#!          \>\> Pos.\ param count \\
+\verb!$!          \>\> Current PID \\
+\T{-}             \>\> Shell flags set \\
+\T{argv}\D \\
+\verb!*!\D        \>\> Pos.\ params as array \\
+\verb!@!          \>\> Same as \verb!argv[@]! \\
+\T{status} \\
+\T{?}             \>\> Last prog status \\
+\T{pipestatus}    \>\> Array of statuses for pipeline \\
+\verb!_!          \>\> Last arg of prev cmd \\
+\T{CPUTYPE}       \>\> CPU determined at run time \\
+\T{EGID}\D        \>\> Effective GID \\
+\T{EUID}\D        \>\> Effective UID \\
+\T{ERRNO}         \>\> System error no. \\
+\T{GID}\D         \>\> Current GID \\
+\T{HOST}          \>\> Current host name \\
+\T{LINENO}        \>\> Input line no. \\
+\T{LOGNAME}       \>\> User name \\
+\T{MACHTYPE}      \>\> Machine type \\
+\T{OLDPWD}        \>\> Previous working dir. \\
+\T{OPTARG} \\
+\T{OPTIND}        \>\> Value, index of last \B{getopts} option \\
+\T{OSTYPE}        \>\> OS type \\
+\T{PPID}          \>\> PID of parent proc. \\
+\T{PWD}           \>\> Current working dir. \\
+\T{RANDOM}\D      \>\> Random integer: assign to seed. \\
+\T{SECONDS}\D     \>\> Seconds since start of shell \\
+\T{SHLVL}         \>\> Incremented for each zsh \\
+\T{signals}       \>\> Names of signals \\
+\T{TTY}           \>\> Name of shell terminal \\
+\T{TTYIDLE}       \>\> Idle time of tty (secs.) or -1 \\
+\T{UID}\D         \>\> UID \\
+\T{USERNAME}\D    \>\> username \\
+\T{VENDOR}        \>\> Machine manufacturer \\
+\verb!ZSH_NAME!   \>\> Shell invocation name \\
+\verb!ZSH_VERSION! \>\> ID of zsh version \\
+\end{tabbing}
+
+Other parameters used by shell (\D colon-separated path)
+\begin{tabbing}
+\hskip 2em \= USERNAME \= \kill
+\T{ARGV0}         \>\> Export to change \verb!argv[0]! \\
+\T{BAUD}          \>\> Line speed (zero to ignore) \\
+\T{cdpath}, \T{CDPATH}\D \>\> Directories search for \B{cd} command \\
+\T{COUMNS}        \>\> No.\ of columns on terminal \\
+\T{DIRSTACKSIZE}  \>\> Max size of dir.\ stack \\
+\T{FCEDIT}        \>\> Default editor for \B{fc} cmd. \\
+\T{fignore}, \T{FIGNORE}\D \>\>\quad Suffixes ignored for completion \\
+\T{fpath}, \T{FPATH}\D \>\> Path to search for autoload fns. \\
+\T{histchars} \>\> three chars: 1) start of history (\verb.!.), \\
+   \>  2) quick history sub (\verb!^!), 3) comment (\verb!#!) \\
+\T{HISTCHARS}     \>\> same as \T{histchars} \\
+\T{HISTFILE}      \>\> Where to save shell history \\
+\T{HISTSIZE}      \>\> Max history lines internally \\
+\T{HOME}          \>\> Default target for \B{cd} cmd. \\
+\T{IFS}           \>\> Word seperators for input \\
+\T{KEYTIMEOUT}    \>\> Time to waits for key in sequence \\
+\T{LANG}          \>\> General locale setting \\
+\verb!LC_ALL!     \>\> Overrides \T{LANG} and other \verb!LC_*! \\
+\verb!LC_COLLATE! \>\> Determines character ordering \\
+\verb!LC_CTYPE!   \>\> Determines types of characters \\
+\verb!LC_MESSAGES!\>\> For messages: not used by zsh \\
+\verb!LC_NUMERIC! \>\> For decimal point, number separator \\
+\verb!LC_TIME!    \>\> Date and time format \\
+\T{LINES}         \>\> No.\ of lines on terminal \\
+\T{LISTMAX}       \>\> No.\ of files to list without asking \\
+\T{LOGCHECK}      \>\> How often to check \T{watch} (secs.) \\
+\T{MAIL}          \>\> File to check for mail \\
+\T{MAILCHECK}     \>\> How often to check \T{MAIL} (secs.) \\
+\T{mailpath}, \T{MAILPATH}\D \\
+   \> List of files to check for new mail.  Can follow \\
+   \> each with \verb!?'message to print'! \\
+\T{manpath}, \T{MANPATH}\D \\
+   \> Not used by shell, probably used by \B{man} cmd. \\
+\T{module\_path}, \T{MODULE\_PATH}\D \\
+   \> Path for dynamic modules; not imported \\
+\T{NULLCMD}       \>\> Used for redirs.\ with no cmd. \\
+\T{path}, \T{PATH}\D \>\> Where to search for commands \\
+\T{POSTEDIT}      \>\> Output when line editor exits \\
+\T{PROMPT}, \T{prompt} \\
+\T{PS1}           \>\> Prompt used by editor \\
+\T{PROMPT2}, \T{PS2} \>\> Continuation prompt \\
+\T{PROMPT3}, \T{PS3} \>\> Prompt used by \B{select} cmd. \\
+\T{PROMPT4}  \T{PS4} \>\> Execution trace prompt \\
+\T{psvar}, \T{PSVAR}\D \>\> Replace \verb!%v! in prompts \\
+\T{READNULLCMD} \>\> Command used with only input readir. \\
+\T{REPORTTIME} \>\> Longer commands print usage (secs.) \\
+\T{RPROMPT} \\
+\T{RPS1}           \>\> Prompt displayed at right of line \\
+\T{SAVEHIST}       \>\> Max no.\ of lines in history file \\
+\T{SPROMPT}        \>\> Prompt used for spelling correction \\
+\T{STTY}           \>\> Args. to follow \B{stty}, \\
+  \>\> export to run before external cmd.\ \\
+\T{TERM}           \>\> Type of terminal for editing \\
+\T{TIMEFMT}        \>\> Format of process time reports \\
+\T{TMOUT}          \>\> SIGALRM if idle this long (secs.) \\
+\T{TMPPREFIX}      \>\> Path to temp files (\B{/tmp/zsh}) \\
+\T{watch}, \T{WATCH}\D \>\> List of users to watch log in/out \\
+              \>\> (also \B{all}, \B{notme}, \verb!%! tty, \verb!@! host) \\
+\T{WATCHFMT}       \>\> Format of \T{watch} reports \\
+\T{WORDCHARS}      \>\> Non-alphanumeric characters used \\
+                   \>\> as part of a word by editor \\
+\T{ZBEEP}          \>\> Sequence to output instead of beeping \\
+\T{ZDOTDIR}        \>\> Where to find \verb!.zshrc! etc.\ \\
+\end{tabbing}
+\end{multicols}
+
+Prompt escape sequences: those with \D can use integer count \I{n},
+which must immediately follow \verb!%!.  Default is 1 except for \verb!%_!.
+\begin{multicols}{3}
+\begin{tabbing}
+\hskip 50pt \= \kill
+\verb!%%!          \> A `\%' \\
+\verb!%)!          \> A `)' \\
+\verb!%d! \verb!%/!\D
+                   \> \verb!$PWD! \\
+\verb!%~!\D        \> \verb!$PWD!, but use \verb!~!-abbrevs \\
+\verb!%h! \verb.%!.
+                   \> Current history event no. \\
+\verb!%L!          \> The current value of \verb!$SHLVL! \\
+\verb!%M!          \> Full hostname \\
+\verb!%m!\D        \> Host up to \I{n}'th dot \\
+\verb!%S! \verb!%B! \verb!%U!
+                   \> Start standout, bold, underline \\
+\verb!%s! \verb!%b! \verb!%u!
+                   \> Stop corresponding mode \\
+\verb!%t! \verb!%@!
+                   \> Time in 12 hour format \\
+\verb!%T!          \> Time in 24 hour format  \\
+\verb!%*!          \> Same with seconds \\
+\verb!%n!          \> \verb!$USERNAME! \\
+\verb!%N!          \> Name of script, sourced file, function \\
+\verb!%i!          \> Line number inside \verb!%N! \\
+\verb!%w!          \> Date as \verb!day-dd! \\
+\verb!%W!          \> Date as \verb!mm/dd/yy! \\
+\verb!%D!          \> Date as \verb!yy-mm-dd! \\
+\verb!%D{!\I{string}\verb!}! \\
+                   \> Use \T{strftime} to format \I{string} \\
+\verb!%l!          \> Current tty \\
+\verb!%?!          \> Return status of last command \\
+\verb!%_!\D        \> Parser status, \I{n} for max level\\
+\verb!%E!          \> Clear to end of line \\
+\verb!%#!          \> \verb!#! if root, else \verb!%! \\
+\verb!%v!\D        \> \I{n}'th elementt of \verb!$psvar! \\
+\verb!%{...%}!     \> String which does not move cursor \\
+\verb!%<string<! \verb!%>string>! \verb!%[<string]! \verb!%[>string]! \\
+                   \> Truncate \T{string} on L or R, \\
+                   \> \I{n} gives max length. \\
+\verb!%c!\D\ \verb!%.!\D 
+                   \> Component of \verb!$PWD! (deprecated) \\
+\verb!%C!          \> Same but don't expand \verb!~!'s \\
+\end{tabbing}
+
+Codes for ternary expressions in prompts, format
+\verb!%(!\I{char}\verb!.!\I{true-text}\verb!.!\I{false-text}\verb!)!,
+integer count \I{n} may proceded or follow `\verb!(!'. Test is true if:
+\begin{tabbing}
+\hskip 40pt \= \kill
+\T{c} \verb!.! \verb!~! \> Tilde'd path has $>=n$ elts \\
+\verb!/! \T{C}     \> Ditto for absolute path \\
+\T{t}              \> Current minute is \I{n} \\
+\T{T}              \> Current hour is \I{n} \\
+\T{d}              \> Current day of month is \I{n} \\
+\T{D}              \> Month is \I{n} (Jan${}=0$) \\
+\T{w}              \> Weekday is \I{n} (Sun${}=0$) \\
+\verb!?!           \> Last exit status was \I{n} \\
+\verb!#!           \> Running as uid \I{n} \\
+\T{g}              \> Running as gid \I{n} \\
+\T{L}              \> \verb!$SHLVL!${}>=n$ \\
+\T{S}              \> \verb!$SECONDS!${}>=n$ \\
+\T{v}              \> \verb!${#psvar}!${}>=n$ \\
+\verb!_!           \> At least \I{n} shell constructs \\
+\verb.!.           \> True if shell is priveleged \\
+\end{tabbing}
+
+Escape sequences in \verb!$WATCHFMT!:
+\begin{tabbing}
+\hskip 50pt \= \kill
+\verb!%n!          \> Name of user \\
+\verb!%a!          \> `logged on' or `logged off' \\
+\verb!%l!          \> User's tty \\
+\verb!%M!          \> Full remote host name \\
+\verb!%m!          \> Host to first `.' \\
+\verb!%S! \verb!%U! \verb!%B!
+                   \> Start standout, underline, boldface \\
+\verb!%s! \verb!%u! \verb!%b!
+                   \> Stop corresponding mode \\
+\verb!%t! \verb!%@!
+                   \> Time in 12-hour format \\
+\verb!%T!          \> Time in 24-hour format \\
+\verb!%w!          \> Date as \verb!day-dd! \\
+\verb!%W!          \> Date as \verb!mm/dd/yy! \\
+\verb!%D!          \> Date as \verb!yy-mm-dd! \\
+\end{tabbing}
+
+% end multicols here because at presnt the next bit goes over the page
+% and looks odd
+\end{multicols}
+
+Ternary expressions in \verb!$WATCHFMT!, format
+\verb!%(!\I{char}\verb!.!\I{true-text}\verb!.!\I{false-text}\verb!)!,
+can be used with \T{l}, \T{n}, \T{m} or \T{M} (true if non-empty value
+for corresponding \verb!%!), or \T{a} (true for login, false for
+logout).
+
+\begin{multicols}{3}[\section{Conditions}][10cm]
+
+File tests: followed by a file name
+\begin{tabbing}
+\hskip 20pt \= \kill
+\B{Cond} \\
+                \> \B{true if file} \\
+\T{-a}          \> exists \\
+\T{-b}          \> block special \\
+\T{-c}          \> character special \\
+\T{-d}          \> directory \\
+\T{-e}          \> exists \\
+\T{-f}          \> plain file \\
+\T{-g}          \> has setgid bit set \\
+\T{-h}          \> symbolic link \\
+\T{-k}          \> has sticky bit set \\
+\T{-p}          \> FIFO/pipe \\
+\T{-r}          \> readable \\
+\T{-s}          \> has size $>0$ \\
+\T{-u}          \> has setuid bit set \\
+\T{-w}          \> writeable \\
+\T{-x}          \> executable/dir.\ readable: \\
+\T{-L}          \> symbolic link \\
+\T{-O}          \> owned by UID \\
+\T{-G}          \> owned by GID \\
+\T{-S}          \> socket \\
+\T{-N}          \> access time not newer than mod time \\
+\end{tabbing}
+
+Other tests with single argument:
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{-n}          \> string, length $>0$ \\
+\T{-o}          \> option, is set \\
+\T{-t}          \> fd, open to tty \\
+\T{-z}          \> string, length zero \\
+\end{tabbing}
+
+Two argument tests (\Lsq\Lsq \I{a} \T{test} \I{b} \Rsq\Rsq):
+\begin{tabbing}
+\hskip 20pt \= \kill
+\T{-nt}         \> file \I{a} newer than \I{b} \\
+\T{-ot}         \> file \I{a} older than \I{b} \\
+\T{-ef}         \> names refer to same file \\
+\T{=} \\
+\T{==}          \> \I{string} matches \I{pattern} \\
+\T{!=}          \> \dots does not match \\
+\T{<}           \> ASCII before \\
+\T{>}           \> ASCII after \\
+\T{-eq}         \> Numbers equal \\
+\T{-ne}         \> Numbers unequal \\
+\T{-lt}         \> Numeric $a<b$ \\
+\T{-gt}         \> Numeric $a>b$ \\
+\T{-le}         \> Numeric $a\leq b$ \\
+\T{-ge}         \> Numeric $a\geq b$ \\
+\end{tabbing}
+
+Also grouping \Lpa\dots\Rpa, negation \T{!}, and \verb!&&!, or
+\verb!||!; special handling of \B{/dev/fd}.
+
+\vfill
+\end{multicols}
+
+\end{document}
diff --git a/zsh-lovers.1 b/zsh-lovers.1
new file mode 100644 (file)
index 0000000..de558cf
--- /dev/null
@@ -0,0 +1,2434 @@
+.\" Title: zsh-lovers, 1
+.\" Author: Michael Prokop / www.michael-prokop.at / www.grml.org
+.\" Latest change: Son Jun 19 12:13:40 CEST 2005 [mika]
+.\"###############################################################
+
+.\"###############################################################
+.TH zsh\-lovers 1 "2005-06-19" "zsh 4\&.2\&.5"
+.SH "NAME"
+zsh\-lovers \- tips, tricks and examples for the Z shell
+.SH "OVERVIEW"
+Whenever we look at the zsh manual we wonder why there are no examples
+for those simply things in (shell) life. The zsh contains many features,
+but there was no manpage with some examples (like procmailex(5)).
+That's why we wrote this manpage.
+.P
+Most of the tricks and oneliner come from the mailinglists
+zsh\-users, zsh\-workers, google, newsgroups and from ourself.
+See section
+.B LINKS
+for details.
+.P
+.B Note:
+This manpage (zsh-lovers(1)) is
+.B not
+an offical part of the Z shell! It's just a just for fun \- manpage ;)
+For comments, bugreports and feedback take a quick look at the section
+.B BUGS.
+.\"#######################################################
+
+.\"#######################################################
+.SH "EXAMPLES"
+
+.SS "REDIRECTION"
+See also \fIman 1 zshmisc\fP\&.
+
+null command shorthands:
+.nf
+ "< file" is like "$READNULLCMD <file"
+ "> file" is like "cat >file"
+ ">> file" is like "cat >>file"
+.fi
+
+.sp
+Append `exit 1' at the end of all *.sh \- files:
+.nf
+ $ echo "exit 1" >> *.sh
+.fi
+
+.sp
+Append /etc/services at the end of file `foo' and `bar':
+.nf
+ $ cat /etc/services >> foo >> bar
+.fi
+
+.sp
+Pipe STDERR:
+.nf
+ $ echo An error >&2 2>&1 | sed -e 's/A/I/'
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS
+MULTIPLE I/O REDIRECTION
+Requires \fIsetopt multios\fP! Some examples:
+
+.sp
+Print output of 'ls' into files 'foo' and 'bar':
+.nf
+ $ ls >foo >bar
+.fi
+
+.sp
+Send standard output of one process to standard input of
+several processes in the pipeline:
+.nf
+ $ process1 > >(process1) > >(process2)
+.fi
+
+.sp
+Redirection to file as well as send on to pipe:
+.nf
+ $ make install > /tmp/logfile | grep -i error
+.fi
+
+.sp
+Redirect stderr to a command like xless without redirecting
+stdout as well:
+.nf
+ $ foo 2>>(xless)
+\&.\&.\&. but this executes the command asynchronously. To do it synchronously:
+.nf
+ $ { { foo 1>&3 } 2>&1 | xless } 3>&1
+.fi
+
+.sp
+Redirect stderr two times:
+.nf
+ $ setopt multios ; program 2> file2 > file1 2>&1
+.fi
+
+.sp
+More fun with stderr:
+.nf
+ $ ./my-script.sh 2> >(grep -v geek >error.log) | process-output > output.log
+   echo "Thats STDOUT" >>(sed 's/stdout/another example/' > foobar)
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS
+MODIFIERS USAGE
+Modifiers are a powerful mechanism that lets you modify the results returned by
+parameter, filename and history expansion. See zshexpn(1) for details.
+.sp
+Remove a trailing pathname component, leaving the head. This works like `dirname':
+.nf
+  $ echo =ls(:h)
+  /bin
+.fi
+.sp
+Remove all leading pathname components, leaving the tail. This works like `basename'.
+.nf
+  $ echo =ls(:t)
+  ls
+.fi
+.sp
+Remove a filename extension of the form `.xxx', leaving the root name.
+.nf
+  $ echo $PWD
+  /usr/src/linux
+  $ echo $PWD:t
+  linux
+.fi
+.sp
+Remove all but the extension.
+.nf
+  $ foo=23.42
+  $ echo $foo
+  23.42
+  $ echo $foo:e
+  42
+.fi
+.sp
+Print the new command but do not execute it. Only works with history expansion.
+.nf
+  $ echo =ls(:h)
+  /bin
+  $ !echo:p
+  $ echo =ls(:h)
+.fi
+.sp
+Quote the substituted words, escaping further substitutions.
+.nf
+  $ bar="23'42"
+  $ echo $bar
+  23'42
+  $ echo $bar:q
+  23\'42
+.fi
+.sp
+Convert the words to all lowercase.
+.nf
+  $ bar=FOOBAR
+  $ echo $bar
+  FOOBAR
+  $ echo $bar:l
+  foobar
+.fi
+.sp
+Convert the words to all uppercase.
+.nf
+  $ bar=foobar
+  $ echo $bar
+  foobar
+  $ echo $bar:u
+  FOOBAR
+.fi
+.sp
+Variables can be modified by modifiers, too. That makes modification of
+variables possible without using any external program.
+.nf
+  sentence="beginning and some words of a sentence with end."
+.fi
+.sp
+Now lets split this sentence-var by using the (s| |) modifier which modifies
+words by splitting at " ":
+.nf
+  words=${(s| |)sentence}
+  print $words[1] -> "beginning"
+  print $words[-1] ->"end."
+.fi
+.sp
+Now if one wants to have the beginning of a sentence with a Capital, it's as
+easy as doing:
+.nf
+  print "${(C)words[1]} $words[2,-1]"
+.fi
+.sp
+which capitalizes the first word of the list words and then adds with " "
+second to last word of words. It's possible to join these words as a colon
+separated scalar.
+.nf
+  colonlist=${(j|,|)words} # (j|,|) joins with ",".
+.fi
+.sp
+You can see that it's a scalar by testing with (t):
+.nf
+  print ${(t)colonlist} prints "scalar".
+  print ${(t)words} prints "array".
+.fi
+.sp
+It's possible to sort arrays with o and O:
+.nf
+  print ${(o)words} # lists the words-array sorted (forwards)
+  print ${(O)words} # lists the words-array sorted (backwards)
+.fi
+.\"#######################################################
+
+
+.\"#######################################################
+.SS "COMPLETITION"
+See also \fIman 1 zshcompctl zshcompsys zshcompwid\fP\&.
+zshcompctl is the old style of zsh programmable completion,
+zshcompsys is the new completion system, zshcompwid are the
+zsh completion widgets.
+.sp
+Some functions, like _apt and _dpkg, are very slow. You can
+use a cache in order to proxy the list of results (like the
+list of available debian packages) Use a cache:
+.nf
+ zstyle ':completion:*' use-cache on
+ zstyle ':completion:*' cache-path ~/.zsh/cache
+.fi
+.sp
+Prevent CVS files/directories from being completed :
+.nf
+ zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+ zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+.fi
+
+.sp
+Fuzzy matching of completions for when you mistype them:
+.nf
+ zstyle ':completion:*' completer _complete _match _approximate
+ zstyle ':completion:*:match:*' original only
+ zstyle ':completion:*:approximate:*' max-errors 1 numeric
+.fi
+
+.sp
+And if you want the number of errors allowed by _approximate
+to increase with the length of what you have typed so far:
+.nf
+ zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )'
+.fi
+
+.sp
+Ignore completion functions for commands you don't have:
+.nf
+ zstyle ':completion:*:functions' ignored-patterns '_*'
+.fi
+
+.sp
+With helper functions like:
+.nf
+ xdvi() { command xdvi ${*:-*.dvi(om[1])} }
+.fi
+.sp
+you can avoid having to complete at all in many
+cases, but if you do, you might want to fall into menu
+selection immediately and to have the words sorted by time:
+.nf
+ zstyle ':completion:*:*:xdvi:*' menu yes select
+ zstyle ':completion:*:*:xdvi:*' file-sort time
+.fi
+
+.sp
+Completing process IDs with menu selection:
+.nf
+ zstyle ':completion:*:*:kill:*' menu yes select
+ zstyle ':completion:*:kill:*'   force-list always
+.fi
+
+.sp
+If you end up using a directory as argument, this will
+remove the trailing slash (usefull in ln)
+.nf
+ zstyle ':completion:*' squeeze-slashes true
+.fi
+
+.sp
+cd will never select the parent directory (e.g.: cd ../<TAB>):
+.nf
+ zstyle ':completion:*:cd:*' ignore-parents parent pwd
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS "ADVANCED GLOBBING"
+See \fIman zshexpn | less -p 'Glob Qualifiers'\fP
+
+.sp
+List file 'foobar' via recursiv search in directories:
+.nf
+ $ ls **/foobar
+.fi
+
+.sp
+List files file20, file30, file100, etc:
+.nf
+ $ ls file<20->
+.fi
+
+.sp
+List files with suffix c and pro (e.g. foo.c, bar.pro):
+.\" Anmerkung: es gibt da ein noch genaueres Pattern - FIXME
+.nf
+ $ ls *.(c|pro)
+.fi
+
+.sp
+List files which are word-readable:
+.nf
+ $ ls *(R)
+.fi
+
+.sp
+List all .c-files except 'lex.c':
+.nf
+ $ ls *.c~lex.c
+.fi
+
+.sp
+List all `README' - files case-insensitive with max. one typo
+(e.g. RADME, REEME, RAEDME):
+.nf
+ $ ls (#a1)README
+.fi
+
+.sp
+List files named README but accept one spelling error including
+case-insensitive (e.g. RADME, REEME, RAEDME):
+.nf
+ $ ls (#ia1)README
+.fi
+
+.sp
+List executable files, directories and symlinks:
+.nf
+ $ ls *(*@)
+.fi
+
+.sp
+List dangling symlinks:
+.nf
+ $ ls **/*(-@)
+.fi
+
+.sp
+List all zero-length-files which are not group- or
+world-writable:
+.nf
+ $ ls *(L0f.go-w.)
+.fi
+
+.\".sp
+.\"List the last two modified files/directories:
+.\" FIXME - stimmt das?
+.\".nf
+.\" $ ls *(om[2])
+.\".fi
+
+.\".sp
+.\"Edit newest file with vim:
+.\" FIXME - stimmt das?
+.\".nf
+.\" $ vim *(.om[1]^D)
+.\".fi
+
+.sp
+List all .c-files for which there doesn't exist a .o file:
+.nf
+ $ c=(*.c) o=(*.o(N)) eval 'ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}'
+.fi
+
+.sp
+Find (and print) all symbolic links without a target within
+the current dirtree:
+.nf
+ $ file **/*(D@) | fgrep broken
+ $ for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i
+ $ echo **/*(@-^./=%p)
+ $ print -l **/*(-@)
+.fi
+
+.sp
+Rename all MP3-files from name with spaces.mp3 to Name With
+Spaces.mp3:
+.nf
+ $ for i in *.mp3; do
+          mv $i ${${(C)i}:s/Mp3/mp3/}
+   done
+.fi
+
+.sp
+Rename all PDF-files from name.mp3 to Name.mp3 (lowercase to
+uppercase of first letter) without touching the rest of the
+filename:
+.nf
+ $ zmv '([a-z])(*).pdf' '${(C)1}$2.pdf'
+.fi
+
+.sp
+Substitutions in strings can be done by string-indexes:
+.nf
+ $ a="doh.";a[1]='d';a[-1]='. (Bart Simpson)'
+ $ echo $a
+ doh. (Bart Simpson)
+.fi
+
+.sp
+Associative arrays:
+.nf
+ $ typeset -A ass_array; ass_array=(one 1 two 2 three 3 four 4)
+ $ print ${(k)ass_array} # prints keys
+ one four two three
+ $ print ${(v)ass_array} # prints values
+ 1 4 2 3
+ $ print $ass_array[one]
+ 1
+.fi
+
+.sp
+Extract parts of a string. Print first word of output of 'date':
+.nf
+ $ print ${$( date )[1]}
+.fi
+
+.sp
+Extract parts of a string. Print ip-address of loopback device:
+.nf
+ $ print ${${$( LC_ALL=C /sbin/ifconfig lo )[6]}#addr:}
+.fi
+
+.sp
+Print specific line of a file. E.g. print line 5 of file:
+.nf
+ $ print -l ${"$( < file )"[(f)5]}
+.fi
+
+.sp
+Print line containing string 'root' of file /etc/passwd:
+.nf
+ $ print ${"$( < /etc/passwd )"[(fr)*root*]}
+.fi
+
+.\" TODO / FIXME ->
+.\" print -l ${(M)${(f)"$(< /etc/passwd)"##*$muster*}} (f)
+.\" liest die in Anführungsstrichen stehende Ausgabe der Datei zeilenweise in eine unbenannte Variable. Wie auch in anderen Shells schneidet ## am Anfang *$muster* ab.
+.\" Da aber (M) benutzt wird, werden alle Zeilen, bei denen das Muster zutrifft, nicht abgeschnitten, sondern alleine ausgegeben. Das Gegenstück dazu ist (R), was im vorigen Fall dann einem "grep -v" entspricht.
+.\" Würde man nur ein # angeben, würden die Sterne (Stellvertreter für 0 oder mehr Zeichen) geizig - mit so wenig Zeichen wie möglich - ausgegeben. In diesem Fall würde dann also nur $muster selber ausgeben.
+.\" Zsh kann wie bekanntere Programmiersprachen (Perl, Python, Ruby z.B) im Index einer Variablen ein "von_feld,bis_feld".
+
+.sp
+Print words two to four of output of 'date':
+.nf
+ $ print ${$( date )[2,4]}
+.fi
+
+.\".sp
+.\"FIXME [text]
+.\".nf
+.\" $ print ${${:-one two three four five}[2,-2]}
+.\".fi
+.\".pp
+.\"gibt als Ergebnis zwei drei vier aus. (':-' ersetzt den
+.\"fehlenden Variablennamen hier wie bei der Bash durch seine
+.\"Werte).
+
+.sp
+Use of two-dimensional indizes. Print time via date but
+without seconds:
+.nf
+ $ print ${$(date)[4][1,5]}
+.fi
+
+.\" TODO
+.\" Mit dem sogenannten Here-String kann man eine Art Here-Document benutzen ohne ein EOT-Signal auf einer Extra-Zeile eingeben zu müssen:
+.\"
+.\" for Programm in cat tail head grep ; do >> /tmp/datei  \
+.\" <<< "Hallo,Welt! Ich habe das Geüfhl, mein             \
+.\" externes $Programm wird bald nicht mehr so viel benutzt." ; done
+.\" Man achte auch auf das Auslassen von cat, was bei der zsh nicht mehr nötig ist!
+
+.sp
+Calculate floating point numbers:
+.nf
+ $ printf "%.0f\n" $[ 2.8*15 ]
+.fi
+
+.\" Ausserdem kann in verschiedenen Zahlensystemen gerechnet werden, in dem in eckigen Klammern [#<zahlensystem>] geschrieben wird, also:
+.\"
+.\" for (( i=1; i<100; i++ )) { print $(( [#10] i)) }
+.\" entspricht
+.\"
+.\" $(( [#16] i )) }
+.\" Bei zweifacher Angabe von # wird das Zahlensystem nicht ausgegeben.
+.\"
+.\" Sogar einen "Taschenrechner" gibt es in der Zsh, der nach autoload zcalc zur Verfügung steht.
+.\"
+.\" Beispiele zur Vervollständigung (noch nach dem alten Schema bis 3.1.5):
+.\"
+.\" compctl -g '*(/)' cd
+.\" macht aus einer einfachen Dateiergänzung wie der Ksh eine intelligente Vervollständigung für "cd", die nur noch Verzeichnisnamen aufführt.
+.\" Vor allem mit compctl -k '(`aktion`)' lassen sich sehr praktische Vervollständigungsmechanismen erstellen. Man kann sich so z.B. ohne Probleme bei Aufruf eines Email-Programmes nur Email-Adressen und mit ftp nur FTP-Adressen vervollständigen lassen. Außerdem kann man bei der Vervollständigung auch Dateienden abschneiden lassen. Das ist z.B. bei Java sehr praktisch.
+.\"
+.\" compctl -g '*.class(:r)' java
+.\" (Mehr Beispiele zur älteren Vervollständigung hier)
+.\" Mit der Zsh kann man sehr gezielt nach Worten in Dateien suchen: Nach dem Freischalten von Sonderzeichen für die Reichweite eines glob-Befehls mit setopt extended_glob ist folgendes machbar:
+.\"
+.\" grep Wort *~(*.gz|*.bz|*.bz2|*.zip|*.Z)
+.\" sucht 'Wort' nicht mehr in den komprimierten Dateien im Mail-Ordner.
+.\" ~ bedeutet hier so viel wie "außer".
+.\" Alle Dateien, die nicht die Endung *.bz2 und auch nicht *.gz enthalten , sucht man mit
+.\"
+.\" ls ^(*.bz2|*.gz)
+.\" Das ^ ist also das "NICHT", das Ausrufezeichen wird von der Zsh für alte Befehle benutzt.
+.\" An dieser Stelle bietet sich vielleicht ein globales Alias für komprimierte Dateien an (siehe weiter unten).
+.\" Zusätzlich zu ^ und ~ lassen sich die Ausdrücke # und ##benutzen, um null und mehr bzw. ein und mehr Vorkommen des Zeichens davor zu erhalten, was bei Perls regulären Ausdrücken den Zeichen * bzw. + entspricht.
+.\" Globale Aliase sind Aliase, die nicht nur am Anfang der Kommandozeile oder nach ; als Aliase wirken können. Sie sollten gut gekennzeichnet werden:
+.\"
+.\" alias -g §k="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
+.\" und danach der Befehl
+.\"
+.\" ls -d §nk
+.\" listet alle nicht-komprimierte Dateien auf.
+.\" Mit unalias '§k' wird man dieses globale Alias wieder los. Wichtig hierbei sind die einfachen Anführungsstriche. Sonst wirkt nämlich §k weiter, was nicht im Sinne des Benutzers wäre.
+.\" Aliase können seit Version 4.2 auch verwendet werden, um bestimmten Zeichenketten-Endungen (Suffixes) nach einem Punkt automatisch mit dem selben Befehl aufzurufen, was meist für Dateiendungen benutzt wird. Dabei gilt:
+.\"
+.\"
+.\" alias -s NAME=WERT
+.\" wobei TEXT.NAME dann durch die Zsh zu WERT TEXT.NAME wird.
+.\"
+.\" alias -s txt='less -rE'
+.\" ruft alle ohne Befehl aufgerufenen .txt-Dateien automatisch mit dem Befehl less -rE auf, so dass man jetzt einfach nur den Dateinamen und ein return eingeben muss. Diese Funktionalität ist vergleichbar mit dem Anklicken einer oder mehrerer Dateien mit einem graphischen Dateimanager. Dabei kann man auch globale Zeichen wie * verwenden, also beispielsweise *.txt und ein "enter" eingeben um alle Dateien mit Endung ".txt" mit less zu lesen.
+.\" Praktischerweise gibt es mit autoload zsh-mime-setup ; zsh-mime-setup die Möglichkeit, anhand der Mime-Definitionen in /etc/ schon bestimmte Datei-Endungen mit bestimmten Programmen zu belegen.
+.\"
+.\"
+.\" alias -s de=w3m
+.\" alias -s at=w3m
+.\" ruft alle WWW-Seiten mit .de oder .at direkt mit w3m auf. ('.de' bzw. '.at' in der Eingabe ist in diesem Fall keine Dateiendung!)
+.\" In der Zsh kann man aus jeder eigenen Funktion eine Datei machen, ohne dass diese Datei ausführbar sein muss. Hierzu setzt man die Variable FPATH bzw fpath (siehe unten) auf das oder die Verzeichnisse, die berücksichtigt werden sollen.
+.\" In der Datei genügt es, einfach eine oder mehrere Funktionen zu schreiben, z.B:
+.\"
+.\" begruessung() { echo "Hallo, $1" ; }
+.\" herzlich()    { echo "Ist ja riesig, $1, Dich zu sehen" ; }
+.\" Jetzt muss noch dieser Dateiname mit autoload dateiname bekannt gemacht werden. Daraufhin stehen nach einmaligem Aufruf des Namens der Funktionen die beiden Funktionen dann zur Verfügung. Schreibt man nur den Funktionsrumpf allein dann hat das gegenüber dem Schreiben von Funktionen den Vorteil, sofort ausgeführt werden zu können. autoload-Funktionen müssen nämlich erst einmal aufgerufen werden, damit ihr Rumpf bekannt ist. Beispiel:
+.\"
+.\" echo "Ist das schön, $1, Dich zu sehen\!" > ~/.zsh/funktionen/begruessung
+.\" ist nach Aufruf von autoload begruessung sofort nutzbar. (Siehe AUTOLOADING FUNCTIONS unter 'man zshmisc')
+.\" Statt in eine "Backslashitis" beim Aufschreiben von Skalar-Variablen mit viel Inhalt zu verfallen (z.B. beim Definieren des Pfades) gibt es bei der Zsh die Möglichkeit, das kleinbuchstabige Gegenüber des großbuchstabigen Variablennamens als eines Arrays zu verwenden und sogar für eigene Variablen mit typeset -T ein "Gegenüber" von einer Skalar-Variable zu einer Feld-Variable durch die Kleinschreibweise der Variablen zu erzielen.
+.\" Dieser Variante kann man dann ein Feld aus Werten - durch Leerzeichen oder Zeilenumbruch getrennt - zuweisen. Beispiel PATH:
+.\"
+.\" alt: PATH=/usr/bin\
+.\"      :/usr/local/bin/\
+.\"      :/usr/sbin\
+.\"      :/usr/local/sbin\
+.\"      :/usr/X11R6/bin
+.\"
+.\" zsh: path=( /usr/bin /usr/local/bin /usr/sbin /usr/local/sbin /usr/X11R6/bin )
+.\" Da die Zsh für Feldvariablen runde Klammern braucht (wenn nicht setopt shwordsplit gesetzt ist) sind die Worte in runde Klammern eingeschlossen.
+.\" Wer allerdings kompatibel zur Sh/Ksh/Bash programmieren muss/will, der muss die Option setopt shwordsplit setzen.
+.\" Zle - der Zeileneditor der Zsh - ist den Zeileneditoren anderer Shells überlegen. Hier kann man fröhlich mehrere Zeilen schreiben und nach dem Aufruf mit RETURN separat einzelne Zeilen korrigieren. Man muss also nicht mehr immer einen externen Editor aufrufen.
+.\" Besonders nett dabei: Wo die Bash nur das Manövrieren wie in einer einzigen Zeile zulässt, kann man bei der Zsh bequem mit dem Cursor - wie in einem Editor - über mehrere Zeilen navigieren.
+.\" Will man innerhalb mehrerer Zeilen editieren, dann muss man entweder mit bindkey "^Xp" push-line-or-edit oder ähnlicher Tastenbelegung diesen Puffer in einen anderen Puffer kopieren oder aber nach einem Control-C erneut die Zeilen zurückholen.
+.\" Mittels zle -N kann man eigene, sogenannte Widgets (das sind Editier-Funktionen) zle bekannt machen. In den Variablen LBUFFER und RBUFFER liegt die Kommandozeile links bzw. rechts des Cursors, die man so sehr einfach manipulieren kann. Beispiel:
+.\"
+.\" klammer() { LBUFFER="\${$LBUFFER" ; RBUFFER="}$RBUFFER" }
+.\" erzeugt eine Funktion klammer, die man mit bindkey '^g' klammer jetzt an die Taste Control-G zuweisen kann.
+.\" Noch ein Beispiel für ein User-Widget:
+.\"
+.\" wohin() {
+.\"   dirs -v
+.\"   print -n "Wohin? "
+.\"   read WOHIN
+.\"   cd +${WOHIN:=0}
+.\" }
+.\" Jetzt muss mit 'zle -N ' "wohin" als User-Widget deklariert werden. Anschließend kann mit 'bindkey '^Ww' wohin' die definierte und deklarierte Editier-Funktion auf 'Control-Ww' gelegt werden.
+.\" Zusätzlich kann man mit 'autoload zed' sogar einen Editor (der in der Z Shell selber geschrieben ist) benutzen, der dann von seiner Voreinstellung oder durch 'bindkey -e' Emacs-artig, bei Eingabe von 'bindkey -v' vi-artig funktioniert. Gesichert wird allerdings durch 'control-x control-w' oder im Vicmd-Modus mit 'ZZ' und mit dem Befehl control-c bricht man ab. Ruft man zed mit der Option -f oder als fned auf, kann man Funktionen editieren.
+.\" Als wohltuend empfinden wir bei einem Kommando des Zeileneditors das Kommando insert-last-word, das im Gegensatz zur Bash nicht immer das letzte Wort, sondern bei wiederholtem Aufruf das letzte Wort davor und so weiter aufruft. (Siehe auch 'man zshzle')
+.\" Die Zsh unterstützt wie ihr Vorbild -die Ksh- Koprozesse. Koprozesse sind eine Möglichkeit, an Parallelprozesse Daten zu übergeben und Daten zu empfangen. Diese Koprozesse werden allerdings mit 'coproc' eingeleitet und nicht wie bei der Ksh mit |& .
+.\" Mit ' print -p' und mit '>&p ' als Umlenkung kann ich Daten an den Prozeß senden und mit 'read -p und '<&p' als Umlenkung Daten von diesem Prozeß auslesen. Beispiel:
+.\"
+.\" coproc ed /tmp/notizen
+.\" print -p "a"
+.\" ls -l >&p
+.\" print -p ".\nwq"
+.\" schreibt in einen parallel laufenden Koprozess, den altehrwürdigen Ed, die Ausgabe von 'ls -l' und speichert den Inhalt in der Datei /tmp/notizen ab und beendet ed.
+.\" Weitgehender als ein Coprozess ist das Laden des zpty-Moduls mit 'zmodload zsh/zpty', welches dann ähnliche Steuerungsmöglichkeiten wie das Programm expect bietet. Als Beispiel für die Verwendung von zpty kann das Skript nslookup in /usr/share/zsh/4.x.x/functions/ dienen, was das gleichnamige interaktive Programm durch seine Vervollständigung leichter bedienbar macht.
+.\" Die Zsh kennt die Formatierungen, die die Ksh kennt. typeset - oben schon kurz bei assoziativen Variabelfeldern erwähnt - ist ein mächtiger Formatierbefehl der Ksh. Mit diesen Formatierungsregeln lassen sich Ausgaben auf unterschiedliche Weise formatieren.
+.\"
+.\" typeset -L2 name=werteintrag ;print "[$name]"
+.\" gibt linksformatiert "[we]" aus, die ersten 2 Buchstaben, umrahmt von [].
+.\"
+.\" typeset -lL20 name=WERT;print "[$name]"
+.\" gibt in Kleinbuchstaben (-l für lower) "[wert         ]" aus, wobei 20 - 11 Leerzeichen eingefügt werden.
+.\"
+.\" typeset -r RPROMPT=%n
+.\" schützt den Rechtsprompt vor einem versehentlichen Überschreiben. Die Variable ist jetzt read-only und zsh warnt einen mit "zsh: read-only variable: RPROMPT ". Alle typeset-Befehle können mit einem - statt dem + aufgehoben werden. (Siehe man zshbuiltins unter typeset)
+.\" Zusätzlich zu typeset kann man auch durch sogenannte Modifier die Ausgabe von print verändern. Beispiel:
+.\"
+.\" name="Wert"
+.\" print "[${(Ll:20:)name}]"
+.\" ergibt genau die selbe Ausgabe wie
+.\"
+.\" typeset -lL20 name
+.\" Seit Zsh 4.1.1 kann man mit
+.\"
+.\" printf "%20s\n" ${(L)a}
+.\" ähnlich wie in der gleichnamigen C-Funktion auch dieses Ergebnis bekommen, ohne den externen printf-Befehl nutzen zu müssen.
+.\" Die Ausgabe von Dateinamen kann mittels sogenannter Qualifier spezifiziert werden (siehe man zshexpn unter Glob Qualifier). Beispiele:
+.\"
+.\" print -l *(m-1) # listet nur Dateien zeilenweise auf, die vor
+.\"                 # bis zu einem Tag modifiziert wurden
+.\"
+.\" print -l *(a1)  # listet Dateien zeilenweise auf, auf die vor einem
+.\"                 # Tag zugegriffen wurde
+.\"
+.\" print -l *(@)   # listet nur die Links zeilenweise auf
+.\"
+.\" ls -doF *(/)    # findet nur die Verzeichnisse
+.\"
+.\" chmod 640 *(W)  # verändert die Rechte aller Dateien, in die
+.\"                 # jeder schreiben darf, denn das ist ja meistens
+.\"                 # besonders riskant!
+.\"
+.\"
+.\" grep name *(.)  # findet nur noch reine Dateien. Damit ist
+.\"                 # die unsinnige Meldung "grep: bla: Is a directory"
+.\"                 # für alle Zeiten vermeidbar.
+.\" Um einmal wieder an alte schlechtere Zeiten erinnert zu werden, könnte man auch 'grep name *(^.@)' eingeben. Hiermit werden alle Dateien aufgelistet, mit denen grep nichts anfangen kann, denn '^' ist das Nicht-Zeichen :).
+.\"
+.\"
+.\" gg() { grep -wE "$1" *(.) | less -r }
+.\" könnte eine kleine Zsh-Funktion sein, um gezielt nach einem Wort und unter Zuhilfenahme von regulären Ausdrücken zu suchen. Ich persönlich (Matthias) benutze allerdings lieber Perl für solche Dinge und habe dafür das Perl-Programm mg entdeckt.
+.\" Ein sehr schneller Befehl, um DOS-Dateien (keine Verzeichnise) zu Dateien mit kleinen Buchstaben zu machen ist:
+.\"
+.\" for i in [A-Z][A-Z]*(.); do mv $i ${i:l} ;done
+.\" Der Qualifier :l (für lowercase) leistet hier ganze Arbeit.
+.\"
+.\" print -l *(LM+3)
+.\" gibt zeilenweise Dateien aus, die über 3 Megabyte groß sind.
+.\" Ich kann unter der Zsh komprimierte Email-Pakete lesen, ohne mich zuerst um das Entpacken kümmern zu müssen. Das geht bei gzip-gepackten Dateien z.B. so:
+.\"
+.\"  mutt -f =(zcat mailfold*.gz)
+.\" In den =() steht dabei die Aktion, die mit einer Datei gemacht wird, es wird dabei eine temporäre Datei erzeugt und mit ihr z.B. mutt -f aufgerufen. Ein anderes Beispiel:
+.\"
+.\" mutt -f =(grepmail "Mustafa Mustermann" ~/mbox)
+.\" sucht alle Emails von Mustafa Mustermann aus einer sehr großen Email-Datei namens mbox mittels grepmail, einem sehr mächtigen Perl-Programm zum Herausfiltern von Emails, welche einem bestimmten Kriterium entsprechen, heraus. Die temporäre Datei wird selbstverständlich nachher wieder gelöscht.
+.\" mutt ist ein sehr schönes Mail-Programm, welches auch auf der Kommandozeile funktioniert, das wir sehr empfehlen können. Mit 'mutt -f' liest mutt nicht aus /var/spool/mail sondern die Email-Datei, hier mehrere Emaildateien. Ein anderes Beispiel:
+.\"
+.\" lynxbzgrep() {
+.\"   lynx -force_html -dump =(bzip2 -cd $1 | grep $2)
+.\" }
+.\" ermöglicht es, mit lynxbz bzip2-gepackte HTML-Seiten nach einem Begriff zu untersuchen. Nötig wird dieser Mechanismus, wenn ein Programm lseek benötigt. (Siehe man 3 lseek)
+.\" Wird keine temporäre Datei benötigt, dann kann man wie auch bei der Bash '<()' verwenden. Damit erspart man sich dann die manuelle Verwendung von /proc/self/fd oder die manuelle Erzeugung einer "named pipe":
+.\"
+.\" lynx -force_html <( gzip -cd komprimiert.html.gz )
+.\" ist ein Beispiel, bei dem lynx die Ausgabe von 'gzip -cd komprimiert.html.gz' verarbeitet.
+.\" Durch intelligente Kommunikation verschiedener Prozesse wird es möglich, dass man zwei Pseudodateien erzeugen und miteinander vergleichen kann: In Shellkreisen wird dies als 'named pipe' bezeichnet, die die Zsh indirekt erzeugt.
+.\"
+.\" diff <(zcat erste_datei.gz) <(zcat zweite_datei.gz)
+.\" vergleicht den Inhalt von zwei komprimierten Dateien miteinander.
+.\" Nach Setzung von READNULLCMD=less lässt sich eine Datei mit:
+.\"
+.\" < datei
+.\" unter less angucken. Einfach ein < vor die Datei setzen.
+.\" Es ist ohne Probleme möglich, die Standardausggabe an mehrere Dateien umzulenken:
+.\"
+.\" ls >datei1 >datei2 >datei3
+.\" oder:
+.\"
+.\" ls >> datei1 >> datei2
+.\" Man kann auch die Standardeingabe von mehreren Dateien empfangen:
+.\"
+.\" less < datei1 < datei2
+.\" Es ist möglich, eine Umlenkung in eine Datei und gleichzeitig an eine Pipe zu bewerkstelligen:
+.\"
+.\" make >logfile | grep Error
+.\" Mit ls -lL =emacs kann man beispielsweise in jedem Verzeichnis schauen, wie groß 'emacs' genau ist. Man muss nicht mehr den Pfad angeben. Die Zsh schaut dabei selbst im Pfad nach, wenn man emacs im Pfad hat. Man kann auch bequem Dateien, die im Pfad stehen, auf diese Art editieren.
+.\"
+.\" jed =genial.c
+.\" editiert eine C-Funktion, wenn sie im Pfad gefunden werden kann.
+.\" Statt eines sehr expliziten aber umständlich zu tippenden find-Befehls kann under der Zsh ** als rekursives Kürzel verwendet werden. Mit:
+.\"
+.\" print -l **/*.html
+.\" findet man alle HTML-Seiten, die in allen Verzeichnissen unterhalb des jetzigen Verzeichnisses vorhanden sind und gibt sie auf je einer Zeile (-l) aus.(**=Rekursion)
+.\"
+.\"
+.\" print -l **/datei.html # sucht die bestimmte Datei in allen
+.\"                        # vom aktuellen Verzeichnis abgehenden
+.\"                        # Verzeichnissen und gibt genau sie aus.
+.\"
+.\" print -l **/*.html~datei.html # gibt alle HTML-Seiten
+.\"                               # mit Ausnahme von datei.html zeilenweise aus.
+.\"
+.\" grep name **/*.txt  # sucht in allen Texten unterhalb des
+.\"                     # gegenwärtigen Verzeichnisses nach Dateien
+.\"                     # mit Endung .txt.
+.\" Mit vared kann man alle Umgebungsvariablen editieren. Das finden wir praktisch, weil wir sofort die Variable erreichen und nicht erst in einer Datei wie .zshrc nach ihr suchen müssen. Außerdem wirkt das Editieren der Variablen natürlich sofort.
+.\" Der Befehl dirs -v zeigt alle Verzeichnisse, in denen man in einer Sitzung gewesen ist zeilenweise an. Wenn man
+.\" setopt autopushd setzt, kann man nun mit cd +2 das vorletzte Verzeichnis erreichen.
+.\" Mit der Zsh kann man sehr lange Unterverzeichnisse im Prompt mit einem kurzem oder signifikanteren Namen (named directory) versehen und dann mit ~name aufrufen. Das ist insbesondere dann sehr praktisch, wenn man in einem sehr entfernten Ordner von '/' aus gesehen arbeitet.
+.\" Ich (Matthias) habe mir eine kleine Zsh-Funktion geschrieben, die mir aus einem langem Verzeichnisnamen einen kurzen erzeugt:
+.\"
+.\"
+.\" zza () {
+.\"   NAMED_DIRECTORY=$PWD:t; # der Name des jetzigen Verzeichnisses wird
+.\"                           # an NAMED_DIRECTORY ohne die Hierarchie übergeben.
+.\"                           # :t steht für tail.
+.\"   eval $NAMED_DIRECTORY=$PWD; # es findet die Setzung eines named directory statt.
+.\"   cd ~$NAMED_DIRECTORY;       # es wird in das named directory gesprungen.
+.\"                               # ist mit dem bestehenden Verzeichnis identisch
+.\"                               # aber der Name ist kürzer im Prompt.
+.\" }
+.\" Eine außerdem sehr praktische Möglichkeit besteht darin, dass man jetzt nicht mehr den ganzen Pfadnamen angeben muss, wenn man eine Datei verschiebt. Z.B.:
+.\"
+.\" mv datei.1 ~lm1
+.\" könnte die Datei bequem nach /usr/local/man/man1/ verschieben, wenn man lm1=/usr/local/man/man1 gesetzt hat.
+.\" Bei der Prompt-Darstellung gibt es zwei Möglichkeiten: Entweder weisst man am Ende auch noch den letzten Slash zu: info=/usr/local/info/ Dann wird im Prompt der ganze Name dargestellt. cd ~info springt zwar nach /usr/local/info, aber im Prompt steht:
+.\"
+.\" /usr/local/info%
+.\" Möchte man aber den kurzen Prompt haben, dann muss man so zuweisen:
+.\"
+.\" info=/usr/local/info
+.\" -also ohne Slash am Ende.
+.\" Die Option autocd erlaubt es, nur den Namen eines Ordners anzugeben. Bei Eindeutigkeit wird dann sofort in diesen Ordner gesprungen. Z.B. springt bin «enter» dann sofort in das bin-Verzeichnis.
+.\" Es gibt keinen Fehler bei Farbprompts wie unter der Bash1-Shell. Gerade bei der Gliederung des Prompts ist das besonders wichtig. Da die üblichen Escape-Sequenzen sehr unleserlich sind gibt es in der Zsh eine besonders elegante Möglichkeit, um Farben zu definieren. Ein Beispiel:
+.\"
+.\" autoload -U colors && colors
+.\" echo "$fg_bold[red]zsh $fg_no_bold[white]is $bg[blue]$fg_bold[green]nice"
+.\" Mit RPROMPT lässt sich ein PROMPT auf der rechten Seite definieren:
+.\" RPROMPT=%l zeigt beispielsweise an, auf welchem Rechner man sich befindet.
+.\" RPROMPT=%n zeigt den Benutzer an.
+.\" RPROMPT=%T zeigt die Zeit an.
+.\" RPROMPT=%D{%d.%m.%y} zeigt das Datum nach deutscher Darstellung an.
+.\" Selbstverständlich kennt die Zsh auch eine Korrekturmöglichkeit bei falscher Eingabe, die aber nur dann wirksam wird, wenn man das wirklich eingestellt hat. Man setzt in einen solchem Fall einfach:
+.\"
+.\" setopt autocorrect
+.\" Die Korrektur kann durch Setzung eines
+.\"
+.\" alias <befehl>=nocorrect <befehl>
+.\" verhindert werden.
+.\" Um darüber informatiert zu werden, wer alles außer mir sich eingeloggt hat, gibt es das Kommando watch wie unter der Tcsh.
+.\"
+.\"
+.\" watch=(notme)
+.\" listet z.B. alle Benutzer auf, die nicht ich sind :)
+.\" Hierbei kann das Format der Ausgabe geändert werde:
+.\"
+.\"
+.\" WATCHFMT='%n eingeloggt auf Terminal %l von %M seit %T '
+.\" Wählt man watch=(@vorsicht_ist_angesagt), so werden alle Benutzer aufgeführt, die von dem Server vorsicht_ist_angesagt eingeloggt sind.
+.\" Positiv herum kann man so natürlich auch alle Freunde erkennen lassen:
+.\"
+.\" watch=( < ~/.freunde root)
+.\" liest alle Freunde aus der Datei .friends in das Feld watch zusätzlich zu root ein. So kann man schnell erkennen, wenn sich Freunde einloggen.
+.\" Es gibt in der Zsh einen sehr bequemen Wiederholungsbefehl, der von der tcsh abgeschaut ist: repeat. Möchte man z.B. einen Werbemailer böswillig strafen, dann könnte man das so machen:
+.\"
+.\"
+.\" repeat 100 mail -s "spams suck" badcompany@devilsheart.com < flame
+.\" Dabei sollte allerdings bedacht werden, dass man damit meist harmlose Benutzer trifft, die schlechte Passworte haben und deshalb Räubern auf den Leim gegangen sind.
+.\" Ruft man ein altes Kommando mit !?kommando auf, hat man die Möglichkeit, vor der erneuten Ausführung zu schauen, ob es sich hierbei auch um das gewünschte Kommando handelt. Man drückt dazu einfach «TAB». Ebenso kann man sich auch die genau betroffenen Dateien eines global wirkenden Befehles (z.B. 'ls *.html') mit «TAB» ansehen.
+.\" Gerade eben getippte Worte auf der Kommandozeile können mit !# genauer wiedergegeben werden als bei Bash/Tcsh/Ksh. Man gibt einfach an, wo wiederholt werden soll - z.B.:
+.\"
+.\" echo ein_langes_wort zweites_langes_wort drei !#1-2
+.\" schreibt auf den Bildschirm: 'ein_langes_wort zweites_langes_wort drei ein_langes_wort zweites_langes_wort'.
+.\" Um die Funktion funct alle 300 Sekunden auszuführen führt man einfach folgenden Befehl aus:
+.\"
+.\" periodic funct()  PERIOD=300 fortune -s
+.\" Anmerkung: Allerdings muss dazu auch am Prompt ein Befehl eingegeben werden, sonst kann man natürlich nichts auf dem Bildschirm sehen.
+.\" Die Zsh kennt den '..' Operator von Pascal (und Perl):
+.\"
+.\" echo {1..7} "\nWo ist denn die Bash geblieben?"
+.\" ergibt:
+.\"
+.\" 1 2 3 4 5 6 7
+.\" Wo ist denn die Bash geblieben?
+.\" Die Zsh hat in ihrer sehr mächtigen HISTORY CONTROL ein run-help Kommando, mit dem zu einem Buffer gezielt Informationen abgerufen werden können. Voreingestellt ist hier der Aufruf der Manpage zu dem Kommando. Verändern könnte man diesen Aufruf, in dem man einfach aus:
+.\"
+.\" alias run-help=man # ein ->
+.\" alias run-help=info
+.\" macht.
+.\"
+.\" man_zshall() man zshall  # und nachfolgendes Deklarieren von
+.\" zle -N man_zshall        # kann durch Definition von
+.\" bindkey '^g' man_zshall  # nun immer bei Control-G ausgeführt werden.
+.\" sched ist ein interner Befehl zum automatischen, zeitgebundenen Abarbeiten von Kommandos ähnlich wie bei 'at'. Dabei werden die Kommandos aber nicht ausgeführt und dann als E-Mail zugeschickt, sondern gelangen erst einmal in den Puffer und werden beim nächsten Kommando erst auf dem Bildschirm ausgegeben.
+.\"
+.\" sched +0:10 figlet "Du musst jetzt los"
+.\" führt in 10 Minuten in Großschrift auf dem Bildschirm eine Warnung zum Gehen aus. Dabei ist allerdings das Durchführen des Befehls abhängig von der Eingabe eines nächsten Befehls.
+
+.sp
+Convert images from foo.gif to foo.png:
+.nf
+ $ for i in **/*.gif; convert $i $i:r.png
+.fi
+
+.sp
+Download files created with LaTeX2HTML (e.g. the ZSH-Guide):
+.nf
+ $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+     lynx -source $f >${f:t}
+   done
+.fi
+
+.sp
+Make with dpkg a master-list of everyfile that it has
+installed:
+.nf
+ $ diff <(find / | sort) <(cat /var/lib/dpkg/info/*.list | sort)
+.fi
+
+.sp
+Replace this color escape-sequences:
+.nf
+ $ autoload colors ; colors
+ $ print "$bg[cyan]$fg[blue]Welcome to man zsh-lovers" >> $TTY
+.fi
+
+.sp
+Get ASCII value of a character:
+.nf
+ $ char=N ; print $((#char))
+.fi
+
+.sp
+Filename suffix. Note: (N) activates setopt nullglob only for this loop.
+.nf
+ $ for i in *.o(N); do
+          rm $i
+   done
+.fi
+
+.sp
+Rename files: 'FOO' to 'foo':
+.nf
+ $ for i in *(.); mv $i ${i:l}
+.fi
+
+.sp
+Rename files: 'bar' to 'BAR':
+.nf
+ $ for i in *(.); mv $i ${i:u}
+.fi
+
+.sp
+Show all suid-files in $PATH:
+.nf
+ $ ls -latg ${(s.:.)PATH} | grep '^...s'
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS "ZMV - multiple move with zsh"
+Requires 'autoload zmv'. Some examples:
+
+.sp
+Move serially all files (foo.foo > 1.foo, fnord.foo > 2.foo, ..).
+.nf
+ $ ls *
+ 1.c  asd.foo  bla.foo  fnord.foo  foo.fnord  foo.foo
+ $ c=1 zmv '*.foo' '$((c++)).foo'
+ $ ls *
+ 1.c  1.foo  2.foo  3.foo  4.foo  foo.fnord
+.fi
+
+.sp
+See above, but now only files with a filename >= 30 chars.
+.\" Anmerkung: es gibt da ein noch genaueres Pattern - FIXME
+.nf
+ $ c=1 zmv "${(l:30-4::?:)}*.foo" '$((c++)).foo'
+.fi
+
+.sp
+Replace spaces in filenames with a underline.
+.nf
+ $ zmv '* *' '$f:gs/ /_'
+.fi
+
+.sp
+Change the suffix from *.sh to *.pl.
+.nf
+ $ zmv -W '*.sh' '*.pl'
+.fi
+
+.sp
+Lowercase/uppercase all files and directories.
+.nf
+ $ zmv '(*)' '${(L)1}' for lowercase
+ $ zmv '(*)' '${(U)1}' for uppercase
+.fi
+
+.sp
+Remove the suffix *.c from all c-files.
+.nf
+ $ zmv '(*).c' '$1'
+.fi
+
+.sp
+Uppercase only the first letter of all *.mp3 - files.
+.nf
+ $ zmv '([a-z])(*).mp3' '${(C)1}$2.mp3'
+.fi
+
+.sp
+Copy the target `README' in same directory as each `Makefile'.
+.nf
+ $ zmv -C '(**/)Makefile' '${1}README'
+.fi
+
+
+.sp
+Rename pic1.jpg, pic2.jpg,.. to pic0001.jpg, pic0002.jpg,...
+.nf
+ $ zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg'
+ $ zmv '(**/)pic(*).jpg' '$1/pic${(l:4::0:)2}.jpg' # recursive
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS "MODULES"
+.P
+See also \fIman zshmodules\fP\&.
+Don't forget to run \fIzmodload \-i MODULENAME\fP
+before using a module\&. Example: \fIzmodload -i
+zsh/datetime\fP\&.
+.PD 0
+.PD
+.TP
+\fBzsh/cap\fP
+Builtins for manipulating POSIX\&.1e (POSIX\&.6) capability (privilege) sets\&.
+.TP
+\fBzsh/clone\fP
+A builtin that can clone a running shell onto another terminal\&.
+.sp
+Creates a forked instance of the current shell ($! is set to zero) and
+execute ``command'' on /dev/tty8 (for this example):
+.nf
+ $ zmodload zsh/clone
+ $ clone /dev/tty8 && (($! == 0)) && exec command
+.fi
+.TP
+\fBzsh/compctl\fP
+The \fBcompctl\fP builtin for controlling completion\&.
+.TP
+\fBzsh/complete\fP
+The basic completion code\&.
+.TP
+\fBzsh/complist\fP
+Completion listing extensions\&.
+.TP
+\fBzsh/computil\fP
+A module with utility builtins needed for the shell function based
+completion system\&.
+.TP
+\fBzsh/datetime\fP
+Some date/time commands and parameters\&.
+.sp
+Do not have GNU date? Let's replace it:
+.nf
+ $ alias datereplacement='strftime "%Y-%m-%d" $EPOCHSECONDS'
+ $ export DATE=`datereplacement`
+ $ echo $DATE
+.fi
+.TP
+\fBzsh/deltochar\fP
+A ZLE function duplicating EMACS' \fBzap\-to\-char\fP\&.
+.TP
+\fBzsh/example\fP
+An example of how to write a module\&.
+.TP
+\fBzsh/files\fP
+Some basic file manipulation commands as builtins\&.
+.nf
+# search a directory for files containing a certain string then copy those files to another directory.
+  $ IFS=$'\0'
+  $ cp $(grep -lZr foobar .) otherdirectory
+.fi
+.TP
+\fBzsh/mapfile\fP
+Access to external files via a special associative array\&.
+.nf
+# grepping for two patterns
+  $ pattern1="foo"
+  $ pattern2="bar foo"
+  $ print -l ./**/*(DN.e{'z=$mapfile[$REPLY] &&
+  [[ $z = *$pattern1* && $z = *$pattern2* ]]'})
+# or a solution in combination with zsh/pcre
+  $ zmodload -i zsh/mapfile zsh/pcre
+  $ pattern1="foo"
+  $ pattern2="bar foo"
+  $ pcre_compile "(?s)(?=.*?$pattern1).*?$pattern2"
+  $ pcre_study
+  $ print -l ./**/*(DN.e{'pcre_match $mapfile[$REPLY]'})
+
+# equivalent for ``less /etc/passwd | grep -v root''
+  $ IFS=$'\n\n'
+  $ print -rl -- ${${=mapfile[/etc/passwd]}:#*root*}
+# or - for case insensitive
+  $ setopt extendedglob
+  $ print -rl -- ${${=mapfile[/etc/passwd]}:#*(#i)root*}
+
+# If a XML-file contains stuff like ``<TAGA/>'' and ``<TAGB/>'', number this empty tags
+# (ones ending in '/>') so if encountered in the same order, the preceeding tags would become
+# ``<TAGA/>1</TAGA>'' and ``<TAGB/>2</TAGB>''
+  $ cnt=0
+  $ apfile[data.xml.new]=${(S)mapfile[data.xml]//\
+  > (#im)<TAGA>*<\/TAGA>/<TAGA>$((++cnt))<\/TAGA>}
+
+# removing all files in users Maildir/new that contain ``filename="gone.src''
+  $ zmodload zsh/{files,mapfile}
+  $ rm -f /u1/??/*/Maildir/new/100*(.e{'[[ $mapfile[$REPLY] == *filename=\"gone.scr\"* ]]'})
+
+# Grep out the Title from a postscript file and append that value to the end of
+# the filename
+  $ autoload -U zmv
+  $ zmv '(*).ps' '$1-${${${mapfile[$f]##*%%Title: }%% *}//[^a-zA-Z0-9_]/}.ps'
+.fi
+.TP
+\fBzsh/mathfunc\fP
+Standard scientific functions for use in mathematical evaluations\&.
+.nf
+$ echo $(( sin(1/4.0)**2 + cos(1/4.0)**2 - 1 ))
+  -1.1102230246251565e-16
+$ echo $(( pi = 4.0 * atan(1.0) ))
+  3.1415926535897931
+$ echo $(( f = sin(0.3) ))
+  0.29552020666133955
+$ print $(( rand48(seed) ))
+  0.01043488334700271
+.fi
+.TP
+\fBzsh/parameter\fP
+Access to internal hash tables via special associative arrays\&.
+.TP
+\fBzsh/pcre\fP
+Interface to the PCRE library\&.
+.sp
+Important: requires zsh compiled with pcre-support. Check
+whether your version supports pcre via `ldd =zsh | grep
+pcre`.
+.p
+PCRE provides support for Perl's regular expressions (regex). You
+have to compile a regex and can match it afterwards using
+error codes:
+.\" FIXME / TODO!
+.nf
+ $ zmodload zsh/pcre
+ $ pcre_compile '\\s\\d.\\d{3}\.\\d{3} Euro'  &&\\
+   pcre_match ' 1.000.000 Euro' &&\\
+   echo "matches" || echo "does not match"
+.fi
+Note: if you are using complex regular expressions you can
+improve speed via pcre_study.
+.TP
+\fBzsh/sched\fP
+A builtin that provides a timed execution facility within the shell\&.
+.TP
+\fBzsh/net/socket\fP
+Manipulation of Unix domain sockets
+.p
+ $ zmodload zsh/net/socket
+ $ zsocket -l -d 3
+ # ``-l'': open a socket listening on filename
+ # ``-d'': argument will be taken as the target file descriptor for the
+ #         connection
+ # ``3'' : file descriptor. See ``A User's Guide to the Z-Shell''
+ #         (3.7.2: File descriptors)
+ $ zsocket -a -d 4 3
+ # ``-a'': accept an incoming connection to the socket
+ $ zsocket -a -d 5 3 # accept a connection
+ $ echo foobar >&4
+ $ echo barfoo >&5
+ $ 4>&- 5>&- 3>&-
+.fi
+.sp
+In one shell:
+.nf
+ $ zmodload zsh/net/socket
+ $ zsocket -l -d 3 /tmp/mysocket # open listening socket
+ $ zsocket -a -d 4 3             # accept a connection
+ $ zsocket -a -d 5 3             # accept a connection
+ $ echo Hi there >&4
+ $ echo Hi there also >&5
+ $ exec 4>&- 5>&- 3>&-
+.fi
+.sp
+In another shell:
+.nf
+ $ zmodload zsh/net/socket
+ $ zsocket -d 3 /tmp/mysocket # connect to /tmp/socket
+ $ zsocket -d 4 /tmp/mysocket # connect to /tmp/socket
+ $ read msg <&3; echo got: "$msg on fd 3"
+ $ read msg <&4; echo got: "$msg on fd 4"
+ $ exec 3>&- 4>&-
+.fi
+.TP
+\fBzsh/stat\fP
+A builtin command interface to the \fBstat\fP system call\&.
+.sp
+Get size of a file in bytes:
+.nf
+ $ zmodload -i zsh/stat
+ $ stat -L +size file
+.fi
+.sp
+Equal to GNU's:
+.nf
+ $ stat -c %s file
+.fi
+.sp
+Comparing file dates:
+.nf
+  $ file1=foo
+  $ file2=bar
+  $ touch bar & sleep 5 & touch foo
+  $ echo $file1 is $(( $(stat +mtime $file2) - $(stat +mtime $file1) )) seconds older than $file2.
+  bar is 5 seconds older than foo
+.fi
+.sp
+List the files of a disk smaller than some other file:
+.nf
+  $ stat -A max +size some-other-file
+  $ print -rl ./**/*(D.L-$max)
+.fi
+.sp
+List the top 100 biggest files in a disk:
+.nf
+  $ ls -fld ./**/*(d`stat +device .`OL[1,100])
+.fi
+.sp
+Get only the user name and the file names from (like ls -l * | awk '{print $3" " $8}'):
+.nf
+  $ for file; do
+  >   stat -sA user +uid -- "$file" &&
+  >     print -r -- "$user" "$file"
+  > done
+.fi
+.sp
+Get the difference between actual bytes of file and allocated bytes of file:
+.nf
+  $ print $(($(stat +block -- file) * 512 - $(stat +size -- file)))
+.fi
+.sp
+Find largest file:
+.nf
+  $ stat +size ./*(DOL[1])
+  # ``D''  : to include dot files (d lowercase is for device)
+  # ``O''  : reverse Ordered (o lowercase for non-reverse order)
+  # ``L''  : by file Length (l is for number of links)
+  # ``[1]'': return only first one
+.fi
+.sp
+Delete files in a directory that hasn't been accessed in the last ten days
+and send ONE mail to the owner of the files informing him/her of the files' deletion:
+.nf
+  $ zmodload zsh/stat zsh/files
+  $ typeset -A f; f=()
+  $ rm -f /path/**/*(.a+10e{'stat -sA u +uidr $REPLY; f[$u]="$f[$u]$REPLY"'})
+  $ for user (${(k)f}) {print -rn $f[$user]|mailx -s "..." $user}
+.fi
+.sp
+Get a "ls -l" on all the files in the tree that are younger than a specified age:
+.nf
+  $ for d (. ./**/*(N/m-2))
+  >   print -r -- $'\n'$d: && cd $d && {
+  >      for f (*(Nm-2om))
+  >   stat -F '%b %d %H:%M' -LsAs -- $f &&
+  >   print -r -- $s[3] ${(l:4:)s[4]} ${(l:8:)s[5]} \\
+  >   ${(l:8:)s[6]} ${(l:8:)s[8]} $s[10] $f ${s[14]:+-> $s[14]}
+  >   cd ~-
+  > }
+.fi
+.sp
+Get file creation date:
+.nf
+  $ stat -F '%d %m %Y' +mtime ~/.zshrc
+  30 06 2004
+  $ stat -F '%D' +mtime ~/.zshrc
+  06/30/04
+.fi
+.TP
+\fBzsh/system\fP
+A builtin interface to various low\-level system features\&.
+.TP
+\fBzsh/net/tcp\fP
+Manipulation of TCP sockets
+.TP
+\fBzsh/termcap\fP
+Interface to the termcap database\&.
+.nf
+ $ zmodload -ab zsh/termcap echotc
+ $ GREEN=`echotc AF 2`
+ $ YELLOW=`echotc AF 3`
+ $ RED=`echotc AF 1`
+ $ BRIGHTRED=`echotc md ; echotc AF 1`
+ $ print -l ${GREEN}green ${YELLOW}yellow ${RED}red ${BRIGHTRED}brightred
+.fi
+.TP
+\fBzsh/terminfo\fP
+Interface to the terminfo database\&.
+.TP
+\fBzsh/zftp\fP
+A builtin FTP client\&.
+.sp
+Write ftp scripts as though shell:
+.nf
+ $ init
+ $ autoload -U zfinit && zfinit
+ $ zfparams www.example.invalid myuserid mypassword
+ $ zfopen
+ $ zfcd tips
+ $ zfls -l zsh-lovers.html
+ $ zfput zsh-lovers.html
+ $ zfls -l zsh-lovers.html
+.fi
+.sp
+Automatically transfer files using FTP with error checking:
+.nf
+  $ zftp open host.name.invalid user passwd || exit
+  $ zftp get /remote/file > /local/file; r=$?
+  $ zftp close && exit r
+.fi
+.sp
+Compress and ftp on the fly:
+.nf
+  $ zftp open host.name.invalid user password
+  $ zftp get $file | bzip2 > ${file}.bz2
+  $ zftp close
+.fi
+.sp
+Long list of files on a ftp:
+.nf
+  $ autoload -U zfinit
+  $ zfinit
+  $ zfopen some-host
+  $ zfcd /some/remote/Dir
+  $ cd /some/local/Dir
+.fi
+.sp
+If the list.txt is located on the remote host, change to
+  $ zfget ${(f)"$(zftp get /path/to/remote/list.txt)"}
+  $ zfget ${(f)"$(cat list.txt)"}
+  $ zfclose
+.fi
+.TP
+\fBzsh/zle\fP
+The Zsh Line Editor, including the \fBbindkey\fP and \fBvared\fP builtins\&.
+.TP
+\fBzsh/zleparameter\fP
+Access to internals of the Zsh Line Editor via parameters\&.
+.TP
+\fBzsh/zprof\fP
+A module allowing profiling for shell functions\&.
+.TP
+\fBzsh/zpty\fP
+A builtin for starting a command in a pseudo\-terminal\&.
+.nf
+ $ zmodload -i zsh/zpty
+ $ zpty PW passwd $1
+ # ``-r'': read the output of the command name.
+ # ``z'' : Parameter
+ $ zpty -r PW z '*password:'
+ # send the to command name the given strings as input
+ $ zpty -w PW $2
+ $ zpty -r PW z '*password:'
+ $ zpty -w PW $2
+ # | The second form, with the -d option, is used to delete commands
+ # | previously started, by supplying a list of their names. If no names
+ # | are given, all commands are deleted. Deleting a command causes the HUP
+ # | signal to be sent to the corresponding process.
+ $ zpty -d PW
+.fi
+.TP
+\fBzsh/zselect\fP
+Block and return when file descriptors are ready\&.
+.nf
+# It's simular to
+ ,----
+ | $ sg=$(stty -g)
+ | $ stty -icanon min 0 time 50
+ | $ read yesno
+ | $ stty "$sg"
+ | $ case "$yesno" in
+ | >  yes) command1;;
+ | >  *) command2;;
+ | > esac
+ `----
+$ if zselect -t 500 -r 0 && read yesno && [ yes = "$yesno" ]; then
+>    command1
+> else
+>    command1
+> fi
+.fi
+.TP
+\fBzsh/zutil\fP
+Some utility builtins, e\&.g\&. the one for supporting configuration via
+styles\&.
+.RE
+.RE
+.\"#######################################################
+
+.\"#######################################################
+.SS "SUBSTITUTION"
+
+.sp
+Path substitution:
+.nf
+ $ ls -l =zsh  # is like: 'ls -l /path/to/zsh' or 'ls -l `which zsh`'
+.fi
+
+.sp
+Process substitution:
+.nf
+ $ (vi =(cmd)) # edit output of 'cmd' (called process substitution).
+.fi
+
+.sp
+Substitution of variables:
+.nf
+ $ var1=42
+ $ tmp=var1
+ $ echo $((tmp))
+ 42
+ $
+
+ $ var=foo
+ $ tmp=var
+ $ echo ${(P)tmp}
+ foo
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS "ALIASES"
+
+.P
+Suffix aliases are supported in zsh since version 4.2.0.
+Some examples:
+.nf
+ alias -s tex=vim
+ alias -s html=w3m
+ alias -s org=w3m
+.fi
+
+.RS
+Now pressing return-key after entering 'foobar.vim' starts vim
+with foobar.vim. Calling a html-file runs browser w3m. 'www.zsh.org'
+and pressing enter starts w3m with argument www.zsh.org.
+.RE
+.P
+Global aliases can be used anywhere in the command line.
+Example:
+.nf
+ $ alias -g C='| wc -l'
+ $ grep alias ~/.zsh/* C
+ 443
+.fi
+.P
+Some more or less useful global aliases (choose whether they
+are useful or not for you on your own):
+.nf
+ alias -g ...='../..'
+ alias -g ....='../../..'
+ alias -g .....='../../../..'
+ alias -g CA="2>&1 | cat -A"
+ alias -g C='| wc -l'
+ alias -g D="DISPLAY=:0.0"
+ alias -g DN=/dev/null
+ alias -g ED="export DISPLAY=:0.0"
+ alias -g EG='|& egrep'
+ alias -g EH='|& head'
+ alias -g EL='|& less'
+ alias -g ELS='|& less -S'
+ alias -g ETL='|& tail -20'
+ alias -g ET='|& tail'
+ alias -g F=' | fmt -'
+ alias -g G='| egrep'
+ alias -g H='| head'
+ alias -g HL='|& head -20'
+ alias -g §k="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
+ alias -g LL="2>&1 | less"
+ alias -g L="| less"
+ alias -g LS='| less -S'
+ alias -g MM='| most'
+ alias -g M='| more'
+ alias -g NE="2> /dev/null"
+ alias -g NS='| sort -n'
+ alias -g NUL="> /dev/null 2>&1"
+ alias -g PIPE='|'
+ alias -g R=' > /c/aaa/tee.txt '
+ alias -g RNS='| sort -nr'
+ alias -g S='| sort'
+ alias -g TL='| tail -20'
+ alias -g T='| tail'
+ alias -g US='| sort -u'
+ alias -g VM=/var/log/messages
+ alias -g X0G='| xargs -0 egrep'
+ alias -g X0='| xargs -0'
+ alias -g XG='| xargs egrep'
+ alias -g X='| xargs'
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.sp
+Array parameters [array_name=(value1 value2 ... valueN)].
+.nf
+ $ stupid=emacs
+ $ echo $stupid[3]
+ a
+ $
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.SS "SHELL-SCRIPTING"
+This section provides some examples for often needed
+shellscript-stuff. Notice that you should not use
+'#!/bin/sh' but '#!/bin/zsh' as the shebang-line because
+otherwise most examples won't work.
+.sp
+Parse options in shellscripts. Example taken from ZWS by
+Adam Chodorowski (http://www.chodorowski.com/projects/zws/):
+.nf
+parse_options()
+{
+    o_port=(-p 9999)
+    o_root=(-r WWW)
+    o_log=(-d ZWS.log)
+
+    zparseopts -K -- p:=o_port r:=o_root h=o_help
+    if [[ $? != 0 || "$o_help" != "" ]]; then
+        echo Usage: $(basename "$0") "[-p PORT] [-r DIRECTORY]"
+        exit 1
+    fi
+
+    port=$o_port[2]
+    root=$o_root[2]
+    log=$o_log[2]
+
+    if [[ $root[1] != '/' ]]; then root="$PWD/$root"; fi
+}
+# now use the function:
+parse_options $*
+.fi
+
+.\"#######################################################
+.SS "MISC\-EXAMPLES"
+Hint:  A list of valid glob Qualifiers can be found in zshexpn(1). See
+``man 1 zshexpn | less -p'' Qualifiers for details.
+.sp
+Load all available modules at startup
+.nf
+ $ typeset -U m
+ $ m=()
+ $ for md ($module_path) m=($m $md/**/*(*e:'REPLY=${REPLY#$md/}'::r))
+ $ zmodload -i $m
+.fi
+.sp
+Rename all MP3-Files from ``name with spaces.mp3'' to ``Name With
+Spaces.mp3'':
+.nf
+ $ for i in *.mp3; do
+ >     mv $i ${${(C)i}:s/Mp3/mp3/}
+ > done
+.fi
+.sp
+Download with LaTeX2HTML created Files (for example the ZSH\-Guide):
+.nf
+ $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+ >     lynx -source $f >${f:t}
+ > done
+.fi
+.sp
+Replace the unreadable Escape-Sequences:
+.nf
+ $ autoload colors ; colors
+ $ print "$bg[cyan]$fg[blue]You are an zsh user" >> /dev/pts/3
+.fi
+.sp
+Filename\-Expansion.
+.B Note:
+(N) activates setopt nullglob only for this loop.
+.nf
+ $ for i in *.o(N); do
+ >     rm $i
+ > done
+.fi
+.sp
+Re-linking broken links:
+.nf
+ $ for f in ./**/*(-@); do
+ >     stat +link -A l $f
+ >     (cd $f:h & [[ -e $l.gz ]]) & ln -sf $l.gz $f
+ > done
+.fi
+.sp
+Show me all the .c files for which there doesn't exist a .o file:
+.nf
+  $ c=(*.c) o=(*.o(N)) eval 'ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}'
+.fi
+.sp
+Load all available modules at startup:
+.nf
+  $ typeset -U m
+  $ m=()
+  $ for md ($module_path) m=($m $md/**/*(*e:'REPLY=${REPLY#$md/}'::r))
+  $ zmodload -i $m
+.fi
+.sp
+Rename all files within a directory such that their names get a numeral prefix in the default sort order:
+.nf
+  $ i=1; for j in *; do mv $j $i.$j; ((i++)); done
+  $ i=1; for f in *; do mv $f $(echo $i| awk '{ printf("%03d", $0)}').$f; ((i++)); done
+  $ integer i=0; for f in *; do mv $f $[i+=1].$f; done
+.fi
+.sp
+Find (and print) all symbolic links without a target within the current dirtree:
+.nf
+  $ $ file **/*(D@) | fgrep broken
+  $ for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i
+  $ echo **/*(@-^./=%p)
+  $ print -l **/*(-@)
+.fi
+.sp
+List all plain files that do not have extensions listed in `fignore':
+.nf
+  $ ls **/*~*(${~${(j/|/)fignore}})(.)
+  # see above, but now omit executables
+  $ ls **/*~*(${~${(j/|/)fignore}})(.^*)
+.fi
+.sp
+Print out files that dont have extensions (require setopt extendedglob dotglob):
+.nf
+  $ printf '%s\n' ^?*.*
+.fi
+.sp
+List files in reverse order sorted by name:
+.nf
+  $ print -rl -- *(On)
+  or
+  $ print -rl -- *(^on)
+.fi
+.sp
+Synonymic to ``ps ax | awk '{print $1}''':
+.nf
+  $ print -l /proc/*/cwd(:h:t:s/self//)
+.fi
+.sp
+Get the PID of a process (without ``ps'', ``sed'', ``pgrep'', .. (under Linux):
+.nf
+  $ pid2 () {
+  >   local i
+  >   for i in /proc/<->/stat
+  > do
+  >   [[ "$(< $i)" = *\\((${(j:|:)~@})\\)* ]] && echo $i:h:t
+  > done
+  > }
+.fi
+.sp
+for X in 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y'; do ...:
+.nf
+  $ for (( i = 36#n; i <= 36#y; i++ )); do
+  >   print ${$(([##36]i)):l}
+  > done
+# or in combination with ``dc''
+  $ print {$((##n))..$((##y))}P\ 10P | dc
+# or with ``eval''
+  $ eval print '${$(([##36]'{$((36#n))..$((36#y))}')):l}'
+.fi
+.sp
+Foreach in one line of shell:
+.nf
+  $ for f (*) print -r -- $f
+.fi
+.sp
+Copy a directory recursively without data/files:
+.nf
+  $ dirs=(**/*(/))
+  $ cd -- $dest_root
+  $ mkdir -p -- $dirs
+# or without zsh
+  $ find . -type d -exec env d="$dest_root" sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;
+.fi
+.sp
+If `foo=23'', then print with 10 digit with leading '0':
+.nf
+  $ foo=23
+  $ print ${(r:10::0:)foo}
+.fi
+.sp
+Find the name of all the files in their home directory that have more than 20 characters in their file names:
+.nf
+  print -rl $HOME/${(l:20::?:)~:-}*
+.fi
+.sp
+Save arrays:
+.nf
+  $ print -r -- ${(qq)m} > $nameoffile      # save it
+  $ eval "m=($(cat -- $nameoffile)"            # or use
+  $ m=("${(@Q)${(z)"$(cat -- $nameoffile)"}}") # to restore it
+.fi
+.sp
+Get a "ls -l" on all the files in the tree that are younger than a specified age (e.g
+"ls -l" all the files in the tree that where modified in the last 2 days):
+.nf
+  $ ls -tld **/*(m-2)
+.fi
+.sp
+This will give you a listing 1 file perl line (not like ls -R).
+Think of an easy way to have a "ls -R" style output with
+only files newer than 2 day old.
+.nf
+  $ for d (. ./**/*(/)) {
+  >   print -r -- $'\n'${d}:
+  >   cd $d && {
+  >       l=(*(Nm-2))
+  >       (($#l)) && ls -ltd -- $l
+  >       cd ~-
+  >   }
+  > }
+.fi
+.sp
+If you also want directories to be included even if their mtime
+is more than 2 days old:
+.nf
+  $ for d (. ./**/*(/)) {
+  >   print -r -- $'\n'${d}:
+  >   cd $d && {
+  >      l=(*(N/,m-2))
+  >      (($#l)) && ls -ltd -- $l
+  >      cd ~-
+  >   }
+  > }
+.fi
+.sp
+And if you want only the directories with mtime < 2 days to be listed:
+.nf
+  $ for d (. ./**/*(N/m-2)) {
+  >   print -r -- $'\n'${d}:
+  >   cd $d && {
+  >      l=(*(Nm-2))
+  >      (($#l)) && ls -ltd -- $l
+  >      cd ~-
+  >   }
+  > }
+.fi
+.sp
+Print 42 ``-'':
+.nf
+  $ echo ${(l:42::-:)}
+# or use ``$COLUMS''
+  $ echo ${(l:$COLUMNS::-:)}
+# and now with colors (require autoload colors ;colors)
+  $ echo "$bg[red]$fg[black]${(l:42::-:)}"
+.fi
+.sp
+Redirect STDERR to a command like xless without redirecting  STDOUT as well:
+.nf
+  $ foo 2>>(xless)
+# but this executes the command asynchronously. To do it synchronously:
+  $ { { foo 1>&3 } 2>&1 | xless } 3>&1
+.fi
+.sp
+Rename all MP3-Files from name with spaces.mp3 to Name With Spaces.mp3:
+.nf
+  $ for i in *.mp3; do
+  >     mv $i ${${(C)i}:s/Mp3/mp3/}
+  > done
+.fi
+.sp
+Match file names containing only digits and ending with .xml (requiresetopt kshglob):
+.nf
+  $ ls -l [0-9]##.xml
+  $ ls -l <0->.xml
+.fi
+.sp
+Remove all "non txt" files:
+.nf
+  $ rm ./^*.txt
+.fi
+.sp
+Move 200 files from a directory into another:
+.nf
+  $ mv -- *([1,200]) /another/Dir
+.fi
+.sp
+Convert images (foo.gif => foo.png):
+.nf
+  $ for i in **/*.gif; convert $i $i:r.png
+.fi
+.sp
+Convert a collection of mp3 files to wave or cdr (e.g. file.wav -> file.mp3):
+.nf
+  $ for i (./*.mp3){mpg321 --w - $i > ${i:r}.wav}
+.fi
+.sp
+Download with LaTeX2HTML  created Files (for example the ZSH-Guide):
+.nf
+  $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+  >     lynx -source $f >${f:t}
+  > done
+.fi
+.sp
+Move all files in dir1 and dir2 that have line counts greater than 10 to another directory say "/more10":
+.nf
+  $ mv dir[12]/**/*.cr(-.e{'((`wc -l < $REPLY` > 10))'}) /more10
+.fi
+.sp
+Make with dpkg a master-list of everyfile that it has installed:
+.nf
+  $ diff <(find / | sort) <(cat /var/lib/dpkg/info/*.list | sort)
+.fi
+.sp
+Replace the unreadable Escape-Sequences:
+.nf
+  $ autoload colors ; colors
+  $ print "$bg[cyan]$fg[blue]You are an zsh user" >> /dev/pts/3
+.fi
+.sp
+Get ASCII value of a character:
+.nf
+  $ char=N ; print $((#char))
+.fi
+.sp
+Filename suffix:
+Note: The (N) says to use the nullglob option for this particular glob pattern.
+.nf
+  $ for i in *.o(N); do
+  >     rm $i
+  > done
+.fi
+.sp
+Rename files; i. e. FOO to foo and bar to BAR:
+.nf
+  $ for i in *(.); mv $i ${i:l} # `FOO' to `foo'
+  $ for i in *(.); mv $i ${i:u} # `bar to `BAR'
+.fi
+.sp
+Show all suid-files in $PATH:
+.nf
+  $ ls -latg ${(s.:.)PATH} | grep '^...s'
+# or more complex ;)
+  $ print -l ${^path}/*(Ns,S)
+# or show only executables with a user given pattern
+  $ print -l ${^path}/*vim*(*N)
+.fi
+.sp
+gzip files when containing a certain string:
+.nf
+  $ gzip ${(ps:\0:)"$(grep -lZ foobar ./*.txt(.))"}
+.fi
+.sp
+A small  one-liner, that reads from stdin and prints to stdout the first unique line
+i. e. does not print lines that have been printed before (this is similar to the unique
+command, but unique can only handle adjacent lines):
+.nf
+  $ IFS=$'\n\n'; print -rl -- ${(Oau)${(Oa)$(cat file;echo .)[1,-2]}}
+.fi
+.sp
+Lists every executable in PATH:
+.nf
+  $ print -l ${^path}/*(-*N)
+.fi
+.sp
+Match all .c files in all subdirectories, _except_ any SCCS subdirectories?
+.nf
+  $ ls **/*.c~(*/)#SCCS/*
+.fi
+.sp
+List all `README' - files case-insensitive with max. one typo:
+.nf
+  $ ls **/*(#ia2)readme
+.fi
+.sp
+Print version information of zsh:
+.nf
+ $ print $ZSH_VERSION
+.fi
+
+.sp
+Get hostspecific information:
+.nf
+ $ echo $MACHTYPE $VENDOR $OSTYPE
+.fi
+
+.sp
+Fast change of directories:
+.nf
+ alias ...='cd ../..'
+ alias ....='cd ../../..'
+ alias .....='cd ../../../..'
+ alias ......='cd ../../../../..'
+ alias .......='cd ../../../../../..'
+.fi
+
+.sp
+Mailpath: simple multiple mailpath:
+.nf
+  mailpath=($HOME/Mail/mbox'?new mail in mbox'
+            $HOME/Mail/tux.u-strasbg'?new mail in tux'
+            $HOME/Mail/lilo'?new mail in lilo'
+            $HOME/Mail/ldap-fr'?new mail in ldap-fr')
+.fi
+
+.sp
+Mailpath: dynamic mailpath:
+.nf
+  typeset -a mailpath
+  for i in ~/Mail/Lists/*(.); do
+     mailpath[$#mailpath+1]="${i}?You have new mail in ${i:t}."
+  done
+.fi
+
+.sp
+Avoid globbing on special commands:
+.nf
+for com in alias expr find mattrib mcopy mdir mdel which;
+alias $com="noglob $com"
+.fi
+
+.sp
+For migrating your bashprompt to zsh use the script bash2zshprompt
+located in the zsh source distribution under 'Misc'.
+
+.sp
+For migration from (t)csh to zsh use the c2z tool that
+converts csh aliases and environment and shell variables to
+zsh. It does this by running csh, and having csh report on
+aliases and variables. The script then converts these to zsh
+startup files. It has some issues and usage information that
+are documented at the top of this script.
+
+.sp
+Here are functions to set the title and hardstatus of an
+\fBXTerm\fP or of \fBGNU Screen\fP to 'zsh' and the current
+directory, respectively, when the prompt is displayed, and
+to the command name and rest of the command line,
+respectively, when a command is executed:
+.nf
+  function title {
+      if [[ $TERM == "screen" ]]; then
+        # Use these two for GNU Screen:
+        print -nR $'\033k'$1$'\033'\\
+        print -nR $'\033]0;'$2$'\a'
+      elif [[ $TERM == "xterm" || $TERM == "rxvt" ]]; then
+        # Use this one instead for XTerms:
+        print -nR $'\033]0;'$*$'\a'
+      fi
+  }
+
+  function precmd {
+      title zsh "$PWD"
+  }
+
+  function preexec {
+      emulate -L zsh
+      local -a cmd; cmd=(${(z)1})
+      title $cmd[1]:t "$cmd[2,-1]"
+  }
+.fi
+Put the following line into your ~/.screenrc to see this fancy hardstatus:
+.nf
+  caption always "%3n %t%? (%u)%?%?: %h%?"
+.fi
+
+.sp
+Special variables which are assigned or you can assign:
+.nf
+ $ echo $LINENO $RANDOM $SECONDS $COLUMNS $HISTCHARS
+ $ echo $UID $EUID $GID $EGID $USERNAME
+ $ echo $fignore $mailpath $cdpath
+
+.sp
+Show me all the .c files for which there doesn't exist a .o file:
+.nf
+ $ c=(*.c) o=(*.o(N)) eval 'ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}'
+.fi
+
+.sp
+Find (and print) all symbolic links without a target within the current
+dirtree:
+.nf
+ $ file **/*(D@) | fgrep broken
+ $ for i in **/*(D@); [[ \-f $i || \-d $i ]] || echo $i
+ $ echo **/*(@\-^./=%p)
+ $ print \-l **/*(\-@)
+.fi
+
+.sp
+Rename files; i. e. FOO to foo and bar to BAR:
+.nf
+ $ for i in *(.); mv $i ${i:l} # `FOO' to `foo'
+ $ for i in *(.); mv $i ${i:u} # `bar to `BAR'
+.fi
+.sp
+Show all suid-files in $PATH:
+.nf
+ $ ls \-latg ${(s.:.)PATH} | grep '^...s'
+.fi
+.sp
+List all `README' - files case-insensitive with max. one typo:
+.nf
+ $ ls **/*(#ia2)readme
+.fi
+.sp
+.SS (RECURSIVE) GLOBBING\-EXAMPLES
+Search for `README' in all Subdirectories
+.nf
+ $ print \-l **/README
+.fi
+.sp
+Recursive ``chmod''
+.nf
+ $ chmod 700 **/(.) # Only files
+ $ chmod 700 **/(/) # Only directories
+.fi
+.sp
+List files beginning at `foo23' upwards (foo23, foo24, foo25, ..)
+.nf
+ $ ls -l foo<23\->
+.fi
+.sp
+Remove spaces from filenames
+.nf
+ $ for a in ./**/*\\ *(Dod); do mv $a ${a:h}/${a:t:gs/ /_}; done
+.fi
+.sp
+Show only all *.c and *.h - Files
+.nf
+ $ ls -l *.(c|h)
+.fi
+.sp
+Show
+.B only
+all *.c - files and ignore `foo.c'
+.nf
+ $ ls *.c~foo.c
+.fi
+.sp
+Show only world-readable files
+.nf
+ $ ls -l *(R)
+.fi
+.sp
+find and delete the files which are older than a given parameter
+(seconds/minutes/hours)
+.nf
+ # deletes all regular file in /Dir that are older than 3 hours
+   $ rm -f /Dir/**/*(.mh+3)
+ # # deletes all symlinks in /Dir that are older than 3 minutes
+   $ rm -f /Dir/**/*(@mm+3)
+ # deletes all non dirs in /Dir that are older than 30 seconds
+   $ rm -f /Dir/**/*(ms+30^/)
+ # deletes all files more than 6 hours old
+   $ rm -f **/*(mh+6)
+ # deletes all folders, sub-folders and files older than one hour
+   $ rm ./**/*(.Dmh+1,.DL0)
+ # removes all files but the ten newer ones (delete all but last 10 files in a directory)
+  $ rm ./*(Om[1,-11])
+
+Note: If you get a arg list too long, you use the builtin rm. For example:
+  $ zmodload zsh/files ; rm -f **/*(mh+6)
+  or use the zargs function:
+  $ autoload zargs ; zargs **/*(mh+6) -- rm -f
+.fi
+.sp
+.B Explanation:
+.nf
+   ./: to avoid problem with files starting with "\-"
+  **/: recursively descend
+   *.: any file
+(...): qualifiers:
+          (<a>,<b>): files of <a> type or <b> type
+           <a>:
+               .: regular files
+               D: including dot files
+            mh+1: whose [m]odification time, is more (+) than [1]
+                  [h]our in the past.
+           <b>:
+              .: regular files
+              D: including dot files
+              L0: of 0 [L]ength.
+.fi
+.sp
+If you want to remove empty directories afterwards:
+.nf
+ # ``/'' matches only directories and ``od'' sorted in depth order (so
+ # that dir/subdir is removed before directory).
+ $ rmdir ./**/*(/od) 2> /dev/null
+.fi
+.sp
+.B Note:
+If you get a arg list too long, you use the builtin rm. For example:
+.nf
+ $ zmodload zsh/files ; rm -f **/*(mh+6)
+.fi
+or use the zargs function:
+.nf
+ $ autoload zargs ; zargs **/*(mh+6) -- rm -f
+.fi
+.sp
+Delete only the oldest file in a directory:
+.nf
+ $ rm ./*filename*(Om[1])
+.fi
+.sp
+Sort the output from `ls \-l' by file size:
+.nf
+ $ ls -fld *(OL)
+.fi
+.sp
+Find most recent file in a directory:
+.nf
+ $ setopt dotglob ; print directory/**/*(om[1])
+.fi
+.sp
+List the top 100 biggest files in a disk
+.nf
+ $ zmodload \-i zsh/stat ; ls \-fld ./**/*(d`stat +device .`OL[1,100])
+.fi
+.nf
+ $ ls *(L0f.go-w.)
+.fi
+.sp
+Find all files without a valid owner:
+.nf
+ $ chmod someuser /**/*(D^u:${(j.:u:.)${(f)"$(</etc/passwd)"}%%:*}:)
+.fi
+.sp
+Show only files are owned from group `users':
+.nf
+ $ ls -l *(G[users])
+.fi
+.sp
+.SS "ZMV\-EXAMPLES"
+.B Note:
+``autoload zmv'' needed! See ``man zshcontrib | less -p zmv'' for more
+details.
+.sp
+Serially all files (foo.foo > 1.foo, fnord.foo > 2.foo, ..):
+.nf
+ $ ls *
+ 1.c  asd.foo  bla.foo  fnord.foo  foo.fnord  foo.foo
+ $ c=1 zmv '*.foo' '$((c++)).foo'
+ $ ls *
+ 1.c  1.foo  2.foo  3.foo  4.foo  foo.fnord
+.fi
+.sp
+See above, but now only files with a filename >= 30 chars:
+.nf
+ $ c=1 zmv "${(l:30-4::?:)}*.foo" '$((c++)).foo'
+.fi
+.sp
+Replace spaces in filenames with a underline:
+.nf
+ $ zmv '* *' '$f:gs/ /_'
+.fi
+.sp
+Change the suffix from *.sh to *.pl:
+.nf
+ $ zmv -W '*.sh' '*.pl'
+.fi
+.sp
+lowercase/uppercase all files/directories:
+.nf
+ # lowercase
+   $ zmv '(*)' '${(L)1}'
+ # uppercase
+   zmv '(*)' '${(U)1}'
+.fi
+.sp
+Remove the suffix *.c from all C-Files:
+.nf
+ $ zmv '(*).c' '$1'
+.fi
+.sp
+Uppercase only the first letter of all *.mp3 - files:
+.nf
+ $ zmv '([a-z])(*).mp3' '${(C)1}$2.mp3'
+.fi
+.sp
+Copy the target `README' in same directory as each `Makefile':
+.nf
+ $ zmv -C '(**/)Makefile' '${1}README'
+.fi
+.sp
+Removing single quote from filenames (recursive):
+.nf
+$ zmv -Q "(**/)(*'*)(D)" "\\$1\\${2//'/}"
+.fi
+.sp
+Replace spaces with underscores in filenames (recursive):
+.nf
+$ zmv -Q "(**/)(* *)(D)" "\\$1\\${2// /_}"
+.fi
+.sp
+Rename pic1.jpg, pic2.jpg, .. to pic0001.jpg, pic0002.jpg, ..:
+.nf
+ # Not recursively
+   $ zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg'
+ # Recursively
+   $ zmv '(**/)pic(*).jpg' '$1/pic${(l:4::0:)2}.jpg'
+.fi
+.SS TIPS BY ZZAPPER (http://www.rayninfo.co.uk/tips/zshtips.html)
+
+.nf
+
+ !! #  last command
+ !$ #  last argument
+ !$:h (last argument, strip one level)
+ !?echo
+ vi !* (all parameters)
+ vi !$ (last parameters)
+ !42
+ history
+ ^fred^joe             # edit previous command replace fred by joe
+ !42:p
+ also use control-R
+
+ cmdy !?cmd1?:*<TAB>   #get parameters of a previous command
+
+
+ !:0 is the previous command name
+ !^, !:2, !:3, ?, !$ are the arguments
+ !* is all the arguments
+ !-2, !-3, ? are earlier commands
+ !-2^, !-2:2, !-2$, !-2*
+
+ cd !$:h  (remove file name)
+ cat !!:t (only file name)
+ print ${param:&}   (last substitute)
+
+
+ # globbing modifiers
+ # :r removes the suffix from the result,
+ # :t takes away the directory part
+ # . means must be regular files not directories etc
+ # *(om[1]) picks most recently modified file
+ # (.N) no warning message if any file absent
+ print *(om[1])   # print the most recent file
+ print *(.om[1])  # print the most recent file (not directory)
+ ls -l *(Om[1])   # oldest file
+ print *(om[1,5]) # print the 5 most recent files
+ vi *(.om[1]^D)   # vi newest file ^D means switch off GLOB_DOTS
+ ls -l *(m4)      # list files modified exactly 4 days ago
+ ls -ltd *(mw3)   # list files 3 weeks old
+ echo *(m-1)      # files modified today
+ echo *(m0)       # files modified today
+ rm *.{aux,dvi,log,toc}(.N) # rm latex temp files N means no error msg is any file absent
+
+ print *(n:t)     # order by name strip directory
+ print **/*(On:t) # recursive reverse order by name, strip directory
+ print *.c(:r)    # strip suffix
+ ls **/*(.)       # only files no directories
+ -ld *(/)      # list only directories
+ FOO = (#i)foo ]]  # case insensitive matching
+ #oddities
+ fred=$((6**2 + 6)) # can do maths
+ print ${#path}     # length of "path" array
+ print ${#path[1]}  # length of first element in path array
+ ls fred{joe,sid}.pl
+ ls fred{09..13}.pl
+
+ # arrays
+ array=(~/.zshenv ~/.zshrc ~/.zlogout)
+ % print ${array:t}
+ .zshenv .zshrc .zlogout
+
+ x="bu&^*ck"                  # variable with mucky characters
+ print ${x//[^[:alnum:]]/_}   # replace all non-alphanumerics with _
+
+
+ cp file ~1                   # where 1 is first entry in pushd stack
+ #zsh completion
+ startfilename<tab>           # will complete matching files anywhere in $PATH
+ startfilename<C-D>           # will list matching files anywhere in $PATH
+ #directory sizes
+ du -sk *(/)
+
+ ls * | grep foo | less
+ #to
+ ls * G foo L
+ #
+
+ #magic equals
+ vim =some_file                            # edits file anywhere in $PATH
+ ls =some_file                             # lists file anywhere in $PATH
+ #magic ** (recursion)
+ vim **/some_file                          # edits file under under current dir
+ # modifying more than one file (multios)
+ # writes ls results to file1 & file2 appends to filec
+ ls > file1 > file2 >> file3 | wc
+.fi
+.\"#######################################################
+
+.\"#######################################################
+.sp
+Find file containing string 'printf' in /usr/include.
+.nf
+ $ zargs /usr/include/**/*.h \-\- grep printf /dev/null
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ find /usr/include -name \\*.h \-exec grep printf /dev/null {} \;
+.fi
+
+.sp
+Create a directory structure based on an existing one.
+.nf
+ $ dirs=(**/*(/))
+ $ cd \-\- $dest_root
+ $ mkdir \-p \-\- $dirs
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ src=/usr/local
+ $ dst=/opt
+ $ cd "$src"
+ $ find . -type d | cpio -pdmv "$dst"
+.fi
+
+.sp
+Uncompress file and read it
+.nf
+less <(gzip -cd foo.gz)
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ gzip -cd foo.gz && less foo
+.fi
+
+.sp
+Print two files and sort them
+.nf
+ $ sort <f{oo,ubar}
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ cat foo fubar | sort
+.fi
+
+.sp
+Find files up from current directory and change permissions
+to '700'.
+.nf
+ $ chmod 700 **/*(.)
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ find . \-type f \-exec chmod 700 {} \\;
+.fi
+
+.sp
+List details of the executable 'foobar'.
+.nf
+ $ ls -l =foobar
+.fi
+
+.sp
+A solution without zsh could look like:
+.nf
+ $ ls -l `which foobar`
+.fi
+
+.\"#######################################################
+.sp
+Small examples
+.nf
+\'cd old new' replaces 'old' with 'new' in directory-names.
+\'which -a cmd' lists all occurences of 'cmd' in $PATH.
+.fi
+
+.\"#######################################################
+.SH "OPTIONS"
+.TP
+Navigation options
+.sp
+auto_cd (allow one to change to a directory by entering it as a command).
+auto_pushd (automatically append dirs to the push/pop list)
+pushd_ignore_dups (and don't duplicate them)
+
+.TP
+Misc
+.sp
+no_hup (don't send HUP signal to background jobs when exiting ZSH)
+print_exit_value (show a message with the exit code when a command returns with a non-zero exit code)
+
+.TP
+History options
+.sp
+hist_verify (let the user edit the command line after history expansion (e.g. !ls) instead of immediately running it)
+
+.sp
+Use the same history file for all sessions :
+.nf
+ setopt SHARE_HISTORY
+.fi
+
+.TP
+Privacy / Security
+.sp
+no_clobber (or set -C; prevent '>' redirection from truncating the given file if it already exists)
+
+.TP
+Spelling correction
+.sp
+correct (automatically correct the spelling of commands)
+correct_all (automatically correct the spelling of each word on the command line)
+dvorak (dvorak layout)
+.\"#######################################################
+
+.\"#######################################################
+.SH "LINKS"
+.TP
+The Z shell Homepage
+.B http://www.zsh.org/
+.TP
+The Z shell FAQ
+.B http://zsh.sunsite.dk/FAQ/
+.TP
+The Z shell wiki
+.B http://www.zshwiki.org/
+.TP
+Mailinglistarchive
+.B http://www.zsh.org/mla/
+.TP
+The Z shell reference-card (included in the zsh-lovers
+debian-package)
+.B http://zsh.sunsite.dk/Refcard/refcard.ps.gz
+.TP
+Adam Spier's UNIX shells page
+.B http://adamspiers.org/computing/shells/
+.TP
+The Single UNIX (R) Specification, Version 2 - Shell Command Language Index
+.B http://www.opengroup.org/onlinepubs/007908799/xcu/shellix.html
+.TP
+Zzappers Best of ZSH Tips
+.B http://www.rayninfo.co.uk/tips/zshtips.html
+.TP
+The ZSH area on dotfiles.com
+.B http://www.dotfiles.com/index.php3?app_id=4
+.TP
+Zsh Webpage by Christian Schneider
+.B http://strcat.neessen.net/zsh/
+.TP
+The zsh-lovers webpage
+.B http://grml.org/zsh/
+.TP
+IRC channel
+.B
+#zsh at irc.freenode.org
+.SH "AUTHORS"
+This manpage was written by Michael Prokop, Christian
+\'strcat' Schneider and Matthias Kopfermann.  But many ideas
+have been taken from zsh-geeks e.g. from the
+zsh-mailinglists (zsh-users and zsh-workers), google,
+newsgroups and the zsh-Wiki.  Thanks for your cool and
+incredible tips. We learned much from you!
+.sp
+In alphabetic order:
+.nf
+Andrew 'zefram' Main  - http://www.fysh.org/~zefram/
+Barton E. Schaefer    - http://www.well.com/user/barts/
+Matthias Kopfermann   - http://www.infodrom.north.de/~matthi/
+Oliver Kiddle         - http://people.freenet.de/opk/
+Paul Falstad          - http://www.falstad.com/
+Peter Stephenson      - http://python.swan.ac.uk/~pypeters/
+Richard Coleman
+Stephane Chazelas     - http://stephane.chazelas.free.fr/
+Sven Guckes           - http://www.guckes.net/
+Sven Wischnowsky      - http://w9y.de/zsh/zshrc
+.fi
+
+.SH "SEE ALSO"
+Manpages of zsh:
+.nf
+zsh          Zsh overview (this section)
+zshmisc      Anything not fitting into the other sections
+zshexpn      Zsh command and parameter expansion
+zshparam     Zsh parameters
+zshoptions   Zsh options
+zshbuiltins  Zsh built-in functions
+zshzle       Zsh command line editing
+zshcompwid   Zsh completion widgets
+zshcompsys   Zsh completion system
+zshcompctl   Zsh completion control
+zshmodules   Zsh loadable modules
+zshzftpsys   Zsh built-in FTP client
+zshall       Meta-man page containing all of the above
+
+Note: especially 'man zshcontrib' covers very useful topics!
+
+Book:
+.nf
+From Bash to Z Shell
+by Oliver  Kiddle, Jerry Peck and Peter Stephenson
+ISBN: 1590593766
+
+Also take a look at the section
+.B LINKS
+in this manpage.
+
+.SH "BUGS"
+Probably. This manpage might be never complete.
+So please report bugs, feedback and suggestions to
+<zsh-lovers@michael-prokop.at>. Thank you!
+
+.SH "COPYRIGHT"
+Copyright \(co 2005 Michael Prokop, Christian Schneider and Matthias Kopfermann.
+.\"###### END OF FILE ##########################################################
+.\" vim:tw=60
diff --git a/zsh-lovers.html b/zsh-lovers.html
new file mode 100644 (file)
index 0000000..dc62c64
--- /dev/null
@@ -0,0 +1,3070 @@
+<!-- Creator     : groff version 1.18.1 -->
+<!-- CreationDate: Sun Jun 19 12:12:12 2005 -->
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta name="Content-Style" content="text/css">
+<title>zsh&minus;lovers</title>
+</head>
+<body>
+
+<h1 align=center>zsh&minus;lovers</h1>
+<a href="#NAME">NAME</a><br>
+<a href="#OVERVIEW">OVERVIEW</a><br>
+<a href="#EXAMPLES">EXAMPLES</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#LINKS">LINKS</a><br>
+<a href="#AUTHORS">AUTHORS</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#COPYRIGHT">COPYRIGHT</a><br>
+
+<hr>
+<a name="NAME"></a>
+<h2>NAME</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>zsh&minus;lovers &minus; tips, tricks and examples for
+the Z shell</p>
+</td>
+</table>
+<a name="OVERVIEW"></a>
+<h2>OVERVIEW</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Whenever we look at the zsh manual we wonder why there
+are no examples for those simply things in (shell) life. The
+zsh contains many features, but there was no manpage with
+some examples (like procmailex(5)). That&rsquo;s why we
+wrote this manpage.</p>
+<!-- INDENTATION -->
+<p>Most of the tricks and oneliner come from the
+mailinglists zsh&minus;users, zsh&minus;workers, google,
+newsgroups and from ourself. See section <b>LINKS</b> for
+details.</p>
+<!-- INDENTATION -->
+<p><b>Note:</b> This manpage (zsh-lovers(1)) is <b>not</b>
+an offical part of the Z shell! It&rsquo;s just a just for
+fun &minus; manpage ;) For comments, bugreports and feedback
+take a quick look at the section <b>BUGS.</b></p>
+</td>
+</table>
+<a name="EXAMPLES"></a>
+<h2>EXAMPLES</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>REDIRECTION</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>See also <i>man 1 zshmisc</i>.</p>
+<!-- INDENTATION -->
+<p>null command shorthands:</p>
+<!-- INDENTATION -->
+<pre> &quot;&lt; file&quot; is like &quot;$READNULLCMD &lt;file&quot;
+ &quot;&gt; file&quot; is like &quot;cat &gt;file&quot;
+ &quot;&gt;&gt; file&quot; is like &quot;cat &gt;&gt;file&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Append &lsquo;exit 1&rsquo; at the end of all *.sh
+&minus; files:</p>
+<!-- INDENTATION -->
+<pre> $ echo &quot;exit 1&quot; &gt;&gt; *.sh
+</pre>
+<!-- INDENTATION -->
+<p>Append /etc/services at the end of file &lsquo;foo&rsquo;
+and &lsquo;bar&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ cat /etc/services &gt;&gt; foo &gt;&gt; bar
+</pre>
+<!-- INDENTATION -->
+<p>Pipe STDERR:</p>
+<!-- INDENTATION -->
+<pre> $ echo An error &gt;&amp;2 2&gt;&amp;1 | sed -e &rsquo;s/A/I/&rsquo;
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>MULTIPLE I/O REDIRECTION</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Requires <i>setopt multios</i>! Some examples:</p>
+<!-- INDENTATION -->
+<p>Print output of &rsquo;ls&rsquo; into files
+&rsquo;foo&rsquo; and &rsquo;bar&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ ls &gt;foo &gt;bar
+</pre>
+<!-- INDENTATION -->
+<p>Send standard output of one process to standard input of
+several processes in the pipeline:</p>
+<!-- INDENTATION -->
+<pre> $ process1 &gt; &gt;(process1) &gt; &gt;(process2)
+</pre>
+<!-- INDENTATION -->
+<p>Redirection to file as well as send on to pipe:</p>
+<!-- INDENTATION -->
+<pre> $ make install &gt; /tmp/logfile | grep -i error
+</pre>
+<!-- INDENTATION -->
+<p>Redirect stderr to a command like xless without
+redirecting stdout as well:</p>
+<!-- INDENTATION -->
+<pre> $ foo 2&gt;&gt;(xless)
+... but this executes the command asynchronously. To do it synchronously:
+ $ { { foo 1&gt;&amp;3 } 2&gt;&amp;1 | xless } 3&gt;&amp;1
+</pre>
+<!-- INDENTATION -->
+<p>Redirect stderr two times:</p>
+<!-- INDENTATION -->
+<pre> $ setopt multios ; program 2&gt; file2 &gt; file1 2&gt;&amp;1
+</pre>
+<!-- INDENTATION -->
+<p>More fun with stderr:</p>
+<!-- INDENTATION -->
+<pre> $ ./my-script.sh 2&gt; &gt;(grep -v geek &gt;error.log) | process-output &gt; output.log
+   echo &quot;Thats STDOUT&quot; &gt;&gt;(sed &rsquo;s/stdout/another example/&rsquo; &gt; foobar)
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>MODIFIERS USAGE</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Modifiers are a powerful mechanism that lets you modify
+the results returned by parameter, filename and history
+expansion. See zshexpn(1) for details.</p>
+<!-- INDENTATION -->
+<p>Remove a trailing pathname component, leaving the head.
+This works like &lsquo;dirname&rsquo;:</p>
+<!-- INDENTATION -->
+<pre>  $ echo =ls(:h)
+  /bin
+</pre>
+<!-- INDENTATION -->
+<p>Remove all leading pathname components, leaving the tail.
+This works like &lsquo;basename&rsquo;.</p>
+<!-- INDENTATION -->
+<pre>  $ echo =ls(:t)
+  ls
+</pre>
+<!-- INDENTATION -->
+<p>Remove a filename extension of the form
+&lsquo;.xxx&rsquo;, leaving the root name.</p>
+<!-- INDENTATION -->
+<pre>  $ echo $PWD
+  /usr/src/linux
+  $ echo $PWD:t
+  linux
+</pre>
+<!-- INDENTATION -->
+<p>Remove all but the extension.</p>
+<!-- INDENTATION -->
+<pre>  $ foo=23.42
+  $ echo $foo
+  23.42
+  $ echo $foo:e
+  42
+</pre>
+<!-- INDENTATION -->
+<p>Print the new command but do not execute it. Only works
+with history expansion.</p>
+<!-- INDENTATION -->
+<pre>  $ echo =ls(:h)
+  /bin
+  $ !echo:p
+  $ echo =ls(:h)
+</pre>
+<!-- INDENTATION -->
+<p>Quote the substituted words, escaping further
+substitutions.</p>
+<!-- INDENTATION -->
+<pre>  $ bar=&quot;23&rsquo;42&quot;
+  $ echo $bar
+  23&rsquo;42
+  $ echo $bar:q
+  23&acute;42
+</pre>
+<!-- INDENTATION -->
+<p>Convert the words to all lowercase.</p>
+<!-- INDENTATION -->
+<pre>  $ bar=FOOBAR
+  $ echo $bar
+  FOOBAR
+  $ echo $bar:l
+  foobar
+</pre>
+<!-- INDENTATION -->
+<p>Convert the words to all uppercase.</p>
+<!-- INDENTATION -->
+<pre>  $ bar=foobar
+  $ echo $bar
+  foobar
+  $ echo $bar:u
+  FOOBAR
+</pre>
+<!-- INDENTATION -->
+<p>Variables can be modified by modifiers, too. That makes
+modification of variables possible without using any
+external program.</p>
+<!-- INDENTATION -->
+<pre>  sentence=&quot;beginning and some words of a sentence with end.&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Now lets split this sentence-var by using the (s| |)
+modifier which modifies words by splitting at &quot;
+&quot;:</p>
+<!-- INDENTATION -->
+<pre>  words=${(s| |)sentence}
+  print $words[1] -&gt; &quot;beginning&quot;
+  print $words[-1] -&gt;&quot;end.&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Now if one wants to have the beginning of a sentence with
+a Capital, it&rsquo;s as easy as doing:</p>
+<!-- INDENTATION -->
+<pre>  print &quot;${(C)words[1]} $words[2,-1]&quot;
+</pre>
+<!-- INDENTATION -->
+<p>which capitalizes the first word of the list words and
+then adds with &quot; &quot; second to last word of words.
+It&rsquo;s possible to join these words as a colon separated
+scalar.</p>
+<!-- INDENTATION -->
+<pre>  colonlist=${(j|,|)words} # (j|,|) joins with &quot;,&quot;.
+</pre>
+<!-- INDENTATION -->
+<p>You can see that it&rsquo;s a scalar by testing with
+(t):</p>
+<!-- INDENTATION -->
+<pre>  print ${(t)colonlist} prints &quot;scalar&quot;.
+  print ${(t)words} prints &quot;array&quot;.
+</pre>
+<!-- INDENTATION -->
+<p>It&rsquo;s possible to sort arrays with o and O:</p>
+<!-- INDENTATION -->
+<pre>  print ${(o)words} # lists the words-array sorted (forwards)
+  print ${(O)words} # lists the words-array sorted (backwards)
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>COMPLETITION</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>See also <i>man 1 zshcompctl zshcompsys zshcompwid</i>.
+zshcompctl is the old style of zsh programmable completion,
+zshcompsys is the new completion system, zshcompwid are the
+zsh completion widgets.</p>
+<!-- INDENTATION -->
+<p>Some functions, like _apt and _dpkg, are very slow. You
+can use a cache in order to proxy the list of results (like
+the list of available debian packages) Use a cache:</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*&rsquo; use-cache on
+ zstyle &rsquo;:completion:*&rsquo; cache-path ~/.zsh/cache
+</pre>
+<!-- INDENTATION -->
+<p>Prevent CVS files/directories from being completed :</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*:(all-|)files&rsquo; ignored-patterns &rsquo;(|*/)CVS&rsquo;
+ zstyle &rsquo;:completion:*:cd:*&rsquo; ignored-patterns &rsquo;(*/)#CVS&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Fuzzy matching of completions for when you mistype
+them:</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*&rsquo; completer _complete _match _approximate
+ zstyle &rsquo;:completion:*:match:*&rsquo; original only
+ zstyle &rsquo;:completion:*:approximate:*&rsquo; max-errors 1 numeric
+</pre>
+<!-- INDENTATION -->
+<p>And if you want the number of errors allowed by
+_approximate to increase with the length of what you have
+typed so far:</p>
+<!-- INDENTATION -->
+<pre> zstyle -e &rsquo;:completion:*:approximate:*&rsquo; max-errors &rsquo;reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Ignore completion functions for commands you don&rsquo;t
+have:</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*:functions&rsquo; ignored-patterns &rsquo;_*&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>With helper functions like:</p>
+<!-- INDENTATION -->
+<pre> xdvi() { command xdvi ${*:-*.dvi(om[1])} }
+</pre>
+<!-- INDENTATION -->
+<p>you can avoid having to complete at all in many cases,
+but if you do, you might want to fall into menu selection
+immediately and to have the words sorted by time:</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*:*:xdvi:*&rsquo; menu yes select
+ zstyle &rsquo;:completion:*:*:xdvi:*&rsquo; file-sort time
+</pre>
+<!-- INDENTATION -->
+<p>Completing process IDs with menu selection:</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*:*:kill:*&rsquo; menu yes select
+ zstyle &rsquo;:completion:*:kill:*&rsquo;   force-list always
+</pre>
+<!-- INDENTATION -->
+<p>If you end up using a directory as argument, this will
+remove the trailing slash (usefull in ln)</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*&rsquo; squeeze-slashes true
+</pre>
+<!-- INDENTATION -->
+<p>cd will never select the parent directory (e.g.: cd
+../&lt;TAB&gt;):</p>
+<!-- INDENTATION -->
+<pre> zstyle &rsquo;:completion:*:cd:*&rsquo; ignore-parents parent pwd
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>ADVANCED GLOBBING</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>See <i>man zshexpn | less -p &rsquo;Glob
+Qualifiers&rsquo;</i></p>
+<!-- INDENTATION -->
+<p>List file &rsquo;foobar&rsquo; via recursiv search in
+directories:</p>
+<!-- INDENTATION -->
+<pre> $ ls **/foobar
+</pre>
+<!-- INDENTATION -->
+<p>List files file20, file30, file100, etc:</p>
+<!-- INDENTATION -->
+<pre> $ ls file&lt;20-&gt;
+</pre>
+<!-- INDENTATION -->
+<p>List files with suffix c and pro (e.g. foo.c,
+bar.pro):</p>
+<!-- INDENTATION -->
+<pre> $ ls *.(c|pro)
+</pre>
+<!-- INDENTATION -->
+<p>List files which are word-readable:</p>
+<!-- INDENTATION -->
+<pre> $ ls *(R)
+</pre>
+<!-- INDENTATION -->
+<p>List all .c-files except &rsquo;lex.c&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ ls *.c~lex.c
+</pre>
+<!-- INDENTATION -->
+<p>List all &lsquo;README&rsquo; - files case-insensitive
+with max. one typo (e.g. RADME, REEME, RAEDME):</p>
+<!-- INDENTATION -->
+<pre> $ ls (#a1)README
+</pre>
+<!-- INDENTATION -->
+<p>List files named README but accept one spelling error
+including case-insensitive (e.g. RADME, REEME, RAEDME):</p>
+<!-- INDENTATION -->
+<pre> $ ls (#ia1)README
+</pre>
+<!-- INDENTATION -->
+<p>List executable files, directories and symlinks:</p>
+<!-- INDENTATION -->
+<pre> $ ls *(*@)
+</pre>
+<!-- INDENTATION -->
+<p>List dangling symlinks:</p>
+<!-- INDENTATION -->
+<pre> $ ls **/*(-@)
+</pre>
+<!-- INDENTATION -->
+<p>List all zero-length-files which are not group- or
+world-writable:</p>
+<!-- INDENTATION -->
+<pre> $ ls *(L0f.go-w.)
+</pre>
+<!-- INDENTATION -->
+<p>List all .c-files for which there doesn&rsquo;t exist a
+.o file:</p>
+<!-- INDENTATION -->
+<pre> $ c=(*.c) o=(*.o(N)) eval &rsquo;ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Find (and print) all symbolic links without a target
+within the current dirtree:</p>
+<!-- INDENTATION -->
+<pre> $ file **/*(D@) | fgrep broken
+ $ for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i
+ $ echo **/*(@-^./=%p)
+ $ print -l **/*(-@)
+</pre>
+<!-- INDENTATION -->
+<p>Rename all MP3-files from name with spaces.mp3 to Name
+With Spaces.mp3:</p>
+<!-- INDENTATION -->
+<pre> $ for i in *.mp3; do
+          mv $i ${${(C)i}:s/Mp3/mp3/}
+   done
+</pre>
+<!-- INDENTATION -->
+<p>Rename all PDF-files from name.mp3 to Name.mp3 (lowercase
+to uppercase of first letter) without touching the rest of
+the filename:</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;([a-z])(*).pdf&rsquo; &rsquo;${(C)1}$2.pdf&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Substitutions in strings can be done by
+string-indexes:</p>
+<!-- INDENTATION -->
+<pre> $ a=&quot;doh.&quot;;a[1]=&rsquo;d&rsquo;;a[-1]=&rsquo;. (Bart Simpson)&rsquo;
+ $ echo $a
+ doh. (Bart Simpson)
+</pre>
+<!-- INDENTATION -->
+<p>Associative arrays:</p>
+<!-- INDENTATION -->
+<pre> $ typeset -A ass_array; ass_array=(one 1 two 2 three 3 four 4)
+ $ print ${(k)ass_array} # prints keys
+ one four two three
+ $ print ${(v)ass_array} # prints values
+ 1 4 2 3
+ $ print $ass_array[one]
+ 1
+</pre>
+<!-- INDENTATION -->
+<p>Extract parts of a string. Print first word of output of
+&rsquo;date&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ print ${$( date )[1]}
+</pre>
+<!-- INDENTATION -->
+<p>Extract parts of a string. Print ip-address of loopback
+device:</p>
+<!-- INDENTATION -->
+<pre> $ print ${${$( LC_ALL=C /sbin/ifconfig lo )[6]}#addr:}
+</pre>
+<!-- INDENTATION -->
+<p>Print specific line of a file. E.g. print line 5 of
+file:</p>
+<!-- INDENTATION -->
+<pre> $ print -l ${&quot;$( &lt; file )&quot;[(f)5]}
+</pre>
+<!-- INDENTATION -->
+<p>Print line containing string &rsquo;root&rsquo; of file
+/etc/passwd:</p>
+<!-- INDENTATION -->
+<pre> $ print ${&quot;$( &lt; /etc/passwd )&quot;[(fr)*root*]}
+</pre>
+<!-- INDENTATION -->
+<p>Print words two to four of output of
+&rsquo;date&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ print ${$( date )[2,4]}
+</pre>
+<!-- INDENTATION -->
+<p>Use of two-dimensional indizes. Print time via date but
+without seconds:</p>
+<!-- INDENTATION -->
+<pre> $ print ${$(date)[4][1,5]}
+</pre>
+<!-- INDENTATION -->
+<p>Calculate floating point numbers:</p>
+<!-- INDENTATION -->
+<pre> $ printf &quot;%.0f0 $[ 2.8*15 ]
+</pre>
+<!-- INDENTATION -->
+<p>Convert images from foo.gif to foo.png:</p>
+<!-- INDENTATION -->
+<pre> $ for i in **/*.gif; convert $i $i:r.png
+</pre>
+<!-- INDENTATION -->
+<p>Download files created with LaTeX2HTML (e.g. the
+ZSH-Guide):</p>
+<!-- INDENTATION -->
+<pre> $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+     lynx -source $f &gt;${f:t}
+   done
+</pre>
+<!-- INDENTATION -->
+<p>Make with dpkg a master-list of everyfile that it has
+installed:</p>
+<!-- INDENTATION -->
+<pre> $ diff &lt;(find / | sort) &lt;(cat /var/lib/dpkg/info/*.list | sort)
+</pre>
+<!-- INDENTATION -->
+<p>Replace this color escape-sequences:</p>
+<!-- INDENTATION -->
+<pre> $ autoload colors ; colors
+ $ print &quot;$bg[cyan]$fg[blue]Welcome to man zsh-lovers&quot; &gt;&gt; $TTY
+</pre>
+<!-- INDENTATION -->
+<p>Get ASCII value of a character:</p>
+<!-- INDENTATION -->
+<pre> $ char=N ; print $((#char))
+</pre>
+<!-- INDENTATION -->
+<p>Filename suffix. Note: (N) activates setopt nullglob only
+for this loop.</p>
+<!-- INDENTATION -->
+<pre> $ for i in *.o(N); do
+          rm $i
+   done
+</pre>
+<!-- INDENTATION -->
+<p>Rename files: &rsquo;FOO&rsquo; to &rsquo;foo&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ for i in *(.); mv $i ${i:l}
+</pre>
+<!-- INDENTATION -->
+<p>Rename files: &rsquo;bar&rsquo; to &rsquo;BAR&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ for i in *(.); mv $i ${i:u}
+</pre>
+<!-- INDENTATION -->
+<p>Show all suid-files in $PATH:</p>
+<!-- INDENTATION -->
+<pre> $ ls -latg ${(s.:.)PATH} | grep &rsquo;^...s&rsquo;
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>ZMV - multiple move with zsh</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Requires &rsquo;autoload zmv&rsquo;. Some examples:</p>
+<!-- INDENTATION -->
+<p>Move serially all files (foo.foo &gt; 1.foo, fnord.foo
+&gt; 2.foo, ..).</p>
+<!-- INDENTATION -->
+<pre> $ ls *
+ 1.c  asd.foo  bla.foo  fnord.foo  foo.fnord  foo.foo
+ $ c=1 zmv &rsquo;*.foo&rsquo; &rsquo;$((c++)).foo&rsquo;
+ $ ls *
+ 1.c  1.foo  2.foo  3.foo  4.foo  foo.fnord
+</pre>
+<!-- INDENTATION -->
+<p>See above, but now only files with a filename &gt;= 30
+chars.</p>
+<!-- INDENTATION -->
+<pre> $ c=1 zmv &quot;${(l:30-4::?:)}*.foo&quot; &rsquo;$((c++)).foo&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Replace spaces in filenames with a underline.</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;* *&rsquo; &rsquo;$f:gs/ /_&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Change the suffix from *.sh to *.pl.</p>
+<!-- INDENTATION -->
+<pre> $ zmv -W &rsquo;*.sh&rsquo; &rsquo;*.pl&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Lowercase/uppercase all files and directories.</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;(*)&rsquo; &rsquo;${(L)1}&rsquo; for lowercase
+ $ zmv &rsquo;(*)&rsquo; &rsquo;${(U)1}&rsquo; for uppercase
+</pre>
+<!-- INDENTATION -->
+<p>Remove the suffix *.c from all c-files.</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;(*).c&rsquo; &rsquo;$1&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Uppercase only the first letter of all *.mp3 - files.</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;([a-z])(*).mp3&rsquo; &rsquo;${(C)1}$2.mp3&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Copy the target &lsquo;README&rsquo; in same directory as
+each &lsquo;Makefile&rsquo;.</p>
+<!-- INDENTATION -->
+<pre> $ zmv -C &rsquo;(**/)Makefile&rsquo; &rsquo;${1}README&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Rename pic1.jpg, pic2.jpg,.. to pic0001.jpg,
+pic0002.jpg,...</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;pic(*).jpg&rsquo; &rsquo;pic${(l:4::0:)1}.jpg&rsquo;
+ $ zmv &rsquo;(**/)pic(*).jpg&rsquo; &rsquo;$1/pic${(l:4::0:)2}.jpg&rsquo; # recursive
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>MODULES</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>See also <i>man zshmodules</i>. Don&rsquo;t forget to run
+<i>zmodload &minus;i MODULENAME</i> before using a module.
+Example: <i>zmodload -i zsh/datetime</i>.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/cap</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Builtins for manipulating POSIX.1e (POSIX.6) capability
+(privilege) sets.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/clone</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin that can clone a running shell onto another
+terminal.</p>
+<!-- INDENTATION -->
+<p>Creates a forked instance of the current shell ($! is set
+to zero) and execute &lsquo;&lsquo;command&rsquo;&rsquo; on
+/dev/tty8 (for this example):</p>
+<!-- INDENTATION -->
+<pre> $ zmodload zsh/clone
+ $ clone /dev/tty8 &amp;&amp; (($! == 0)) &amp;&amp; exec command
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/compctl</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>The <b>compctl</b> builtin for controlling
+completion.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/complete</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>The basic completion code.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/complist</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Completion listing extensions.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/computil</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A module with utility builtins needed for the shell
+function based completion system.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/datetime</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Some date/time commands and parameters.</p>
+<!-- INDENTATION -->
+<p>Do not have GNU date? Let&rsquo;s replace it:</p>
+<!-- INDENTATION -->
+<pre> $ alias datereplacement=&rsquo;strftime &quot;%Y-%m-%d&quot; $EPOCHSECONDS&rsquo;
+ $ export DATE=&lsquo;datereplacement&lsquo;
+ $ echo $DATE
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/deltochar</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A ZLE function duplicating EMACS&rsquo;
+<b>zap&minus;to&minus;char</b>.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/example</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>An example of how to write a module.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/files</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Some basic file manipulation commands as builtins.</p>
+<!-- INDENTATION -->
+<pre># search a directory for files containing a certain string then copy those files to another directory.
+  $ IFS=$&rsquo; &rsquo;
+  $ cp $(grep -lZr foobar .) otherdirectory
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/mapfile</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Access to external files via a special associative
+array.</p>
+<!-- INDENTATION -->
+<pre># grepping for two patterns
+  $ pattern1=&quot;foo&quot;
+  $ pattern2=&quot;bar foo&quot;
+  $ print -l ./**/*(DN.e{&rsquo;z=$mapfile[$REPLY] &amp;&amp;
+  [[ $z = *$pattern1* &amp;&amp; $z = *$pattern2* ]]&rsquo;})
+# or a solution in combination with zsh/pcre
+  $ zmodload -i zsh/mapfile zsh/pcre
+  $ pattern1=&quot;foo&quot;
+  $ pattern2=&quot;bar foo&quot;
+  $ pcre_compile &quot;(?s)(?=.*?$pattern1).*?$pattern2&quot;
+  $ pcre_study
+  $ print -l ./**/*(DN.e{&rsquo;pcre_match $mapfile[$REPLY]&rsquo;})
+
+# equivalent for &lsquo;&lsquo;less /etc/passwd | grep -v root&rsquo;&rsquo;
+  $ IFS=$&rsquo;0
+  $ print -rl -- ${${=mapfile[/etc/passwd]}:#*root*}
+# or - for case insensitive
+  $ setopt extendedglob
+  $ print -rl -- ${${=mapfile[/etc/passwd]}:#*(#i)root*}
+
+# If a XML-file contains stuff like &lsquo;&lsquo;&lt;TAGA/&gt;&rsquo;&rsquo; and &lsquo;&lsquo;&lt;TAGB/&gt;&rsquo;&rsquo;, number this empty tags
+# (ones ending in &rsquo;/&gt;&rsquo;) so if encountered in the same order, the preceeding tags would become
+# &lsquo;&lsquo;&lt;TAGA/&gt;1&lt;/TAGA&gt;&rsquo;&rsquo; and &lsquo;&lsquo;&lt;TAGB/&gt;2&lt;/TAGB&gt;&rsquo;&rsquo;
+  $ cnt=0
+  $ apfile[data.xml.new]=${(S)mapfile[data.xml]//  &gt; (#im)&lt;TAGA&gt;*&lt;TAGA&gt;/&lt;TAGA&gt;$((++cnt))&lt;TAGA&gt;}
+
+# removing all files in users Maildir/new that contain &lsquo;&lsquo;filename=&quot;gone.src&rsquo;&rsquo;
+  $ zmodload zsh/{files,mapfile}
+  $ rm -f /u1/??/*/Maildir/new/100*(.e{&rsquo;[[ $mapfile[$REPLY] == *filename=
+
+# Grep out the Title from a postscript file and append that value to the end of
+# the filename
+  $ autoload -U zmv
+  $ zmv &rsquo;(*).ps&rsquo; &rsquo;$1-${${${mapfile[$f]##*%%Title: }%% *}//[^a-zA-Z0-9_]/}.ps&rsquo;
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/mathfunc</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Standard scientific functions for use in mathematical
+evaluations.</p>
+<!-- INDENTATION -->
+<pre>$ echo $(( sin(1/4.0)**2 + cos(1/4.0)**2 - 1 ))
+  -1.1102230246251565e-16
+$ echo $(( pi = 4.0 * atan(1.0) ))
+  3.1415926535897931
+$ echo $(( f = sin(0.3) ))
+  0.29552020666133955
+$ print $(( rand48(seed) ))
+  0.01043488334700271
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/parameter</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Access to internal hash tables via special associative
+arrays.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/pcre</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Interface to the PCRE library.</p>
+<!-- INDENTATION -->
+<p>Important: requires zsh compiled with pcre-support. Check
+whether your version supports pcre via &lsquo;ldd =zsh |
+grep pcre&lsquo;. PCRE provides support for Perl&rsquo;s
+regular expressions (regex). You have to compile a regex and
+can match it afterwards using error codes:</p>
+<!-- INDENTATION -->
+<pre> $ zmodload zsh/pcre
+ $ pcre_compile &rsquo;\s\d.\d{3}.\d{3} Euro&rsquo;  &amp;&amp;\
+   pcre_match &rsquo; 1.000.000 Euro&rsquo; &amp;&amp;\
+   echo &quot;matches&quot; || echo &quot;does not match&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Note: if you are using complex regular expressions you
+can improve speed via pcre_study.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/sched</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin that provides a timed execution facility within
+the shell.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/net/socket</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Manipulation of Unix domain sockets $ zmodload
+zsh/net/socket $ zsocket -l -d 3 #
+&lsquo;&lsquo;-l&rsquo;&rsquo;: open a socket listening on
+filename # &lsquo;&lsquo;-d&rsquo;&rsquo;: argument will be
+taken as the target file descriptor for the # connection #
+&lsquo;&lsquo;3&rsquo;&rsquo; : file descriptor. See
+&lsquo;&lsquo;A User&rsquo;s Guide to the
+Z-Shell&rsquo;&rsquo; # (3.7.2: File descriptors) $ zsocket
+-a -d 4 3 # &lsquo;&lsquo;-a&rsquo;&rsquo;: accept an
+incoming connection to the socket $ zsocket -a -d 5 3 #
+accept a connection $ echo foobar &gt;&amp;4 $ echo barfoo
+&gt;&amp;5 $ 4&gt;&amp;- 5&gt;&amp;- 3&gt;&amp;-</p>
+<!-- INDENTATION -->
+<p>In one shell:</p>
+<!-- INDENTATION -->
+<pre> $ zmodload zsh/net/socket
+ $ zsocket -l -d 3 /tmp/mysocket # open listening socket
+ $ zsocket -a -d 4 3             # accept a connection
+ $ zsocket -a -d 5 3             # accept a connection
+ $ echo Hi there &gt;&amp;4
+ $ echo Hi there also &gt;&amp;5
+ $ exec 4&gt;&amp;- 5&gt;&amp;- 3&gt;&amp;-
+</pre>
+<!-- INDENTATION -->
+<p>In another shell:</p>
+<!-- INDENTATION -->
+<pre> $ zmodload zsh/net/socket
+ $ zsocket -d 3 /tmp/mysocket # connect to /tmp/socket
+ $ zsocket -d 4 /tmp/mysocket # connect to /tmp/socket
+ $ read msg &lt;&amp;3; echo got: &quot;$msg on fd 3&quot;
+ $ read msg &lt;&amp;4; echo got: &quot;$msg on fd 4&quot;
+ $ exec 3&gt;&amp;- 4&gt;&amp;-
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/stat</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin command interface to the <b>stat</b> system
+call.</p>
+<!-- INDENTATION -->
+<p>Get size of a file in bytes:</p>
+<!-- INDENTATION -->
+<pre> $ zmodload -i zsh/stat
+ $ stat -L +size file
+</pre>
+<!-- INDENTATION -->
+<p>Equal to GNU&rsquo;s:</p>
+<!-- INDENTATION -->
+<pre> $ stat -c %s file
+</pre>
+<!-- INDENTATION -->
+<p>Comparing file dates:</p>
+<!-- INDENTATION -->
+<pre>  $ file1=foo
+  $ file2=bar
+  $ touch bar &amp; sleep 5 &amp; touch foo
+  $ echo $file1 is $(( $(stat +mtime $file2) - $(stat +mtime $file1) )) seconds older than $file2.
+  bar is 5 seconds older than foo
+</pre>
+<!-- INDENTATION -->
+<p>List the files of a disk smaller than some other
+file:</p>
+<!-- INDENTATION -->
+<pre>  $ stat -A max +size some-other-file
+  $ print -rl ./**/*(D.L-$max)
+</pre>
+<!-- INDENTATION -->
+<p>List the top 100 biggest files in a disk:</p>
+<!-- INDENTATION -->
+<pre>  $ ls -fld ./**/*(d&lsquo;stat +device .&lsquo;OL[1,100])
+</pre>
+<!-- INDENTATION -->
+<p>Get only the user name and the file names from (like ls
+-l * | awk &rsquo;{print $3&quot; &quot; $8}&rsquo;):</p>
+<!-- INDENTATION -->
+<pre>  $ for file; do
+  &gt;   stat -sA user +uid -- &quot;$file&quot; &amp;&amp;
+  &gt;     print -r -- &quot;$user&quot; &quot;$file&quot;
+  &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Get the difference between actual bytes of file and
+allocated bytes of file:</p>
+<!-- INDENTATION -->
+<pre>  $ print $(($(stat +block -- file) * 512 - $(stat +size -- file)))
+</pre>
+<!-- INDENTATION -->
+<p>Find largest file:</p>
+<!-- INDENTATION -->
+<pre>  $ stat +size ./*(DOL[1])
+  # &lsquo;&lsquo;D&rsquo;&rsquo;  : to include dot files (d lowercase is for device)
+  # &lsquo;&lsquo;O&rsquo;&rsquo;  : reverse Ordered (o lowercase for non-reverse order)
+  # &lsquo;&lsquo;L&rsquo;&rsquo;  : by file Length (l is for number of links)
+  # &lsquo;&lsquo;[1]&rsquo;&rsquo;: return only first one
+</pre>
+<!-- INDENTATION -->
+<p>Delete files in a directory that hasn&rsquo;t been
+accessed in the last ten days and send ONE mail to the owner
+of the files informing him/her of the files&rsquo;
+deletion:</p>
+<!-- INDENTATION -->
+<pre>  $ zmodload zsh/stat zsh/files
+  $ typeset -A f; f=()
+  $ rm -f /path/**/*(.a+10e{&rsquo;stat -sA u +uidr $REPLY; f[$u]=&quot;$f[$u]$REPLY&quot;&rsquo;})
+  $ for user (${(k)f}) {print -rn $f[$user]|mailx -s &quot;...&quot; $user}
+</pre>
+<!-- INDENTATION -->
+<p>Get a &quot;ls -l&quot; on all the files in the tree that
+are younger than a specified age:</p>
+<!-- INDENTATION -->
+<pre>  $ for d (. ./**/*(N/m-2))
+  &gt;   print -r -- $&rsquo;0$d: &amp;&amp; cd $d &amp;&amp; {
+  &gt;      for f (*(Nm-2om))
+  &gt;   stat -F &rsquo;%b %d %H:%M&rsquo; -LsAs -- $f &amp;&amp;
+  &gt;   print -r -- $s[3] ${(l:4:)s[4]} ${(l:8:)s[5]} \
+  &gt;   ${(l:8:)s[6]} ${(l:8:)s[8]} $s[10] $f ${s[14]:+-&gt; $s[14]}
+  &gt;   cd ~-
+  &gt; }
+</pre>
+<!-- INDENTATION -->
+<p>Get file creation date:</p>
+<!-- INDENTATION -->
+<pre>  $ stat -F &rsquo;%d %m %Y&rsquo; +mtime ~/.zshrc
+  30 06 2004
+  $ stat -F &rsquo;%D&rsquo; +mtime ~/.zshrc
+  06/30/04
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/system</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin interface to various low&minus;level system
+features.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/net/tcp</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Manipulation of TCP sockets</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/termcap</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Interface to the termcap database.</p>
+<!-- INDENTATION -->
+<pre> $ zmodload -ab zsh/termcap echotc
+ $ GREEN=&lsquo;echotc AF 2&lsquo;
+ $ YELLOW=&lsquo;echotc AF 3&lsquo;
+ $ RED=&lsquo;echotc AF 1&lsquo;
+ $ BRIGHTRED=&lsquo;echotc md ; echotc AF 1&lsquo;
+ $ print -l ${GREEN}green ${YELLOW}yellow ${RED}red ${BRIGHTRED}brightred
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/terminfo</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Interface to the terminfo database.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zftp</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin FTP client.</p>
+<!-- INDENTATION -->
+<p>Write ftp scripts as though shell:</p>
+<!-- INDENTATION -->
+<pre> $ init
+ $ autoload -U zfinit &amp;&amp; zfinit
+ $ zfparams www.example.invalid myuserid mypassword
+ $ zfopen
+ $ zfcd tips
+ $ zfls -l zsh-lovers.html
+ $ zfput zsh-lovers.html
+ $ zfls -l zsh-lovers.html
+</pre>
+<!-- INDENTATION -->
+<p>Automatically transfer files using FTP with error
+checking:</p>
+<!-- INDENTATION -->
+<pre>  $ zftp open host.name.invalid user passwd || exit
+  $ zftp get /remote/file &gt; /local/file; r=$?
+  $ zftp close &amp;&amp; exit r
+</pre>
+<!-- INDENTATION -->
+<p>Compress and ftp on the fly:</p>
+<!-- INDENTATION -->
+<pre>  $ zftp open host.name.invalid user password
+  $ zftp get $file | bzip2 &gt; ${file}.bz2
+  $ zftp close
+</pre>
+<!-- INDENTATION -->
+<p>Long list of files on a ftp:</p>
+<!-- INDENTATION -->
+<pre>  $ autoload -U zfinit
+  $ zfinit
+  $ zfopen some-host
+  $ zfcd /some/remote/Dir
+  $ cd /some/local/Dir
+</pre>
+<!-- INDENTATION -->
+<p>If the list.txt is located on the remote host, change to
+$ zfget ${(f)&quot;$(zftp get
+/path/to/remote/list.txt)&quot;} $ zfget ${(f)&quot;$(cat
+list.txt)&quot;} $ zfclose</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zle</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>The Zsh Line Editor, including the <b>bindkey</b> and
+<b>vared</b> builtins.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zleparameter</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Access to internals of the Zsh Line Editor via
+parameters.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zprof</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A module allowing profiling for shell functions.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zpty</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>A builtin for starting a command in a
+pseudo&minus;terminal.</p>
+<!-- INDENTATION -->
+<pre> $ zmodload -i zsh/zpty
+ $ zpty PW passwd $1
+ # &lsquo;&lsquo;-r&rsquo;&rsquo;: read the output of the command name.
+ # &lsquo;&lsquo;z&rsquo;&rsquo; : Parameter
+ $ zpty -r PW z &rsquo;*password:&rsquo;
+ # send the to command name the given strings as input
+ $ zpty -w PW $2
+ $ zpty -r PW z &rsquo;*password:&rsquo;
+ $ zpty -w PW $2
+ # | The second form, with the -d option, is used to delete commands
+ # | previously started, by supplying a list of their names. If no names
+ # | are given, all commands are deleted. Deleting a command causes the HUP
+ # | signal to be sent to the corresponding process.
+ $ zpty -d PW
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zselect</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Block and return when file descriptors are ready.</p>
+<!-- INDENTATION -->
+<pre># It&rsquo;s simular to
+ ,----
+ | $ sg=$(stty -g)
+ | $ stty -icanon min 0 time 50
+ | $ read yesno
+ | $ stty &quot;$sg&quot;
+ | $ case &quot;$yesno&quot; in
+ | &gt;  yes) command1;;
+ | &gt;  *) command2;;
+ | &gt; esac
+ &lsquo;----
+$ if zselect -t 500 -r 0 &amp;&amp; read yesno &amp;&amp; [ yes = &quot;$yesno&quot; ]; then
+&gt;    command1
+&gt; else
+&gt;    command1
+&gt; fi
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>zsh/zutil</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Some utility builtins, e.g. the one for supporting
+configuration via styles.</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>SUBSTITUTION</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Path substitution:</p>
+<!-- INDENTATION -->
+<pre> $ ls -l =zsh  # is like: &rsquo;ls -l /path/to/zsh&rsquo; or &rsquo;ls -l &lsquo;which zsh&lsquo;&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Process substitution:</p>
+<!-- INDENTATION -->
+<pre> $ (vi =(cmd)) # edit output of &rsquo;cmd&rsquo; (called process substitution).
+</pre>
+<!-- INDENTATION -->
+<p>Substitution of variables:</p>
+<!-- INDENTATION -->
+<pre> $ var1=42
+ $ tmp=var1
+ $ echo $((tmp))
+ 42
+ $
+
+$ var=foo
+ $ tmp=var
+ $ echo ${(P)tmp}
+ foo
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>ALIASES</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Suffix aliases are supported in zsh since version 4.2.0.
+Some examples:</p>
+<!-- INDENTATION -->
+<pre> alias -s tex=vim
+ alias -s html=w3m
+ alias -s org=w3m
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="20%"></td>
+<td width="79%">
+<p>Now pressing return-key after entering
+&rsquo;foobar.vim&rsquo; starts vim with foobar.vim. Calling
+a html-file runs browser w3m. &rsquo;www.zsh.org&rsquo; and
+pressing enter starts w3m with argument
+www.zsh.org.</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Global aliases can be used anywhere in the command line.
+Example:</p>
+<!-- INDENTATION -->
+<pre> $ alias -g C=&rsquo;| wc -l&rsquo;
+ $ grep alias ~/.zsh/* C
+ 443
+</pre>
+<!-- INDENTATION -->
+<p>Some more or less useful global aliases (choose whether
+they are useful or not for you on your own):</p>
+<!-- INDENTATION -->
+<pre> alias -g ...=&rsquo;../..&rsquo;
+ alias -g ....=&rsquo;../../..&rsquo;
+ alias -g .....=&rsquo;../../../..&rsquo;
+ alias -g CA=&quot;2&gt;&amp;1 | cat -A&quot;
+ alias -g C=&rsquo;| wc -l&rsquo;
+ alias -g D=&quot;DISPLAY=:0.0&quot;
+ alias -g DN=/dev/null
+ alias -g ED=&quot;export DISPLAY=:0.0&quot;
+ alias -g EG=&rsquo;|&amp; egrep&rsquo;
+ alias -g EH=&rsquo;|&amp; head&rsquo;
+ alias -g EL=&rsquo;|&amp; less&rsquo;
+ alias -g ELS=&rsquo;|&amp; less -S&rsquo;
+ alias -g ETL=&rsquo;|&amp; tail -20&rsquo;
+ alias -g ET=&rsquo;|&amp; tail&rsquo;
+ alias -g F=&rsquo; | fmt -&rsquo;
+ alias -g G=&rsquo;| egrep&rsquo;
+ alias -g H=&rsquo;| head&rsquo;
+ alias -g HL=&rsquo;|&amp; head -20&rsquo;
+ alias -g &sect;k=&quot;*~(*.bz2|*.gz|*.tgz|*.zip|*.z)&quot;
+ alias -g LL=&quot;2&gt;&amp;1 | less&quot;
+ alias -g L=&quot;| less&quot;
+ alias -g LS=&rsquo;| less -S&rsquo;
+ alias -g MM=&rsquo;| most&rsquo;
+ alias -g M=&rsquo;| more&rsquo;
+ alias -g NE=&quot;2&gt; /dev/null&quot;
+ alias -g NS=&rsquo;| sort -n&rsquo;
+ alias -g NUL=&quot;&gt; /dev/null 2&gt;&amp;1&quot;
+ alias -g PIPE=&rsquo;|&rsquo;
+ alias -g R=&rsquo; &gt; /c/aaa/tee.txt &rsquo;
+ alias -g RNS=&rsquo;| sort -nr&rsquo;
+ alias -g S=&rsquo;| sort&rsquo;
+ alias -g TL=&rsquo;| tail -20&rsquo;
+ alias -g T=&rsquo;| tail&rsquo;
+ alias -g US=&rsquo;| sort -u&rsquo;
+ alias -g VM=/var/log/messages
+ alias -g X0G=&rsquo;| xargs -0 egrep&rsquo;
+ alias -g X0=&rsquo;| xargs -0&rsquo;
+ alias -g XG=&rsquo;| xargs egrep&rsquo;
+ alias -g X=&rsquo;| xargs&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Array parameters [array_name=(value1 value2 ...
+valueN)].</p>
+<!-- INDENTATION -->
+<pre> $ stupid=emacs
+ $ echo $stupid[3]
+ a
+ $
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>SHELL-SCRIPTING</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>This section provides some examples for often needed
+shellscript-stuff. Notice that you should not use otherwise
+most examples won&rsquo;t work.</p>
+<!-- INDENTATION -->
+<p>Parse options in shellscripts. Example taken from ZWS by
+Adam Chodorowski
+(http://www.chodorowski.com/projects/zws/):</p>
+<!-- INDENTATION -->
+<pre>parse_options()
+{
+    o_port=(-p 9999)
+    o_root=(-r WWW)
+    o_log=(-d ZWS.log)
+
+   zparseopts -K -- p:=o_port r:=o_root h=o_help
+    if [[ $? != 0 || &quot;$o_help&quot; != &quot;&quot; ]]; then
+        echo Usage: $(basename &quot;$0&quot;) &quot;[-p PORT] [-r DIRECTORY]&quot;
+        exit 1
+    fi
+
+   port=$o_port[2]
+    root=$o_root[2]
+    log=$o_log[2]
+
+   if [[ $root[1] != &rsquo;/&rsquo; ]]; then root=&quot;$PWD/$root&quot;; fi
+}
+# now use the function:
+parse_options $*
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>MISC&minus;EXAMPLES</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Hint: A list of valid glob Qualifiers can be found in
+zshexpn(1). See &lsquo;&lsquo;man 1 zshexpn | less
+-p&rsquo;&rsquo; Qualifiers for details.</p>
+<!-- INDENTATION -->
+<p>Load all available modules at startup</p>
+<!-- INDENTATION -->
+<pre> $ typeset -U m
+ $ m=()
+ $ for md ($module_path) m=($m $md/**/*(*e:&rsquo;REPLY=${REPLY#$md/}&rsquo;::r))
+ $ zmodload -i $m
+</pre>
+<!-- INDENTATION -->
+<p>Rename all MP3-Files from &lsquo;&lsquo;name with
+spaces.mp3&rsquo;&rsquo; to &lsquo;&lsquo;Name With
+Spaces.mp3&rsquo;&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ for i in *.mp3; do
+ &gt;     mv $i ${${(C)i}:s/Mp3/mp3/}
+ &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Download with LaTeX2HTML created Files (for example the
+ZSH&minus;Guide):</p>
+<!-- INDENTATION -->
+<pre> $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+ &gt;     lynx -source $f &gt;${f:t}
+ &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Replace the unreadable Escape-Sequences:</p>
+<!-- INDENTATION -->
+<pre> $ autoload colors ; colors
+ $ print &quot;$bg[cyan]$fg[blue]You are an zsh user&quot; &gt;&gt; /dev/pts/3
+</pre>
+<!-- INDENTATION -->
+<p>Filename&minus;Expansion. <b>Note:</b> (N) activates
+setopt nullglob only for this loop.</p>
+<!-- INDENTATION -->
+<pre> $ for i in *.o(N); do
+ &gt;     rm $i
+ &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Re-linking broken links:</p>
+<!-- INDENTATION -->
+<pre> $ for f in ./**/*(-@); do
+ &gt;     stat +link -A l $f
+ &gt;     (cd $f:h &amp; [[ -e $l.gz ]]) &amp; ln -sf $l.gz $f
+ &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Show me all the .c files for which there doesn&rsquo;t
+exist a .o file:</p>
+<!-- INDENTATION -->
+<pre>  $ c=(*.c) o=(*.o(N)) eval &rsquo;ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Load all available modules at startup:</p>
+<!-- INDENTATION -->
+<pre>  $ typeset -U m
+  $ m=()
+  $ for md ($module_path) m=($m $md/**/*(*e:&rsquo;REPLY=${REPLY#$md/}&rsquo;::r))
+  $ zmodload -i $m
+</pre>
+<!-- INDENTATION -->
+<p>Rename all files within a directory such that their names
+get a numeral prefix in the default sort order:</p>
+<!-- INDENTATION -->
+<pre>  $ i=1; for j in *; do mv $j $i.$j; ((i++)); done
+  $ i=1; for f in *; do mv $f $(echo $i| awk &rsquo;{ printf(&quot;%03d&quot;, $0)}&rsquo;).$f; ((i++)); done
+  $ integer i=0; for f in *; do mv $f $[i+=1].$f; done
+</pre>
+<!-- INDENTATION -->
+<p>Find (and print) all symbolic links without a target
+within the current dirtree:</p>
+<!-- INDENTATION -->
+<pre>  $ $ file **/*(D@) | fgrep broken
+  $ for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i
+  $ echo **/*(@-^./=%p)
+  $ print -l **/*(-@)
+</pre>
+<!-- INDENTATION -->
+<p>List all plain files that do not have extensions listed
+in &lsquo;fignore&rsquo;:</p>
+<!-- INDENTATION -->
+<pre>  $ ls **/*~*(${~${(j/|/)fignore}})(.)
+  # see above, but now omit executables
+  $ ls **/*~*(${~${(j/|/)fignore}})(.^*)
+</pre>
+<!-- INDENTATION -->
+<p>Print out files that dont have extensions (require setopt
+extendedglob dotglob):</p>
+<!-- INDENTATION -->
+<pre>  $ printf &rsquo;%s0 ^?*.*
+</pre>
+<!-- INDENTATION -->
+<p>List files in reverse order sorted by name:</p>
+<!-- INDENTATION -->
+<pre>  $ print -rl -- *(On)
+  or
+  $ print -rl -- *(^on)
+</pre>
+<!-- INDENTATION -->
+<p>Synonymic to &lsquo;&lsquo;ps ax | awk &rsquo;{print
+$1}&rsquo;&rsquo;&rsquo;:</p>
+<!-- INDENTATION -->
+<pre>  $ print -l /proc/*/cwd(:h:t:s/self//)
+</pre>
+<!-- INDENTATION -->
+<p>Get the PID of a process (without
+&lsquo;&lsquo;ps&rsquo;&rsquo;,
+&lsquo;&lsquo;sed&rsquo;&rsquo;,
+&lsquo;&lsquo;pgrep&rsquo;&rsquo;, .. (under Linux):</p>
+<!-- INDENTATION -->
+<pre>  $ pid2 () {
+  &gt;   local i
+  &gt;   for i in /proc/&lt;-&gt;/stat
+  &gt; do
+  &gt;   [[ &quot;$(&lt; $i)&quot; = *\((${(j:|:)~@})\)* ]] &amp;&amp; echo $i:h:t
+  &gt; done
+  &gt; }
+</pre>
+<!-- INDENTATION -->
+<p>for X in &rsquo;n&rsquo; &rsquo;o&rsquo; &rsquo;p&rsquo;
+&rsquo;q&rsquo; &rsquo;r&rsquo; &rsquo;s&rsquo;
+&rsquo;t&rsquo; &rsquo;u&rsquo; &rsquo;v&rsquo;
+&rsquo;w&rsquo; &rsquo;x&rsquo; &rsquo;y&rsquo;; do ...:</p>
+<!-- INDENTATION -->
+<pre>  $ for (( i = 36#n; i &lt;= 36#y; i++ )); do
+  &gt;   print ${$(([##36]i)):l}
+  &gt; done
+# or in combination with &lsquo;&lsquo;dc&rsquo;&rsquo;
+  $ print {$((##n))..$((##y))}P 10P | dc
+# or with &lsquo;&lsquo;eval&rsquo;&rsquo;
+  $ eval print &rsquo;${$(([##36]&rsquo;{$((36#n))..$((36#y))}&rsquo;)):l}&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Foreach in one line of shell:</p>
+<!-- INDENTATION -->
+<pre>  $ for f (*) print -r -- $f
+</pre>
+<!-- INDENTATION -->
+<p>Copy a directory recursively without data/files:</p>
+<!-- INDENTATION -->
+<pre>  $ dirs=(**/*(/))
+  $ cd -- $dest_root
+  $ mkdir -p -- $dirs
+# or without zsh
+  $ find . -type d -exec env d=&quot;$dest_root&quot; sh -c &rsquo; exec mkdir -p -- &quot;$d/$1&quot;&rsquo; &rsquo;{}&rsquo; &rsquo;{}&rsquo; ;
+</pre>
+<!-- INDENTATION -->
+<p>If &lsquo;foo=23&rsquo;&rsquo;, then print with 10 digit
+with leading &rsquo;0&rsquo;:</p>
+<!-- INDENTATION -->
+<pre>  $ foo=23
+  $ print ${(r:10::0:)foo}
+</pre>
+<!-- INDENTATION -->
+<p>Find the name of all the files in their home directory
+that have more than 20 characters in their file names:</p>
+<!-- INDENTATION -->
+<pre>  print -rl $HOME/${(l:20::?:)~:-}*
+</pre>
+<!-- INDENTATION -->
+<p>Save arrays:</p>
+<!-- INDENTATION -->
+<pre>  $ print -r -- ${(qq)m} &gt; $nameoffile      # save it
+  $ eval &quot;m=($(cat -- $nameoffile)&quot;            # or use
+  $ m=(&quot;${(@Q)${(z)&quot;$(cat -- $nameoffile)&quot;}}&quot;) # to restore it
+</pre>
+<!-- INDENTATION -->
+<p>Get a &quot;ls -l&quot; on all the files in the tree that
+are younger than a specified age (e.g &quot;ls -l&quot; all
+the files in the tree that where modified in the last 2
+days):</p>
+<!-- INDENTATION -->
+<pre>  $ ls -tld **/*(m-2)
+</pre>
+<!-- INDENTATION -->
+<p>This will give you a listing 1 file perl line (not
+&agrave; la ls -R). Think of an easy way to have a &quot;ls
+-R&quot; style output with only files newer than 2 day
+old.</p>
+<!-- INDENTATION -->
+<pre>  $ for d (. ./**/*(/)) {
+  &gt;   print -r -- $&rsquo;0${d}:
+  &gt;   cd $d &amp;&amp; {
+  &gt;       l=(*(Nm-2))
+  &gt;       (($#l)) &amp;&amp; ls -ltd -- $l
+  &gt;       cd ~-
+  &gt;   }
+  &gt; }
+</pre>
+<!-- INDENTATION -->
+<p>If you also want directories to be included even if their
+mtime is more than 2 days old:</p>
+<!-- INDENTATION -->
+<pre>  $ for d (. ./**/*(/)) {
+  &gt;   print -r -- $&rsquo;0${d}:
+  &gt;   cd $d &amp;&amp; {
+  &gt;      l=(*(N/,m-2))
+  &gt;      (($#l)) &amp;&amp; ls -ltd -- $l
+  &gt;      cd ~-
+  &gt;   }
+  &gt; }
+</pre>
+<!-- INDENTATION -->
+<p>And if you want only the directories with mtime &lt; 2
+days to be listed:</p>
+<!-- INDENTATION -->
+<pre>  $ for d (. ./**/*(N/m-2)) {
+  &gt;   print -r -- $&rsquo;0${d}:
+  &gt;   cd $d &amp;&amp; {
+  &gt;      l=(*(Nm-2))
+  &gt;      (($#l)) &amp;&amp; ls -ltd -- $l
+  &gt;      cd ~-
+  &gt;   }
+  &gt; }
+</pre>
+<!-- INDENTATION -->
+<p>Print 42 &lsquo;&lsquo;-&rsquo;&rsquo;:</p>
+<!-- INDENTATION -->
+<pre>  $ echo ${(l:42::-:)}
+# or use &lsquo;&lsquo;$COLUMS&rsquo;&rsquo;
+  $ echo ${(l:$COLUMNS::-:)}
+# and now with colors (require autoload colors ;colors)
+  $ echo &quot;$bg[red]$fg[black]${(l:42::-:)}&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Redirect STDERR to a command like xless without
+redirecting STDOUT as well:</p>
+<!-- INDENTATION -->
+<pre>  $ foo 2&gt;&gt;(xless)
+# but this executes the command asynchronously. To do it synchronously:
+  $ { { foo 1&gt;&amp;3 } 2&gt;&amp;1 | xless } 3&gt;&amp;1
+</pre>
+<!-- INDENTATION -->
+<p>Rename all MP3-Files from name with spaces.mp3 to Name
+With Spaces.mp3:</p>
+<!-- INDENTATION -->
+<pre>  $ for i in *.mp3; do
+  &gt;     mv $i ${${(C)i}:s/Mp3/mp3/}
+  &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Match file names containing only digits and ending with
+.xml (requiresetopt kshglob):</p>
+<!-- INDENTATION -->
+<pre>  $ ls -l [0-9]##.xml
+  $ ls -l &lt;0-&gt;.xml
+</pre>
+<!-- INDENTATION -->
+<p>Remove all &quot;non txt&quot; files:</p>
+<!-- INDENTATION -->
+<pre>  $ rm ./^*.txt
+</pre>
+<!-- INDENTATION -->
+<p>Move 200 files from a directory into another:</p>
+<!-- INDENTATION -->
+<pre>  $ mv -- *([1,200]) /another/Dir
+</pre>
+<!-- INDENTATION -->
+<p>Convert images (foo.gif =&gt; foo.png):</p>
+<!-- INDENTATION -->
+<pre>  $ for i in **/*.gif; convert $i $i:r.png
+</pre>
+<!-- INDENTATION -->
+<p>Convert a collection of mp3 files to wave or cdr (e.g.
+file.wav -&gt; file.mp3):</p>
+<!-- INDENTATION -->
+<pre>  $ for i (./*.mp3){mpg321 --w - $i &gt; ${i:r}.wav}
+</pre>
+<!-- INDENTATION -->
+<p>Download with LaTeX2HTML created Files (for example the
+ZSH-Guide):</p>
+<!-- INDENTATION -->
+<pre>  $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do
+  &gt;     lynx -source $f &gt;${f:t}
+  &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Move all files in dir1 and dir2 that have line counts
+greater than 10 to another directory say
+&quot;/more10&quot;:</p>
+<!-- INDENTATION -->
+<pre>  $ mv dir[12]/**/*.cr(-.e{&rsquo;((&lsquo;wc -l &lt; $REPLY&lsquo; &gt; 10))&rsquo;}) /more10
+</pre>
+<!-- INDENTATION -->
+<p>Make with dpkg a master-list of everyfile that it has
+installed:</p>
+<!-- INDENTATION -->
+<pre>  $ diff &lt;(find / | sort) &lt;(cat /var/lib/dpkg/info/*.list | sort)
+</pre>
+<!-- INDENTATION -->
+<p>Replace the unreadable Escape-Sequences:</p>
+<!-- INDENTATION -->
+<pre>  $ autoload colors ; colors
+  $ print &quot;$bg[cyan]$fg[blue]You are an zsh user&quot; &gt;&gt; /dev/pts/3
+</pre>
+<!-- INDENTATION -->
+<p>Get ASCII value of a character:</p>
+<!-- INDENTATION -->
+<pre>  $ char=N ; print $((#char))
+</pre>
+<!-- INDENTATION -->
+<p>Filename suffix: Note: The (N) says to use the nullglob
+option for this particular glob pattern.</p>
+<!-- INDENTATION -->
+<pre>  $ for i in *.o(N); do
+  &gt;     rm $i
+  &gt; done
+</pre>
+<!-- INDENTATION -->
+<p>Rename files; i. e. FOO to foo and bar to BAR:</p>
+<!-- INDENTATION -->
+<pre>  $ for i in *(.); mv $i ${i:l} # &lsquo;FOO&rsquo; to &lsquo;foo&rsquo;
+  $ for i in *(.); mv $i ${i:u} # &lsquo;bar to &lsquo;BAR&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Show all suid-files in $PATH:</p>
+<!-- INDENTATION -->
+<pre>  $ ls -latg ${(s.:.)PATH} | grep &rsquo;^...s&rsquo;
+# or more complex ;)
+  $ print -l ${^path}/*(Ns,S)
+# or show only executables with a user given pattern
+  $ print -l ${^path}/*vim*(*N)
+</pre>
+<!-- INDENTATION -->
+<p>gzip files when containing a certain string:</p>
+<!-- INDENTATION -->
+<pre>  $ gzip ${(ps: :)&quot;$(grep -lZ foobar ./*.txt(.))&quot;}
+</pre>
+<!-- INDENTATION -->
+<p>A small one-liner, that reads from stdin and prints to
+stdout the first unique line i. e. does not print lines that
+have been printed before (this is similar to the unique
+command, but unique can only handle adjacent lines):</p>
+<!-- INDENTATION -->
+<pre>  $ IFS=$&rsquo;0; print -rl -- ${(Oau)${(Oa)$(cat file;echo .)[1,-2]}}
+</pre>
+<!-- INDENTATION -->
+<p>Lists every executable in PATH:</p>
+<!-- INDENTATION -->
+<pre>  $ print -l ${^path}/*(-*N)
+</pre>
+<!-- INDENTATION -->
+<p>Match all .c files in all subdirectories, _except_ any
+SCCS subdirectories?</p>
+<!-- INDENTATION -->
+<pre>  $ ls **/*.c~(*/)#SCCS/*
+</pre>
+<!-- INDENTATION -->
+<p>List all &lsquo;README&rsquo; - files case-insensitive
+with max. one typo:</p>
+<!-- INDENTATION -->
+<pre>  $ ls **/*(#ia2)readme
+</pre>
+<!-- INDENTATION -->
+<p>Print version information of zsh:</p>
+<!-- INDENTATION -->
+<pre> $ print $ZSH_VERSION
+</pre>
+<!-- INDENTATION -->
+<p>Get hostspecific information:</p>
+<!-- INDENTATION -->
+<pre> $ echo $MACHTYPE $VENDOR $OSTYPE
+</pre>
+<!-- INDENTATION -->
+<p>Fast change of directories:</p>
+<!-- INDENTATION -->
+<pre> alias ...=&rsquo;cd ../..&rsquo;
+ alias ....=&rsquo;cd ../../..&rsquo;
+ alias .....=&rsquo;cd ../../../..&rsquo;
+ alias ......=&rsquo;cd ../../../../..&rsquo;
+ alias .......=&rsquo;cd ../../../../../..&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Mailpath: simple multiple mailpath:</p>
+<!-- INDENTATION -->
+<pre>  mailpath=($HOME/Mail/mbox&rsquo;?new mail in mbox&rsquo;
+            $HOME/Mail/tux.u-strasbg&rsquo;?new mail in tux&rsquo;
+            $HOME/Mail/lilo&rsquo;?new mail in lilo&rsquo;
+            $HOME/Mail/ldap-fr&rsquo;?new mail in ldap-fr&rsquo;)
+</pre>
+<!-- INDENTATION -->
+<p>Mailpath: dynamic mailpath:</p>
+<!-- INDENTATION -->
+<pre>  typeset -a mailpath
+  for i in ~/Mail/Lists/*(.); do
+     mailpath[$#mailpath+1]=&quot;${i}?You have new mail in ${i:t}.&quot;
+  done
+</pre>
+<!-- INDENTATION -->
+<p>Avoid globbing on special commands:</p>
+<!-- INDENTATION -->
+<pre>for com in alias expr find mattrib mcopy mdir mdel which;
+alias $com=&quot;noglob $com&quot;
+</pre>
+<!-- INDENTATION -->
+<p>For migrating your bashprompt to zsh use the script
+bash2zshprompt located in the zsh source distribution under
+&rsquo;Misc&rsquo;.</p>
+<!-- INDENTATION -->
+<p>For migration from (t)csh to zsh use the c2z tool that
+converts csh aliases and environment and shell variables to
+zsh. It does this by running csh, and having csh report on
+aliases and variables. The script then converts these to zsh
+startup files. It has some issues and usage information that
+are documented at the top of this script.</p>
+<!-- INDENTATION -->
+<p>Here are functions to set the title and hardstatus of an
+<b>XTerm</b> or of <b>GNU Screen</b> to &rsquo;zsh&rsquo;
+and the current directory, respectively, when the prompt is
+displayed, and to the command name and rest of the command
+line, respectively, when a command is executed:</p>
+<!-- INDENTATION -->
+<pre>  function title {
+      if [[ $TERM == &quot;screen&quot; ]]; then
+        # Use these two for GNU Screen:
+        print -nR $&rsquo; 33k&rsquo;$1$&rsquo; 33&rsquo;\
+        print -nR $&rsquo; 33]0;&rsquo;$2$&rsquo;&rsquo;
+      elif [[ $TERM == &quot;xterm&quot; || $TERM == &quot;rxvt&quot; ]]; then
+        # Use this one instead for XTerms:
+        print -nR $&rsquo; 33]0;&rsquo;$*$&rsquo;&rsquo;
+      fi
+  }
+
+ function precmd {
+      title zsh &quot;$PWD&quot;
+  }
+
+ function preexec {
+      emulate -L zsh
+      local -a cmd; cmd=(${(z)1})
+      title $cmd[1]:t &quot;$cmd[2,-1]&quot;
+  }
+</pre>
+<!-- INDENTATION -->
+<p>Put the following line into your ~/.screenrc to see this
+fancy hardstatus:</p>
+<!-- INDENTATION -->
+<pre>  caption always &quot;%3n %t%? (%u)%?%?: %h%?&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Special variables which are assigned or you can
+assign:</p>
+<!-- INDENTATION -->
+<pre> $ echo $LINENO $RANDOM $SECONDS $COLUMNS $HISTCHARS
+ $ echo $UID $EUID $GID $EGID $USERNAME
+ $ echo $fignore $mailpath $cdpath
+
+Show me all the .c files for which there doesn&rsquo;t exist a .o file:
+ $ c=(*.c) o=(*.o(N)) eval &rsquo;ls ${${c:#(${~${(j:|:)${o:r}}}).c}:?done}&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Find (and print) all symbolic links without a target
+within the current dirtree:</p>
+<!-- INDENTATION -->
+<pre> $ file **/*(D@) | fgrep broken
+ $ for i in **/*(D@); [[ &minus;f $i || &minus;d $i ]] || echo $i
+ $ echo **/*(@&minus;^./=%p)
+ $ print &minus;l **/*(&minus;@)
+</pre>
+<!-- INDENTATION -->
+<p>Rename files; i. e. FOO to foo and bar to BAR:</p>
+<!-- INDENTATION -->
+<pre> $ for i in *(.); mv $i ${i:l} # &lsquo;FOO&rsquo; to &lsquo;foo&rsquo;
+ $ for i in *(.); mv $i ${i:u} # &lsquo;bar to &lsquo;BAR&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Show all suid-files in $PATH:</p>
+<!-- INDENTATION -->
+<pre> $ ls &minus;latg ${(s.:.)PATH} | grep &rsquo;^...s&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>List all &lsquo;README&rsquo; - files case-insensitive
+with max. one typo:</p>
+<!-- INDENTATION -->
+<pre> $ ls **/*(#ia2)readme
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>(RECURSIVE) GLOBBING&minus;EXAMPLES</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Search for &lsquo;README&rsquo; in all Subdirectories</p>
+<!-- INDENTATION -->
+<pre> $ print &minus;l **/README
+</pre>
+<!-- INDENTATION -->
+<p>Recursive &lsquo;&lsquo;chmod&rsquo;&rsquo;</p>
+<!-- INDENTATION -->
+<pre> $ chmod 700 **/(.) # Only files
+ $ chmod 700 **/(/) # Only directories
+</pre>
+<!-- INDENTATION -->
+<p>List files beginning at &lsquo;foo23&rsquo; upwards
+(foo23, foo24, foo25, ..)</p>
+<!-- INDENTATION -->
+<pre> $ ls -l foo&lt;23&minus;&gt;
+</pre>
+<!-- INDENTATION -->
+<p>Remove spaces from filenames</p>
+<!-- INDENTATION -->
+<pre> $ for a in ./**/*\ *(Dod); do mv $a ${a:h}/${a:t:gs/ /_}; done
+</pre>
+<!-- INDENTATION -->
+<p>Show only all *.c and *.h - Files</p>
+<!-- INDENTATION -->
+<pre> $ ls -l *.(c|h)
+</pre>
+<!-- INDENTATION -->
+<p>Show <b>only</b> all *.c - files and ignore
+&lsquo;foo.c&rsquo;</p>
+<!-- INDENTATION -->
+<pre> $ ls *.c~foo.c
+</pre>
+<!-- INDENTATION -->
+<p>Show only world-readable files</p>
+<!-- INDENTATION -->
+<pre> $ ls -l *(R)
+</pre>
+<!-- INDENTATION -->
+<p>find and delete the files which are older than a given
+parameter (seconds/minutes/hours)</p>
+<!-- INDENTATION -->
+<pre> # deletes all regular file in /Dir that are older than 3 hours
+   $ rm -f /Dir/**/*(.mh+3)
+ # # deletes all symlinks in /Dir that are older than 3 minutes
+   $ rm -f /Dir/**/*(@mm+3)
+ # deletes all non dirs in /Dir that are older than 30 seconds
+   $ rm -f /Dir/**/*(ms+30^/)
+ # deletes all files more than 6 hours old
+   $ rm -f **/*(mh+6)
+ # deletes all folders, sub-folders and files older than one hour
+   $ rm ./**/*(.Dmh+1,.DL0)
+ # removes all files but the ten newer ones (delete all but last 10 files in a directory)
+  $ rm ./*(Om[1,-11])
+
+Note: If you get a arg list too long, you use the builtin rm. For example:
+  $ zmodload zsh/files ; rm -f **/*(mh+6)
+  or use the zargs function:
+  $ autoload zargs ; zargs **/*(mh+6) -- rm -f
+</pre>
+<!-- INDENTATION -->
+<p><b>Explanation:</b></p>
+<!-- INDENTATION -->
+<pre>   ./: to avoid problem with files starting with &quot;&minus;&quot;
+  **/: recursively descend
+   *.: any file
+(...): qualifiers:
+</pre>
+</td>
+</table>
+<!-- TABS -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="3" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>(&lt;a&gt;,&lt;b&gt;): files of &lt;a&gt; type or
+&lt;b&gt; type</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>&lt;a&gt;:</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>.: regular files</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>D: including dot files</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>mh+1: whose [m]odification time, is more (+) than
+[1]</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>[h]our in the past.</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>&lt;b&gt;:</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>.: regular files</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>D: including dot files</p>
+</td>
+<td width="80%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="7%">
+
+<p>L0: of 0 [L]ength.</p>
+</td>
+<td width="80%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>If you want to remove empty directories afterwards:</p>
+<!-- INDENTATION -->
+<pre> # &lsquo;&lsquo;/&rsquo;&rsquo; matches only directories and &lsquo;&lsquo;od&rsquo;&rsquo; sorted in depth order (so
+ # that dir/subdir is removed before directory).
+ $ rmdir ./**/*(/od) 2&gt; /dev/null
+</pre>
+<!-- INDENTATION -->
+<p><b>Note:</b> If you get a arg list too long, you use the
+builtin rm. For example:</p>
+<!-- INDENTATION -->
+<pre> $ zmodload zsh/files ; rm -f **/*(mh+6)
+</pre>
+<!-- INDENTATION -->
+<p>or use the zargs function:</p>
+<!-- INDENTATION -->
+<pre> $ autoload zargs ; zargs **/*(mh+6) -- rm -f
+</pre>
+<!-- INDENTATION -->
+<p>Delete only the oldest file in a directory:</p>
+<!-- INDENTATION -->
+<pre> $ rm ./*filename*(Om[1])
+</pre>
+<!-- INDENTATION -->
+<p>Sort the output from &lsquo;ls &minus;l&rsquo; by file
+size:</p>
+<!-- INDENTATION -->
+<pre> $ ls -fld *(OL)
+</pre>
+<!-- INDENTATION -->
+<p>Find most recent file in a directory:</p>
+<!-- INDENTATION -->
+<pre> $ setopt dotglob ; print directory/**/*(om[1])
+</pre>
+<!-- INDENTATION -->
+<p>List the top 100 biggest files in a disk</p>
+<!-- INDENTATION -->
+<pre> $ zmodload &minus;i zsh/stat ; ls &minus;fld ./**/*(d&lsquo;stat +device .&lsquo;OL[1,100])
+</pre>
+<!-- INDENTATION -->
+<pre> $ ls *(L0f.go-w.)
+</pre>
+<!-- INDENTATION -->
+<p>Find all files without a valid owner:</p>
+<!-- INDENTATION -->
+<pre> $ chmod someuser /**/*(D^u:${(j.:u:.)${(f)&quot;$(&lt;/etc/passwd)&quot;}%%:*}:)
+</pre>
+<!-- INDENTATION -->
+<p>Show only files are owned from group
+&lsquo;users&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ ls -l *(G[users])
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>ZMV&minus;EXAMPLES</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p><b>Note:</b> &lsquo;&lsquo;autoload zmv&rsquo;&rsquo;
+needed! See &lsquo;&lsquo;man zshcontrib | less -p
+zmv&rsquo;&rsquo; for more details.</p>
+<!-- INDENTATION -->
+<p>Serially all files (foo.foo &gt; 1.foo, fnord.foo &gt;
+2.foo, ..):</p>
+<!-- INDENTATION -->
+<pre> $ ls *
+ 1.c  asd.foo  bla.foo  fnord.foo  foo.fnord  foo.foo
+ $ c=1 zmv &rsquo;*.foo&rsquo; &rsquo;$((c++)).foo&rsquo;
+ $ ls *
+ 1.c  1.foo  2.foo  3.foo  4.foo  foo.fnord
+</pre>
+<!-- INDENTATION -->
+<p>See above, but now only files with a filename &gt;= 30
+chars:</p>
+<!-- INDENTATION -->
+<pre> $ c=1 zmv &quot;${(l:30-4::?:)}*.foo&quot; &rsquo;$((c++)).foo&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Replace spaces in filenames with a underline:</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;* *&rsquo; &rsquo;$f:gs/ /_&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Change the suffix from *.sh to *.pl:</p>
+<!-- INDENTATION -->
+<pre> $ zmv -W &rsquo;*.sh&rsquo; &rsquo;*.pl&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>lowercase/uppercase all files/directories:</p>
+<!-- INDENTATION -->
+<pre> # lowercase
+   $ zmv &rsquo;(*)&rsquo; &rsquo;${(L)1}&rsquo;
+ # uppercase
+   zmv &rsquo;(*)&rsquo; &rsquo;${(U)1}&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Remove the suffix *.c from all C-Files:</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;(*).c&rsquo; &rsquo;$1&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Uppercase only the first letter of all *.mp3 - files:</p>
+<!-- INDENTATION -->
+<pre> $ zmv &rsquo;([a-z])(*).mp3&rsquo; &rsquo;${(C)1}$2.mp3&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Copy the target &lsquo;README&rsquo; in same directory as
+each &lsquo;Makefile&rsquo;:</p>
+<!-- INDENTATION -->
+<pre> $ zmv -C &rsquo;(**/)Makefile&rsquo; &rsquo;${1}README&rsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Removing single quote from filenames (recursive):</p>
+<!-- INDENTATION -->
+<pre>$ zmv -Q &quot;(**/)(*&rsquo;*)(D)&quot; &quot;\$1\${2//&rsquo;/}&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Replace spaces with underscores in filenames
+(recursive):</p>
+<!-- INDENTATION -->
+<pre>$ zmv -Q &quot;(**/)(* *)(D)&quot; &quot;\$1\${2// /_}&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Rename pic1.jpg, pic2.jpg, .. to pic0001.jpg,
+pic0002.jpg, ..:</p>
+<!-- INDENTATION -->
+<pre> # Not recursively
+   $ zmv &rsquo;pic(*).jpg&rsquo; &rsquo;pic${(l:4::0:)1}.jpg&rsquo;
+ # Recursively
+   $ zmv &rsquo;(**/)pic(*).jpg&rsquo; &rsquo;$1/pic${(l:4::0:)2}.jpg&rsquo;
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="4%"></td>
+<td width="95%">
+<p><b>TIPS BY ZZAPPER
+(http://www.rayninfo.co.uk/tips/zshtips.html)</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<pre> !! #  last command
+ !$ #  last argument
+ !$:h (last argument, strip one level)
+ !?echo
+ vi !* (all parameters)
+ vi !$ (last parameters)
+ !42
+ history
+ ^fred^joe             # edit previous command replace fred by joe
+ !42:p
+ also use control-R
+
+cmdy !?cmd1?:*&lt;TAB&gt;   #get parameters of a previous command
+
+!:0 is the previous command name
+ !^, !:2, !:3, ?, !$ are the arguments
+ !* is all the arguments
+ !-2, !-3, ? are earlier commands
+ !-2^, !-2:2, !-2$, !-2*
+
+cd !$:h  (remove file name)
+ cat !!:t (only file name)
+ print ${param:&amp;}   (last substitute)
+
+# globbing modifiers
+ # :r removes the suffix from the result,
+ # :t takes away the directory part
+ # . means must be regular files not directories etc
+ # *(om[1]) picks most recently modified file
+ # (.N) no warning message if any file absent
+ print *(om[1])   # print the most recent file
+ print *(.om[1])  # print the most recent file (not directory)
+ ls -l *(Om[1])   # oldest file
+ print *(om[1,5]) # print the 5 most recent files
+ vi *(.om[1]^D)   # vi newest file ^D means switch off GLOB_DOTS
+ ls -l *(m4)      # list files modified exactly 4 days ago
+ ls -ltd *(mw3)   # list files 3 weeks old
+ echo *(m-1)      # files modified today
+ echo *(m0)       # files modified today
+ rm *.{aux,dvi,log,toc}(.N) # rm latex temp files N means no error msg is any file absent
+
+print *(n:t)     # order by name strip directory
+ print **/*(On:t) # recursive reverse order by name, strip directory
+ print *.c(:r)    # strip suffix
+ ls **/*(.)       # only files no directories
+ -ld *(/)      # list only directories
+ FOO = (#i)foo ]]  # case insensitive matching
+ #oddities
+ fred=$((6**2 + 6)) # can do maths
+ print ${#path}     # length of &quot;path&quot; array
+ print ${#path[1]}  # length of first element in path array
+ ls fred{joe,sid}.pl
+ ls fred{09..13}.pl
+
+# arrays
+ array=(~/.zshenv ~/.zshrc ~/.zlogout)
+ % print ${array:t}
+ .zshenv .zshrc .zlogout
+
+x=&quot;bu&amp;^*ck&quot;                  # variable with mucky characters
+ print ${x//[^[:alnum:]]/_}   # replace all non-alphanumerics with _
+
+cp file ~1                   # where 1 is first entry in pushd stack
+ #zsh completion
+ startfilename&lt;tab&gt;           # will complete matching files anywhere in $PATH
+ startfilename&lt;C-D&gt;           # will list matching files anywhere in $PATH
+ #directory sizes
+ du -sk *(/)
+
+ls * | grep foo | less
+ #to
+ ls * G foo L
+ #
+
+#magic equals
+ vim =some_file                            # edits file anywhere in $PATH
+ ls =some_file                             # lists file anywhere in $PATH
+ #magic ** (recursion)
+ vim **/some_file                          # edits file under under current dir
+ # modifying more than one file (multios)
+ # writes ls results to file1 &amp; file2 appends to filec
+ ls &gt; file1 &gt; file2 &gt;&gt; file3 | wc
+</pre>
+<!-- INDENTATION -->
+<p>Find file containing string &rsquo;printf&rsquo; in
+/usr/include.</p>
+<!-- INDENTATION -->
+<pre> $ zargs /usr/include/**/*.h &minus;&minus; grep printf /dev/null
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ find /usr/include -name \*.h &minus;exec grep printf /dev/null {} ;
+</pre>
+<!-- INDENTATION -->
+<p>Create a directory structure based on an existing
+one.</p>
+<!-- INDENTATION -->
+<pre> $ dirs=(**/*(/))
+ $ cd &minus;&minus; $dest_root
+ $ mkdir &minus;p &minus;&minus; $dirs
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ src=/usr/local
+ $ dst=/opt
+ $ cd &quot;$src&quot;
+ $ find . -type d | cpio -pdmv &quot;$dst&quot;
+</pre>
+<!-- INDENTATION -->
+<p>Uncompress file and read it</p>
+<!-- INDENTATION -->
+<pre>less &lt;(gzip -cd foo.gz)
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ gzip -cd foo.gz &amp;&amp; less foo
+</pre>
+<!-- INDENTATION -->
+<p>Print two files and sort them</p>
+<!-- INDENTATION -->
+<pre> $ sort &lt;f{oo,ubar}
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ cat foo fubar | sort
+</pre>
+<!-- INDENTATION -->
+<p>Find files up from current directory and change
+permissions to &rsquo;700&rsquo;.</p>
+<!-- INDENTATION -->
+<pre> $ chmod 700 **/*(.)
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ find . &minus;type f &minus;exec chmod 700 {} \;
+</pre>
+<!-- INDENTATION -->
+<p>List details of the executable &rsquo;foobar&rsquo;.</p>
+<!-- INDENTATION -->
+<pre> $ ls -l =foobar
+</pre>
+<!-- INDENTATION -->
+<p>A solution without zsh could look like:</p>
+<!-- INDENTATION -->
+<pre> $ ls -l &lsquo;which foobar&lsquo;
+</pre>
+<!-- INDENTATION -->
+<p>Small examples</p>
+<!-- INDENTATION -->
+<pre>&acute;cd old new&rsquo; replaces &rsquo;old&rsquo; with &rsquo;new&rsquo; in directory-names.
+&acute;which -a cmd&rsquo; lists all occurences of &rsquo;cmd&rsquo; in $PATH.
+</pre>
+</td>
+</table>
+<a name="OPTIONS"></a>
+<h2>OPTIONS</h2>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Navigation options</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>auto_cd (allow one to change to a directory by entering
+it as a command). auto_pushd (automatically append dirs to
+the push/pop list) pushd_ignore_dups (and don&rsquo;t
+duplicate them)</p>
+</td>
+</table>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="3" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="5%">
+
+<p>Misc</p>
+</td>
+<td width="82%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>no_hup (don&rsquo;t send HUP signal to background jobs
+when exiting ZSH) print_exit_value (show a message with the
+exit code when a command returns with a non-zero exit
+code)</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>History options</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>hist_verify (let the user edit the command line after
+history expansion (e.g. !ls) instead of immediately running
+it)</p>
+<!-- INDENTATION -->
+<p>Use the same history file for all sessions :</p>
+<!-- INDENTATION -->
+<pre> setopt SHARE_HISTORY
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Privacy / Security</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>no_clobber (or set -C; prevent &rsquo;&gt;&rsquo;
+redirection from truncating the given file if it already
+exists)</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Spelling correction</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>correct (automatically correct the spelling of commands)
+correct_all (automatically correct the spelling of each word
+on the command line) dvorak (dvorak layout)</p>
+</td>
+</table>
+<a name="LINKS"></a>
+<h2>LINKS</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The Z shell Homepage</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://www.zsh.org/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The Z shell FAQ</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://zsh.sunsite.dk/FAQ/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The Z shell wiki</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://www.zshwiki.org/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Mailinglistarchive</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://www.zsh.org/mla/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The Z shell reference-card (included in the
+zsh-lovers</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>debian-package)
+<b>http://zsh.sunsite.dk/Refcard/refcard.ps.gz</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Adam Spier&rsquo;s UNIX shells page</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://adamspiers.org/computing/shells/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The Single UNIX (R) Specification, Version 2 - Shell
+Command Language Index</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+
+<p><b>http://www.opengroup.org/onlinepubs/007908799/xcu/shellix.html</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Zzappers Best of ZSH Tips</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://www.rayninfo.co.uk/tips/zshtips.html</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The ZSH area on dotfiles.com</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://www.dotfiles.com/index.php3?app_id=4</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Zsh Webpage by Christian Schneider</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://strcat.neessen.net/zsh/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>The zsh-lovers webpage</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>http://grml.org/zsh/</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>IRC channel</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>#zsh at irc.freenode.org</b></p>
+</td>
+</table>
+<a name="AUTHORS"></a>
+<h2>AUTHORS</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>This manpage was written by Michael Prokop, Christian
+&acute;strcat&rsquo; Schneider and Matthias Kopfermann. But
+many ideas have been taken from zsh-geeks e.g. from the
+zsh-mailinglists (zsh-users and zsh-workers), google,
+newsgroups and the zsh-Wiki. Thanks for your cool and
+incredible tips. We learned much from you!</p>
+<!-- INDENTATION -->
+<p>In alphabetic order:</p>
+<!-- INDENTATION -->
+<pre>Andrew &rsquo;zefram&rsquo; Main  - http://www.fysh.org/~zefram/
+Barton E. Schaefer    - http://www.well.com/user/barts/
+Matthias Kopfermann   - http://www.infodrom.north.de/~matthi/
+Oliver Kiddle         - http://people.freenet.de/opk/
+Paul Falstad          - http://www.falstad.com/
+Peter Stephenson      - http://python.swan.ac.uk/~pypeters/
+Richard Coleman
+St&eacute;phane Chazelas     - http://stephane.chazelas.free.fr/
+Sven Guckes           - http://www.guckes.net/
+Sven Wischnowsky      - http://w9y.de/zsh/zshrc
+</pre>
+</td>
+</table>
+<a name="SEE ALSO"></a>
+<h2>SEE ALSO</h2>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Manpages of zsh:</p>
+<!-- INDENTATION -->
+<pre>zsh          Zsh overview (this section)
+zshmisc      Anything not fitting into the other sections
+zshexpn      Zsh command and parameter expansion
+zshparam     Zsh parameters
+zshoptions   Zsh options
+zshbuiltins  Zsh built-in functions
+zshzle       Zsh command line editing
+zshcompwid   Zsh completion widgets
+zshcompsys   Zsh completion system
+zshcompctl   Zsh completion control
+zshmodules   Zsh loadable modules
+zshzftpsys   Zsh built-in FTP client
+zshall       Meta-man page containing all of the above
+
+Note: especially &rsquo;man zshcontrib&rsquo; covers very useful topics!
+
+Book:
+From Bash to Z Shell
+by Oliver  Kiddle, Jerry Peck and Peter Stephenson
+ISBN: 1590593766
+
+Also take a look at the section
+<b>LINKS
+</b>in this manpage.
+
+</pre>
+</td>
+</table>
+<a name="BUGS"></a>
+<h2>BUGS</h2>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Probably. This manpage might be never complete. So please
+report bugs, feedback and suggestions to
+&lt;zsh-lovers@michael-prokop.at&gt;. Thank you!</p>
+</td>
+</table>
+<a name="COPYRIGHT"></a>
+<h2>COPYRIGHT</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>Copyright &copy; 2005 Michael Prokop, Christian Schneider
+and Matthias Kopfermann.</p>
+</td>
+</table>
+<hr>
+</body>
+</html>
diff --git a/zsh-lovers.pdf b/zsh-lovers.pdf
new file mode 100644 (file)
index 0000000..8bf0014
Binary files /dev/null and b/zsh-lovers.pdf differ
diff --git a/zsh-lovers.ps b/zsh-lovers.ps
new file mode 100644 (file)
index 0000000..b4ff4be
--- /dev/null
@@ -0,0 +1,2253 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Sun Jun 19 12:12:11 2005
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 29
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
+/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<31>535 768 Q 0 Cg EP
+%%Page: 1 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E/F1
+10.95/Times-Bold@0 SF -.219<4e41>72 84 S<4d45>.219 E F0<7a7368ad6c6f>108
+96 Q -.15<7665>-.15 G<727320ad20746970732c20747269636b7320616e642065>.15
+E<78616d706c657320666f7220746865205a207368656c6c>-.15 E F1 -.548<4f56>72
+112.8 S<4552>.548 E<56494557>-.602 E F0<5768656e65>108 124.8 Q -.15
+<7665>-.25 G 3.828<7277>.15 G 3.828<656c>-3.828 G 1.327
+<6f6f6b20617420746865207a7368206d616e75616c2077652077>-3.828 F 1.327
+<6f6e646572207768>-.1 F 3.827<7974>-.05 G 1.327
+<6865726520617265206e6f2065>-3.827 F 1.327
+<78616d706c657320666f722074686f73652073696d706c79207468696e677320696e>
+-.15 F 1.389
+<287368656c6c29206c6966652e20546865207a736820636f6e7461696e73206d616e>
+108 136.8 R 3.889<7966>-.15 G 1.389<656174757265732c2062>-3.889 F 1.389
+<75742074686572652077>-.2 F 1.39
+<6173206e6f206d616e70616765207769746820736f6d652065>-.1 F 1.39
+<78616d706c657320286c696b>-.15 F 3.89<6570>-.1 G<726f632d>-3.89 E
+<6d61696c65>108 148.8 Q 2.5<78283529292e205468617427>-.15 F 2.5<7377>
+-.55 G .1 -.05<68792077>-2.5 H 2.5<6577>.05 G
+<726f74652074686973206d616e706167652e>-2.5 E 1.248<4d6f7374206f66207468
+6520747269636b7320616e64206f6e656c696e657220636f6d652066726f6d2074686520
+6d61696c696e676c69737473207a7368ad75736572732c207a7368ad77>108 165.6 R
+<6f726b>-.1 E 1.247<6572732c20676f6f676c652c206e65>-.1 F
+<777367726f757073>-.25 E<616e642066726f6d206f757273656c662e>108 177.6 Q
+<5365652073656374696f6e>5 E/F2 10/Times-Bold@0 SF<4c494e4b53>2.5 E F0
+<666f722064657461696c732e>2.5 E F2<4e6f74653a>108 194.4 Q F0 .213
+<54686973206d616e7061676520287a73682d6c6f>2.713 F -.15<7665>-.15 G .213
+<727328312929206973>.15 F F2<6e6f74>2.714 E F0 .214<616e206f66>2.714 F
+.214<8c63616c2070617274206f6620746865205a207368656c6c2120497427>-.25 F
+2.714<736a>-.55 G .214
+<7573742061206a75737420666f722066756e20ad206d616e70616765203b29>-2.714 F
+-.15<466f>108 206.4 S 2.5<7263>.15 G<6f6d6d656e74732c2062>-2.5 E
+<75677265706f72747320616e6420666565646261636b2074616b>-.2 E 2.5<656171>
+-.1 G<7569636b206c6f6f6b206174207468652073656374696f6e>-2.5 E F2 -.1
+<4255>2.5 G<47532e>.1 E F1<4558414d504c4553>72 235.2 Q F2
+<5245444952454354494f4e>87 247.2 Q F0<53656520616c736f>108 259.2 Q/F3 10
+/Times-Italic@0 SF<6d616e2031207a73686d697363>2.5 E F0<2e>A
+<6e756c6c20636f6d6d616e642073686f727468616e64733a>108 283.2 Q
+<223c208c6c6522206973206c696b>110.5 295.2 Q 2.5<6522>-.1 G
+<24524541444e554c4c434d44203c8c6c6522>-2.5 E
+<223e208c6c6522206973206c696b>110.5 307.2 Q 2.5<6522>-.1 G
+<636174203e8c6c6522>-2.5 E<223e3e208c6c6522206973206c696b>110.5 319.2 Q
+2.5<6522>-.1 G<636174203e3e8c6c6522>-2.5 E<417070656e64206065>108 355.2
+Q<7869742031272061742074686520656e64206f6620616c6c202a2e736820ad208c6c65
+733a>-.15 E 2.5<2465>110.5 367.2 S<63686f202265>-2.5 E
+<786974203122203e3e202a2e7368>-.15 E<417070656e64202f6574632f7365727669
+6365732061742074686520656e64206f66208c6c652060666f6f2720616e642060626172
+273a>108 403.2 Q 2.5<2463>110.5 415.2 S
+<6174202f6574632f7365727669636573203e3e20666f6f203e3e20626172>-2.5 E
+<50697065205354444552523a>108 451.2 Q 2.5<2465>110.5 463.2 S
+<63686f20416e206572726f72203e263220323e2631207c20736564202d652027>-2.5 E
+<732f412f492f27>-.55 E F2<4d554c>87 492 Q
+<5449504c4520492f4f205245444952454354494f4e>-.92 E F0<5265717569726573>
+108 504 Q F3<7365746f7074206d756c74696f73>2.5 E F0 2.5<2153>C
+<6f6d652065>-2.5 E<78616d706c65733a>-.15 E
+<5072696e74206f7574707574206f662027>108 540 Q
+<6c732720696e746f208c6c65732027666f6f2720616e642027626172273a>-.1 E 2.5
+<246c>110.5 552 S 2.5<733e>-2.5 G<666f6f203e626172>-2.5 E<53656e64207374
+616e64617264206f7574707574206f66206f6e652070726f6365737320746f207374616e
+6461726420696e707574206f66207365>108 588 Q -.15<7665>-.25 G
+<72616c2070726f63657373657320696e2074686520706970656c696e653a>.15 E 2.5
+<2470>110.5 600 S
+<726f6365737331203e203e2870726f636573733129203e203e2870726f636573733229>
+-2.5 E<5265646972656374696f6e20746f208c6c652061732077656c6c206173207365
+6e64206f6e20746f20706970653a>108 636 Q 2.5<246d>110.5 648 S<616b>-2.5 E
+2.5<6569>-.1 G<6e7374616c6c203e202f746d702f6c6f678c6c65207c206772657020
+2d69206572726f72>-2.5 E
+<52656469726563742073746465727220746f206120636f6d6d616e64206c696b>108
+684 Q 2.5<6578>-.1 G<6c65737320776974686f7574207265646972656374696e6720
+7374646f75742061732077656c6c3a>-2.5 E 2.5<2466>110.5 696 S
+<6f6f20323e3e28786c65737329>-2.5 E<2e2e2e2062>108 708 Q
+<757420746869732065>-.2 E -.15<7865>-.15 G
+<63757465732074686520636f6d6d616e64206173796e6368726f6e6f75736c79>.15 E
+2.5<2e54>-.65 G 2.5<6f64>-3.3 G 2.5<6f69>-2.5 G 2.5<7473>-2.5 G
+<796e6368726f6e6f75736c793a>-2.5 E 2.5<247b7b66>110.5 720 S
+<6f6f20313e2633207d20323e2631207c20786c657373207d20333e2631>-2.5 E
+<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392031>174.84 F 0
+Cg EP
+%%Page: 2 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<526564697265637420737464657272207477>108 84 Q 2.5<6f74>-.1 G
+<696d65733a>-2.5 E 2.5<2473>110.5 96 S<65746f7074206d756c74696f73203b20
+70726f6772616d20323e208c6c6532203e208c6c653120323e2631>-2.5 E
+<4d6f72652066756e2077697468207374646572723a>108 132 Q 2.5<242e>110.5 144
+S<2f6d792d7363726970742e736820323e203e2867726570202d76206765656b203e6572
+726f72>-2.5 E
+<2e6c6f6729207c2070726f636573732d6f7574707574203e206f75747075742e6c6f67>
+-.55 E<6563686f20225468617473205354444f555422203e3e287365642027>115.5
+156 Q<732f7374646f75742f616e6f746865722065>-.55 E
+<78616d706c652f27203e20666f6f62617229>-.15 E/F1 10/Times-Bold@0 SF
+<4d4f4449464945525320555341>87 184.8 Q<4745>-.55 E F0 .812
+<4d6f64698c65727320617265206120706f>108 196.8 R .811<77657266756c206d65
+6368616e69736d2074686174206c65747320796f75206d6f646966792074686520726573
+756c74732072657475726e656420627920706172616d65746572>-.25 F 3.311<2c8c>
+-.4 G .811<6c656e616d6520616e64>-3.311 F<686973746f72792065>108 208.8 Q
+<7870616e73696f6e2e20536565207a736865>-.15 E
+<78706e28312920666f722064657461696c732e>-.15 E<52656d6f>108 232.8 Q .3
+-.15<766520612074>-.15 H
+<7261696c696e6720706174686e616d6520636f6d706f6e656e742c206c6561>.15 E
+<76696e672074686520686561642e20546869732077>-.2 E<6f726b73206c696b>-.1 E
+2.5<6560>-.1 G<6469726e616d65273a>-2.5 E 2.5<2465>113 244.8 S
+<63686f203d6c73283a6829>-2.5 E<2f62696e>113 256.8 Q<52656d6f>108 280.8 Q
+.3 -.15<76652061>-.15 H
+<6c6c206c656164696e6720706174686e616d6520636f6d706f6e656e74732c206c6561>
+.15 E<76696e6720746865207461696c2e20546869732077>-.2 E<6f726b73206c696b>
+-.1 E 2.5<6560>-.1 G<626173656e616d65272e>-2.5 E 2.5<2465>113 292.8 S
+<63686f203d6c73283a7429>-2.5 E<6c73>113 304.8 Q<52656d6f>108 328.8 Q .3
+-.15<76652061208c>-.15 H<6c656e616d652065>.15 E
+<7874656e73696f6e206f662074686520666f726d20602e787878272c206c6561>-.15 E
+<76696e672074686520726f6f74206e616d652e>-.2 E 2.5<2465>113 340.8 S
+<63686f2024505744>-2.5 E<2f7573722f7372632f6c696e7578>113 352.8 Q 2.5
+<2465>113 364.8 S<63686f20245057443a74>-2.5 E<6c696e7578>113 376.8 Q
+<52656d6f>108 400.8 Q .3 -.15<76652061>-.15 H<6c6c2062>.15 E
+<7574207468652065>-.2 E<7874656e73696f6e2e>-.15 E 2.5<2466>113 412.8 S
+<6f6f3d32332e3432>-2.5 E 2.5<2465>113 424.8 S<63686f2024666f6f>-2.5 E
+<32332e3432>113 436.8 Q 2.5<2465>113 448.8 S<63686f2024666f6f3a65>-2.5 E
+<3432>113 460.8 Q<5072696e7420746865206e65>108 484.8 Q 2.5<7763>-.25 G
+<6f6d6d616e642062>-2.5 E<757420646f206e6f742065>-.2 E -.15<7865>-.15 G
+<637574652069742e204f6e6c792077>.15 E
+<6f726b73207769746820686973746f72792065>-.1 E<7870616e73696f6e2e>-.15 E
+2.5<2465>113 496.8 S<63686f203d6c73283a6829>-2.5 E<2f62696e>113 508.8 Q
+2.5<2421>113 520.8 S<6563686f3a70>-2.5 E 2.5<2465>113 532.8 S
+<63686f203d6c73283a6829>-2.5 E
+<51756f7465207468652073756273746974757465642077>108 556.8 Q<6f7264732c20
+6573636170696e67206675727468657220737562737469747574696f6e732e>-.1 E 2.5
+<2462>113 568.8 S<61723d22323327343222>-2.5 E 2.5<2465>113 580.8 S
+<63686f2024626172>-2.5 E<3233273432>113 592.8 Q 2.5<2465>113 604.8 S
+<63686f20246261723a71>-2.5 E<3233b43432>113 616.8 Q<436f6e>108 640.8 Q
+-.15<7665>-.4 G<7274207468652077>.15 E<6f72647320746f20616c6c206c6f>-.1
+E<776572636173652e>-.25 E 2.5<2462>113 652.8 S<61723d464f4f42>-2.5 E
+<4152>-.35 E 2.5<2465>113 664.8 S<63686f2024626172>-2.5 E<464f4f42>113
+676.8 Q<4152>-.35 E 2.5<2465>113 688.8 S<63686f20246261723a6c>-2.5 E
+<666f6f626172>113 700.8 Q<436f6e>108 724.8 Q -.15<7665>-.4 G
+<7274207468652077>.15 E<6f72647320746f20616c6c207570706572636173652e>-.1
+E<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392032>174.84 F 0
+Cg EP
+%%Page: 3 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<2462>113 84 S<61723d666f6f626172>-2.5 E 2.5<2465>113 96 S
+<63686f2024626172>-2.5 E<666f6f626172>113 108 Q 2.5<2465>113 120 S
+<63686f20246261723a75>-2.5 E<464f4f42>113 132 Q<4152>-.35 E -1.11<5661>
+108 156 S .844<726961626c65732063616e206265206d6f64698c6564206279206d6f
+64698c6572732c20746f6f2e2054686174206d616b>1.11 F .844
+<6573206d6f64698c636174696f6e206f662076>-.1 F .845
+<61726961626c657320706f737369626c6520776974686f7574207573696e67>-.25 F
+<616e>108 168 Q 2.5<7965>-.15 G<787465726e616c2070726f6772616d2e>-2.65 E
+<73656e74656e63653d226265>113 180 Q
+<67696e6e696e6720616e6420736f6d652077>-.15 E
+<6f726473206f6620612073656e74656e6365207769746820656e642e22>-.1 E<4e6f>
+108 204 Q 2.5<776c>-.25 G
+<6574732073706c697420746869732073656e74656e63652d76>-2.5 E<617220627920
+7573696e67207468652028737c207c29206d6f64698c6572207768696368206d6f64698c
+65732077>-.25 E<6f7264732062792073706c697474696e67206174202220223a>-.1 E
+-.1<776f>113 216 S<7264733d247b28737c207c2973656e74656e63657d>.1 E
+<7072696e74202477>113 228 Q<6f7264735b315d202d3e20226265>-.1 E
+<67696e6e696e6722>-.15 E<7072696e74202477>113 240 Q
+<6f7264735b2d315d202d3e22656e642e22>-.1 E<4e6f>108 264 Q 2.5<7769>-.25 G
+2.5<666f>-2.5 G<6e652077>-2.5 E<616e747320746f206861>-.1 E .3 -.15
+<76652074>-.2 H<6865206265>.15 E<67696e6e696e67206f6620612073656e74656e
+636520776974682061204361706974616c2c20697427>-.15 E 2.5<7361>-.55 G 2.5
+<7365>-2.5 G<61737920617320646f696e673a>-2.5 E
+<7072696e742022247b28432977>113 276 Q<6f7264735b315d7d202477>-.1 E
+<6f7264735b322c2d315d22>-.1 E .654
+<7768696368206361706974616c697a657320746865208c7273742077>108 300 R .654
+<6f7264206f6620746865206c6973742077>-.1 F .654<6f72647320616e6420746865
+6e2061646473207769746820222022207365636f6e6420746f206c6173742077>-.1 F
+.653<6f7264206f662077>-.1 F .653<6f7264732e20497427>-.1 F<73>-.55 E
+<706f737369626c6520746f206a6f696e2074686573652077>108 312 Q
+<6f726473206173206120636f6c6f6e20736570617261746564207363616c6172>-.1 E
+<2e>-.55 E<636f6c6f6e6c6973743d247b286a7c2c7c2977>113 324 Q
+<6f7264737d202320286a7c2c7c29206a6f696e73207769746820222c222e>-.1 E -1.1
+<596f>108 348 S 2.5<7563>1.1 G<616e20736565207468617420697427>-2.5 E 2.5
+<736173>-.55 G<63616c61722062792074657374696e672077697468202874293a>-2.5
+E<7072696e7420247b287429636f6c6f6e6c6973747d207072696e747320227363616c61
+72222e>113 360 Q<7072696e7420247b28742977>113 372 Q
+<6f7264737d207072696e747320226172726179222e>-.1 E<497427>108 396 Q 2.5
+<7370>-.55 G<6f737369626c6520746f20736f7274206172726179732077697468206f
+20616e64204f3a>-2.5 E<7072696e7420247b286f2977>113 408 Q
+<6f7264737d2023206c69737473207468652077>-.1 E
+<6f7264732d617272617920736f727465642028666f7277>-.1 E<6172647329>-.1 E
+<7072696e7420247b284f2977>113 420 Q
+<6f7264737d2023206c69737473207468652077>-.1 E
+<6f7264732d617272617920736f7274656420286261636b77>-.1 E<6172647329>-.1 E
+/F1 10/Times-Bold@0 SF<434f4d504c45544954494f4e>87 460.8 Q F0 .006
+<53656520616c736f>108 472.8 R/F2 10/Times-Italic@0 SF .006<6d616e203120
+7a7368636f6d7063746c207a7368636f6d70737973207a7368636f6d70776964>2.506 F
+F0 5.007<2e7a>C .007<7368636f6d7063746c20697320746865206f6c64207374796c
+65206f66207a73682070726f6772616d6d61626c6520636f6d2d>-5.007 F
+<706c6574696f6e2c207a7368636f6d7073797320697320746865206e65>108 484.8 Q
+2.5<7763>-.25 G<6f6d706c6574696f6e2073797374656d2c207a7368636f6d70776964
+2061726520746865207a736820636f6d706c6574696f6e20776964676574732e>-2.5 E
+.153<536f6d652066756e6374696f6e732c206c696b>108 508.8 R 2.653<655f>-.1 G
+.153<61707420616e64205f64706b672c206172652076>-2.653 F .153
+<65727920736c6f>-.15 F 1.453 -.65<772e2059>-.25 H .153<6f752063616e2075
+7365206120636163686520696e206f7264657220746f2070726f787920746865206c6973
+74206f6620726573756c7473>-.45 F<286c696b>108 520.8 Q 2.5<6574>-.1 G
+<6865206c697374206f662061>-2.5 E -.25<7661>-.2 G<696c61626c652064656269
+616e207061636b61676573292055736520612063616368653a>.25 E
+<7a7374796c6520273a636f6d706c6574696f6e3a2a27207573652d6361636865206f6e>
+110.5 532.8 Q<7a7374796c6520273a636f6d706c6574696f6e3a2a272063616368652d
+70617468207e2f2e7a73682f6361636865>110.5 544.8 Q<507265>108 568.8 Q -.15
+<7665>-.25 G<6e7420435653208c6c65732f6469726563746f726965732066726f6d20
+6265696e6720636f6d706c65746564203a>.15 E<7a7374796c6520273a636f6d706c65
+74696f6e3a2a3a28616c6c2d7c298c6c6573272069676e6f7265642d7061747465726e73
+2027287c2a2f2943565327>110.5 580.8 Q<7a7374796c6520273a636f6d706c657469
+6f6e3a2a3a63643a2a272069676e6f7265642d7061747465726e732027282a2f29234356
+5327>110.5 592.8 Q<46757a7a79206d61746368696e67206f6620636f6d706c657469
+6f6e7320666f72207768656e20796f75206d697374797065207468656d3a>108 628.8 Q
+<7a7374796c6520273a636f6d706c6574696f6e3a2a2720636f6d706c65746572205f63
+6f6d706c657465205f6d61746368205f617070726f78696d617465>110.5 640.8 Q<7a
+7374796c6520273a636f6d706c6574696f6e3a2a3a6d617463683a2a27206f726967696e
+616c206f6e6c79>110.5 652.8 Q<7a7374796c6520273a636f6d706c6574696f6e3a2a
+3a617070726f78696d6174653a2a27206d61782d6572726f72732031206e756d65726963>
+110.5 664.8 Q 1.122<416e6420696620796f752077>108 700.8 R 1.122
+<616e7420746865206e756d626572206f66206572726f727320616c6c6f>-.1 F 1.122<
+776564206279205f617070726f78696d61746520746f20696e6372656173652077697468
+20746865206c656e677468206f66207768617420796f75>-.25 F<6861>108 712.8 Q
+.3 -.15<76652074>-.2 H<7970656420736f2066>.15 E<61723a>-.1 E<7a7374796c
+65202d6520273a636f6d706c6574696f6e3a2a3a617070726f78696d6174653a2a27206d
+61782d6572726f72732027>110.5 724.8 Q<7265706c793d2820242828202824235052
+454649582b2423535546464958292f33202929206e756d65726963202927>-.5 E
+<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392033>174.84 F 0
+Cg EP
+%%Page: 4 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E<49676e
+6f726520636f6d706c6574696f6e2066756e6374696f6e7320666f7220636f6d6d616e64
+7320796f7520646f6e27>108 84 Q 2.5<7468>-.18 G -2.25 -.2<61762065>-2.5 H
+<3a>.2 E<7a7374796c6520273a636f6d706c6574696f6e3a2a3a66756e6374696f6e73
+272069676e6f7265642d7061747465726e7320275f2a27>110.5 96 Q -.4<5769>108
+132 S<74682068656c7065722066756e6374696f6e73206c696b>.4 E<653a>-.1 E<78
+6476692829207b20636f6d6d616e64207864766920247b2a3a2d2a2e647669286f6d5b31
+5d297d207d>110.5 144 Q 1.144<796f752063616e2061>108 168 R -.2<766f>-.2 G
+1.144<6964206861>.2 F 1.144
+<76696e6720746f20636f6d706c65746520617420616c6c20696e206d616e>-.2 F
+3.643<7963>-.15 G 1.143<617365732c2062>-3.643 F 1.143
+<757420696620796f7520646f2c20796f75206d696768742077>-.2 F 1.143
+<616e7420746f2066>-.1 F 1.143<616c6c20696e746f206d656e75>-.1 F
+<73656c656374696f6e20696d6d6564696174656c7920616e6420746f206861>108 180
+Q .3 -.15<76652074>-.2 H<68652077>.15 E
+<6f72647320736f727465642062792074696d653a>-.1 E<7a7374796c6520273a636f6d
+706c6574696f6e3a2a3a2a3a786476693a2a27206d656e75207965732073656c656374>
+110.5 192 Q<7a7374796c6520273a636f6d706c6574696f6e3a2a3a2a3a786476693a2a
+27208c6c652d736f72742074696d65>110.5 204 Q<436f6d706c6574696e672070726f
+63657373204944732077697468206d656e752073656c656374696f6e3a>108 240 Q<7a
+7374796c6520273a636f6d706c6574696f6e3a2a3a2a3a6b696c6c3a2a27206d656e7520
+7965732073656c656374>110.5 252 Q
+<7a7374796c6520273a636f6d706c6574696f6e3a2a3a6b696c6c3a2a27>110.5 264 Q
+<666f7263652d6c69737420616c>7.5 E -.1<7761>-.1 G<7973>.1 E<496620796f75
+20656e64207570207573696e672061206469726563746f7279206173206172>108 300 Q
+<67756d656e742c20746869732077696c6c2072656d6f>-.18 E .3 -.15<76652074>
+-.15 H
+<686520747261696c696e6720736c617368202875736566756c6c20696e206c6e29>.15
+E<7a7374796c6520273a636f6d706c6574696f6e3a2a272073717565657a652d736c6173
+6865732074727565>110.5 312 Q<63642077696c6c206e65>108 348 Q -.15<7665>
+-.25 G 2.5<7273>.15 G<656c6563742074686520706172656e74206469726563746f72
+792028652e672e3a206364202e2e2f3c54>-2.5 E<41423e293a>-.93 E<7a7374796c65
+20273a636f6d706c6574696f6e3a2a3a63643a2a272069676e6f72652d706172656e7473
+20706172656e7420707764>110.5 360 Q/F1 10/Times-Bold@0 SF<4144>87 388.8 Q
+-1.35<5641>-.4 G<4e43454420474c4f4242494e47>1.35 E F0<536565>108 400.8 Q
+/F2 10/Times-Italic@0 SF<6d616e207a736865>2.5 E
+<78706e207c206c657373202d702027476c6f62205175616c698c6572>-.2 E<7327>-.1
+E F0<4c697374208c6c652027666f6f62617227207669612072656375727369>108
+436.8 Q 2.5<7673>-.25 G<656172636820696e206469726563746f726965733a>-2.5
+E 2.5<246c>110.5 448.8 S 2.5<732a>-2.5 G<2a2f666f6f626172>-2.5 E<4c6973
+74208c6c6573208c6c6532302c208c6c6533302c208c6c653130302c206574633a>108
+484.8 Q 2.5<246c>110.5 496.8 S 2.5<738c>-2.5 G<6c653c32302d3e>-2.5 E
+<4c697374208c6c6573207769746820737566>108 532.8 Q
+<8c78206320616e642070726f2028652e672e20666f6f2e632c20626172>-.25 E
+<2e70726f293a>-.55 E 2.5<246c>110.5 544.8 S 2.5<732a>-2.5 G
+<2e28637c70726f29>-2.5 E<4c697374208c6c6573207768696368206172652077>108
+580.8 Q<6f72642d7265616461626c653a>-.1 E 2.5<246c>110.5 592.8 S 2.5
+<732a>-2.5 G<285229>-2.5 E<4c69737420616c6c202e632d8c6c65732065>108
+628.8 Q<78636570742027>-.15 E<6c65>-.1 E<782e63273a>-.15 E 2.5<246c>
+110.5 640.8 S 2.5<732a>-2.5 G<2e637e6c65>-2.5 E<782e63>-.15 E<4c69737420
+616c6c2060524541444d4527202d208c6c657320636173652d696e73656e73697469>108
+676.8 Q .3 -.15<76652077>-.25 H<697468206d61782e206f6e65207479706f202865
+2e672e205241444d452c205245454d452c20524145444d45293a>.15 E 2.5<246c>
+110.5 688.8 S 2.5<7328>-2.5 G<23613129524541444d45>-2.5 E .097
+<4c697374208c6c6573206e616d656420524541444d452062>108 724.8 R .097<7574
+20616363657074206f6e65207370656c6c696e67206572726f7220696e636c7564696e67
+20636173652d696e73656e73697469>-.2 F .397 -.15<76652028>-.25 H .097
+<652e672e205241444d452c205245454d452c>.15 F<7a736820342e322e34>72 768 Q
+203.17<323030352d30352d30392034>174.84 F 0 Cg EP
+%%Page: 5 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<524145444d45293a>108 84 Q 2.5<246c>110.5 96 S 2.5<7328>-2.5 G
+<2369613129524541444d45>-2.5 E<4c6973742065>108 132 Q -.15<7865>-.15 G<
+63757461626c65208c6c65732c206469726563746f7269657320616e642073796d6c696e
+6b733a>.15 E 2.5<246c>110.5 144 S 2.5<732a>-2.5 G<282a4029>-2.5 E
+<4c6973742064616e676c696e672073796d6c696e6b733a>108 180 Q 2.5<246c>110.5
+192 S 2.5<732a>-2.5 G<2a2f2a282d4029>-2.5 E<4c69737420616c6c207a65726f2d
+6c656e6774682d8c6c657320776869636820617265206e6f742067726f75702d206f7220
+77>108 228 Q<6f726c642d7772697461626c653a>-.1 E 2.5<246c>110.5 240 S 2.5
+<732a>-2.5 G<284c30662e676f2d77>-2.5 E<2e29>-.65 E<4c69737420616c6c202e
+632d8c6c657320666f7220776869636820746865726520646f65736e27>108 300 Q 2.5
+<7465>-.18 G<786973742061202e6f208c6c653a>-2.65 E 2.5<2463>110.5 312 S
+<3d282a2e6329206f3d282a2e6f284e29292065>-2.5 E -.25<7661>-.25 G 2.5
+<6c27>.25 G<6c7320247b247b633a2328247b7e247b286a3a7c3a29247b6f3a727d7d7d
+292e637d3a3f646f6e657d27>-2.6 E<46696e642028616e64207072696e742920616c6c
+2073796d626f6c6963206c696e6b7320776974686f7574206120746172>108 348 Q
+<6765742077697468696e207468652063757272656e7420646972747265653a>-.18 E
+2.5<248c>110.5 360 S<6c65202a2a2f2a28444029207c2066677265702062726f6b>
+-2.5 E<656e>-.1 E 2.5<2466>110.5 372 S<6f72206920696e202a2a2f2a28444029
+3b205b5b202d66202469207c7c202d64202469205d5d207c7c206563686f202469>-2.5
+E 2.5<2465>110.5 384 S<63686f202a2a2f2a28402d5e2e2f3d257029>-2.5 E 2.5
+<2470>110.5 396 S<72696e74202d6c202a2a2f2a282d4029>-2.5 E<52656e616d6520
+616c6c204d50332d8c6c65732066726f6d206e616d652077697468207370616365732e6d
+703320746f204e616d652057>108 432 Q<697468205370616365732e6d70333a>-.4 E
+2.5<2466>110.5 444 S<6f72206920696e202a2e6d70333b20646f>-2.5 E
+<6d7620246920247b247b284329697d3a732f4d70332f6d70332f7d>133 456 Q
+<646f6e65>115.5 468 Q .562<52656e616d6520616c6c205044462d8c6c6573206672
+6f6d206e616d652e6d703320746f204e616d652e6d703320286c6f>108 504 R .562<77
+65726361736520746f20757070657263617365206f66208c727374206c65747465722920
+776974686f757420746f7563682d>-.25 F
+<696e67207468652072657374206f6620746865208c6c656e616d653a>108 516 Q 2.5
+<247a>110.5 528 S<6d762027285b612d7a5d29282a292e706466>-2.5 E 2.5<2727>
+.55 G -1.95<247b284329317d24322e7064662027>-2.5 F<537562737469747574696f
+6e7320696e20737472696e67732063616e20626520646f6e6520627920737472696e672d
+696e6465>108 564 Q -.15<7865>-.15 G<733a>.15 E 2.5<2461>110.5 576 S
+<3d22646f682e223b615b315d3d27>-2.5 E
+<64273b615b2d315d3d272e2028426172742053696d70736f6e2927>-.5 E 2.5<2465>
+110.5 588 S<63686f202461>-2.5 E<646f682e2028426172742053696d70736f6e29>
+110.5 600 Q<4173736f6369617469>108 636 Q .3 -.15<76652061>-.25 H
+<72726179733a>.15 E 2.5<2474>110.5 648 S<797065736574202d41206173735f61
+727261793b206173735f61727261793d286f6e652031207477>-2.5 E 2.5<6f3274>-.1
+G<68726565203320666f7572203429>-2.5 E 2.5<2470>110.5 660 S
+<72696e7420247b286b296173735f61727261797d2023207072696e7473206b>-2.5 E
+-.15<6579>-.1 G<73>.15 E<6f6e6520666f7572207477>110.5 672 Q 2.5<6f74>-.1
+G<68726565>-2.5 E 2.5<2470>110.5 684 S
+<72696e7420247b2876296173735f61727261797d2023207072696e74732076>-2.5 E
+<616c756573>-.25 E 2.5<31343233>110.5 696 S 2.5<2470>110.5 708 S
+<72696e7420246173735f61727261795b6f6e655d>-2.5 E<31>110.5 720 Q
+<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392035>174.84 F 0
+Cg EP
+%%Page: 6 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E<457874
+72616374207061727473206f66206120737472696e672e205072696e74208c7273742077>
+108 84 Q<6f7264206f66206f7574707574206f662027>-.1 E<64617465273a>-.5 E
+2.5<2470>110.5 96 S<72696e7420247b2428206461746520295b315d7d>-2.5 E<4578
+7472616374207061727473206f66206120737472696e672e205072696e742069702d6164
+6472657373206f66206c6f6f706261636b206465>108 132 Q<766963653a>-.25 E 2.5
+<2470>110.5 144 S<72696e7420247b247b2428204c435f414c4c3d43202f7362696e2f
+6966636f6e8c67206c6f20295b365d7d23616464723a7d>-2.5 E<5072696e7420737065
+63698c63206c696e65206f662061208c6c652e20452e672e207072696e74206c696e6520
+35206f66208c6c653a>108 180 Q 2.5<2470>110.5 192 S
+<72696e74202d6c20247b222428203c208c6c652029225b286629355d7d>-2.5 E
+<5072696e74206c696e6520636f6e7461696e696e6720737472696e672027>108 228 Q
+<726f6f7427206f66208c6c65202f6574632f7061737377643a>-.5 E 2.5<2470>110.5
+240 S<72696e7420247b222428203c202f6574632f7061737377642029225b286672292a
+726f6f742a5d7d>-2.5 E<5072696e742077>108 288 Q<6f726473207477>-.1 E 2.5
+<6f74>-.1 G 2.5<6f66>-2.5 G<6f7572206f66206f7574707574206f662027>-2.5 E
+<64617465273a>-.5 E 2.5<2470>110.5 300 S
+<72696e7420247b2428206461746520295b322c345d7d>-2.5 E<557365206f66207477>
+108 348 Q<6f2d64696d656e73696f6e616c20696e64697a65732e205072696e74207469
+6d652076696120646174652062>-.1 E<757420776974686f7574207365636f6e64733a>
+-.2 E 2.5<2470>110.5 360 S
+<72696e7420247b242864617465295b345d5b312c355d7d>-2.5 E
+<43616c63756c617465208d6f6174696e6720706f696e74206e756d626572733a>108
+408 Q 2.5<2470>110.5 420 S
+<72696e74662022252e30663020245b20322e382a3135205d>-2.5 E<436f6e>108 468
+Q -.15<7665>-.4 G
+<727420696d616765732066726f6d20666f6f2e67696620746f20666f6f2e706e673a>
+.15 E 2.5<2466>110.5 480 S<6f72206920696e202a2a2f2a2e6769663b20636f6e>
+-2.5 E -.15<7665>-.4 G<72742024692024693a72>.15 E<2e706e67>-.55 E<446f>
+108 516 Q<776e6c6f6164208c6c657320637265617465642077697468204c6154>-.25
+E<65583248544d4c2028652e672e20746865205a53482d4775696465293a>-.7 E 2.5
+<2466>110.5 528 S<6f72206620696e20687474703a2f2f7a73682e73756e736974652e
+646b2f47756964652f7a736867756964657b2c7b30312e2e30387d7d2e68746d6c3b2064
+6f>-2.5 E<6c796e78202d736f75726365202466203e247b663a747d>120.5 540 Q
+<646f6e65>115.5 552 Q<4d616b>108 588 Q 2.5<6577>-.1 G
+<6974682064706b672061206d6173746572>-2.5 E<2d6c697374206f662065>-.2 E
+-.15<7665>-.25 G
+<72798c6c6520746861742069742068617320696e7374616c6c65643a>.15 E 2.5
+<2464>110.5 600 S<6966>-2.5 E 2.5<663c>-.25 G
+<288c6e64202f207c20736f727429203c28636174202f76>-2.5 E
+<61722f6c69622f64706b672f696e666f2f2a2e6c697374207c20736f727429>-.25 E<
+5265706c616365207468697320636f6c6f72206573636170652d73657175656e6365733a>
+108 636 Q 2.5<2461>110.5 648 S
+<75746f6c6f616420636f6c6f7273203b20636f6c6f7273>-2.5 E 2.5<2470>110.5
+660 S<72696e7420222462675b63>-2.5 E<79616e5d2466675b626c75655d57>-.15 E
+<656c636f6d6520746f206d616e207a73682d6c6f>-.8 E -.15<7665>-.15 G
+<727322203e3e2024545459>.15 E<4765742041534349492076>108 696 Q
+<616c7565206f662061206368617261637465723a>-.25 E 2.5<2463>110.5 708 S
+<6861723d4e203b207072696e742024282823636861722929>-2.5 E
+<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392036>174.84 F 0
+Cg EP
+%%Page: 7 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<46696c656e616d6520737566>108 84 Q<8c782e204e6f74653a20284e292061637469>
+-.25 E -.25<7661>-.25 G<746573207365746f7074206e756c6c676c6f62206f6e6c79
+20666f722074686973206c6f6f702e>.25 E 2.5<2466>110.5 96 S
+<6f72206920696e202a2e6f284e293b20646f>-2.5 E<726d202469>133 108 Q
+<646f6e65>115.5 120 Q
+<52656e616d65208c6c65733a2027464f4f2720746f2027666f6f273a>108 156 Q 2.5
+<2466>110.5 168 S<6f72206920696e202a282e293b206d7620246920247b693a6c7d>
+-2.5 E<52656e616d65208c6c65733a20276261722720746f202742>108 204 Q
+<4152273a>-.35 E 2.5<2466>110.5 216 S
+<6f72206920696e202a282e293b206d7620246920247b693a757d>-2.5 E<53686f>108
+252 Q 2.5<7761>-.25 G<6c6c20737569642d8c6c657320696e202450>-2.5 E -1.11
+<4154>-.92 G<483a>1.11 E 2.5<246c>110.5 264 S 2.5<732d>-2.5 G
+<6c61746720247b28732e3a2e2950>-2.5 E -1.11<4154>-.92 G
+<487d207c206772657020275e2e2e2e7327>1.11 E/F1 10/Times-Bold@0 SF
+<5a4d56202d206d756c7469706c65206d6f>87 292.8 Q .2 -.1<76652077>-.1 H
+<697468207a7368>.1 E F0
+<526571756972657320276175746f6c6f6164207a6d76272e20536f6d652065>108
+304.8 Q<78616d706c65733a>-.15 E<4d6f>108 340.8 Q .3 -.15<76652073>-.15 H
+<657269616c6c7920616c6c208c6c65732028666f6f2e666f6f203e20312e666f6f2c20
+666e6f72642e666f6f203e20322e666f6f2c202e2e292e>.15 E 2.5<246c>110.5
+352.8 S 2.5<732a>-2.5 G 2.5<312e63206173642e666f6f20626c612e666f6f20666e
+6f72642e666f6f20666f6f2e666e6f726420666f6f2e666f6f>110.5 364.8 R 2.5
+<2463>110.5 376.8 S
+<3d31207a6d7620272a2e666f6f272027242828632b2b29292e666f6f27>-2.5 E 2.5
+<246c>110.5 388.8 S 2.5<732a>-2.5 G 2.5<312e6320312e666f6f20322e666f6f20
+332e666f6f20342e666f6f20666f6f2e666e6f7264>110.5 400.8 R<5365652061626f>
+108 436.8 Q -.15<7665>-.15 G 2.5<2c62>.15 G<7574206e6f>-2.7 E 2.5<776f>
+-.25 G<6e6c79208c6c657320776974682061208c6c656e616d65203e3d203330206368
+6172732e>-2.5 E 2.5<2463>110.5 448.8 S<3d31207a6d762022247b286c3a33302d
+343a3a3f3a297d2a2e666f6f222027242828632b2b29292e666f6f27>-2.5 E<5265706c
+6163652073706163657320696e208c6c656e616d65732077697468206120756e6465726c
+696e652e>108 484.8 Q 2.5<247a>110.5 496.8 S
+<6d7620272a202a27202724663a67732f202f5f27>-2.5 E
+<4368616e67652074686520737566>108 532.8 Q
+<8c782066726f6d202a2e736820746f202a2e706c2e>-.25 E 2.5<247a>110.5 544.8
+S<6d76202d5720272a2e73682720272a2e706c27>-2.5 E<4c6f>108 580.8 Q<776572
+636173652f75707065726361736520616c6c208c6c657320616e64206469726563746f72
+6965732e>-.25 E 2.5<247a>110.5 592.8 S
+<6d762027282a29272027247b284c29317d2720666f72206c6f>-2.5 E
+<77657263617365>-.25 E 2.5<247a>110.5 604.8 S
+<6d762027282a29272027247b285529317d2720666f7220757070657263617365>-2.5 E
+<52656d6f>108 640.8 Q .3 -.15<76652074>-.15 H<686520737566>.15 E
+<8c78202a2e632066726f6d20616c6c20632d8c6c65732e>-.25 E 2.5<247a>110.5
+652.8 S<6d762027282a292e63272027243127>-2.5 E<557070657263617365206f6e6c
+7920746865208c727374206c6574746572206f6620616c6c202a2e6d7033202d208c6c65
+732e>108 688.8 Q 2.5<247a>110.5 700.8 S
+<6d762027285b612d7a5d29282a292e6d7033272027247b284329317d24322e6d703327>
+-2.5 E<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392037>
+174.84 F 0 Cg EP
+%%Page: 8 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<436f70>108 84 Q 2.5<7974>-.1 G<686520746172>-2.5 E<6765742060524541444d
+452720696e2073616d65206469726563746f7279206173206561636820604d616b>-.18
+E<658c6c65272e>-.1 E 2.5<247a>110.5 96 S<6d76202d432027282a2a2f294d616b>
+-2.5 E<658c6c65272027247b317d524541444d4527>-.1 E<52656e616d652070696331
+2e6a70672c20706963322e6a70672c2e2e20746f20706963303030312e6a70672c207069
+63303030322e6a70672c2e2e2e>108 144 Q 2.5<247a>110.5 156 S<6d762027706963
+282a292e6a7067272027706963247b286c3a343a3a303a29317d2e6a706727>-2.5 E
+2.5<247a>110.5 168 S<6d762027282a2a2f29706963282a292e6a706727202724312f
+706963247b286c3a343a3a303a29327d2e6a70672720232072656375727369>-2.5 E
+-.15<7665>-.25 G/F1 10/Times-Bold@0 SF<4d4f44554c4553>87 196.8 Q F0 2.07
+<53656520616c736f>108 208.8 R/F2 10/Times-Italic@0 SF 2.07
+<6d616e207a73686d6f64756c6573>4.57 F F0 7.07<2e44>C<6f6e27>-7.07 E 4.57
+<7466>-.18 G<6f72>-4.57 E 2.07<67657420746f2072756e>-.18 F F2 2.07
+<7a6d6f646c6f616420ad69204d4f44554c454e>4.57 F<414d45>-.27 E F0 2.07
+<6265666f7265207573696e672061206d6f64756c652e>4.57 F<4578616d706c653a>
+108 220.8 Q F2<7a6d6f646c6f6164202d69207a73682f6461746574696d65>2.5 E F0
+<2e>A F1<7a73682f636170>108 237.6 Q F0<4275696c74696e7320666f72206d616e
+6970756c6174696e6720504f5349582e31652028504f5349582e3629206361706162696c
+6974792028707269>144 249.6 Q<76696c65>-.25 E<67652920736574732e>-.15 E
+F1<7a73682f636c6f6e65>108 266.4 Q F0 2.5<4162>144 278.4 S<75696c74696e20
+746861742063616e20636c6f6e6520612072756e6e696e67207368656c6c206f6e746f20
+616e6f74686572207465726d696e616c2e>-2.7 E 1.958
+<43726561746573206120666f726b>144 302.4 R 1.958<656420696e7374616e636520
+6f66207468652063757272656e74207368656c6c202824212069732073657420746f207a
+65726f2920616e642065>-.1 F -.15<7865>-.15 G 1.957<637574652060>.15 F
+<60636f6d6d616e6427>-.74 E 4.457<276f>-.74 G<6e>-4.457 E<2f6465>144
+314.4 Q<762f747479382028666f7220746869732065>-.25 E<78616d706c65293a>
+-.15 E 2.5<247a>146.5 326.4 S<6d6f646c6f6164207a73682f636c6f6e65>-2.5 E
+2.5<2463>146.5 338.4 S<6c6f6e65202f6465>-2.5 E
+<762f747479382026262028282421203d3d203029292026262065>-.25 E -.15<7865>
+-.15 G 2.5<6363>.15 G<6f6d6d616e64>-2.5 E F1<7a73682f636f6d7063746c>108
+355.2 Q F0<546865>144 367.2 Q F1<636f6d7063746c>2.5 E F0 -.2<6275>2.5 G
+<696c74696e20666f7220636f6e74726f6c6c696e6720636f6d706c6574696f6e2e>.2 E
+F1<7a73682f636f6d706c657465>108 384 Q F0
+<54686520626173696320636f6d706c6574696f6e20636f64652e>144 396 Q F1
+<7a73682f636f6d706c697374>108 412.8 Q F0
+<436f6d706c6574696f6e206c697374696e672065>144 424.8 Q
+<7874656e73696f6e732e>-.15 E F1<7a73682f636f6d707574696c>108 441.6 Q F0
+2.5<416d>144 453.6 S<6f64756c652077697468207574696c6974792062>-2.5 E<75
+696c74696e73206e656564656420666f7220746865207368656c6c2066756e6374696f6e
+20626173656420636f6d706c6574696f6e2073797374656d2e>-.2 E F1
+<7a73682f6461746574696d65>108 470.4 Q F0<536f6d6520646174652f74696d6520
+636f6d6d616e647320616e6420706172616d65746572732e>144 482.4 Q
+<446f206e6f74206861>144 506.4 Q .3 -.15<76652047>-.2 H
+<4e5520646174653f204c657427>.15 E 2.5<7372>-.55 G<65706c6163652069743a>
+-2.5 E 2.5<2461>146.5 518.4 S
+<6c69617320646174657265706c6163656d656e743d27>-2.5 E
+<7374726674696d6520222559>-.55 E
+<2d256d2d256422202445504f43485345434f4e445327>-1.11 E 2.5<2465>146.5
+530.4 S<78706f72742044>-2.65 E -1.11<4154>-.4 G
+<453d60646174657265706c6163656d656e7460>1.11 E 2.5<2465>146.5 542.4 S
+<63686f202444>-2.5 E -1.11<4154>-.4 G<45>1.11 E F1
+<7a73682f64656c746f63686172>108 559.2 Q F0 2.5<415a>144 571.2 S
+<4c452066756e6374696f6e206475706c69636174696e6720454d41>-2.5 E<435327>
+-.4 E F1<7a6170ad746fad63686172>2.5 E F0<2e>A F1<7a73682f6578616d706c65>
+108 588 Q F0<416e2065>144 600 Q<78616d706c65206f6620686f>-.15 E 2.5
+<7774>-.25 G 2.5<6f77>-2.5 G<726974652061206d6f64756c652e>-2.5 E F1
+<7a73682f8c6c6573>108 616.8 Q F0<536f6d65206261736963208c6c65206d616e69
+70756c6174696f6e20636f6d6d616e64732061732062>144 628.8 Q
+<75696c74696e732e>-.2 E 2.5<2373>144 640.8 S<65617263682061206469726563
+746f727920666f72208c6c657320636f6e7461696e696e672061206365727461696e2073
+7472696e67207468656e20636f70>-2.5 E 2.5<7974>-.1 G
+<686f7365208c6c657320746f20616e6f74686572206469726563746f7279>-2.5 E<2e>
+-.65 E 2.5<2449>149 652.8 S 2.5<46533d24272027>-2.5 F 2.5<2463>149 664.8
+S 2.5<7024>-2.5 G
+<2867726570202d6c5a7220666f6f626172202e29206f746865726469726563746f7279>
+-2.5 E F1<7a73682f6d61708c6c65>108 681.6 Q F0<41636365737320746f2065>144
+693.6 Q<787465726e616c208c6c6573207669612061207370656369616c206173736f63
+69617469>-.15 E .3 -.15<76652061>-.25 H<727261792e>.15 E 2.5<2367>144
+705.6 S<72657070696e6720666f72207477>-2.5 E 2.5<6f70>-.1 G
+<61747465726e73>-2.5 E 2.5<2470>149 717.6 S<61747465726e313d22666f6f22>
+-2.5 E 2.5<2470>149 729.6 S<61747465726e323d2262617220666f6f22>-2.5 E
+<7a736820342e322e34>72 768 Q 203.17<323030352d30352d30392038>174.84 F 0
+Cg EP
+%%Page: 9 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<2470>149 84 S<72696e74202d6c202e2f2a2a2f2a28444e2e657b277a3d246d61708c
+6c655b245245504c>-2.5 E<595d202626>-1 E<5b5b20247a203d202a24706174746572
+6e312a20262620247a203d202a247061747465726e322a205d5d277d29>149 96 Q 2.5
+<236f>144 108 S 2.5<726173>-2.5 G<6f6c7574696f6e20696e20636f6d62696e6174
+696f6e2077697468207a73682f70637265>-2.5 E 2.5<247a>149 120 S
+<6d6f646c6f6164202d69207a73682f6d61708c6c65207a73682f70637265>-2.5 E 2.5
+<2470>149 132 S<61747465726e313d22666f6f22>-2.5 E 2.5<2470>149 144 S
+<61747465726e323d2262617220666f6f22>-2.5 E 2.5<2470>149 156 S<6372655f63
+6f6d70696c652022283f7329283f3d2e2a3f247061747465726e31292e2a3f2470617474
+65726e3222>-2.5 E 2.5<2470>149 168 S<6372655f7374756479>-2.5 E 2.5<2470>
+149 180 S<72696e74202d6c202e2f2a2a2f2a28444e2e657b27706372655f6d61746368
+20246d61708c6c655b245245504c>-2.5 E<595d277d29>-1 E 2.5<2365>144 204 S
+<717569>-2.5 E -.25<7661>-.25 G<6c656e7420666f722060>.25 E
+<606c657373202f6574632f706173737764207c2067726570202d7620726f6f7427>-.74
+E<27>-.74 E 2.5<2449>149 216 S<46533d242730>-2.5 E 2.5<2470>149 228 S<72
+696e74202d726c202d2d20247b247b3d6d61708c6c655b2f6574632f7061737377645d7d
+3a232a726f6f742a7d>-2.5 E 2.5<236f>144 240 S 2.5<722d66>-2.5 G
+<6f72206361736520696e73656e73697469>-2.5 E -.15<7665>-.25 G 2.5<2473>149
+252 S<65746f70742065>-2.5 E<7874656e646564676c6f62>-.15 E 2.5<2470>149
+264 S<72696e74202d726c202d2d20247b247b3d6d61708c6c655b2f6574632f70617373
+77645d7d3a232a28236929726f6f742a7d>-2.5 E 2.5<2349>144 288 S 2.5<666158>
+-2.5 G<4d4c2d8c6c6520636f6e7461696e732073747566>-2.5 E 2.5<666c>-.25 G
+<696b>-2.5 E 2.5<6560>-.1 G<603c54>-3.24 E -.4<4147>-.93 G<412f3e27>.4 E
+2.5<2761>-.74 G<6e642060>-2.5 E<603c54>-.74 E -.4<4147>-.93 G<422f3e27>
+.4 E<272c206e756d626572207468697320656d7074792074616773>-.74 E 2.5<2328>
+144 300 S<6f6e657320656e64696e6720696e20272f3e272920736f20696620656e636f
+756e746572656420696e207468652073616d65206f72646572>-2.5 E 2.5<2c74>-.4 G
+<68652070726563656564696e6720746167732077>-2.5 E<6f756c64206265636f6d65>
+-.1 E 2.5<2360>144 312 S<603c54>-3.24 E -.4<4147>-.93 G<412f3e313c2f54>
+.4 E -.4<4147>-.93 G<413e27>.4 E 2.5<2761>-.74 G<6e642060>-2.5 E<603c54>
+-.74 E -.4<4147>-.93 G<422f3e323c2f54>.4 E -.4<4147>-.93 G<423e27>.4 E
+<27>-.74 E 2.5<2463>149 324 S<6e743d30>-2.5 E 2.5<2461>149 336 S
+<708c6c655b646174612e786d6c2e6e65>-2.5 E 2.5
+<775d3d247b2853296d61708c6c655b646174612e786d6c5d2f2f203e>-.25 F
+<2823696d293c54>2.5 E -.4<4147>-.93 G<413e2a3c54>.4 E -.4<4147>-.93 G
+<413e2f3c54>.4 E -.4<4147>-.93 G<413e2428282b2b636e7429293c54>.4 E -.4
+<4147>-.93 G<413e7d>.4 E 2.5<2372>144 360 S<656d6f>-2.5 E
+<76696e6720616c6c208c6c657320696e207573657273204d61696c6469722f6e65>-.15
+E 2.5<7774>-.25 G<68617420636f6e7461696e2060>-2.5 E
+<608c6c656e616d653d22676f6e652e73726327>-.74 E<27>-.74 E 2.5<247a>149
+372 S<6d6f646c6f6164207a73682f7b8c6c65732c6d61708c6c657d>-2.5 E 2.5
+<2472>149 384 S 2.5<6d2d>-2.5 G 2.5<662f>-2.5 G
+<75312f3f3f2f2a2f4d61696c6469722f6e65>-2.5 E
+<772f3130302a282e657b275b5b20246d61708c6c655b245245504c>-.25 E
+<595d203d3d202a8c6c656e616d653d>-1 E 2.5<2347>144 408 S
+<726570206f7574207468652054>-2.5 E<69746c652066726f6d206120706f73747363
+72697074208c6c6520616e6420617070656e6420746861742076>-.35 E
+<616c756520746f2074686520656e64206f66>-.25 E 2.5<2374>144 420 S
+<6865208c6c656e616d65>-2.5 E 2.5<2461>149 432 S
+<75746f6c6f6164202d55207a6d76>-2.5 E 2.5<247a>149 444 S<6d762027282a292e
+707327202724312d247b247b247b6d61708c6c655b24665d23232a252554>-2.5 E
+<69746c653a207d2525202a7d2f2f5b5e612d7a412d5a302d395f5d2f7d2e707327>-.35
+E/F1 10/Times-Bold@0 SF<7a73682f6d61746866756e63>108 460.8 Q F0<5374616e
+6461726420736369656e74698c632066756e6374696f6e7320666f722075736520696e20
+6d617468656d61746963616c2065>144 472.8 Q -.25<7661>-.25 G
+<6c756174696f6e732e>.25 E 2.5<2465>144 484.8 S<63686f202428282073696e28
+312f342e30292a2a32202b20636f7328312f342e30292a2a32202d2031202929>-2.5 E
+<2d312e31313032323330323436323531353635652d3136>149 496.8 Q 2.5<2465>144
+508.8 S<63686f20242828207069203d20342e30202a206174616e28312e3029202929>
+-2.5 E<332e31343135393236353335383937393331>149 520.8 Q 2.5<2465>144
+532.8 S<63686f202428282066203d2073696e28302e3329202929>-2.5 E
+<302e3239353532303230363636313333393535>149 544.8 Q 2.5<2470>144 556.8 S
+<72696e74202428282072616e643438287365656429202929>-2.5 E
+<302e3031303433343838333334373030323731>149 568.8 Q F1
+<7a73682f706172616d65746572>108 585.6 Q F0<41636365737320746f20696e7465
+726e616c2068617368207461626c657320766961207370656369616c206173736f636961
+7469>144 597.6 Q .3 -.15<76652061>-.25 H<72726179732e>.15 E F1
+<7a73682f706372>108 614.4 Q<65>-.18 E F0<496e74657266>144 626.4 Q
+<61636520746f207468652050435245206c6962726172792e>-.1 E .125<496d706f72
+74616e743a207265717569726573207a736820636f6d70696c6564207769746820706372
+652d737570706f72742e20436865636b207768657468657220796f75722076>144 650.4
+R .125<657273696f6e20737570706f727473207063726520766961>-.15 F .413
+<606c6464203d7a7368207c20677265702070637265602e>144 662.4 R .413
+<504352452070726f>5.413 F .413
+<766964657320737570706f727420666f72205065726c27>-.15 F 2.913<7372>-.55 G
+-.15<6567>-2.913 G .412<756c61722065>.15 F .412
+<787072657373696f6e7320287265>-.15 F<6765>-.15 E .412<78292e2059>-.15 F
+.412<6f75206861>-1.1 F .712 -.15<76652074>-.2 H<6f>.15 E
+<636f6d70696c652061207265>144 674.4 Q<6765>-.15 E 2.5<7861>-.15 G
+<6e642063616e206d6174636820697420616674657277>-2.5 E
+<61726473207573696e67206572726f7220636f6465733a>-.1 E 2.5<247a>146.5
+686.4 S<6d6f646c6f6164207a73682f70637265>-2.5 E 2.5<2470>146.5 698.4 S
+<6372655f636f6d70696c6520275c735c642e5c647b337d2e5c647b337d204575726f27>
+-2.5 E<26265c>5 E
+<706372655f6d61746368202720312e3030302e303030204575726f272026265c>151.5
+710.4 Q<6563686f20226d61746368657322207c7c206563686f2022646f6573206e6f74
+206d6174636822>151.5 722.4 Q<7a736820342e322e34>72 768 Q 203.17
+<323030352d30352d30392039>174.84 F 0 Cg EP
+%%Page: 10 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<4e6f74653a20696620796f7520617265207573696e6720636f6d706c65>144 84 Q 2.5
+<7872>-.15 G -.15<6567>-2.5 G<756c61722065>.15 E
+<787072657373696f6e7320796f752063616e20696d70726f>-.15 E .3 -.15
+<76652073>-.15 H<706565642076696120706372655f7374756479>.15 E<2e>-.65 E
+/F1 10/Times-Bold@0 SF<7a73682f7363686564>108 100.8 Q F0 2.5<4162>144
+112.8 S<75696c74696e20746861742070726f>-2.7 E
+<766964657320612074696d65642065>-.15 E -.15<7865>-.15 G
+<637574696f6e2066>.15 E
+<6163696c6974792077697468696e20746865207368656c6c2e>-.1 E F1
+<7a73682f6e65742f736f636b>108 129.6 Q<6574>-.1 E F0
+<4d616e6970756c6174696f6e206f6620556e697820646f6d61696e20736f636b>144
+141.6 Q<657473>-.1 E 2.5<247a>146.5 153.6 S
+<6d6f646c6f6164207a73682f6e65742f736f636b>-2.5 E<6574>-.1 E 2.5<247a>
+146.5 165.6 S<736f636b>-2.5 E<6574202d6c202d642033>-.1 E 2.5<2360>146.5
+177.6 S<602d6c27>-3.24 E<273a206f70656e206120736f636b>-.74 E
+<6574206c697374656e696e67206f6e208c6c656e616d65>-.1 E 2.5<2360>146.5
+189.6 S<602d6427>-3.24 E<273a206172>-.74 E
+<67756d656e742077696c6c2062652074616b>-.18 E<656e2061732074686520746172>
+-.1 E<676574208c6c652064657363726970746f7220666f7220746865>-.18 E 22.5
+<2363>146.5 201.6 S<6f6e6e656374696f6e>-22.5 E 2.5<2360>146.5 213.6 S
+<603327>-3.24 E 2.5<273a8c>-.74 G<6c652064657363726970746f72>-2.5 E 2.5
+<2e53>-.55 G<65652060>-2.5 E 1.6 -.8<60412055>-.74 H<73657227>.8 E 2.5
+<7347>-.55 G<7569646520746f20746865205a2d5368656c6c27>-2.5 E<27>-.74 E
+22.5<2328>146.5 225.6 S
+<332e372e323a2046696c652064657363726970746f727329>-22.5 E 2.5<247a>146.5
+237.6 S<736f636b>-2.5 E<6574202d61202d6420342033>-.1 E 2.5<2360>146.5
+249.6 S<602d6127>-3.24 E<273a2061636365707420616e20696e636f6d696e672063
+6f6e6e656374696f6e20746f2074686520736f636b>-.74 E<6574>-.1 E 2.5<247a>
+146.5 261.6 S<736f636b>-2.5 E
+<6574202d61202d6420352033202320616363657074206120636f6e6e656374696f6e>
+-.1 E 2.5<2465>146.5 273.6 S<63686f20666f6f626172203e2634>-2.5 E 2.5
+<2465>146.5 285.6 S<63686f20626172666f6f203e2635>-2.5 E 2.5<2434>146.5
+297.6 S<3e262d20353e262d20333e262d>-2.5 E<496e206f6e65207368656c6c3a>144
+321.6 Q 2.5<247a>146.5 333.6 S<6d6f646c6f6164207a73682f6e65742f736f636b>
+-2.5 E<6574>-.1 E 2.5<247a>146.5 345.6 S<736f636b>-2.5 E
+<6574202d6c202d642033202f746d702f6d79736f636b>-.1 E
+<65742023206f70656e206c697374656e696e6720736f636b>-.1 E<6574>-.1 E 2.5
+<247a>146.5 357.6 S<736f636b>-2.5 E<6574202d61202d6420342033>-.1 E 2.5
+<2361>32.5 G<6363657074206120636f6e6e656374696f6e>-2.5 E 2.5<247a>146.5
+369.6 S<736f636b>-2.5 E<6574202d61202d6420352033>-.1 E 2.5<2361>32.5 G
+<6363657074206120636f6e6e656374696f6e>-2.5 E 2.5<2465>146.5 381.6 S
+<63686f204869207468657265203e2634>-2.5 E 2.5<2465>146.5 393.6 S
+<63686f20486920746865726520616c736f203e2635>-2.5 E 2.5<2465>146.5 405.6
+S -.15<7865>-2.65 G 2.5<6334>.15 G<3e262d20353e262d20333e262d>-2.5 E
+<496e20616e6f74686572207368656c6c3a>144 429.6 Q 2.5<247a>146.5 441.6 S
+<6d6f646c6f6164207a73682f6e65742f736f636b>-2.5 E<6574>-.1 E 2.5<247a>
+146.5 453.6 S<736f636b>-2.5 E<6574202d642033202f746d702f6d79736f636b>-.1
+E<6574202320636f6e6e65637420746f202f746d702f736f636b>-.1 E<6574>-.1 E
+2.5<247a>146.5 465.6 S<736f636b>-2.5 E
+<6574202d642034202f746d702f6d79736f636b>-.1 E
+<6574202320636f6e6e65637420746f202f746d702f736f636b>-.1 E<6574>-.1 E 2.5
+<2472>146.5 477.6 S<656164206d7367203c26333b206563686f20676f743a2022246d
+7367206f6e206664203322>-2.5 E 2.5<2472>146.5 489.6 S<656164206d7367203c
+26343b206563686f20676f743a2022246d7367206f6e206664203422>-2.5 E 2.5
+<2465>146.5 501.6 S -.15<7865>-2.65 G 2.5<6333>.15 G<3e262d20343e262d>
+-2.5 E F1<7a73682f73746174>108 518.4 Q F0 2.5<4162>144 530.4 S
+<75696c74696e20636f6d6d616e6420696e74657266>-2.7 E<61636520746f20746865>
+-.1 E F1<73746174>2.5 E F0<73797374656d2063616c6c2e>2.5 E
+<4765742073697a65206f662061208c6c6520696e2062797465733a>144 554.4 Q 2.5
+<247a>146.5 566.4 S<6d6f646c6f6164202d69207a73682f73746174>-2.5 E 2.5
+<2473>146.5 578.4 S<746174202d4c202b73697a65208c6c65>-2.5 E
+<457175616c20746f20474e5527>144 602.4 Q<733a>-.55 E 2.5<2473>146.5 614.4
+S<746174202d63202573208c6c65>-2.5 E
+<436f6d706172696e67208c6c652064617465733a>144 638.4 Q 2.5<248c>149 650.4
+S<6c65313d666f6f>-2.5 E 2.5<248c>149 662.4 S<6c65323d626172>-2.5 E 2.5
+<2474>149 674.4 S
+<6f75636820626172202620736c6565702035202620746f75636820666f6f>-2.5 E 2.5
+<2465>149 686.4 S<63686f20248c6c65312069732024282820242873746174202b6d74
+696d6520248c6c653229202d20242873746174202b6d74696d6520248c6c653129202929
+207365636f6e6473206f6c646572207468616e20248c6c65322e>-2.5 E
+<6261722069732035207365636f6e6473206f6c646572207468616e20666f6f>149
+698.4 Q<4c69737420746865208c6c6573206f662061206469736b20736d616c6c657220
+7468616e20736f6d65206f74686572208c6c653a>144 722.4 Q<7a736820342e322e34>
+72 768 Q 198.17<323030352d30352d3039203130>174.84 F 0 Cg EP
+%%Page: 11 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<2473>149 84 S<746174202d41206d6178202b73697a6520736f6d652d6f74686572>
+-2.5 E<2d8c6c65>-.2 E 2.5<2470>149 96 S
+<72696e74202d726c202e2f2a2a2f2a28442e4c2d246d617829>-2.5 E<4c6973742074
+686520746f70203130302062696767657374208c6c657320696e2061206469736b3a>144
+120 Q 2.5<246c>149 132 S 2.5<732d>-2.5 G
+<8d64202e2f2a2a2f2a28646073746174202b6465>-2.5 E
+<76696365202e604f4c5b312c3130305d29>-.25 E<476574206f6e6c79207468652075
+736572206e616d6520616e6420746865208c6c65206e616d65732066726f6d20286c696b>
+144 156 Q 2.5<656c>-.1 G 2.5<732d>-2.5 G 2.5<6c2a7c61>-2.5 G
+<776b20277b7072696e742024332220222024387d27293a>-2.65 E 2.5<2466>149 168
+S<6f72208c6c653b20646f>-2.5 E 7.5<3e73>149 180 S
+<746174202d73412075736572202b756964202d2d2022248c6c6522202626>-7.5 E
+12.5<3e70>149 192 S<72696e74202d72202d2d20222475736572222022248c6c6522>
+-12.5 E 2.5<3e64>149 204 S<6f6e65>-2.5 E<4765742074686520646966>144 228
+Q<666572656e6365206265747765656e2061637475616c206279746573206f66208c6c65
+20616e6420616c6c6f6361746564206279746573206f66208c6c653a>-.25 E 2.5
+<2470>149 240 S<72696e7420242828242873746174202b626c6f636b202d2d208c6c65
+29202a20353132202d20242873746174202b73697a65202d2d208c6c65292929>-2.5 E
+<46696e64206c6172>144 264 Q<67657374208c6c653a>-.18 E 2.5<2473>149 276 S
+<746174202b73697a65202e2f2a28444f4c5b315d29>-2.5 E 2.5<2360>149 288 S
+<604427>-3.24 E 5<273a>-.74 G
+<746f20696e636c75646520646f74208c6c6573202864206c6f>-2.5 E
+<7765726361736520697320666f72206465>-.25 E<7669636529>-.25 E 2.5<2360>
+149 300 S<604f27>-3.24 E 5<273a>-.74 G<7265>-2.5 E -.15<7665>-.25 G
+<727365204f72646572656420286f206c6f>.15 E
+<7765726361736520666f72206e6f6e2d7265>-.25 E -.15<7665>-.25 G
+<727365206f7264657229>.15 E 2.5<2360>149 312 S<604c>-3.24 E 3.98 -.74
+<2727203a>-.92 H<6279208c6c65204c656e67746820286c20697320666f72206e756d
+626572206f66206c696e6b7329>3.24 E 2.5<2360>149 324 S<605b315d27>-3.24 E
+<273a2072657475726e206f6e6c79208c727374206f6e65>-.74 E .46<44656c657465
+208c6c657320696e2061206469726563746f72792074686174206861736e27>144 348 R
+2.96<7462>-.18 G .461<65656e20616363657373656420696e20746865206c61737420
+74656e206461797320616e642073656e64204f4e45206d61696c20746f20746865>-2.96
+F -.25<6f77>144 360 S<6e6572206f6620746865208c6c657320696e666f726d696e67
+2068696d2f686572206f6620746865208c6c6573272064656c6574696f6e3a>.25 E 2.5
+<247a>149 372 S<6d6f646c6f6164207a73682f73746174207a73682f8c6c6573>-2.5
+E 2.5<2474>149 384 S<797065736574202d4120663b20663d2829>-2.5 E 2.5<2472>
+149 396 S 2.5<6d2d>-2.5 G 2.5<662f>-2.5 G
+<706174682f2a2a2f2a282e612b3130657b27>-2.5 E
+<73746174202d73412075202b7569647220245245504c>-.55 E 1.84 -.92<593b2066>
+-1 H<5b24755d3d2224665b24755d245245504c>.92 E<5922277d29>-1 E 2.5<2466>
+149 408 S<6f7220757365722028247b286b29667d29207b7072696e74202d726e202466
+5b24757365725d7c6d61696c78202d7320222e2e2e222024757365727d>-2.5 E<476574
+206120226c73202d6c22206f6e20616c6c20746865208c6c657320696e20746865207472
+656520746861742061726520796f756e676572207468616e20612073706563698c656420
+6167653a>144 432 Q 2.5<2466>149 444 S
+<6f72206420282e202e2f2a2a2f2a284e2f6d2d322929>-2.5 E 7.5<3e70>149 456 S
+<72696e74202d72202d2d2024273024643a202626206364202464202626207b>-7.5 E
+15<3e66>149 468 S<6f72206620282a284e6d2d326f6d2929>-15 E 7.5<3e73>149
+480 S
+<746174202d46202725622025642025483a254d27202d4c734173202d2d202466202626>
+-7.5 E 7.5<3e70>149 492 S<72696e74202d72202d2d2024735b335d20247b286c3a34
+3a29735b345d7d20247b286c3a383a29735b355d7d205c>-7.5 E 7.5<3e24>149 504 S
+<7b286c3a383a29735b365d7d20247b286c3a383a29735b385d7d2024735b31305d2024
+6620247b735b31345d3a2b2d3e2024735b31345d7d>-7.5 E 7.5<3e63>149 516 S 2.5
+<647e>-7.5 G<2d>-2.5 E 2.5<3e7d>149 528 S
+<476574208c6c65206372656174696f6e20646174653a>144 552 Q 2.5<2473>149 564
+S<746174202d462027256420256d20255927202b6d74696d65207e2f2e7a73687263>
+-2.5 E<33302030362032303034>149 576 Q 2.5<2473>149 588 S
+<746174202d462027254427202b6d74696d65207e2f2e7a73687263>-2.5 E
+<30362f33302f3034>149 600 Q/F1 10/Times-Bold@0 SF<7a73682f73797374656d>
+108 616.8 Q F0 2.5<4162>144 628.8 S<75696c74696e20696e74657266>-2.7 E
+<61636520746f2076>-.1 E<6172696f7573206c6f>-.25 E<77ad6c65>-.25 E -.15
+<7665>-.25 G 2.5<6c73>.15 G<797374656d2066656174757265732e>-2.5 E F1
+<7a73682f6e65742f746370>108 645.6 Q F0
+<4d616e6970756c6174696f6e206f662054435020736f636b>144 657.6 Q<657473>-.1
+E F1<7a73682f7465726d636170>108 674.4 Q F0<496e74657266>144 686.4 Q
+<61636520746f20746865207465726d6361702064617461626173652e>-.1 E 2.5
+<247a>146.5 698.4 S
+<6d6f646c6f6164202d6162207a73682f7465726d636170206563686f7463>-2.5 E 2.5
+<2447>146.5 710.4 S<5245454e3d606563686f7463204146203260>-2.5 E 2.5
+<2459>146.5 722.4 S<454c4c4f>-2.5 E<573d606563686f7463204146203360>-.35
+E<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203131>174.84 F
+0 Cg EP
+%%Page: 12 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<2452>146.5 84 S<45443d606563686f7463204146203160>-2.5 E 2.5<2442>146.5
+96 S
+<52494748545245443d606563686f7463206d64203b206563686f7463204146203160>
+-2.5 E 2.5<2470>146.5 108 S
+<72696e74202d6c20247b475245454e7d677265656e20247b59454c4c4f>-2.5 E
+<577d79656c6c6f>-.35 E 2.5<7724>-.25 G
+<7b5245447d72656420247b4252494748545245447d627269676874726564>-2.5 E/F1
+10/Times-Bold@0 SF<7a73682f7465726d696e66>108 124.8 Q<6f>-.25 E F0
+<496e74657266>144 136.8 Q
+<61636520746f20746865207465726d696e666f2064617461626173652e>-.1 E F1
+<7a73682f7a667470>108 153.6 Q F0 2.5<4162>144 165.6 S
+<75696c74696e2046545020636c69656e742e>-2.7 E
+<57726974652066747020736372697074732061732074686f756768207368656c6c3a>
+144 189.6 Q 2.5<2469>146.5 201.6 S<6e6974>-2.5 E 2.5<2461>146.5 213.6 S
+<75746f6c6f6164202d55207a8c6e6974202626207a8c6e6974>-2.5 E 2.5<247a>
+146.5 225.6 S<66706172616d7320777777>-2.5 E<2e65>-.65 E
+<78616d706c652e696e>-.15 E -.25<7661>-.4 G
+<6c6964206d79757365726964206d797061737377>.25 E<6f7264>-.1 E 2.5<247a>
+146.5 237.6 S<666f70656e>-2.5 E 2.5<247a>146.5 249.6 S<6663642074697073>
+-2.5 E 2.5<247a>146.5 261.6 S<8d73202d6c207a73682d6c6f>-2.5 E -.15<7665>
+-.15 G<72732e68746d6c>.15 E 2.5<247a>146.5 273.6 S
+<66707574207a73682d6c6f>-2.5 E -.15<7665>-.15 G<72732e68746d6c>.15 E 2.5
+<247a>146.5 285.6 S<8d73202d6c207a73682d6c6f>-2.5 E -.15<7665>-.15 G
+<72732e68746d6c>.15 E<4175746f6d61746963616c6c79207472616e73666572208c6c
+6573207573696e67204654502077697468206572726f7220636865636b696e673a>144
+309.6 Q 2.5<247a>149 321.6 S<667470206f70656e20686f73742e6e616d652e696e>
+-2.5 E -.25<7661>-.4 G<6c6964207573657220706173737764207c7c2065>.25 E
+<786974>-.15 E 2.5<247a>149 333.6 S<66747020676574202f72656d6f74652f8c6c
+65203e202f6c6f63616c2f8c6c653b20723d243f>-2.5 E 2.5<247a>149 345.6 S
+<66747020636c6f73652026262065>-2.5 E<7869742072>-.15 E
+<436f6d707265737320616e6420667470206f6e20746865208d793a>144 369.6 Q 2.5
+<247a>149 381.6 S<667470206f70656e20686f73742e6e616d652e696e>-2.5 E -.25
+<7661>-.4 G<6c69642075736572207061737377>.25 E<6f7264>-.1 E 2.5<247a>149
+393.6 S
+<6674702067657420248c6c65207c20627a697032203e20247b8c6c657d2e627a32>-2.5
+E 2.5<247a>149 405.6 S<66747020636c6f7365>-2.5 E
+<4c6f6e67206c697374206f66208c6c6573206f6e2061206674703a>144 429.6 Q 2.5
+<2461>149 441.6 S<75746f6c6f6164202d55207a8c6e6974>-2.5 E 2.5<247a>149
+453.6 S<8c6e6974>-2.5 E 2.5<247a>149 465.6 S
+<666f70656e20736f6d652d686f7374>-2.5 E 2.5<247a>149 477.6 S
+<666364202f736f6d652f72656d6f74652f446972>-2.5 E 2.5<2463>149 489.6 S
+2.5<642f>-2.5 G<736f6d652f6c6f63616c2f446972>-2.5 E<496620746865206c6973
+742e747874206973206c6f6361746564206f6e207468652072656d6f746520686f73742c
+206368616e676520746f>144 513.6 Q 2.5<247a>149 525.6 S<6667657420247b2866
+292224287a66747020676574202f706174682f746f2f72656d6f74652f6c6973742e7478
+7429227d>-2.5 E 2.5<247a>149 537.6 S
+<6667657420247b286629222428636174206c6973742e74787429227d>-2.5 E 2.5
+<247a>149 549.6 S<66636c6f7365>-2.5 E F1<7a73682f7a6c65>108 566.4 Q F0
+<546865205a7368204c696e6520456469746f72>7.67 E 2.5<2c69>-.4 G
+<6e636c7564696e6720746865>-2.5 E F1<62696e646b>2.5 E<6579>-.1 E F0
+<616e64>2.5 E F1 -.1<7661>2.5 G -.18<7265>.1 G<64>.18 E F0 -.2<6275>2.5
+G<696c74696e732e>.2 E F1<7a73682f7a6c65706172616d65746572>108 583.2 Q F0
+<41636365737320746f20696e7465726e616c73206f6620746865205a7368204c696e65
+20456469746f722076696120706172616d65746572732e>144 595.2 Q F1
+<7a73682f7a7072>108 612 Q<6f66>-.18 E F0 2.5<416d>144 624 S
+<6f64756c6520616c6c6f>-2.5 E
+<77696e672070726f8c6c696e6720666f72207368656c6c2066756e6374696f6e732e>
+-.25 E F1<7a73682f7a707479>108 640.8 Q F0 2.5<4162>144 652.8 S<75696c74
+696e20666f72207374617274696e67206120636f6d6d616e6420696e2061207073657564
+6fad7465726d696e616c2e>-2.7 E 2.5<247a>146.5 664.8 S
+<6d6f646c6f6164202d69207a73682f7a707479>-2.5 E 2.5<247a>146.5 676.8 S
+<70747920505720706173737764202431>-2.5 E 2.5<2360>146.5 688.8 S
+<602d7227>-3.24 E<273a207265616420746865206f7574707574206f66207468652063
+6f6d6d616e64206e616d652e>-.74 E 2.5<2360>146.5 700.8 S<607a27>-3.24 E
+2.5<273a50>-.74 G<6172616d65746572>-2.65 E 2.5<247a>146.5 712.8 S
+<707479202d72205057207a20272a7061737377>-2.5 E<6f72643a27>-.1 E 2.5
+<2373>146.5 724.8 S
+<656e642074686520746f20636f6d6d616e64206e616d6520746865206769>-2.5 E
+-.15<7665>-.25 G 2.5<6e73>.15 G<7472696e677320617320696e707574>-2.5 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203132>174.84 F
+0 Cg EP
+%%Page: 13 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<247a>146.5 84 S<707479202d77205057202432>-2.5 E 2.5<247a>146.5 96 S
+<707479202d72205057207a20272a7061737377>-2.5 E<6f72643a27>-.1 E 2.5
+<247a>146.5 108 S<707479202d77205057202432>-2.5 E 2.5<237c54>146.5 120 S
+<6865207365636f6e6420666f726d2c207769746820746865202d64206f7074696f6e2c
+206973207573656420746f2064656c65746520636f6d6d616e6473>-2.5 E 2.5
+<237c70>146.5 132 S<7265>-2.5 E<76696f75736c7920737461727465642c20627920
+737570706c79696e672061206c697374206f66207468656972206e616d65732e20496620
+6e6f206e616d6573>-.25 E 2.5<237c61>146.5 144 S<7265206769>-2.5 E -.15
+<7665>-.25 G<6e2c20616c6c20636f6d6d616e6473206172652064656c657465642e20
+44656c6574696e67206120636f6d6d616e64206361757365732074686520485550>.15 E
+2.5<237c73>146.5 156 S<69676e616c20746f2062652073656e7420746f2074686520
+636f72726573706f6e64696e672070726f636573732e>-2.5 E 2.5<247a>146.5 168 S
+<707479202d64205057>-2.5 E/F1 10/Times-Bold@0 SF<7a73682f7a73656c656374>
+108 184.8 Q F0<426c6f636b20616e642072657475726e207768656e208c6c65206465
+7363726970746f7273206172652072656164792e>144 196.8 Q 2.5<2349>144 208.8
+S<7427>-2.5 E 2.5<7373>-.55 G<696d756c617220746f>-2.5 E<2c2d2d2d2d>146.5
+220.8 Q 2.5<7c2473>146.5 232.8 S<673d242873747479202d6729>-2.5 E 2.5
+<7c2473>146.5 244.8 S
+<747479202d6963616e6f6e206d696e20302074696d65203530>-2.5 E 2.5<7c2472>
+146.5 256.8 S<656164207965736e6f>-2.5 E 2.5<7c2473>146.5 268.8 S
+<747479202224736722>-2.5 E 2.5<7c2463>146.5 280.8 S
+<6173652022247965736e6f2220696e>-2.5 E -2.5 2.5<7c3e2079>146.5 292.8 T
+<65732920636f6d6d616e64313b3b>-2.5 E -2.5 2.5<7c3e202a>146.5 304.8 T 2.5
+<2963>-2.5 G<6f6d6d616e64323b3b>-2.5 E 2.5<7c3e65>146.5 316.8 S<736163>
+-2.5 E<602d2d2d2d>146.5 328.8 Q 2.5<2469>144 340.8 S 2.5<667a>-2.5 G<73
+656c656374202d7420353030202d7220302026262072656164207965736e6f202626205b
+20796573203d2022247965736e6f22205d3b207468656e>-2.5 E 10<3e63>144 352.8
+S<6f6d6d616e6431>-10 E 2.5<3e65>144 364.8 S<6c7365>-2.5 E 10<3e63>144
+376.8 S<6f6d6d616e6431>-10 E 2.5<3e8c>144 388.8 S F1<7a73682f7a7574696c>
+108 405.6 Q F0<536f6d65207574696c6974792062>144 417.6 Q<75696c74696e732c
+20652e672e20746865206f6e6520666f7220737570706f7274696e6720636f6e8c677572
+6174696f6e20766961207374796c65732e>-.2 E F1<535542535449545554494f4e>87
+446.4 Q F0 -.15<5061>108 458.4 S<746820737562737469747574696f6e3a>.15 E
+2.5<246c>110.5 470.4 S 2.5<732d>-2.5 G 2.5<6c3d>-2.5 G 2.5<7a73682023>
+-2.5 F<6973206c696b>2.5 E<653a2027>-.1 E
+<6c73202d6c202f706174682f746f2f7a736827206f722027>-.1 E
+<6c73202d6c20607768696368207a73686027>-.1 E
+<50726f6365737320737562737469747574696f6e3a>108 506.4 Q 2.5<2428>110.5
+518.4 S<7669203d28636d64292920232065646974206f7574707574206f662027636d64
+27202863616c6c65642070726f6365737320737562737469747574696f6e292e>-2.5 E
+<537562737469747574696f6e206f662076>108 554.4 Q<61726961626c65733a>-.25
+E 2.5<2476>110.5 566.4 S<6172313d3432>-2.75 E 2.5<2474>110.5 578.4 S
+<6d703d76>-2.5 E<617231>-.25 E 2.5<2465>110.5 590.4 S
+<63686f20242828746d702929>-2.5 E<3432>110.5 602.4 Q<24>110.5 614.4 Q 2.5
+<2476>110.5 638.4 S<61723d666f6f>-2.75 E 2.5<2474>110.5 650.4 S
+<6d703d76>-2.5 E<6172>-.25 E 2.5<2465>110.5 662.4 S
+<63686f20247b285029746d707d>-2.5 E<666f6f>110.5 674.4 Q F1
+<414c4941534553>87 703.2 Q F0<537566>108 715.2 Q<8c7820616c696173657320
+61726520737570706f7274656420696e207a73682073696e63652076>-.25 E
+<657273696f6e20342e322e302e>-.15 E<536f6d652065>5 E<78616d706c65733a>
+-.15 E<616c696173202d73207465>110.5 727.2 Q<783d76696d>-.15 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203133>174.84 F
+0 Cg EP
+%%Page: 14 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<616c696173202d732068746d6c3d77336d>110.5 84 Q<616c696173202d73206f72>
+110.5 96 Q<673d77336d>-.18 E<4e6f>144 120 Q 2.652<7770>-.25 G .152
+<72657373696e672072657475726e2d6b>-2.652 F .452 -.15<65792061>-.1 H .152
+<6674657220656e746572696e672027666f6f626172>.15 F .152
+<2e76696d27207374617274732076696d207769746820666f6f626172>-.55 F .151
+<2e76696d2e2043616c6c696e6720612068746d6c2d8c6c65>-.55 F
+<72756e732062726f>144 132 Q<777365722077336d2e2027777777>-.25 E
+<2e7a73682e6f72>-.65 E<672720616e64207072657373696e6720656e746572207374
+617274732077336d2077697468206172>-.18 E<67756d656e7420777777>-.18 E
+<2e7a73682e6f72>-.65 E<672e>-.18 E
+<476c6f62616c20616c69617365732063616e206265207573656420616e>108 148.8 Q
+<79776865726520696e2074686520636f6d6d616e64206c696e652e>-.15 E
+<4578616d706c653a>5 E 2.5<2461>110.5 160.8 S
+<6c696173202d6720433d277c207763202d6c27>-2.5 E 2.5<2467>110.5 172.8 S
+<72657020616c696173207e2f2e7a73682f2a2043>-2.5 E<343433>110.5 184.8 Q<53
+6f6d65206d6f7265206f72206c6573732075736566756c20676c6f62616c20616c696173
+6573202863686f6f7365207768657468657220746865>108 201.6 Q 2.5<7961>-.15 G
+<72652075736566756c206f72206e6f7420666f7220796f75206f6e20796f7572206f>
+-2.5 E<776e293a>-.25 E<616c696173202d67202e2e2e3d272e2e2f2e2e>110.5
+213.6 Q<27>-.7 E<616c696173202d67202e2e2e2e3d272e2e2f2e2e2f2e2e>110.5
+225.6 Q<27>-.7 E<616c696173202d67202e2e2e2e2e3d272e2e2f2e2e2f2e2e2f2e2e>
+110.5 237.6 Q<27>-.7 E
+<616c696173202d672043413d22323e2631207c20636174202d4122>110.5 249.6 Q
+<616c696173202d6720433d277c207763202d6c27>110.5 261.6 Q
+<616c696173202d6720443d22444953504c41>110.5 273.6 Q<593d3a302e3022>-1.05
+E<616c696173202d6720444e3d2f6465>110.5 285.6 Q<762f6e756c6c>-.25 E
+<616c696173202d672045443d2265>110.5 297.6 Q<78706f727420444953504c41>
+-.15 E<593d3a302e3022>-1.05 E<616c696173202d672045473d277c262065>110.5
+309.6 Q<6772657027>-.15 E<616c696173202d672045483d277c26206865616427>
+110.5 321.6 Q<616c696173202d6720454c3d277c26206c65737327>110.5 333.6 Q
+<616c696173202d6720454c533d277c26206c657373202d5327>110.5 345.6 Q
+<616c696173202d672045544c3d277c26207461696c202d323027>110.5 357.6 Q
+<616c696173202d672045543d277c26207461696c27>110.5 369.6 Q
+<616c696173202d6720463d27207c20666d74202d27>110.5 381.6 Q
+<616c696173202d6720473d277c2065>110.5 393.6 Q<6772657027>-.15 E
+<616c696173202d6720483d277c206865616427>110.5 405.6 Q
+<616c696173202d6720484c3d277c262068656164202d323027>110.5 417.6 Q<616c69
+6173202d6720a76b3d222a7e282a2e627a327c2a2e677a7c2a2e74677a7c2a2e7a69707c
+2a2e7a2922>110.5 429.6 Q
+<616c696173202d67204c4c3d22323e2631207c206c65737322>110.5 441.6 Q
+<616c696173202d67204c3d227c206c65737322>110.5 453.6 Q
+<616c696173202d67204c533d277c206c657373202d5327>110.5 465.6 Q
+<616c696173202d67204d4d3d277c206d6f737427>110.5 477.6 Q
+<616c696173202d67204d3d277c206d6f726527>110.5 489.6 Q
+<616c696173202d67204e453d22323e202f6465>110.5 501.6 Q<762f6e756c6c22>
+-.25 E<616c696173202d67204e533d277c20736f7274202d6e27>110.5 513.6 Q
+<616c696173202d67204e554c3d223e202f6465>110.5 525.6 Q
+<762f6e756c6c20323e263122>-.25 E<616c696173202d6720504950453d277c27>
+110.5 537.6 Q
+<616c696173202d6720523d27203e202f632f6161612f7465652e7478742027>110.5
+549.6 Q<616c696173202d6720524e533d277c20736f7274202d6e7227>110.5 561.6 Q
+<616c696173202d6720533d277c20736f727427>110.5 573.6 Q
+<616c696173202d6720544c3d277c207461696c202d323027>110.5 585.6 Q
+<616c696173202d6720543d277c207461696c27>110.5 597.6 Q
+<616c696173202d672055533d277c20736f7274202d7527>110.5 609.6 Q
+<616c696173202d6720564d3d2f76>110.5 621.6 Q
+<61722f6c6f672f6d65737361676573>-.25 E
+<616c696173202d67205830473d277c20786172>110.5 633.6 Q<6773202d302065>
+-.18 E<6772657027>-.15 E<616c696173202d672058303d277c20786172>110.5
+645.6 Q<6773202d3027>-.18 E<616c696173202d672058473d277c20786172>110.5
+657.6 Q<67732065>-.18 E<6772657027>-.15 E
+<616c696173202d6720583d277c20786172>110.5 669.6 Q<677327>-.18 E
+<417272617920706172616d6574657273205b61727261795f6e616d653d2876>108
+705.6 Q<616c7565312076>-.25 E<616c756532202e2e2e2076>-.25 E
+<616c75654e295d2e>-.25 E 2.5<2473>110.5 717.6 S<74757069643d656d616373>
+-2.5 E 2.5<2465>110.5 729.6 S<63686f20247374757069645b335d>-2.5 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203134>174.84 F
+0 Cg EP
+%%Page: 15 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E<61>
+110.5 84 Q<24>110.5 96 Q/F1 10/Times-Bold@0 SF
+<5348454c4c2d534352495054494e47>87 124.8 Q F0 .284
+<546869732073656374696f6e2070726f>108 136.8 R .284
+<766964657320736f6d652065>-.15 F .285<78616d706c657320666f72206f6674656e
+206e6565646564207368656c6c7363726970742d73747566>-.15 F .285<662e204e6f
+74696365207468617420796f752073686f756c64206e6f7420757365206f74682d>-.25
+F<657277697365206d6f73742065>108 148.8 Q<78616d706c65732077>-.15 E
+<6f6e27>-.1 E 2.5<7477>-.18 G<6f726b2e>-2.6 E -.15<5061>108 172.8 S
+2.808<727365206f7074696f6e7320696e207368656c6c736372697074732e204578616d
+706c652074616b>.15 F 2.807
+<656e2066726f6d205a5753206279204164616d2043686f646f726f>-.1 F 2.807
+<77736b692028687474703a2f2f777777>-.25 F<2e63686f646f72>-.65 E<2d>-.2 E
+-.25<6f77>108 184.8 S<736b692e636f6d2f70726f6a656374732f7a77732f293a>.25
+E<70617273655f6f7074696f6e732829>108 196.8 Q<7b>108 208.8 Q
+<6f5f706f72743d282d70203939393929>118 220.8 Q
+<6f5f726f6f743d282d722057575729>118 232.8 Q
+<6f5f6c6f673d282d64205a57532e6c6f6729>118 244.8 Q<7a70617273656f70747320
+2d4b202d2d20703a3d6f5f706f727420723a3d6f5f726f6f7420683d6f5f68656c70>118
+268.8 Q<6966205b5b20243f20213d2030207c7c2022246f5f68656c702220213d202222
+205d5d3b207468656e>118 280.8 Q<6563686f2055736167653a202428626173656e61
+6d6520222430222920225b2d7020504f52>128 292.8 Q
+<545d205b2d7220444952454354>-.6 E<4f52>-.18 E<595d22>-.65 E -.15<6578>
+128 304.8 S<69742031>.15 E<8c>118 316.8 Q
+<706f72743d246f5f706f72745b325d>118 340.8 Q
+<726f6f743d246f5f726f6f745b325d>118 352.8 Q<6c6f673d246f5f6c6f675b325d>
+118 364.8 Q<6966205b5b2024726f6f745b315d20213d20272f27205d5d3b207468656e
+20726f6f743d22245057442f24726f6f74223b208c>118 388.8 Q<7d>108 400.8 Q
+2.5<236e>108 412.8 S .5 -.25<6f772075>-2.5 H
+<7365207468652066756e6374696f6e3a>.25 E
+<70617273655f6f7074696f6e7320242a>108 424.8 Q F1
+<4d495343ad4558414d504c4553>87 453.6 Q F0 3.004<48696e743a2041>108 465.6
+R .504<6c697374206f662076>3.004 F .505<616c696420676c6f62205175616c698c
+6572732063616e20626520666f756e6420696e207a736865>-.25 F .505
+<78706e2831292e205365652060>-.15 F .505<606d616e2031207a736865>-.74 F
+.505<78706e207c206c657373202d7027>-.15 F 3.005<2751>-.74 G
+<75616c698c657273>-3.005 E<666f722064657461696c732e>108 477.6 Q
+<4c6f616420616c6c2061>108 501.6 Q -.25<7661>-.2 G
+<696c61626c65206d6f64756c65732061742073746172747570>.25 E 2.5<2474>110.5
+513.6 S<797065736574202d55206d>-2.5 E 2.5<246d>110.5 525.6 S<3d2829>-2.5
+E 2.5<2466>110.5 537.6 S<6f72206d642028246d6f64756c655f7061746829206d3d
+28246d20246d642f2a2a2f2a282a653a275245504c>-2.5 E<593d247b5245504c>-1 E
+<5923246d642f7d273a3a722929>-1 E 2.5<247a>110.5 549.6 S
+<6d6f646c6f6164202d6920246d>-2.5 E
+<52656e616d6520616c6c204d50332d46696c65732066726f6d2060>108 573.6 Q
+<606e616d652077697468207370616365732e6d703327>-.74 E 2.5<2774>-.74 G 2.5
+<6f60>-2.5 G<604e616d652057>-3.24 E<697468205370616365732e6d703327>-.4 E
+<273a>-.74 E 2.5<2466>110.5 585.6 S<6f72206920696e202a2e6d70333b20646f>
+-2.5 E 12.5<3e6d>110.5 597.6 S 2.5<7624>-12.5 G 2.5<6924>-2.5 G
+<7b247b284329697d3a732f4d70332f6d70332f7d>-2.5 E 2.5<3e64>110.5 609.6 S
+<6f6e65>-2.5 E<446f>108 633.6 Q<776e6c6f61642077697468204c6154>-.25 E
+<65583248544d4c20637265617465642046696c65732028666f722065>-.7 E
+<78616d706c6520746865205a5348ad4775696465293a>-.15 E 2.5<2466>110.5
+645.6 S<6f72206620696e20687474703a2f2f7a73682e73756e736974652e646b2f4775
+6964652f7a736867756964657b2c7b30312e2e30387d7d2e68746d6c3b20646f>-2.5 E
+12.5<3e6c>110.5 657.6 S<796e78202d736f75726365202466203e247b663a747d>
+-12.5 E 2.5<3e64>110.5 669.6 S<6f6e65>-2.5 E<5265706c616365207468652075
+6e7265616461626c65204573636170652d53657175656e6365733a>108 693.6 Q 2.5
+<2461>110.5 705.6 S<75746f6c6f616420636f6c6f7273203b20636f6c6f7273>-2.5
+E 2.5<2470>110.5 717.6 S<72696e7420222462675b63>-2.5 E
+<79616e5d2466675b626c75655d59>-.15 E
+<6f752061726520616e207a7368207573657222203e3e202f6465>-1.1 E
+<762f7074732f33>-.25 E<7a736820342e322e34>72 768 Q 198.17
+<323030352d30352d3039203135>174.84 F 0 Cg EP
+%%Page: 16 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<46696c656e616d65ad457870616e73696f6e2e>108 84 Q/F1 10/Times-Bold@0 SF
+<4e6f74653a>5 E F0<284e292061637469>2.5 E -.25<7661>-.25 G<746573207365
+746f7074206e756c6c676c6f62206f6e6c7920666f722074686973206c6f6f702e>.25 E
+2.5<2466>110.5 96 S<6f72206920696e202a2e6f284e293b20646f>-2.5 E 12.5
+<3e72>110.5 108 S 2.5<6d24>-12.5 G<69>-2.5 E 2.5<3e64>110.5 120 S
+<6f6e65>-2.5 E<52652d6c696e6b696e672062726f6b>108 144 Q
+<656e206c696e6b733a>-.1 E 2.5<2466>110.5 156 S
+<6f72206620696e202e2f2a2a2f2a282d40293b20646f>-2.5 E 12.5<3e73>110.5 168
+S<746174202b6c696e6b202d41206c202466>-12.5 E 12.5<3e28>110.5 180 S<6364
+2024663a682026205b5b202d6520246c2e677a205d5d292026206c6e202d736620246c2e
+677a202466>-12.5 E 2.5<3e64>110.5 192 S<6f6e65>-2.5 E<53686f>108 216 Q
+2.5<776d>-.25 G 2.5<6561>-2.5 G<6c6c20746865202e63208c6c657320666f722077
+6869636820746865726520646f65736e27>-2.5 E 2.5<7465>-.18 G
+<786973742061202e6f208c6c653a>-2.65 E 2.5<2463>113 228 S
+<3d282a2e6329206f3d282a2e6f284e29292065>-2.5 E -.25<7661>-.25 G 2.5
+<6c27>.25 G<6c7320247b247b633a2328247b7e247b286a3a7c3a29247b6f3a727d7d7d
+292e637d3a3f646f6e657d27>-2.6 E<4c6f616420616c6c2061>108 252 Q -.25
+<7661>-.2 G<696c61626c65206d6f64756c657320617420737461727475703a>.25 E
+2.5<2474>113 264 S<797065736574202d55206d>-2.5 E 2.5<246d>113 276 S
+<3d2829>-2.5 E 2.5<2466>113 288 S<6f72206d642028246d6f64756c655f70617468
+29206d3d28246d20246d642f2a2a2f2a282a653a275245504c>-2.5 E
+<593d247b5245504c>-1 E<5923246d642f7d273a3a722929>-1 E 2.5<247a>113 300
+S<6d6f646c6f6164202d6920246d>-2.5 E<52656e616d6520616c6c208c6c6573207769
+7468696e2061206469726563746f727920737563682074686174207468656972206e616d
+6573206765742061206e756d6572616c207072658c7820696e2074686520646566>108
+324 Q<61756c7420736f7274206f726465723a>-.1 E 2.5<2469>113 336 S<3d313b20
+666f72206a20696e202a3b20646f206d7620246a2024692e246a3b202828692b2b29293b
+20646f6e65>-2.5 E 2.5<2469>113 348 S<3d313b20666f72206620696e202a3b2064
+6f206d762024662024286563686f2024697c2061>-2.5 E<776b20277b207072696e7466
+282225303364222c202430297d27292e24663b202828692b2b29293b20646f6e65>-.15
+E 2.5<2469>113 360 S<6e7465>-2.5 E<67657220693d303b20666f72206620696e20
+2a3b20646f206d7620246620245b692b3d315d2e24663b20646f6e65>-.15 E<46696e64
+2028616e64207072696e742920616c6c2073796d626f6c6963206c696e6b732077697468
+6f7574206120746172>108 384 Q
+<6765742077697468696e207468652063757272656e7420646972747265653a>-.18 E
+2.5<24248c>113 396 S<6c65202a2a2f2a28444029207c2066677265702062726f6b>
+-2.5 E<656e>-.1 E 2.5<2466>113 408 S<6f72206920696e202a2a2f2a284440293b
+205b5b202d66202469207c7c202d64202469205d5d207c7c206563686f202469>-2.5 E
+2.5<2465>113 420 S<63686f202a2a2f2a28402d5e2e2f3d257029>-2.5 E 2.5<2470>
+113 432 S<72696e74202d6c202a2a2f2a282d4029>-2.5 E
+<4c69737420616c6c20706c61696e208c6c6573207468617420646f206e6f74206861>
+108 456 Q .3 -.15<7665206578>-.2 H
+<74656e73696f6e73206c697374656420696e20608c676e6f7265273a>.15 E 2.5
+<246c>113 468 S 2.5<732a>-2.5 G
+<2a2f2a7e2a28247b7e247b286a2f7c2f298c676e6f72657d7d29282e29>-2.5 E 2.5
+<2373>113 480 S<65652061626f>-2.5 E -.15<7665>-.15 G 2.5<2c62>.15 G
+<7574206e6f>-2.7 E 2.5<776f>-.25 G<6d69742065>-2.5 E -.15<7865>-.15 G
+<63757461626c6573>.15 E 2.5<246c>113 492 S 2.5<732a>-2.5 G
+<2a2f2a7e2a28247b7e247b286a2f7c2f298c676e6f72657d7d29282e5e2a29>-2.5 E
+<5072696e74206f7574208c6c6573207468617420646f6e74206861>108 516 Q .3
+-.15<7665206578>-.2 H
+<74656e73696f6e73202872657175697265207365746f70742065>.15 E
+<7874656e646564676c6f6220646f74676c6f62293a>-.15 E 2.5<2470>113 528 S
+<72696e74662027257330205e3f2a2e2a>-2.5 E<4c697374208c6c657320696e207265>
+108 552 Q -.15<7665>-.25 G
+<727365206f7264657220736f72746564206279206e616d653a>.15 E 2.5<2470>113
+564 S<72696e74202d726c202d2d202a284f6e29>-2.5 E<6f72>113 576 Q 2.5<2470>
+113 588 S<72696e74202d726c202d2d202a285e6f6e29>-2.5 E<53796e6f6e>108 612
+Q<796d696320746f2060>-.15 E<607073206178207c2061>-.74 E
+<776b20277b7072696e742024317d27>-.15 E -.74<2727>-.74 G<3a>.74 E 2.5
+<2470>113 624 S
+<72696e74202d6c202f70726f632f2a2f637764283a683a743a732f73656c662f2f29>
+-2.5 E
+<4765742074686520504944206f6620612070726f636573732028776974686f75742060>
+108 648 Q<60707327>-.74 E<272c2060>-.74 E<6073656427>-.74 E<272c2060>
+-.74 E<60706772657027>-.74 E<272c202e2e2028756e646572204c696e7578293a>
+-.74 E 2.5<2470>113 660 S<696432202829207b>-2.5 E 7.5<3e6c>113 672 S
+<6f63616c2069>-7.5 E 7.5<3e66>113 684 S
+<6f72206920696e202f70726f632f3c2d3e2f73746174>-7.5 E 2.5<3e64>113 696 S
+<6f>-2.5 E 7.5<3e5b>113 708 S 2.5<5b22>-7.5 G<24283c2024692922203d202a5c
+2828247b286a3a7c3a297e407d295c292a205d5d202626206563686f2024693a683a74>
+-2.5 E 2.5<3e64>113 720 S<6f6e65>-2.5 E<7a736820342e322e34>72 768 Q
+198.17<323030352d30352d3039203136>174.84 F 0 Cg EP
+%%Page: 17 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<3e7d>113 84 S<666f72205820696e20276e2720276f2720277027202771272027>108
+108 Q<72272027>-.5 E<73272027>-.55 E<7427202775272027>-.18 E
+<76272027772720277827202779273b20646f202e2e2e3a>-.5 E 2.5<2466>113 120 S
+<6f722028282069203d203336236e3b2069203c3d20333623793b20692b2b2029293b20
+646f>-2.5 E 7.5<3e70>113 132 S
+<72696e7420247b2428285b232333365d6929293a6c7d>-7.5 E 2.5<3e64>113 144 S
+<6f6e65>-2.5 E 2.5<236f>108 156 S 2.5<7269>-2.5 G 2.5<6e63>-2.5 G
+<6f6d62696e6174696f6e20776974682060>-2.5 E<60646327>-.74 E<27>-.74 E 2.5
+<2470>113 168 S
+<72696e74207b24282823236e29292e2e24282823237929297d5020313050207c206463>
+-2.5 E 2.5<236f>108 180 S 2.5<7277>-2.5 G<6974682060>-2.5 E<6065>-.74 E
+-.25<7661>-.25 G<6c27>.25 E<27>-.74 E 2.5<2465>113 192 S -.25<7661>-2.75
+G 2.5<6c70>.25 G<72696e742027247b2428285b232333365d277b2428283336236e29
+292e2e2428283336237929297d2729293a6c7d27>-2.5 E -.15<466f>108 216 S
+<726561636820696e206f6e65206c696e65206f66207368656c6c3a>.15 E 2.5<2466>
+113 228 S<6f72206620282a29207072696e74202d72202d2d202466>-2.5 E<436f70>
+108 252 Q 2.5<796164>-.1 G<69726563746f72792072656375727369>-2.5 E -.15
+<7665>-.25 G<6c7920776974686f757420646174612f8c6c65733a>.15 E 2.5<2464>
+113 264 S<6972733d282a2a2f2a282f2929>-2.5 E 2.5<2463>113 276 S 2.5<642d>
+-2.5 G 2.5<2d24>-2.5 G<646573745f726f6f74>-2.5 E 2.5<246d>113 288 S
+<6b646972202d70202d2d202464697273>-2.5 E 2.5<236f>108 300 S 2.5<7277>
+-2.5 G<6974686f7574207a7368>-2.5 E 2.5<248c>113 312 S
+<6e64202e202d747970652064202d65>-2.5 E -.15<7865>-.15 G 2.5<6365>.15 G
+.8 -.4<6e762064>-2.5 H<3d2224646573745f726f6f7422207368202d6320272065>.4
+E -.15<7865>-.15 G 2.5<636d>.15 G
+<6b646972202d70202d2d202224642f2431222720277b7d2720277b7d27203b>-2.5 E
+<49662060666f6f3d323327>108 336 Q<272c207468656e207072696e74207769746820
+31302064696769742077697468206c656164696e67202730273a>-.74 E 2.5<2466>113
+348 S<6f6f3d3233>-2.5 E 2.5<2470>113 360 S
+<72696e7420247b28723a31303a3a303a29666f6f7d>-2.5 E<46696e6420746865206e
+616d65206f6620616c6c20746865208c6c657320696e20746865697220686f6d65206469
+726563746f72792074686174206861>108 384 Q .3 -.15<7665206d>-.2 H<6f726520
+7468616e203230206368617261637465727320696e207468656972208c6c65206e616d65
+733a>.15 E
+<7072696e74202d726c2024484f4d452f247b286c3a32303a3a3f3a297e3a2d7d2a>113
+396 Q<5361>108 420 Q .3 -.15<76652061>-.2 H<72726179733a>.15 E 2.5<2470>
+113 432 S<72696e74202d72202d2d20247b287171296d7d203e20246e616d656f66>
+-2.5 E 12.5<8c6c652023>-.25 F<7361>2.5 E .3 -.15<76652069>-.2 H<74>.15 E
+2.5<2465>113 444 S -.25<7661>-2.75 G 2.5<6c22>.25 G
+<6d3d282428636174202d2d20246e616d656f66>-2.5 E 27.5<8c6c6529222023>-.25
+F<6f7220757365>2.5 E 2.5<246d>113 456 S
+<3d2822247b28405129247b287a29222428636174202d2d20246e616d656f66>-2.5 E
+<8c6c6529227d7d2229202320746f20726573746f7265206974>-.25 E .082<47657420
+6120226c73202d6c22206f6e20616c6c20746865208c6c657320696e2074686520747265
+6520746861742061726520796f756e676572207468616e20612073706563698c65642061
+67652028652e6720226c73202d6c2220616c6c20746865208c6c657320696e2074686520
+74726565>108 480 R<74686174207768657265206d6f64698c656420696e2074686520
+6c61737420322064617973293a>108 492 Q 2.5<246c>113 504 S 2.5<732d>-2.5 G
+<746c64202a2a2f2a286d2d3229>-2.5 E .181<546869732077696c6c206769>108 528
+R .481 -.15<76652079>-.25 H .181<6f752061206c697374696e672031208c6c6520
+7065726c206c696e6520286e6f7420e0206c61206c73202d52292e>.15 F .182
+<5468696e6b206f6620616e20656173792077>5.182 F .182<617920746f206861>-.1
+F .482 -.15<766520612022>-.2 H .182<6c73202d5222207374796c65206f75742d>
+.15 F<7075742077697468206f6e6c79208c6c6573206e65>108 540 Q
+<776572207468616e203220646179206f6c642e>-.25 E 2.5<2466>113 552 S
+<6f72206420282e202e2f2a2a2f2a282f2929207b>-2.5 E 7.5<3e70>113 564 S
+<72696e74202d72202d2d20242730247b647d3a>-7.5 E 7.5<3e63>113 576 S 2.5
+<6424>-7.5 G 2.5<6426>-2.5 G 2.5<267b>-2.5 G 17.5<3e6c>113 588 S
+<3d282a284e6d2d322929>-17.5 E 17.5<3e28>113 600 S
+<2824236c2929202626206c73202d6c7464202d2d20246c>-17.5 E 17.5<3e63>113
+612 S 2.5<647e>-17.5 G<2d>-2.5 E 7.5<3e7d>113 624 S 2.5<3e7d>113 636 S
+<496620796f7520616c736f2077>108 660 Q
+<616e74206469726563746f7269657320746f20626520696e636c756465642065>-.1 E
+-.15<7665>-.25 G 2.5<6e69>.15 G 2.5<6674>-2.5 G
+<68656972206d74696d65206973206d6f7265207468616e20322064617973206f6c643a>
+-2.5 E 2.5<2466>113 672 S<6f72206420282e202e2f2a2a2f2a282f2929207b>-2.5
+E 7.5<3e70>113 684 S<72696e74202d72202d2d20242730247b647d3a>-7.5 E 7.5
+<3e63>113 696 S 2.5<6424>-7.5 G 2.5<6426>-2.5 G 2.5<267b>-2.5 G 15<3e6c>
+113 708 S<3d282a284e2f2c6d2d322929>-15 E 15<3e28>113 720 S
+<2824236c2929202626206c73202d6c7464202d2d20246c>-15 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203137>174.84 F
+0 Cg EP
+%%Page: 18 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 15
+<3e63>113 84 S 2.5<647e>-15 G<2d>-2.5 E 7.5<3e7d>113 96 S 2.5<3e7d>113
+108 S<416e6420696620796f752077>108 132 Q<616e74206f6e6c7920746865206469
+726563746f726965732077697468206d74696d65203c2032206461797320746f20626520
+6c69737465643a>-.1 E 2.5<2466>113 144 S
+<6f72206420282e202e2f2a2a2f2a284e2f6d2d322929207b>-2.5 E 7.5<3e70>113
+156 S<72696e74202d72202d2d20242730247b647d3a>-7.5 E 7.5<3e63>113 168 S
+2.5<6424>-7.5 G 2.5<6426>-2.5 G 2.5<267b>-2.5 G 15<3e6c>113 180 S
+<3d282a284e6d2d322929>-15 E 15<3e28>113 192 S
+<2824236c2929202626206c73202d6c7464202d2d20246c>-15 E 15<3e63>113 204 S
+2.5<647e>-15 G<2d>-2.5 E 7.5<3e7d>113 216 S 2.5<3e7d>113 228 S
+<5072696e742034322060>108 252 Q<602d27>-.74 E<273a>-.74 E 2.5<2465>113
+264 S<63686f20247b286c3a34323a3a2d3a297d>-2.5 E 2.5<236f>108 276 S 2.5
+<7275>-2.5 G<73652060>-2.5 E<6024434f4c554d5327>-.74 E<27>-.74 E 2.5
+<2465>113 288 S<63686f20247b286c3a24434f4c554d4e533a3a2d3a297d>-2.5 E
+2.5<2361>108 300 S<6e64206e6f>-2.5 E 2.5<7777>-.25 G<69746820636f6c6f72
+73202872657175697265206175746f6c6f616420636f6c6f7273203b636f6c6f727329>
+-2.5 E 2.5<2465>113 312 S<63686f20222462675b7265645d2466675b626c61636b5d
+247b286c3a34323a3a2d3a297d22>-2.5 E
+<52656469726563742053544445525220746f206120636f6d6d616e64206c696b>108
+336 Q 2.5<6578>-.1 G<6c65737320776974686f7574207265646972656374696e67>
+-2.5 E<5354444f55542061732077656c6c3a>5 E 2.5<2466>113 348 S
+<6f6f20323e3e28786c65737329>-2.5 E 2.5<2362>108 360 S
+<757420746869732065>-2.7 E -.15<7865>-.15 G
+<63757465732074686520636f6d6d616e64206173796e6368726f6e6f75736c79>.15 E
+2.5<2e54>-.65 G 2.5<6f64>-3.3 G 2.5<6f69>-2.5 G 2.5<7473>-2.5 G
+<796e6368726f6e6f75736c793a>-2.5 E 2.5<247b7b66>113 372 S
+<6f6f20313e2633207d20323e2631207c20786c657373207d20333e2631>-2.5 E<5265
+6e616d6520616c6c204d50332d46696c65732066726f6d206e616d652077697468207370
+616365732e6d703320746f204e616d652057>108 396 Q
+<697468205370616365732e6d70333a>-.4 E 2.5<2466>113 408 S
+<6f72206920696e202a2e6d70333b20646f>-2.5 E 12.5<3e6d>113 420 S 2.5<7624>
+-12.5 G 2.5<6924>-2.5 G<7b247b284329697d3a732f4d70332f6d70332f7d>-2.5 E
+2.5<3e64>113 432 S<6f6e65>-2.5 E<4d61746368208c6c65206e616d657320636f6e
+7461696e696e67206f6e6c792064696769747320616e6420656e64696e67207769746820
+2e786d6c2028726571756972657365746f7074206b7368676c6f62293a>108 456 Q 2.5
+<246c>113 468 S 2.5<732d>-2.5 G 2.5<6c5b>-2.5 G<302d395d23232e786d6c>
+-2.5 E 2.5<246c>113 480 S 2.5<732d>-2.5 G 2.5<6c3c>-2.5 G
+<302d3e2e786d6c>-2.5 E<52656d6f>108 504 Q .3 -.15<76652061>-.15 H
+<6c6c20226e6f6e2074787422208c6c65733a>.15 E 2.5<2472>113 516 S 2.5<6d2e>
+-2.5 G<2f5e2a2e747874>-2.5 E<4d6f>108 540 Q .3 -.15<76652032>-.15 H<3030
+208c6c65732066726f6d2061206469726563746f727920696e746f20616e6f746865723a>
+.15 E 2.5<246d>113 552 S 2.5<762d>-2.5 G 2.5<2d2a>-2.5 G
+<285b312c3230305d29202f616e6f746865722f446972>-2.5 E<436f6e>108 576 Q
+-.15<7665>-.4 G
+<727420696d616765732028666f6f2e676966203d3e20666f6f2e706e67293a>.15 E
+2.5<2466>113 588 S<6f72206920696e202a2a2f2a2e6769663b20636f6e>-2.5 E
+-.15<7665>-.4 G<72742024692024693a72>.15 E<2e706e67>-.55 E<436f6e>108
+612 Q -.15<7665>-.4 G
+<7274206120636f6c6c656374696f6e206f66206d7033208c6c657320746f2077>.15 E
+-2.25 -.2<61762065>-.1 H<6f72206364722028652e672e208c6c652e77>2.7 E .4
+-.2<6176202d>-.1 H 2.5<3e8c>.2 G<6c652e6d7033293a>-2.5 E 2.5<2466>113
+624 S<6f72206920282e2f2a2e6d7033297b6d7067333231202d2d77202d202469203e20
+247b693a727d2e77>-2.5 E -.2<6176>-.1 G<7d>.2 E<446f>108 648 Q
+<776e6c6f61642077697468204c6154>-.25 E 2.5
+<65583248544d4c2063726561746564>-.7 F<46696c65732028666f722065>2.5 E
+<78616d706c6520746865205a53482d4775696465293a>-.15 E 2.5<2466>113 660 S<
+6f72206620696e20687474703a2f2f7a73682e73756e736974652e646b2f47756964652f
+7a736867756964657b2c7b30312e2e30387d7d2e68746d6c3b20646f>-2.5 E 12.5
+<3e6c>113 672 S<796e78202d736f75726365202466203e247b663a747d>-12.5 E 2.5
+<3e64>113 684 S<6f6e65>-2.5 E<4d6f>108 708 Q .3 -.15<76652061>-.15 H
+<6c6c208c6c657320696e206469723120616e6420646972322074686174206861>.15 E
+.3 -.15<7665206c>-.2 H<696e6520636f756e74732067726561746572207468616e20
+313020746f20616e6f74686572206469726563746f72792073617920222f6d6f72653130
+223a>.15 E 2.5<246d>113 720 S 2.5<7664>-2.5 G<69725b31325d2f2a2a2f2a2e63
+72282d2e657b272828607763202d6c203c20245245504c>-2.5 E
+<5960203e2031302929277d29202f6d6f72653130>-1 E<7a736820342e322e34>72 768
+Q 198.17<323030352d30352d3039203138>174.84 F 0 Cg EP
+%%Page: 19 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<4d616b>108 84 Q 2.5<6577>-.1 G<6974682064706b672061206d6173746572>-2.5
+E<2d6c697374206f662065>-.2 E -.15<7665>-.25 G
+<72798c6c6520746861742069742068617320696e7374616c6c65643a>.15 E 2.5
+<2464>113 96 S<6966>-2.5 E 2.5<663c>-.25 G
+<288c6e64202f207c20736f727429203c28636174202f76>-2.5 E
+<61722f6c69622f64706b672f696e666f2f2a2e6c697374207c20736f727429>-.25 E<
+5265706c6163652074686520756e7265616461626c65204573636170652d53657175656e
+6365733a>108 120 Q 2.5<2461>113 132 S
+<75746f6c6f616420636f6c6f7273203b20636f6c6f7273>-2.5 E 2.5<2470>113 144
+S<72696e7420222462675b63>-2.5 E<79616e5d2466675b626c75655d59>-.15 E
+<6f752061726520616e207a7368207573657222203e3e202f6465>-1.1 E
+<762f7074732f33>-.25 E<4765742041534349492076>108 168 Q
+<616c7565206f662061206368617261637465723a>-.25 E 2.5<2463>113 180 S
+<6861723d4e203b207072696e742024282823636861722929>-2.5 E
+<46696c656e616d6520737566>108 204 Q<8c783a204e6f74653a2054686520284e2920
+7361797320746f2075736520746865206e756c6c676c6f62206f7074696f6e20666f7220
+7468697320706172746963756c617220676c6f62207061747465726e2e>-.25 E 2.5
+<2466>113 216 S<6f72206920696e202a2e6f284e293b20646f>-2.5 E 12.5<3e72>
+113 228 S 2.5<6d24>-12.5 G<69>-2.5 E 2.5<3e64>113 240 S<6f6e65>-2.5 E<52
+656e616d65208c6c65733b20692e20652e20464f4f20746f20666f6f20616e6420626172
+20746f2042>108 264 Q<41523a>-.35 E 2.5<2466>113 276 S<6f72206920696e202a
+282e293b206d7620246920247b693a6c7d20232060464f4f2720746f2060666f6f27>
+-2.5 E 2.5<2466>113 288 S<6f72206920696e202a282e293b206d7620246920247b69
+3a757d2023206062617220746f206042>-2.5 E<415227>-.35 E<53686f>108 312 Q
+2.5<7761>-.25 G<6c6c20737569642d8c6c657320696e202450>-2.5 E -1.11<4154>
+-.92 G<483a>1.11 E 2.5<246c>113 324 S 2.5<732d>-2.5 G
+<6c61746720247b28732e3a2e2950>-2.5 E -1.11<4154>-.92 G
+<487d207c206772657020275e2e2e2e7327>1.11 E 2.5<236f>108 336 S 2.5<726d>
+-2.5 G<6f726520636f6d706c65>-2.5 E 2.5<783b>-.15 G<29>-2.5 E 2.5<2470>
+113 348 S<72696e74202d6c20247b5e706174687d2f2a284e732c5329>-2.5 E 2.5
+<236f>108 360 S 2.5<7273>-2.5 G<686f>-2.5 E 2.5<776f>-.25 G<6e6c792065>
+-2.5 E -.15<7865>-.15 G<63757461626c6573207769746820612075736572206769>
+.15 E -.15<7665>-.25 G 2.5<6e70>.15 G<61747465726e>-2.5 E 2.5<2470>113
+372 S<72696e74202d6c20247b5e706174687d2f2a76696d2a282a4e29>-2.5 E<677a69
+70208c6c6573207768656e20636f6e7461696e696e672061206365727461696e20737472
+696e673a>108 396 Q 2.5<2467>113 408 S<7a697020247b2870733a>-2.5 E
+<3a2922242867726570202d6c5a20666f6f626172202e2f2a2e747874282e2929227d>5
+E 3.343<4173>108 432 S 3.343<6d616c6c206f6e652d6c696e6572>-3.343 F 3.343
+<2c74>-.4 G .843<6861742072656164732066726f6d20737464696e20616e64207072
+696e747320746f207374646f757420746865208c72737420756e69717565206c696e6520
+692e20652e20646f6573206e6f74207072696e74206c696e6573>-3.343 F .611
+<74686174206861>108 444 R .911 -.15<76652062>-.2 H .611<65656e207072696e
+746564206265666f72652028746869732069732073696d696c617220746f207468652075
+6e6971756520636f6d6d616e642c2062>.15 F .612
+<757420756e697175652063616e206f6e6c792068616e646c652061646a6163656e74>
+-.2 F<6c696e6573293a>108 456 Q 2.5<2449>113 468 S<46533d2427303b20707269
+6e74202d726c202d2d20247b284f617529247b284f61292428636174208c6c653b656368
+6f202e295b312c2d325d7d7d>-2.5 E<4c697374732065>108 492 Q -.15<7665>-.25
+G<72792065>.15 E -.15<7865>-.15 G<63757461626c6520696e2050>.15 E -1.11
+<4154>-.92 G<483a>1.11 E 2.5<2470>113 504 S
+<72696e74202d6c20247b5e706174687d2f2a282d2a4e29>-2.5 E<4d6174636820616c
+6c202e63208c6c657320696e20616c6c207375626469726563746f726965732c205f65>
+108 528 Q<78636570745f20616e>-.15 E 2.5<7953>-.15 G
+<434353207375626469726563746f726965733f>-2.5 E 2.5<246c>113 540 S 2.5
+<732a>-2.5 G<2a2f2a2e637e282a2f2923534343532f2a>-2.5 E<4c69737420616c6c
+2060524541444d4527202d208c6c657320636173652d696e73656e73697469>108 564 Q
+.3 -.15<76652077>-.25 H<697468206d61782e206f6e65207479706f3a>.15 E 2.5
+<246c>113 576 S 2.5<732a>-2.5 G<2a2f2a282369613229726561646d65>-2.5 E
+<5072696e742076>108 600 Q
+<657273696f6e20696e666f726d6174696f6e206f66207a73683a>-.15 E 2.5<2470>
+110.5 612 S<72696e7420245a53485f56455253494f4e>-2.5 E
+<47657420686f737473706563698c6320696e666f726d6174696f6e3a>108 648 Q 2.5
+<2465>110.5 660 S<63686f20244d41>-2.5 E
+<434854595045202456454e444f5220244f5354595045>-.4 E -.15<4661>108 696 S
+<7374206368616e6765206f66206469726563746f726965733a>.15 E
+<616c696173202e2e2e3d276364202e2e2f2e2e>110.5 708 Q<27>-.7 E
+<616c696173202e2e2e2e3d276364202e2e2f2e2e2f2e2e>110.5 720 Q<27>-.7 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203139>174.84 F
+0 Cg EP
+%%Page: 20 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<616c696173202e2e2e2e2e3d276364202e2e2f2e2e2f2e2e2f2e2e>110.5 84 Q<27>
+-.7 E<616c696173202e2e2e2e2e2e3d276364202e2e2f2e2e2f2e2e2f2e2e2f2e2e>
+110.5 96 Q<27>-.7 E
+<616c696173202e2e2e2e2e2e2e3d276364202e2e2f2e2e2f2e2e2f2e2e2f2e2e2f2e2e>
+110.5 108 Q<27>-.7 E
+<4d61696c706174683a2073696d706c65206d756c7469706c65206d61696c706174683a>
+108 144 Q<6d61696c706174683d2824484f4d452f4d61696c2f6d626f78273f6e65>113
+156 Q 2.5<776d>-.25 G<61696c20696e206d626f7827>-2.5 E
+<24484f4d452f4d61696c2f7475782e752d73747261736267273f6e65>138 168 Q 2.5
+<776d>-.25 G<61696c20696e2074757827>-2.5 E
+<24484f4d452f4d61696c2f6c696c6f273f6e65>138 180 Q 2.5<776d>-.25 G
+<61696c20696e206c696c6f27>-2.5 E
+<24484f4d452f4d61696c2f6c6461702d6672273f6e65>138 192 Q 2.5<776d>-.25 G
+<61696c20696e206c6461702d66722729>-2.5 E
+<4d61696c706174683a2064796e616d6963206d61696c706174683a>108 228 Q
+<74797065736574202d61206d61696c70617468>113 240 Q
+<666f72206920696e207e2f4d61696c2f4c697374732f2a282e293b20646f>113 252 Q
+<6d61696c706174685b24236d61696c706174682b315d3d22247b697d3f59>120.5 264
+Q<6f75206861>-1.1 E .3 -.15<7665206e>-.2 H .5 -.25<6577206d>.15 H
+<61696c20696e20247b693a747d2e22>.25 E<646f6e65>113 276 Q -1.22 -.74
+<4176206f>108 312 T
+<696420676c6f6262696e67206f6e207370656369616c20636f6d6d616e64733a>.74 E
+<666f7220636f6d20696e20616c6961732065>108 324 Q
+<787072208c6e64206d617474726962206d636f70>-.15 E 2.5<796d>-.1 G
+<646972206d64656c2077686963683b>-2.5 E
+<616c6961732024636f6d3d226e6f676c6f622024636f6d22>108 336 Q -.15<466f>
+108 372 S 3.011<726d>.15 G .511<6967726174696e6720796f757220626173687072
+6f6d707420746f207a73682075736520746865207363726970742062617368327a736870
+726f6d7074206c6f636174656420696e20746865207a736820736f757263652064697374
+726962>-3.011 F<7574696f6e>-.2 E<756e64657220274d697363272e>108 384 Q
+-.15<466f>108 420 S 3.121<726d>.15 G .621<6967726174696f6e2066726f6d2028
+742963736820746f207a736820757365207468652063327a20746f6f6c20746861742063
+6f6e>-3.121 F -.15<7665>-.4 G .622
+<7274732063736820616c696173657320616e6420656e>.15 F .622
+<7669726f6e6d656e7420616e64207368656c6c2076>-.4 F<6172692d>-.25 E .057<
+61626c657320746f207a73682e20497420646f657320746869732062792072756e6e696e
+67206373682c20616e64206861>108 432 R .056
+<76696e6720637368207265706f7274206f6e20616c696173657320616e642076>-.2 F
+.056<61726961626c65732e2054686520736372697074207468656e20636f6e2d>-.25 F
+-.15<7665>108 444 S .613<72747320746865736520746f207a736820737461727475
+70208c6c65732e2049742068617320736f6d652069737375657320616e64207573616765
+20696e666f726d6174696f6e20746861742061726520646f63756d656e74656420617420
+74686520746f70206f66>.15 F<74686973207363726970742e>108 456 Q .66<486572
+65206172652066756e6374696f6e7320746f2073657420746865207469746c6520616e64
+2068617264737461747573206f6620616e>108 492 R/F1 10/Times-Bold@0 SF<5854>
+3.16 E<65726d>-.92 E F0 .66<6f72206f66>3.16 F F1 .66<474e5520536372>3.16
+F<65656e>-.18 E F0 .66<746f20277a73682720616e64207468652063757272656e74>
+3.16 F<6469726563746f7279>108 504 Q 3.1<2c72>-.65 G<65737065637469>-3.1
+E -.15<7665>-.25 G<6c79>.15 E 3.1<2c77>-.65 G .6<68656e207468652070726f
+6d707420697320646973706c617965642c20616e6420746f2074686520636f6d6d616e64
+206e616d6520616e642072657374206f662074686520636f6d6d616e64>-3.1 F
+<6c696e652c207265737065637469>108 516 Q -.15<7665>-.25 G<6c79>.15 E 2.5
+<2c77>-.65 G<68656e206120636f6d6d616e642069732065>-2.5 E -.15<7865>-.15
+G<63757465643a>.15 E<66756e6374696f6e207469746c65207b>113 528 Q
+<6966205b5b20245445524d203d3d202273637265656e22205d5d3b207468656e>123
+540 Q 2.5<2355>128 552 S<7365207468657365207477>-2.5 E 2.5<6f66>-.1 G
+<6f7220474e552053637265656e3a>-2.5 E<7072696e74202d6e52202427>128 564 Q
+2.5<33336b2724312427203333275c>5 F<7072696e74202d6e52202427>128 576 Q
+<33335d303b272432242727>5 E<656c6966205b5b20245445524d203d3d202278746572
+6d22207c7c20245445524d203d3d20227278767422205d5d3b207468656e>123 588 Q
+2.5<2355>128 600 S<73652074686973206f6e6520696e737465616420666f72205854>
+-2.5 E<65726d733a>-.7 E<7072696e74202d6e52202427>128 612 Q
+<33335d303b27242a242727>5 E<8c>123 624 Q<7d>113 636 Q
+<66756e6374696f6e20707265636d64207b>113 660 Q
+<7469746c65207a736820222450574422>123 672 Q<7d>113 684 Q
+<66756e6374696f6e2070726565>113 708 Q -.15<7865>-.15 G 2.5<637b>.15 G
+<656d756c617465202d4c207a7368>123 720 Q<7a736820342e322e34>72 768 Q
+198.17<323030352d30352d3039203230>174.84 F 0 Cg EP
+%%Page: 21 22
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<6c6f63616c202d6120636d643b20636d643d28247b287a29317d29>123 84 Q
+<7469746c652024636d645b315d3a74202224636d645b322c2d315d22>123 96 Q<7d>
+113 108 Q<5075742074686520666f6c6c6f>108 120 Q<77696e67206c696e6520696e
+746f20796f7572207e2f2e73637265656e726320746f2073656520746869732066>-.25
+E<616e63>-.1 E 2.5<7968>-.15 G<6172647374617475733a>-2.5 E
+<63617074696f6e20616c>113 132 Q -.1<7761>-.1 G
+<7973202225336e202574253f2028257529253f253f3a202568253f22>.1 E
+<5370656369616c2076>108 168 Q<61726961626c657320776869636820617265206173
+7369676e6564206f7220796f752063616e2061737369676e3a>-.25 E 2.5<2465>110.5
+180 S<63686f20244c494e454e4f202452414e444f4d20245345434f4e44532024434f4c
+554d4e532024484953544348415253>-2.5 E 2.5<2465>110.5 192 S
+<63686f202455494420244555494420244749442024454749442024555345524e>-2.5 E
+<414d45>-.35 E 2.5<2465>110.5 204 S
+<63686f20248c676e6f726520246d61696c706174682024636470617468>-2.5 E
+<53686f>108 240 Q 2.5<776d>-.25 G 2.5<6561>-2.5 G<6c6c20746865202e63208c
+6c657320666f7220776869636820746865726520646f65736e27>-2.5 E 2.5<7465>
+-.18 G<786973742061202e6f208c6c653a>-2.65 E 2.5<2463>110.5 252 S
+<3d282a2e6329206f3d282a2e6f284e29292065>-2.5 E -.25<7661>-.25 G 2.5
+<6c27>.25 G<6c7320247b247b633a2328247b7e247b286a3a7c3a29247b6f3a727d7d7d
+292e637d3a3f646f6e657d27>-2.6 E<46696e642028616e64207072696e742920616c6c
+2073796d626f6c6963206c696e6b7320776974686f7574206120746172>108 288 Q
+<6765742077697468696e207468652063757272656e7420646972747265653a>-.18 E
+2.5<248c>110.5 300 S<6c65202a2a2f2a28444029207c2066677265702062726f6b>
+-2.5 E<656e>-.1 E 2.5<2466>110.5 312 S<6f72206920696e202a2a2f2a28444029
+3b205b5b20ad66202469207c7c20ad64202469205d5d207c7c206563686f202469>-2.5
+E 2.5<2465>110.5 324 S<63686f202a2a2f2a2840ad5e2e2f3d257029>-2.5 E 2.5
+<2470>110.5 336 S<72696e7420ad6c202a2a2f2a28ad4029>-2.5 E<52656e616d6520
+8c6c65733b20692e20652e20464f4f20746f20666f6f20616e642062617220746f2042>
+108 372 Q<41523a>-.35 E 2.5<2466>110.5 384 S<6f72206920696e202a282e293b
+206d7620246920247b693a6c7d20232060464f4f2720746f2060666f6f27>-2.5 E 2.5
+<2466>110.5 396 S<6f72206920696e202a282e293b206d7620246920247b693a757d20
+23206062617220746f206042>-2.5 E<415227>-.35 E<53686f>108 420 Q 2.5<7761>
+-.25 G<6c6c20737569642d8c6c657320696e202450>-2.5 E -1.11<4154>-.92 G
+<483a>1.11 E 2.5<246c>110.5 432 S 2.5<73ad>-2.5 G
+<6c61746720247b28732e3a2e2950>-2.5 E -1.11<4154>-.92 G
+<487d207c206772657020275e2e2e2e7327>1.11 E<4c69737420616c6c206052454144
+4d4527202d208c6c657320636173652d696e73656e73697469>108 456 Q .3 -.15
+<76652077>-.25 H<697468206d61782e206f6e65207479706f3a>.15 E 2.5<246c>
+110.5 468 S 2.5<732a>-2.5 G<2a2f2a282369613229726561646d65>-2.5 E/F1 10
+/Times-Bold@0 SF
+<285245435552534956452920474c4f4242494e47ad4558414d504c4553>87 496.8 Q
+F0<53656172636820666f722060524541444d452720696e20616c6c2053756264697265
+63746f72696573>108 508.8 Q 2.5<2470>110.5 520.8 S
+<72696e7420ad6c202a2a2f524541444d45>-2.5 E<52656375727369>108 544.8 Q .3
+-.15<76652060>-.25 H<6063686d6f6427>-.59 E<27>-.74 E 2.5<2463>110.5
+556.8 S<686d6f6420373030202a2a2f282e292023204f6e6c79208c6c6573>-2.5 E
+2.5<2463>110.5 568.8 S
+<686d6f6420373030202a2a2f282f292023204f6e6c79206469726563746f72696573>
+-2.5 E<4c697374208c6c6573206265>108 592.8 Q
+<67696e6e696e672061742060666f6f32332720757077>-.15 E
+<617264732028666f6f32332c20666f6f32342c20666f6f32352c202e2e29>-.1 E 2.5
+<246c>110.5 604.8 S 2.5<732d>-2.5 G 2.5<6c66>-2.5 G<6f6f3c3233ad3e>-2.5
+E<52656d6f>108 628.8 Q .3 -.15<76652073>-.15 H
+<70616365732066726f6d208c6c656e616d6573>.15 E 2.5<2466>110.5 640.8 S<6f
+72206120696e202e2f2a2a2f2a5c202a28446f64293b20646f206d7620246120247b613a
+687d2f247b613a743a67732f202f5f7d3b20646f6e65>-2.5 E<53686f>108 664.8 Q
+2.5<776f>-.25 G<6e6c7920616c6c202a2e6320616e64202a2e68202d2046696c6573>
+-2.5 E 2.5<246c>110.5 676.8 S 2.5<732d>-2.5 G 2.5<6c2a>-2.5 G
+<2e28637c6829>-2.5 E<53686f>108 700.8 Q<77>-.25 E F1<6f6e6c79>2.5 E F0
+<616c6c202a2e63202d208c6c657320616e642069676e6f72652060666f6f2e6327>2.5
+E 2.5<246c>110.5 712.8 S 2.5<732a>-2.5 G<2e637e666f6f2e63>-2.5 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203231>174.84 F
+0 Cg EP
+%%Page: 22 23
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<53686f>108 84 Q 2.5<776f>-.25 G<6e6c792077>-2.5 E
+<6f726c642d7265616461626c65208c6c6573>-.1 E 2.5<246c>110.5 96 S 2.5
+<732d>-2.5 G 2.5<6c2a>-2.5 G<285229>-2.5 E<8c6e6420616e642064656c657465
+20746865208c6c657320776869636820617265206f6c646572207468616e2061206769>
+108 120 Q -.15<7665>-.25 G 2.5<6e70>.15 G
+<6172616d6574657220287365636f6e64732f6d696e757465732f686f75727329>-2.5 E
+2.5<2364>110.5 132 S<656c6574657320616c6c207265>-2.5 E<67756c6172208c6c
+6520696e202f446972207468617420617265206f6c646572207468616e203320686f7572
+73>-.15 E 2.5<2472>115.5 144 S 2.5<6d2d>-2.5 G 2.5<662f>-2.5 G
+<4469722f2a2a2f2a282e6d682b3329>-2.5 E 2.5<232364>110.5 156 S<656c657465
+7320616c6c2073796d6c696e6b7320696e202f446972207468617420617265206f6c6465
+72207468616e2033206d696e75746573>-2.5 E 2.5<2472>115.5 168 S 2.5<6d2d>
+-2.5 G 2.5<662f>-2.5 G<4469722f2a2a2f2a28406d6d2b3329>-2.5 E 2.5<2364>
+110.5 180 S<656c6574657320616c6c206e6f6e206469727320696e202f446972207468
+617420617265206f6c646572207468616e203330207365636f6e6473>-2.5 E 2.5
+<2472>115.5 192 S 2.5<6d2d>-2.5 G 2.5<662f>-2.5 G
+<4469722f2a2a2f2a286d732b33305e2f29>-2.5 E 2.5<2364>110.5 204 S<656c6574
+657320616c6c208c6c6573206d6f7265207468616e203620686f757273206f6c64>-2.5
+E 2.5<2472>115.5 216 S 2.5<6d2d>-2.5 G 2.5<662a>-2.5 G
+<2a2f2a286d682b3629>-2.5 E 2.5<2364>110.5 228 S<656c6574657320616c6c2066
+6f6c646572732c207375622d666f6c6465727320616e64208c6c6573206f6c6465722074
+68616e206f6e6520686f7572>-2.5 E 2.5<2472>115.5 240 S 2.5<6d2e>-2.5 G
+<2f2a2a2f2a282e446d682b312c2e444c3029>-2.5 E 2.5<2372>110.5 252 S
+<656d6f>-2.5 E -.15<7665>-.15 G 2.5<7361>.15 G<6c6c208c6c65732062>-2.5 E
+<7574207468652074656e206e65>-.2 E
+<776572206f6e6573202864656c65746520616c6c2062>-.25 E
+<7574206c617374203130208c6c657320696e2061206469726563746f727929>-.2 E
+2.5<2472>113 264 S 2.5<6d2e>-2.5 G<2f2a284f6d5b312c2d31315d29>-2.5 E
+<4e6f74653a20496620796f75206765742061206172>108 288 Q 2.5<676c>-.18 G
+<69737420746f6f206c6f6e672c20796f7520757365207468652062>-2.5 E
+<75696c74696e20726d2e2046>-.2 E<6f722065>-.15 E<78616d706c653a>-.15 E
+2.5<247a>113 300 S
+<6d6f646c6f6164207a73682f8c6c6573203b20726d202d66202a2a2f2a286d682b3629>
+-2.5 E<6f722075736520746865207a6172>113 312 Q<67732066756e6374696f6e3a>
+-.18 E 2.5<2461>113 324 S<75746f6c6f6164207a6172>-2.5 E
+<6773203b207a6172>-.18 E<6773202a2a2f2a286d682b3629202d2d20726d202d66>
+-.18 E/F1 10/Times-Bold@0 SF<4578706c616e6174696f6e3a>108 348 Q F0
+<2e2f3a20746f2061>115.5 360 Q -.2<766f>-.2 G<69642070726f626c656d207769
+7468208c6c6573207374617274696e6720776974682022ad22>.2 E
+<2a2a2f3a2072656375727369>113 372 Q -.15<7665>-.25 G
+<6c792064657363656e64>.15 E<2a2e3a20616e>115.5 384 Q 2.5<798c>-.15 G
+<6c65>-2.5 E<282e2e2e293a207175616c698c6572733a>108 396 Q<283c613e2c3c62
+3e293a208c6c6573206f66203c613e2074797065206f72203c623e2074797065>151.5
+408 Q<3c613e3a>154 420 Q<2e3a207265>164 432 Q<67756c6172208c6c6573>-.15
+E<443a20696e636c7564696e6720646f74208c6c6573>164 444 Q<6d682b313a207768
+6f7365205b6d5d6f64698c636174696f6e2074696d652c206973206d6f726520282b2920
+7468616e205b315d>156.5 456 Q<5b685d6f757220696e2074686520706173742e>
+171.5 468 Q<3c623e3a>154 480 Q<2e3a207265>161.5 492 Q
+<67756c6172208c6c6573>-.15 E<443a20696e636c7564696e6720646f74208c6c6573>
+161.5 504 Q<4c303a206f662030205b4c5d656e6774682e>161.5 516 Q
+<496620796f752077>108 540 Q<616e7420746f2072656d6f>-.1 E .3 -.15
+<76652065>-.15 H<6d707479206469726563746f7269657320616674657277>.15 E
+<617264733a>-.1 E 2.5<2360>110.5 552 S<602f27>-3.24 E 2.5<276d>-.74 G
+<617463686573206f6e6c79206469726563746f7269657320616e642060>-2.5 E
+<606f6427>-.74 E 2.5<2773>-.74 G
+<6f7274656420696e206465707468206f726465722028736f>-2.5 E 2.5<2374>110.5
+564 S<686174206469722f7375626469722069732072656d6f>-2.5 E -.15<7665>-.15
+G 2.5<6462>.15 G<65666f7265206469726563746f7279292e>-2.5 E 2.5<2472>
+110.5 576 S<6d646972202e2f2a2a2f2a282f6f642920323e202f6465>-2.5 E
+<762f6e756c6c>-.25 E F1<4e6f74653a>108 600 Q F0
+<496620796f75206765742061206172>2.5 E 2.5<676c>-.18 G
+<69737420746f6f206c6f6e672c20796f7520757365207468652062>-2.5 E
+<75696c74696e20726d2e2046>-.2 E<6f722065>-.15 E<78616d706c653a>-.15 E
+2.5<247a>110.5 612 S
+<6d6f646c6f6164207a73682f8c6c6573203b20726d202d66202a2a2f2a286d682b3629>
+-2.5 E<6f722075736520746865207a6172>108 624 Q<67732066756e6374696f6e3a>
+-.18 E 2.5<2461>110.5 636 S<75746f6c6f6164207a6172>-2.5 E
+<6773203b207a6172>-.18 E<6773202a2a2f2a286d682b3629202d2d20726d202d66>
+-.18 E<44656c657465206f6e6c7920746865206f6c64657374208c6c6520696e206120
+6469726563746f72793a>108 660 Q 2.5<2472>110.5 672 S 2.5<6d2e>-2.5 G
+<2f2a8c6c656e616d652a284f6d5b315d29>-2.5 E<536f727420746865206f75747075
+742066726f6d20606c7320ad6c27206279208c6c652073697a653a>108 696 Q 2.5
+<246c>110.5 708 S 2.5<732d>-2.5 G<8d64202a284f4c29>-2.5 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203232>174.84 F
+0 Cg EP
+%%Page: 23 24
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E<46696e
+64206d6f737420726563656e74208c6c6520696e2061206469726563746f72793a>108
+84 Q 2.5<2473>110.5 96 S<65746f707420646f74676c6f62203b207072696e742064
+69726563746f72792f2a2a2f2a286f6d5b315d29>-2.5 E<4c6973742074686520746f70
+203130302062696767657374208c6c657320696e2061206469736b>108 120 Q 2.5
+<247a>110.5 132 S<6d6f646c6f616420ad69207a73682f73746174203b206c7320ad8d
+64202e2f2a2a2f2a28646073746174202b6465>-2.5 E
+<76696365202e604f4c5b312c3130305d29>-.25 E 2.5<246c>110.5 144 S 2.5
+<732a>-2.5 G<284c30662e676f2d77>-2.5 E<2e29>-.65 E
+<46696e6420616c6c208c6c657320776974686f757420612076>108 168 Q
+<616c6964206f>-.25 E<776e65723a>-.25 E 2.5<2463>110.5 180 S<686d6f642073
+6f6d6575736572202f2a2a2f2a28445e753a247b286a2e3a753a2e29247b286629222428
+3c2f6574632f70617373776429227d25253a2a7d3a29>-2.5 E<53686f>108 204 Q 2.5
+<776f>-.25 G<6e6c79208c6c657320617265206f>-2.5 E
+<776e65642066726f6d2067726f757020607573657273273a>-.25 E 2.5<246c>110.5
+216 S 2.5<732d>-2.5 G 2.5<6c2a>-2.5 G<28475b75736572735d29>-2.5 E/F1 10
+/Times-Bold@0 SF<5a4d56ad4558414d504c4553>87 244.8 Q<4e6f74653a>108
+256.8 Q F0 -.74<6060>2.5 G<6175746f6c6f6164207a6d7627>.74 E 2.5<276e>
+-.74 G<656564656421205365652060>-2.5 E
+<606d616e207a7368636f6e74726962207c206c657373202d70207a6d7627>-.74 E 2.5
+<2766>-.74 G<6f72206d6f72652064657461696c732e>-2.5 E<53657269616c6c7920
+616c6c208c6c65732028666f6f2e666f6f203e20312e666f6f2c20666e6f72642e666f6f
+203e20322e666f6f2c202e2e293a>108 280.8 Q 2.5<246c>110.5 292.8 S 2.5
+<732a>-2.5 G 2.5<312e63206173642e666f6f20626c612e666f6f20666e6f72642e66
+6f6f20666f6f2e666e6f726420666f6f2e666f6f>110.5 304.8 R 2.5<2463>110.5
+316.8 S<3d31207a6d7620272a2e666f6f272027242828632b2b29292e666f6f27>-2.5
+E 2.5<246c>110.5 328.8 S 2.5<732a>-2.5 G 2.5<312e6320312e666f6f20322e66
+6f6f20332e666f6f20342e666f6f20666f6f2e666e6f7264>110.5 340.8 R
+<5365652061626f>108 364.8 Q -.15<7665>-.15 G 2.5<2c62>.15 G<7574206e6f>
+-2.7 E 2.5<776f>-.25 G<6e6c79208c6c657320776974682061208c6c656e616d6520
+3e3d2033302063686172733a>-2.5 E 2.5<2463>110.5 376.8 S<3d31207a6d762022
+247b286c3a33302d343a3a3f3a297d2a2e666f6f222027242828632b2b29292e666f6f27>
+-2.5 E<5265706c6163652073706163657320696e208c6c656e616d6573207769746820
+6120756e6465726c696e653a>108 400.8 Q 2.5<247a>110.5 412.8 S
+<6d7620272a202a27202724663a67732f202f5f27>-2.5 E
+<4368616e67652074686520737566>108 436.8 Q
+<8c782066726f6d202a2e736820746f202a2e706c3a>-.25 E 2.5<247a>110.5 448.8
+S<6d76202d5720272a2e73682720272a2e706c27>-2.5 E<6c6f>108 472.8 Q<776572
+636173652f75707065726361736520616c6c208c6c65732f6469726563746f726965733a>
+-.25 E 2.5<236c>110.5 484.8 S -.25<6f77>-2.5 G<657263617365>.25 E 2.5
+<247a>115.5 496.8 S<6d762027282a29272027247b284c29317d27>-2.5 E 2.5
+<2375>110.5 508.8 S<7070657263617365>-2.5 E
+<7a6d762027282a29272027247b285529317d27>115.5 520.8 Q<52656d6f>108 544.8
+Q .3 -.15<76652074>-.15 H<686520737566>.15 E
+<8c78202a2e632066726f6d20616c6c20432d46696c65733a>-.25 E 2.5<247a>110.5
+556.8 S<6d762027282a292e63272027243127>-2.5 E<557070657263617365206f6e6c
+7920746865208c727374206c6574746572206f6620616c6c202a2e6d7033202d208c6c65
+733a>108 580.8 Q 2.5<247a>110.5 592.8 S
+<6d762027285b612d7a5d29282a292e6d7033272027247b284329317d24322e6d703327>
+-2.5 E<436f70>108 616.8 Q 2.5<7974>-.1 G<686520746172>-2.5 E<6765742060
+524541444d452720696e2073616d65206469726563746f7279206173206561636820604d
+616b>-.18 E<658c6c65273a>-.1 E 2.5<247a>110.5 628.8 S
+<6d76202d432027282a2a2f294d616b>-2.5 E
+<658c6c65272027247b317d524541444d4527>-.1 E<52656d6f>108 652.8 Q<76696e
+672073696e676c652071756f74652066726f6d208c6c656e616d65732028726563757273
+69>-.15 E -.15<7665>-.25 G<293a>.15 E 2.5<247a>108 664.8 S<6d76202d5120
+22282a2a2f29282a272a292844292220225c24315c247b322f2f272f7d22>-2.5 E<5265
+706c61636520737061636573207769746820756e64657273636f72657320696e208c6c65
+6e616d6573202872656375727369>108 688.8 Q -.15<7665>-.25 G<293a>.15 E 2.5
+<247a>108 700.8 S<6d76202d512022282a2a2f29282a202a292844292220225c24315c
+247b322f2f202f5f7d22>-2.5 E<52656e616d6520706963312e6a70672c20706963322e
+6a70672c202e2e20746f20706963303030312e6a70672c20706963303030322e6a70672c
+202e2e3a>108 724.8 Q<7a736820342e322e34>72 768 Q 198.17
+<323030352d30352d3039203233>174.84 F 0 Cg EP
+%%Page: 24 25
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<234e>110.5 84 S<6f742072656375727369>-2.5 E -.15<7665>-.25 G<6c79>.15 E
+2.5<247a>115.5 96 S<6d762027706963282a292e6a7067272027706963247b286c3a34
+3a3a303a29317d2e6a706727>-2.5 E 2.5<2352>110.5 108 S<656375727369>-2.5 E
+-.15<7665>-.25 G<6c79>.15 E 2.5<247a>115.5 120 S<6d762027282a2a2f297069
+63282a292e6a706727202724312f706963247b286c3a343a3a303a29327d2e6a706727>
+-2.5 E/F1 10/Times-Bold@0 SF
+<54495053204259205a5a41505045522028687474703a2f2f777777>87 136.8 Q
+<2e7261796e696e66>-.7 E
+<6f2e636f2e756b2f746970732f7a7368746970732e68746d6c29>-.25 E F0
+<21212023>110.5 148.8 Q<6c61737420636f6d6d616e64>5 E<21242023>110.5
+160.8 Q<6c617374206172>5 E<67756d656e74>-.18 E
+<21243a6820286c617374206172>110.5 172.8 Q
+<67756d656e742c207374726970206f6e65206c65>-.18 E -.15<7665>-.25 G<6c29>
+.15 E<213f6563686f>110.5 184.8 Q
+<766920212a2028616c6c20706172616d657465727329>110.5 196.8 Q
+<766920212420286c61737420706172616d657465727329>110.5 208.8 Q<213432>
+110.5 220.8 Q<686973746f7279>110.5 232.8 Q 30<5e667265645e6a6f652023>
+110.5 244.8 R<6564697420707265>2.5 E
+<76696f757320636f6d6d616e64207265706c6163652066726564206279206a6f65>-.25
+E<2134323a70>110.5 256.8 Q<616c736f2075736520636f6e74726f6c2d52>110.5
+268.8 Q<636d647920213f636d64313f3a2a3c54>110.5 292.8 Q 5
+<41423e2023676574>-.93 F<706172616d6574657273206f66206120707265>2.5 E
+<76696f757320636f6d6d616e64>-.25 E<213a302069732074686520707265>110.5
+328.8 Q<76696f757320636f6d6d616e64206e616d65>-.25 E
+<215e2c20213a322c20213a332c203f2c2021242061726520746865206172>110.5
+340.8 Q<67756d656e7473>-.18 E<212a20697320616c6c20746865206172>110.5
+352.8 Q<67756d656e7473>-.18 E
+<212d322c20212d332c203f20617265206561726c69657220636f6d6d616e6473>110.5
+364.8 Q<212d325e2c20212d323a322c20212d32242c20212d322a>110.5 376.8 Q
+<63642021243a68>110.5 400.8 Q<2872656d6f>5 E .3 -.15<7665208c>-.15 H
+<6c65206e616d6529>.15 E
+<6361742021213a7420286f6e6c79208c6c65206e616d6529>110.5 412.8 Q
+<7072696e7420247b706172616d3a267d>110.5 424.8 Q
+<286c617374207375627374697475746529>7.5 E 2.5<2367>110.5 460.8 S
+<6c6f6262696e67206d6f64698c657273>-2.5 E 2.5<233a>110.5 472.8 S 2.5
+<7272>-2.5 G<656d6f>-2.5 E -.15<7665>-.15 G 2.5<7374>.15 G<686520737566>
+-2.5 E<8c782066726f6d2074686520726573756c742c>-.25 E 2.5<233a>110.5
+484.8 S 2.5<7474>-2.5 G<616b>-2.5 E<65732061>-.1 E -.1<7761>-.15 G 2.5
+<7974>.1 G<6865206469726563746f72792070617274>-2.5 E 2.5<232e6d>110.5
+496.8 S<65616e73206d757374206265207265>-2.5 E
+<67756c6172208c6c6573206e6f74206469726563746f7269657320657463>-.15 E 2.5
+<232a>110.5 508.8 S<286f6d5b315d29207069636b73206d6f737420726563656e746c
+79206d6f64698c6564208c6c65>-2.5 E 2.5<2328>110.5 520.8 S
+<2e4e29206e6f2077>-2.5 E<61726e696e67206d65737361676520696620616e>-.1 E
+2.5<798c>-.15 G<6c6520616273656e74>-2.5 E<7072696e74202a286f6d5b315d29>
+110.5 532.8 Q 2.5<2370>7.5 G
+<72696e7420746865206d6f737420726563656e74208c6c65>-2.5 E
+<7072696e74202a282e6f6d5b315d29>110.5 544.8 Q 2.5<2370>5 G<72696e742074
+6865206d6f737420726563656e74208c6c6520286e6f74206469726563746f727929>
+-2.5 E<6c73202d6c202a284f6d5b315d29>110.5 556.8 Q 2.5<236f>7.5 G
+<6c64657374208c6c65>-2.5 E<7072696e74202a286f6d5b312c355d29202320707269
+6e74207468652035206d6f737420726563656e74208c6c6573>110.5 568.8 Q
+<7669202a282e6f6d5b315d5e4429>110.5 580.8 Q 2.5<2376>7.5 G 2.5<696e>-2.5
+G -.25<6577>-2.5 G<657374208c6c65205e44206d65616e7320737769746368206f66>
+.25 E 2.5<6647>-.25 G<4c4f425f444f>-2.5 E<5453>-.4 E
+<6c73202d6c202a286d3429>110.5 592.8 Q 2.5<236c>15 G
+<697374208c6c6573206d6f64698c65642065>-2.5 E
+<786163746c79203420646179732061676f>-.15 E<6c73202d6c7464202a286d773329>
+110.5 604.8 Q 2.5<236c>7.5 G<697374208c6c65732033207765656b73206f6c64>
+-2.5 E<6563686f202a286d2d3129>110.5 616.8 Q 2.5<238c>15 G
+<6c6573206d6f64698c656420746f646179>-2.5 E<6563686f202a286d3029>110.5
+628.8 Q 2.5<238c>17.5 G<6c6573206d6f64698c656420746f646179>-2.5 E<726d20
+2a2e7b6175782c6476692c6c6f672c746f637d282e4e29202320726d206c617465>110.5
+640.8 Q 2.5<7874>-.15 G
+<656d70208c6c6573204e206d65616e73206e6f206572726f72206d736720697320616e>
+-2.5 E 2.5<798c>-.15 G<6c6520616273656e74>-2.5 E
+<7072696e74202a286e3a7429>110.5 664.8 Q 2.5<236f>12.5 G
+<72646572206279206e616d65207374726970206469726563746f7279>-2.5 E
+<7072696e74202a2a2f2a284f6e3a742920232072656375727369>110.5 676.8 Q .3
+-.15<76652072>-.25 H -2.15 -.25<65762065>.15 H
+<727365206f72646572206279206e616d652c207374726970206469726563746f7279>
+.25 E<7072696e74202a2e63283a7229>110.5 688.8 Q 2.5<2373>10 G
+<7472697020737566>-2.5 E<8c78>-.25 E<6c73202a2a2f2a282e29>110.5 700.8 Q
+2.5<236f>17.5 G<6e6c79208c6c6573206e6f206469726563746f72696573>-2.5 E
+<2d6c64202a282f29>110.5 712.8 Q 2.5<236c>15 G
+<697374206f6e6c79206469726563746f72696573>-2.5 E
+<464f4f203d2028236929666f6f205d5d>110.5 724.8 Q 2.5<2363>5 G
+<61736520696e73656e73697469>-2.5 E .3 -.15<7665206d>-.25 H
+<61746368696e67>.15 E<7a736820342e322e34>72 768 Q 198.17
+<323030352d30352d3039203234>174.84 F 0 Cg EP
+%%Page: 25 26
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<236f64646974696573>110.5 84 Q
+<667265643d242828362a2a32202b2036292920232063616e20646f206d61746873>
+110.5 96 Q<7072696e7420247b23706174687d>110.5 108 Q 2.5<236c>12.5 G
+<656e677468206f6620227061746822206172726179>-2.5 E
+<7072696e7420247b23706174685b315d7d>110.5 120 Q 2.5<236c>5 G
+<656e677468206f66208c72737420656c656d656e7420696e2070617468206172726179>
+-2.5 E<6c7320667265647b6a6f652c7369647d2e706c>110.5 132 Q
+<6c7320667265647b30392e2e31337d2e706c>110.5 144 Q 2.5<2361>110.5 168 S
+<7272617973>-2.5 E<61727261793d287e2f2e7a7368656e>110.5 180 Q 2.5<767e>
+-.4 G<2f2e7a73687263207e2f2e7a6c6f676f757429>-2.5 E 2.5<2570>110.5 192 S
+<72696e7420247b61727261793a747d>-2.5 E<2e7a7368656e>110.5 204 Q 2.5
+<762e>-.4 G<7a73687263202e7a6c6f676f7574>-2.5 E<783d2262>110.5 228 Q
+42.5<75265e2a636b222023>-.2 F -.25<7661>2.5 G
+<726961626c652077697468206d75636b>.25 E 2.5<7963>-.15 G
+<686172616374657273>-2.5 E
+<7072696e7420247b782f2f5b5e5b3a616c6e756d3a5d5d2f5f7d>110.5 240 Q 2.5
+<2372>7.5 G
+<65706c61636520616c6c206e6f6e2d616c7068616e756d65726963732077697468205f>
+-2.5 E<6370208c6c65207e31>110.5 276 Q 2.5<2377>47.5 G
+<686572652031206973208c72737420656e74727920696e20707573686420737461636b>
+-2.5 E<237a736820636f6d706c6574696f6e>110.5 288 Q 25
+<73746172748c6c656e616d653c7461623e2023>110.5 300 R
+<77696c6c20636f6d706c657465206d61746368696e67208c6c657320616e>2.5 E
+<79776865726520696e202450>-.15 E -1.11<4154>-.92 G<48>1.11 E 25
+<73746172748c6c656e616d653c432d443e2023>110.5 312 R
+<77696c6c206c697374206d61746368696e67208c6c657320616e>2.5 E
+<79776865726520696e202450>-.15 E -1.11<4154>-.92 G<48>1.11 E
+<236469726563746f72792073697a6573>110.5 324 Q<6475202d736b202a282f29>
+110.5 336 Q<6c73202a207c206772657020666f6f207c206c657373>110.5 360 Q
+<23746f>110.5 372 Q<6c73202a204720666f6f204c>110.5 384 Q<23>110.5 396 Q
+<236d6167696320657175616c73>110.5 420 Q<76696d203d736f6d655f8c6c65>110.5
+432 Q 2.5<2365>70 G<64697473208c6c6520616e>-2.5 E
+<79776865726520696e202450>-.15 E -1.11<4154>-.92 G<48>1.11 E
+<6c73203d736f6d655f8c6c65>110.5 444 Q 2.5<236c>72.5 G
+<69737473208c6c6520616e>-2.5 E<79776865726520696e202450>-.15 E -1.11
+<4154>-.92 G<48>1.11 E<236d61676963202a2a2028726563757273696f6e29>110.5
+456 Q<76696d202a2a2f736f6d655f8c6c65>110.5 468 Q 2.5<2365>65 G
+<64697473208c6c6520756e64657220756e6465722063757272656e7420646972>-2.5 E
+2.5<236d>110.5 480 S<6f64696679696e67206d6f7265207468616e206f6e65208c6c
+6520286d756c74696f7329>-2.5 E 2.5<2377>110.5 492 S<7269746573206c732072
+6573756c747320746f208c6c65312026208c6c653220617070656e647320746f208c6c65
+63>-2.5 E<6c73203e208c6c6531203e208c6c6532203e3e208c6c6533207c207763>
+110.5 504 Q
+<46696e64208c6c6520636f6e7461696e696e6720737472696e6720277072696e7466>
+108 540 Q 2.5<2769>.55 G 2.5<6e2f>-2.5 G<7573722f696e636c7564652e>-2.5 E
+2.5<247a>110.5 552 S<6172>-2.5 E<6773202f7573722f696e636c7564652f2a2a2f
+2a2e6820adad2067726570207072696e7466202f6465>-.18 E<762f6e756c6c>-.25 E
+2.5<4173>108 588 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<248c>110.5 600 S
+<6e64202f7573722f696e636c756465202d6e616d65205c2a2e6820ad65>-2.5 E -.15
+<7865>-.15 G 2.5<6367>.15 G<726570207072696e7466202f6465>-2.5 E
+<762f6e756c6c207b7d203b>-.25 E<4372656174652061206469726563746f72792073
+7472756374757265206261736564206f6e20616e2065>108 636 Q
+<78697374696e67206f6e652e>-.15 E 2.5<2464>110.5 648 S
+<6972733d282a2a2f2a282f2929>-2.5 E 2.5<2463>110.5 660 S 2.5<64ad>-2.5 G
+2.5<ad24>-2.5 G<646573745f726f6f74>-2.5 E 2.5<246d>110.5 672 S
+<6b64697220ad7020adad202464697273>-2.5 E 2.5<4173>108 708 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<2473>110.5 720 S<72633d2f7573722f6c6f63616c>-2.5 E
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203235>174.84 F
+0 Cg EP
+%%Page: 26 27
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E 2.5
+<2464>110.5 84 S<73743d2f6f7074>-2.5 E 2.5<2463>110.5 96 S 2.5<6422>-2.5
+G<2473726322>-2.5 E 2.5<248c>110.5 108 S
+<6e64202e202d747970652064207c206370696f202d70646d7620222464737422>-2.5 E
+<556e636f6d7072657373208c6c6520616e642072656164206974>108 144 Q
+<6c657373203c28677a6970202d636420666f6f2e677a29>108 156 Q 2.5<4173>108
+192 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<2467>110.5 204 S
+<7a6970202d636420666f6f2e677a202626206c65737320666f6f>-2.5 E
+<5072696e74207477>108 240 Q 2.5<6f8c>-.1 G
+<6c657320616e6420736f7274207468656d>-2.5 E 2.5<2473>110.5 252 S
+<6f7274203c667b6f6f2c756261727d>-2.5 E 2.5<4173>108 288 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<2463>110.5 300 S
+<617420666f6f206675626172207c20736f7274>-2.5 E<46696e64208c6c6573207570
+2066726f6d2063757272656e74206469726563746f727920616e64206368616e67652070
+65726d697373696f6e7320746f2027373030272e>108 336 Q 2.5<2463>110.5 348 S
+<686d6f6420373030202a2a2f2a282e29>-2.5 E 2.5<4173>108 384 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<248c>110.5 396 S<6e64202e20ad74797065206620ad65>
+-2.5 E -.15<7865>-.15 G 2.5<6363>.15 G<686d6f6420373030207b7d205c3b>-2.5
+E<4c6973742064657461696c73206f66207468652065>108 432 Q -.15<7865>-.15 G
+<63757461626c652027666f6f626172272e>.15 E 2.5<246c>110.5 444 S 2.5<732d>
+-2.5 G 2.5<6c3d>-2.5 G<666f6f626172>-2.5 E 2.5<4173>108 480 S
+<6f6c7574696f6e20776974686f7574207a736820636f756c64206c6f6f6b206c696b>
+-2.5 E<653a>-.1 E 2.5<246c>110.5 492 S 2.5<732d>-2.5 G 2.5<6c60>-2.5 G
+<776869636820666f6f62617260>-2.5 E<536d616c6c2065>108 528 Q
+<78616d706c6573>-.15 E<b46364206f6c64206e65>108 540 Q
+<7727207265706c6163657320276f6c6427207769746820276e65>-.25 E
+<772720696e206469726563746f72792d6e616d65732e>-.25 E<b47768696368202d61
+20636d6427206c6973747320616c6c206f63637572656e636573206f662027636d642720
+696e202450>108 552 Q -1.11<4154>-.92 G<482e>1.11 E/F1 10.95/Times-Bold@0
+SF<4f5054494f4e53>72 580.8 Q F0<4e61>108 592.8 Q<766967>-.2 E
+<6174696f6e206f7074696f6e73>-.05 E .403<6175746f5f63642028616c6c6f>144
+616.8 R 2.903<776f>-.25 G .403<6e6520746f206368616e676520746f2061206469
+726563746f727920627920656e746572696e67206974206173206120636f6d6d616e6429
+2e>-2.903 F .402<6175746f5f707573686420286175746f6d6174692d>5.402 F<6361
+6c6c7920617070656e64206469727320746f2074686520707573682f706f70206c697374
+292070757368645f69676e6f72655f647570732028616e6420646f6e27>144 628.8 Q
+2.5<7464>-.18 G<75706c6963617465207468656d29>-2.5 E<4d697363>108 657.6 Q
+.774<6e6f5f6875702028646f6e27>144 681.6 R 3.274<7473>-.18 G .775<656e64
+20485550207369676e616c20746f206261636b67726f756e64206a6f6273207768656e20
+65>-3.274 F .775<786974696e67205a534829207072696e745f65>-.15 F
+<7869745f76>-.15 E .775<616c7565202873686f>-.25 F 3.275<7761>-.25 G
+<6d6573736167652077697468207468652065>144 693.6 Q<78697420636f6465207768
+656e206120636f6d6d616e642072657475726e7320776974682061206e6f6e2d7a65726f
+2065>-.15 E<78697420636f646529>-.15 E<7a736820342e322e34>72 768 Q 198.17
+<323030352d30352d3039203236>174.84 F 0 Cg EP
+%%Page: 27 28
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<486973746f7279206f7074696f6e73>108 84 Q<686973745f76>144 108 Q .22<6572
+69667920286c657420746865207573657220656469742074686520636f6d6d616e64206c
+696e6520616674657220686973746f72792065>-.15 F .22<7870616e73696f6e202865
+2e672e20216c732920696e7374656164206f6620696d6d6564692d>-.15 F
+<6174656c792072756e6e696e6720697429>144 120 Q<557365207468652073616d6520
+686973746f7279208c6c6520666f7220616c6c2073657373696f6e73203a>144 156 Q
+<7365746f70742053484152455f48495354>146.5 168 Q<4f52>-.18 E<59>-.65 E
+<507269>108 196.8 Q -.25<7661>-.25 G .3 -.15<6379202f2053>.25 H
+<65637572697479>.15 E
+<6e6f5f636c6f6262657220286f7220736574202d433b20707265>144 220.8 Q -.15
+<7665>-.25 G<6e7420273e27207265646972656374696f6e2066726f6d207472756e63
+6174696e6720746865206769>.15 E -.15<7665>-.25 G 2.5<6e8c>.15 G
+<6c6520696620697420616c72656164792065>-2.5 E<786973747329>-.15 E
+<5370656c6c696e6720636f7272656374696f6e>108 249.6 Q 1.832<636f7272656374
+20286175746f6d61746963616c6c7920636f727265637420746865207370656c6c696e67
+206f6620636f6d6d616e64732920636f72726563745f616c6c20286175746f6d61746963
+616c6c7920636f727265637420746865>144 273.6 R
+<7370656c6c696e67206f6620656163682077>144 285.6 Q
+<6f7264206f6e2074686520636f6d6d616e64206c696e6529206476>-.1 E
+<6f72616b20286476>-.2 E<6f72616b206c61796f757429>-.2 E/F1 10.95
+/Times-Bold@0 SF<4c494e4b53>72 314.4 Q F0
+<546865205a207368656c6c20486f6d6570616765>108 326.4 Q/F2 10/Times-Bold@0
+SF<687474703a2f2f777777>144 338.4 Q<2e7a73682e6f72>-.7 E<672f>-.1 E F0
+<546865205a207368656c6c2046>108 355.2 Q -.55<4151>-.74 G F2
+<687474703a2f2f7a73682e73756e736974652e646b2f46>144 367.2 Q -.45<4151>
+-.9 G<2f>.45 E F0<546865205a207368656c6c2077696b69>108 384 Q F2
+<687474703a2f2f777777>144 396 Q<2e7a736877696b692e6f72>-.7 E<672f>-.1 E
+F0<4d61696c696e676c6973746172636869>108 412.8 Q -.15<7665>-.25 G F2
+<687474703a2f2f777777>144 424.8 Q<2e7a73682e6f72>-.7 E<672f6d6c612f>-.1
+E F0<546865205a207368656c6c207265666572656e63652d636172642028696e636c75
+64656420696e20746865207a73682d6c6f>108 441.6 Q -.15<7665>-.15 G<7273>.15
+E<64656269616e2d7061636b61676529>144 453.6 Q F2
+<687474703a2f2f7a73682e73756e736974652e646b2f526566636172642f72>2.5 E
+<6566636172642e70732e677a>-.18 E F0<4164616d20537069657227>108 470.4 Q
+2.5<7355>-.55 G<4e4958207368656c6c732070616765>-2.5 E F2
+<687474703a2f2f6164616d7370696572732e6f72>144 482.4 Q
+<672f636f6d707574696e672f7368656c6c732f>-.1 E F0
+<5468652053696e676c6520554e4958202852292053706563698c636174696f6e2c2056>
+108 499.2 Q<657273696f6e2032202d205368656c6c20436f6d6d616e64204c616e6775
+61676520496e6465>-1.11 E<78>-.15 E F2<687474703a2f2f777777>144 511.2 Q
+<2e6f70656e6772>-.7 E<6f75702e6f72>-.18 E<672f6f6e6c696e65707562732f3030
+373930383739392f7863752f7368656c6c69782e68746d6c>-.1 E F0
+<5a7a6170706572732042657374206f66205a53482054>108 528 Q<697073>-.35 E F2
+<687474703a2f2f777777>144 540 Q<2e7261796e696e66>-.7 E
+<6f2e636f2e756b2f746970732f7a7368746970732e68746d6c>-.25 E F0
+<546865205a53482061726561206f6e20646f748c6c65732e636f6d>108 556.8 Q F2
+<687474703a2f2f777777>144 568.8 Q
+<2e646f748c6c65732e636f6d2f696e6465782e706870333f6170705f69643d34>-.7 E
+F0<5a73682057>108 585.6 Q
+<6562706167652062792043687269737469616e205363686e6569646572>-.8 E F2
+<687474703a2f2f737472>144 597.6 Q
+<6361742e6e65657373656e2e6e65742f7a73682f>-.18 E F0
+<546865207a73682d6c6f>108 614.4 Q -.15<7665>-.15 G<72732077656270616765>
+.15 E F2<687474703a2f2f67726d6c2e6f72>144 626.4 Q<672f7a73682f>-.1 E F0
+<495243206368616e6e656c>108 643.2 Q F2<237a7368206174206972>144 655.2 Q
+<632e6672>-.18 E<65656e6f64652e6f72>-.18 E<67>-.1 E F1 -.548<4155>72 672
+S<54484f5253>.548 E F0 .287<54686973206d616e706167652077>108 684 R .286
+<6173207772697474656e206279204d69636861656c2050726f6b>-.1 F .286<6f702c
+2043687269737469616e20b473747263617427205363686e656964657220616e64204d61
+747468696173204b>-.1 F 2.786<6f706665726d616e6e2e20427574>-.35 F<6d616e>
+108 696 Q 4.047<7969>-.15 G 1.547<64656173206861>-4.047 F 1.847 -.15
+<76652062>-.2 H 1.547<65656e2074616b>.15 F 1.548<656e2066726f6d207a7368
+2d6765656b7320652e672e2066726f6d20746865207a73682d6d61696c696e676c697374
+7320287a73682d757365727320616e64207a73682d77>-.1 F<6f726b>-.1 E
+<657273292c>-.1 E 1.143<676f6f676c652c206e65>108 708 R 1.143
+<777367726f75707320616e6420746865207a73682d57>-.25 F 3.643
+<696b692e205468616e6b73>-.4 F 1.143<666f7220796f757220636f6f6c20616e6420
+696e6372656469626c6520746970732e2057>3.643 F 3.642<656c>-.8 G 1.142
+<6561726e6564206d7563682066726f6d>-3.642 F<796f7521>108 720 Q
+<7a736820342e322e34>72 768 Q 198.17<323030352d30352d3039203237>174.84 F
+0 Cg EP
+%%Page: 28 29
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF<7a7368ad6c6f>72 48 Q -.15<7665>-.15 G 355.96
+<7273283129207a7368ad6c6f>.15 F -.15<7665>-.15 G<7273283129>.15 E
+<496e20616c7068616265746963206f726465723a>108 84 Q<416e647265>108 96 Q
+2.5<7727>-.25 G<7a656672616d27204d61696e>-2.5 E 2.5<2d68>5 G
+<7474703a2f2f777777>-2.5 E<2e667973682e6f72>-.65 E<672f7e7a656672616d2f>
+-.18 E<426172746f6e20452e205363686165666572>108 108 Q 2.5<2d68>10 G
+<7474703a2f2f777777>-2.5 E<2e77656c6c2e636f6d2f757365722f62617274732f>
+-.65 E<4d61747468696173204b>108 120 Q 5<6f706665726d616e6e202d>-.35 F
+<687474703a2f2f777777>2.5 E
+<2e696e666f64726f6d2e6e6f7274682e64652f7e6d61747468692f>-.65 E<4f6c69>
+108 132 Q -.15<7665>-.25 G 2.5<724b>.15 G 20<6964646c65202d>-2.5 F
+<687474703a2f2f70656f706c652e667265656e65742e64652f6f706b2f>2.5 E -.15
+<5061>108 144 S<756c2046>.15 E 22.5<616c73746164202d>-.15 F
+<687474703a2f2f777777>2.5 E<2e66>-.65 E<616c737461642e636f6d2f>-.1 E
+<5065746572205374657068656e736f6e>108 156 Q 2.5<2d68>15 G
+<7474703a2f2f70>-2.5 E<7974686f6e2e7377>-.1 E<616e2e61632e756b2f7e70>-.1
+E<797065746572732f>-.1 E<5269636861726420436f6c656d616e>108 168 Q
+<5374e97068616e65204368617a656c6173>108 180 Q 2.5<2d68>12.5 G
+<7474703a2f2f7374657068616e652e6368617a656c61732e667265652e66722f>-2.5 E
+<5376>108 192 Q<656e204775636b>-.15 E 25<6573202d>-.1 F
+<687474703a2f2f777777>2.5 E<2e6775636b>-.65 E<65732e6e65742f>-.1 E<5376>
+108 204 Q<656e2057>-.15 E<697363686e6f>-.4 E<77736b>-.25 E 15<792d>-.15
+G<687474703a2f2f773979>-12.5 E<2e64652f7a73682f7a73687263>-.65 E/F1
+10.95/Times-Bold@0 SF<53454520414c534f>72 232.8 Q F0
+<4d616e7061676573206f66207a73683a>108 244.8 Q 22.5<7a7368205a7368>108
+256.8 R -.15<6f7665>2.5 G<72766965>.15 E 2.5<7728>-.25 G
+<746869732073656374696f6e29>-2.5 E 12.5<7a73686d69736320416e>108 268.8 R
+<797468696e67206e6f74208c7474696e6720696e746f20746865206f74686572207365
+6374696f6e73>-.15 E<7a736865>108 280.8 Q 12.5<78706e205a7368>-.15 F
+<636f6d6d616e6420616e6420706172616d657465722065>2.5 E<7870616e73696f6e>
+-.15 E 10<7a7368706172616d205a7368>108 292.8 R<706172616d6574657273>2.5
+E 5<7a73686f7074696f6e73205a7368>108 304.8 R<6f7074696f6e73>2.5 E
+<7a736862>108 316.8 Q 2.5<75696c74696e73205a7368>-.2 F -.2<6275>2.5 G
+<696c742d696e2066756e6374696f6e73>.2 E 15<7a73687a6c65205a7368>108 328.8
+R<636f6d6d616e64206c696e652065646974696e67>2.5 E 5
+<7a7368636f6d70776964205a7368>108 340.8 R
+<636f6d706c6574696f6e2077696467657473>2.5 E 5
+<7a7368636f6d70737973205a7368>108 352.8 R
+<636f6d706c6574696f6e2073797374656d>2.5 E 5
+<7a7368636f6d7063746c205a7368>108 364.8 R
+<636f6d706c6574696f6e20636f6e74726f6c>2.5 E 5
+<7a73686d6f64756c6573205a7368>108 376.8 R
+<6c6f616461626c65206d6f64756c6573>2.5 E 5<7a73687a667470737973205a7368>
+108 388.8 R -.2<6275>2.5 G<696c742d696e2046545020636c69656e74>.2 E 15
+<7a7368616c6c204d6574612d6d616e>108 400.8 R
+<7061676520636f6e7461696e696e6720616c6c206f66207468652061626f>2.5 E -.15
+<7665>-.15 G<4e6f74653a20657370656369616c6c7920276d616e207a7368636f6e74
+7269622720636f>108 424.8 Q -.15<7665>-.15 G<72732076>.15 E
+<6572792075736566756c20746f7069637321>-.15 E<426f6f6b3a>108 448.8 Q
+<46726f6d204261736820746f205a205368656c6c>108 460.8 Q<6279204f6c69>108
+472.8 Q -.15<7665>-.25 G 5<724b>.15 G<6964646c652c204a65727279205065636b
+20616e64205065746572205374657068656e736f6e>-5 E
+<4953424e3a2031353930353933373636>108 484.8 Q<416c736f2074616b>108 508.8
+Q 2.5<65616c>-.1 G<6f6f6b206174207468652073656374696f6e>-2.5 E/F2 10
+/Times-Bold@0 SF<4c494e4b53>108 520.8 Q F0
+<696e2074686973206d616e706167652e>108 532.8 Q F1 -.11<4255>72 561.6 S
+<4753>.11 E F0<50726f6261626c79>108 573.6 Q 4.165<2e54>-.65 G 1.665
+<686973206d616e70616765206d69676874206265206e65>-4.165 F -.15<7665>-.25
+G 4.165<7263>.15 G 4.165<6f6d706c6574652e20536f>-4.165 F 1.665
+<706c65617365207265706f72742062>4.165 F 1.665
+<7567732c20666565646261636b20616e642073756767657374696f6e7320746f>-.2 F
+<3c7a73682d6c6f>108 585.6 Q -.15<7665>-.15 G
+<7273406d69636861656c2d70726f6b>.15 E
+<6f702e61743e2e205468616e6b20796f7521>-.1 E F1<434f50595249474854>72
+614.4 Q F0<436f70>108 626.4 Q
+<79726967687420a92032303035204d69636861656c2050726f6b>-.1 E<6f702c204368
+7269737469616e205363686e656964657220616e64204d61747468696173204b>-.1 E
+<6f706665726d616e6e2e>-.35 E<7a736820342e322e34>72 768 Q 198.17
+<323030352d30352d3039203238>174.84 F 0 Cg EP
+%%Trailer
+end
+%%EOF
diff --git a/zsh.vim b/zsh.vim
new file mode 100644 (file)
index 0000000..e7ee5e8
--- /dev/null
+++ b/zsh.vim
@@ -0,0 +1,203 @@
+" Vim syntax file
+" Language:        Zsh shell script
+" Maintainer:      Nikolai Weibull <source@pcppopper.org>
+" URL:             http://www.pcppopper.org/vim/syntax/pcp/zsh/
+" Latest Revision:  2004-12-12
+" arch-tag:        2e2c7097-99cb-4b87-a771-3a819b69995e
+
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Set iskeyword since we need `-' (and potentially others) in keywords.
+" For version 5.x: Set it globally
+" For version 6.x: Set it locally
+if version >= 600
+  command -nargs=1 SetIsk setlocal iskeyword=<args>
+else
+  command -nargs=1 SetIsk set iskeyword=<args>
+endif
+SetIsk @,48-57,_,-
+delcommand SetIsk
+
+" Todo
+syn keyword zshTodo         contained TODO FIXME XXX NOTE
+
+" Comments
+syn region  zshComment      matchgroup=zshComment start='\%(^\|\s\)#' end='$' contains=zshTodo
+
+" PreProc
+syn match   zshPreProc     '^\%1l#\%(!\|compdef\|autoload\).*$'
+
+" Strings
+syn match   zshQuoted       '\\.'
+syn region  zshString       matchgroup=zshStringDelimiter start=+"+ end=+"+ contains=zshQuoted,@zshDerefs,@zshSubst
+syn region  zshString       matchgroup=zshStringDelimiter start=+'+ end=+'+
+" XXX: This should probably be more precise, but Zsh seems a bit confused about it itself
+syn region  zshPOSIXString  matchgroup=zshStringDelimiter start=+\$'+ end=+'+ contains=zshQuoted
+syn match   zshJobSpec      '%\(\d\+\|?\=\w\+\|[%+-]\)'
+
+" Precommand Modifiers
+syn keyword zshPrecommand   noglob nocorrect exec command builtin - time
+
+" Delimiters
+syn keyword zshDelimiter    do done
+
+" Conditionals
+syn keyword zshConditional  if then elif else fi case in esac select
+
+" Loops
+syn keyword zshRepeat       for while until repeat foreach
+
+" Exceptions
+syn keyword zshException    always
+
+" Keywords
+syn keyword zshKeyword      function nextgroup=zshKSHFunction skipwhite
+
+" Functions
+syn match   zshKSHFunction  contained '\k\+'
+syn match   zshFunction     '^\s*\k\+\ze\s*()'
+
+" Operators
+syn match   zshOperator            '||\|&&\|;\|&!\='
+
+" Here Documents
+if version < 600
+  " Do nothing for now TODO: do something
+else
+  syn region  zshHereDoc  matchgroup=zshRedir start='<<\s*\z(\S*\)' end='^\z1$' contains=@zshSubst
+  syn region  zshHereDoc  matchgroup=zshRedir start='<<-\s*\z(\S*\)' end='^\s*\z1$' contains=@zshSubst
+  syn region  zshHereDoc  matchgroup=zshRedir start='<<\s*\(["']\)\z(\S*\)\1'  end='^\z1$'
+  syn region  zshHereDoc  matchgroup=zshRedir start='<<-\s*\(["']\)\z(\S*\)\1' end='^\s*\z1$'
+endif
+
+" Redirections
+syn match   zshRedir        '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
+syn match   zshRedir        '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
+syn match   zshRedir        '|&\='
+
+" Variable Assignments
+syn match   zshVariable            '\<\h\w*\ze+\=='
+" XXX: how safe is this?
+syn region  zshVariable            oneline matchgroup=zshVariable start='\$\@<!\<\h\w*\[' end='\]\ze+\==' contains=@zshSubst
+
+" Variable Dereferencing
+syn cluster zshDerefs contains=zshShortDeref,zshLongDeref,zshDeref
+
+if !exists("g:zsh_syntax_variables")
+  let s:zsh_syntax_variables = 'all'
+else
+  let s:zsh_syntax_variables = g:zsh_syntax_variables
+endif
+
+syn match zshShortDeref   '\$[!#$*@?_-]\w\@!'
+syn match zshShortDeref   '\$[=^~]*[#+]*\d\+\>'
+
+syn match zshLongDeref    '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)'
+syn match zshLongDeref    '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)'
+syn match zshLongDeref    '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)'
+
+syn match zshDeref       '\$[=^~]*[#+]*\h\w*\>'
+
+" Commands
+syn match   zshCommands     '\%(^\|\s\)[.:]\ze\s'
+syn keyword zshCommands     alias autoload bg bindkey break bye cap cd chdir
+syn keyword zshCommands     clone comparguments compcall compctl compdescribe
+syn keyword zshCommands     compfiles compgroups compquote comptags comptry
+syn keyword zshCommands     compvalues continue declare dirs disable disown
+syn keyword zshCommands     echo echotc echoti emulate enable eval exec exit
+syn keyword zshCommands     export false fc fg functions getcap getln
+syn keyword zshCommands     getopts hash history jobs kill let limit
+syn keyword zshCommands     log logout popd print printf pushd pushln
+syn keyword zshCommands     pwd r read readonly rehash return sched set
+syn keyword zshCommands     setcap setopt shift source stat suspend test times
+syn keyword zshCommands     trap true ttyctl type ulimit umask unalias
+syn keyword zshCommands     unfunction unhash unlimit unset unsetopt vared
+syn keyword zshCommands     wait whence where which zcompile zformat zftp zle
+syn keyword zshCommands     zmodload zparseopts zprof zpty zregexparse zsocket
+syn keyword zshCommands     zstyle ztcp
+
+" Types
+syn keyword zshTypes        float integer local typeset
+
+" Switches
+" XXX: this may be too much
+syn match   zshSwitches     '\s\zs--\=[a-zA-Z0-9-]\+'
+
+" Numbers
+syn match   zshNumber      '[-+]\=0x\x\+\>'
+syn match   zshNumber      '[-+]\=0\o\+\>'
+syn match   zshNumber      '[-+]\=\d\+#[-+]\=\w\+\>'
+syn match   zshNumber      '[-+]\=\d\+\.\d\+\>'
+
+" Substitution
+syn cluster zshSubst       contains=zshSubst,zshOldSubst
+syn region  zshSubst        matchgroup=zshSubstDelim transparent start='\$(' skip='\\)' end=')' contains=TOP
+syn region  zshSubst        matchgroup=zshSubstDelim transparent start='\$((' skip='\\)' end='))' contains=TOP
+syn region  zshSubst       matchgroup=zshSubstDelim start='\${' skip='\\}' end='}' contains=@zshSubst
+syn region  zshOldSubst            matchgroup=zshSubstDelim start=+`+ skip=+\\`+ end=+`+ contains=TOP,zshOldSubst
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_zsh_syn_inits")
+  if version < 508
+    let did_zsh_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink zshTodo           Todo
+  HiLink zshComment        Comment
+  HiLink zshPreProc        PreProc
+  HiLink zshQuoted         SpecialChar
+  HiLink zshString         String
+  HiLink zshStringDelimiter zshString
+  HiLink zshPOSIXString            zshString
+  HiLink zshJobSpec        Special
+  HiLink zshPrecommand     Special
+  HiLink zshDelimiter      Keyword
+  HiLink zshConditional            Conditional
+  HiLink zshException      Exception
+  HiLink zshRepeat         Repeat
+  HiLink zshKeyword        Keyword
+  HiLink zshFunction       Function
+  HiLink zshKSHFunction            zshFunction
+  HiLink zshHereDoc        String
+  HiLink zshOperator       Operator
+  HiLink zshRedir          Operator
+  HiLink zshVariable       Identifier
+  HiLink zshDereferencing   PreProc
+  if s:zsh_syntax_variables =~ 'short\|all'
+    HiLink zshShortDeref    zshDereferencing
+  else
+    HiLink zshShortDeref    None
+  endif
+  if s:zsh_syntax_variables =~ 'long\|all'
+    HiLink zshLongDeref            zshDereferencing
+  else
+    HiLink zshLongDeref    None
+  endif
+  if s:zsh_syntax_variables =~ 'all'
+    HiLink zshDeref        zshDereferencing
+  else
+    HiLink zshDerefDeref    None
+  endif
+  HiLink zshCommands       Keyword
+  HiLink zshTypes          Type
+  HiLink zshSwitches       Special
+  HiLink zshNumber         Number
+  HiLink zshSubst          PreProc
+  HiLink zshOldSubst       zshSubst
+  HiLink zshSubstDelim     zshSubst
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "zsh"
+
+" vim: set sts=2 sw=2:
diff --git a/zsh_people/ZWS-1.0.tar.bz2 b/zsh_people/ZWS-1.0.tar.bz2
new file mode 100644 (file)
index 0000000..a1271e3
Binary files /dev/null and b/zsh_people/ZWS-1.0.tar.bz2 differ
diff --git a/zsh_people/adam_spiers/zshrc b/zsh_people/adam_spiers/zshrc
new file mode 100644 (file)
index 0000000..28a79f9
--- /dev/null
@@ -0,0 +1,1048 @@
+#!/bin/zsh
+#
+# .zshrc
+# for zsh 3.1.6 and newer (may work OK with earlier versions)
+#
+# by Adam Spiers <adam@spiers.net>
+#
+# Best viewed in emacs folding mode (folding.el).
+# (That's what all the # {{{ and # }}} are for.)
+#
+# $Id: .zshrc,v 1.255 2004/03/15 21:24:26 adams Exp $
+#
+
+# {{{ To do list
+
+#
+#    - du1
+#    - Do safes?kill(all)? functions
+#
+
+# }}}
+
+# {{{ What version are we running?
+
+if ! (( $+ZSH_VERSION_TYPE )); then
+  if [[ $ZSH_VERSION == 3.0.<->* ]]; then ZSH_STABLE_VERSION=yes; fi
+  if [[ $ZSH_VERSION == 3.1.<->* ]]; then ZSH_DEVEL_VERSION=yes;  fi
+
+  ZSH_VERSION_TYPE=old
+  if [[ $ZSH_VERSION == 3.1.<6->* ||
+        $ZSH_VERSION == 3.<2->.<->*  ||
+        $ZSH_VERSION == 4.<->* ]]
+  then
+    ZSH_VERSION_TYPE=new
+  fi
+fi
+
+# }}}
+# {{{ Profiling
+
+[[ -n "$ZSH_PROFILE_RC" ]] && which zmodload >&/dev/null && zmodload zsh/zprof
+
+# }}}
+# {{{ Loading status
+
+zshrc_load_status () {
+  # \e[0K is clear to right
+  echo -n "\r.zshrc load: $* ... \e[0K"
+}
+
+# }}}
+
+# {{{ Options
+
+zshrc_load_status 'setting options'
+
+setopt                       \
+     NO_all_export           \
+        always_last_prompt   \
+     NO_always_to_end        \
+        append_history       \
+        auto_cd              \
+        auto_list            \
+        auto_menu            \
+     NO_auto_name_dirs       \
+        auto_param_keys      \
+        auto_param_slash     \
+        auto_pushd           \
+        auto_remove_slash    \
+     NO_auto_resume          \
+        bad_pattern          \
+        bang_hist            \
+     NO_beep                 \
+     NO_brace_ccl            \
+        correct_all          \
+     NO_bsd_echo             \
+        cdable_vars          \
+     NO_chase_links          \
+     NO_clobber              \
+        complete_aliases     \
+        complete_in_word     \
+     NO_correct              \
+        correct_all          \
+        csh_junkie_history   \
+     NO_csh_junkie_loops     \
+     NO_csh_junkie_quotes    \
+     NO_csh_null_glob        \
+        equals               \
+        extended_glob        \
+        extended_history     \
+        function_argzero     \
+        glob                 \
+     NO_glob_assign          \
+        glob_complete        \
+     NO_glob_dots            \
+        glob_subst           \
+        hash_cmds            \
+        hash_dirs            \
+        hash_list_all        \
+        hist_allow_clobber   \
+        hist_beep            \
+        hist_ignore_dups     \
+        hist_ignore_space    \
+     NO_hist_no_store        \
+        hist_verify          \
+     NO_hup                  \
+     NO_ignore_braces        \
+     NO_ignore_eof           \
+        interactive_comments \
+     NO_list_ambiguous       \
+     NO_list_beep            \
+        list_types           \
+        long_list_jobs       \
+        magic_equal_subst    \
+     NO_mail_warning         \
+     NO_mark_dirs            \
+     NO_menu_complete        \
+        multios              \
+        nomatch              \
+        notify               \
+     NO_null_glob            \
+        numeric_glob_sort    \
+     NO_overstrike           \
+        path_dirs            \
+        posix_builtins       \
+     NO_print_exit_value     \
+     NO_prompt_cr            \
+        prompt_subst         \
+        pushd_ignore_dups    \
+     NO_pushd_minus          \
+        pushd_silent         \
+        pushd_to_home        \
+        rc_expand_param      \
+     NO_rc_quotes            \
+     NO_rm_star_silent       \
+     NO_sh_file_expansion    \
+        sh_option_letters    \
+        short_loops          \
+     NO_sh_word_split        \
+     NO_single_line_zle      \
+     NO_sun_keyboard_hack    \
+        unset                \
+     NO_verbose              \
+        zle
+
+if [[ $ZSH_VERSION_TYPE == 'new' ]]; then
+  setopt                       \
+        hist_expire_dups_first \
+        hist_ignore_all_dups   \
+     NO_hist_no_functions      \
+     NO_hist_save_no_dups      \
+        inc_append_history     \
+        list_packed            \
+     NO_rm_star_wait
+fi
+
+if [[ $ZSH_VERSION == 3.0.<6->* || $ZSH_VERSION_TYPE == 'new' ]]; then
+  setopt \
+        hist_reduce_blanks
+fi
+
+# }}}
+# {{{ Environment
+
+zshrc_load_status 'setting environment'
+
+# {{{ INFOPATH
+
+[[ "$ZSH_VERSION_TYPE" == 'old' ]] || typeset -T INFOPATH infopath
+typeset -U infopath # no duplicates
+export INFOPATH
+infopath=( 
+          ~/local/$OSTYPE/info(N)
+          ~/local/info(N)
+          /usr/local/info(N)
+          /usr/info(N)
+          $infopath
+         )
+
+# }}}
+# {{{ MANPATH
+
+case "$OSTYPE" in
+  linux*)
+    # Don't need to do anything through the cunningness
+    # of AUTOPATH in /etc/man.config!
+    ;;
+
+  *)
+    # Don't trust system-wide MANPATH?  Remember what it was, for reference.
+    sysmanpath=$HOME/.sysmanpath
+    [ -e $sysmanpath ] || echo "$MANPATH" > $sysmanpath
+    manpath=( )
+    for dir in "$path[@]"; do
+      [[ "$dir" == */bin ]] || continue
+      mandir="${dir//\/bin//man}"
+      [[ -d "$mandir" ]] && manpath=( "$mandir" "$manpath[@]" )
+    done
+
+    # ... or *do* trust system-wide MANPATH
+    #MANPATH=/usr/local/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin:$MANPATH
+    ;;
+esac
+
+# }}}
+
+# Variables used by zsh
+
+# {{{ Choose word delimiter characters in line editor
+
+WORDCHARS=''
+
+# }}}
+# {{{ Save a large history
+
+HISTFILE=~/.zshhistory
+HISTSIZE=3000
+SAVEHIST=3000
+
+# }}}
+# {{{ Maximum size of completion listing
+
+#LISTMAX=0    # Only ask if line would scroll off screen
+LISTMAX=1000  # "Never" ask
+
+# }}}
+# {{{ Watching for other users
+
+LOGCHECK=60
+WATCHFMT="[%B%t%b] %B%n%b has %a %B%l%b from %B%M%b"
+
+# }}}
+# {{{ Auto logout
+
+TMOUT=1800
+#TRAPALRM () {
+#  clear
+#  echo Inactivity timeout on $TTY
+#  echo
+#  vlock -c
+#  echo
+#  echo Terminal unlocked. [ Press Enter ]
+#}
+
+# }}}
+
+# }}}
+# {{{ Prompts
+
+# Load the theme-able prompt system and use it to set a prompt.
+# Probably only suitable for a dark background terminal.
+
+local _find_promptinit
+_find_promptinit=( $^fpath/promptinit(N) )
+if (( $#_find_promptinit >= 1 )) && [[ -r $_find_promptinit[1] ]]; then
+  zshrc_load_status 'prompt system'
+
+  autoload -U promptinit
+  promptinit
+
+  PS4="trace %N:%i> "
+  #RPS1="$bold_colour$bg_red              $reset_colour"
+
+  # Default prompt style
+  adam2_colors=( white cyan cyan green )
+
+  if [[ -r $zdotdir/.zsh_prompt ]]; then
+    . $zdotdir/.zsh_prompt
+  fi
+
+  if [[ -r /proc/$PPID/cmdline ]] &&
+       egrep -q 'watchlogs|kates|nexus|vga' /proc/$PPID/cmdline;
+  then
+    # probably OK for fancy graphic prompt
+    if [[ "`prompt -h adam2`" == *8bit* ]]; then
+      prompt adam2 8bit $adam2_colors
+    else
+      prompt adam2 $adam2_colors
+    fi
+  else
+    if [[ "`prompt -h adam2`" == *plain* ]]; then
+      prompt adam2 plain $adam2_colors
+    else
+      prompt adam2 $adam2_colors
+    fi
+  fi
+
+  if [[ $TERM == tgtelnet ]]; then
+    prompt off
+  fi
+else
+  PS1='%n@%m %B%3~%b %# '
+fi
+
+# }}}
+
+# {{{ Completions
+
+zshrc_load_status 'completion system'
+
+# {{{ Set up new advanced completion system
+
+if [[ "$ZSH_VERSION_TYPE" == 'new' ]]; then
+  autoload -U compinit
+  compinit -C # don't perform security check
+else
+  print "\nAdvanced completion system not found; ignoring zstyle settings."
+  function zstyle { }
+  function compdef { }
+
+  # an antiquated, barebones completion system is better than nowt
+  which zmodload >&/dev/null && zmodload zsh/compctl
+fi
+
+# }}}
+# {{{ General completion technique
+
+# zstyle ':completion:*' completer \
+#   _complete _prefix _approximate:-one _ignored \
+#   _complete:-extended _approximate:-four
+zstyle ':completion:*' completer _complete _prefix _ignored _complete:-extended
+
+zstyle ':completion::prefix-1:*' completer _complete
+zstyle ':completion:incremental:*' completer _complete _correct
+zstyle ':completion:predict:*' completer _complete
+
+zstyle ':completion:*:approximate-one:*'  max-errors 1
+zstyle ':completion:*:approximate-four:*' max-errors 4
+
+zstyle ':completion:*:complete-extended:*' \
+  matcher 'r:|[.,_-]=* r:|=*'
+
+# }}}
+# {{{ Fancy menu selection when there's ambiguity
+
+#zstyle ':completion:*' menu yes select interactive
+#zstyle ':completion:*' menu yes=long select=long interactive
+#zstyle ':completion:*' menu yes=10 select=10 interactive
+
+# }}}
+# {{{ Completion caching
+
+zstyle ':completion::complete:*' use-cache 1
+zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
+
+# }}}
+# {{{ Expand partial paths
+
+zstyle ':completion:*' expand 'yes'
+zstyle ':completion:*' squeeze-slashes 'yes'
+
+# }}}
+# {{{ Include non-hidden dirs in globbed file completions for certain commands
+
+#zstyle ':completion::complete:*' \
+#  tag-order 'globbed-files directories' all-files 
+#zstyle ':completion::complete:*:tar:directories' file-patterns '*~.*(-/)'
+
+# }}}
+# {{{ Don't complete backup files as executables
+
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# }}}
+# {{{ Don't complete uninteresting users
+
+zstyle ':completion:*:*:*:users' ignored-patterns \
+        adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \
+        named news nfsnobody nobody nscd ntp operator pcap postgres radvd \
+        rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
+
+# ... unless we really want to.
+zstyle '*' single-ignored show
+
+# }}}
+# {{{ Output formatting
+
+# Separate matches into groups
+zstyle ':completion:*:matches' group 'yes'
+
+# Describe each match group.
+zstyle ':completion:*:descriptions' format "%B---- %d%b"
+
+# Messages/warnings format
+zstyle ':completion:*:messages' format '%B%U---- %d%u%b' 
+zstyle ':completion:*:warnings' format '%B%U---- no match for: %d%u%b'
+# Describe options in full
+zstyle ':completion:*:options' description 'yes'
+zstyle ':completion:*:options' auto-description '%d'
+
+# }}}
+# {{{ Array/association subscripts
+
+# When completing inside array or association subscripts, the array
+# elements are more useful than parameters so complete them first:
+zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters 
+
+# }}}
+# {{{ Completion for 'kill'
+
+zstyle ':completion:*:*:kill:*' menu yes select
+zstyle ':completion:*:kill:*' force-list always
+
+# }}}
+# {{{ Simulate my old dabbrev-expand 3.0.5 patch 
+
+zstyle ':completion:*:history-words' stop yes
+zstyle ':completion:*:history-words' remove-all-dups yes
+zstyle ':completion:*:history-words' list false
+zstyle ':completion:*:history-words' menu yes
+
+# }}}
+# {{{ Common usernames
+
+# users=( tom dick harry )
+
+#zstyle ':completion:*' users $users
+
+# }}}
+# {{{ Common hostnames
+
+if [[ "$ZSH_VERSION_TYPE" == 'new' ]]; then
+  : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}}
+# _ssh_known_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*})
+else
+  # Older versions don't like the above cruft
+  _etc_hosts=()
+fi
+
+hosts=(
+    "$_etc_hosts[@]"
+
+    localhost
+
+    # ftp sites
+    sunsite.org.uk
+)
+
+zstyle ':completion:*' hosts $hosts
+
+# }}}
+# {{{ (user,host) pairs
+
+# All my accounts:
+#my_accounts=(
+#  {joe,root}@mymachine.com
+#  jbloggs@myothermachine.com
+#)
+
+zstyle ':completion:*:my-accounts' users-hosts $my_accounts
+
+# Other people's accounts:
+#other_accounts=(
+#  {fred,root}@hismachine.com
+#  vera@hermachine.com
+#)
+#zstyle ':completion:*:other-accounts' users-hosts $other_accounts
+
+# }}}
+# {{{ (host, port, user) triples for telnet
+
+#  telnet_users_hosts_ports=(
+#    user1@host1:
+#    user2@host2:
+#    @mail-server:{smtp,pop3}
+#    @news-server:nntp
+#    @proxy-server:8000
+#  )
+#zstyle ':completion:*:*:telnet:*' users-hosts-ports $telnet_users_hosts_ports
+
+# }}}
+
+# }}}
+# {{{ Aliases and functions
+
+zshrc_load_status 'aliases and functions'
+
+# {{{ Motion/editing
+
+# {{{ Better word navigation
+
+# Remember, WORDCHARS is defined as a 'list of non-alphanumeric
+# characters considered part of a word by the line editor'.
+
+# Elsewhere we set it to the empty string.
+
+_my_extended_wordchars='*?_-.[]~=&;!#$%^(){}<>:@,\\'
+_my_extended_wordchars_space="${_my_extended_wordchars} "
+_my_extended_wordchars_slash="${_my_extended_wordchars}/"
+
+# is the current position \-quoted ?
+is_backslash_quoted () {
+    test "${BUFFER[$CURSOR-1,CURSOR-1]}" = "\\"
+}
+
+unquote-forward-word () {
+    while is_backslash_quoted
+      do zle .forward-word
+    done
+}
+
+unquote-backward-word () {
+    while is_backslash_quoted
+      do zle .backward-word
+    done
+}
+
+backward-to-space () {
+    local WORDCHARS="${_my_extended_wordchars_slash}"
+    zle .backward-word
+    unquote-backward-word
+}
+
+forward-to-space () {
+     local WORDCHARS="${_my_extended_wordchars_slash}"
+     zle .forward-word
+     unquote-forward-word
+}
+
+backward-to-/ () {
+    local WORDCHARS="${_my_extended_wordchars}"
+    zle .backward-word
+    unquote-backward-word
+}
+
+forward-to-/ () {
+     local WORDCHARS="${_my_extended_wordchars}"
+     zle .forward-word
+     unquote-forward-word
+}
+
+# Create new user-defined widgets pointing to eponymous functions.
+zle -N backward-to-space
+zle -N forward-to-space
+zle -N backward-to-/
+zle -N forward-to-/
+
+# }}}
+# {{{ kill-region-or-backward-(big-)word
+
+# autoloaded
+zle -N kill-region-or-backward-word
+zle -N kill-region-or-backward-big-word
+
+# }}}
+# {{{ kill-big-word
+
+kill-big-word () {
+    local WORDCHARS="${_my_extended_wordchars_slash}"
+    zle .kill-word
+}
+
+zle -N kill-big-word
+
+# }}}
+
+zle -N incremental-complete-word
+
+# }}}
+# {{{ zrecompile
+
+autoload zrecompile
+
+# }}}
+# {{{ which/where
+
+# reverse unwanted aliasing of `which' by distribution startup
+# files (e.g. /etc/profile.d/which*.sh); zsh's which is perfectly
+# good as is.
+
+alias which >&/dev/null && unalias which
+
+alias wh=where
+
+# }}}
+# {{{ run-help
+
+alias run-help >&/dev/null && unalias run-help
+autoload run-help
+
+# }}}
+# {{{ zcalc
+
+autoload zcalc
+
+# }}}
+# {{{ Restarting zsh or bash; reloading .zshrc or functions
+
+bash () {
+  NO_SWITCH="yes" command bash "$@"
+}
+
+restart () {
+  exec $SHELL $SHELL_ARGS "$@"
+}
+
+profile () {
+  ZSH_PROFILE_RC=1 $SHELL "$@"
+}
+
+reload () {
+  if [[ "$#*" -eq 0 ]]; then
+    . $zdotdir/.zshrc
+  else
+    local fn
+    for fn in "$@"; do
+      unfunction $fn
+      autoload -U $fn
+    done
+  fi
+}
+compdef _functions reload
+
+# }}}
+# {{{ ls aliases
+
+if ls -F --color >&/dev/null; then
+  alias ls='command ls -F --color'
+elif ls -F >&/dev/null; then
+  alias ls='command ls -F'
+elif ls --color >&/dev/null; then
+  alias ls='command ls --color'
+fi
+
+# jeez I'm lazy ...
+alias l='ls -lh'
+alias ll='ls -l'
+alias la='ls -lha'
+alias lsa='ls -ah'
+alias lsd='ls -d'
+alias lsh='ls -dh .*'
+alias lsr='ls -Rh'
+alias ld='ls -ldh'
+alias lt='ls -lth'
+alias lrt='ls -lrth'
+alias lart='ls -larth'
+alias lr='ls -lRh'
+alias lsL='ls -L'
+alias lL='ls -Ll'
+alias sl=ls # often screw this up
+
+# }}}
+# {{{ File management/navigation
+
+# {{{ Changing/making/removing directory
+
+alias -g ...=../..
+alias -g ....=../../..
+alias -g .....=../../../..
+alias -g ......=../../../../..
+alias cd..='cd ..'
+alias cd...='cd ../..'
+alias cd....='cd ../../..'
+alias cd.....='cd ../../../..'
+# blegh
+alias ..='cd ..'
+alias ../..='cd ../..'
+alias ../../..='cd ../../..'
+alias ../../../..='cd ../../../..'
+alias ../../../../..='cd ../../../../..'
+
+alias cd/='cd /'
+
+alias 1='cd -'
+alias 2='cd +2'
+alias 3='cd +3'
+alias 4='cd +4'
+alias 5='cd +5'
+alias 6='cd +6'
+alias 7='cd +7'
+alias 8='cd +8'
+alias 9='cd +9'
+
+# Sweet trick from zshwiki.org :-)
+cd () {
+  if (( $# != 1 )); then
+    builtin cd "$@"
+    return
+  fi
+
+  if [[ -f "$1" ]]; then
+    builtin cd "$1:h"
+  else
+    builtin cd "$1"
+  fi
+}
+
+z () {
+  cd ~/"$1"
+}
+
+alias md='mkdir -p'
+alias rd=rmdir
+
+alias d='dirs -v'
+
+po () {
+  popd "$@"
+  dirs -v
+}
+
+# }}}
+# {{{ Renaming
+
+autoload zmv
+alias mmv='noglob zmv -W'
+
+# }}}
+
+# }}}
+# {{{ Job/process control
+
+alias j='jobs -l'
+alias dn=disown
+
+# }}}
+# {{{ History
+
+alias h='history -$LINES'
+
+# }}}
+# {{{ Environment
+
+alias ts=typeset
+compdef _typeset ts
+
+# }}}
+# {{{ Terminal
+
+alias cls='clear'
+alias term='echo $TERM'
+# {{{ Changing terminal window/icon titles
+
+which cx >&/dev/null || cx () { }
+
+if [[ "$TERM" == ([Ex]term*|screen*) ]]; then
+  # Could also look at /proc/$PPID/cmdline ...
+  cx
+fi
+
+# }}}
+alias sc=screen
+
+# }}}
+# {{{ Other users
+
+compdef _users lh
+
+alias f=finger
+compdef _finger f
+
+# su changes window title, even if we're not a login shell
+su () {
+  command su "$@"
+  cx
+}
+
+# }}}
+# {{{ No spelling correction
+
+alias man='nocorrect man'
+alias mysql='nocorrect mysql'
+alias mysqlshow='nocorrect mysqlshow'
+alias mkdir='nocorrect mkdir'
+alias mv='nocorrect mv'
+alias rj='nocorrect rj'
+
+# }}}
+# {{{ X windows related
+
+# {{{ export DISPLAY=:0.0
+
+alias sd='export DISPLAY=:0.0'
+
+# }}}
+
+# }}}
+# {{{ Different CVS setups
+
+# Sensible defaults
+unset CVS_SERVER
+export CVSROOT
+export CVS_RSH=ssh
+
+# see scvs function
+
+# }}}
+# {{{ Other programs
+
+# {{{ less
+
+alias v=less
+alias vs='less -S'
+
+# }}}
+# {{{ mutt
+
+m () {
+  cx mutt
+  mutt "$@"
+  cxx
+}
+
+compdef _mutt m
+
+# }}}
+# {{{ editors
+
+# emacs, windowed
+e () {
+  if [[ -n "$OTHER_USER" ]]; then
+    emacs -l $ZDOTDIR/.emacs "$@" &!
+  else
+    emacs "$@" &!
+  fi
+}
+
+# enable ^Z
+alias pico='/usr/bin/pico -z'
+
+if which vim >&/dev/null; then
+  alias vi=vim
+fi
+
+# }}}
+# {{{ remote logins
+
+ssh () {
+  cx -l "${(M)argv:#*@*}" # pick out user@host word from argv
+  command ssh "$@"
+  cxx
+}
+
+# Best to run this from .zshrc.local
+#dsa >&DN || echo "ssh-agent setup failed; run dsa."
+
+# }}}
+# {{{ ftp
+
+if which lftp >&/dev/null; then
+  alias ftp=lftp
+elif which ncftp >&/dev/null; then
+  alias ftp=ncftp
+fi
+
+# }}}
+# {{{ watching log files
+
+alias tf='less +F'
+alias tfs='less -S +F'
+
+# }}}
+# {{{ arch
+
+if which larch >&/dev/null; then
+  alias a=larch
+  compdef _larch a
+fi
+
+# }}}
+# {{{ bzip2
+
+alias bz=bzip2
+alias buz=bunzip2
+
+# }}}
+
+# }}}
+
+# {{{ Global aliases
+
+# WARNING: global aliases are evil.  Use with caution.
+
+# {{{ For screwed up keyboards missing pipe
+
+alias -g PIPE='|'
+
+# }}}
+# {{{ Paging with less / head / tail
+
+alias -g L='| less'
+alias -g LS='| less -S'
+alias -g EL='|& less'
+alias -g ELS='|& less -S'
+
+alias -g H='| head'
+alias -g HL='| head -20'
+alias -g EH='|& head'
+alias -g EHL='|& head -20'
+
+alias -g T='| tail'
+alias -g TL='| tail -20'
+alias -g ET='|& tail'
+alias -g ETL='|& tail -20'
+
+# }}}
+# {{{ Sorting / counting
+
+alias -g C='| wc -l'
+
+alias -g S='| sort'
+alias -g US='| sort -u'
+alias -g NS='| sort -n'
+alias -g RNS='| sort -nr'
+
+# }}}
+# {{{ Common filenames
+
+alias -g DN=/dev/null
+alias -g VM=/var/log/messages
+
+# }}}
+# {{{ grep, xargs
+
+alias -g G='| egrep'
+alias -g EG='|& egrep'
+alias -g X='| xargs'
+alias -g X0='| xargs -0'
+alias -g XG='| xargs egrep'
+alias -g X0G='| xargs -0 egrep'
+
+# }}}
+
+# }}}
+
+# }}}
+# {{{ Key bindings 
+
+zshrc_load_status 'key bindings'
+
+bindkey -s '^X^Z' '%-^M'
+bindkey '^[e' expand-cmd-path
+#bindkey -s '^X?' '\eb=\ef\C-x*'
+bindkey '^[^I' reverse-menu-complete
+bindkey '^X^N' accept-and-infer-next-history
+bindkey '^[p'  history-beginning-search-backward
+bindkey '^[n'  history-beginning-search-forward
+bindkey '^[P'  history-beginning-search-backward
+bindkey '^[N'  history-beginning-search-forward
+bindkey '^w'   kill-region-or-backward-word
+bindkey '^[^W' kill-region-or-backward-big-word
+bindkey '^I'   complete-word
+bindkey '^Xi'  incremental-complete-word
+# bindkey '^[b' emacs-backward-word
+# bindkey '^[f' emacs-forward-word
+bindkey '^[B'  backward-to-space
+bindkey '^[F'  forward-to-space
+bindkey '^[^b' backward-to-/
+bindkey '^[^f' forward-to-/
+
+bindkey '^[D'  kill-big-word
+
+if zmodload zsh/deltochar >&/dev/null; then
+  bindkey '^[z' zap-to-char
+  bindkey '^[Z' delete-to-char
+fi
+
+# Fix weird sequence that rxvt produces
+bindkey -s '^[[Z' '\t'
+
+alias no=ls  # for Dvorak
+
+# }}}
+# {{{ Miscellaneous
+
+zshrc_load_status 'miscellaneous'
+
+# {{{ Hash named directories
+
+# cdable_vars is set, so don't need 'hash -d' in front of these
+RP=/usr/src/redhat/RPMS
+I3=/usr/src/redhat/RPMS/i386
+I4=/usr/src/redhat/RPMS/i486
+I5=/usr/src/redhat/RPMS/i586
+I6=/usr/src/redhat/RPMS/i686
+NA=/usr/src/redhat/RPMS/noarch
+SR=/usr/src/redhat/SRPMS
+SP=/usr/src/redhat/SPECS
+SO=/usr/src/redhat/SOURCES
+BU=/usr/src/redhat/BUILD
+LI=/usr/src/linux
+L4=/usr/src/linux-2.4
+CV=/usr/local/cvsroot
+RC=/etc/rc.d/init.d
+VL=/var/log
+#hash -df
+
+# }}}
+# {{{ ls colours
+
+if which dircolors >&/dev/null && [[ -e "${zdotdir}/.dircolors" ]]; then
+  eval "`dircolors -b $zdotdir/.dircolors`"
+fi
+
+if [[ $ZSH_VERSION > 3.1.5 ]]; then
+  zmodload -i zsh/complist
+
+  zstyle ':completion:*' list-colors ''
+
+  zstyle ':completion:*:*:kill:*:processes' list-colors \
+    '=(#b) #([0-9]#)*=0=01;31'
+
+  # completion colours
+  zstyle ':completion:*' list-colors "$LS_COLORS"
+fi  
+
+# }}}
+# {{{ Don't always autologout
+
+if [[ "${TERM}" == ([Ex]term*|dtterm|screen*) ]]; then
+  unset TMOUT
+fi
+
+# }}}
+
+# }}}
+
+# {{{ Specific to local setups
+
+zshrc_load_status 'local hooks'
+run_local_hooks .zshrc
+
+# }}}
+
+# {{{ Clear up after status display
+
+if [[ $TERM == tgtelnet ]]; then
+  echo
+else
+  echo -n "\r"
+fi
+
+# }}}
+# {{{ Profile report
+
+if [[ -n "$ZSH_PROFILE_RC" ]]; then
+  zprof >! ~/zshrc.zprof
+  exit
+fi
+
+# }}}
+
+# {{{ Search for history loosing bug
+
+which check_hist_size >&/dev/null && check_hist_size
+
+# }}}
diff --git a/zsh_people/arne_schwabes/zshrc b/zsh_people/arne_schwabes/zshrc
new file mode 100644 (file)
index 0000000..490f891
--- /dev/null
@@ -0,0 +1,357 @@
+#!/bin/zsh
+# I got this file from someone (don't remember who though) 
+# and modified it :).
+#
+# Arne Schwabe <arne@rfc2549.org>
+#
+# But some credit still goes to (and others):
+#
+# zshrc - by trey tabner. email:  trey@epicsol.org   irc:  icetrey@efnet
+# not all of this is mine, a few of the completions are taken from old examples :)
+
+hosts=( news mailrapid mailgate mailgate2 mailserv \
+       leros atreus monkey-island \
+    ilum r2d2 kamino geonosis coruscant.rfc1149.org \
+       info-stud info-e info-f angkor-vat athene webserv \
+       naxos simon-the-sorcerer the-little-computer-project pissarro \
+       kevin feivel orang-utan-klaus \
+       queaker debian.ventourizen.de fireball \
+       debian.ventourizen.de queaker )
+
+umask 022
+alias dos2unix='recode ibmpc:lat1'
+alias unix2dos='recode la1:imbpc'
+alias dp=display
+if [[ -e /usr/local/maple8-8.01/bin/ ]]; then
+       alias maple=/usr/local/maple8-8.01/bin/maple
+       alias xmaple=/usr/local/maple8-8.01/bin/xmaple
+fi
+
+#alias kernel='finger @finger.kernel.org'
+
+alias j='jobs -l'
+alias h='history'
+
+lynx='lynx -accept_all_cookies'
+
+alias lowercase='for i in [A-Z][A-Z]*(.); do mv "$i" "${i:l}" ;done'
+alias bt='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 3 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))'
+alias btu='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 100 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))'
+alias bto='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 13 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))'
+alias mgqueue='ssh mailgate /home/mail/exim/bin/exim -C /home/mail/exim/configure.outgoing -bpc'
+alias acroread="LANG=de_DE acroread"
+
+export HISTFILE=$HOME/.zshhistory
+export HISTSIZE=10000
+export SAVEHIST=5000
+
+export EDITOR=emacs
+export PAGER=less
+
+export LANG=de_DE.UTF-8
+export LC_MESSAGES=C
+
+setopt \
+        NO_all_export \
+        always_last_prompt \
+        NO_always_to_end \
+        append_history \
+        NO_auto_cd \
+        auto_list \
+        auto_menu \
+        NO_auto_name_dirs \
+        auto_param_keys \
+        auto_param_slash \
+        auto_pushd \
+        auto_remove_slash \
+        NO_auto_resume \
+        bad_pattern \
+        bang_hist \
+        NO_beep \
+        bg_nice \
+        brace_ccl \
+               bsd_echo \
+        correct_all \
+        cdable_vars \
+        NO_chase_links \
+        no_clobber \
+        complete_aliases \
+        complete_in_word \
+        correct \
+        NO_correct_all \
+        csh_junkie_history \
+        NO_csh_junkie_loops \
+        NO_csh_junkie_quotes \
+        NO_csh_null_glob \
+        equals \
+        extended_glob \
+        extended_history \
+        function_argzero \
+        glob \
+        NO_glob_assign \
+        glob_complete \
+        glob_dots \
+        glob_subst \
+        hash_cmds \
+        hash_dirs \
+        hash_list_all \
+        NO_hist_allow_clobber \
+        NO_hist_beep \
+        hist_ignore_dups \
+        hist_ignore_space \
+        hist_no_store \
+        no_hist_verify \
+        NO_hup \
+        NO_ignore_braces \
+        NO_ignore_eof \
+        interactive_comments \
+        NO_list_ambiguous \
+        NO_list_beep \
+        list_types \
+        long_list_jobs \
+        magic_equal_subst \
+        NO_mail_warning \
+        NO_mark_dirs \
+        NO_menu_complete \
+        multios \
+        nomatch \
+        notify \
+        NO_null_glob \
+        numeric_glob_sort \
+        NO_overstrike \
+        path_dirs \
+        posix_builtins \
+        print_exit_value \
+        NO_prompt_cr \
+        prompt_subst \
+        pushd_ignore_dups \
+        NO_pushd_minus \
+        NO_pushd_silent \
+        pushd_to_home \
+        rc_expand_param \
+        NO_rc_quotes \
+        NO_rm_star_silent \
+        NO_sh_file_expansion \
+           sh_option_letters \
+               no_sh_glob \
+        short_loops \
+        NO_sh_word_split \
+        NO_single_line_zle \
+        NO_sun_keyboard_hack \
+        unset \
+        NO_verbose \
+        NO_xtrace \
+        zle
+
+
+
+# From zefram Prompt and heavily modified (you did not expect anything else, did you)
+# The screen and preexec thing came from www.zshwiki.org/cgi-bin/wiki.pl?ZshHardStatus
+
+ case $TERM in
+        xterm*)
+                function title () {print -nP '\e]0;'$*'\a'}
+         ;;
+        screen*)
+                function title () {
+                  print -nPR $'\033k'$1$'\033'\\ 
+                  print -nPR $'\033]0;'$2$'\a'
+                  }
+                ;;
+        *)
+                function title() {}
+                ;;
+                
+ esac
+
+
+function prompt_arne_zefram_precmd {
+        local exitstatus=$?
+        psvar=(SIG)
+        [[ $exitstatus -gt 128 ]] && psvar[1]=SIG$signals[$exitstatus-127]
+        [[ $psvar[1] = SIG ]] && psvar[1]=$exitstatus
+        jobs % >/dev/null 2>&1 && psvar[2]=
+
+               title "%n@%m:%20<...<%3~%<<"
+}
+
+function prompt_arne_zefram_setup {
+  PS1='[%(00t.DING%(0T. DONG.)!.%T)]%(?..%U{%v}%u)%(!..%n%(2v.%B@%b.@))%m:%20<...<%3~%<<%# '
+  PS2='%(4_:... :)%3_> '
+
+  prompt_opts=( cr subst percent )
+  precmd () { prompt_arne_zefram_precmd }
+  function preexec {
+      emulate -L zsh
+      local -a cmd; cmd=(${(z)1})
+      title %n@%m:$cmd[1]:t "$cmd[2,-1]"
+  }
+}
+
+function prompt_arne_zefram_setup3 {
+       prompt_arne_zefram_setup
+       function preexec() {}
+}
+
+if [[ $USER != root ]]; then
+    if [[ "$SSH_AUTH_SOCK" == "" && -f ~/.ssh/.agent-$HOST ]]; then
+       echo -n "Reused PID: "
+       source ~/.ssh/.agent-$HOST
+    fi
+
+
+    ssh-add -l  2> /dev/null # | cut -d" " -f1,3,4
+
+    if [[ $? == 1 || $? == 0 ]] then
+       #echo ssh agent reused
+       :
+    else
+       if [[ -f ~/.ssh/.agent-$HOST ]]; then
+           rm ~/.ssh/.agent-$HOST
+       fi
+       ssh-agent > ~/.ssh/.agent-$HOST
+       source ~/.ssh/.agent-$HOST
+    fi
+    unset tmp
+fi
+
+if [[ $OSTYPE = 'linux-gnu' ]]; then
+       filesystems="${${(f)$(</proc/filesystems)}#*  }"
+       eval "$(dircolors)"
+       setterm -hbcolor bright white
+       setterm -ulcolor cyan
+
+       alias ls='ls --color=auto'
+       alias df='df -T'
+       
+
+       # FreeBSD seems to be more clever, so I move this to Linux
+       export PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH
+       if [ -d ~/bin ]; then
+          PATH="$HOME/bin:${PATH}"
+       fi
+
+       # Sigh, I have far _too_ many GNUism in my config
+elif test `uname` = 'FreeBSD'; then
+       # No PATH setting :)))
+       alias ls='ls -GF'
+
+
+       
+       function temp () {
+               echo $(($(sysctl hw.acpi.thermal.tz0.temperature \
+                       | cut -d " " -f 2) / 10.0 - 273.15))
+       }
+elif test `uname` = 'SunOS'; then
+       PATH=/usr/sbin/:/usr/bin
+       if [ -e /usr/pkg ]; then
+               PATH=${PATH}:/usr/pkg/bin:/usr/pkg/sbin
+               MANPATH=${MANPATH}:/usr/pkg/man
+       fi
+       PATH=${PATH}:/opt/SUNWspro/bin
+       PATH=${PATH}:/usr/local/bin
+       PATH=${PATH}:/usr/ccs/bin/:usr/ccs/lib
+       PATH=${PATH}:/opt/sfw/bin
+
+       if [ "DISPLAY" != "" ]; then
+               PATH=${PATH}:/usr/dt/bin
+               PATH=${PATH}:/usr/openwin/bin
+       fi
+       export PATH
+fi
+
+
+if [[ $HOST == "coruscant" ]]; then
+       export CVSROOT="/var/lib/cvs"
+else
+       export CVSROOT=":pserver:arne@coruscant.rfc1149.org:/var/lib/cvs"
+fi
+
+       
+if test $HOST = "mailrapid" || test $HOST = "mailgate"  || test $HOST = "mailgate2" || test $HOST = "mailrapid2"  ; then
+       export PATH=/home/mail/bin:$PATH
+       if test $HOST = "mailrapid" ; then
+               export PATH=$PATH:/var/mailman/bin
+       fi
+fi
+
+
+
+bindkey -me
+bindkey -s '^X^Z' '%-^M'
+bindkey '^[e' expand-cmd-path
+bindkey -s '^X?' '\eb=\ef\C-x*'
+bindkey '^[^I' reverse-menu-complete
+bindkey '^[p' history-beginning-search-backward
+bindkey '^[n' history-beginning-search-forward
+
+bindkey '^p' history-beginning-search-backward
+bindkey '^n' history-beginning-search-forward
+bindkey '^[[A' history-beginning-search-backward
+bindkey '^[[B' history-beginning-search-forward
+
+bindkey '^W' kill-region
+bindkey '^I' expand-or-complete-prefix
+bindkey -s '^[[Z' '\t'
+
+
+bindkey "\e[4~" end-of-line
+bindkey "^[[8~"  end-of-line
+
+bindkey "^[[1~" beginning-of-line
+bindkey "^[[7~" beginning-of-line
+
+if [[ ${ZSH_VERSION%%.*} -ge 4 ]]; then
+       zstyle :compinstall filename '/home/arne/.zshrc'
+       zstyle '*' hosts $hosts
+       prompt_arne_zefram_setup
+
+       autoload -U compinit
+       compinit
+       
+#      setopt \
+#              share_history
+ else 
+       prompt_arne_zefram_setup3
+fi
+
+## Orginal Source Code of the Clock:
+## Thomas Köhler also has a .zshrc: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/zsh/u
+# Modified to fit to my prompt
+# Does not work so good :/
+
+#trap uhrzeit ALRM
+#TMOUT=60
+
+#function uhrzeit() {
+#   print -nP "\e7\e[1;G"
+#   # echo the date
+#   print -nP "[%(00t.DING%(0T. DONG.)!.%T)]"
+#   # restore cursor position
+#   print -nP "\e8"
+#}
+
+
+
+
+
+function kernel()
+{
+       printf 'GET /kdist/finger_banner HTTP1.0\n\n' | nc www.kernel.org 80 | grep latest
+}
+
+function http_header()
+{
+       # This is zsh but still no gnu echoism ;P
+       if [[ $2 != "" ]] { port=$2 } else { port=80 }
+       if [[ $3 != "" ]] { vhost="$3" } else { vhost=$1 }
+       printf "HEAD /$4 HTTP/1.1\\nHost: $vhost\nConnection: close\n\n" \
+        | nc $1 $port
+}
+
+
+function setenv() { export $1="$2" }
+function unsetenv() { unset $1 }
+
+
diff --git a/zsh_people/bruno_bonfils/.zshrc b/zsh_people/bruno_bonfils/.zshrc
new file mode 100644 (file)
index 0000000..b3a1bff
--- /dev/null
@@ -0,0 +1,33 @@
+# 
+# Bruno Bonfils, <asyd@debian-fr.org> 
+# Written since summer 2001
+
+# My functions (don't forget to modify fpath before call compinit !!)
+fpath=($HOME/.zsh/functions $fpath)
+
+# in order to have many completion function run comptinstall !
+
+autoload -U zutil
+autoload -U compinit
+autoload -U complist
+
+# Activation
+compinit
+
+# Global Resource files
+for file in $HOME/.zsh/rc/*.rc; do
+       source $file
+done
+
+local os host
+
+# Set default umask to 027, can be override by host specific resource file
+umask 027
+
+# Hostnames resources files
+host=${$(hostname)//.*/}
+[ -f ".zsh/rc.host/${host}.zsh" ] && source ".zsh/rc.host/${host}.zsh"
+
+# OS resources files
+os=$(uname)
+[ -f ".zsh/rc.os/${os}.zsh" ] && source ".zsh/rc.os/${os}.zsh"
diff --git a/zsh_people/bruno_bonfils/Changelog b/zsh_people/bruno_bonfils/Changelog
new file mode 100644 (file)
index 0000000..21fcab0
--- /dev/null
@@ -0,0 +1,15 @@
+-misc
+
+       * Add per host resource file
+       * Add per OS resource file
+       * One history per host
+
+ -- Bruno Bonfils <asyd@debian-fr.org>  Fri, 19 Dec 2003 18:58:10 +0100
+
+-colors 
+       
+       * suppress bold
+       * add audio (xm, ogg) colors
+       * add doc (pdf, ps) colors
+
+ -- Bruno Bonfils <asyd@debian-fr.org> Mon, 23 Dec 2002 11:32:36 +0100
diff --git a/zsh_people/bruno_bonfils/bin/report-suid.zsh b/zsh_people/bruno_bonfils/bin/report-suid.zsh
new file mode 100755 (executable)
index 0000000..e618ae6
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/zsh
+
+echo "********"
+echo "* SetUID binaries :"
+
diff --git a/zsh_people/bruno_bonfils/bin/zshist b/zsh_people/bruno_bonfils/bin/zshist
new file mode 100755 (executable)
index 0000000..7aae794
--- /dev/null
@@ -0,0 +1,72 @@
+#! /usr/bin/python
+
+import sys, os, string, time
+import locale
+locale.setlocale(locale.LC_ALL,"")
+
+#some default definitions
+colours = {    
+            'none'       :    "",
+            'default'    :    "\033[0m",
+            'bold'       :    "\033[1m",
+            'underline'  :    "\033[4m",
+            'blink'      :    "\033[5m",
+            'reverse'    :    "\033[7m",
+            'concealed'  :    "\033[8m",
+
+            'black'      :    "\033[30m", 
+            'red'        :    "\033[31m",
+            'green'      :    "\033[32m",
+            'yellow'     :    "\033[33m",
+            'blue'       :    "\033[34m",
+            'magenta'    :    "\033[35m",
+            'cyan'       :    "\033[36m",
+            'white'      :    "\033[37m",
+
+            'on_black'   :    "\033[40m", 
+            'on_red'     :    "\033[41m",
+            'on_green'   :    "\033[42m",
+            'on_yellow'  :    "\033[43m",
+            'on_blue'    :    "\033[44m",
+            'on_magenta' :    "\033[45m",
+            'on_cyan'    :    "\033[46m",
+            'on_white'   :    "\033[47m",
+
+            'beep'       :    "\007"
+            }
+
+
+timeformat = "%a %b %d %H:%M:%S %Y"
+delim1 = colours["bold"]+colours["red"] # before time string
+delim2 = colours["default"]+colours["yellow"]+":" # after time string
+delim3 = ": "+colours["default"] # before command
+delim4 = colours["default"] # at the end of line
+delim5 = colours["bold"]+colours["blue"] # before unrecognized line format
+
+
+for i in [ os.environ['HOME']+"/.zsh/misc/zshistrc"]:
+    if os.path.isfile(i):
+        execfile(i)
+
+
+if len(sys.argv) > 1:
+    historyfile = sys.argv[1]
+    if os.path.isdir(historyfile):
+        historyfile = historyfile + "/.zsh/history"
+else:
+    historyfile = os.environ['HOME']+"/.zsh/history"
+
+f = open(historyfile,"r")
+l = f.readlines()
+for i in l:
+    try:
+        s1 = string.split(i, ":",2)
+        timestring = s1[1]
+        s2 = string.split(s1[2], ";", 1)
+        delaystring = s2[0]
+        commandstring = s2[1][:-1]
+        t = long(timestring) # seconds since the epoch
+        print delim1+time.strftime(timeformat,time.localtime(t))+delim2+delaystring+delim3+commandstring+delim4
+    except:
+        print delim5+i[:-1]+delim4
+
diff --git a/zsh_people/bruno_bonfils/functions/_auto-apt b/zsh_people/bruno_bonfils/functions/_auto-apt
new file mode 100644 (file)
index 0000000..9b26a05
--- /dev/null
@@ -0,0 +1,65 @@
+#compdef auto-apt
+
+# Bruno Bonfils, <asyd@zshfr.org>
+
+local expl prev ret
+
+prev="$words[CURRENT-1]"
+
+# if there is a command in arguments ?
+if [[ -n $words[(r)(run|update|update-local|merge|del|check|list|search|debuilt|status)] ]] ; then
+
+    # yes, add completion for command arguments and command options
+    if [[ -n $words[(r)(update|update-local|merge)] && "$words[CURRENT]" = -* ]] ; then
+       _wanted option expl 'option' compadd - "-a" && return 0;
+    fi
+
+    if [[ -n $words[(r)(check|list|search)] && "$words[CURRENT]" = -* ]] ; then
+       _wanted option expl 'option' compadd - "-v" "-f" && return 0;
+    fi
+
+    case $prev in
+       "run")
+           _wanted command expl 'command' _files -g '*(/,*)' && return 0 ;;
+       "del")
+           _wanted package expl 'package' _deb_packages avail && return 0 ;;
+       "search")
+           _arguments ':pattern:' && return 0 ;; 
+    esac
+
+else
+
+    # no, add completion for commands or options (and options arguments)
+    compset -P "*,"
+
+    case $prev in 
+       "-a")
+           local distribs
+           distribs=("main" "contrib" "non-free" "non-US" "none")
+           
+           _wanted distribution expl 'distribution' compadd -q -S, $distribs ;;
+       "-p")
+           local hooks
+           hooks=("exec" "open" "access" "stat" "none")
+           _wanted hook expl 'hook' compadd -q -S, $hooks ;;
+       "-D")
+           _wanted file expl 'dbfile' _files ;;
+       "-F")
+           _wanted file expl 'filedb' _files ;;
+       *)
+           
+           local commands options
+           
+           commands=("run" "update" "update-local" "merge" "del" "check" "list" "search" "debuild" "status")
+           options=("-h" "-s" "-y" "-q" "-i" "-X" "-x" "-a" "-p" "-D" "-F" "-L")
+           
+           if [[ "$words[CURRENT]" = -* ]] ; then
+               _wanted option expl 'option' compadd - $options
+           else
+               _wanted command expl 'command' compadd $commands
+           fi
+           ;;
+    esac
+
+    return 0
+fi
diff --git a/zsh_people/bruno_bonfils/functions/_auto-apt.zwc b/zsh_people/bruno_bonfils/functions/_auto-apt.zwc
new file mode 100644 (file)
index 0000000..64b8ba8
Binary files /dev/null and b/zsh_people/bruno_bonfils/functions/_auto-apt.zwc differ
diff --git a/zsh_people/bruno_bonfils/functions/_gpg.zwc b/zsh_people/bruno_bonfils/functions/_gpg.zwc
new file mode 100644 (file)
index 0000000..94f457b
Binary files /dev/null and b/zsh_people/bruno_bonfils/functions/_gpg.zwc differ
diff --git a/zsh_people/bruno_bonfils/functions/_mplayer b/zsh_people/bruno_bonfils/functions/_mplayer
new file mode 100644 (file)
index 0000000..87bc06e
--- /dev/null
@@ -0,0 +1,201 @@
+#compdef mplayer
+
+#
+# MPlayer Zsh function
+# Feb 2002, Bruno Bonfils <asyd@zshfr.org>
+# thanks to #zsh@irc.openprojects.net (specially Clint)
+#
+
+_audio-codec-list ()
+{
+    if ( [[ ${+_mplayer_audio_codec} -eq 0 ]] || 
+           _cache_invalid MPlayer_ac ) && 
+       ! _retrieve_cache MPlayer_ac; then
+       
+       local buffer version
+       
+       buffer=(${(@f)"$(mplayer -ac help)"})
+       version=buffer[1]
+
+       if [[ "$version" = *\0.50* ]]; then
+           _mplayer_audio_codec=(${buffer[3,-1]%% *})
+       else
+           _mplayer_audio_codec=(${buffer[9,-1]%% *})
+       fi
+
+       _store_cache MPlayer_ac _mplayer_audio_codec
+    fi
+
+    _wanted audio-codec expl 'audio-codec' compadd $_mplayer_audio_codec
+}
+
+_audio-driver-list ()
+{
+    if ( [[ ${+_mplayer_audio_driver} -eq 0 ]] ||
+           _cache_invalid MPlayer_ao ) &&
+       ! _retrieve_cache MPlayer_ao; then
+       
+       local buffer version
+
+       buffer=(${(@f)"$(mplayer -ao help)"})
+       version=$buffer[1]
+
+       if [[ "$version" = *\0.50* ]]; then
+           _mplayer_audio_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*})
+       else
+           _mplayer_audio_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*})
+       fi
+
+       _store_cache MPlayer_ao _mplayer_audio_driver
+
+    fi
+
+    _wanted audio-driver expl 'audio-driver' compadd $_mplayer_audio_driver
+}
+
+_video-codec-list ()
+{
+    if ( [[ ${+_mplayer_video_codec} -eq 0 ]] || 
+           _cache_invalid MPlayer_vc ) && 
+       ! _retrieve_cache MPlayer_vc; then
+       
+       local buffer version
+       
+       buffer=(${(@f)"$(mplayer -vc help)"})
+       version=buffer[1]
+
+       if [[ "$version" = *\0.50* ]]; then
+           _mplayer_video_codec=(${buffer[3,-1]%% *})
+       else
+           _mplayer_video_codec=(${buffer[9,-1]%% *})
+       fi
+
+       _store_cache MPlayer_vc _mplayer_video_codec
+    fi
+
+    _wanted video-codec expl 'video-codec' compadd $_mplayer_video_codec
+}
+
+_video-driver-list ()
+{
+    if ( [[ ${+_mplayer_video_driver} -eq 0 ]] ||
+           _cache_invalid MPlayer_vo ) &&
+       ! _retrieve_cache MPlayer_vo; then
+       
+       local buffer version
+
+       buffer=(${(@f)"$(mplayer -vo help)"})
+       version=$buffer[1]
+
+       if [[ "$version" = *\0.50* ]]; then
+           _mplayer_video_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*})
+       else
+           _mplayer_video_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*})
+       fi
+
+       _store_cache MPlayer_vo _mplayer_video_driver
+
+    fi
+
+    _wanted video-driver expl 'video-driver' compadd $_mplayer_video_driver
+}
+
+_skins-list ()
+{
+    local _default_skin
+    if zstyle -a ":completion:${curcontext}:" default-skin _default_skin; then
+       if ( [[ -d ~/.mplayer/Skin/$_default_skin ]] || [[ -d /usr/local/share/Skin/mplayer/$_default_skin ]] ); then
+          compadd $_default_skin && return 0
+       fi
+    fi
+
+    if ( [[ ${+_mplayer_skins} -eq 0 ]] ||
+           _cache_invalid MPlayer_skins ) &&
+       ! _retrieve_cache MPlayer_skins; then
+
+       if [[ -d ~/.mplayer/Skin ]]; then
+           _mplayer_skins=(${(o)$(ls ~/.mplayer/Skin)})
+       fi
+
+       if [[ -d /usr/local/share/mplayer/Skin ]]; then
+           _mplayer_skins=($_mplayer_skins ${(o)$(ls /usr/local/share/mplayer/Skin)})
+       fi
+
+       _store_cache MPlayer_skins _mplayer_skins
+
+    fi
+
+    _wanted skin expl 'skin' compadd $_mplayer_skins
+}
+
+
+_arguments -C -s \
+    '-abs[sound card audio buffer size(in bytes, default: measuring)]:buffer size' \
+    '-ac[force usage of a specific audio codec]:audio-codec attachment:_audio-codec-list' \
+    '-afm[force usage of a specific audio codec family]:audio-codec-family:(1 2 3 4 5)' \
+    '-aid[select audio channel]:audio-channel' \
+    '-ao[audio driver]:audio-driver attachment:_audio-driver-list' \
+    '-aspect[set aspect ratio of movies]:ratio' \
+    '-benchmark[use with combination with -nosound and -vo null for benchmarking]' \
+    '-chapter[specify which chapter to start playing at]:chapter' \
+    '-config[specifies where to search for config files]' \
+    '-delay[audio delay in seconds (may be +/- float value)]:delay' \
+    '-display[specify the hostname and display number of the X server]:display attachment:_x_display' \
+    '-double[enable double buffering]' \
+    '-dumpaudio[writes audio stream of the file to ./stream.dump]' \
+    '-dvdkey[key to decrypt stream encoded with css]:key' \
+    '-dvd[tell MPlayer which movies to play]:titleid' \
+    '-fbmode[change videomode from /etc/fb.modes]:fbmode' \
+    '-fbmodeconfig[use config file instead /etc/fb.modes]:fbmodeconfig:_files' \
+    '-fb[specifies the framebuffer device to user]' \
+    '-ffactor[resample alphamap of the font]:factor:(0 0.75 1 10)' \
+    '-forceidx[force rebuilding of index]' \
+    '-forcexv[force using xvideo (sdl)]' \
+    '-fps[force frame rate (if value is wrong in the header)]:frame-rate' \
+    '-framedrop[enable slow dropping (for slow machine)]' \
+    '-framedrop[frame dropping]' \
+    '-frames[mplayer plays number frame, and quits]:frame-number' \
+    '-fs[fullscreen]' \
+    '-fsmode[fullscreen mode]:fs-mode:(0 1 2 3)' \
+    '-gui[start with gui mode]' \
+    '-skin[skin name]:skin attachment:_skins-list' \
+    '-idx[rebuilds index of the avi]' \
+    '-include[specify config file to be parsed after the default]:config-file:_files' \
+    '-lircconf[specifies a configfile for lirc]:lirc-config-files attachment:_files' \
+    '-mc[maximun sync correction per 5 frames (in second)]:max-sync-correction' \
+    '-monitoraspect[set aspect ratio of your screen]:ratio' \
+    '-ni[force usage of non-interlaced avi parser]' \
+    '-nobps[do not use avg byte/sec value for A-V sync (AVI)]' \
+    '-nobps[use alternative A-V sync method for AVI files]' \
+    '-nodouble[disable double buffering (default)]' \
+    '-nodshow[disable usage of directshow video codecs]' \
+    '-noframedrop[no frame dropping]' \
+    '-nosound[no sound]' \
+    '-osdlevel[specifies which mode the osd should start]:osd-level:(0 1 2)' \
+    '-pp[apply postprocess filter]:filter attachment:_filter-list' \
+    '-quiet[display less output, status messages]' \
+    '-sb[seek to byte position]:byte' \
+    '-srate[specifies Hz to playback audio on]:frequence' \
+    '-ss[seek to given time position (format hh:mm\[:ss\])]:position' \
+    '-steromode[select type of mpeg1 stereo output]:stereo-mode:(0 1 2)' \
+    '-subfps[specify frame/sec rate of subtitle file only]:rate' \
+    '-sub[use/display this subtitle file]:subtitle:_files' \
+    '-unicode[tells mplayer to handle the subtitle file as unicode]' \
+    '-utf8[tells mplayer to handle the subtitle file as utf8]' \
+    '-vcd[play video cd track]:track' \
+    '-vc[force usage of a specific video codec]:video-codec attachment:_video-codec-list' \
+    '-v[enable verbose output]' \
+    '-vfm[force usage of a specific video codec family]:video-codec-family:(1 2 3 4 5)' \
+    '-vid[select video channel]:video-channel' \
+    '-vm[use XF86VidMode extension for mode changing]' \
+    '-vo[video driver]:video-driver attachment:_video-driver-list' \
+    '-x[scale image to x width if driver supports]:width' \
+    '-xy[scale image by factor if driver supports]:factor' \
+    '-y[scale image to y height if driver supports]:height' \
+    '-zoom[use software scaling, where available (use with -nofs)]' \
+    '-z[specify compression level for png output]:compression-level:(0 1 2 3 4 5 6 7 8)' \
+    "*:video file:_files -g '*.(#i)(mpg|avi|mpeg|mov|asf|vob|mjpg)'" \
+    && return 0
+return 1
+
+
diff --git a/zsh_people/bruno_bonfils/functions/_mplayer.zwc b/zsh_people/bruno_bonfils/functions/_mplayer.zwc
new file mode 100644 (file)
index 0000000..9661523
Binary files /dev/null and b/zsh_people/bruno_bonfils/functions/_mplayer.zwc differ
diff --git a/zsh_people/bruno_bonfils/functions/_mutt b/zsh_people/bruno_bonfils/functions/_mutt
new file mode 100644 (file)
index 0000000..604979f
--- /dev/null
@@ -0,0 +1,57 @@
+#compdef mutt
+
+local curcontext="$curcontext" state line expl suf
+typeset -A opt_args
+
+_arguments -C -s \
+    '::recipient:->userhostalias' \
+    '*-a[attach file using MIME]:file attachment:_files' \
+    '*-b[specify a BCC recipient]:BCC recipient:->userhost' \
+    '*-c[specify a CC recipient]:CC recipient:->userhost' \
+    '-e+[specify a post-init configuration command]:post-init configuration:' \
+    '-f+[specify mailbox to load]:mailbox: _mailboxes' \
+    '-F+[specify an init file]:init file:_files' \
+    '-h[display help]' \
+    '-H+[specify a draft file for message]:draft file:_files' \
+    '-i+[specify file to include in message]:include file:_files' \
+    '-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)' \
+    '-n[bypass system configuration]' \
+    '-p[resume postponed message]' \
+    '-R[open in read-only mode]' \
+    '-s+[specify a subject]:subject:' \
+    '-v[display mutt version]' \
+    '-x[emulate mailx compose]' \
+    '-y[start listing mailboxes]' \
+    '-z[start only if new messages]' \
+    '-Z[open first mailbox with new mail]' && return 0
+
+if [[ "$state" = userhostalias ]]; then
+  if compset -P '*@'; then
+    _description hosts expl 'remote host name'
+    _hosts "$expl[@]" -q -S, && return 0
+  else
+    compset -S '@*' || suf='@'
+    
+    _description users expl 'login name'
+    _users "$expl[@]" -q -S "$suf"
+
+    # added by asyd (20020304)
+    if [ -r ~/.muttrc ]; then
+
+       # use cache
+       if ( [[ ${+_list_alias} -eq 0 ]] || _cache_invalid mutt_alias ) &&
+          ! _retrieve_cache mutt_alias; then
+       
+          _list_alias=(${(o)${${(M)${(f)"$(< ~/.muttrc)"}##alias*}/alias /}%% *})
+       
+          _store_cache mutt_alias _list_alias
+       fi
+       
+       _wanted alias expl 'alias name' compadd -q -S, $_list_alias 
+    fi
+    return 0
+    
+  fi
+fi
+
+return 1
diff --git a/zsh_people/bruno_bonfils/functions/_mutt.zwc b/zsh_people/bruno_bonfils/functions/_mutt.zwc
new file mode 100644 (file)
index 0000000..02c7ddc
Binary files /dev/null and b/zsh_people/bruno_bonfils/functions/_mutt.zwc differ
diff --git a/zsh_people/bruno_bonfils/hosts/cisco b/zsh_people/bruno_bonfils/hosts/cisco
new file mode 100644 (file)
index 0000000..46ded2c
--- /dev/null
@@ -0,0 +1,5 @@
+#dns-name;menu-name;menu-description
+wibutee;Wibutee;Router 1605R
+caroline;Caroline;Switch 2912XL
+carmya;Carmya;Bridge/Fw 1605
+smtp.axs-fr.net
diff --git a/zsh_people/bruno_bonfils/hosts/general b/zsh_people/bruno_bonfils/hosts/general
new file mode 100644 (file)
index 0000000..19158c4
--- /dev/null
@@ -0,0 +1,8 @@
+wwwkeys.us.pgp.net
+jazzland
+62.129.173.1
+carmya
+glou.net
+caroline
+wibutee
+smtp.axs-fr.net
diff --git a/zsh_people/bruno_bonfils/misc/dircolors.rc b/zsh_people/bruno_bonfils/misc/dircolors.rc
new file mode 100644 (file)
index 0000000..61ecba2
--- /dev/null
@@ -0,0 +1,74 @@
+COLOR tty
+
+# Extra command line options for ls go here.
+# Basically these ones are:
+#  -F = show '/' for dirs, '*' for executables, etc.
+#  -T 0 = don't trust tab spacing when formatting ls output.
+OPTIONS -F -T 0
+
+# Below, there should be one TERM entry for each termtype that is colorizable
+TERM linux
+TERM screen
+TERM console
+TERM xterm
+TERM rxvt
+TERM vt100
+TERM Eterm
+
+# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
+EIGHTBIT 1
+
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes: 
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+NORMAL 00      # global default, although everything should be something.
+FILE 00        # normal file
+DIR 00;34      # directory
+LINK 00;35     # symbolic link
+FIFO 40;33     # pipe
+SOCK 01;35     # socket
+BLK 40;33;01   # block device driver
+CHR 40;33;01   # character device driver
+
+# This is for files with execute permission:
+EXEC 01;32 
+
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+
+# Archives
+.btm 00;32
+.tar 00;31
+.tgz 00;31
+.arj 00;31
+.gz  00;31
+.bz2 00;31
+
+# Packages
+.deb 04;35
+.rpm 04;35
+
+# Images
+.jpg 00;35
+.gif 00;35       # GIF SUX !!!
+.bmp 00;35
+.xbm 00;35
+.xpm 00;35
+.tif 00;35
+.png 00;35
+
+# Sons
+.mp3 00;33
+.xm  00;33
+.ogg 00;33
+
+# Doc
+.pdf 00;36
+.PDF 00;36
+.ps  00;36
diff --git a/zsh_people/bruno_bonfils/misc/zshist.1 b/zsh_people/bruno_bonfils/misc/zshist.1
new file mode 100644 (file)
index 0000000..a320b82
--- /dev/null
@@ -0,0 +1,27 @@
+.TH ZSHIST 1
+.SH ZSHIST
+zshist \- read .zsh_history file
+.SH SYNOPSIS
+.B zshist
+.I [filename]
+.SH DESCRIPTION
+.BR zshist
+will parse 
+.I filename
+(expecting it to be .zsh_history file with EXTENDED_HISTORY 
+option set on)
+and convert timestamps to
+readable format. As a bonus, it will colourise the output.
+
+If 
+.I filename
+is a directory,
+.BR zshist
+will append .zsh_history to it and try to parse that file.
+
+If no filename is given, it will read ~/.zsh_history
+
+.SH SEE ALSO
+.BR zsh "(1)
+.SH AUTHOR
+Written by Radovan Garabik <garabik@melkor.dnp.fmph.uniba.sk>
diff --git a/zsh_people/bruno_bonfils/misc/zshistrc b/zsh_people/bruno_bonfils/misc/zshistrc
new file mode 100644 (file)
index 0000000..88142bd
--- /dev/null
@@ -0,0 +1,48 @@
+# delimiters can be any string, you can use colour["colourname"] and + operator
+# to get interesting colour effects
+# Colours are one of: 
+#       none, default, bold, underline, blink, reverse, concealed,
+#      black, green, yellow, blue, magenta, cyan, white,
+#      on_black, on_green, on_yellow, on_blue, on_magenta, on_cyan,
+#       on_white, beep
+# on_red means that the background (instead of foreground) is painted 
+# with red etc...
+
+delim1 = colours["green"] # before time string
+delim2 = colours["red"]+":" # after time string
+delim3 = ": "+colours["default"] # before command
+delim4 = colours["default"] # at the end of line - you'd better leave colours["default"] at the end!
+delim5 = colours["bold"]+colours["blue"] # before unrecognized line format
+
+
+# timeformat can contain following directives:
+#
+#   Directive  Meaning
+#   %a         Locale's abbreviated weekday name.
+#   %A         Locale's full weekday name.
+#   %b         Locale's abbreviated month name.
+#   %B         Locale's full month name.
+#   %c         Locale's appropriate date and time representation.
+#   %d         Day of the month as a decimal number [01,31].
+#   %H         Hour (24-hour clock) as a decimal number [00,23].
+#   %I         Hour (12-hour clock) as a decimal number [01,12].
+#   %j         Day of the year as a decimal number [001,366].
+#   %m         Month as a decimal number [01,12].
+#   %M         Minute as a decimal number [00,59].
+#   %p         Locale's equivalent of either AM or PM.
+#   %S         Second as a decimal number [00,61].
+#   %U         Week number of the year (Sunday as the first day of the week) 
+#              as a decimal number [00,53]. All days in a new year preceding 
+#              the first Sunday are considered to be in week 0.
+#   %w         Weekday as a decimal number [0(Sunday),6].
+#   %W         Week number of the year (Monday as the first day of the week) 
+#              as a decimal number [00,53]. All days in a new year preceding 
+#              the first Sunday are considered to be in week 0.
+#   %x         Locale's appropriate date representation.
+#   %X         Locale's appropriate time representation.
+#   %y         Year without century as a decimal number [00,99].
+#   %Y         Year with century as a decimal number.
+#   %Z         Time zone name (or by no characters if no time zone exists).
+#   %%         %
+
+timeformat = "%d %b %H:%M:%S"
diff --git a/zsh_people/bruno_bonfils/rc.host/fs.zsh b/zsh_people/bruno_bonfils/rc.host/fs.zsh
new file mode 100644 (file)
index 0000000..ea7f94e
--- /dev/null
@@ -0,0 +1,6 @@
+# Prompts color
+
+export host_color="yellow"
+export domain_color="yellow"
+export path_color="yellow"
+export date_color="white"
diff --git a/zsh_people/bruno_bonfils/rc.host/jazzland.zsh b/zsh_people/bruno_bonfils/rc.host/jazzland.zsh
new file mode 100644 (file)
index 0000000..c5e3c6d
--- /dev/null
@@ -0,0 +1,10 @@
+# Prompts color
+
+export host_color="green"
+export domain_color="red"
+export path_color="blue"
+export date_color="white"
+export status_color="red"
+
+mailpath=($HOME/Mail/mbox'?Nouveau(x) message(s) dans mbox'
+          $HOME/Mail/tux.u-strasbg'?Nouveau(x) message(s) dans tux')
diff --git a/zsh_people/bruno_bonfils/rc.host/julie.zsh b/zsh_people/bruno_bonfils/rc.host/julie.zsh
new file mode 100644 (file)
index 0000000..44efb46
--- /dev/null
@@ -0,0 +1,6 @@
+# Prompts color
+
+export host_color="green"
+export domain_color="green"
+export path_color="green"
+export date_color="white"
diff --git a/zsh_people/bruno_bonfils/rc.host/workstation.zsh b/zsh_people/bruno_bonfils/rc.host/workstation.zsh
new file mode 100644 (file)
index 0000000..9ad8ccd
--- /dev/null
@@ -0,0 +1,11 @@
+export LC_CTYPE=fr_FR
+export LC_TIME=fr_FR
+# Prompts color
+
+export host_color="green"
+export domain_color="yellow"
+export path_color="red"
+export date_color="white"
+export status_color="red"
+
+mailpath=($HOME/Mail/spool/mbox.in'?Nouveau(x) message(s) dans mbox';)
diff --git a/zsh_people/bruno_bonfils/rc.os/FreeBSD.zsh b/zsh_people/bruno_bonfils/rc.os/FreeBSD.zsh
new file mode 100644 (file)
index 0000000..2b047cc
--- /dev/null
@@ -0,0 +1,26 @@
+# Alias
+alias date-rfc822="date '+%a, %d %b %Y %X %z'"
+
+# Prompt 
+
+autoload -U colors
+colors
+
+# Format
+date_format="%H:%M"
+
+date="%{$fg[$date_color]%}%D{$date_format}"
+host="%{$fg[$host_color]%}%n%{$reset_color%}~%{$fg[$domain_color]%}%m"
+cpath="%{$fg[$path_color]%}%/%b"
+end="%{$reset_color%}"
+
+PS1="$date ($host$end) $cpath
+$end%% "
+
+# Check for GNULS
+if [ -x $(which gnuls) ] ; then
+       eval `dircolors $HOME/.zsh/misc/dircolors.rc`
+       alias ls='gnuls --color'
+       zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+fi
diff --git a/zsh_people/bruno_bonfils/rc.os/Linux.zsh b/zsh_people/bruno_bonfils/rc.os/Linux.zsh
new file mode 100644 (file)
index 0000000..ce9c824
--- /dev/null
@@ -0,0 +1,52 @@
+alias ls='ls --color'
+
+# prompt, colors are defined in host resource file
+autoload -U colors
+colors
+
+# Format
+date_format="%H:%M"
+
+date="%{$fg[$date_color]%}%D{$date_format}"
+host="%{$fg[$host_color]%}%n%{$reset_color%}~%{$fg[$domain_color]%}%m"
+cpath="%B%{$fg[$path_color]%}%/%b"
+end="%{$reset_color%}"
+
+# permit parameter expansion, command substitution and arithmetic expansion 
+# in prompt
+setopt prompt_subst
+
+precmd () { 
+       local buffer load
+       load=(${$(< /proc/loadavg)})
+       LOADAVG="$load[1] $load[2]"
+       buffer=(${$(free)})
+       MEM="$((100 * $buffer[16] / $buffer[8]))%%"
+       if [[ $buffer[19] != 0 ]]; then
+               MEM="$MEM $((100 * $buffer[20] / $buffer[19]))%%"
+       fi
+}
+
+stats="%{$fg[$status_color]%}[\$LOADAVG - \$MEM]"
+
+PS1="$date ($host$end) $cpath
+$end%% "
+
+RPS1="$stats%{$reset_color%}"
+
+export PS1 RPS1
+
+# function use to toggle RPS1 (which is very ugly for copy/paste)
+function rmrps1 () {
+       RPS1=""
+}
+
+function rps1 () {
+       RPS1="$stats%{$reset_color%}"
+}
+
+# zstyle OS specific
+eval `dircolors $HOME/.zsh/misc/dircolors.rc`
+
+# Use LS_COLORS for color completion
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
diff --git a/zsh_people/bruno_bonfils/rc.users b/zsh_people/bruno_bonfils/rc.users
new file mode 100644 (file)
index 0000000..2570e2b
--- /dev/null
@@ -0,0 +1,3 @@
+asyd
+bruno
+nioubie
diff --git a/zsh_people/bruno_bonfils/rc/alias.rc b/zsh_people/bruno_bonfils/rc/alias.rc
new file mode 100644 (file)
index 0000000..e9de374
--- /dev/null
@@ -0,0 +1,75 @@
+# -*- shell-script -*-x
+
+# I prefer interactive mode
+alias mv="mv -i"
+alias rm="rm -i"
+alias cp="cp -i"
+alias ll="ls -l"
+alias la="ls -a"
+alias lsd='ls -ld *(-/DN)'
+alias ssh="ssh -C"
+alias df="df -h"
+
+# zsh corret clea to flea
+[ -x `which flea` ] && alias clea="clear"
+
+# start mutt with list mailboxes
+[ -x `which mutt` ] && alias mutt="mutt -y"
+
+# aterm
+[ -x `which aterm` ] && alias aterm="aterm -bg black -fg AntiqueWhite +sb --geometry 110x48+0+10"
+
+# LDAP
+if [ -x `which ldapsearch` ]; then
+       local BASE_DN="dc=hash-group,dc=net"
+       local ADMIN_DN="cn=admin,ou=People,$BASE_DN"
+       alias ldapadd="ldapadd -W -x -D \"$ADMIN_DN\""
+       alias ldapmodify="ldapmodify -W -x -D \"$ADMIN_DN\""
+fi
+
+# do a du -hs on each dir on current path
+alias lsdir="for dir in *;do;if [ -d \$dir ];then;du -hsL \$dir 2>/dev/null;fi;done"
+
+# misc
+[ -x `which makepasswd` ] && alias makepasswd="makepasswd | tr A-Z a-z"
+
+# ssh key management
+if [ -x `which keychain` ] && [ -r ~/.ssh/id_dsa ] ; then
+       # run keychain
+       keychain ~/.ssh/id_dsa
+       # File to load depend on keychain version ~#[{~# (suckers)
+#      if [ -d ~/.keychain ]
+#      then
+#              . ~/.keychain/`hostname`-sh
+#      else
+#              . ~/.ssh-agent-`hostname`
+#      fi
+       [ -r ~/.ssh-agent-`hostname` ] && . ~/.ssh-agent-`hostname`
+       [ -r ~/.keychain/`hostname`-sh ] &&  ~/.keychain/`hostname`-sh
+else
+       [ -x `which startx` ] && [ -x `which ssh-agent` ] && alias startx="ssh-agent startx"
+fi
+
+# Minicom (serial console rulez)
+[ -x `which minicom` ] && alias minicom="minicom -o" 
+
+# Aterm 
+[ -x `which aterm` ] && alias aterm="aterm -bg black -fg AntiqueWhite +sb --geometry 110x48+112+32"
+
+# Make a certificat
+alias cert="openssl req -new -x509 -nodes -out cert.pem -keyout cert.key -days 365"
+
+# ping (since control-c don't work for break ping)
+alias ping="ping -c 3"
+
+# IPv6 Stuff
+alias netstat6="netstat -A inet6"
+
+# Indent (according to GCS - Gnu Coding Standards)
+[ -x `which indent` ] && alias indent="indent -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob"
+
+# acpi (show all available informations)
+[ -x `which acpi` ] && alias acpi="acpi -V"
+
+# Etags
+[ -x `which etags` ] && alias etags="etags --members"
diff --git a/zsh_people/bruno_bonfils/rc/bindkeys.rc b/zsh_people/bruno_bonfils/rc/bindkeys.rc
new file mode 100644 (file)
index 0000000..97c7ae7
--- /dev/null
@@ -0,0 +1,14 @@
+# -*- shell-script -*-
+#
+# load emacs bindkeys
+
+bindkey -e
+
+##
+# bash kill word
+autoload -U bash-backward-kill-word
+zle -N bash-backward-kill-word
+bindkey "^F" bash-backward-kill-word
+# example :
+# cd /usr/share/doc'^F' kill the word doc
+##
diff --git a/zsh_people/bruno_bonfils/rc/functions.rc b/zsh_people/bruno_bonfils/rc/functions.rc
new file mode 100644 (file)
index 0000000..3bb0701
--- /dev/null
@@ -0,0 +1,61 @@
+# -*- shell-script -*-
+#
+# Trace libraries load by first argument (ELF only)
+# (note: exactly same result with ldd)
+tracelib () {
+       LD_TRACE_LOADED_OBJECTS=1 $1
+}
+
+# debian upgrade
+# if the first argument is void, proceed local upgrade
+# else, send command via ssh
+# assume user have sufficient permission for upgrade
+# without interaction
+#
+# Note:
+# i use sudo with the follow lines
+# 
+# Cmnd_Alias      DEBIAN  = /usr/bin/apt-get, /usr/bin/dpkg
+# asyd            ALL = PASSWD: ALL, NOPASSWD: DEBIAN
+upgrade () {
+    if [ -z $1 ] ; then
+        sudo apt-get update
+        sudo apt-get -u upgrade
+    else
+        ssh $1 sudo apt-get update
+        # ask before the upgrade
+        local dummy
+        ssh $1 sudo apt-get --no-act upgrade
+        echo -n "Process the upgrade ?"
+        read -q dummy
+        if [[ $dummy == "y" ]] ; then
+            ssh $1 sudo apt-get -u upgrade --yes
+        fi
+    fi
+}
+
+compdef _hosts upgrade
+
+lsperm () {
+       echo $1 | perl -e 'chomp($s=<>);$p=(stat($s))[2] & 07777;printf "$s -> %04o\n",$p'
+}
+
+findnosecure () {
+       find / -perm +4000 -print
+}
+
+function cd () {
+if [[ -z $2 ]]; then
+  if [[ -f $1 ]]; then
+    builtin cd $1:h
+  else
+    builtin cd $1
+  fi
+else
+  if [[ -z $3 ]]; then
+    builtin cd $1 $2
+  else
+    echo cd: too many arguments
+  fi
+fi
+}
diff --git a/zsh_people/bruno_bonfils/rc/history.rc b/zsh_people/bruno_bonfils/rc/history.rc
new file mode 100644 (file)
index 0000000..56912ff
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# History options
+#
+
+setopt EXTENDED_HISTORY                # add a timestamp and the duration of each command
+setopt SHARE_HISTORY           # _all_ zsh sessions share the same history files
+setopt HIST_IGNORE_ALL_DUPS    # ignores duplications
+
+HISTFILE=~/.zsh/histories/${$(hostname)//.*/}
+HISTSIZE=10000
+SAVEHIST=10000
+
+export HISTFILE HISTSIZE SAVEHIST
diff --git a/zsh_people/bruno_bonfils/rc/misc.rc b/zsh_people/bruno_bonfils/rc/misc.rc
new file mode 100644 (file)
index 0000000..0bb6497
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- shell-script -*-
+
+periodic () {
+ rehash
+}
+
+export PERIOD=300
+
+###
+# Mail
+
+if [[ -x `which fetchmail` && ! -f ~/.fetchmail.pid && ! -f /tmp/.${USER}.fetchmailnoask ]]
+then
+       local ans
+       echo -n "Start fetchmail ? [y/n] "
+       read -q ans
+       if [[ $ans == "y" ]]
+       then
+               fetchmail
+       else
+               echo -n "Ask again ? [y/n] "
+               read -q ans
+               if [[ $ans == "n" ]]
+               then
+                       # I use /tmp since it's purge every reboot
+                       echo "" >| /tmp/.${USER}.fetchmailnoask
+               fi
+       fi
+fi
+
+
+###
+# Zftp
+#
+
+# load zftp module
+autoload -U zfinit
+zfinit
+
+# email address for anonymous ftp
+export EMAIL_ADDR=enjoy.zsh@foo.bar
diff --git a/zsh_people/bruno_bonfils/rc/options.rc b/zsh_people/bruno_bonfils/rc/options.rc
new file mode 100644 (file)
index 0000000..4af4c3d
--- /dev/null
@@ -0,0 +1,18 @@
+# -*- shell-script -*-
+#
+# Zsh Options
+#
+
+export LISTPROMPT      # in order to scroll if completion list is too big
+
+setopt auto_cd         # a commande like % /usr/local is equivalent to cd /usr/local
+setopt nohup            # don't send HUP signal when closing term session
+setopt extended_glob   # in order to use #, ~ and ^ for filename generation
+setopt always_to_end   # move to cursor to the end after completion
+setopt notify          # report the status of backgrounds jobs immediately
+setopt correct         # try to correct the spelling if possible
+setopt rmstarwait      # wait 10 seconds before querying for a rm which contains a *
+setopt printexitvalue   # show the exit-value if > 0
+
+# Don't ecrase file with >, use >| (overwrite) or >> (append) instead 
+set -C
diff --git a/zsh_people/bruno_bonfils/rc/titles.rc b/zsh_people/bruno_bonfils/rc/titles.rc
new file mode 100644 (file)
index 0000000..c383b35
--- /dev/null
@@ -0,0 +1,23 @@
+if [ $TERM = "screen" ]
+then
+       function title {
+          # Use these two for GNU Screen:
+               local myhost
+               myhost=${$(hostname)//.*/}
+          print -nR $'\033k'$myhost$'\033'\\
+          print -nR $'\033]0;'$1$'\a'
+
+       }
+
+       preexec ()
+       {       
+               emulate -L zsh
+               local -a cmd; cmd=(${(z)1})
+               title ${$(hostname)//.*/} "$cmd[1,-1]"
+       }
+
+       eval "function precmd () { 
+               $functions[precmd]
+               title \$PWD
+       }"
+fi
diff --git a/zsh_people/bruno_bonfils/rc/variables.rc b/zsh_people/bruno_bonfils/rc/variables.rc
new file mode 100644 (file)
index 0000000..9009558
--- /dev/null
@@ -0,0 +1,20 @@
+
+PATH=$PATH:~/.zsh/bin:~/bin:/sbin:/usr/sbin:/usr/local/sbin
+export PATH 
+
+[ -d /usr/local/info ] && export INFO_PATH="$INFO_PATH;/usr/local/info"
+
+# vi/vim
+if [ -x `which vim` ]; then 
+       alias vi="vim"
+       export EDITOR=vim
+       export VISUAL=vim
+fi
+
+# less
+if [ -x `which less` ]; then
+       export PAGER=less
+       export LESS="-ir"
+fi
+
+export CVSROOT=:pserver:asyd@localhost:/home/cvs
diff --git a/zsh_people/bruno_bonfils/rc/zstyle.rc b/zsh_people/bruno_bonfils/rc/zstyle.rc
new file mode 100644 (file)
index 0000000..29aacd3
--- /dev/null
@@ -0,0 +1,43 @@
+# -*- shell-script -*-
+
+# zstyles
+
+# some local variables
+local _myhosts _myuser
+
+_myhosts=($(<~/.zsh/hosts) ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*})
+_myusers=($(<~/.zsh/rc.users))
+
+# Add host and user 
+zstyle ':completion:*' users $_myusers
+zstyle ':completion:*' hosts $_myhosts
+
+# Use 'ps -au$USER' for fetch user process list
+zstyle ':completion:*:processes' command 'ps -au$USER'
+
+# Verbose mode
+zstyle ':completion:*:descriptions' format '%B%d%b'
+
+# Use cache
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path ~/.zsh/cache
+
+# prevent CVS files/directory completion
+if [ -x `which cvs` ]
+then
+       zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+       zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+fi
+
+# others zstyle
+zstyle ':completion:*:*:mplayer:*' default-skin MidnightLove
+
+zstyle ':completion:*:*:zless:*' file-patterns '*(-/):directories *.gz:all-files'
+zstyle ':completion:*:*:gqview:*' file-patterns '*(-/):directories :*.(png|jpeg|jpg):all-files'
+zstyle ':completion:*:*:lintian:*' file-patterns '*(-/):directories *.deb'
+
+zstyle ':completion:*:*:less:*' ignored-patterns '*.gz'
+zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)'
+
+# few simple completion definitions
+[ -x `which mtr` ] && compdef _hosts mtr
diff --git a/zsh_people/bruno_bonfils/users b/zsh_people/bruno_bonfils/users
new file mode 100644 (file)
index 0000000..ad35d74
--- /dev/null
@@ -0,0 +1 @@
+asyd
diff --git a/zsh_people/caphuso/zshrc b/zsh_people/caphuso/zshrc
new file mode 100644 (file)
index 0000000..ebc339b
--- /dev/null
@@ -0,0 +1,299 @@
+# this is not useable as a life ~/.zshrc, but you might get one or two ideas
+# from it. So don't blame anyone but yourself if something gets messed up.
+
+autoload -U checkmail # needed for my prompt
+autoload -U colors && colors # make ${f,b}g{,_{,no_}bold} availabl
+autoload -U compinit && compinit # load new completion system
+autoload -U edit-command-line # later bound to C-z e
+autoload -U zed # what, your shell can't edit files?
+autoload -U zmv # who needs mmv or rename?
+bindkey -e # force emacs keybindings no matter what $VISUAL and $EDITOR say
+zmodload zsh/complist
+zmodload zsh/deltochar
+zmodload zsh/mathfunc
+
+# autoload my personal functions
+autoload ${fpath[1]}/*(:t)
+
+# some terminal specific magic
+# look for the zkbd stuff in 'man zshcontrib'
+# note: i renamed and moved the resulting files
+case $TERM in
+    linux)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+    screen)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+    gnome*)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+    vt420*)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+    rxvt)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+    xterm*)
+        . ~/.zsh/zkbd/$TERM
+        ;;
+esac
+
+[[ -z $DISPLAY ]] && setterm -bfreq 100 -blength 50 || resize > /dev/null 2>&1
+
+# some external files
+source ~/.zsh/zsh_alias
+source ~/.zsh/zsh_foo
+source ~/.zsh/zsh_prompt || PROMPT='%n@%m %40<...<%B%~%b%<< $ '
+
+# some options to set
+setopt NO_rm_star_wait
+setopt NO_auto_cd
+setopt correct
+setopt NO_auto_menu
+setopt NO_menucomplete
+setopt autolist
+setopt NO_complete_in_word
+setopt complete_aliases
+setopt NO_mark_dirs
+setopt NO_multios
+setopt notify
+setopt path_dirs
+setopt NO_singlelinezle
+setopt NO_hup
+setopt NO_beep
+setopt NO_nullglob
+setopt extended_glob
+setopt numeric_glob_sort
+setopt NO_check_jobs
+setopt list_packed
+setopt NO_list_rows_first
+setopt bare_glob_qual
+setopt NO_clobber
+setopt histallowclobber
+setopt append_history
+setopt histignorealldups
+setopt histignorespace
+setopt extended_history
+setopt histreduceblanks
+setopt hist_no_store
+setopt NO_hist_verify
+setopt NO_auto_name_dirs
+setopt hash_cmds
+setopt hash_dirs
+setopt pushd_ignore_dups
+setopt NO_pushd_minus
+setopt auto_pushd
+setopt pushd_silent
+setopt pushd_to_home
+[[ $VERSION == 4.1* ]] && setopt auto_continue
+setopt magic_equal_subst
+setopt NO_print_exit_value     # don't print exit value if non-zero
+setopt glob_complete   # echo *<TAB> -> menu completion
+setopt rc_quotes       # print '''' -> '
+setopt ksh_option_print
+setopt rc_expand_param  # foo=(1 2);a${foo}b -> 'a1b a2b', not 'a1 b2'
+setopt no_flow_control
+setopt brace_ccl       # {a-c} -> 'a b c'
+setopt bsd_echo
+setopt always_last_prompt # necessary for menu selection
+
+# some zle stuff
+autoload _history_complete_word
+autoload history-search-end
+zle -N edit-command-line
+zle -N local-run-help
+zle -N run-as-root
+zle -N run-with-noglob
+zle -N run-as-command
+zle -N run-as-builtin
+zle -N run-without-completion
+zle -N show-history
+zle -N show-dirstack
+zle -N silly-calc
+zle -N zsh-query-replace
+zle -N history-beginning-search-backward-end history-search-end
+zle -N history-beginning-search-forward-end history-search-end
+zle -C lamatch complete-word _generic
+zle -C lappr complete-word _generic
+zle -C lhist complete-word _generic
+zle -C most-recent-file menu-complete _generic
+autoload url-quote-magic
+zle -N self-insert url-quote-magic
+
+# default keymap
+# bindkey -m
+bindkey '^Ze' edit-command-line
+bindkey '^Zg' run-with-noglob
+bindkey '^Zc' run-as-command
+bindkey '^Zb' run-as-builtin
+bindkey '^Zn' run-without-completion
+bindkey '^Zh' show-history
+bindkey '^Zd' show-dirstack
+bindkey '^Xd' delete-to-char
+bindkey '^Xz' zap-to-char
+bindkey '^Xi' lamatch
+bindkey '^Xl' lappr
+bindkey '^Xc' _correct_filename
+bindkey '^Xh' _complete_help
+bindkey '^X?' _complete_debug
+bindkey '^Xr' most-recent-file
+bindkey '^Q' push-line-or-edit
+bindkey '^I' complete-word
+if (( $+key )); then
+    bindkey -r ${key[Up]}
+    bindkey -r ${key[Down]}
+    bindkey -r ${key[Left]}
+    bindkey -r ${key[Right]}
+fi
+
+# emacs keymap
+bindkey -M emacs '^W' kill-region
+bindkey -M emacs '^[%' zsh-query-replace
+bindkey -M emacs '^[S' run-as-root
+bindkey -M emacs '^[H' local-run-help
+bindkey -M emacs '^[^M' silly-calc
+bindkey -M emacs '^[n' history-beginning-search-forward-end
+bindkey -M emacs '^[p' history-beginning-search-backward-end
+bindkey -M emacs '^[/' lhist
+bindkey -M emacs '^[Q' delete-to-char
+bindkey -M emacs '^[Z' zap-to-char
+
+autoload -U select-word-style
+select-word-style n
+
+zle -N shell-forward-word forward-word-match
+bindkey -M emacs '\eF' shell-forward-word
+zstyle ':zle:shell-forward-word' word-style shell
+
+zle -N shell-backward-word backward-word-match
+bindkey -M emacs '\eB' shell-backward-word
+zstyle ':zle:shell-backward-word' word-style shell
+
+zle -N shell-kill-word kill-word-match
+bindkey -M emacs '\eD' shell-kill-word
+zstyle ':zle:shell-kill-word' word-style shell
+
+zle -N shell-backward-kill-word backward-kill-word-match
+bindkey -M emacs '\ek' shell-backward-kill-word
+zstyle ':zle:shell-backward-kill-word' word-style shell
+
+# vicmd keymap
+bindkey -M vicmd 'u' undo
+bindkey -M vicmd 'q' delete-to-char
+bindkey -M vicmd '^Q' zap-to-char
+bindkey -M vicmd '^[x' execute-named-cmd
+bindkey -M vicmd '^R' redo
+bindkey -M vicmd '^[a' accept-and-hold
+bindkey -M vicmd 'Q' zsh-query-replace
+
+# viins keymap
+bindkey -M viins '^[x' execute-named-cmd
+bindkey -M viins '^[.' insert-last-word
+bindkey -M viins '^[a' accept-and-hold
+bindkey -M viins '^P' up-line-or-history
+bindkey -M viins '^N' down-line-or-history
+bindkey -M viins '^I' complete-word
+bindkey -r '^Z'
+bindkey -r '^X'
+
+# menu selection
+bindkey '^Zm' menu-select
+bindkey -M menuselect '^P'  up-line-or-history
+bindkey -M menuselect '^N'  down-line-or-history
+bindkey -M menuselect '^B' backward-char
+bindkey -M menuselect '^F' forward-char
+bindkey -M menuselect '^O' accept-and-infer-next-history
+bindkey -M menuselect '^_' undo
+bindkey -M menuselect '^A' accept-and-menu-complete
+
+# some external commands
+[[ -x =lesspipe ]] && eval $(lesspipe) # set $LESS{OPEN,CLOSE}
+[[ -x =dircolors ]] && eval $(dircolors ~/.dircolors) # set $LS_COLORS
+
+# forgot why i set this :-(
+maildirectory=~/mail
+
+# completion system configuration
+zstyle ':completion:*' completer \
+    _complete _match _correct _complete:-extended _prefix \
+    _complete:-substring
+zstyle ':completion:*:correct:*' max-errors 0 numeric
+zstyle ':completion:*:correct:*' insert-unambiguous true
+zstyle ':completion:*:correct:*' original false
+zstyle ':completion:*:expand:*' group-order all-expansions expansions
+zstyle ':completion:lappr:*' completer _approximate
+zstyle ':completion:lappr:*:approximate:*' max-errors 3 numeric
+zstyle ':completion:lamatch:*' completer _all_matches
+zstyle ':completion:lamatch:*' old-matches only
+zstyle ':completion:lhist:*' completer _history
+zstyle ':completion:lhist:*' range 1000:10
+zstyle ':completion:*:match:*' match-original non-empty-value
+zstyle ':completion:*' ambiguous true
+zstyle ':completion:*' glob true
+zstyle ':completion:*' word true
+zstyle ':completion:*:-tilde-:*' group-order \
+    'named-directories' 'path-directories' 'users' 'expand'
+zstyle ':completion:*:ssh:*' group-order 'users' 'hosts'
+zstyle ':completion:all-matches:*' old-matches only
+zstyle ':completion:all-matches:*' completer _all_matches
+zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*~' '\#*\#' '*.zwc'
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
+zstyle ':completion:*:-subscript-:*' tag-order indexes parameters
+zstyle ':completion:*:cd:*' tag-order \
+    local-directories directory-stack named-directories path-directories
+zstyle ':completion:*:complete-extended:*' matcher-list \
+    'm:{a-z}={A-Z}' 'r:|[+._-]=*'
+zstyle ':completion:*:complete-substring:*' matcher-list \
+    'l:|=**'
+zstyle ':completion:*:mutt:*' users \
+    ${${${(f)"$(<~/.mutt_mail_aliases)"}#alias[[:space:]]}%%[[:space:]]*}
+zstyle ':completion:*:urls' urls ~/.zsh/urls
+zstyle ':completion:*:ping:*' hosts host.foo.invalid 
+    host{{1..5},}.at.some.net.invalid
+zstyle ':completion::*' list-colors ${(s.:.)LS_COLORS}
+zstyle ':completion:*' users-hosts username@localhost \
+    user1@host.invalid \
+    user2@otherhost.invalid
+zstyle ':completion:*' group-name ''
+zstyle ':completion:*' ignore-parents pwd parent ..
+zstyle ':completion:*' remove-all-dups true
+zstyle ':completion:*' select-scroll -1
+zstyle ':completion:*' special-dirs '..'
+zstyle ':completion:*' use-cache yes
+zstyle ':completion:*' menu select
+zstyle ':completion:*:descriptions' format \
+    $'%{\e[0;31m%}completing %d%{\e[0m%}'
+zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}'
+zstyle ':completion:*' insert-unambiguous true
+zstyle ':completion:*' range 200:20
+zstyle ':completion:*' select-prompt '%SSelect:  lines: %L  matches: %M  [%p]'
+zstyle ':completion:*' sort true
+
+zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
+zstyle ':completion:*:*:rm:*' file-patterns '(*~|\\#*\\#):backup-files' \
+    '*.zwc:zsh\ bytecompiled\ files' '(|[a-z]#-[0-9]#-[0-9]#-[0-9]#.)core(|.*):core\ files' '*:all-files'
+zstyle ':completion:*:rm:*' ignore-line true
+zstyle ':completion:*:kill:*' insert-ids single
+zstyle ':completion:*:*:kill:*' menu yes select
+zstyle ':completion:*:kill:*' force-list always
+zstyle ':completion:*' keep-prefix changed
+zstyle ':completion:*:man:*' separate-sections true
+zstyle ':completion:*:mplayer:*:bookmark' mplayer-bookmark ~/.zsh/mplayer-bookmark
+zstyle ':completion:most-recent-file:*' match-original both
+zstyle ':completion:most-recent-file:*' completer _menu _files _match
+zstyle ':completion:most-recent-file:*' file-sort modification
+zstyle ':completion:most-recent-file:*' file-patterns '*(.):normal\ files'
+zstyle ':completion:most-recent-file:*' hidden all
+
+zstyle ':completion:*:xpdf:*' menu true
+zstyle ':completion:*:xpdf:*' file-patterns '*.pdf(.-)' '*(/-)'
+zstyle ':completion:*:xpdf:*' file-sort time
+zstyle ':completion:*:xdvi:*' menu true
+zstyle ':completion:*:xdvi:*' file-patterns '*.dvi(|.gz|.Z)(.-)' '*(/-)'
+zstyle ':completion:*:xdvi:*' file-sort time
+
+compdef _gnu_generic cp mv gpg df stow uname ipacsum fetchipac
+compdef _man pman
diff --git a/zsh_people/damien_elmes/zshrc b/zsh_people/damien_elmes/zshrc
new file mode 100644 (file)
index 0000000..771e50c
--- /dev/null
@@ -0,0 +1,189 @@
+#!/usr/bin/zsh
+# -*- mode: shell-script -*-
+#
+# .zshrc - customisations for the all-powerful shell
+#
+# the latest copy of this file can be found at 
+#   http://repose.cx/conf
+#
+
+typeset -U path
+path=(~/.bin ~/Muse /sbin /usr/sbin $path)
+
+typeset -U cdpath
+cdpath=(. $cdpath)
+
+setopt nobeep                  # i hate beeps
+setopt noautomenu              # don't cycle completions
+setopt autocd                  # change to dirs without cd
+#setopt autopushd               # automatically append dirs to the push/pop list
+setopt pushdignoredups         # and don't duplicate them
+setopt cdablevars              # avoid the need for an explicit $
+setopt nocheckjobs             # don't warn me about bg processes when exiting
+setopt nohup                   # and don't kill them, either
+#setopt listpacked              # compact completion lists
+setopt nolisttypes             # show types in completion
+setopt dvorak                  # with spelling correction, assume dvorak kb
+setopt extendedglob            # weird & wacky pattern matching - yay zsh!
+setopt completeinword          # not just at the end
+setopt alwaystoend             # when complete from middle, move cursor
+setopt correct                 # spelling correction
+setopt nopromptcr              # don't add \n which overwrites cmds with no \n
+setopt histverify              # when using ! cmds, confirm first
+setopt interactivecomments     # escape commands so i can use them later
+setopt printexitvalue          # alert me if something's failed
+
+# woo! so glad i found this. jump to each element in a path with m-f m-b, same
+# for kill-word, etc.
+export WORDCHARS=''            
+
+# history related stuff.
+export HISTSIZE=5000
+export SAVEHIST=5000
+export HISTFILE=~/.zsh_history
+setopt hist_ignore_dups        # ignore same commands run twice+
+setopt appendhistory           # don't overwrite history 
+
+# prompt (if running screen, show window #)
+if [ x$WINDOW != x ]; then
+    export PS1="%m[$WINDOW]%# "
+else
+    export PS1='%m%# '
+fi
+
+# set up some directory variables. i can then do cd ms to land in my music dir
+# emacs understands these too.
+export m=~/Media/music
+export uni=~/Lib/uni
+export code=~/Lib/code
+export work=~/Lib/work
+: ~m ~uni ~code ~work
+
+# preexec hook shows command in title as it's running, and precmd sets it to
+# something else when it's done. this should work with screen and
+# gnome-terminal2/multi-gnome-terminal
+
+case $TERM in
+    xterm*|screen*)
+        preexec () {
+            export CURRENTCMD="$1"
+            if [ x$WINDOW != x ]; then
+                print -Pn "\ek$1\e\\"
+            else
+                print -Pn "\e]0;$1\a"
+            fi
+        }
+        precmd () {
+            if [[ ! -z $CURRENTCMD ]]; then
+                if [ x$WINDOW != x ]; then
+                    print -Pn "\ek($CURRENTCMD)\e\\"
+                else
+                    print -Pn "\e]0;($CURRENTCMD)\a"
+                fi
+            fi
+        }
+    ;;
+esac
+
+# log out all my ephemeral shells, except the last one
+export TMOUT=60
+
+TRAPALRM () {
+    if [ `pwd` = ~ ] && [ x$WINDOW != x ] && (( $WINDOW != 0 )); then
+        exit 0
+    fi
+}
+
+[[ "$WINDOW" = 0 ]] && setopt ignore_eof
+
+#trap '(( $WINDOW == 0 )) && echo "Last window - type logout" && return 0' EXIT
+
+# this is defined in ~/.bin/e now
+# 
+# i have gnuclient set to load files in my current emacs buffer, so i'd like to
+# jump to it afterwards. i use a program "e" to edit files in this manner.
+# e() {
+#     sawfish-client -f de-gnuserv-activate > /dev/null
+#     # now run gnuclient. we'll be returned to this window when c-x # is hit in
+#     # emacs
+#     gnuclient $1
+# }
+
+export CVSROOT=~/Lib/CVS
+
+
+# If running interactively, then:
+if [ "$PS1" ]; then
+    # colour ls
+    eval `dircolors`
+    alias ls='ls --color=auto'
+    
+    # use ssh for rysnc
+    export RSYNC_RSH=ssh
+
+    # used to have arch-dependent flags, but i kept forgetting to unset cflags
+    # before compiling stuff for another box. i don't compile much anymore.
+    export CFLAGS="-O2 -fomit-frame-pointer -pipe"
+
+    export SmallEiffel="/usr/lib/smalleiffel/sys/system.se"
+    export PYTHONPATH="/home/resolve/.python"
+    export PYTHONSTARTUP="/home/resolve/.pystartup"
+    export SAVEDIR="/home/resolve/.news/"
+    export ORGANISATION="Damien Elmes"
+
+    export TEXINPUTS=::/usr/local/lib/texmf
+
+    export VISUAL=e
+    export EDITOR=$VISUAL
+
+    # colours in man output, emacs like bindings. nifty.
+    export PAGER=most
+
+    # anti aliasing in the two toolkits
+    export QT_XFT=1
+    export GDK_USE_XFT=1
+
+    alias go-wl="sudo ifdown eth0; sudo /etc/init.d/pcmcia start"
+    alias go-eth="sudo /etc/init.d/pcmcia stop; sudo ifup eth0" 
+    alias nw="sfsagent resolve@respite; ls .mail > /dev/null 2>&1"
+    
+    # display reminders
+    [ -f .r ] && cat .r
+
+    umask 022
+
+#
+# completion tweaking
+#
+
+# complete hostnames out of ssh's ~/.ssh/known_hosts
+    autoload -U compinit; compinit
+    zstyle ':completion:*' use-cache on
+    zstyle ':completion:*' users resolve
+    hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*})
+    zstyle ':completion:*:hosts' hosts $hosts
+
+# use dircolours in completion listings
+    zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+
+# allow approximate matching
+    zstyle ':completion:*' completer _complete _match _approximate
+    zstyle ':completion:*:match:*' original only
+    zstyle ':completion:*:approximate:*' max-errors 1 numeric
+    zstyle ':completion:*' auto-description 'Specify: %d'
+    zstyle ':completion:*' format 'Completing %d'
+    zstyle ':completion:*' verbose true
+    zstyle ':completion:*:functions' ignored-patterns '_*'
+    zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns \
+        '*?.(o|c~|zwc)' '*?~'
+
+    bindkey "\C-w" kill-region
+
+fi
+
+# evaluate work related stuff
+[ -f .workrc ] && . ~/.workrc
+
+if [ x$TERM = xscreen ]; then
+    export TERM=xterm
+fi
diff --git a/zsh_people/grml/.zshrc b/zsh_people/grml/.zshrc
new file mode 100644 (file)
index 0000000..0fc7937
--- /dev/null
@@ -0,0 +1,621 @@
+# Filename:      .zshrc
+# Purpose:       config file for zsh
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Son Jun 05 21:06:19 CEST 2005 [mika]
+################################################################################
+
+# See /etc/zsh/zshrc for some general settings
+
+## variables {{{
+
+# set terminal property (used e.g. by msgid-chooser)
+  export COLORTERM="yes"
+
+# set default browser
+  (( ${+BROWSER} )) || export BROWSER="w3m"
+  (( ${+PAGER} ))   || export PAGER="less"
+# }}}
+
+## set options {{{
+
+# Allow comments even in interactive shells i. e.
+# $ uname # This command prints system informations
+# zsh: bad pattern: #
+# $ setopt interactivecomments
+# $ uname # This command prints system informations
+# Linux
+#  setopt interactivecomments
+
+# }}}
+
+# {{{ global aliases
+# These do not have to be at the beginning of the command line.
+# Avoid typing cd ../../ for going two dirs down and so on
+# Usage, e.g.: "$ cd ...' or just '$ ...' with 'setopt auto_cd'
+  alias -g '...'='../..'
+  alias -g '....'='../../..'
+# Usage is "$ somecommand C (this pipes it into 'wc -l'):
+  alias -g BG='& exit'
+  alias -g C='|wc -l'
+  alias -g G='|grep'
+  alias -g H='|head'
+  alias -g Hl=' --help |& less -r'
+  alias -g K='|keep'
+  alias -g L='|less'
+  alias -g M='|most'
+  alias -g N='&>/dev/null'
+  alias -g R='| tr A-z N-za-m'
+  alias -g SL='| sort | less'
+  alias -g S='| sort'
+  alias -g T='|tail'
+  alias -g V='| vim -'
+# }}}
+
+## aliases {{{
+
+# general
+  alias da='du -sch'
+  alias j='jobs -l'
+#  alias u='translate -i'          # translate
+
+# compile stuff
+  alias CO="./configure"
+  alias CH="./configure --help"
+
+# http://conkeror.mozdev.org/
+  alias conkeror='firefox -chrome chrome://conkeror/content'
+
+# arch/tla stuff
+  alias ldiff='tla what-changed --diffs | less'
+  alias tbp='tla-buildpackage'
+  alias mirror='tla archive-mirror'
+  alias commit='tla commit'
+  alias merge='tla star-merge'
+
+# listing stuff
+  alias dir="ls -lSrah"
+  alias lad='ls -d .*(/)'                # only show dot-directories
+  alias lsa='ls -a .*(.)'                # only show dot-files
+  alias lss='ls -l *(s,S,t)'             # only files with setgid/setuid/sticky flag
+  alias lsl='ls -l *(@[1,10])'           # only symlinks
+  alias lsx='ls -l *(*[1,10])'           # only executables
+  alias lsw='ls -ld *(R,W,X.^ND/)'       # world-{readable,writable,executable} files
+  alias lsbig="ls -flh *(.OL[1,10])"     # display the biggest files
+  alias lsd='ls -d *(/)'                 # only show directories
+  alias lse='ls -d *(/^F)'               # only show empty directories
+  alias lsnew="ls -rl *(D.om[1,10])"     # display the newest files
+  alias lsold="ls -rtlh *(D.om[1,10])"   # display the oldest files
+  alias lssmall="ls -Srl *(.oL[1,10])"   # display the smallest files
+
+# chmod   
+  alias rw-='chmod 600'
+  alias rwx='chmod 700'
+  alias r--='chmod 644'
+  alias r-x='chmod 755'
+
+# some useful aliases
+  alias md='mkdir -p'
+
+# console stuff
+  alias cmplayer='mplayer -vo fbdev'
+  alias fbmplayer='mplayer -vo fbdev'
+  alias fblinks='links2 -driver fb'
+
+# use colors when browsing man pages (if not using pinfo or PAGER=most)
+  [ -d ~/.terminfo/ ] && alias man='TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man'
+
+# }}}
+
+## useful functions {{{
+
+# functions without detailed explanation:
+  agoogle() { $BROWSER "http://groups.google.com/groups?as_uauthors=$*" ; }
+  bk()      { cp -b ${1} ${1}_`date --iso-8601=m` }
+  cdiff()   { diff -crd "$*" | egrep -v "^Only in |^Binary files " }
+  cl()      { cd $1 && ls -a }        # cd && ls
+  cvsa()    { cvs add $* && cvs com -m 'initial checkin' $* }
+  cvsd ()   { cvs diff -N $* |& $PAGER }
+  cvsl ()   { cvs log $* |& $PAGER }
+  cvsq ()   { cvs -nq update }
+  cvsr ()   { rcs2log $* | $PAGER }
+  cvss ()   { cvs status -v $* }
+  debbug () { $BROWSER "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$*" }
+  disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null }
+  dwicti()  { $BROWSER http://de.wiktionary.org/wiki/${(C)1// /_} } 
+  ewicti()  { $BROWSER http://en.wiktionary.org/wiki/${(C)1// /_} } 
+  ggogle()  { $BROWSER "http://groups.google.com/groups?q=$*" }
+  google()  { $BROWSER "http://www.google.com/search?&num=100&q=$*" }
+  leo()     { $BROWSER "http://dict.leo.org/?search=$*" }
+  mdiff()   { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" }
+  memusage(){ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc }
+  mggogle() { $BROWSER "http://groups.google.com/groups?selm=$*" }
+  shtar()   { gunzip -c $1 | tar -tf - -- | $PAGER }
+  shtgz()   { tar -ztf $1 | $PAGER }
+  shzip()   { unzip -l $1 | $PAGER }
+  sig()     { agrep -d '^-- $' "$*" ~/.Signature }
+  udiff()   { diff -urd $* | egrep -v "^Only in |^Binary files " }
+  wikide()  { $BROWSER http://de.wikipedia.org/wiki/"$*" }
+  wikien()  { $BROWSER http://en.wikipedia.org/wiki/"$*" }
+
+# debian upgrade
+  upgrade () {
+    if [ -z $1 ] ; then
+        sudo apt-get update
+        sudo apt-get -u upgrade
+    else
+        ssh $1 sudo apt-get update
+        # ask before the upgrade
+        local dummy
+        ssh $1 sudo apt-get --no-act upgrade
+        echo -n "Process the upgrade ?"
+        read -q dummy
+        if [[ $dummy == "y" ]] ; then
+            ssh $1 sudo apt-get -u upgrade --yes
+        fi
+    fi
+  }
+
+# make screenshot of current desktop (use 'import' from ImageMagic)
+  sshot() {
+        [[ ! -d ~/shots  ]] && mkdir ~/shots
+        #cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d--%H:%M:%S"`.png
+        cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg
+  }
+
+# create pdf file from source code
+  makereadable() {
+     output=$1
+     shift
+     a2ps --medium A4dj -E -o $output $*
+     ps2pdf $output
+  }
+
+# zsh with perl-regex - use it e.g. via:
+# regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro'
+  regcheck() {
+    zmodload -i zsh/pcre
+    pcre_compile $1 && \
+    pcre_match $2 && echo "regex matches" || echo "regex does not match"
+  }
+# list files which have been modified within the last x days
+  new() { print -l *(m-$1) }
+
+# grep the history
+  greph () { history 0 | grep $1 }
+  alias grepc='grep --color=auto'
+  alias GREP='grep -i --color=auto'
+
+# one blank line between each line
+  man2() { PAGER='sed G | less' /usr/bin/man $* ; }
+
+# provide useful information on globbing
+  H-Glob() {
+  echo -e "
+      /      directories
+      .      plain files
+      @      symbolic links
+      =      sockets
+      p      named pipes (FIFOs)
+      *      executable plain files (0100)
+      %      device files (character or block special)
+      %b     block special files
+      %c     character special files
+      r      owner-readable files (0400)
+      w      owner-writable files (0200)
+      x      owner-executable files (0100)
+      A      group-readable files (0040)
+      I      group-writable files (0020)
+      E      group-executable files (0010)
+      R      world-readable files (0004)
+      W      world-writable files (0002)
+      X      world-executable files (0001)
+      s      setuid files (04000)
+      S      setgid files (02000)
+      t      files with the sticky bit (01000)
+   print *(m-1)          # Dateien, die vor bis zu einem Tag modifiziert wurden.
+   print *(a1)           # Dateien, auf die vor einem Tag zugegriffen wurde.
+   print *(@)            # Nur Links
+   print *(Lk+50)        # Dateien die ueber 50 Kilobytes grosz sind
+   print *(Lk-50)        # Dateien die kleiner als 50 Kilobytes sind
+   print **/*.c          # Alle *.c - Dateien unterhalb von \$PWD
+   print **/*.c~file.c   # Alle *.c - Dateien, aber nicht 'file.c'
+   print (foo|bar).*     # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
+   print *~*.*           # Nur Dateien ohne '.' in Namen
+   chmod 644 *(.^x)      # make all non-executable files publically readable
+   print -l *(.c|.h)     # Nur Dateien mit dem Suffix '.c' und / oder '.h'
+   print **/*(g:users:)  # Alle Dateien/Verzeichnisse der Gruppe >users<
+   echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
+  }
+
+  lcheck() {
+   nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1"
+  }
+
+# clean up directory
+  purge() {
+        FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N))
+        NBFILES=${#FILES}
+        if [[ $NBFILES > 0 ]]; then
+                print $FILES
+                local ans
+                echo -n "Remove this files? [y/n] "
+                read -q ans
+                if [[ $ans == "y" ]]
+                then
+                        rm ${FILES}
+                        echo ">> $PWD purged, $NBFILES files removed"
+                else
+                        echo "Ok. .. than not.."
+                fi
+        fi
+   }
+
+# Translate DE<=>EN
+# 'translate' looks up fot a word in a file with language-to-language
+# translations (field separator should be " : "). A typical wordlist looks
+# like at follows:
+#  | english-word : german-transmission
+# It's also only possible to translate english to german but not reciprocal.
+# Use the following oneliner to turn back the sort order:
+#  $ awk -F ':' '{ print $2" : "$1" "$3 }' \
+#    /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
+  trans() {
+        case "$1" in
+                -[dD]*) translate -l de-en $2
+                ;;
+                -[eE]*) translate -l en-de $2
+                ;;
+                *)
+                echo "Usage: $0 { -D | -E }"
+                echo "         -D == German to English"
+                echo "         -E == English to German"
+        esac
+  }
+
+# Some quick Perl-hacks aka /useful/ oneliner
+#  bew() { perl -le 'print unpack "B*","'$1'"' }
+#  web() { perl -le 'print pack "B*","'$1'"' }
+#  hew() { perl -le 'print unpack "H*","'$1'"' }
+#  weh() { perl -le 'print pack "H*","'$1'"' }
+#  pversion()    { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79"
+#  getlinks ()   { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* }
+#  gethrefs ()   { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+#  getanames ()  { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+#  getforms ()   { perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic ) { print $1, "\n"; }' $* }
+#  getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
+#  getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
+#  showINC ()    { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
+#  vimpm ()      { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
+#  vimhelp ()    { vim -c "help $1" -c on -c "au! VimEnter *" }
+
+# plap foo -- list all occurrences of program in the current PATH
+  plap() {
+        if [[ $# = 0 ]]
+        then
+                echo "Usage:    $0 program"
+                echo "Example:  $0 zsh"
+                echo "Lists all occurrences of program in the current PATH."
+        else
+                ls -l ${^path}/*$1*(*N)
+        fi
+  }
+
+# Found in the mailinglistarchive from Zsh (IIRC ~1996)
+  selhist() {
+        emulate -L zsh
+        local TAB=$'\t';
+        (( $# < 1 )) && {
+                echo "Usage: $0 command"
+                return 1
+        };
+        cmd=(${(f)"$(grep -w $1 $HISTFILE | sort | uniq | pr -tn)"})
+        print -l $cmd | less -F
+        echo -n "enter number of desired command [1 - $(( ${#cmd[@]} - 1 ))]: "
+        local answer
+        read answer
+        print -z "${cmd[$answer]#*$TAB}"
+  }
+
+# mkdir && cd
+  mcd() { mkdir -p "$@"; cd "$@" }  # mkdir && cd
+
+# cd && ls
+  cl() { cd $1 && ls -a }
+
+# Use vim to convert plaintext to HTML
+  2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null }
+
+# Usage: simple-extract <file>
+# Description: extracts archived files (maybe)
+  simple-extract () {
+        if [[ -f $1 ]]
+        then
+                case $1 in
+                        *.tar.bz2)  bzip2 -v -d $1      ;;
+                        *.tar.gz)   tar -xvzf $1        ;;
+                        *.rar)      unrar $1            ;;
+                        *.deb)      ar -x $1            ;;
+                        *.bz2)      bzip2 -d $1         ;;
+                        *.lzh)      lha x $1            ;;
+                        *.gz)       gunzip -d $1        ;;
+                        *.tar)      tar -xvf $1         ;;
+                        *.tgz)      gunzip -d $1        ;;
+                        *.tbz2)     tar -jxvf $1        ;;
+                        *.zip)      unzip $1            ;;
+                        *.Z)        uncompress $1       ;;
+                        *)          echo "'$1' Error. Please go away" ;;
+                esac
+        else
+                echo "'$1' is not a valid file"
+        fi
+  }
+
+# Usage: smartcompress <file> (<type>)
+# Description: compresses files or a directory.  Defaults to tar.gz
+  smartcompress() {
+        if [ $2 ]; then
+                case $2 in
+                        tgz | tar.gz)   tar -zcvf$1.$2 $1 ;;
+                        tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;;
+                        tar.Z)          tar -Zcvf$1.$2 $1 ;;
+                        tar)            tar -cvf$1.$2  $1 ;;
+                        gz | gzip)      gzip           $1 ;;
+                        bz2 | bzip2)    bzip2          $1 ;;
+                        *)
+                        echo "Error: $2 is not a valid compression type"
+                        ;;
+                esac
+        else
+                smartcompress $1 tar.gz
+        fi
+  }
+
+# Usage: show-archive <archive>
+# Description: view archive without unpack
+  show-archive() {
+        if [[ -f $1 ]]
+        then
+                case $1 in
+                        *.tar.gz)      gunzip -c $1 | tar -tf - -- ;;
+                        *.tar)         tar -tf $1 ;;
+                        *.tgz)         tar -ztf $1 ;;
+                        *.zip)         unzip -l $1 ;;
+                        *.bz2)         bzless $1 ;;
+                        *)             echo "'$1' Error. Please go away" ;;
+                esac
+        else
+                echo "'$1' is not a valid archive"
+        fi
+  }
+
+  folsym() {
+    if [[ -e $1 || -h $1 ]]; then
+        file=$1
+    else
+        file=`which $1`
+    fi
+    if [[ -e $file || -L $file ]]; then
+        if [[ -L $file ]]; then
+            echo `ls -ld $file | perl -ane 'print $F[7]'` '->'
+            folsym `perl -le '$file = $ARGV[0];
+                              $dest = readlink $file;
+                              if ($dest !~ m{^/}) {
+                                  $file =~ s{(/?)[^/]*$}{$1$dest};
+                              } else {
+                                  $file = $dest;
+                              }
+                              $file =~ s{/{2,}}{/}g;
+                              while ($file =~ s{[^/]+/\.\./}{}) {
+                                  ;
+                              }
+                              $file =~ s{^(/\.\.)+}{};
+                              print $file' $file`
+        else
+            ls -d $file
+        fi
+    else
+        echo $file
+    fi
+  }
+
+# Use 'view' to read manpages, if u want colors, regex - search, ...
+# like vi(m).
+# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
+  vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
+
+# search for various types or README file in dir and display them in $PAGER
+# function readme() { $PAGER -- (#ia3)readme* }
+  readme() {
+        local files
+        files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+        if (($#files))
+        then $PAGER $files
+        else
+                print 'No README files.'
+        fi
+  }
+
+# find all suid files in $PATH
+  suidfind() { ls -latg $path | grep '^...s' }
+
+# See above but this is /better/ ... anywise ..
+#  Note: Add $USER and 'find' with "NOPASSWD" in your /etc/sudoers or run it
+#        as root (UID == 0)
+  findsuid() {
+    if [ UID != 0 ] ; then
+      print 'Not running as root. Trying to run via sudo...'
+      RUNASROOT=sudo
+    fi
+        print 'Output will be written to ~/suid_* ...'
+        $RUNASROOT find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1
+        $RUNASROOT find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1
+        $RUNASROOT find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1
+        $RUNASROOT find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1
+        print 'Finished'
+  }
+
+# Reload functions.
+  refunc() {
+        for func in $argv
+        do
+                unfunction $func
+                autoload $func
+        done
+  }
+
+# a small check to see which DIR is located on which server/partition.
+# stolen and modified from Sven's zshrc.forall
+  dirspace() {
+        for dir in $path;
+        do
+                (cd $dir; echo "-<$dir>"; du -shx .; echo);
+        done
+  }
+
+# $ show_print `cat /etc/passwd`
+  slow_print() {
+        for argument in "${@}"
+        do
+                for ((i = 1; i <= ${#1} ;i++)) {
+                        print -n "${argument[i]}"
+                        sleep 0.08
+                }
+                print -n " "
+        done
+        print ""
+  }
+
+  status() {
+        print ""
+        print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")""
+        print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
+        print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars"
+        print "Login.: $LOGNAME (UID = $EUID) on $HOST"
+        print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
+        print "Uptime:$(uptime)"
+        print ""
+  }
+
+  audiorip() {
+        mkdir -p ~/ripps
+        cd ~/ripps
+        cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc
+        cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc
+        echo " * Would you like to burn the cd now? (yes/no)"
+        read input
+        if
+                [ "$input" = "yes" ]; then
+                echo " ! Burning Audio CD"
+                audioburn
+                echo " * done."
+        else
+                echo " ! Invalid response."
+        fi
+  }
+
+  audioburn() {
+        cd ~/ripps
+        cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc
+        echo " * Should I remove the temporary files? (yes/no)"
+        read input
+        if [ "$input" = "yes" ]; then
+                echo " ! Removing Temporary Files."
+                cd ~
+                rm -rf ~/ripps
+                echo " * done."
+        else
+                echo " ! Invalid response."
+        fi
+  }
+
+  mkaudiocd() {
+        cd ~/ripps
+        for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
+        for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
+        for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done
+        normalize -m *.wav
+        for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done
+  }
+
+  mkiso() {
+        echo " * Volume name "
+        read volume
+        echo " * ISO Name (ie. tmp.iso)"
+        read iso
+        echo " * Directory or File"
+        read files
+        mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files
+  }
+
+# generate thumbnails ;)
+  genthumbs () {
+    rm -rf thumb-* index.html
+    echo "
+<html>
+  <head>
+    <title>Images</title>
+  </head>
+  <body>" > index.html
+    for f in *.(gif|jpeg|jpg|png)
+    do
+        convert -size 100x200 "$f" -resize 100x200 thumb-"$f"
+        echo "    <a href=\"$f\"><img src=\"thumb-$f\"></a>" >> index.html
+    done
+    echo "
+  </body>
+</html>" >> index.html
+  }
+
+# unset all limits (see zshbuiltins(1) /ulimit for details)
+  allulimit() {
+    ulimit -c unlimited
+    ulimit -d unlimited
+    ulimit -f unlimited
+    ulimit -l unlimited
+    ulimit -n unlimited
+    ulimit -s unlimited
+    ulimit -t unlimited
+  }
+
+# ogg2mp3 with bitrate of 192
+ogg2mp3_192() {
+  oggdec -o - ${1} | lame -b 192 - ${1:r}.mp3
+}
+
+# }}}
+
+# some useful commands often hard to remember - let's grep for them {{{
+
+# enable jackd:
+#  /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
+# now play audio file:
+#  alsaplayer -o jack foobar.mp3
+
+# send files via netcat
+# on sending side:
+#  send() {j=$*; tar cpz ${j/%${!#}/}|nc -w 1 ${!#} 51330;}
+#  send dir* $HOST                                                                                               # alias receive='nc -vlp 51330 | tar xzvp'
+
+# debian stuff:
+# dh_make -e foo@localhost -f $1
+# dpkg-buildpackage -rfakeroot
+# lintian *.deb
+# dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
+# dpkg-scansources . | gzip > Sources.gz
+# grep-dctrl --field Maintainer $* /var/lib/apt/lists/*
+
+# other stuff:
+# convert -geometry 200x200 -interlace LINE -verbose
+# ldapsearch -x -b "OU=Bedienstete,O=tug" -h ldap.tugraz.at sn=$1
+# ps -ao user,pcpu,start,command
+# gpg --keyserver blackhole.pca.dfn.de --recv-keys
+# xterm -bg black -fg yellow -fn -misc-fixed-medium-r-normal--14-140-75-75-c-90-iso8859-15 -ah
+# nc -vz $1 1-1024   # portscan via netcat
+# wget --mirror --no-parent --convert-links
+# pal -d `date +%d`
+# autoload -U tetris; zle -N tetris; bindkey '...' ; echo "press ... for playing tennis"
+# }}}
+## END OF FILE #################################################################
+# vim:foldmethod=marker
diff --git a/zsh_people/grml/keephack b/zsh_people/grml/keephack
new file mode 100644 (file)
index 0000000..d4c8a5f
--- /dev/null
@@ -0,0 +1,88 @@
+# Filename:      /etc/zsh/keephack
+# Purpose:       this file belongs to the zsh setup (see /etc/zsh/zshrc)
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Don Jän 27 23:38:57 CET 2005 [mika]
+################################################################################
+
+# save output in a variable for later use
+# Written by Bart Schaefer, for more details see:
+# http://www.zsh.org/cgi-bin/mla/wilma_hiliter/users/2004/msg00894.html ff.
+  function keep {
+    setopt localoptions nomarkdirs nonomatch nocshnullglob nullglob
+    kept=()         # Erase old value in case of error on next line
+    kept=($~*)
+    if [[ ! -t 0 ]]; then
+        local line
+        while read line; do
+            kept+=( $line )         # += is a zsh 4.2+ feature
+        done
+    fi
+    print -Rc - ${^kept%/}(T)
+  }
+  # use it via:
+  # locate -i backup | grep -i thursday | keep
+  # echo $kept
+  #
+  # or:
+  #
+  # patch < mypatch.diff
+  # keep **/*.(orig|rej)
+  # vim ${${kept:#*.orig}:r}
+  # rm $kept
+  alias keep='noglob keep'
+
+  _insert_kept() {
+    (( $#kept )) || return 1
+    local action
+    zstyle -s :completion:$curcontext insert-kept action
+    if [[ -n $action ]]
+    then compstate[insert]=$action
+    elif [[ $WIDGET = *expand* ]]
+    then compstate[insert]=all
+    fi
+    if [[ $WIDGET = *expand* ]]
+    then compadd -U ${(M)kept:#${~words[CURRENT]}}
+    else compadd -a kept
+    fi
+  }
+
+  # now bind it to keys and enable completition
+  zle -C insert-kept-result complete-word _generic
+  zle -C expand-kept-result complete-word _generic
+  zstyle ':completion:*-kept-result:*' completer _insert_kept
+  zstyle ':completion:insert-kept-result:*' menu yes select
+
+  bindkey '^Xk' insert-kept-result
+  bindkey '^XK' expand-kept-result    # shift-K to get expansion
+
+  # And the "_expand_word_and_keep" replacement for _expand_word:
+  _expand_word_and_keep() {
+    function compadd() {
+        local -A args
+        zparseopts -E -A args J:
+        if [[ $args[-J] == all-expansions ]]
+        then
+            builtin compadd -A kept "$@"
+            kept=( ${(Q)${(z)kept}} )
+        fi
+        builtin compadd "$@"
+    }
+    # for older versions of zsh:
+     local result
+     _main_complete _expand
+     result=$?
+     unfunction compadd
+     return result
+    # versions >=4.2.1 understand this:
+    # { _main_complete _expand } always { unfunction compadd }
+  }
+
+  # This line must come after "compinit" in startup:
+  zle -C _expand_word complete-word _expand_word_and_keep
+  # No bindkey needed, it's already ^Xe from _expand_word
+  zstyle ':completion:*' insert-kept menu
+  zmodload -i zsh/complist
+
+## END OF FILE #################################################################
diff --git a/zsh_people/grml/zshrc b/zsh_people/grml/zshrc
new file mode 100644 (file)
index 0000000..e1b5441
--- /dev/null
@@ -0,0 +1,496 @@
+# Frlename:      zshrc
+# Purpose:       config file for zsh (z shell)
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Die Mai 31 15:28:47 CEST 2005 [mika]
+################################################################################
+# This file is sourced only for interactive shells. It
+# should contain commands to set up aliases, functions,
+# options, key bindings, etc.
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+
+# {{{ check for version/system
+# check for versions (compatibility reasons)
+  is4(){
+    if [[ $ZSH_VERSION == 4.* ]]; then
+        return 0
+    else
+        return 1
+    fi
+  }
+
+# current release
+  is42(){
+    if [[ $ZSH_VERSION == 4.<2->* ]]; then
+        return 0
+    else
+        return 1
+    fi
+  }
+
+# grml specific stuff
+  isgrml(){
+    if [ -f /etc/grml_version ] ; then
+        return 0
+    else
+        return 1
+    fi
+  }
+
+  isgrmlcd(){
+    if [ -f /etc/grml_cd ] ; then
+        return 0
+    else
+        return 1
+    fi
+  }
+
+# change directory to home on first invocation of zsh
+# important for rungetty -> autologin
+# Thanks go to Bart Schaefer!
+  isgrml && checkhome() {
+  if [[ -z "$ALREADY_DID_CD_HOME" ]]; then
+     export ALREADY_DID_CD_HOME=$HOME
+     cd
+  fi
+  }
+# }}}
+
+# {{{ set some variables
+  [[ -z "$EDITOR" ]] && EDITOR='vim'
+  [[ -z "$SHELL"  ]] && SHELL='/bin/zsh'
+  [[ -f ~/.terminfo/m/mostlike ]] && MYLESS='LESS=C TERMINFO=~/.terminfo TERM=mostlike less' || MYLESS='less'
+  eval `dircolors -b`
+
+# Search path for the cd comman
+#  cdpath=(.. ~)
+
+# automatically remove duplicates from these arrays
+  typeset -U path cdpath fpath manpath
+# }}}
+
+# {{{ keybindings
+if [[ "$TERM" != emacs ]]; then
+  [[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
+  [[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
+  [[ -z "$terminfo[kend]" ]]  || bindkey -M emacs "$terminfo[kend]" end-of-line
+  [[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
+  [[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
+  [[ -z "$terminfo[kend]" ]]  || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
+
+  [[ -z "$terminfo[cuu1]" ]]  || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
+  [[ -z "$terminfo[cuf1]" ]]  || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
+  [[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
+  [[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
+  [[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
+  [[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
+
+# ncurses fogyatekos
+  [[ "$terminfo[kcuu1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
+  [[ "$terminfo[kcud1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
+  [[ "$terminfo[kcuf1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
+  [[ "$terminfo[kcub1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
+  [[ "$terminfo[khome]" == "\eO"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
+  [[ "$terminfo[kend]" == "\eO"* ]]  && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
+  [[ "$terminfo[khome]" == "\eO"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
+  [[ "$terminfo[kend]" == "\eO"* ]]  && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
+fi
+
+## keybindings (run 'bindkeys' for details, more details via man zshzle)
+# use emacs style per default
+  bindkey -e
+# use vi style:
+# bindkey -v
+
+#if [[ "$TERM" == screen ]]; then
+  bindkey '\e[1~' beginning-of-line       # home
+  bindkey '\e[4~' end-of-line             # end
+  bindkey "^[[A"  up-line-or-search       # cursor up
+  bindkey "^[[B"  down-line-or-search     # <ESC>-
+  bindkey '^x'    history-beginning-search-backward
+#fi
+#  bindkey '\eq' push-line-or-edit
+# }}}
+
+# {{{ autoloading
+  autoload -U zmv    # who needs mmv or rename?
+  autoload history-search-end
+
+  alias run-help >&/dev/null && unalias run-help
+  autoload run-help # use via 'esc-h'
+
+  is4 && autoload -U compinit && compinit # completition system
+  is4 && autoload -U zed                  # use ZLE editor to edit a file or function
+
+  is4 && zmodload -i zsh/complist
+  is4 && zmodload -i zsh/deltochar
+  is4 && zmodload -i zsh/mathfunc
+# Autoload zsh modules when they are referenced
+  is4 && zmodload -a zsh/stat stat
+  is4 && zmodload -a zsh/zpty zpty
+  is4 && zmodload -a zsh/zprof zprof
+  is4 && zmodload -ap zsh/mapfile mapfile
+
+  is4 && autoload -U insert-files && \
+  zle -N insert-files && \
+  bindkey "^Xf" insert-files # C-x-f
+
+  bindkey ' ' magic-space    # also do history expansion on space
+
+# press Esc-e for editing command line in $EDITOR or $VISUAL
+  is4 && autoload -U edit-command-line && \
+  zle -N edit-command-line && \
+  bindkey '\ee' edit-command-line
+
+# press Esc-m for inserting last typed word again (thanks to caphuso!)
+  insert-last-typed-word() { zle insert-last-word -- 0 -1 }; \
+  zle -N insert-last-typed-word; bindkey "\em" insert-last-typed-word
+
+# set command prediction from history, see 'man 1 zshcontrib'
+  is4 && autoload -U predict-on && \
+  zle -N predict-on         && \
+  zle -N predict-off        && \
+  bindkey "^X^Z" predict-on && \
+  bindkey "^Z" predict-off
+# }}}
+
+# {{{ set some important options
+  umask 022
+
+# history:
+  setopt append_history       # append history list to the history file (important for multiple parallel zsh sessions!)
+  is4 && setopt SHARE_HISTORY # import new commands from the history file also in other zsh-session
+  setopt extended_history     # save each command's beginning timestamp and the duration to the history file
+  is4 && setopt histignorealldups # If  a  new  command  line being added to the history
+                              # list duplicates an older one, the older command is removed from the list
+  setopt histignorespace      # remove command lines from the history list when
+                              # the first character on the line is a space
+  setopt histallowclobber     # add `|' to output redirections in the history
+
+  setopt auto_cd              # if a command is issued that can't be executed as a normal command,
+                              # and the command is the name of a directory, perform the cd command to that directory
+  setopt correct              # try to correct the spelling if possible
+  setopt extended_glob        # in order to use #, ~ and ^ for filename generation
+                              # grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z) ->
+                              # -> searches for word not in compressed files
+                              # don't forget to quote '^', '~' and '#'!
+  setopt NO_clobber           # warning if file exists ('cat /dev/null > ~/.zshrc')
+  setopt notify                      # report the status of backgrounds jobs immediately
+  setopt hash_list_all        # Whenever a command completion is attempted, make sure \
+                              # the entire command path is hashed first.
+  setopt completeinword       # not just at the end
+# setopt nocheckjobs          # don't warn me about bg processes when exiting
+  setopt nohup                # and don't kill them, either
+# setopt printexitvalue       # alert me if something failed
+# setopt dvorak               # with spelling correction, assume dvorak kb
+
+  MAILCHECK=30       # mailchecks
+  REPORTTIME=5       # report about cpu-/system-/user-time of command if running longer than 5 secondes
+  watch=(notme root) # watch for everyone but me and root
+# }}}
+
+# {{{ history
+  export ZSHDIR=$HOME/.zsh
+  HISTFILE="$HOME/.zsh_history"
+  HISTSIZE=500
+  SAVEHIST=1000 # useful for setopt append_history
+# }}}
+
+# {{{ set prompt
+  #precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
+  is4 && precmd () {
+      RPROMPT="%(?..:()% ${SCREENTITLE}"
+  }
+
+  is4 && preexec () {
+  # set screen window title if running in a screen
+  # get the name of the program currently running
+      if [[ "$TERM" == screen* ]]; then
+          local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}
+          echo -ne "\ek$CMD\e\\"
+      fi
+  # set the screen title to "zsh" when sitting at a command prompt:
+      if [[ "$TERM" == screen* ]]; then
+           SCREENTITLE=$'%{\ekzsh\e\\%}'
+      else
+           SCREENTITLE=''
+      fi
+  }
+
+  EXITCODE="%(?..%?%1v )"
+  local BLUE="%{\e[1;34m%}"
+  local RED="%{\e[1;31m%}"
+  local GREEN="%{\e[1;32m%}"
+  local CYAN="%{\e[1;36m%}"
+  local NO_COLOUR="%{\e[0m%}"
+  PS2='`%_> '       # secondary prompt, printed when the shell needs more information to complete a command.
+  PS3='?# '         # selection prompt used within a select loop.
+  PS4='+%N:%i:%_> ' # the execution trace prompt (setopt xtrace). default: '+%N:%i>'
+
+# only if $GRMLPROMPT is set (e.g. via GRMLPROMPT='1') use the extended prompt
+  if ! [[ -z "$GRMLPROMPT" ]]; then
+    PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
+${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
+  else
+    if (( EUID != 0 )); then
+      PROMPT="${RED}${EXITCODE}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string
+    else
+      PROMPT="${BLUE}${EXITCODE}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string
+    fi
+  fi
+# }}}
+
+# {{{ 'hash' some often used directories
+  hash -d deb=/var/cache/apt/archives
+  hash -d doc=/usr/share/doc
+  hash -d linux=/lib/modules/$(command uname -r)/build/
+  hash -d log=/var/log
+  hash -d slog=/var/log/syslog
+  hash -d src=/usr/src
+  hash -d templ=/usr/share/doc/grml-templates
+  hash -d tt=/usr/share/doc/texttools-doc
+  hash -d www=/var/www
+# }}}
+
+# {{{ some aliases
+  alias la="ls -la --color=auto"
+  alias ll="ls -l --color=auto"
+  alias l="ls -lF --color=auto"
+  alias ls="ls --color=auto"      # people are used to it, so...
+
+  alias cp='nocorrect cp'         # no spelling correction on cp
+  alias mkdir='nocorrect mkdir'   # no spelling correction on mkdir
+  alias mv='nocorrect mv'         # no spelling correction on mv
+
+# debian stuff
+  alias acs='apt-cache search'
+  alias agi='apt-get install'
+  alias acsh='apt-cache show'
+  alias au='apt-get update'
+  alias ag='apt-get upgrade'
+  alias adg='apt-get dist-upgrade'
+  alias ge='grep-excuses'
+  alias dbp='dpkg-buildpackage'
+
+  isgrmlcd && alias su='sudo su'          # change to user root
+  alias tlog='tail -f /var/log/syslog'    # take a look at the syslog
+  alias zshskel='source /etc/skel/.zshrc' # source skeleton zshrc
+# }}}
+
+# {{{ Use hard limits, except for a smaller stack and no core dumps
+  unlimit
+  limit stack 8192
+  limit core 0      # important for a live-cd-system
+  limit -s
+# }}}
+
+# {{{ completion stuff
+# called later (via is4 && grmlcomp)
+# use 'zstyle' for getting current settings
+# press ^Xh (control-x h) for getting tags in context
+grmlcomp() {
+  zstyle ':completion:*:processes' command 'ps -au$USER'     # on processes completion complete all user processes
+  zstyle ':completion:*:descriptions' format \
+         $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'           # format on completion
+  zstyle ':completion:*' verbose yes                         # provide verbose completion information
+  zstyle ':completion:*:messages' format '%d'
+  zstyle ':completion:*:warnings' format \
+         $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
+  zstyle ':completion:*:matches' group 'yes'                 # separate matches into groups
+  zstyle ':completion:*:options' description 'yes'           # describe options in full
+  zstyle ':completion:*:options' auto-description '%d'
+  zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)'
+
+# activate color-completion(!)
+  zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
+
+## correction
+
+# Ignore completion functions for commands you don't have:
+#  zstyle ':completion:*:functions' ignored-patterns '_*'
+  zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*'
+
+  zstyle ':completion:*'             completer _complete _correct _approximate
+  zstyle ':completion:*:correct:*'   insert-unambiguous true
+#  zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
+#  zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}'
+  zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
+  zstyle ':completion:*:correct:*'   original true
+  zstyle ':completion:correct:'      prompt 'correct to:'
+
+# allow one error for every three characters typed in approximate completer
+  zstyle -e ':completion:*:approximate:' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )'
+#  zstyle ':completion:*:correct:*'   max-errors 2 numeric
+
+# match uppercase from lowercase
+  zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
+
+# command for process lists, the local web server details and host completion
+  hosts=(`hostname` grml.org)
+  zstyle '*' hosts $hosts
+  zstyle ':completion:*:urls' local 'www' '/var/www/' 'public_html'
+
+# offer indexes before parameters in subscripts
+  zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
+
+# insert all expansions for expand completer
+  zstyle ':completion:*:expand:*' tag-order all-expansions
+
+# ignore duplicate entries
+  zstyle ':completion:*:history-words' stop yes
+  zstyle ':completion:*:history-words' remove-all-dups yes
+  zstyle ':completion:*:history-words' list false
+  zstyle ':completion:*:history-words' menu yes
+
+# filename suffixes to ignore during completion (except after rm command)
+#  zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns  '*?.(o|c~|old|pro|zwc)' '*~'
+
+# Don't complete backup files as executables
+  zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# If there are more than 5 options, allow selecting from a menu with
+# arrows (case insensitive completion!).
+#  zstyle ':completion:*-case' menu select=5
+  zstyle ':completion:*' menu select=5
+
+# zstyle ':completion:*:*:kill:*' verbose no
+#  zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
+#                                /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
+
+# caching
+  [ -d $ZSHDIR/cache ] && zstyle ':completion:*' use-cache yes && \
+                          zstyle ':completion::complete:*' cache-path $ZSHDIR/cache/
+
+# use ~/.ssh/known_hosts for completion
+#  local _myhosts
+#  _myhosts=( ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*} )
+#  zstyle ':completion:*' hosts $_myhosts
+  [ -f "$HOME/.ssh/known_hosts" ] && \
+  hosts=(${${${(f)"$(<$HOME/.ssh/known_hosts)"}%%\ *}%%,*}) && \
+  zstyle ':completion:*:hosts' hosts $hosts
+
+# simple completion for fbset (switch resolution on console)
+  _fbmodes() { compadd 640x480-60 640x480-72 640x480-75 640x480-90 640x480-100 768x576-75 800x600-48-lace 800x600-56 800x600-60 800x600-70 800x600-72 800x600-75 800x600-90 800x600-100 1024x768-43-lace 1024x768-60 1024x768-70 1024x768-72 1024x768-75 1024x768-90 1024x768-100 1152x864-43-lace 1152x864-47-lace 1152x864-60 1152x864-70 1152x864-75 1152x864-80 1280x960-75-8 1280x960-75 1280x960-75-32 1280x1024-43-lace 1280x1024-47-lace 1280x1024-60 1280x1024-70 1280x1024-74 1280x1024-75 1600x1200-60 1600x1200-66 1600x1200-76 }
+  compdef _fbmodes fbset
+
+# use generic completion system for programs not yet defined:
+  compdef _gnu_generic tail head feh cp mv gpg df stow uname ipacsum fetchipac
+
+# Debian specific stuff
+# zstyle ':completion:*:*:lintian:*' file-patterns '*.deb'
+  zstyle ':completion:*:*:linda:*'   file-patterns '*.deb'
+
+  _debian_rules() { words=(make -f debian/rules) _make }
+  compdef _debian_rules debian/rules # type debian/rules <TAB> inside a source package
+
+# see upgrade function in this file
+  compdef _hosts upgrade
+}
+# }}}
+
+# {{{ grmlstuff
+grmlstuff() {
+# people should use 'grml-x'!
+  if ! [ -r /etc/X11/xorg.conf ] ; then
+  isgrmlcd  && alias startx='echo -e "Please use the script \"grml-x\" for starting the X Window System.\n If you want to use startx anyway please call \"/usr/X11R6/bin/startx\"."; return -1'
+  fi
+
+# load language settings - wrapper around the main script
+  grml-lang(){
+    grml-setlang $* && zsh
+  }
+
+  _grml-lang() { compadd at de en ; }
+  compdef _grml-lang grml-lang
+
+#  _grml-x() { compadd fluxbox ion2 ion3 pekwm ratpoison twm wmi wmii ; }
+#  compdef _grml-x grml-x
+  _grml-x() {                                                                                                       local arguments wm
+   wm=(fluxbox ion2 ion3 pekwm pwm2 pwm3 ratpoison twm wmi wmii)
+   arguments=(
+   '-display:display for xserver:(7 8)'
+   '-force[force creation of xconfig file]'                                                                         '-help:display help'
+   '-hsync:horizontal sync frequencies (<number>):(28 `seq 30 5 95` 96)'
+   '-mode:resolution-mode for xserver (<width>x<height> - e.g. 1024x768)]:(1920x1440 1600x1200 1400x1050 1280x102
+4 1280x960 1024x768 800x600 640x480)'
+   '-module:module for xserver :(`cd /usr/X11R6/lib/modules/drivers && ls *.o | sed 's/_drv.o//'`)'
+   '-nostart:do not start X server'
+   '-vsync:vertical sync frequencies (<number>):(43 `seq 45 5 70` 72)'
+   '-xserver:xserver used for creation of xconfig file:(XFree86 X.org)'
+   ':window manager:($wm)'
+   )
+   #'-vsync:use specified vsync (xx.0 - xx.0):(`seq -f '%g.0' 50 5 70`)'
+   #'-hsync:use specified hsync (xx.0 - xx.0):(28.0 `seq -f '%g.0' 30 5 95` 96.0)'
+    _arguments -s $arguments
+  }
+  compdef _grml-x grml-x
+
+  grml-wallpaper() { Esetroot -scale /usr/share/grml/$* }
+  _grml-wallpaper() {
+    dirs=(. /usr/share/grml/)
+    _description files expl 'set desktop wallpaper on grml system'
+    _files "$expl[@]" -W dirs -g '*.{jpg,png}(-.)'
+  }
+  compdef _grml-wallpaper grml-wallpaper
+
+  alias grml-version='cat /etc/grml_version'
+}
+# }}}
+
+# {{{ now run the functions
+  isgrml && checkhome
+  is4    && isgrml    && grmlstuff
+  is4    && grmlcomp
+# }}}
+
+# {{{ keephack
+  [ -r /etc/zsh/keephack ] && is4 && source /etc/zsh/keephack
+# }}}
+
+# {{{ wonderful idea of using "e" glob qualifier by Peter Stephenson
+# You use it as follows:
+# $ NTREF=/reference/file
+# $ ls -l *(e:nt:)
+# This lists all the files in the current directory newer than the reference file.
+# You can also specify the reference file inline; note quotes:
+# $ ls -l *(e:'nt ~/.zshenv':)
+  is4 && nt() {
+    if [[ -n $1 ]]; then
+      local NTREF=${~1}
+    fi
+    [[ $REPLY -nt $NTREF ]]
+  }
+# }}}
+
+# shell functions {{{
+  setenv()  { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
+  freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
+  manzsh()  { man zshall | $MYLESS -p $1 ; }
+
+# use it e.g. via 'restart apache2'
+#  for i in start restart stop reload ;
+#    do
+#    eval "$i() { /etc/init.d/\$1 $i ; }"
+#  done
+  for i in Start Restart Stop Reload ; do
+    if [ UID != 0 ] ; then
+      RUNASROOT=sudo
+    fi
+    eval "$i() { $RUNASROOT /etc/init.d/\$1 ${i:l} ; }"
+  done
+# now the completion for this:
+#  compdef "_files -W /etc/init.d/" Stop Start Reload Restart
+  compctl -g "$(echo /etc/init.d/*(:t))" Start Restart Stop Reload
+# }}}
+
+# source another config file if present {{{
+  if [ -r /etc/zsh/zshrc.local ]; then
+   source /etc/zsh/zshrc.local
+  fi
+# }}}
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker
diff --git a/zsh_people/marijan_peh/zshrc b/zsh_people/marijan_peh/zshrc
new file mode 100644 (file)
index 0000000..d4c78fd
--- /dev/null
@@ -0,0 +1,1439 @@
+## $Id: .zshrc,v1.07 for zsh4.x
+## Thursday May 23 22:36:11 CEST 2002
+## Created by Marijan Peh <marijan.peh@hi.hinet.hr>
+## Latest version on http://free-po.hinet.hr/MarijanPeh/files/zshrc
+##
+## With sugestions from:
+## Bart Schaefer <schaefer@brasslantern.com>
+## Mario Jose Medjeral <mario@medjeral.demon.co.uk>
+##
+## This file 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.
+##
+## Use and modify to personal taste.  Copying this file without
+## thought will needlessly increase zsh's memory usage and startup time.
+
+## others can't rwx my files
+## this is very paranoid :-) set to 022 if you wish
+umask 077
+
+## get keys working
+case $TERM in 
+       linux)
+       bindkey "^[[2~" yank
+       bindkey "^[[3~" delete-char
+       bindkey "^[[5~" up-line-or-history ## PageUp
+       bindkey "^[[6~" down-line-or-history ## PageDown
+       bindkey "^[[1~" beginning-of-line
+       bindkey "^[[4~" end-of-line
+       bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command
+       bindkey "^[[A" up-line-or-search ## up arrow for back-history-search
+       bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search
+       bindkey " " magic-space ## do history expansion on space
+;;
+       *xterm*|rxvt|(dt|k|E)term)
+       bindkey "^[[2~" yank
+       bindkey "^[[3~" delete-char
+       bindkey "^[[5~" up-line-or-history ## PageUp
+       bindkey "^[[6~" down-line-or-history ## PageDown
+       bindkey "^[[7~" beginning-of-line
+       bindkey "^[[8~" end-of-line
+       bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command
+       bindkey "^[[A" up-line-or-search ## up arrow for back-history-search
+       bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search
+       bindkey " " magic-space ## do history expansion on space
+;;
+esac
+
+## use hard limits, except for a smaller stack and no core dumps
+unlimit
+limit stack 8192
+limit core 0
+limit -s
+
+## set path and cdpath
+## think about setting path,cdpath,manpath & fpath in .zshenv
+path=($path /bin /usr/bin /usr/X11R6/bin)
+path=($path /usr/local/bin $HOME/bin)
+cdpath=(~ ..) ## on cd command offer dirs in home and one dir up.
+
+## for root add sbin dirs to path
+if (( EUID == 0 )); then
+       path=($path /sbin /usr/sbin /usr/local/sbin)
+fi
+
+## aditional dir to look for function definitions
+fpath=($fpath ~/.zfunc) ## EDIT ## or comment if u don't need it.
+
+## set manpath
+manpath=(/usr/local/man /usr/share/man) ## EDIT ##
+manpath=($manpath /usr/X11R6/man /usr/man /usr/lib/perl5/man) ## EDIT ##
+
+## remove duplicate entries from path,cdpath,manpath & fpath
+typeset -U path cdpath manpath fpath
+
+## The file to save the history in when an interactive shell exits.
+## If unset, the history is not saved.
+HISTFILE=${HOME}/.zsh_history
+
+## The maximum number of events stored in the internal history list.
+HISTSIZE=1000
+
+## The maximum number of history events to save in the history file.
+SAVEHIST=1000
+
+## maximum size of the directory stack.
+DIRSTACKSIZE=20
+
+## file for mail checking
+MAIL=/var/mail/$USERNAME
+
+## The interval in seconds between checks for new mail.
+MAILCHECK=60
+
+## The interval in seconds between checks for login/logout activity
+## using the watch parameter.
+LOGCHECK=60
+
+## The baud rate of the current connection.  Used by the line editor
+## update mechanism to compensate for a slow terminal by delaying
+## updates until necessary.
+#BAUD=38400 ## to turn off set this to zero
+
+## If nonnegative, commands whose combined user and system execution times
+## (measured in seconds) are greater than this value have timing
+## statistics printed for them.
+#REPORTTIME=1
+
+## If set, this gives a string of characters, which can use
+## all the same codes as the bindkey command as described in
+## section The zsh/zle Module, that will be output to
+## the terminal instead of beeping.
+## This may have a visible instead of an audible effect;
+## for example, the string `\e[?5h\e[?5l' on a vt100 or xterm will have
+## the effect of flashing reverse video on and off (if you usually use reverse
+## video, you should use the string `\e[?5l\e[?5h' instead).  This takes
+## precedence over the NOBEEP option.
+#ZBEEP='\e[?5h\e[?5l'
+
+## The directory to search for shell startup files (.zshrc, etc),
+## if not $HOME.
+#ZDOTDIR=~/.zsh
+
+
+
+## (( ${+*} )) = if variable is set don't set it anymore
+(( ${+USER} )) || export USER=$USERNAME
+(( ${+HOSTNAME} )) || export HOSTNAME=$HOST
+(( ${+EDITOR} )) || export EDITOR=`which vim`
+(( ${+VISUAL} )) || export VISUAL=`which vim`
+(( ${+FCEDIT} )) || export FCEDIT=`which vim`
+(( ${+PAGER} )) || export PAGER=`which less`
+(( ${+MAILCALL} )) || export MAILCALL='*** NEW MAIL ***' ## new mail warning
+(( ${+LESSCHARSET} )) || export LESSCHARSET='latin1' ## charset for pager
+(( ${+LESSOPEN} )) || export LESSOPEN='|lesspipe.sh %s'
+(( ${+MOZILLA_HOME} )) || export MOZILLA_HOME='/usr/lib/netscape' ## EDIT ##
+(( ${+MOZILLA_NO_ASYNC_DNS} )) || export MOZILLA_NO_ASYNC_DNS='True'
+(( ${+NNTPSERVER} )) || export NNTPSERVER=''  ## news server ## EDIT ##
+(( ${+CC} )) || export CC='gcc' ## or egcs or whatever
+
+## compiler opt. flags !!! use this with caution !!! or dont use et all
+case $CPUTYPE in
+       i686)
+       (( ${+CFLAGS} )) || export CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions'
+;;
+       i586)
+       (( ${+CFLAGS} )) || export CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'
+;;
+       i486)
+       (( ${+CFLAGS} )) || export CFLAGS='-O3  -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions'
+;;
+       *)
+       (( ${+CXXFLAGS} )) || export CXXFLAGS=$CFLAGS
+esac
+
+## variables for BitchX (irc client)
+(( ${+IRCNAME} )) || export IRCNAME='' ## EDIT ##
+(( ${+IRCNICK} )) || export IRCNICK='' ## EDIT ##
+(( ${+IRCSERVER} )) || export IRCSERVER='' ## EDIT ##
+
+## auto logout after timeout in seconds
+TMOUT=1800
+
+## if we are in X then disable TMOUT
+case $TERM in
+       *xterm*|rxvt|(dt|k|E)term)
+       unset TMOUT
+       ;;
+esac
+
+#bindkey -v  ## vi key bindings
+bindkey -e  ## emacs key bindings
+
+## turn on full featured completion (minimal needs: zsh3.1)
+if [[ "$ZSH_VERSION" == (3.1|4)* ]]; then
+       autoload -U compinit
+       compinit -C
+else
+       print "Advanced completion system not found; ignoring zstyle settings."
+       function zstyle { }
+fi
+
+## set colors for GNU ls ; set this to right file
+eval `dircolors /etc/DIR_COLORS` ## EDIT ##
+
+## Color completion
+## this module should be automatically loaded if u use menu selection
+## but to be sure we do it here
+zmodload -i zsh/complist
+
+## Someone once accused zsh of not being as complete as Emacs, because it
+## lacks Tetris and an adventure game.
+autoload -U tetris
+zle -N tetris
+bindkey "^Xt" tetris ## C-x-t to play
+
+## This allows incremental completion of a word.
+## After starting this command, a list of completion
+## choices can be shown after every character you
+## type, which you can delete with ^h or DEL.
+## RET will accept the completion so far.
+## You can hit TAB to do normal completion, ^g to            
+## abort back to the state when you started, and ^d to list the matches.
+autoload -U incremental-complete-word
+zle -N incremental-complete-word
+bindkey "^Xi" incremental-complete-word ## C-x-i
+
+## This function allows you type a file pattern,
+## and see the results of the expansion at each step.
+## When you hit return, they will be inserted into the command line.
+autoload -U insert-files
+zle -N insert-files
+bindkey "^Xf" insert-files ## C-x-f
+
+## This set of functions implements a sort of magic history searching.
+## After predict-on, typing characters causes the editor to look backward
+## in the history for the first line beginning with what you have typed so
+## far.  After predict-off, editing returns to normal for the line found.
+## In fact, you often don't even need to use predict-off, because if the
+## line doesn't match something in the history, adding a key performs
+## standard completion - though editing in the middle is liable to delete
+## the rest of the line.
+autoload -U predict-on
+zle -N predict-on
+zle -N predict-off
+bindkey "^X^Z" predict-on ## C-x C-z
+bindkey "^Z" predict-off ## C-z
+
+## This is a multiple move based on zsh pattern matching.  To get the full
+## power of it, you need a postgraduate degree in zsh.
+## Read /path_to_zsh_functions/zmv for some basic examples.
+#autoload -U zmv
+
+## watch for my friends
+## An array (colon-separated list) of login/logout events to report.
+## If it contains the single word `all', then all login/logout events
+## are reported.  If it contains the single word `notme', then all
+## events are reported as with `all' except $USERNAME.
+## An entry in this list may consist of a username,
+## an `@' followed by a remote hostname,
+## and a `%' followed by a line (tty).
+#watch=( $(<~/.friends) )  ## watch for people in $HOME/.friends file
+watch=(notme)  ## watch for everybody but me
+LOGCHECK=60  ## check every ... seconds for login/logout activity
+
+## The format of login/logout reports if the watch parameter is set.
+## Default is `%n has %a %l from %m'.
+## Recognizes the following escape sequences:
+## %n = name of the user that logged in/out.
+## %a = observed action, i.e. "logged on" or "logged off".
+## %l = line (tty) the user is logged in on.
+## %M = full hostname of the remote host.
+## %m = hostname up to the first `.'.
+## %t or %@ = time, in 12-hour, am/pm format.
+## %w = date in `day-dd' format.
+## %W = date in `mm/dd/yy' format.
+## %D = date in `yy-mm-dd' format.
+WATCHFMT='%n %a %l from %m at %t.'
+
+## set prompts ####
+## choose just one
+#PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# ' ## user:~%
+#PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%B>%b ' ## user:~>
+#PS1='%n@%m:%4c%1v> ';RPS1=$'%{\e[0;36m%}%D{%A %T}%{\e[0m%}' ## user@host:~> ; Day time(hh:mm:ss)
+#PS1='%B[%b%n%B:%b%~%B]%b$ ' ## [user:~]$
+#PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%20<..<%~%B>%b ' ## user:..c/vim-common-6.0>
+#PS1=$'%{\e[0;36m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## % ; ~
+#PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## user% ; ~
+#PS1='%# ';RPS1='%B%~%b' ## % ; ~ : no colors
+#PS1='%n@%m:%B%~%b> ' ## user@host:~> : no colors
+
+## or use neat prompt themes included with zsh
+autoload -U promptinit
+promptinit
+## Currently available prompt themes:
+## adam1 adam2 bart bigfade clint elite2 elite
+## fade fire off oliver redhat suse walters zefram
+prompt elite2
+
+## don't ask me 'do you wish to see all XX possibilities' before menu selection
+LISTPROMPT=''
+
+## SPROMPT - the spelling prompt
+SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) '
+
+## functions for displaying neat stuff in *term title
+case $TERM in
+       *xterm*|rxvt|(dt|k|E)term)
+       ## display user@host and full dir in *term title
+       precmd () {
+               print -Pn  "\033]0;%n@%m %~\007"
+               #print -Pn "\033]0;%n@%m%#  %~ %l  %w :: %T\a" ## or use this
+               }
+       ## display user@host and name of current process in *term title
+       preexec () {
+               print -Pn "\033]0;%n@%m <$1> %~\007"
+               #print -Pn "\033]0;%n@%m%#  <$1>  %~ %l  %w :: %T\a" ## or use this
+               }
+       ;;
+esac
+
+## aliases ####
+alias p='ps -fu $USER'
+alias v='less'
+alias h='history'
+alias z='vim ~/.zshrc;src'
+alias gvim='gvim -U ~/.gvimrc'
+alias g='gvim'
+alias vi='vim'
+alias mv='nocorrect mv -i'
+alias cp='nocorrect cp -i'
+alias rm='nocorrect rm -i'
+alias mkdir='nocorrect mkdir'
+alias man='nocorrect man'
+alias find='noglob find'
+alias ls='ls --color=auto'
+alias l='ls'
+alias ll='ls -l'
+alias l.='ls -A'
+alias ll.='ls -al'
+alias lsa='ls -ls .*' ## list only file beginning with "."
+alias lsd='ls -ld *(-/DN)' ## list only dirs
+alias du1='du -hs *(/)' ## du with depth 1
+alias u='uptime'
+alias j='ps ax'
+alias ..='cd ..'
+alias cd..='cd ../..'
+alias cd....='cd ../../..'
+alias cd.....='cd ../../../..'
+alias cd/='cd /'
+alias sd='export DISPLAY=:0.0' ## export DISPLAY=:0.0
+alias x='startx &! exit'
+alias x8='startx -- -bpp 8 &! exit'                         
+alias x16='startx -- -bpp 16 &! exit'                       
+alias x24='startx -- -bpp 24 &! exit'                       
+alias x32='startx -- -bpp 32 &! exit'
+alias dpms='sleep 2 ; clear ; xset dpms force off'
+## global aliases, this is not good but it's useful
+alias -g L='|less'
+alias -g G='|grep'
+alias -g T='|tail'
+alias -g H='|head'
+alias -g W='|wc -l'
+alias -g S='|sort'
+alias -g US='|sort -u'
+alias -g NS='|sort -n'
+alias -g RNS='|sort -nr'
+alias -g N='&>/dev/null&'
+
+## changing terminal type
+alias v1='export TERM=vt100'
+alias v2='export TERM=vt220'
+alias vx='export TERM=xterm-color'
+
+## functions ####
+## csh compatibility
+setenv () { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }
+
+## find process to kill and kill it.
+pskill ()
+{ 
+       local pid
+       pid=$(ps -ax | grep $1 | grep -v grep | awk '{ print $1 }')
+       echo -n "killing $1 (process $pid)..."
+       kill -9 $=pid
+       echo "slaughtered."
+}
+
+## invoke this every time when u change .zshrc to
+## recompile it.
+src ()
+{
+       autoload -U zrecompile
+       [ -f ~/.zshrc ] && zrecompile -p ~/.zshrc
+       [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump
+       [ -f ~/.zshrc.zwc.old ] && rm -f ~/.zshrc.zwc.old
+       [ -f ~/.zcompdump.zwc.old ] && rm -f ~/.zcompdump.zwc.old
+       source ~/.zshrc
+}
+
+## make screenshot of current desktop (use import from ImageMagic)
+sshot ()
+{ sleep 5; import -window root desktop.jpg }
+
+## find all suid files
+suidfind ()
+{ ls -l /**/*(su0x) }
+
+## restore all .bak files
+restore_bak ()
+{
+autoload -U zmv
+zmv '(**/)(*).bak' '$1$2'
+}
+
+## display processes tree in less
+pst ()
+{ pstree -p $* | less -S }
+
+## search for various types or README file in dir and display them in $PAGER
+readme ()
+{
+       local files
+       files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+       if (($#files))
+       then $PAGER $files
+       else
+       print 'No README files.'
+       fi
+}
+
+## completions ####
+## General completion technique
+## complete as much u can ..
+zstyle ':completion:*' completer _complete _list _oldlist _expand _ignored _match _correct _approximate _prefix
+## complete less
+#zstyle ':completion:*' completer _expand _complete _list _ignored _approximate
+## complete minimal
+#zstyle ':completion:*' completer _complete _ignored
+
+## allow one error
+#zstyle ':completion:*:approximate:*' max-errors 1 numeric
+## allow one error for every three characters typed in approximate completer
+zstyle -e ':completion:*:approximate:*' max-errors \
+    'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )'
+
+## formatting and messages
+zstyle ':completion:*' verbose yes
+zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}%d%{\e[0m%}'
+zstyle ':completion:*:messages' format $'%{\e[0;31m%}%d%{\e[0m%}'
+zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for: %d%{\e[0m%}'
+zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
+zstyle ':completion:*' group-name ''
+
+## determine in which order the names (files) should be
+## listed and completed when using menu completion.
+## `size' to sort them by the size of the file
+## `links' to sort them by the number of links to the file
+## `modification' or `time' or `date' to sort them by the last modification time
+## `access' to sort them by the last access time
+## `inode' or `change' to sort them by the last inode change time
+## `reverse' to sort in decreasing order
+## If the style is set to any other value, or is unset, files will be
+## sorted alphabetically by name.
+zstyle ':completion:*' file-sort name
+
+## how many completions switch on menu selection
+## use 'long' to start menu compl. if list is bigger than screen
+## or some number to start menu compl. if list has that number
+## of completions (or more).
+zstyle ':completion:*' menu select=long
+
+## case-insensitive (uppercase from lowercase) completion
+zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
+## case-insensitive (all) completion
+#zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
+## case-insensitive,partial-word and then substring completion
+#zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+
+## offer indexes before parameters in subscripts
+zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
+
+## insert all expansions for expand completer
+zstyle ':completion:*:expand:*' tag-order all-expansions
+
+## ignore completion functions (until the _ignored completer)
+zstyle ':completion:*:functions' ignored-patterns '_*'
+
+## completion caching
+zstyle ':completion::complete:*' use-cache 1
+zstyle ':completion::complete:*' cache-path ~/.zcompcache/$HOST
+
+## add colors to completions
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+
+## don't complete backup files as executables
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+## filename suffixes to ignore during completion (except after rm command)
+zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns \
+'*?.(o|c~|old|pro|zwc)' '*~'
+
+## completions for some progs. not in default completion system
+
+zstyle ':completion:*:*:mpg123:*' file-patterns \
+'*.(mp3|MP3):mp3\ files *(-/):directories'
+
+zstyle ':completion:*:*:ogg123:*' file-patterns \
+'*.(ogg|OGG):ogg\ files *(-/):directories'
+
+## generic completions for programs which understand GNU long options(--help)
+
+compdef _gnu_generic slrnpull make df du
+
+## on processes completion complete all user processes
+zstyle ':completion:*:processes' command 'ps -au$USER'
+
+## add colors to processes for kill completion
+zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
+
+## common usernames
+#users=(jozo tomi peh) ## complete usernames 
+## if u have too much users to write in here, use file; change
+## 'users=(jozo tomi peh)' to 'users=( $(<~/.somefile) )'
+#zstyle ':completion:*' users $users
+
+## common hostnames
+#hosts=( $(</etc/hosts) )
+#zstyle ':completion:*' hosts $hosts
+
+## (user,host) pairs
+## all my accounts:
+#my_accounts=(
+#      {joe,root}@mymachine.com
+#      jbloggs@myothermachine.com
+#)
+
+## other people's accounts:
+#other_accounts=(
+#      {fred,root}@hismachine.com
+#      vera@hermachine.com
+#)
+#zstyle ':completion:*:my-accounts' users-hosts $my_accounts
+#zstyle ':completion:*:other-accounts' users-hosts $other_accounts
+
+## (host, port, user) triples for telnet
+#telnet_users_hosts_ports=(
+#      user1@host1:
+#      user2@host2:
+#      @mail-server:{smtp,pop3}
+#      @news-server:nntp
+#      @proxy-server:8000
+#)
+#zstyle ':completion:*:*:telnet:*' users-hosts-ports $telnet_users_hosts_ports
+
+## set options (setopt) ####
+############################
+# In the following list, options set by default in all emulations are marked
+# <D>; those set by default only in csh, ksh, sh, or zsh emulations are marked
+# <C>, <K>, <S>, <Z> as appropriate.  When listing options 
+# (by `setopt', `unsetopt', `set -o' or `set +o'), those turned on by default
+# appear in the list prefixed with `no'. Hence (unless KSH_OPTION_PRINT is set),
+# `setopt' shows all options whose settings
+# are changed from the default.
+# Default options are commented, uncomment them if you want
+# to be diferent from default
+
+# ALIASES <D> Expand aliases.
+#setopt NO_aliases
+
+# ALL_EXPORT (-a, ksh: -a)
+# All parameters subsequently defined are automatically exported.
+#setopt all_export
+
+# ALWAYS_LAST_PROMPT <D>
+# If unset, key functions that list completions try to return to the last
+# prompt if given a numeric argument. If set these functions try to
+# return to the last prompt if given no numeric argument.
+#setopt NO_always_last_prompt
+
+# ALWAYS_TO_END
+# If a completion is performed with the cursor within a word, and a
+# full completion is inserted, the cursor is moved to the end of the
+# word.  That is, the cursor is moved to the end of the word if either
+# a single match is inserted or menu completion is performed.
+setopt always_to_end
+
+# APPEND_HISTORY <D>
+# If this is set, zsh sessions will append their history list to
+# the history file, rather than overwrite it. Thus, multiple parallel
+# zsh sessions will all have their history lists added to the
+# history file, in the order they are killed.
+#setopt NO_append_history
+
+# AUTO_CD (-J)
+# If a command is issued that can't be executed as a normal command,
+# and the command is the name of a directory, perform the cd
+# command to that directory.
+setopt auto_cd
+
+# AUTO_LIST (-9) <D>
+# Automatically list choices on an ambiguous completion.
+#setopt NO_auto_list
+
+# AUTO_MENU <D>
+# Automatically use menu completion after the second consecutive request for
+# completion, for example by pressing the tab key repeatedly. This option
+# is overridden by MENU_COMPLETE.
+#setopt NO_auto_menu
+
+# AUTO_NAME_DIRS
+# Any parameter that is set to the absolute name of a directory
+# immediately becomes a name for that directory, that will be used
+# by the `%~'
+# and related prompt sequences, and will be available when completion
+# is performed on a word starting with `~'.
+# (Otherwise, the parameter must be used in the form `~param' first.)
+setopt NO_auto_name_dirs
+
+# AUTO_PARAM_KEYS <D>
+# If a parameter name was completed and a following character
+# (normally a space) automatically inserted, and the next character typed is one
+# of those that have to come directly after the name (like `}', `:',
+# etc.), the automatically added character is deleted, so that the character
+# typed comes immediately after the parameter name.
+# Completion in a brace expansion is affected similarly: the added character
+# is a `,', which will be removed if `}' is typed next.
+#setopt NO_auto_param_keys
+
+# AUTO_PARAM_SLASH <D>
+# If a parameter is completed whose content is the name of a directory,
+# then add a trailing slash instead of a space.
+#setopt NO_auto_param_slash
+
+# AUTO_PUSHD (-N)
+# Make cd push the old directory onto the directory stack.
+setopt auto_pushd
+
+# AUTO_REMOVE_SLASH <D>
+# When the last character resulting from a completion is a slash and the next
+# character typed is a word delimiter, a slash, or a character that ends 
+# a command (such as a semicolon or an ampersand), remove the slash.
+#setopt NO_auto_remove_slash
+
+# AUTO_RESUME (-W)
+# Treat single word simple commands without redirection
+# as candidates for resumption of an existing job.
+setopt NO_auto_resume
+
+# BAD_PATTERN (+2) <C> <Z>
+# If a pattern for filename generation is badly formed, print an error message.
+# (If this option is unset, the pattern will be left unchanged.)
+#setopt NO_bad_pattern
+
+# BANG_HIST (+K) <C> <Z>
+# Perform textual history expansion, csh-style,
+# treating the character `!' specially.
+#setopt NO_bang_hist
+
+# BARE_GLOB_QUAL <Z>
+# In a glob pattern, treat a trailing set of parentheses as a qualifier
+# list, if it contains no `|', `(' or (if special) `~'
+# characters.  See section Filename Generation.
+#setopt NO_bare_glob_qual
+
+# BASH_AUTO_LIST
+# On an ambiguous completion, automatically list choices when the
+# completion function is called twice in succession.  This takes
+# precedence over AUTO_LIST.  The setting of LIST_AMBIGUOUS is
+# respected.  If AUTO_MENU is set, the menu behaviour will then start
+# with the third press.  Note that this will not work with
+# MENU_COMPLETE, since repeated completion calls immediately cycle
+# through the list in that case.
+#setopt bash_auto_list
+
+# BEEP (+B) <D>
+# Beep on error in ZLE.
+setopt NO_beep
+
+# BG_NICE (-6) <C> <Z>
+# Run all background jobs at a lower priority.  This option
+# is set by default.
+#setopt NO_bg_nice
+
+# BRACE_CCL
+# Expand expressions in braces which would not otherwise undergo brace
+# expansion to a lexically ordered list of all the characters.  See
+# section Brace Expansion.
+setopt brace_ccl
+
+# BSD_ECHO <S>
+# Make the echo builtin compatible with the BSD man page echo(1) command.
+# This disables backslashed escape sequences in echo strings unless the
+# -e option is specified.
+#setopt bsd_echo
+
+# C_BASES
+# Output hexadecimal numbers in the standard C format, for example `0xFF'
+# instead of the usual `16#FF'.  If the option OCTAL_ZEROES is also
+# set (it is not by default), octal numbers will be treated similarly and
+# hence appear as `077' instead of `8#77'.  This option has no effect
+# on the choice of the output base, nor on the output of bases other than
+# hexadecimal and octal.  Note that these formats will be understood on input
+# irrespective of the setting of C_BASES.
+setopt NO_c_bases
+
+# CDABLE_VARS (-T)
+# If the argument to a cd command (or an implied cd with the
+# AUTO_CD option set) is not a directory, and does not begin with a
+# slash, try to expand the expression as if it were preceded by a
+# `~' (see section Filename Expansion).
+setopt cdable_vars
+
+# CHASE_DOTS
+# When changing to a directory containing a path segment `..' which would
+# otherwise be treated as canceling the previous segment in the path (in
+# other words, `foo/..' would be removed from the path, or if `..' is
+# the first part of the path, the last part of $PWD would be deleted),
+# instead resolve the path to the physical directory.  This option is
+# overridden by CHASE_LINKS.
+# For example, suppose /foo/bar is a link to the directory /alt/rod.
+# Without this option set, `cd /foo/bar/..' changes to /foo; with it
+# set, it changes to /alt.  The same applies if the current directory
+# is /foo/bar and `cd ..' is used.  Note that all other symbolic
+# links in the path will also be resolved.
+setopt NO_chase_dots
+
+
+# CHASE_LINKS (-w)
+# Resolve symbolic links to their true values when changing directory.
+# This also has the effect of CHASE_DOTS, i.e. a `..' path segment
+# will be treated as referring to the physical parent, even if the preceding
+# path segment is a symbolic link.
+setopt NO_chase_links
+
+# CHECK_JOBS <Z>
+# Report the status of background and suspended jobs before exiting a shell
+# with job control; a second attempt to exit the shell will succeed.
+# NO_CHECK_JOBS is best used only in combination with NO_HUP, else
+# such jobs will be killed automatically.
+#setopt NO_check_jobs
+
+# CLOBBER (+C, ksh: +C) <D>
+# Allows `>' redirection to truncate existing files,
+# and `>>' to create files.
+# Otherwise `>!' or `>|' must be used to truncate a file,
+# and `>>!' or `>>|' to create a file.
+#setopt clobber
+
+# COMPLETE_ALIASES
+# Prevents aliases on the command line from being internally substituted
+# before completion is attempted.  The effect is to make the alias a
+# distinct command for completion purposes.
+setopt NO_complete_aliases
+
+# COMPLETE_IN_WORD
+# If unset, the cursor is set to the end of the word if completion is
+# started. Otherwise it stays there and completion is done from both ends.
+setopt complete_in_word
+
+# CORRECT (-0)
+# Try to correct the spelling of commands.
+setopt NO_correct
+
+# CORRECT_ALL (-O)
+# Try to correct the spelling of all arguments in a line.
+setopt correct_all
+
+# CSH_JUNKIE_HISTORY <C>
+# A history reference without an event specifier will always refer to the
+# previous command.  Without this option, such a history reference refers
+# to the same event as the previous history reference, defaulting to the
+# previous command.
+#setopt csh_junkie_history
+
+# CSH_JUNKIE_LOOPS <C>
+# Allow loop bodies to take the form `list; end' instead of
+# `do list; done'.
+#setopt csh_junkie_loops
+
+# CSH_JUNKIE_QUOTES <C>
+# Changes the rules for single- and double-quoted text to match that of
+# csh.  These require that embedded newlines be preceded by a backslash;
+# unescaped newlines will cause an error message.
+# In double-quoted strings, it is made impossible to escape `$', ``'
+# or `"' (and `\' itself no longer needs escaping).
+# Command substitutions are only expanded once, and cannot be nested.
+#setopt csh_junkie_quotes
+
+# CSH_NULLCMD <C>
+# Do not use the values of NULLCMD and READNULLCMD
+# when running redirections with no command. This make 
+# such redirections fail (see section Redirection).
+#setopt csh_nullcmd
+
+# CSH_NULL_GLOB <C>
+# If a pattern for filename generation has no matches,
+# delete the pattern from the argument list;
+# do not report an error unless all the patterns
+# in a command have no matches.
+# Overrides NOMATCH.
+#setopt csh_null_glob
+
+# DVORAK
+# Use the Dvorak keyboard instead of the standard qwerty keyboard as a basis
+# for examining spelling mistakes for the CORRECT and CORRECT_ALL
+# options and the spell-word editor command.
+#setopt dvorak
+
+# EQUALS <Z>
+# Perform = filename expansion.
+# (See section Filename Expansion.)
+#setopt NO_equals
+
+# ERR_EXIT (-e, ksh: -e)
+# If a command has a non-zero exit status, execute the ZERR
+# trap, if set, and exit.  This is disabled while running initialization
+# scripts.
+#setopt err_exit
+
+# EXTENDED_GLOB
+# Treat the `#', `~' and `^' characters as part of patterns
+# for filename generation, etc.  (An initial unquoted `~'
+# always produces named directory expansion.)
+setopt extended_glob
+
+# EXTENDED_HISTORY <C>
+# Save each command's beginning timestamp (in seconds since the epoch)
+# and the duration (in seconds) to the history file.  The format of
+# this prefixed data is:
+# `:<beginning time>:<elapsed seconds>:<command>'.
+#setopt extended_history
+
+# FLOW_CONTROL <D>
+# If this option is unset,
+# output flow control via start/stop characters (usually assigned to
+# ^S/^Q) is disabled in the shell's editor.
+#setopt NO_flow_control
+
+# FUNCTION_ARGZERO <C> <Z>
+# When executing a shell function or sourcing a script, set $0
+# temporarily to the name of the function/script.
+#setopt NO_function_argzero
+
+# GLOB (+F, ksh: +f) <D>
+# Perform filename generation (globbing).
+# (See section Filename Generation.)
+#setopt NO_glob
+
+# GLOBAL_EXPORT (<Z>)
+# If this option is set, passing the -x flag to the builtins declare,
+# float, integer, readonly and typeset (but not local)
+# will also set the -g flag;  hence parameters exported to
+# the environment will not be made local to the enclosing function, unless
+# they were already or the flag +g is given explicitly.  If the option is
+# unset, exported parameters will be made local in just the same way as any
+# other parameter.
+# This option is set by default for backward compatibility; it is not
+# recommended that its behaviour be relied upon.  Note that the builtin
+# export always sets both the -x and -g flags, and hence its
+# effect extends beyond the scope of the enclosing function; this is the
+# most portable way to achieve this behaviour.
+#setopt NO_global_export
+
+
+# GLOBAL_RCS (-d) <D>
+# If this option is unset, the startup files /etc/zprofile,
+# /etc/zshrc, /etc/zlogin and /etc/zlogout will not be run. It
+# can be disabled and re-enabled at any time, including inside local startup
+# files (.zshrc, etc.).
+#setopt NO_global_rcs
+
+# GLOB_ASSIGN <C>
+# If this option is set, filename generation (globbing) is
+# performed on the right hand side of scalar parameter assignments of
+# the form `name=pattern (e.g. `foo=*').
+# If the result has more than one word the parameter will become an array
+# with those words as arguments. This option is provided for backwards
+# compatibility only: globbing is always performed on the right hand side
+# of array assignments of the form `name=(value)'
+# (e.g. `foo=(*)') and this form is recommended for clarity;
+# with this option set, it is not possible to predict whether the result
+# will be an array or a scalar.
+#setopt glob_assign
+
+# GLOB_COMPLETE
+# When the current word has a glob pattern, do not insert all the words
+# resulting from the expansion but generate matches as for completion and
+# cycle through them like MENU_COMPLETE. The matches are generated as if
+# a `*' was added to the end of the word, or inserted at the cursor when 
+# COMPLETE_IN_WORD is set.  This actually uses pattern matching, not
+# globbing, so it works not only for files but for any completion, such as
+# options, user names, etc.
+setopt glob_complete
+
+# GLOB_DOTS (-4)
+# Do not require a leading `.' in a filename to be matched explicitly.
+#setopt glob_dots
+
+# GLOB_SUBST <C> <K> <S>
+# Treat any characters resulting from parameter expansion as being
+# eligible for file expansion and filename generation, and any
+# characters resulting from command substitution as being eligible 
+# for filename generation.  Braces (and commas in between) do not 
+# become eligible for expansion.
+#setopt glob_subst
+
+# HASH_CMDS <D>
+# Note the location of each command the first time it is executed.
+# Subsequent invocations of the same command will use the
+# saved location, avoiding a path search.
+# If this option is unset, no path hashing is done at all.
+# However, when CORRECT is set, commands whose names do not appear in
+# the functions or aliases hash tables are hashed in order to avoid
+# reporting them as spelling errors.
+#setopt NO_hash_cmds
+
+# HASH_DIRS <D>
+# Whenever a command name is hashed, hash the directory containing it,
+# as well as all directories that occur earlier in the path.
+# Has no effect if neither HASH_CMDS nor CORRECT is set.
+#setopt NO_hash_dirs
+
+# HASH_LIST_ALL <D>
+# Whenever a command completion is attempted, make sure the entire
+# command path is hashed first. This makes the first completion slower.
+#setopt NO_hash_list_all
+
+# HIST_ALLOW_CLOBBER
+# Add `|' to output redirections in the history.  This allows history
+# references to clobber files even when CLOBBER is unset.
+setopt NO_hist_allow_clobber
+
+# HIST_BEEP <D>
+# Beep when an attempt is made to access a history entry which
+# isn't there.
+setopt NO_hist_beep
+
+# HIST_EXPIRE_DUPS_FIRST
+# If the internal history needs to be trimmed to add the current command line,
+# setting this option will cause the oldest history event that has a duplicate
+# to be lost before losing a unique event from the list.
+# You should be sure to set the value of HISTSIZE to a larger number
+# than SAVEHIST in order to give you some room for the duplicated
+# events, otherwise this option will behave just like HIST_IGNORE_ALL_DUPS
+# once the history fills up with unique events.
+setopt hist_expire_dups_first
+
+# HIST_FIND_NO_DUPS
+# When searching for history entries in the line editor, do not display
+# duplicates of a line previously found, even if the duplicates are not
+# contiguous.
+setopt hist_find_no_dups
+
+# HIST_IGNORE_ALL_DUPS
+# If a new command line being added to the history list duplicates an
+# older one, the older command is removed from the list (even if it is
+# not the previous event).
+setopt hist_ignore_all_dups
+
+# HIST_IGNORE_DUPS (-h)
+# Do not enter command lines into the history list
+# if they are duplicates of the previous event.
+setopt hist_ignore_dups
+
+# HIST_IGNORE_SPACE (-g)
+# Remove command lines from the history list when the first character on
+# the line is a space, or when one of the expanded aliases contains a
+# leading space.
+# Note that the command lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the line.  If you want to make it vanish right away without
+# entering another command, type a space and press return.
+setopt hist_ignore_space
+
+# HIST_NO_FUNCTIONS
+# Remove function definitions from the history list.
+# Note that the function lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the definition.
+setopt hist_no_functions
+
+# HIST_NO_STORE
+# Remove the history (fc -l) command from the history list
+# when invoked.
+# Note that the command lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the line.
+setopt hist_no_store
+
+# HIST_REDUCE_BLANKS
+# Remove superfluous blanks from each command line
+# being added to the history list.
+setopt hist_reduce_blanks
+
+# HIST_SAVE_NO_DUPS
+# When writing out the history file, older commands that duplicate
+# newer ones are omitted.
+setopt hist_save_no_dups
+
+# HIST_VERIFY
+# Whenever the user enters a line with history expansion,
+# don't execute the line directly; instead, perform
+# history expansion and reload the line into the editing buffer.
+setopt hist_verify
+
+# HUP <Z>
+# Send the HUP signal to running jobs when the
+# shell exits.
+setopt NO_hup
+
+# IGNORE_BRACES (-I) <S>
+# Do not perform brace expansion.
+#setopt ignore_braces
+
+# IGNORE_EOF (-7)
+# Do not exit on end-of-file.  Require the use
+# of exit or logout instead.
+# However, ten consecutive EOFs will cause the shell to exit anyway,
+# to avoid the shell hanging if its tty goes away.
+# Also, if this option is set and the Zsh Line Editor is used, widgets
+# implemented by shell functions can be bound to EOF (normally
+# Control-D) without printing the normal warning message.  This works
+# only for normal widgets, not for completion widgets.
+#setopt ignore_eof
+
+# INC_APPEND_HISTORY
+# This options works like APPEND_HISTORY except that new history lines
+# are added to the $HISTFILE incrementally (as soon as they are
+# entered), rather than waiting until the shell is killed.
+# The file is periodically trimmed to the number of lines specified by
+# $SAVEHIST, but can exceed this value between trimmings.
+setopt inc_append_history
+
+# INTERACTIVE (-i, ksh: -i)
+# This is an interactive shell.  This option is set upon initialisation if
+# the standard input is a tty and commands are being read from standard input.
+# (See the discussion of SHIN_STDIN.)
+# This heuristic may be overridden by specifying a state for this option
+# on the command line.
+# The value of this option cannot be changed anywhere other than the command line.
+#setopt NO_interactive
+
+# INTERACTIVE_COMMENTS (-k) <K> <S>
+# Allow comments even in interactive shells.
+setopt interactive_comments
+
+# KSH_ARRAYS <K> <S>
+# Emulate ksh array handling as closely as possible.  If this option
+# is set, array elements are numbered from zero, an array parameter
+# without subscript refers to the first element instead of the whole array,
+# and braces are required to delimit a subscript (`${path[2]}' rather
+# than just `$path[2]').
+#setopt ksh_arrays
+
+# KSH_AUTOLOAD <K> <S>
+# Emulate ksh function autoloading.  This means that when a function is
+# autoloaded, the corresponding file is merely executed, and must define
+# the function itself.  (By default, the function is defined to the contents
+# of the file.  However, the most common ksh-style case - of the file
+# containing only a simple definition of the function - is always handled
+# in the ksh-compatible manner.)
+#setopt ksh_autoload
+
+# KSH_GLOB <K>
+# In pattern matching, the interpretation of parentheses is affected by
+# a preceding `@', `*', `+', `?' or `!'. See section Filename Generation.
+#setopt ksh_glob
+
+# KSH_OPTION_PRINT <K>
+# Alters the way options settings are printed: instead of separate lists of
+# set and unset options, all options are shown, marked `on' if
+# they are in the non-default state, `off' otherwise.
+#setopt ksh_option_print
+
+# KSH_TYPESET <K>
+# Alters the way arguments to the typeset family of commands, including
+# declare, export, float, integer, local and
+# readonly, are processed.  Without this option, zsh will perform normal
+# word splitting after command and parameter expansion in arguments of an
+# assignment; with it, word splitting does not take place in those cases.
+#setopt ksh_typeset
+
+# LIST_AMBIGUOUS <D>
+# This option works when AUTO_LIST or BASH_AUTO_LIST is also
+# set.  If there is an unambiguous prefix to insert on the command line,
+# that is done without a completion list being displayed; in other
+# words, auto-listing behaviour only takes place when nothing would be
+# inserted.  In the case of BASH_AUTO_LIST, this means that the list
+# will be delayed to the third call of the function.
+#setopt NO_list_ambiguous
+
+# LIST_BEEP <D>
+# Beep on an ambiguous completion.  More accurately, this forces the
+# completion widgets to return status 1 on an ambiguous completion, which
+# causes the shell to beep if the option BEEP is also set; this may
+# be modified if completion is called from a user-defined widget.
+setopt NO_list_beep
+
+# LIST_PACKED
+# Try to make the completion list smaller (occupying less lines) by
+# printing the matches in columns with different widths.
+setopt list_packed
+
+# LIST_ROWS_FIRST
+# Lay out the matches in completion lists sorted horizontally, that is,
+# the second match is to the right of the first one, not under it as
+# usual.
+setopt NO_list_rows_first
+
+# LIST_TYPES (-X)
+# When listing files that are possible completions, show the
+# type of each file with a trailing identifying mark.
+setopt list_types
+
+# LOCAL_OPTIONS <K>
+# If this option is set at the point of return from a shell function,
+# all the options (including this one) which were in force upon entry to
+# the function are restored.  Otherwise, only this option and the XTRACE
+# and PRINT_EXIT_VALUE options are restored.  Hence
+# if this is explicitly unset by a shell function the other options in
+# force at the point of return will remain so.
+# A shell function can also guarantee itself a known shell configuration
+# with a formulation like `emulate -L zsh'; the -L activates LOCAL_OPTIONS.
+#setopt local_options
+
+# LOCAL_TRAPS <K>
+# If this option is set when a signal trap is set inside a function, then the
+# previous status of the trap for that signal will be restored when the
+# function exits.  Note that this option must be set prior to altering the
+# trap behaviour in a function; unlike LOCAL_OPTIONS, the value on exit
+# from the function is irrelevant.  However, it does not need to be set
+# before any global trap for that to be correctly restored by a function.
+# For example,
+# unsetopt localtraps
+# trap - INT
+# fn() { setopt localtraps; trap '{}' INT; sleep 3; }
+# will restore normally handling of SIGINT after the function exits.
+#setopt local_traps
+
+# LONG_LIST_JOBS (-R)
+# List jobs in the long format by default.
+setopt long_list_jobs
+
+# MAGIC_EQUAL_SUBST
+# All unquoted arguments of the form `anything=expression'
+# appearing after the command name have filename expansion (that is,
+# where expression has a leading `~' or `=') performed on
+# expression as if it were a parameter assignment.  The argument is
+# not otherwise treated specially; it is passed to the command as a single
+# argument, and not used as an actual parameter assignment.  
+# For example, in echo foo=~/bar:~/rod, both occurrences of ~ would be replaced.
+# Note that this happens anyway with typeset and similar statements.
+# This option respects the setting of the KSH_TYPESET option.
+# In other words, if both options are in effect, arguments looking like
+# assignments will not undergo wordsplitting.
+setopt magic_equal_subst
+
+
+# MAIL_WARNING (-U)
+# Print a warning message if a mail file has been
+# accessed since the shell last checked.
+setopt mail_warning
+
+# MARK_DIRS (-8, ksh: -X)
+# Append a trailing `/' to all directory
+# names resulting from filename generation (globbing).
+#setopt mark_dirs
+
+# MENU_COMPLETE (-Y)
+# On an ambiguous completion, instead of listing possibilities or beeping,
+# insert the first match immediately.  Then when completion is requested
+# again, remove the first match and insert the second match, etc.
+# When there are no more matches, go back to the first one again.
+# reverse-menu-complete may be used to loop through the list
+# in the other direction. This option overrides AUTO_MENU.
+#setopt menu_complete
+
+# MONITOR (-m, ksh: -m)
+# Allow job control.  Set by default in interactive shells.
+#setopt NO_monitor
+
+# MULTIOS <Z>
+# Perform implicit tees or cats when multiple
+# redirections are attempted (see section Redirection).
+#setopt NO_multios
+
+# NOMATCH (+3) <C> <Z>
+# If a pattern for filename generation has no matches,
+# print an error, instead of
+# leaving it unchanged in the argument list.
+# This also applies to file expansion
+# of an initial `~' or `='.
+#setopt NO_nomatch
+
+# NOTIFY (-5, ksh: -b) <Z>
+# Report the status of background jobs immediately, rather than
+# waiting until just before printing a prompt.
+#setopt NO_notify
+
+# NULL_GLOB (-G)
+# If a pattern for filename generation has no matches,
+# delete the pattern from the argument list instead of reporting an error.
+# Overrides NOMATCH.
+setopt null_glob
+
+# NUMERIC_GLOB_SORT
+# If numeric filenames are matched by a filename generation pattern,
+# sort the filenames numerically rather than lexicographically.
+setopt NO_numeric_glob_sort
+
+# OCTAL_ZEROES <S>
+# Interpret any integer constant beginning with a 0 as octal, per IEEE Std
+# 1003.2-1992 (ISO 9945-2:1993).  This is not enabled by default as it
+# causes problems with parsing of, for example, date and time strings with
+# leading zeroes.
+#setopt octal_zeroes
+
+# OVERSTRIKE
+# Start up the line editor in overstrike mode.
+#setopt overstrike
+
+# PATH_DIRS (-Q)
+# Perform a path search even on command names with slashes in them.
+# Thus if `/usr/local/bin' is in the user's path, and he or she types
+# `X11/xinit', the command `/usr/local/bin/X11/xinit' will be executed
+# (assuming it exists).
+# Commands explicitly beginning with `/', `./' or `../'
+# are not subject to the path search.
+# This also applies to the . builtin.
+# Note that subdirectories of the current directory are always searched for
+# executables specified in this form.  This takes place before any search
+# indicated by this option, and regardless of whether `.' or the current
+# directory appear in the command search path.
+setopt NO_path_dirs
+
+
+# POSIX_BUILTINS <K> <S>
+# When this option is set the command builtin can be used to execute
+# shell builtin commands.  Parameter assignments specified before shell
+# functions and special builtins are kept after the command completes unless
+# the special builtin is prefixed with the command builtin.  Special
+# builtins are
+# .,:,break,continue,declare,eval,exit,
+# export,integer,local,readonly,return,set,shift,source,times,trap and unset.
+#setopt posix_builtins
+
+# PRINT_EIGHT_BIT
+# Print eight bit characters literally in completion lists, etc.
+# This option is not necessary if your system correctly returns the
+# printability of eight bit characters (see man page ctype(3)).
+setopt print_eight_bit
+
+# PRINT_EXIT_VALUE (-1)
+# Print the exit value of programs with non-zero exit status.
+#setopt print_exit_value
+
+# PRIVILEGED (-p, ksh: -p)
+# Turn on privileged mode. This is enabled automatically on startup if the
+# effective user (group) ID is not equal to the real user (group) ID.  Turning
+# this option off causes the effective user and group IDs to be set to the
+# real user and group IDs. This option disables sourcing user startup files.
+# If zsh is invoked as `sh' or `ksh' with this option set,
+# /etc/suid_profile is sourced (after /etc/profile on interactive
+# shells). Sourcing ~/.profile is disabled and the contents of the
+# ENV variable is ignored. This option cannot be changed using the
+# -m option of setopt and unsetopt, and changing it inside a
+#  function always changes it globally regardless of the LOCAL_OPTIONS
+# option.
+#setopt privileged
+
+# PROMPT_BANG <K>
+# If set, `!' is treated specially in prompt expansion.
+# See section Prompt Expansion.
+#setopt prompt_bang
+
+# PROMPT_CR (+V) <D>
+# Print a carriage return just before printing
+# a prompt in the line editor.  This is on by default as multi-line editing
+# is only possible if the editor knows where the start of the line appears.
+#setopt NO_prompt_cr
+
+# PROMPT_PERCENT <C> <Z>
+# If set, `%' is treated specially in prompt expansion.
+# See section Prompt Expansion.
+#setopt NO_prompt_percent
+
+# PROMPT_SUBST <K>
+# If set, parameter expansion, command substitution and
+# arithmetic expansion are performed in prompts.
+#setopt prompt_subst
+
+# PUSHD_IGNORE_DUPS
+# Don't push multiple copies of the same directory onto the directory stack.
+setopt pushd_ignore_dups
+
+# PUSHD_MINUS
+# Exchanges the meanings of `+' and `-'
+# when used with a number to specify a directory in the stack.
+setopt pushd_minus
+
+# PUSHD_SILENT (-E)
+# Do not print the directory stack after pushd or popd.
+setopt pushd_silent
+
+# PUSHD_TO_HOME (-D)
+# Have pushd with no arguments act like `pushd $HOME'.
+#setopt NO_pushd_to_home
+
+# RC_EXPAND_PARAM (-P)
+# Array expansions of the form
+# `foo${xx}bar', where the parameter
+# xx is set to (a b c), are substituted with
+# `fooabar foobbar foocbar' instead of the default
+# `fooa b cbar'.
+#setopt rc_expand_param
+
+# RC_QUOTES
+# Allow the character sequence `'{'}' to signify a single quote
+# within singly quoted strings.  Note this does not apply in quoted strings
+# using the format $'...', where a backslashed single quote can
+# be used.
+setopt rc_quotes
+
+# RCS (+f) <D>
+# After /etc/zshenv is sourced on startup, source the
+# .zshenv, /etc/zprofile, .zprofile,
+# /etc/zshrc, .zshrc, /etc/zlogin, .zlogin, and .zlogout
+# files, as described in section Files.
+# If this option is unset, the /etc/zshenv file is still sourced, but any
+# of the others will not be; it can be set at any time to prevent the
+# remaining startup files after the currently executing one from
+# being sourced.
+#setopt NO_rcs
+
+# REC_EXACT (-S)
+# In completion, recognize exact matches even
+# if they are ambiguous.
+#setopt rec_exact
+
+# RESTRICTED (-r)
+# Enables restricted mode.  This option cannot be changed using
+# unsetopt, and setting it inside a function always changes it
+# globally regardless of the LOCAL_OPTIONS option.  See
+# section Restricted Shell.
+#setopt restricted
+
+# RM_STAR_SILENT (-H) <K> <S>
+# Do not query the user before executing `rm *' or `rm path/*'.
+#setopt rm_star_silent
+
+# RM_STAR_WAIT
+# If querying the user before executing `rm *' or `rm path/*',
+# first wait ten seconds and ignore anything typed in that time.
+# This avoids the problem of reflexively answering `yes' to the query
+# when one didn't really mean it.  The wait and query can always be
+# avoided by expanding the `*' in ZLE (with tab).
+#setopt rm_star_wait
+
+# SHARE_HISTORY <K>
+# This option both imports new commands from the history file, and also
+# causes your typed commands to be appended to the history file (the
+# latter is like specifying INC_APPEND_HISTORY).
+# The history lines are also output with timestamps ala
+# EXTENDED_HISTORY (which makes it easier to find the spot where
+# we left off reading the file after it gets re-written).
+setopt share_history
+
+# SH_FILE_EXPANSION <K> <S>
+# Perform filename expansion (e.g., ~ expansion) before
+# parameter expansion, command substitution, arithmetic expansion
+# and brace expansion.
+# If this option is unset, it is performed after
+# brace expansion, so things like `~$USERNAME' and
+# `~{pfalstad,rc}' will work.
+#setopt sh_file_expansion
+
+# SH_GLOB <K> <S>
+# Disables the special meaning of `(', `|', `)'
+# and '<' for globbing the result of parameter and command substitutions,
+# and in some other places where
+# the shell accepts patterns.  This option is set by default if zsh is
+# invoked as sh or ksh.
+#setopt sh_glob
+
+# SHIN_STDIN (-s, ksh: -s)
+# Commands are being read from the standard input.
+# Commands are read from standard input if no command is specified with
+# -c and no file of commands is specified.  If SHIN_STDIN
+# is set explicitly on the command line,
+# any argument that would otherwise have been
+# taken as a file to run will instead be treated as a normal positional
+# parameter.
+# Note that setting or unsetting this option on the command line does not
+# necessarily affect the state the option will have while the shell is
+# running - that is purely an indicator of whether on not commands are
+# actually being read from standard input. The value of this option
+# cannot be changed anywhere other 
+# than the command line.
+#setopt shin_stdin
+
+# SH_NULLCMD <K> <S>
+# Do not use the values of NULLCMD and READNULLCMD
+# when doing redirections, use `:' instead (see section Redirection).
+#setopt sh_nullcmd
+
+# SH_OPTION_LETTERS <K> <S>
+# If this option is set the shell tries to interpret single letter options
+# (which are used with set and setopt) like ksh does.
+# This also affects the value of the - special parameter.
+#setopt sh_option_letters
+
+# SHORT_LOOPS <C> <Z>
+# Allow the short forms of for, select,
+# if, and function constructs.
+#setopt NO_short_loops
+
+# SH_WORD_SPLIT (-y) <K> <S>
+# Causes field splitting to be performed on unquoted parameter expansions.
+# Note that this option has nothing to do with word splitting.
+# (See section Parameter Expansion.)
+#setopt sh_word_split
+
+# SINGLE_COMMAND (-t, ksh: -t)
+# If the shell is reading from standard input, it exits after a single command
+# has been executed.  This also makes the shell non-interactive, unless the
+# INTERACTIVE option is explicitly set on the command line.
+# The value of this option cannot be changed anywhere other than the command line.
+#setopt single_command
+
+# SINGLE_LINE_ZLE (-M) <K>
+# Use single-line command line editing instead of multi-line.
+#setopt single_line_zle
+
+# SUN_KEYBOARD_HACK (-L)
+# If a line ends with a backquote, and there are an odd number
+# of backquotes on the line, ignore the trailing backquote.
+# This is useful on some keyboards where the return key is
+# too small, and the backquote key lies annoyingly close to it.
+#setopt sun_keyboard_hack
+
+# UNSET (+u, ksh: +u) <K> <S> <Z>
+# Treat unset parameters as if they were empty when substituting.
+# Otherwise they are treated as an error.
+#setopt NO_unset
+
+# VERBOSE (-v, ksh: -v)
+# Print shell input lines as they are read.
+#setopt verbose
+
+# XTRACE (-x, ksh: -x)
+# Print commands and their arguments as they are executed.
+#setopt xtrace
+
+# ZLE (-Z)
+# Use the zsh line editor.  Set by default in interactive shells connected to
+# a terminal.
+#setopt NO_zle
+
diff --git a/zsh_people/stchaz/mouse.zsh b/zsh_people/stchaz/mouse.zsh
new file mode 100644 (file)
index 0000000..aad5d20
--- /dev/null
@@ -0,0 +1,637 @@
+# zsh mouse (and X clipboard) support v1.4
+#
+# QUICKSTART: jump to "how to use" below.
+#
+# currently supported:
+#  - VT200 mouse tracking (at least xterm, gnome-terminal, rxvt)
+#  - GPM on Linux little-endian systems such as i386 (at least)
+#  - X clipboard handling if xsel(1) or xclip(1) is available (see
+#    note below).
+# 
+# addionnaly, if you are using xterm and don't want to use the mouse
+# tracking system, you can map some button click events so that they
+# send \E[M<bt>^X[<y><x> where <bt> is the character 0x20 + (0, 1, 2)
+# <x>,<y> are the coordinate of the mouse pointer. This is usually done
+# by adding those lines to your resource file for XTerm (~/.Xdefaults
+# for example):
+#
+# XTerm.VT100.translations:             #override\
+#        Mod4 <Btn1Up>: ignore()\n\
+#        Mod4 <Btn2Up>: ignore()\n\
+#        Mod4 <Btn3Up>: ignore()\n\
+#        Mod4 <Btn1Down>: string(0x1b) string("[M ") dired-button()\n\
+#        Mod4 <Btn2Down>: string(0x1b) string("[M!") dired-button()\n\
+#        Mod4 <Btn3Down>: string(0x1b) string("[M") string(0x22) dired-button()\n\
+#        Mod4 <Btn4Down>,<Btn4Up>: string(0x10)\n\
+#        Mod4 <Btn5Down>,<Btn5Up>: string(0xe)
+#
+# That maps the button click events with the modifier 4 (when you hold
+# the <Super> Key [possibly Windows keys] under recent versions of
+# XFree86). The last two lines are for an easy support of the mouse
+# wheel (map the mouse wheel events to ^N and ^P)
+#
+# Remember that even if you use the mouse tracking, you can still have
+# access to the normal xterm selection mechanism by holding the <Shift>
+# key.
+#
+# Note about X selection.
+#    By default, xterm uses the PRIMARY selection instead of CLIPBOARD
+#    for copy-paste. You may prefer changing that if you want
+#    <Shift-Insert> to insert the CLIPBOARD and a better communication
+#    between xterm and clipboard based applications like mozilla.
+#    A way to do that is to add those resources:
+#    XTerm.VT100.translations:             #override\
+#      Shift ~Ctrl <KeyPress> Insert:insert-selection(\
+#        CLIPBOARD, CUT_BUFFER0, PRIMARY) \n\
+#      Shift Ctrl <KeyPress> Insert:insert-selection(\
+#        PRIMARY, CUT_BUFFER0, CLIPBOARD) \n\
+#      ~Ctrl ~Meta<BtnUp>: select-end(PRIMARY,CUT_BUFFER0,CLIPBOARD)
+#
+#    and to run a clipboard manager application such as xclipboard
+#    (whose invocation you may want to put in your X session startup
+#    file). (<Shift-Ctrl-Insert> inserts the PRIMARY selection as does
+#    the middle mouse button). (without xclipboard, the clipboard
+#    content is lost whenever the text is no more selected).
+#
+# How to use:
+#
+# add to your ~/.zshrc:
+#  . /path/to/this-file
+#  zle-toggle-mouse
+#
+# and if you want to be able to toggle on/off the mouse support:
+# bindkey -M emacs '\em' zle-toggle-mouse
+# # <Esc>m to toggle the mouse in emacs mode
+# bindkey -M vicmd M zle-toggle-mouse
+# # M for vi (cmd) mode
+#
+# clicking on the button 1:
+#   moves the cursor to the pointed location
+# clicking on the button 2:
+#   inserts zsh cutbuffer at pointed location. If $DISPLAY is set and
+#   either the xsel(1) or xclip(1) command is available, then it's the
+#   content of the X clipboard instead that is pasted (and stored into
+#   zsh cutbuffer).
+# clicking on the button 3:
+#   stores the text between the cursor and the pointed localion
+#   into zsh cutbuffer. Additionaly, if $DISPLAY is set and either the
+#   xclip(1) or xsel(1) command is available, that text is put on the
+#   clipboard.
+#
+# If xsel or xlip is available, and $DISPLAY is set (and you're in a
+# xterm-like terminal (even though that feature is terminal
+# independant)), all the keys (actually widgets) that deal with zsh
+# cut buffer have been modified so that the X CLIPBOARD selection is
+# used. So <Ctrl-U>, <Ctrl-W>... will put the killed region on the X
+# clipboard. vi mode "p" or emacs "<Ctrl-Y>" will paste the X CLIPBOARD
+# selection. Only the keys that delete one character are not affected
+# (<Del>, <Backspace>, <x>). Additionnaly, the primary selection (what
+# is mouse highlighted and that you paste with the middle button) is put
+# on the clipboard (and so made available to zsh) when you press
+# <Meta-Insert> or <Ctrl-Insert> or <Ctrl-X>X (emacs mode) or X (vicmd
+# mode). (note that your terminal may already do that by default, also
+# note that your terminal may paste the primary selection and not the
+# clipboard on <Shift-Insert>, you may change that if you find it
+# confusing (see above))
+#
+# for GPM, you may change the list of modifiers (Shift, Alt...) that
+# need to be on for the event to be accepted (see below).
+#
+# kterm: same as for xterm, but replace XTerm with KTerm in the resource
+# customization
+# hanterm: same as for xterm, but replace XTerm with Hanterm in the
+# resource customization.
+# Eterm: the paste(clipboard) actions don't seem to work, future
+# versions of mouse.zsh may include support for X cutbuffers or revert
+# back to PRIMARY selection to provide a better support for Eterm.
+# gnome-terminal: you may want to bind some keys to Edit->{copy,paste}
+# multi-gnome-terminal: selection looks mostly bogus to me
+# rxvt,aterm,[ckgt]aterm,mlterm,pterm: no support for clipboard.
+# GNUstep terminal: no mouse support but support for clipboard via menu
+# KDE x-terminal-emulator: works OK except mouse button3 that is mapped
+# to the context menu. Use Ctrl-Insert to put the selection on the
+# clipboard.
+# dtterm: no mouse support but the selection works OK.
+# 
+# bugs:
+#   - the GPM support was not much tested (was tested with gpm 1.19.6 on
+#     a linux 2.6.9, AMD Athlon)
+#   - mouse positionning doesn't work properly in "vared" if a prompt
+#     was provided (vared -p <prompt>)
+#
+# Todo:
+#   - write proper documentation
+#   - customization through zstyles.
+#
+# Author:
+#   Stephane Chazelas <Stephane_Chazelas@yahoo.fr>
+#
+# Changes:
+#  v1.4 2005-03-01: <Ctrl-W><Ctrl-W> puts both words on the cut buffer
+#       support for CUT_BUFFER0 via xprop.
+#  v1.3 2005-02-28: support for more X terminals, tidy-up, separate
+#       mouse support from clipboard support
+#  v1.2 2005-02-24: support for vi-mode. X clipboard mirroring zsh cut buffer
+#       when possible. Bug fixes.
+#  v1.1 2005-02-20: support for X selection through xsel or xclip
+#  v1.0 2004-11-18: initial release
+
+# UTILITY FUNCTIONS
+
+zle-error() {
+  local IFS=" "
+  if [[ -n $WIDGET ]]; then
+    # error message if zle active
+    zle -M -- "$*"
+  else
+    # on stderr otherwise
+    print -ru2 -- "$*"
+  fi
+}
+
+# SELECTION/CLIPBOARD FUNCTIONS
+
+set-x-clipboard() { return 0; }
+get-x-clipboard() { return 1; }
+
+if
+  # find a command to read from/write to the X selections
+  if whence xsel > /dev/null 2>&1; then
+    x_selection_tool="xsel -p"
+    x_clipboard_tool="xsel -b"
+  elif whence xclip > /dev/null 2>&1; then
+    x_selection_tool="xclip -sel p"
+    x_clipboard_tool="xclip -sel c"
+  fi
+then
+  eval '
+    get-x-clipboard() {
+      (( $+DISPLAY )) || return 1
+      local r
+      r=$('$x_clipboard_tool' -o < /dev/null 2> /dev/null && print .)
+      r=${r%.}
+      if [[ -n $r && $r != $CUTBUFFER ]]; then
+       killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
+       CUTBUFFER=$r
+      fi
+    }
+    set-x-clipboard() {
+      (( ! $+DISPLAY )) ||
+       print -rn -- "$1" | '$x_clipboard_tool' -i 2> /dev/null
+    }
+    push-x-cut_buffer0() {
+      # retrieve the CUT_BUFFER0 property via xprop and store it on the
+      # CLIPBOARD selection
+      (( $+DISPLAY )) || return 1
+      local r
+      r=$(xprop -root -notype 8s \$0 CUT_BUFFER0 2> /dev/null) || return 1
+      r=${r#CUT_BUFFER0\"}
+      r=${r%\"}
+      r=${r//\'\''/\\\'\''}
+      eval print -rn -- \$\'\''$r\'\'' | '$x_clipboard_tool' -i 2> /dev/null
+    }
+    push-x-selection() {
+      # puts the PRIMARY selection onto the CLIPBOARD
+      # failing that call push-x-cut_buffer0
+      (( $+DISPLAY )) || return 1
+      local r
+      if r=$('$x_selection_tool' -o < /dev/null 2> /dev/null && print .) &&
+       r=${r%?} &&
+       [[ -n $r ]]; then
+       print -rn -- $r | '$x_clipboard_tool' -i 2> /dev/null
+      else
+       push-x-cut_buffer0
+      fi
+    }
+  '
+  # redefine the copying widgets so that they update the clipboard.
+  for w in copy-region-as-kill vi-delete vi-yank vi-change vi-change-whole-line vi-change-eol; do
+    eval '
+      '$w'() {
+       zle .'$w'
+       set-x-clipboard $CUTBUFFER
+      }
+      zle -N '$w
+  done
+
+  # that's a bit more complicated for those ones as we have to
+  # re-implement the special behavior that does that if you call several
+  # of those widgets in sequence, the text on the clipboard is the
+  # whole text cut, not just the text cut by the latest widget.
+  for w in ${widgets[(I).*kill-*]}; do
+    if [[ $w = *backward* ]]; then
+      e='$CUTBUFFER$scb'
+    else
+      e='$scb$CUTBUFFER'
+    fi
+    eval '
+      '${w#.}'() {
+       local scb=$CUTBUFFER
+       local slw=$LASTWIDGET
+       local sbl=${#BUFFER}
+
+       zle '$w'
+       (( $sbl == $#BUFFER )) && return
+       if [[ $slw = (.|)(backward-|)kill-* ]]; then
+         killring=("${(@)killring[2,-1]}")
+         CUTBUFFER='$e'
+       fi
+       set-x-clipboard $CUTBUFFER
+      }
+      zle -N '${w#.}
+  done
+  
+  zle -N push-x-selection
+  zle -N push-x-cut_buffer0
+
+  # put the current selection on the clipboard upon <Ctrl-Insert>
+  # <Meta-Insert> <Ctrl-X>X or X:
+  if (( $+terminfo[kSI] )); then
+    bindkey -M emacs "$terminfo[kSI]" push-x-selection
+    bindkey -M viins "$terminfo[kSI]" push-x-selection
+    bindkey -M vicmd "$terminfo[kSI]" push-x-selection
+  fi
+  if (( $+terminfo[kich1] )); then
+    # <Meta-Insert> according to terminfo
+    bindkey -M emacs "\e$terminfo[kich1]" push-x-selection
+    bindkey -M viins "\e$terminfo[kich1]" push-x-selection
+    bindkey -M vicmd "\e$terminfo[kich1]" push-x-selection
+  fi
+  # hardcode ^[[2;3~ which is sent by <Meta-Insert> on xterm
+  bindkey -M emacs '\e[2;3~' push-x-selection
+  bindkey -M viins '\e[2;3~' push-x-selection
+  bindkey -M vicmd '\e[2;3~' push-x-selection
+  # hardcode ^[^[[2;5~ which is sent by <Meta-Insert> on some terminals
+  bindkey -M emacs '\e\e[2~' push-x-selection
+  bindkey -M viins '\e\e[2~' push-x-selection
+  bindkey -M vicmd '\e\e[2~' push-x-selection
+
+  # hardcode ^[[2;5~ which is sent by <Ctrl-Insert> on xterm
+  # some terminals have already such a feature builtin (gnome/KDE
+  # terminals), others have no distinguishable character sequence sent
+  # by <Ctrl-Insert>
+  bindkey -M emacs '\e[2;5~' push-x-selection
+  bindkey -M viins '\e[2;5~' push-x-selection
+  bindkey -M vicmd '\e[2;5~' push-x-selection
+
+  # for terminal without an insert key:
+  bindkey -M vicmd X push-x-selection
+  bindkey -M emacs '^XX' push-x-selection
+
+  # the convoluted stuff below is to work around two problems:
+  #  1- we can't just redefine the widgets as then yank-pop would
+  #  stop working
+  #  2- we can't just rebind the keys to <Ctrl-Insert><other-key> as
+  #  then we'll loose the numeric argument
+  propagate-numeric() {
+    # next key (\e[0-dum) is mapped to <Ctrl-Insert>, plus the
+    # targeted widget with NUMERIC restored.
+    case $KEYMAP in
+      vicmd)
+       bindkey -M vicmd -s '\e[0-dum' $'\e[1-dum'$NUMERIC${KEYS/x/};;
+      *)
+       bindkey -M $KEYMAP -s '\e[0-dum' $'\e[1-dum'${NUMERIC//(#m)?/$'\e'$MATCH}${KEYS/x/};;
+    esac
+  }
+  zle -N get-x-clipboard
+  zle -N propagate-numeric
+  bindkey -M emacs '\e[1-dum' get-x-clipboard
+  bindkey -M vicmd '\e[1-dum' get-x-clipboard
+  bindkey -M emacs '\e[2-dum' yank
+  bindkey -M emacs '\e[2-xdum' propagate-numeric
+  bindkey -M emacs -s '^Y' $'\e[2-xdum\e[0-dum'
+  bindkey -M vicmd '\e[3-dum' vi-put-before
+  bindkey -M vicmd '\e[3-xdum' propagate-numeric
+  bindkey -M vicmd -s 'P' $'\e[3-xdum\e[0-dum'
+  bindkey -M vicmd '\e[4-dum' vi-put-after
+  bindkey -M vicmd '\e[4-xdum' propagate-numeric
+  bindkey -M vicmd -s 'p' $'\e[4-xdum\e[0-dum'
+fi
+
+
+# MOUSE FUNCTIONS
+
+zle-update-mouse-driver() {
+  # default is no mouse support
+  [[ -n $ZLE_USE_MOUSE ]] && zle-error 'Sorry: mouse not supported'
+  ZLE_USE_MOUSE=
+}
+
+
+if [[ $TERM = *[xeEk]term* ||
+      $TERM = *mlterm* ||
+      $TERM = *rxvt* ||
+      $TERM = *screen* ||
+      ($TERM = *linux* && -S /dev/gpmctl)
+   ]]; then
+
+  set-status() { return $1; }
+
+  handle-mouse-event() {
+    emulate -L zsh
+    local bt=$1
+
+    case $bt in
+      3)
+       return 0;; # Process on press, discard release
+       # mlterm sends 3 on mouse-wheel-up but also on every button
+       # release, so it's unusable
+      64)
+       # eterm, rxvt, gnome/KDE terminal mouse wheel
+       zle up-line-or-history
+       return;;
+      4|65)
+       # mlterm or eterm, rxvt, gnome/KDE terminal mouse wheel
+       zle down-line-or-history
+       return;;
+    esac
+    local mx=$2 my=$3 last_status=$4
+    local cx cy i
+    setopt extendedglob
+
+    print -n '\e[6n' # query cursor position
+
+    local match mbegin mend buf=
+
+    while read -k i && buf+=$i && [[ $buf != *\[([0-9]##)\;[0-9]##R ]]; do :; done
+    # read response from terminal.
+    # note that we may also get a mouse tracking btn-release event,
+    # which would then be discarded.
+
+    [[ $buf = (#b)*\[([0-9]##)\;[0-9]##R ]] || return
+    cy=$match[1] # we don't need cx
+
+    local cur_prompt
+
+    # trying to guess the current prompt
+    case $CONTEXT in
+      (vared)
+        if [[ $0 = zcalc ]]; then
+         cur_prompt=${ZCALCPROMPT-'%1v> '}
+         setopt nopromptsubst nopromptbang promptpercent
+         # (ZCALCPROMPT is expanded with (%))
+       fi;;
+       # if vared is passed a prompt, we're lost
+      (select)
+        cur_prompt=$PS3;;
+      (cont)
+       cur_prompt=$PS2;;
+      (start)
+       cur_prompt=$PS1;;
+    esac
+
+    # if promptsubst, then we need first to do the expansions (to
+    # be able to remove the visual effects) and disable further
+    # expansions
+    [[ -o promptsubst ]] && cur_prompt=${${(e)cur_prompt}//(#b)([\\\$\`])/\\$match}
+
+    # restore the exit status in case $PS<n> relies on it
+    set-status $last_status
+
+    # remove the visual effects and do the prompt expansion
+    cur_prompt=${(S%%)cur_prompt//(#b)(%([BSUbsu]|{*%})|(%[^BSUbsu{}]))/$match[3]}
+
+    # we're now looping over the whole editing buffer (plus the last
+    # line of the prompt) to compute the (x,y) position of each char. We
+    # store the characters i for which x(i) <= mx < x(i+1) for every
+    # value of y in the pos array. We also get the Y(CURSOR), so that at
+    # the end, we're able to say which pos element is the right one
+    
+    local -a pos # array holding the possible positions of
+                # the mouse pointer
+    local -i n x=0 y=1 cursor=$((${#cur_prompt}+$CURSOR+1))
+    local Y
+
+    buf=$cur_prompt$BUFFER
+    for ((i=1; i<=$#buf; i++)); do
+      (( i == cursor )) && Y=$y
+      n=0
+      case $buf[i] in
+       ($'\n') # newline
+         : ${pos[y]=$i}
+         (( y++, x=0 ));;
+       ($'\t') # tab advance til next tab stop
+         (( x = x/8*8+8 ));;
+       ([$'\0'-$'\037'$'\200'-$'\237'])
+         # characters like ^M
+         n=2;;
+       (*)
+         n=1;;
+      esac
+      while
+       (( x >= mx )) && : ${pos[y]=$i}
+       (( x >= COLUMNS )) && (( x=0, y++ ))
+       (( n > 0 ))
+      do
+       (( x++, n-- ))
+      done
+    done
+    : ${pos[y]=$i} ${Y:=$y}
+
+    local mouse_CURSOR
+    if ((my + Y - cy > y)); then
+      mouse_CURSOR=$#BUFFER
+    elif ((my + Y - cy < 1)); then
+      mouse_CURSOR=0
+    else
+      mouse_CURSOR=$(($pos[my + Y - cy] - ${#cur_prompt} - 1))
+    fi
+
+    case $bt in
+      (0)
+       # Button 1.  Move cursor.
+       CURSOR=$mouse_CURSOR
+      ;;
+
+      (1)
+       # Button 2.  Insert selection at mouse cursor postion.
+       get-x-clipboard
+       BUFFER=$BUFFER[1,mouse_CURSOR]$CUTBUFFER$BUFFER[mouse_CURSOR+1,-1]
+       (( CURSOR = $mouse_CURSOR + $#CUTBUFFER ))
+      ;;
+
+      (2)
+       # Button 3.  Copy from cursor to mouse to cutbuffer.
+       killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
+       if (( mouse_CURSOR < CURSOR )); then
+         CUTBUFFER=$BUFFER[mouse_CURSOR+1,CURSOR+1]
+       else
+         CUTBUFFER=$BUFFER[CURSOR+1,mouse_CURSOR+1]
+       fi
+       set-x-clipboard $CUTBUFFER
+      ;;
+    esac
+  }
+
+  handle-xterm-mouse-event() {
+    local last_status=$?
+    emulate -L zsh
+    local bt mx my
+    
+    # either xterm mouse tracking or binded xterm event
+    # read the event from the terminal
+    read -k bt # mouse button, x, y reported after \e[M
+    bt=$((#bt & 0x47))
+    read -k mx
+    read -k my
+    if [[ $mx = $'\030' ]]; then
+      # assume event is \E[M<btn>dired-button()(^X\EG<x><y>)
+      read -k mx
+      read -k mx
+      read -k my
+      (( my = #my - 31 ))
+      (( mx = #mx - 31 ))
+    else
+      # that's a VT200 mouse tracking event
+      (( my = #my - 32 ))
+      (( mx = #mx - 32 ))
+    fi
+    handle-mouse-event $bt $mx $my $last_status
+  }
+
+  zle -N handle-xterm-mouse-event
+
+  if [[ $TERM = *linux* && -S /dev/gpmctl ]]; then
+    # GPM mouse support
+    if zmodload -i zsh/net/socket; then
+
+      zle-update-mouse-driver() {
+       if [[ -n $ZLE_USE_MOUSE ]]; then
+         if (( ! $+ZSH_GPM_FD )); then
+           if zsocket -d 9 /dev/gpmctl; then
+             ZSH_GPM_FD=$REPLY
+             # gpm initialisation:
+             # request single click events with given modifiers
+             local -A modifiers
+             modifiers=(
+               none        0
+               shift       1
+               altgr       2
+               ctrl        4
+               alt         8
+               left-shift  16
+               right-shift 32
+               left-ctrl   64
+               right-ctrl  128
+               caps-shift  256
+             )
+             local min max
+             # modifiers that need to be on
+             min=$((modifiers[none]))
+             # modifiers that may be on
+             max=$min
+
+             # send 16 bytes:
+             #   1-2: LE short: requested events (btn down = 0x0004)
+             #   3-4: LE short: event passed through (~GPM_HARD=0xFEFF)
+             #   5-6: LE short: min modifiers
+             #   7-8: LE short: max modifiers
+             #  9-12: LE int: pid
+             # 13-16: LE int: virtual console number
+
+             print -u$ZSH_GPM_FD -n "\4\0\377\376\\$(([##8]min&255
+             ))\\$(([##8]min>>8))\\$(([##8]max&255))\\$(([##8]max>>8
+             ))\\$(([##8]$$&255))\\$(([##8]$$>>8&255))\\$((
+             [##8]$$>>16&255))\\$(( [##8]$$>>24))\\$((
+             [##8]${TTY#/dev/tty}))\0\0\0"
+             zle -F $ZSH_GPM_FD handle-gpm-mouse-event
+            else
+             zle-error 'Error: unable to connect to GPM'
+             ZLE_USE_MOUSE=
+           fi
+         fi
+       else
+         # ZLE_USE_MOUSE disabled, close GPM connection
+         if (( $+ZSH_GPM_FD )); then
+           eval "exec $ZSH_GPM_FD>&-"
+           # what if $ZSH_GPM_FD > 9 ?
+           zle -F $ZSH_GPM_FD # remove the handler
+           unset ZSH_GPM_FD
+         fi
+       fi
+      }
+
+      handle-gpm-mouse-event() {
+       local last_status=$?
+       local event i
+       if read -u$1 -k28 event; then
+         local buttons x y
+         (( buttons = ##$event[1] ))
+         (( x = ##$event[9] + ##$event[10] << 8 ))
+         (( y = ##$event[11] + ##$event[12] << 8 ))
+         handle-mouse-event $(( (5 - (buttons & -buttons)) / 2 )) $x $y $last_status
+         zle -R # redraw buffer
+       else
+         zle -M 'Error: connection to GPM lost'
+         ZLE_USE_MOUSE=
+         zle-update-mouse-driver
+       fi
+      }
+    fi 
+  else
+    # xterm-like mouse support
+    zmodload -i zsh/parameter # needed for $functions
+
+    zle-update-mouse-driver() {
+      if [[ -n $WIDGET ]]; then
+       if [[ -n $ZLE_USE_MOUSE ]]; then
+         print -n '\e[?1000h'
+       else
+         print -n '\e[?1000l'
+       fi
+      fi
+    }
+
+    if [[ $functions[precmd] != *ZLE_USE_MOUSE* ]]; then
+      functions[precmd]+='
+      [[ -n $ZLE_USE_MOUSE ]] && print -n '\''\e[?1000h'\'
+    fi
+    if [[ $functions[preexec] != *ZLE_USE_MOUSE* ]]; then
+      functions[preexec]+='
+      [[ -n $ZLE_USE_MOUSE ]] && print -n '\''\e[?1000l'\'
+    fi
+
+    bindkey -M emacs '\e[M' handle-xterm-mouse-event
+    bindkey -M viins '\e[M' handle-xterm-mouse-event
+    bindkey -M vicmd '\e[M' handle-xterm-mouse-event
+
+    if [[ $TERM = *Eterm* ]]; then
+      # Eterm sends \e[5Mxxxxx on drag events, be want to discard them
+      discard-mouse-drag() {
+        local junk
+        read -k5 junk
+      }
+      zle -N discard-mouse-drag
+      bindkey -M emacs '\e[5M' discard-mouse-drag
+      bindkey -M viins '\e[5M' discard-mouse-drag
+      bindkey -M vicmd '\e[5M' discard-mouse-drag
+    fi
+  fi
+
+fi
+
+zle-toggle-mouse() {
+  # If no prefix, toggle state.
+  # If positive prefix, turn on.
+  # If zero or negative prefix, turn off.
+
+  # Allow this to be used as a normal function, too.
+  if [[ -n $1 ]]; then
+    local PREFIX=$1
+  fi
+  if (( $+PREFIX )); then
+    if (( PREFIX > 0 )); then
+      ZLE_USE_MOUSE=1
+    else
+      ZLE_USE_MOUSE=
+    fi
+  else
+    if [[ -n $ZLE_USE_MOUSE ]]; then
+      ZLE_USE_MOUSE=
+    else
+      ZLE_USE_MOUSE=1
+    fi
+  fi
+  zle-update-mouse-driver
+}
+zle -N zle-toggle-mouse
diff --git a/zsh_people/strcat/zlogin b/zsh_people/strcat/zlogin
new file mode 100644 (file)
index 0000000..7cfc8bd
--- /dev/null
@@ -0,0 +1,37 @@
+# $Id: .zlogin,v 1.1 2004/06/10 09:59:46 dope Exp dope $
+#
+# .zlogin is sourced in login shells.  It should contain commands that
+# should be executed only in login shells.  It should be used to run a
+# series of external commands (fortune, msgs, etc).
+#
+# Check incoming ftp files.
+if [[ $(uname -n) = painless ]]
+then
+       INCOMING=/home/ftp/pub/incoming
+       if [[ -d ${INCOMING} ]]
+       then
+               pushd ${INCOMING}
+               newfiles=( )
+               [[ -a .timestamp ]] || touch .timestamp
+               setopt nullglob
+               for file in ^.timestamp
+                       [[ $file -nt .timestamp ]] && newfiles=( $newfiles $file )
+                       if [[ -n $newfiles ]]
+                       then
+                               echo "New files in ${INCOMING}:"
+                               echo "  "$newfiles
+                               echo ""
+                       fi
+                       touch .timestamp
+                       popd
+               fi
+       fi
+
+# Check for TODO-entry
+if [[ -e ~/TODO ]]
+then
+       echo "Note: New TODO - entry!"
+       echo
+       cat ~/TODO
+       echo
+fi
diff --git a/zsh_people/strcat/zlogout b/zsh_people/strcat/zlogout
new file mode 100644 (file)
index 0000000..77e049e
--- /dev/null
@@ -0,0 +1,30 @@
+# $Id: .zlogout,v 1.1 2004/06/10 10:01:29 dope Exp dope $
+# 
+# .zlogin is sourced in login shells.  It should contain commands that
+# should be executed only in login shells.  It should be used to run a
+# series of external commands (fortune, msgs, etc).
+
+FORTUNE="/usr/games/fortune"
+FORTUNE_OPTS="-s"
+COWSAY="/usr/local/bin/cowsay"
+
+# Only reset and clear if it's at the physical console.
+if [ ! $DISPLAY ]; then
+       if [ ! $SSH_CLIENT ]; then
+               reset
+       fi
+fi
+
+# Clear the screen so next person can't see anything from the session.
+clear 
+
+# Only for a normal user in the console, make the cow say a fortune *g*
+if [ "$UID" != 0 ] && [ ! "${DISPLAY}" ]; then
+       if [ -x ${COWSAY} ]; then
+               if [ -x ${FORTUNE} ]; then
+                       ${FORTUNE} ${FORTUNE_OPTS} | ${COWSAY} -nW80; echo
+               fi
+       elif [ -x ${FORTUNE} ]; then
+               ${FORTUNE} ${FORTUNE_OPTS}; echo
+       fi
+fi
diff --git a/zsh_people/strcat/zshaliases b/zsh_people/strcat/zshaliases
new file mode 100644 (file)
index 0000000..ccb178f
--- /dev/null
@@ -0,0 +1,350 @@
+# *I* *HATE* *OpenGL*!!!11!
+   alias gl="gcc  -L/usr/X11R6/lib -L/usr/X11/lib -lglut  -lGL -lGLU -lXi -lXmu -lXt -lXext -lSM -lm -lX11"
+   alias ogl="g++  -L/usr/X11R6/lib -lglut -lGLU -lGL  -lXi -lXmu"
+# needed for some sources from CVS
+   alias autofuck='aclocal && autoheader && libtoolize --copy --automake && automake --copy --add-missing && autoconf'
+# See <http://strcat.neessen.net/hacks/rand-useragent.pl> ;-)
+   if [ -x ~/bin/rand-useragent.pl ] && [ -x $(which w3m) ]; then
+           alias w3m='w3m -o user_agent="`rand-useragent.pl`" $1'
+   fi
+# Edit my sigquotes ;-)
+   alias esig="$EDITOR ~/.sigs/own-stuff"
+# I like this player ;-)
+  if [ -x $(which mp3blaster) ]; then
+     alias mp3blaster="mp3blaster -a .xmms/xmms.m3u -f .now_playing"
+  fi
+# Quick edit often used setup file
+   alias z='$EDITOR ~/.zshrc'
+   alias s='$EDITOR ~/.slrnrc'
+   alias v='$EDITOR ~/.vimrc'
+# history mechanism
+   alias h='history'
+#  VIM related aliases ;o) btw. ``$SHELL:t'' is a modifiers from the Z
+#  Shell. In other shells you can use ``${SHELL##*/}'' instead. Valid
+#  Modifiers can be found in ``info -f zsh -n Modifiers''.
+   alias :w='echo "Dude.. thats $SHELL:t and *not* VI(M)!"'
+   alias :q='echo "Dude.. thats $SHELL:t and *not* VI(M)!"'
+   alias :wq='echo "Dude.. thats $SHELL:t and *not* VI(M)!"'
+   alias vi="${EDITOR}"
+   alias view="${EDITOR} -R"
+   alias ex="${EDITOR} -e"
+   alias pltags="${VIMRUNTIME}/tools/pltags.pl"
+
+# highlight the current day in ``cal''
+   alias _cal='var=$(cal); echo "${var/$(date +%-d)/$(echo -e "\033[1;31m$(date +%-d)\033[0m")}"'
+
+# quick&dirty mirror
+  alias mirror="noglob wget --mirror --no-parent --convert-links --recursive --timestamping --continue$1"
+
+# access the database of ${HOME} (Note: This is for *OpenBSD*! Not for
+# Linux!
+  if [ "${OS}" = openbsd ]; then
+     alias hupdatedb="updatedb --searchpaths="$HOME" --prunepaths="/" --fcodes=$HOME/.locatedb"
+     alias hlocate="locate -d ${HOME}/.locatedb"
+  else
+     # That's for Linux (strictly speaking slocate under Slackware).
+     # See <http://www.geekreview.org/slocate/> for details.
+     if [ "${OS}" = linux-gnu ] && [ -x $(which slocate) ]; then
+       alias hupdatedb="updatedb -U ${HOME} --output=${HOME}/.locatedb -e /home/dope/tmp,/home/dope/MuttMail,/home/dope/.cpan"
+       alias hlocate="slocate --database=${HOME}/.locatedb $1"
+  else
+     # That's for GNU updatedb
+     alias hupdatedb="updatedb --localpaths="$HOME" --output=$HOME/.locatedb --prunefs="/""
+     alias hlocate="locate -d ${HOME}/.locatedb"
+     fi
+  fi
+
+# some stuff for gentoo (i compelled to use it sometimes *narf*)
+  if [ -e "/etc/gentoo-release" ]; then
+     alias emerge="sudo emerge"
+     alias eupdatedb="sudo eupdatedb"
+     alias etc-update="sudo /usr/sbin/etc-update"
+     alias env-update="sudo /usr/sbin/env-update"
+  fi
+# See <http://www.swaret.org/> and <http://software.jaos.org> for details
+  if [ -e "/etc/slackware-version" ]; then
+     alias slapt-get="sudo slapt-get"  
+     alias swaret="sudo swaret"
+     alias installpkg="sudo /sbin/installpkg"
+     alias upgradepkg="sudo /sbin/upgradepkg"
+     alias removepkg="sudo /sbin/removepkg"
+     alias pkgtool="sudo /sbin/pkgtool"
+     alias makepkg="sudo /sbin/makepkg"
+  fi
+
+# settings for NetBSD
+  if [[ "${OSTYPE}" == netbsd* ]]; then
+     export CVSROOT=":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot"
+     alias upsrc="cvs -d $CVSROOT update -PAd src"
+     alias uppkgsrc="cvs -d $CVSROOT update -PAd pkgsrc"
+  fi
+# setting for OpenBSD
+  if [[ "{$OSTYPE}" == openbsd* ]]; then
+     export CVSROOT='anoncvs@anoncvs1.usa.openbsd.org:/cvs'
+     alias pkg_add='sudo pkg_add'
+     alias pkg_delete='sudo pkg_delete'
+     alias upsrc="cd /usr/src && cvs -q up -Pd"
+     alias upports="cd /usr && cvs -q get -P ports"
+  fi
+# takes snapshot from /dev/ttyN
+  alias snapscreenshot="sudo snapscreenshot"
+  alias mkscreeny="cd ~/shots/ ; sleep 5; snapscreenshot -c1 -x1 > snap.tga ; convert snap.tga snap.png"
+
+# grep wrapper with search highlighting (<http://www.acme.com/software/hgrep/>)
+# Only for non-linux systems needed (see below)
+  if [ ! "${OSTYPE}" = linux-gnu ] && [ -x  $(which hgrep) ]; then
+     alias grep='hgrep'
+  else
+      #  fi
+      # FIXME: ``${(MS)$(grep --version 2>/dev/null)#GNU}'' shows me ``GNU''
+      #        and export the variables correctly. But why (BY ZEUS FAT ASS)
+      #        become ``GREP_{COLOR,OPTIONS}'' exported if the string ``GNU''
+      #        unavailable?
+      # Note: ``--color'' is a feature from GNU grep >=2.5 and i do *not*
+      #       check for the available version, but only for ``GNU''!
+      if [ ${OS} = "linux-gnu" -n ${(MS)$(grep --version 2>/dev/null)#GNU} ]; then
+        export GREP_COLOR='0;31'
+        export GREP_OPTIONS='--color=auto'
+        alias hgrep='grep $GREP_OPTIONS $*'
+      fi
+  fi
+
+# ``choad'' is a small perlscript to ripp audio-cds
+  if [ -x $(which choad) ]; then
+     alias choad="sudo choad"
+  fi
+# VimTip 121: Using vim as a syntax-highlighting pager
+# <http://vim.sourceforge.net/tip_view.php?tip_id=>
+  if [ -e ~/.vimrc.more ] && [ -x $(which vim) ]; then
+     alias vmore='vim -u ~/.vimrc.more'
+  fi
+# I use ``gls'' instead of ls because the standard 'ls' from OpenBSD
+# doesn't not support colors :/ GNU ls is part of fileutils-4.1 and
+# component of the portcollection ($PORTSDIR/misc/fileutils)
+# [[ ${OS} = "linux" && -n ${(MS)$(ls --version 2>/dev/null)#GNU} ]] && ls_flags="--color"
+# (ls --help 2>/dev/null |grep -- --color=) >/dev/null && alias ls='ls -b -CF --color=auto'
+   if [ -x $(which gls) ]; then
+           alias ls='gls --color=always'
+   elif
+           [ ${OS} = "linux-gnu" -n ${(MS)$(ls --version 2>/dev/null)#GNU} ]; 
+   then
+           export TIMESTYLE=$'--time-style="+\e[1;37m[\e[1;35m%D %H:%M\e[1;37m]\e[0m"'
+           alias ls="ls -b -CF --color=always ${TIMESTYLE}"
+   else
+           alias ls='ls -F'
+   fi
+# call mailfilter and start getmail after a positive return value
+# <http://mailfilter.sourceforge.net/> && <http://www.qcc.ca/~charlesc/software/getmail-3.0/>
+   alias gmail='mailfilter -r || getmail -v --rcfile  ~/.getmail/getmailrc --rcfile ~/.getmail/getmail-hardening'
+# X11? Yes! A open port? Nope! 
+#   alias sx='startx -- -nolisten tcp 2>&1 ~/.startx-errors'
+#   alias sx='startx -- -nolisten tcp >& $HOME/.startx-errors'
+   alias sx='startx --  -deferglyphs 16 -dpi 100 -nolisten tcp >& $HOME/.startx-errors'
+# SSH to some hosts :>
+   alias router="ssh dope@192.168.13.2"
+   alias hellfire="ssh dope@192.168.13.3"
+   alias dreckskind="ssh dope@192.168.13.4"
+   alias firewall="ssh bofh@192.168.13.5"
+   alias blitzkrieg="ssh dope@192.168.13.6"
+   alias diehard="ssh lart@192.168.13.7"
+# "-" is the same as the -l option (deprecated).
+   alias su="su -"
+# format a floppy (OpenBSD)
+   alias format="fdformat /dev/rfc0a"
+# Quick chmod ;-)
+   alias rw-='chmod 600'
+   alias rwx='chmod 700'
+   alias r--='chmod 644'
+   alias r-x='chmod 755'
+# stolen from a ~/.bashrc (IIRC RedHat(?))
+   alias ..='cd ..'
+   alias ...='cd ../..'
+   alias ....="cd ../../.."
+# Make/Create/Convert Pics/Thumbnails
+   alias _GIF='convert -verbose -interlace LINE' 
+   alias _thumb='convert -geometry 100x100 -interlace LINE -verbose' 
+   alias _thumb150='convert -geometry 150x150 -interlace LINE -verbose' 
+   alias _thumb200='convert -geometry 200x200 -interlace LINE -verbose' 
+# Use colors, do not check for new groups, specific my killfile an use
+# spool (needed for slrnpull)
+   alias news='slrn -C -n --kill-log /home/dope/.slang/KILL --spool'
+   alias gnews='slrnpull -d /home/dope/nslrn/slrnpull -h news.individual.net'
+# start mutt/vim/zsh/jed without any setup
+   alias null-mutt='mutt -n -f /dev/null -F /dev/null'
+   alias null-zsh='zsh -f'
+   alias null-vim='vim -u NONE'
+   alias null-jed='jed -n'
+# *Very* often used!
+   alias lsd='ls -ld *(/)'                 # only show directories
+   alias lad='ls -ld .*(/)'                # only show dot-directories
+   alias lsa='ls -a .*(.)'                 # only show dot-files
+   alias lsbig='ls -lSh *(.) | head'       # display the biggest files
+   alias lssmall='ls -Sl *(.) | tail'      # display the smallest files
+   alias lsnew='ls -rtl *(.) | tail'       # display the newest files
+   alias lsold='ls -rtl *(.) | head'       # display the oldest files
+# check out/in RCS revisions
+   alias lci='ci -l'
+   alias lco='co -zLT'
+# convert from UPPER to lower (or back)
+   alias UP2low='for i in *(.); mv $i ${i:l}'
+   alias low2UP='for i in *(.); mv $i ${i:u}'
+# ctags are *very* useful!
+   alias mktags='for i in **/*(/); do (cd $i; eval '\''ctags-exuberant *'\''); done; ctags-exuberant --file-scope=no -R'
+# Make the source to be with you!!!11!
+   alias C='./configure'
+   alias CH='./configure --help | $PAGER'
+# zmv -- see ``less ${^fpath}/zmv(N)'' for more details.
+   alias zcp='zmv -C'
+   alias zln='zmv -L'
+# r00t commands
+   if [ -x =sudo ]; then
+      alias ifconfig="sudo ifconfig"
+      alias shutdown="sudo shutdown"
+      alias tcpdump="sudo tcpdump"
+      alias nmap="sudo nmap"
+    fi
+# simple replacement for nmap (anywise .. :>)
+   alias pscan="nc -vz $1 1-1024"
+# Yup. I mount my CDROM manually!
+   if [ "${OS}" = openbsd ]; then
+           alias _mcd='sudo mount /dev/cd0a /mnt && cd /mnt && ls'
+           alias _ucd='cd ~ && sudo umount /mnt'
+   else
+           alias _mcd='sudo mount /mnt/cdrom && cd /mnt/cdrom && ls'
+           alias _ucd='cd ~ && sudo umount /mnt/cdrom'
+   fi
+# Yup. i use Gnus.. sometimes..
+if [ -x /usr/bin/emacs-21.3-with-x11 ]; then
+       alias emacs='emacs -nw -f server-start'
+       alias gnus='emacs -f gnus'
+       alias emacsnox='/usr/bin/emacs -nw'
+fi
+
+# GPG *sigh*
+   alias get.pgpkey='gpg --keyserver pgp.mit.edu --recv-key 0x"$@"'
+   alias mail.gpgkey='mail -s "GET keyid $@" pgp-public-keys@keys.pgp.net'
+   alias encrypt.gpg='echo "WARNING: plaintext is not deleted!"; gpg --quiet -ear 0x47E322CE'
+   alias sign.gpg='gpg --sign $*'
+# internet radio
+   alias p5='http://64.236.34.97:5190/stream/1006'
+   alias p4='mpg123 http://linux10.cs.uaf.edu:8000/kuac24mono'
+   alias p3='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-petre-128'
+   alias p2='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-p2-128'   
+   alias p1='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-p1-128'   
+   alias relax='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-alltid-klassisk-128'   
+   alias mpetre='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-mpetre-128'
+   alias c64='xmms http://radio.c64.org:8000/ &'
+   alias classical='xmms http://64.236.34.97:5190/stream/1006 &'
+# Some aliases for the OpenBSD - Portcollection
+   if [ "${OS}" = openbsd ]; then
+           alias Svar='make show=FLAVORS'
+           alias Spversion='make show=VERSION'
+           alias Scomm='make show=COMMENT'
+           alias Swth='make show=DESCRIPTION'
+   fi
+# Ask stupid questions? In Boards/NGs? Yeah .. sure "Killing time.. the
+# end of .." --Metallica :>
+# I read this fuckings manuals *very* often *narf*
+   alias H-Slrn='less /backups/Documentations/Manuals/slrn-manual.txt'
+   alias H-Mutt='less /backups/Documentations/Manuals/mutt-manual.txt'
+   alias H-Irssi='less /backups/Documentations/Manuals/irssi-manual.txt'
+   alias H-Getmail='less /backups/Documentations/Manuals/getmail-manual.txt'
+# The Open Group Base Specifications Issue 6 (IEEE Std 1003.1, 2003
+# Edition)
+   alias H-Susv3='${BROWSER:-lynx} /backups/Documentations/susv3/index.html'
+# YES! Zsh _is_ evil :>
+   alias H-Zsh='${BROWSER:-lynx} /backups/Documentations/Zsh/Doc/zsh_toc.html'
+   alias H-ZshGuide='${BROWSER:-lynx} /backups/Documentations/Zsh/guide/zshguide.html'
+   alias H-ZshFAQ='${BROWSER:-lynx} /backups/Documentations/Zsh/guide/faqs.orgfaqsunix-faqshellzsh.html'
+# The Linuxfibel (German). See <http://www.fibel.org/> for details.
+   alias H-Linux='${BROWSER:-lynx} /backups/Documentations/Linux/linux/index.html'
+# Yup. I'm fucking lazy :>
+   alias H-OpenBSD='${BROWSER:-lynx} /backups/Documentations/OpenBSD/index.html'
+   alias H-FreeBSD='${BROWSER:-lynx} /backups/Documentations/FreeBSD/index.html'
+   alias H-NetBSD='${BROWSER:-lynx} /backups/Documentations/NetBSD/index.html'
+# de.comp.os.unix.linux - FAQ
+   alias H-Dcoul='${BROWSER:-lynx} /backups/Documentations/dcoul/html/index.html'
+# The editor of my choice! The one and only! J-E-H-O-V-A!!!11! 
+   alias H-Vim='${BROWSER:-lynx} /backups/Documentations/Vim/usr_toc.html'
+# THE SED FAQ (<http://sed.sourceforge.net/sedfaq.html>)
+   alias H-Sed="${BROWSER:-lynx} /backups/Documentations/Sed/sedfaq.html"
+# HTML .. *sigh* 
+   alias H-HTML='${BROWSER:-lynx} /backups/Documentations/Self-HTML/index.htm'
+# The Jargon File (version 4.4.7)
+   alias H-Jargon='${BROWSER:-lynx} /backups/Documentations/Jargon/html/index.html'
+# CSS .. Fuck me gently with a chainsaw
+   alias H-CSS='${BROWSER:-lynx} /backups/Documentations/CSS/index.html'
+# Fucking FHS *gnarf*
+   alias H-FHS='${BROWSER:-lynx} /backups/Documentations/Linux/fhs-2.3.html'
+# Extensible Markup Language
+   alias H-XML='${BROWSER:-lynx} /backups/Documentations/XML/index.html'
+# German Manpages. 
+# -<http://www.ibiblio.org/pub/Linux/docs/LDP/man-pages/manpages-de-0.4.tar.gz>
+   alias de-man="man -M /backups/Documentations/manpages.de '$1'"
+# fucking devices *narf*
+   if [ "${OS}" = linux-gnu ]; then
+      alias H-Devices='${PAGER:-less} /usr/src/linux/Documentation/devices.txt'
+   fi
+# See http://svnbook.red-bean.com/
+   alias H-Svn="{BROWSER:-lynx} /backups/Documentations/svnbook-1.1/index.html"
+# RFC-Index. Not really needed. See <http://strcat.neessen.net/hacks/rfc.zsh> 
+# for details.
+ #  alias H-RFC='${BROWSER:-lynx} /backups/Documentations/RFCs/rfc-index.txt.gz'
+# Xterm specific stuff
+   alias mxterm-default='echo -e "\033]50;fixed\007"'
+   alias mxterm-normal=default
+   alias mxterm-hide='echo -en "\033]50;nil2\007"'
+   alias mxterm-tiny='echo -en "\033]50;5x7\007"'
+   alias mxterm-small='echo -en "\033]50;6x10\007"'
+   alias mxterm-medium='echo -en "\033]50;7x13\007"'
+   alias mxterm-large='echo -en "\033]50;9x15\007"'
+   alias mxterm-huge='echo -en "\033]50;10x20\007"'
+   if [ "$TERM" = "xterm" ] && [ "$LINES" -ge 50 ] && [ "$COLUMNS" -ge 100 ]; then
+           mxterm-large
+   fi
+# Postscript, LaTeX and printing
+   alias pnm2ps='pnmtops -width 8.26 -height 11.69'
+   alias gif2ps='(giftopnm | pnm2ps)'
+   alias jpeg2ps='(djpeg    | pnm2ps)'
+   alias png2ps='(pngtopnm | pnm2ps)'
+   alias ps2psbook="(psbook | psnup -2 | tumble)"
+   alias ps2A5-haefte="(psbook -s8 | psnup -4 )"
+   alias sho='xdvi -s 2 -expert -geometry 1010x900+30+1030'
+   alias _dvishow='xdvi -s 3 -expert -geometry 990x990'
+# Change keyboard mapping on the fly (nice for programming)
+   if [ -x $(which xmodmap) ]; then
+      alias US-e="xmodmap ~/.keys-emacs-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'"
+      alias US-v="xmodmap ~/.keys-vi-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'"
+      alias US="xmodmap ~/.keys-vi-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'"
+   fi
+# some global aliases for redirection
+   alias -g N="&>/dev/null"
+   alias -g 1N="1>/dev/null"
+   alias -g 2N="2>/dev/null"
+   alias -g DN="/dev/null"
+   alias -g PI="|"
+# suffix aliases (needs Zsh >= 4.2.0).  Suffix aliases allow the shell
+# to run a command on a file by suffix, e.g 'alias -s ps=gv' makes
+# 'foo.ps' execute 'gv foo.ps'.
+if [[ $ZSH_VERSION == 4.2.<0->* ]]; then
+       alias -s dvi=xdvi
+       alias -s pdf=xpdf
+       alias -s ps=gv
+       alias -s ogg=ogg123
+       alias -s wmv=mplayer
+       alias -s mp3=mplayer
+       alias -s html=${BROWSER:-lynx}
+       alias -s htm=${BROWSER:-lynx}
+       alias -s tex=${EDITOR:-vi}
+       alias -s txt=${PAGER:-less}
+       alias -s jpg=display
+       alias -s jpeg=display
+       alias -s xpm=display
+       alias -s xbm=display
+       alias -s png=display
+       alias -s gif=display
+       alias -s gz=show-archive
+       alias -s tar=show-archive
+       alias -s bz2=show-archive
+       alias -s zip=show-archive
+fi
diff --git a/zsh_people/strcat/zshbindings b/zsh_people/strcat/zshbindings
new file mode 100644 (file)
index 0000000..dcdada3
--- /dev/null
@@ -0,0 +1,106 @@
+# To find out the keynames you can use
+#  | cat > /dev/null 
+#  or
+#  | od -c
+#
+# Some useful keybindings
+#  | $ xterm -version
+#  |   XFree86 4.3/OpenBSD 3.3(174)
+#  | $ echo $TERM
+#  |   xterm
+#
+#  bindkey "^Y"    yank                                # <STRG>-Y
+#  bindkey "\e[3~" delete-char                         # Delete
+#  bindkey '^[[7~' beginning-of-line                   # Home (xterm)
+#  bindkey '^[[8~'  end-of-line                        # End (xterm)
+#  bindkey '^[[5~'  history-beginning-search-backward  # Page Up
+#  bindkey '^[[6~'  history-beginning-search-forward   # Page Down
+#  bindkey '^[[2~' overwrite-mode                      # Insert
+#  bindkey "^[[A"  up-line-or-search                   # <ESC>-N
+#  bindkey "^[[B"  down-line-or-search                 # <ESC>-
+#  bindkey "^Q"  edit-command-line                     # <STRG>-Q
+#  bindkey " "     magic-space                         # ' ' (Space>
+#  bindkey "^B"    backward-word                       # <STRG>-B
+#  bindkey "^E"    expand-cmd-path                     # <STRG>-E
+#  bindkey "^N"    forward-word                        # <STRG>-N
+#  bindkey "^R"    history-incremental-search-backward # <STRG>-R
+#  bindkey "^P"    quote-line                          # <STRG>-P
+#  bindkey "^K"    run-help                            # <STRG>-K
+#  bindkey "^Z"    which-command                       # <STRG>-Z
+#  bindkey "^X"    what-cursor-position                # <STRG>-X
+#  bindkey -v
+
+case $TERM in
+       xterm*)
+       # Pos1 && End
+       bindkey "^[[H" beginning-of-line
+       bindkey "^[[F" end-of-line
+       ;;
+       screen*)
+       bindkey "^[[1~" beginning-of-line
+       bindkey "^[[4~" end-of-line
+       ;;
+       linux*)
+       bindkey "^[[1~" beginning-of-line
+       bindkey "^[[4~" end-of-line
+       ;;
+       rxvt*)
+       bindkey "^[[1~" beginning-of-line
+       bindkey "^[[4~" end-of-line
+       ;;
+       Eterm*)
+       bindkey "^[[7~" beginning-of-line
+       bindkey "^[[8~" end-of-line
+       ;;
+esac
+       bindkey "^[[2~" yank                    # Einfg
+       bindkey "^[[5~" up-line-or-history      # PageUp
+       bindkey "^[[6~" down-line-or-history    # PageDown
+       bindkey "^[e" expand-cmd-path           # C-e for expanding path of typed command
+       bindkey "^[[A" up-line-or-search        # up arrow for back-history-search
+       bindkey "^[[B" down-line-or-search      # down arrow for fwd-history-search
+       bindkey " " magic-space                 # do history expansion on space
+       bindkey -v                              # vi keybindings
+       bindkey "\e[3~" delete-char             # "Entf" or "Del"
+       bindkey "^[[A" history-search-backward  # PgUp
+       bindkey "\e[B" history-search-forward    # PgDown
+       bindkey "\e[C" forward-char              # ->
+       bindkey "\e[D" backward-char             # <-
+       bindkey "\eq" push-line                  # Kill the *complete* line! (ESC+q)
+       bindkey "^R" history-incremental-search-backward # Search in my $HISTFILE (STRG+R)
+       bindkey "^[[2;5~" insert-last-word      # STRG+Einfg
+       bindkey "\ea" accept-and-hold            # ESC+a
+       bindkey "^B"  backward-word             # One word back
+       bindkey "^N"  forward-word              # One word forward
+       bindkey "^P" quote-line                 # quote the whole line
+       bindkey "^K" run-help                   #  i. e. "run-help foo" == "man foo"
+       bindkey -s "\C-t" "dirs -v\rcd ~"       # STRG+t
+       bindkey "^I" expand-or-complete         # assimilable to "ls<TAB>"
+       bindkey "^E" expand-cmd-path            # $ ls<STRG+E> == /bin/ls
+       bindkey "^X" which-command              # <STRG>+Z == which foo
+       bindkey " " my-expand-abbrev            # See ~/.zsh/zshmisc "/^myiabs" for details
+       #--------------------------------------------------
+       # # VI-like ;-)
+       #   bindkey -M vicmd "^R" redo
+       #   bindkey -M vicmd "u" undo
+       #   bindkey -M vicmd "ga" what-cursor-position
+       #   bindkey -M viins "\e^R" redisplay
+       #   bindkey -M vicmd "^R" redisplay2
+       #   bindkey "^L" clear-screen
+       #   bindkey -M vicmd "A" vi-add-eol
+       #   bindkey -M vicmd "a" vi-add-next
+       #   bindkey "^Xl" screenclearx
+       #   bindkey -M vicmd "c" vi-change
+       #   bindkey -M vicmd "C" vi-change-eol
+       #   bindkey -M vicmd "S" vi-change-whole-line
+       #   bindkey -M vicmd "i" vi-insert
+       #   bindkey -M vicmd "I" vi-insert-bol
+       #   bindkey -M vicmd "O" vi-open-line-above
+       #   bindkey -M vicmd "o" vi-open-line-below
+       #   bindkey -M vicmd "s" vi-substitute
+       #   bindkey -M vicmd "R" vi-replace
+       #   bindkey -M viins "\e" vi-cmd-mode
+       #   bindkey -M vicmd "g~" vi-oper-swap-case
+       #-------------------------------------------------- 
+#;;
+#esac
diff --git a/zsh_people/strcat/zshcompctl b/zsh_people/strcat/zshcompctl
new file mode 100644 (file)
index 0000000..b3ba392
--- /dev/null
@@ -0,0 +1,83 @@
+# Tab host completion for programs  
+compctl -k ping telnet ncftp host nslookup irssi rlogin ftp
+
+# Make completion (yeah im getting fucking lazy)
+compile=(install clean remove uninstall deinstall)
+compctl -k compile make
+
+# some (useful) completions
+ compctl -j -P '%' fg jobs disown
+ compctl -g '*.(gz|z|Z|t[agp]z|tarZ|tz)' + -g '*(-/)' gunzip gzcat zcat
+ compctl -g '*.tar.Z *.tar.gz *.tgz *.zip *.ZIP *.tar.bz2 *.tar' + -g '*'  show-archive simple-extract
+ compctl -g '*.(mp3|MP3|ogg|OGG|temp|TEMP)' + -g '*(-/)'  mpg123 xmms
+ compctl -g "*.html *.htm" + -g "*(-/) .*(-/)" + -H 0 '' w3m lynx links wget opera
+ compctl -g '*.(pdf|PDF)' + -g '*(-/)'  xpdf
+ compctl -g '*(-/)' + -g '.*(/)' cd chdir dirs pushd rmdir dircmp cl tree 
+ compctl -g '*.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG|bmp)' + -g '*(-/)' gimp xv pornview
+ compctl -g '*.(e|E|)(ps|PS)' + -g '*(-/)' gs ghostview nup psps pstops psmulti psnup psselect gv
+ compctl -g '*.tex*' + -g '*(-/)' {,la,gla,ams{la,},{g,}sli}tex texi2dvi
+ compctl -g '*.dvi' + -g '*(-/)' dvips
+ compctl -g '/var/db/pkg/*(/:t)' pkg_delete pkg_info
+ compctl -g '[^.]*(-/) *.(c|C|cc|c++|cxx|cpp)' + -f cc CC c++ gcc g++
+ compctl -g '[^.]*(-/) *(*)' + -f strip ldd gdb
+ compctl -s '$(<~/.vim/tags)' vimhelp
+ compctl -s '/var/log/packages/*(.:t:r)' slapt-get
+
+# 'compctl' with regex
+ # kill takes signal names as the first argument after -, but job names after %
+ compctl -j -P % -x 's[-] p[1]' -k signals -- kill
+ # gzip files, but gzip -d only gzipped or compressed files
+ compctl -x 'R[-*[dt],^*]' -g '*.(gz|z|Z|t[agp]z|tarZ|tz)(D)' + -g '*(-/D)' + -f -  's[]' -g '^*(.(tz|gz|t[agp]z|tarZ|zip|ZIP|jpg|JPG|gif|GIF|[zZ])|[~#])' + -f -- gzip
+ # read '/etc/shells' to complete 'chsh -s'
+ compctl -u -x 'c[-1,-s]' -s '$(</etc/shells)' -- chsh
+ # For rcs users, co and rlog from the RCS directory.  We don't want to see
+ # the RCS and ,v though.
+ compctl -g 'RCS/*(D:s@RCS/@@:s/,v//)' + -g '*(-/D)' co rlog rcs{,diff,merge} revdiff logs mymerge cil
+ #  Argument to finger and talk is username@hostname 
+ compctl -x 'N[-1,@]' -k hosts - 's[]' -u -S '' -- finger talk
+ # Fnord!  
+ compctl -f -x \
+            'p[1]' -k '(cvf czvf cjvf tvf tzvf tjvf xvf xzvf xjvf)' \
+          - 'p[2] W[1,*z*f*],p[2] W[1,*f*z*]' -g '[^.]*(-/) *.(tar.(gz|z|Z)|taz|tgz)' \
+          - 'p[2] W[1,*I*f*],p[2] W[1,*f*I*]' -g '[^.]*(-/) *.tar.bz2' \
+          - 'p[2] W[1,*f*]' -g '[^.]*(-/) *.tar' + -f -- tar 
+# security by.. by.. *aehm* .. me? *g*
+compctl -k '(asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa dsaparam \
+           enc errstr gendh gendsa genrsa nseq passwd pkcs12 pkcs7 pkcs8 \
+           rand req rsa rsautl s_client s_server s_time sess_id smime speed \
+           spkac verify version x509)' openssl
+# Don't complete uninteresting users
+zstyle ':completion:*:*:*:users' ignored-patterns \
+        _fingerd _kadmin _rstatd _syslogd daemon nobody proxy sshd \
+        _identd _kdc _rusersd _x11 operator root uucp _isakmpd _portmap \
+        _spamd named popa3d smmsp
+
+# ... unless we really want to.
+zstyle '*' single-ignored show
+
+# fucking duplicate entries in my $HISTFILE *narf*
+zstyle ':completion:*:history-words' stop yes
+zstyle ':completion:*:history-words' remove-all-dups yes
+zstyle ':completion:*:history-words' list false
+zstyle ':completion:*:history-words' menu yes
+
+# completion for "man" by Gossamer <gossamer@tertius.net.au> 980827
+# This is damn funky. I'm going to do something similar for pinfo,
+# hopefully.
+#-------------------------------------------------- 
+compctl -f -x 'S[1][2][3][4][5][6][7][8][9]' -k '(1 2 3 4 5 6 7 8 9)' \
+  - 'R[[1-9nlo]|[1-9](|[a-z]),^*]' -K 'match-man' \
+  - 's[-M],c[-1,-M]' -g '*(-/)' \
+  - 's[-P],c[-1,-P]' -c \
+  - 's[-S],s[-1,-S]' -k '( )' \
+  - 's[-]' -k '(a d f h k t M P)' \
+  - 'p[1,-1]' -c + -K 'match-man' \
+  -- vman pinfo
+#--------------------------------------------------
+# setopt SH_WORD_SPLIT function man_var () {
+#    man_pages=( $^manpath/man*/*(N:t:r:r) )
+#       compctl -k man_pages man
+#          reply=( $man_pages )
+#  }
+#  compctl -K man_var vman pinfo; man_pages=()
+#-------------------------------------------------- 
diff --git a/zsh_people/strcat/zshdevel b/zsh_people/strcat/zshdevel
new file mode 100644 (file)
index 0000000..eecd720
--- /dev/null
@@ -0,0 +1,77 @@
+# *Heavy* under construction! Use it with cautions!
+#
+# 030515 get latest source of slrn via CVS
+# http://sourceforge.net/cvs/?group_id=7768
+function mkslrn()
+{
+       cd /backups/Source/slrn && \
+       cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ login ; \
+       cvs -z3 update ; \
+       cd /backups/Source/slrn/ && autopoint -f && aclocal-1.8 && autoconf && \
+       autoheader && automake-1.8 --foreign --add-missing && autoconf && \
+       patch -p1 < ../patches/slrn-0.9.8.0-useragent-patch ; \
+       ./configure --enable-setgid-code --enable-spool --enable-inews \
+       --enable-force-inews --with-slrnpull --with-ssl=/usr/bin/openssl \
+       --enable-largefile --enable-mime --prefix=/home/dope/dev-bin && \
+       =make && mmake && =make install clean
+}
+
+# 030613 get latest source of mutt via CVS
+# notice: CVS-password for mutt-server = "anonymous"
+# http://www.cs.hmc.edu/~me/mutt/
+function mkmutt()
+{
+       cd /backups/Source/mutt && \
+       cvs -d :pserver:anonymous@cvs.mutt.org:/home/roessler/cvs login ; \
+       cvs -z3 update ;\
+       ./prepare && 
+       patch -p1 < ../patches/patch-1.5.6.rr.compressed ; \
+       patch -p1 < ../patches/patch-1.5.6.vvv.initials ;\
+       patch -p1 < ../patches/patch-1.5.6.vvv.nntp ;\
+       patch -p1 < ../patches/patch-1.5.6.vvv.quote ;\
+       patch -p1 < ../patches/patch-1.5.6.vvv.slang ;\
+       ./configure --enable-compressed --enable-buffy-size --enable-iconv \
+       --enable-imap --enable-nntp --enable-pgp --enable-pop --enable-smime \
+       --with-ssl=/usr/sbin/openssl --with-regex --enable-nls --with-exec-shell=/bin/sh \
+       --with-nss --prefix=/home/dope/dev-bin && \
+       =make && mmake && =make install clean
+}
+
+# 030614 get latest source of vim via CVS
+# http://vim.sourceforge.net/cvsdocs/
+function mkvim()
+{
+       cd /backups/Source/vim && \
+       cvs -z3 -d:pserver:anonymous@cvs.sf.net:/cvsroot/vim checkout vim ;\
+       ./configure --without-x --with-compiledby='Christan Schneider <strcat@gmx.net>' \
+       --with-features=huge --prefix=/home/dope/dev-bin && =make && mmake && =make install clean
+}
+
+# 030830 get latest source of dietlibc
+alias getdietlibc="cd /backups/Source/dietlibc/ && (rmdir dietlibc-cvs-`date +%y%m%d` | mkdir dietlibc-cvs-`date +%y%m%d`) && \
+                   cd dietlibc-cvs-`date +%y%m%d` && \
+                   cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co dietlibc"
+
+alias zsh-confmake="./configure --enable-pcre --enable-cap --enable-maildir-support \
+                   --enable-max-jobtable-size=256 --enable-function-subdirs \
+                   --with-curses-terminfo --enable-dynamic --enable-locale && \
+                   make && mmake ; sudo make install clean"
+
+# OpenBSD Specific Functions
+if [ "${OS}" = openbsd ]; then
+       function mkernel()
+       {
+                config $1;
+                cd ../compile/$1;
+                make dep && make;
+        }
+
+        function src-compile()
+        {
+                cd /usr/src
+                rm -rf /usr/obj
+                make obj &&
+                make build &&
+                mergemaster
+        }
+fi
diff --git a/zsh_people/strcat/zshexports b/zsh_people/strcat/zshexports
new file mode 100644 (file)
index 0000000..49823fe
--- /dev/null
@@ -0,0 +1,534 @@
+# (( ${+*} )) = if variable is set don't set it anymore
+#  Note: Do *not* use '$PORTSDIR'! This variable is defined in 
+#        '/path/to/ports/Makefile'.
+(( ${+IRCNAME} )) || export IRCNAME="Christian 'strcat' Schneider"      # **EDIT**
+(( ${+IRCNICK} )) || export IRCNICK="strcat"                            # **EDIT**
+(( ${+IRCSERVER} )) || export IRCSERVER="irc.euirc.net"                 # **EDIT**
+(( ${+VISUAL} )) || export VISUAL="vim"                                 # **EDIT**
+(( ${+BROWSER} )) || export BROWSER="w3m"                               # **EDIT**
+(( ${+OS} )) || export OS="${OSTYPE%%[0-9.]*}" 
+(( ${+OSVERSION} )) || export OSVERSION="${OSTYPE#$OS}"
+(( ${+OSMAJOR} )) || export OSMAJOR="${OSVERSION%%.*}"
+(( ${+ORGANIZATION} )) || export ORGANIZATION="Guerrilla UNIX Development (Venimus, Vidimus, Dolavimus)" # **EDIT**
+(( ${+SHITDIR} )) || export SHITDIR="/home/$LOGNAME/Trash"
+
+# some variables for specific systems
+case ${OS} in
+       openbsd)
+       (( ${+CVSROOT} )) || export CVSROOT="anoncvs@anoncvs.ca.OpenBSD.org:/cvs"
+       (( ${+PORTS_DIR} )) || export PORTS_DIR="/usr/ports"
+       (( ${+PKG_PATH} )) || export PKG_PATH="ftp://ftp.OpenBSD.org/pub/OpenBSD/$(uname -r)/packages/$(uname -m)"
+       ;;
+       netbsd)
+       (( ${+CVSROOT} )) || export CVSROOT="anoncvs@anoncvs.se.NetBSD.org:/cvsroot"
+       (( ${+LD_LIBRARY_PATH} )) || export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/X11R6/lib:/usr/local/lib:/usr/pkg/lib"
+       (( ${+INCLUDEPATH} )) || export INCLUDEPATH="$INCLUDEPATH:/usr/local/lib"
+       (( ${+CFLAGS} )) || export CFLAGS='-I/usr/local/include -I/usr/pkg/include -I/usr/X11R6/include'
+       (( ${+CPPFLAGS} )) || export CPPFLAGS=$CFLAGS
+       ;;
+esac
+
+# compiler opt. flags !!! use this with caution !!! or dont use et all
+case $CPUTYPE in
+       i686)
+       (( ${+CFLAGS} )) || export CFLAGS='-O3 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -fomit-frame-pointer -fno-exceptions'
+       ;;
+       i586)
+       (( ${+CFLAGS} )) || export CFLAGS='-O3 -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'
+       ;;
+       i486)
+       (( ${+CFLAGS} )) || export CFLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions'
+       ;;
+       *)
+       (( ${+CXXFLAGS} )) || export CXXFLAGS=$CFLAGS
+esac
+
+# Set the values for some environment variables:
+export HOSTNAME="`hostname`"
+export LESS="-sCieM -P?fFile %f:stdin. ?m(%i of %m) :.line %l ?Lof %L:.?p (%p\%):."
+export LESSBINFMT='*u[%X]'
+export PAGER=less
+export CVS_RSH=ssh
+export NNTPSERVER='news.individual.net'                 # **EDIT**
+export HELPDIR='~/.zsh/help'
+export VERSION=${VERSION:-"zsh $ZSH_VERSION"}
+export WWW_HOME="http://www.google.com"
+export HTTP_HOME="http://www.google.com"
+export NETHACKOPTIONS='gender:male,noautopickup,color,lit_corridor,showrace,showexp,showdmg,showweight,time,toptenwin,catname:Prowl,msg_window:f,!legacy'
+export INFOPATH="/usr/local/info/:/usr/share/info/:/usr/local/emul/redhat/:/usr/share/info/"
+export MANWIDTH=80
+
+if [ -x $(which lesspipe.sh) ]; then
+       export LESSOPEN="|lesspipe.sh %s"
+fi
+
+# i primarily use Vim (GNU Emacs and jed are only exception ;-))
+#  $ print ${${$(=vim --version)[5]}:gs/.//}
+# is equivalent to 
+#  $ /path/to/vim --version | head -n 1 | awk '{print $5}' | sed 's/\.//'
+if [ -x $(which vim) ]; then
+       export EDITOR=vim
+       export VISUAL="${EDITOR}"
+       export VIMRELEASE="`print ${${$(vim --version)[5]}:gs/.//}`"
+else
+       if [ -x $(which vi) ]; then
+               export EDITOR=vi
+       fi
+fi
+case ${OS} in
+       openbsd)
+       [ -d "/usr/local/share/vim/vim$VIMRELEASE" ] \
+               && export VIMRUNTIME="/usr/local/share/vim/vim$VIMRELEASE"
+       ;;
+       netbsd)
+       [ -d "/usr/pkg/share/vim/vim$VIMRELEASE" ] \
+               && export VIMRUNTIME="/usr/pkg/share/vim/vim$VIMRELEASE"
+       ;;
+       linux-gnu)
+       [ -d "/usr/share/vim/vim$VIMRELEASE" ] \
+               && export VIMRUNTIME="/usr/share/vim/vim$VIMRELEASE"
+       ;;
+esac
+
+# That's for my Linuxbox (Slackware); OpenBSD doesn't support
+# locale :/
+if [ "${OSTYPE}" = linux-gnu ] && [ -x $(which locale) ]; then
+       # All of the below
+        export LC_ALL="en_US.iso885915"
+       # language information
+        export LANG="en_US.iso885915"
+       # Character classification and case conversion.
+        export LC_CTYPE="en_US.iso885915"
+       # Non-monetary numeric formats.
+        export LC_NUMERIC="en_US.iso885915"
+       # Date and time formats.
+        export LC_TIME="en_US.iso885915"
+       # Collation order.
+        export LC_COLLATE="en_US.iso885915"
+       # Monetary formats.
+        export LC_MONETARY="en_US.iso885915"
+       # ormats of informative and diagnostic messages and interactive responses.
+        export LC_MESSAGES="en_US.iso885915"
+       # Paper size format.
+        export LC_PAPER="en_US.iso885915"
+       # Define format of names.
+        export LC_NAME="en_US.iso885915"
+       # Format of addresses.
+        export LC_ADDRESS="en_US.iso885915"
+       # Format of telephon numbers.
+        export LC_TELEPHONE="en_US.iso885915"
+       # Format of dimensions.
+        export LC_MEASUREMENT="en_US.iso885915"
+       # Identify locale informations.
+        export LC_IDENTIFICATION="en_US.iso885915"
+else
+        export LC_ALL=POSIX
+fi
+
+
+# $ cd /usr/ports/misc/fileutils
+# $ make install clean
+#  di = directory
+#  fi = file
+#  ln = symbolic link
+#  pi = fifo file
+#  so = socket file
+#  bd = block (buffered) special file (block device)
+#  cd = character (unbuffered) special file (character device)
+#  or = symbolic link pointing to a non-existent file (orphan)
+#  mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
+#  ex = file which is executable (ie. has 'x' set in permissions (executable)).
+#
+# 0   = default color                   1   = bold
+# 4   = underlined                      5   = flashing text
+# 7   = reverse field                   31  = red
+# 32  = green                           33  = orange
+# 34  = blue                            35  = purple
+# 36  = cyan                            37  = grey
+# 40  = black background                41  = red background
+# 42  = green background                43  = orange background
+# 44  = blue background                 45  = purple background
+# 46  = cyan background                 47  = grey background
+# 90  = dark grey                       91  = light red
+# 92  = light green                     93  = yellow
+# 94  = light blue                      95  = light purple
+# 96  = turquoise                       100 = dark grey background
+# 101 = light red background            102 = light green background
+# 103 = yellow background               104 = light blue background
+# 105 = light purple background         106 = turquoise background
+#
+# Attribute codes:
+#  00 none
+#  01 bold
+#  02 faint                  22 normal
+#  03 standout               23 no-standout
+#  04 underline              24 no-underline
+#  05 blink                  25 no-blink
+#  07 reverse                27 no-reverse
+#  08 conceal
+#  
+# export LS_COLORS="fi=36:di=32:ln=1;33:ec=\\e[0;37m:ex=1:mi=1;30:or=1;30:*.c=32:*.bz=32:*.txt=36;1:*.doc=37:*.zip=1;32:*.rar=1;32:*.lzh=1;32:*.lha=1;32:*.arj=1;32:*.tar=1;32:*.tgz=1;32:*.gz=1;32:*~=1;30:*.bak=1;30:*.jpg=1;35:*.gif=1;35:*.tif=1;35:*.tiff=1;35:*.mod=1;31:*.voc=1;31:*.smp=1;31:*.au=1;31:*.wav=1;31:*.s3m=1;31:*.xm=1;31:*.pl=1;33:*.c=1;33"
+LS_COLORS=''
+LS_COLORS=$LS_COLORS:'no=0'           # Normal text       = Default foreground  
+LS_COLORS=$LS_COLORS:'fi=0'           # Regular file      = Default foreground
+LS_COLORS=$LS_COLORS:'di=32'          # Directory         = Bold, Yellow
+LS_COLORS=$LS_COLORS:'ln=01;36'       # Symbolic link     = Bold, Cyan
+LS_COLORS=$LS_COLORS:'pi=33'          # Named pipe        = Yellow
+LS_COLORS=$LS_COLORS:'so=01;35'       # Socket            = Bold, Magenta
+LS_COLORS=$LS_COLORS:'do=01;35'       # DO                = Bold, Magenta
+LS_COLORS=$LS_COLORS:'bd=01;37'       # Block device      = Bold, Grey
+LS_COLORS=$LS_COLORS:'cd=01;37'       # Character device  = Bold, Grey
+LS_COLORS=$LS_COLORS:'ex=94'          # Executable file   = Light, Blue
+LS_COLORS=$LS_COLORS:'*FAQ=31;7'      # FAQs              = Foreground Red, Background Black
+LS_COLORS=$LS_COLORS:'*README=31;7'   # READMEs           = Foreground Red, Background Black
+LS_COLORS=$LS_COLORS:'*INSTALL=31;7'  # INSTALLs          = Foreground Red, Background Black
+LS_COLORS=$LS_COLORS:'*.sh=47;31'     # Shell-Scripts     = Foreground White, Background Red
+LS_COLORS=$LS_COLORS:'*.vim=35'       # Vim-"Scripts"     = Purple
+LS_COLORS=$LS_COLORS:'*.swp=00;44;37' # Swapfiles (Vim)   = Foreground Blue, Background White
+LS_COLORS=$LS_COLORS:'*.sl=30;33'     # Slang-Scripts     = Yellow
+LS_COLORS=$LS_COLORS:'*,v=5;34;93'    # Versioncontrols   = Bold, Yellow
+LS_COLORS=$LS_COLORS:'or=01;05;31'    # Orphaned link     = Bold, Red, Flashing
+LS_COLORS=$LS_COLORS:'*.c=1;32'       # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.C=1;33'       # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.h=1;33'       # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.cc=1;33'      # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.awk=1;33'     # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.pl=1;33'      # Sources           = Bold, Yellow
+LS_COLORS=$LS_COLORS:'*.jpg=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.jpeg=1;32'    # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.JPG=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.gif=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.png=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.jpeg=1;32'    # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.ppm=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.pgm=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.pbm=1;32'     # Images            = Bold, Green
+LS_COLORS=$LS_COLORS:'*.tar=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.tgz=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.gz=31'        # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.zip=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.sit=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.lha=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.lzh=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.arj=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.bz2=31'       # Archive           = Red
+LS_COLORS=$LS_COLORS:'*.html=36'      # HTML              = Cyan
+LS_COLORS=$LS_COLORS:'*.htm=1;34'     # HTML              = Bold, Blue
+LS_COLORS=$LS_COLORS:'*.doc=1;34'     # MS-Word *lol*     = Bold, Blue
+LS_COLORS=$LS_COLORS:'*.txt=1;34'     # Plain/Text        = Bold, Blue
+LS_COLORS=$LS_COLORS:'*.o=1;36'       # Object-Files      = Bold, Cyan
+LS_COLORS=$LS_COLORS:'*.a=1;36'       # Shared-libs       = Bold, Cyan
+export LS_COLORS
+
+
+# The format of login / logout reports if the watch parameter is set.
+# Default is `%n has %a %l from %m'.
+# Recognizes the following escape sequences:
+#   %n = name of the user that logged in/out.
+#   %a = observed action, i.e. "logged on" or "logged off".
+#   %l = line (tty) the user is logged in on.
+#   %M = full hostname of the remote host.
+#   %m = hostname up to the first `.'.
+#   %t or %@ = time, in 12-hour, am/pm format.
+#   %w = date in `day-dd' format.
+#   %W = date in `mm/dd/yy' format.
+#   %D = date in `yy-mm-dd' format.
+# WATCHFMT='%n %a %l from %m at %t.'
+# WATCHFMT='*knock* *knock* Follow the white rabbit => %n %a %l from %m at %t.'
+# WATCHFTM=print '\e[1;35m%B[%b\e[1;32m%B%n%b\e[1;35m%B]%b \e[1;34m%U%a%u \e[1;35mfrom terminal \e[1;31m%M \e[1;35mat \e[1;33m%U%T%u\e[0m''
+#WATCHFMT="[%B%t%b] %B%n%b has %a %B%l%b from %B%M%b"
+WATCHFMT="%B->%b %n has just %a %(l:tty%l:%U-Ghost-%u)%(m: from %m:)"
+
+# If this parameter is nonzero, the shell will receive an ALRM signal if a
+# command is not entered within the specified number of seconds after issuing a
+# prompt. If there is a trap on SIGALRM, it will be executed and a new alarm is
+# scheduled using the value of the TMOUT parameter after executing the trap. 
+#TMOUT=1800
+
+# format of process time reports with 'time'
+#  %%     A `%'.
+#  %U     CPU seconds spent in user mode.
+#  %S     CPU seconds spent in kernel mode.
+#  %E     Elapsed time in seconds.
+#  %P     The CPU percentage, computed as  (%U+%S)/%E.
+#  %J     The name of this job.
+# Default is: 
+#       %E real  %U user  %S system   %P  %J
+TIMEFMT="Real: %E User: %U System: %S Percent: %P Cmd: %J"
+
+# The maximum number of events stored in the internal history list. If you use
+# the HIST_EXPIRE_DUPS_FIRST option, setting this value larger than the
+# SAVEHIST size will give you the difference as a cushion for saving
+# duplicated history events.
+HISTSIZE=100000
+
+# Stop annoying MailChecks. I'm not using AOL
+unset MAILCHECK
+
+# The name of the file used to store command history. When assigned to, history
+# is loaded from the specified file. Also, several invocations of the shell
+# running on the same machine will share history if their HISTFILE parameters
+# all point to the same file.
+# i have finally discovered the difference between `SAVEHIST' and `HISTSIZE'
+# thanks to the FAQ. `HISTSIZE' is the number of lines of history that is
+# kept within any given, running zsh. `SAVEHIST' is the number of lines of
+# history that is written out to a file at the magic, mysterious moment 
+# when that event occurs. so cat-ing `HISTFILE' into wc -l should enumerate
+# the number of history events 
+HISTFILE=$HOME/.zsh_history
+SAVEHIST=65536
+DIRSTACKSIZE=50
+
+# If nonnegative, commands whose combined user and system execution
+# times (measured in seconds) are greater than this value have timing
+# statistics printed for them.
+REPORTTIME=60
+
+# Limit this fuckung "zsh: do you wish to see all NNN possibilities (NNN
+# lines)?" downward (default is 100). Only ask before displaying
+# completions if doing so would scroll.
+LISTMAX=0
+
+# Seconds for login / logout check
+LOGCHECK=20
+
+# Define some ftp-hosts ($ ftp <TAB>)
+hosts=( ftp.{free,open,net}bsd.org
+        ftp rtfm.mit.edu
+        ftp.leo.org
+        ftp.2600.com
+        ftp.ciac.llnl.gov
+        ftp.de.kernel.org
+        ftp.mitglied.lycos.de
+        ftp.strcat.neessen.net
+        ftp.revier.com
+        127.0.0.1
+        192.168.13.{1..9}
+      )
+zstyle ':completion:*:*:ftp:*' hosts $hosts
+
+# Set the default system $PATH:
+# PATH="/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/"
+#PATH="/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/home/dope/bin:/"
+#for foo in ~/bin ~/progs/bin; do
+#      if [[ -z ${path[(r)$dir]} ]]; then
+#              path=($dir $path)
+#      fi
+#done
+# /Default/-PATH
+  PATH="/bin:/sbin:/usr/bin:/usr/sbin"
+# If ~/bin exist, add it to $PATH (~/bin contains some scripts, ..)
+  [ -d "${HOME}/bin" ] && PATH="${PATH}:${HOME}/bin"
+# Same here, but ~/dev-bin contains "unstable" software (WMI, Zsh, GCC,
+# ..)
+  [ -d "${HOME}/dev-bin" ] && PATH="${PATH}:${HOME}/dev-bin/bin"
+  [ -d "${HOME}/dev-bin" ] && PATH="${PATH}:${HOME}/dev-bin/sbin"
+  
+  # Check some directories and add existing to $PATH
+  for dir in \
+          /usr/local/bin \
+          /usr/local/sbin \
+          /usr/X11R6/bin \
+          /usr/share/texmf/bin \
+          /usr/X11R6/libexec/fvwm/2.4.16 \
+          /usr/lib/java/bin \
+          /var/qmail/bin \
+          /usr/pkg/bin \
+          /usr/pkg/sbin \
+          /usr/games
+  do
+          [ -d "${dir}" ] && PATH="${PATH}:${dir}"
+  done
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+if (( EUID == 0 )); then
+        echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+        if [ ! $? = 0 ]; then
+                PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+        fi
+fi
+
+
+# if your compdef Dir is ~/.zsh
+fpath=( $fpath /usr/local/share/zsh/$ZSH_VERSION/functions/ ~/.zsh/func/ )
+
+# See <http://sugi.nemui.org/doc/zsh/> for details.
+if autoload +X -U _accept_line_with_url > /dev/null 2>&1 ; then
+       zle -N accept-line-with-url _accept_line_with_url
+       bindkey '^M' accept-line-with-url
+       bindkey '^J' accept-line-with-url
+       export DOWNLOADER="wget -S"
+fi
+
+# Using Opera as browser when X11 is up
+if [ $DISPLAY ]; then
+       export WWW_BROWSER="~/.firefox/firefox %s"
+else
+       export WWW_BROWSER=${BROWSER:-lynx}
+fi
+
+# Clean the non-existing dirs from my $PATH before export $PATH
+#  ,----[ It's evil.. isn't it? ]
+#  | [dope@dreckskind:~]% PATH=/bin:/usr/games:/bin
+#  | [dope@dreckskind:~]% echo $PATH
+#  | /bin:/usr/games:/bin
+#  | [dope@dreckskind:~]% path=($^path(N))
+#  | [dope@dreckskind:~]% echo $PATH
+#  | /bin:/usr/games
+#  | [dope@dreckskind:~]%
+#  `----
+#path=($^path(N))
+#export PATH
+
+# automatically remove duplicates from these arrays
+typeset -gU path cdpath manpath fpath
+
+# RTFM!!!11!
+MANPATH="/usr/share/man:/usr/local/man"
+for mdir in \
+        /backups/Documentations/manpages.de \
+        /home/dope/dev-bin/man \
+        /var/qmail/man \
+        /usr/X11/man \
+        /usr/X11R6/man \
+        /usr/share/texmf/man \
+        /usr/contrib/man \
+        /usr/share/man/old
+do
+        [ -d "${mdir}" ] && MANPATH="${MANPATH}:${mdir}"
+done
+
+# notices on new mails
+#--------------------------------------------------
+# mailpref=/home/dope/MuttMail
+# mailpath=($mailpref/INBOX'?New Mail in your INBOX'
+#        $mailpref/Cron'?New Mail from Cron')
+#-------------------------------------------------- 
+#--------------------------------------------------
+# typeset -a mailpath
+# for i in ~/MuttMail/**/new; do
+#      mailpath[$#mailpath+1]="${i}?You have new mail in ${i:h}."
+# done
+#-------------------------------------------------- 
+
+# PS{1,2,3}, RPOMPT, .. 
+# The "prompt" of the shell.
+#  See zshmisc(1) (/PROMPT EXPANSION) for details.
+# 
+# %n         $USERNAME.
+# @          literal '@'
+# %m         machine name.
+# %M         The full machine hostname.
+# %%         %
+# %/         Present working directory ($PWD) (i. e.: /home/$USERNAME)
+# %~         Present working directory ($PWD) (i. e.: ~)
+# %h         Current history event number.
+# %!         Current history event number.
+# %L         The current value of $SHLVL.
+# %S (%s)    Start (stop) standout mode.
+# %U (%u)    Start (stop) underline mode.
+# %B (%b)    Start (stop) boldface mode.
+# %t / %@    Current time of day, in 12-hour, am/pm format.
+# %T         Current time of day, in 24-hour format.
+# %*         Current time of day in 24-hour  format,  with  seconds
+# %N         The  name  of  the  script,  sourced file, or shell
+#            function that zsh is currently executing,
+# %i         The line number currently  being  executed  in  the script
+# %w         The date in day-dd format.
+# %W         The date in mm/dd/yy format.
+# %D         The date in yy-mm-dd format.
+# %D{string} string  is  formatted  using the strftime function (strftime(3))
+# %l         The line (tty) the user is logged in on
+# %?         The  return  code of the last command executed just before the prompt
+# %_         The status of the parser
+# %E         Clears to end of line
+# %#         A  `#'  if  the shell is running with privileges, a `%' if not
+# %v         The  value  of the first element of the psvar array parameter
+# %{...%}    Include a string as a literal escape sequence
+# :          literal ':'
+# %Nc        "relative path", ie last N components of $PWD.
+# >          literal '>'
+#
+# Some examples:
+#  PS1="PS1='%B%n%b@%m:%4c>'"
+#  PS1="%B(%b%n@%m%B)%b : %B(%b%3~%B)%b: "
+#  PS1=$'%{\e[1;31m%}[%n@%m:%~ ]%{\e[0m%} '
+#  PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# ' ## user:~%
+#  PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%B>%b ' ## user:~>
+#  PS1='%n@%m:%4c%1v> ';RPS1=$'%{\e[0;36m%}%D{%A %T}%{\e[0m%}' ## user@host:~> ; Day time(hh:mm:ss)
+#  PS1='%B[%b%n%B:%b%~%B]%b$ ' ## [user:~]$
+#  PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%20<..<%~%B>%b ' ## user:..c/vim-common-6.0>
+#  PS1=$'%{\e[0;36m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## % ; ~
+#  PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## user% ; ~
+#  PS1='%# ';RPS1='%B%~%b' ## % ; ~ : no colors
+#  PS1='%n@%m:%B%~%b> ' ## user@host:~> : no colors
+#  PS1=$'%{\e[1;31m%}%B(%b%{\e[0m%}%n@%m%{\e[1;31m%})%{\e[0m%} : %{\e[1;31m%}(%{\e[0m%}%~%{\e[1;31m%})%{\e[0m%}: '
+#  PS1=$'%{\e[0;33m%}[%{\e[0m%}%n%{\e[0;33m%}@%{\e[0m%}%m%{\e[0;33m%}:%{\e[0m%}%~%{\e[0;33m%}]%{\e[0m%}%# '
+#  PS1=$(echo '\033[1m\033[30m(%/)\033[0m\033[39m\n[%n@%m \033[0m\033[34m%~\033[0m\033[39m]%# ')
+#  PS1='%n@%U%m%u %B%30<..<%~%b %(!.#.>)' # user@host (underlined), pwd(bold; max 30 chars.) > or #
+#  PS1=$'%{\e[0;31m%}[%{\e[0;36m%}%n%{\e[0;32m%}@%{\e[0;35m%}%m%{\e[0;34m%}:%{\e[0;33m%}%.%{\e[0;31m%}]%{\e[0;0m%}%# '
+# random colors? sure. no problem ;)
+#  $ setopt prompt_subst ; PROMPT=$'[%{\e[$((color=$((30+$RANDOM % 8))))m%}%n@%m %c%{\e[00m%}]%% '
+#
+# You can use ``promptinit'' for the zsh prompt themes extension. See
+# ``less ${^fpath}/promptinit(N)'' for details. btw. http://aperiodic.net/phil/prompt/
+# is a good prompt introduction for the Z shell
+
+if [[ $SSH_CLIENT = *.* || $REMOTEHOST = *.* ]]; then
+    RPROMPT=$SSH_CLIENT
+fi
+if (( EUID == 0 )); then
+       PS1=$'%{\e[0;33m%}%B[%b%{\e[0m%}%n%{\e[0;33m%}%B@%b%{\e[0m%}%m%{\e[0;33m%}:%{\e[0m%}%~%{\e[0;33m%}%B]%b%{\e[0m%}%# '
+else
+       case $HOST in
+               dreckskind)
+               PROMPT=$'\n%{\e[31m%}[%{\e[3;41;1;30m%}%n%{\e[0;31m%}@%{\e[3;41;1;30m%}%m%{\e[0;31m%}:%{\e[3;41;1;30m%}%~%{\e[0;31m%}] #%{\e[0m%} '
+               ;;
+               painless)
+               PROMPT=$'%{\e[0;31m%}%B[%b%{\e[0m%}%n%{\e[0;31m%}@%{\e[0m%}%m%{\e[0;31m%}%B:%b%{\e[0m%}%~%{\e[0;31m%}%B]%b%{\e[0m%}%# '
+               # On 'exit-Status != 0' display a ":(" on the right side.
+               RPROMPT="%(?..:()%"
+               ;;
+               hellfire)
+               autoload promptinit; promptinit ; prompt elite2 red
+               #PROMPT=$'\n%{\e[31m%}[%{\e[3;41;1;30m%}%n%{\e[0;31m%}@%{\e[3;41;1;30m%}%m%{\e[0;31m%}:%{\e[3;41;1;30m%}%~%{\e[0;31m%}] #%{\e[0m%} '
+               ;;
+               blitzkrieg)
+               PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} '
+               RPS1=$'%{\e[0;31m%}%~%{\e[0m%}'
+               ;;
+               diehard)
+               PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# '
+               ;;
+               *)
+               PROMPT="[%n@%m] "
+               RPROMPT="[%~]"
+       esac
+fi
+
+# Change the title in xterm
+if [[ $TERM = (xterm|rxvt) ]]; then
+       precmd () { print -Pn "\e]0;[ %n@%m: %~ ] \a" }
+fi
+
+
+# Executed whenever a command has a non-zero exit status:
+#--------------------------------------------------
+# TRAPZERR() { echo 'AAAAAAAARRRRGHHHHH!!'; }
+#-------------------------------------------------- 
+
+#--------------------------------------------------
+#red='%{\e[0;31m%}'
+#white_on_blue='%{\e[0;37;44m%}'
+#blue='%{\e[0;34m%}'
+#nocolor='%{\e[0m%}'
+# function precmd {
+# PROMPT="${white_on_blue}--INSERT--$nocolor [%~]
+# $red%B[%b$nocolor%n$red@$nocolor%m$red%B]%b$nocolor%% " }
+#-------------------------------------------------- 
+
+# The prompt used for spelling correction. The sequence `%R' expands to
+# the string which presumably needs spelling correction, and `%r' expands
+# to the proposed correction. All other prompt escapes are also allowed.
+SPROMPT=$'%BError!%b Correct %{\e[31m%}%R%{ \e[0m%}to%{ \e[36m%}%r%{ \e[0m%}? [No/Yes/Abort/Edit]: '
diff --git a/zsh_people/strcat/zshfunctions b/zsh_people/strcat/zshfunctions
new file mode 100644 (file)
index 0000000..71b5ad7
--- /dev/null
@@ -0,0 +1,946 @@
+# Globbing is simple? Sure .. See zshexpn(1) /Glob Qualifiers for details and
+# come back ;) 
+function H-Glob()
+{
+echo -e "
+     /      directories
+      .      plain files
+      @      symbolic links
+      =      sockets
+      p      named pipes (FIFOs)
+      *      executable plain files (0100)
+      %      device files (character or block special)
+      %b     block special files
+      %c     character special files
+      r      owner-readable files (0400)
+      w      owner-writable files (0200)
+      x      owner-executable files (0100)
+      A      group-readable files (0040)
+      I      group-writable files (0020)
+      E      group-executable files (0010)
+      R      world-readable files (0004)
+      W      world-writable files (0002)
+      X      world-executable files (0001)
+      s      setuid files (04000)
+      S      setgid files (02000)
+      t      files with the sticky bit (01000)
+ print *(m-1)          # Dateien, die vor bis zu einem Tag modifiziert wurden.
+ print *(a1)           # Dateien, auf die vor einem Tag zugegriffen wurde.
+ print *(@)            # Nur Links
+ print *(Lk+50)        # Dateien die ueber 50 Kilobytes grosz sind
+ print *(Lk-50)        # Dateien die kleiner als 50 Kilobytes sind
+ print **/*.c          # Alle *.c - Dateien unterhalb von \$PWD
+ print **/*.c~file.c   # Alle *.c - Dateien, aber nicht 'file.c'
+ print (foo|bar).*     # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
+ print *~*.*           # Nur Dateien ohne '.' in Namen
+ chmod 644 *(.^x)      # make all non-executable files publically readable
+ print -l *(.c|.h)     # Nur Dateien mit dem Suffix '.c' und / oder '.h'
+ print **/*(g:users:)  # Alle Dateien/Verzeichnisse der Gruppe >users<
+ echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
+}
+
+# colorizing the output of make
+if [[ -x ~/bin/makefilter ]]
+then
+        make() { command make "$@" |& makefilter }
+fi
+
+# check if ~/.errorlogs/ exist (otherwise create it) and create a
+# ``logfile'' e. g. ``makelog-vim-6.3''
+function mmake()
+{
+       [[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs
+       =make -n install > ~/.errorlogs/${PWD##*/}-makelog
+}
+
+# Search for the argument in the system libraries
+function lcheck()
+{
+       nm -go /usr/lib/lib*.a /usr/lobal/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1"
+}
+
+# clean directory
+function purge()
+{
+       FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N))
+       NBFILES=${#FILES}
+       if [[ $NBFILES > 0 ]]; then
+               print $FILES
+               local ans
+               echo -n "Remove this files? [y/n] "
+               read -q ans
+               if [[ $ans == "y" ]]
+               then
+                       rm ${FILES}
+                       echo ">> $PWD purged, $NBFILES files removed"
+               else
+                       echo "Ok. .. than not.."
+               fi
+       fi
+}
+
+# display a of possible passwords.
+function makepasswords()
+{
+       perl <<EOPERL
+       my @a = ("a".."z","A".."Z","0".."9",(split //, q{#@,.<>$%&()*^}));
+       for (1..10) { 
+               print join "", map { \$a[rand @a] } (1..rand(3)+7);
+               print qq{\n} 
+       }
+EOPERL
+}
+# AUTOMATIC ls on chpwd *if* directly isn't too big.
+# Not really needed ;o)
+#function chpwd
+#{
+#      integer ls_lines="$(ls -C | wc -l)"
+#      if [ $ls_lines -eq 0 ]; then
+#              echo No files found: Empty Directory 
+#      elif [ $ls_lines -le 18 ]; then
+#              ls
+#              echo "\e[1;32m --[ Items: `ls -l | wc -l` \e[1;32m]--"
+#      else
+#              echo Directory Exceeds Limits.
+#      fi
+#}
+
+# ssh-add -- wrap ssh-add to default to adding all identities in
+# ${HOME}/.ssh
+function ssh-add()
+{
+       local files
+       if [[ $# -eq 0 ]] ; then
+               for i in id_dsa id_rsa identity ; do
+                       if [[ -f $HOME/.ssh/$i ]] ; then
+                               files=($files $HOME/.ssh/$i)
+                       fi
+               done
+       else
+               files=( "$@" )
+       fi
+       command ssh-add $files
+}
+
+# Name (``hash -d'') all the subdirectories in given directory
+# $ mkdir -p foo/{bar,foo,fnord,recursion}
+# $ quick-hash foo
+# $ hash -d
+# bar=foo/bar
+# fnord=foo/fnord
+# foo=foo/foo
+# recursion=foo/recursion
+function quick-hash()
+{
+       for i in $1/*(/)
+       do
+               hash -d ${i##*/}=$i
+       done
+}
+
+# print current settings of LC_*
+function plocale()
+{
+       print LC_ALL=$LC_ALL
+       print LANG=$LANG
+       print LC_CTYPE=$LC_CTYPE
+       print LC_NUMERIC=$LC_NUMERIC
+       print LC_TIME=$LC_TIME
+       print LC_COLLATE=$LC_COLLATE
+       print LC_MONETARY=$LC_MONETARY
+       print LC_MESSAGES=$LC_MESSAGES
+       print LC_PAPER=$LC_PAPER
+       print LC_NAME=$LC_NAME
+       print LC_ADDRESS=$LC_ADDRESS
+       print LC_TELEPHONE=$LC_TELEPHONE
+       print LC_MEASUREMENT=$LC_MEASUREMENT
+       print LC_IDENTIFICATION=$LC_IDENTIFICATION
+}
+# a clock in the prompt. 
+#trap CRON ALRM
+#TMOUT=1
+#CRON() {
+#   local STRING
+#   local COL
+#   local x
+#   STRING=$(date)
+#   COL=$[COLUMNS-5]
+#   COL=$[COL-$#STRING]
+#   x=$(echo $PREBUFFER | wc -l )
+#   x=$[x+1]
+#   echo -n "\e7\e[$x;A\e[$COL;G\e[0;37;44m-- $STRING --\e[0m\e8"
+#}
+
+# invoke this every time when u change .zshrc to recompile it.
+function src()
+{
+        autoload -U zrecompile
+                [ -f ~/.zshrc ] && zrecompile -p ~/.zshrc
+                [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump
+                [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump
+                [ -f ~/.zshrc.zwc.old ] && rm -f ~/.zshrc.zwc.old
+                [ -f ~/.zcompdump.zwc.old ] && rm -f ~/.zcompdump.zwc.old
+                source ~/.zshrc
+}
+
+# Search for links in a directory and format the output
+# Note: '~/.fnord.awk' is a *very* simple script based on >awk<.
+#  ,----
+#  | $ cat ~/bin/fnord.awk
+#  |   BEGIN {
+#  |     regexp = ""
+#  |     regexp = regexp "((http|ftp)://)"
+#  |     regexp = regexp  "[-0-9A-Za-z#%&+./:;?_~]"
+#  |     regexp = regexp "*[-0-9A-Za-z#%&+/:;?_~]"
+#  |   }
+#  |   NF {
+#  |        while (match($0, regexp))
+#  |          {
+#  |            print substr($0, RSTART, RLENGTH)
+#  |             $0 = substr($0, RSTART + RLENGTH)
+#  |          }
+#  |      }
+#  | END {}
+#  `----
+function URL-search()
+{
+        if [[ $# = 0 ]]
+        then
+                echo "Usage   : $0 directory"
+                echo "Example : $0 ~/Mail"
+                echo "Example : $0 directory | \$PAGER"
+                echo "Example : $0 directory > logfile"
+        else
+                egrep -r -h -i '((ftp|https|http|www):.*)' $1 | awk -f ~/bin/fnord.awk | sort | uniq 
+        fi
+}
+
+# Happy CVS'ing
+function cvsd() { cvs diff -N $* |& $PAGER }
+function cvsl() { cvs log $* |& $PAGER }
+function cvsr() { rcs2log $* | $PAGER }
+function cvss() { cvs status -v $* }
+function cvsq() { cvs -nq update }
+function cvsa() { cvs add $* && cvs com -m 'initial checkin' $* }
+
+# Display the permissions in octal from given file. Not really needed.
+# Use http://www.strcat.de/hacks/perm-oktal.pl instead
+# function perm-oktal()
+#{
+#      echo $1 | perl -e 'chomp($s=<>);$p=(stat($s))[2] & 07777;printf "$s -> %04o\n",$p'
+#}
+
+# Translate DE<=>EN
+# *narf* .. 'translate' looks up fot a word in a file with language-to-language
+# translations (field separator should be " : "). A typical wordlist looks
+# like at follows:
+#  | english-word : german-transmission
+# It's also only possible to translate english to german but not reciprocal.
+# Use the following oneliner to turn back the sort order:
+#  $ awk -F ':' '{ print $2" : "$1" "$3 }' \
+#    /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
+function trans()
+{
+        case "$1" in
+                -[dD]*) translate -l de-en $2
+                ;;
+                -[eE]*) translate -l en-de $2
+                ;;
+                *)
+                echo "Usage: $0 { -D | -E }"
+                echo "         -D == German to English"
+                echo "         -E == English to German"
+        esac
+}
+
+# Some quick Perl-hacks aka /useful/ oneliner
+function bew() { perl -e 'print unpack "B*","'$1'"' ; perl -e 'print "\n"' }
+function web() { perl -e 'print pack "B*","'$1'"' ; perl -e 'print "\n"' }
+function hew() { perl -e 'print unpack "H*","'$1'"' ; perl -e 'print "\n"' }
+function weh() { perl -e 'print pack "H*","'$1'"' ; perl -e 'print "\n"' }
+function pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79"
+function getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* }
+function gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+function getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+function getforms () { perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic ) { print $1, "\n"; }' $* }
+function getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
+function getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
+function showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
+function vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
+function vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" }
+
+# set the DISPLAY to where i'm logged from or - if an argument is specified -
+# to the value of the argument
+function disp()
+{
+        if [[ $# == 0 ]]
+        then
+                DISPLAY=$(who am i | awk '{print $6}' | tr -d '()'):0
+        else
+                DISPLAY="${*}:0"
+        fi
+        export DISPLAY
+}
+
+# adds a directory to the PATH, without making duplicate entries
+function add_to_path()
+{
+        if [[ "$1" == "" ]]
+        then
+                echo "Usage: $0 directory"
+        else
+                unset SPACEPATH
+                local SPACEPATH
+                for i in  ${(s.:.)PATH}
+        do
+                SPACEPATH=( $SPACEPATH $i )
+        done
+        typeset -U SPACEPATH
+        if [[ -d "$1" ]]; then; SPACEPATH=( $SPACEPATH "$1" ); fi
+        PATH="`echo $SPACEPATH`"
+        PATH=${PATH:gs/ /:/}
+        export PATH
+        rehash
+fi
+}
+
+# Shameless stolen from Sven Guckes (<http://www.guckes.net/setup/zshrc.mine>)
+# _lap foo -- list all programs with prefix "foo":
+function _lap()
+{
+        if [[ $# = 0 ]]
+        then
+                echo "Usage:    $0 program"
+                echo "Example:  $0 zsh"
+                echo "Lists all occurrences of program in the current PATH."
+        else
+               ls -l ${^path}/*$1*(*N)
+       fi
+}
+
+# A life without 'diff'? Unimaginably!!!!11!
+function mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" }
+function udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " }
+function cdiff() { diff -crd $* | egrep -v "^Only in |^Binary files " }
+
+# List / Search / Browse in a archive without unpack
+function lynxbzgrep() { lynx -force_html -dump =(bzip2 -cd $1) | grep -i $2 }
+function browse-archive() { lynx -force_html <( gzip -cd $1 ) }
+
+# show/search signatures ;-)
+# random-signature.pl can be found at
+# <http://www.strcat.de/hacks/random-signature.pl>
+function sig() 
+{
+        if [[ $# = 0 ]]; then
+                random-signature.pl; < ~/.signature
+        else
+                agrep -d "^-- $" $@ ~/.sigs/own-stuff
+        fi
+}
+
+# mkdir && cd
+function mcd() { mkdir "$1"; cd "$1" } 
+
+# $ ls -l =ls
+# $ -r-xr-xr-x    1 root     bin        167936 Oct  4  2002 /bin/ls
+# $ pls ls
+# $ -r-xr-xr-x    1 root     bin        167936 Oct  4  2002 /bin/ls 
+function pls() { ls -l =$1 }
+
+# cd && ls
+function cl() { cd $1 && ls -a }
+
+# Use vim to convert plaintext to HTML
+function 2html() { vim -n -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null }
+
+# Often needed (if i rape '$LS_COLORS' again *g*)
+function _cols()
+{
+        esc="\033["
+        echo -e "\t 40\t 41\t 42\t 43\t 44\t 45\t 46\t 47"
+        for fore in 30 31 32 33 34 35 36 37; do
+                line1="$fore  "
+                line2="    "
+                for back in 40 41 42 43 44 45 46 47; do
+                        line1="${line1}${esc}${back};${fore}m Normal  ${esc}0m"
+                        line2="${line2}${esc}${back};${fore};1m Bold    ${esc}0m"
+                done
+                echo -e "$line1\n$line2"
+        done
+}
+
+# Usage: simple-extract <file>
+# Description: extracts archived files (maybe)
+simple-extract () 
+{
+        if [[ -f $1 ]]
+        then
+                case $1 in
+                        *.tar.bz2)  bzip2 -v -d $1      ;;
+                        *.tar.gz)   tar -xvzf $1        ;;
+                        *.rar)      unrar $1            ;;
+                        *.deb)      ar -x $1            ;;
+                        *.bz2)      bzip2 -d $1         ;;
+                        *.lzh)      lha x $1            ;;
+                        *.gz)       gunzip -d $1        ;;
+                        *.tar)      tar -xvf $1         ;;
+                        *.tgz)      gunzip -d $1        ;;
+                        *.tbz2)     tar -jxvf $1        ;;
+                        *.zip)      unzip $1            ;;
+                        *.Z)        uncompress $1       ;;
+                        *)          echo "'$1' Error. Please go away" ;;
+                esac
+        else
+                echo "'$1' is not a valid file"
+        fi
+}
+
+# Usage: smartcompress <file> (<type>)
+# Description: compresses files or a directory.  Defaults to tar.gz
+smartcompress()
+{
+       if [ $2 ]; then
+               case $2 in
+                       tgz | tar.gz)   tar -zcvf$1.$2 $1 ;;
+                       tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;;
+                        tar.Z)          tar -Zcvf$1.$2 $1 ;;
+                        tar)            tar -cvf$1.$2  $1 ;;
+                        gz | gzip)      gzip           $1 ;;
+                        bz2 | bzip2)    bzip2          $1 ;;
+                       *)
+                       echo "Error: $2 is not a valid compression type"
+                        ;;
+               esac
+       else
+               smartcompress $1 tar.gz
+       fi
+}
+
+# Usage: show-archive <archive>
+# Description: view archive without unpack
+show-archive()
+{
+        if [[ -f $1 ]]
+        then
+                case $1 in
+                        *.tar.gz)      gunzip -c $1 | tar -tf - -- ;;
+                        *.tar)         tar -tf $1 ;;
+                        *.tgz)         tar -ztf $1 ;;
+                        *.zip)         unzip -l $1 ;;
+                        *.bz2)         bzless $1 ;;
+                        *)             echo "'$1' Error. Please go away" ;;
+                esac
+        else
+                echo "'$1' is not a valid archive"
+        fi
+}
+
+# find process and kill it
+morons() { reply=(`ps ax | grep -v COMMAND |perl -nle '@a=split(" ",$_,9);$_=$a[4];s/[()]//g;s/.*\///g;print'`) }
+compctl -K morons pskill pkill
+pskill()
+{
+        local signal="HUP"
+        if [[ $1 == "" || $3 != "" ]]; then
+                print "Usage: $0 processname [signal]" && return 1
+        fi
+        [[ $2 != "" ]] && signal=$2
+        set -A pids $(command ps wwaux | grep $1 | grep -v "grep $1" | awk '{ print $2 }')
+        if [[ ${#pids} -lt 1 ]]; then
+                print "No matching processes for »$1«" && return 1
+        fi
+        if [[ ${#pids} -gt 1 ]]; then
+                print "${#pids} processes matched: $pids"
+                read -q "?Kill all? [y/n] " || return 0
+        fi
+        if kill -$signal $pids; then
+                echo "Killed $1 pid $pids with SIG$signal"
+        fi
+}
+
+# Use 'view' to read manpages, if u want colors, regex - search, ...
+# like vi(m).
+# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
+function vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
+
+# J-E-H-O-V-A!!!11!!
+#  ,----
+#  |  $ (cd $PORTS_DIR && make print-index ~/.ports)
+#  |  $ grep -i "^Port.*xchat-" -B1 -A8 .ports
+#  |
+#  |    Port:   xchat-1.8.11
+#  |    Path:   net/xchat
+#  |    Info:   X-Chat is an X11 IRC client
+#  |    Maint:  Damien Couderc <couderc@openbsd.org>
+#  |    Index:  net x11
+#  |    L-deps: gdk_pixbuf::graphics/gdk-pixbuf iconv.2::converters/libiconv intl.1:gettext->=0.10.38:devel/gettext
+#  |    B-deps: :devel/gmake bzip2-*:archivers/bzip2 gettext->=0.10.38:devel/gettext
+#  |    R-deps: gettext->=0.10.38:devel/gettext libiconv-*:converters/libiconv
+#  |
+#  `----
+if [ "${OS}" = openbsd ]; then
+        function port() 
+        {
+                case "$1" in
+                        -p) =grep -i "^Port.*$2" -B1 -A8 ~/.ports
+                        ;;
+                        -i) =grep -i "^Info.*$2" -B1 -A5 ~/.ports
+                        ;;
+                        *)
+                        echo "Usage: $0 {-i | -p } string }"
+                        echo "       -i (Info)       Search parse Info:"
+                        echo "       -p (Port)       Search parse Port:"
+                esac
+        }
+fi
+
+# Exchange ' ' for '_' in filenames.
+unspaceit()
+{
+        for _spaced in "${@:+"$@"}"; do
+                if [ ! -f "${_spaced}" ]; then
+                        continue;
+                fi
+                _underscored=$(echo ${_spaced} | tr ' ' '_');
+                if [ "${_underscored}" != "${_spaced}" ]; then
+                        mv "${_spaced}" "${_underscored}";
+                fi
+        done
+}
+
+# summarized google, ggogle, mggogle, agoogle and fm
+function search()
+{
+       case "$1" in
+               -g) ${BROWSER:-lynx} "http://www.google.com/search?q="$2""
+               ;;
+               -u) ${BROWSER:-lynx} "http://groups.google.com/groups?q="$2""
+               ;;
+               -m) ${BROWSER:-lynx} "http://groups.google.com/groups?selm="$2""
+               ;;
+               -a) ${BROWSER:-lynx} "http://groups.google.com/groups?as_uauthors="$2""
+               ;;
+               -c) ${BROWSER:-lynx} "http://search.cpan.org/search?query="$2"&mode=module"
+               ;;
+               -f) ${BROWSER:-lynx} "http://freshmeat.net/search/?q=$2&section=projects"
+               ;;
+               -F) ${BROWSER:-lynx} "http://www.filewatcher.com/?q="$2""
+               ;;
+               -s) ${BROWSER:-lynx} "http://sourceforge.net/search/?type=soft&q="$2""
+               ;;
+               *) 
+                 echo "Usage: $0 {-g | -u | -m | -a | -f | -c | -F}"
+                 echo "        -g: Searching for keyword in google.com"
+                 echo "        -u: Searching for keyword in groups.google.com"
+                 echo "        -m: Searching for message-id in groups.google.com"
+                 echo "        -a: Searching for Authors in groups.google.com"
+                 echo "        -c: Searching for Modules on cpan.org."
+                 echo "        -f: Searching for projects on Freshmeat."
+                 echo "        -F: Searching for packages on FileWatcher."
+                 echo "        -s: Searching for software on Sourceforge."
+       esac
+}
+
+# Quick&dirty hack to read heise-news (<http://www.heise.de/>
+function heise()
+{
+       CURDIR=${pwd};
+        cd /tmp;
+        if [[ -s tmp/heise.rdf ]]
+               then
+                       rm heise.rdf
+               fi
+               wget -q -O - http://heise.de/newsticker/heise.rdf |\
+               sed -e '/title/!d;s, <title>\(.*\)</title>,\1,' -e '/heise online/d' ; 
+               cd $CURDIR
+}
+
+# make screenshot of current desktop (use 'import' from ImageMagic)
+# See man date(1) and man import(1) for details.
+# Note: If you don't have 'import', install ImageMagick and stop
+#       crying.
+function sshot() 
+{ 
+       [[ ! -d ~/shots  ]] && mkdir ~/shots
+       cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d%--%H:%M:%S"`.png
+#      cd ~/shots && sleep 5; import -window root `date "+%Y-%m-%d%--%H:%M:%S"`.jpg
+
+}
+
+# Needs ImageMagick
+function gif2png() 
+{
+       if [[ $# = 0 ]]
+       then
+               echo "Usage: $0 foo.gif"
+               echo "Purpose: change a GIF file to a PNG file"
+       else
+               output=`basename $1 .gif`.png
+               convert  $1 $output
+               touch -r $1 $output
+               ls -l $1 $output
+       fi
+}
+
+# search for various types or README file in dir and display them in $PAGER
+# function readme() { $PAGER -- (#ia3)readme* }
+function readme()
+{
+        local files
+        files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+        if (($#files))
+        then $PAGER $files
+        else
+                print 'No README files. Please lart \$MAINTAINER!'
+        fi
+}
+
+# find all suid files in $PATH
+function suidfind() { ls -latg ${(s.:.)PATH} | grep '^...s' }
+
+# See above but this is /better/ ... anywise ..
+#  Note: Add $USER and 'find' with "NOPASSWD" in your /etc/sudoers or run it
+#        as root (UID == 0)
+function findsuid()
+{
+        sudo find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/.suid/suidfiles.`date "+%Y-%m-%d"`.out 2>&1
+        sudo find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/.suid/suiddirs.`date "+%Y-%m-%d"`.out 2>&1
+        sudo find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/.suid/writefiles.`date "+%Y-%m-%d"`.out 2>&1
+        sudo find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/.suid/writedirs.`date "+%Y-%m-%d"`.out 2>&1
+}
+
+# csh compatibility
+setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }
+
+# if [ Now-Playing == "relaxmusic" ];then .. ;-)
+beer()
+{
+        echo "         _.._..,_,_"
+        echo "        (          )"
+        echo "         ]~,\"-.-~~["
+        echo "       .=])' (;  ([    PANTS OFF!"
+        echo "       | ]:: '    ["
+        echo "       '=]): .)  (["
+        echo "         |:: '    |"
+        echo "          ~~----~~"
+}
+
+# Add directory to a bookmark-list
+# % bmadd       # add directory to bookmark list
+# % bmls        # show list of bookmark list
+# % bmvi        # edit bookmark list
+# % bm $NUMBER  # change directory to $NUMBER bookmark
+BMRC=~/.bmrc
+/usr/bin/touch $BMRC
+bmls() { cat $BMRC | sort -n}
+bmvi() { vi $BMRC }
+bmadd() {
+        local bmdir=`pwd`
+        local newid=$1
+        local bmname=''
+        for bmname in `bm_path_list`
+        do
+                if [ "$bmname" = "$bmdir" ]; then
+                        echo "$bmdir is already in bm list"
+                        return
+                fi
+        done
+        if [ -z $newid ]; then
+                maxid=`cat $BMRC | cut -f 1 | sort -n -r | head -1`
+                if [ "$maxid" -ge 1 ]; then
+                        newid=`expr 0$maxid + 1`
+                else
+                        newid=1
+                fi
+        fi
+        echo "$newid\t$bmdir" >> $BMRC
+}
+bm() {
+        local num=$1
+        local bmdir=`bm_get $num`
+        if [ -z "$bmdir" ]; then
+                bmls     
+                [ -z "$num" ] || echo "$num is not in bm list"
+                return
+        fi
+        cd "$bmdir"
+}
+bm_get() {
+        local bmdir=`cat $BMRC | egrep "^${1}[[:space:]]" | cut -f 2`
+        echo $bmdir
+}
+
+bm_path_list() {
+        cut -f 2 < $BMRC
+}
+
+# Temporary (interactive) removes. Alternative to this u can use
+# http://www.strcat.de/hacks/rm-replacements.shar
+function rf()
+{
+        [[ -z ${SHITDIR} ]] && print "No ${SHITDIR} defined." && return 1
+        [[ ! -d ${SHITDIR} ]] && mkdir ${SHITDIR}
+        mv $* ${SHITDIR}
+}
+
+# Reload functions.
+function refunc()
+{
+        for func in $argv
+        do
+                unfunction $func
+                autoload $func
+        done
+}
+
+# a small check to see which DIR is located on which server/partition.
+# stolen and modified from Sven's zshrc.forall
+function dirspace()
+{
+        for dir in ${(s.:.)PATH};
+        do
+                (cd $dir; echo "-<$dir>"; du -shx .; echo);
+        done
+}
+
+# Create a archive for my homepage (<http://strcat.neessen.net/>)
+function mkz()
+{
+       cd ~/homepage/dotfiles/zsh
+       cp ~/.zlogin ~/homepage/dotfiles/zsh/zlogin
+       cp ~/.zlogout ~/homepage/dotfiles/zsh/zlogout
+       cp ~/.zshrc ~/homepage/dotfiles/zsh/zshrc
+       cp ~/.zsh/z* ~/homepage/dotfiles/zsh/
+       cd ~/homepage/dotfiles/zsh/
+       rm ~/homepage/dotfiles/zsh/zshdevel.old
+       tar cf dot-zsh.tar * 
+       gzip --best ~/homepage/dotfiles/zsh/dot-zsh.tar
+       cd ~1
+}
+
+# FIXME: works not so as i like
+#--------------------------------------------------
+# function verify() {
+#         for i in "$1"
+#         do
+#                 if [ -r "$1" ]
+#                 then
+#                   #cd `dirname $1`
+#                   cd =$1(:h)
+#                 shortname=`basename $1`
+#                   md5 "$shortname" > "~/.checksums/$shortname.md5sum"
+#                   echo "Verified $shortname to $shortname.md5sum"
+#                 else
+#                   echo "Can not find $1"
+#                 fi
+#         done
+# }
+#-------------------------------------------------- 
+
+
+# Find (and print) all symbolic links without a target within the
+# current directorytree (i. e. ll symlinks that dont point to files,
+# directories, sockets, devices, or named pipes).
+# Note: all three functions works but the last is nicer
+# function brlinks() { for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i }
+# function brlinks() { print -l **/*(@-^./=%p) }
+function brlinks() { print -l **/*(-@) }
+
+# *fg*
+# function show_print () {
+#    for argument in "${@}"
+#      do
+#for ((i = 1; i <= ${#1} ;i++)) {
+#    print -n "${argument[i]}"
+#    sleep 0.005
+#}
+#print -n " "
+#      done
+#    print ""
+#}
+
+# display some informations
+function status()
+{
+        print ""
+        print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")""
+        print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
+        print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars"
+        print "Login.: $LOGNAME (UID = $EUID) on $HOST"
+        print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
+        print "Uptime:$(uptime)"
+        print ""
+}
+
+# a fucking lazy poor man clock..
+# check time every minute
+# PERIOD=60
+# show time every 15 minutes
+#function periodic()
+#{
+#       if [ `date +'%M'` = '00' ] ||
+#               [ `date +'%M'` = '15' ] ||
+#               [ `date +'%M'` = '30' ] ||
+#               [ `date +'%M'` = '45' ]
+#       then
+#               echo Time: `date +'%H:%M'`
+#       fi
+#}
+
+# For my Linux boxes
+if [ ${OS} = linux-gnu ]; then
+function mkernel() 
+{
+       make clean && make dep && make modules && make modules_install && make bzImage
+        cd arch/i386/boot
+}
+
+function getkernel()
+{
+       if [ $# -ne 3 ] ; then
+               echo "Usage:"
+               echo "$0 MAJOR MINOR SUBMINOR"
+                echo ""
+                echo "eg:"
+               echo "   $0 2 6 7"
+               latest=`echo -e "GET /kdist/finger_banner HTTP/1.0\n" | netcat www.kernel.org 80 | sed -ne "/^\r$/,//p"`
+               echo ""
+                echo "current versions: $latest"
+               echo ""
+               echo -n 'Used release is: '
+               uname -r
+       else
+               cd /Source
+               SERVER=http://www.de.kernel.org/pub/linux/kernel/
+               KERNEL=$SERVER/v$1.$2/linux-$1.$2.$3.tar.bz2
+               SIGN=$SERVER/v$1.$2/linux-$1.$2.$3.tar.bz2.sign
+               echo 'starting download'
+               wget -c $KERNEL &&
+               wget -c $SIGN   &&
+               echo 'done'
+               echo 'checking signature:'
+               gpg --verify `basename $SIGN $KERNEL` &&
+               echo 'done'
+       fi
+}
+
+function audiorip()
+{
+        mkdir -p ~/ripps
+        cd ~/ripps
+        cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc
+        cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc
+        echo " * Would you like to burn the cd now? (yes/no)"
+        read input
+        if
+                [ "$input" = "yes" ]; then
+                echo " ! Burning Audio CD"
+                audioburn
+                echo " * done."
+        else
+                echo " ! Invalid response."
+        fi
+}
+
+function audioburn()
+{
+        cd ~/ripps
+        cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc
+        echo " * Should I remove the temporary files? (yes/no)"
+        read input
+        if [ "$input" = "yes" ]; then
+                echo " ! Removing Temporary Files."
+                cd ~
+                rm -rf ~/ripps
+                echo " * done."
+        else
+                echo " ! Invalid response."
+        fi
+}
+
+function mkaudiocd()
+{
+        cd ~/ripps
+        for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
+        for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done 
+        for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done 
+        normalize -m *.wav
+        for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done
+}
+
+function mkiso()
+{
+        echo " * Volume name "
+        read volume
+        echo " * ISO Name (ie. tmp.iso)"
+        read iso
+        echo " * Directory or File"
+        read files
+        mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files
+}
+
+# rmmodcomplete() looks for modules in memory, for use with "rmmod".
+rmmodcomplete () { reply=(`/sbin/lsmod|cut -f1 -d" "|grep -v Module`) }
+compctl -K rmmodcomplete rmmod
+
+# insmodcomplete() looks for modules to use with "insmod" or
+# "modprobe".
+function insmodcomplete() { reply=(`find /lib/modules/$(uname -r)/* ! -type d -printf "%f\n"|sed "s/\.o$//"`) }
+compctl -K insmodcomplete insmod modprobe
+
+fi
+
+# Complete a howto-filename or FAQ-name (see howto script below).
+# Use like "howto zsh[TAB]".
+function howtocomplete() { reply=(`howto --find "$1"`) }
+compctl -U -K howtocomplete howto
+p0rncomplete() { reply=(`p0rn --find "$1"`) }
+compctl -U -K p0rncomplete p0rn
+
+# a quick hack for GNU Emacs && emacsclient
+function e()
+{
+       if [ "$1" = "" ]; then
+               echo "No file specified you have, think before you must."
+       else
+               if emacsclient -n "$1" >/dev/null 2>&1; then
+                       echo "Alrite, opened $1 in the Holy Emacs."
+               else
+                       echo "There's no Holy Emacs running here.. starting.."
+                       exec emacs "$1" &
+               fi
+       fi
+}
+
+# Show days since given birthday
+function days () 
+{
+       if [ "$*" = "" ]; then
+               echo "Use $0 day month year"
+               echo "Example: $0 "12 aug 1999""
+       else
+               BIRTHDAY="$*"
+               print $(( (`date +%s -d ${2:="now"}` - `date +%s -d ${1:=$BIRTHDAY}` )/60/60/24 ))
+       fi
+}
+
+# generate thumbnails ;)
+function genthumbs ()
+{
+    rm -rf thumb-* index.html
+    echo "
+<html>
+  <head>
+    <title>Images</title>
+  </head>
+  <body>" > index.html
+    for f in *.(gif|jpeg|jpg|png)
+    do
+        convert -size 100x200 "$f" -resize 100x200 thumb-"$f"
+        echo "    <a href=\"$f\"><img src=\"thumb-$f\"></a>" >> index.html
+    done
+    echo "
+  </body>
+</html>" >> index.html
+}
diff --git a/zsh_people/strcat/zshmisc b/zsh_people/strcat/zshmisc
new file mode 100644 (file)
index 0000000..36b9495
--- /dev/null
@@ -0,0 +1,132 @@
+#  ,----
+#  | [dope@painless:~]% ulimit -a
+#  | -t: cpu time (seconds)         2000
+#  | -f: file size (blocks)         500000
+#  | -d: data seg size (kbytes)     100000
+#  | -s: stack size (kbytes)        8192
+#  | -c: core file size (blocks)    0
+#  | -m: resident set size (kbytes) unlimited
+#  | -u: processes                  1791
+#  | -n: file descriptors           1024
+#  | -l: locked-in-memory size (kb) 50000
+#  | -v: address space (kb)         unlimited
+#  | -N 10: file locks              unlimited
+#  | [dope@painless:~]%
+#  `----
+#
+# Note: This settings protect *not* against 'fork'-bombs like
+#  $ (){ :|:&};:
+#  $ perl -e 'while(1){ fork();}'
+# but i don't care a pap for it. Trust me. I know what I'm doing. See
+# zshbuiltins(1) /ulimit for details.
+ulimit -c 0       # prevent core files from being written at al
+ulimit -d 100000  #  100 MB  data segment
+ulimit -f 500000  #  500 MB  file size
+ulimit -l unlimited 
+#ulimit -l 50000   #   50 MB  locked memory
+ulimit -n 1024    # 1024 open files
+ulimit -s 8192    #    8 kb stack size
+ulimit -t 2000    #  200 sec CPU time
+
+# An array (colon separated list) containing the suffixes of files to
+# be ignored during filename completion. However, if completion only
+# generates files with suffixes in this list, then these files are
+# completed anyway.
+# Note: U can use ``ls **/*~*(${~${(j/|/)fignore}})(.)'' to list all
+#       plain files that do not have extensions listed in `fignore'
+fignore=( ,v .aux .toc .lot .lof .blg .bbl .bak .BAK .sav .old .o .trace .swp \~)
+
+# Setting abbreviation like 'iab' with Vim.. YES! Zsh _IS_ evil *hr*. I
+# use this instead of "global aliases".
+#  $ Igr<Space>
+# will be expanded to
+#  $ groff -s -p -t -e -Tlatin1 -mandoc
+typeset -A myiabs
+myiabs=(
+        "Im"    "| more"
+        "Ig"    "| grep"
+        "Ieg"   "| egrep"
+        "Iag"   "| agrep"
+        "Igr"   "groff -s -p -t -e -Tlatin1 -mandoc"
+        "Ip"    "| $PAGER"
+        "Ih"    "| head"
+        "It"    "| tail"
+        "Is"    "| sort"
+        "Iv"    "| $EDITOR"
+        "Iw"    "| wc"
+        "Ix"    "| xargs"
+)
+my-expand-abbrev() {
+    local MATCH
+    LBUFFER=${LBUFFER%%(#m)[_a-zA-Z0-9]#}
+    LBUFFER+=${myiabs[$MATCH]:-$MATCH}
+    zle self-insert
+}
+
+#--------------------------------------------------
+# Now in ~/.zsh/zshbindings
+# bindkey     " "        my-expand-abbrev 
+#-------------------------------------------------- 
+
+# Set the "umask" (see "man umask"):
+# ie read and write for the owner only.
+# umask 002 # relaxed   -rwxrwxr-x
+# umask 022 # cautious  -rwxr-xr-x
+# umask 027 # uptight   -rwxr-x---
+# umask 077 # paranoid  -rwx------
+# umask 066 # bofh-like -rw-------
+umask 066
+
+# If root set unmask to 022 to prevent new files being created group and world writable
+if (( EUID == 0 )); then
+    umask 022
+fi
+
+# fucking "dead.letter" *narf*
+if [ -e ~/dead.letter ]; then
+         mv ~/dead.letter ~/.dead_letter.`date +%Y%m%d-%R`
+fi
+
+# >painless< is a "what happend if< - box (OpenBSD -current) and *.core -
+# files is a matter of course :>
+if [ "$HOSTNAME" = painless ]; then
+       if
+               [ -e ${HOME}/{mutt,xmms,zsh,irssi,perl,fvwm,opera}.core ]; then
+               zmv -M '(*).core' ~/.Core-Files/'$1.core-`date +%Y%m%d-%S`' && echo "Checkout ~/.Core-Files"
+       fi
+fi
+
+# 'hash' often visited directorys
+#   Note: That's *not* variables or aliase!
+#    ,----
+#    | $ hash -d M=~/.mutt
+#    | $ M
+#    | ~/.mutt
+#    | $ echo $M
+#    |
+#    | $ pwd
+#    | /home/dope/.mutt
+#    | $ 
+#    `----
+hash -d D=~/download/                                  # there are my downloads
+hash -d F=/usr/local/share/zsh/$ZSH_VERSION/functions  # ZSH functions (OpenBSD)
+hash -d F=/usr/share/zsh/$ZSH_VERSION/functions/        # ZSH functions (Slackware)
+hash -d FD=/backups/Documentations                     # usefull documentations
+hash -d FDD=/backups/Downloads                         # /new/ software an own make packages/ports
+hash -d FF=/backups/Files                              # Pics, movies, ..
+hash -d FS=/backups/System                             # my local backups
+hash -d H=/backups/                                    # Backups from this host
+hash -d HJ=~/.jed                                      # $JED_ROOT (${HOME})
+hash -d I=~/.irssi/                                    # Files for Irssi
+hash -d J=/usr/local/jed/                              # $JED_ROOT (Change it!)
+hash -d L=~/.slang/                                    # Files for Slrn
+hash -d M=~/.mutt/                                     # Files for Mutt
+hash -d P=~/homepage/                                  # My personal webpage
+hash -d RC=/etc/rc.d/                                  # executed files from init (Slackware)
+hash -d S=~/scripts/                                   # (Un)tested local hacks
+hash -d SO=/backups/Source                             # Mutt, Slrn, Vim, ..
+hash -d U=/usr/src/linux/                               # Linux-Kernel
+hash -d V=~/.vim/                                      # Files for Vim
+hash -d VL=/var/log                                    # often visited ;)
+hash -d Z=~/.zsh/                                      # "setupfiles" for ZSH
+hash -d _S=~/.sigs/                                    # My signature collection
diff --git a/zsh_people/strcat/zshoptions b/zsh_people/strcat/zshoptions
new file mode 100644 (file)
index 0000000..a7d8309
--- /dev/null
@@ -0,0 +1,311 @@
+# These names are case insensitive and underscores are ignored. For
+# example, `allexport' is equivalent to `A__lleXP_ort'.
+
+# Initialisation for new style completion.
+if [[ "$ZSH_VERSION" == (3.1|4)* ]]; then
+       autoload -U compinit
+       compinit -C
+else
+       print "Advanced completion system not found; ignoring zstyle settings."
+       function zstyle { }
+fi
+
+#--------------------------------------------------
+# if [[ "$ZSH_VERSION" == 4.2.<0->* ]]; then
+#      # If you now paste a url it will be magically quoted!
+#      # But it only works on 4.2.0 and later.
+#      autoload -U url-quote-magic
+#      zle -N self-insert url-quote-magic
+# fi
+#-------------------------------------------------- 
+
+# This tries to find wordcode files and automatically re-compile them if
+# at least one of the original files is newer than the wordcode file.
+  autoload zrecompile
+# This is a multiple move based on zsh pattern matching (like "mmv").
+# Read ``less ${^fpath}/zmv(N)'' for more details
+  autoload zmv
+# Edit small files with the command line editor.
+  autoload -U zed
+# Like xargs, but instead of reading lines of arguments from standard input,
+# it takes them from the command line. This is possible/useful because,
+# especially with recursive glob operators, zsh often can construct a command
+# line for a shell function that is longer than can be accepted by an external
+# command. This is what's often referred to as the "shitty Linux exec limit" ;)
+# The limitation is on the number of characters or arguments.
+#  $ =echo {1..30000}
+#  zsh: argument list too long: /bin/echo
+#  $ autoload -U zargs
+#  $ zargs -- =echo {1..30000}
+#  [ long list ;) ]
+   autoload -U zargs
+# This autoloadable function checks the folders specified as arguments
+# for new mails.
+#  autoload -U checkmail
+# Edit the command line using your usual editor.
+#  autoload -U edit-command-line
+
+# This module should be automatically loaded if u use menu selection but
+# to be sure we do it here
+  zmodload -i zsh/complist
+# Autoload zsh modules when they are referenced
+# A builtin command interface to the stat system call
+  zmodload -a zsh/stat stat
+# A builtin that can clone a running shell onto another terminal.
+  zmodload -e zsh/clone
+
+# Watch for logins
+watch=(notme)
+
+# allow me to cd directly into a dir in $PORTS_DIR from anywhere
+#  $ cd shells && pwd
+#  /usr/ports/shells
+if [ "${OS}" = OpenBSD ]; then
+       cdpath=( ${PORTS_DIR} )
+fi
+
+# When listing options (by `setopt', `unsetopt', `set -o' or `set +o'),
+# those turned on by default appear in the list prefixed with `no'.
+# Hence (unless KSH_OPTION_PRINT is set), `setopt' shows all options
+# whose settings are changed from the default.
+#
+# Report the status of background jobs immediately, rather than
+# waiting until just before printing a prompt.
+setopt notify 
+
+# Allow comments even in interactive shells i. e.
+# $ uname # This command prints system informations
+# zsh: bad pattern: #
+# $ setopt interactivecomments
+# $ uname # This command prints system informations
+# OpenBSD
+setopt interactivecomments
+
+# Send *not* a HUP signal to running jobs when the shell exits.
+setopt nohup
+
+# Print a carriage return just before printing a prompt in the line
+# editor. For example:
+#  $ echo foo
+#  foo
+#  $ echo -n foo
+#  $ setopt nopromptcr
+#  $ echo -n foo
+#  foo$
+#--------------------------------------------------
+# setopt nopromptcr
+#-------------------------------------------------- 
+
+# Perform =filename access
+#  $ setopt EQUALS
+#  $ echo =ls
+#  /bin/ls
+#  $ unsetopt EQUALS
+#  $ echo =ls 
+#  =ls
+setopt equals
+
+# Beep on an ambiguous completion.  More accurately, this forces the
+# completion widgets to return status 1 on an ambiguous completion, which
+# causes the shell to beep if the option BEEP is also set; this may
+# be modified if completion is called from a user-defined widget.
+setopt nolistbeep
+
+# Try to make the completion list smaller (occupying less lines) by
+# printing the matches in columns with different widths.
+setopt list_packed
+
+# Do not exit on end-of-file.  Require the use of exit or logout instead.
+# However, ten consecutive EOFs will cause the shell to exit anyway, to
+# avoid the shell hanging if its tty goes away. Also, if this option is
+# set and the Zsh Line Editor is used, widgets implemented by shell
+# functions can be bound to EOF (normally Control-D) without printing
+# the normal warning message.  This works only for normal widgets, not
+# for completion widgets.
+#setopt ignore_eof
+
+# if the braces aren't in either of the above forms, expands single
+# letters and ranges of letters, i. e.:
+#  $ print 1{abw-z}2
+#  $ 1a2 1b2 1w2 1x2 1y2 1z2
+setopt braceccl
+
+# Make the echo builtin compatible with the BSD man page echo(1)
+# command.
+#  $ echo "foo\bar\baz"
+#  foaaz
+#  $ unsetopt bsdecho
+#  $ echo "foo\bar\baz"
+#  foo\bar\baz
+unsetopt bsdecho
+
+# If the argument to a cd command (or an implied cd with the
+# AUTO_CD option set) is not a directory, and does not begin with a
+# slash, try to expand the expression as if it were preceded by a
+# '~' (see section Filename Expansion).
+setopt cdablevars
+
+# Report the status of background and suspended jobs before exiting a shell
+# with job control; a second attempt to exit the shell will succeed.
+setopt checkjobs
+
+# Make cd push the old directory onto the directory stack. 
+setopt autopushd 
+
+# change to directory without "cd"
+setopt autocd
+
+# Exchanges the meanings of `+' and `-' when used with a number to 
+# specify a directory in the stack.      
+setopt pushdminus
+
+# If set, parameter expansion, command substitution and arithmetic 
+# expansion are performed in prompts.   
+setopt pushdsilent
+
+# Treat the '#', '~' and '^' characters as part of patterns 
+# for filename generation, etc. (An initial unquoted '~'
+# always produces named directory expansion.)
+# | $ grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z)
+# searches for word not in compressed files
+setopt extendedglob 
+
+# Do query the user before executing 'rm *' or 'rm path/*'
+# $ rm -rf *
+# zsh: sure you want to delete all the files in /home/dope/foo [yn]?
+setopt normstarsilent 
+
+# If querying the user before executing `rm *' or `rm path/*',
+# first wait ten seconds and ignore anything typed in that time.
+# This avoids the problem of reflexively answering `yes' to the query
+# when one didn't really mean it. The wait and query can always be
+# avoided by expanding the `*' in ZLE (with tab).
+setopt no_rm_star_wait
+
+# Shut up ;)
+setopt nobeep 
+
+# Beep when an attempt is made to access a history entry which
+# isn't there.
+setopt histbeep
+
+# When writing out the history file, older commands that duplicate newer ones
+# are omitted.
+setopt HISTSAVENODUPS
+
+# When searching for history entries in the line editor, do not display
+# duplicates of a line previously found, even if the duplicates are not
+# contiguous.                       
+setopt HISTFINDNODUPS
+
+# If the internal history needs to be trimmed to add the current command line,
+# setting this option will cause the oldest history event that has a duplicate
+# to be lost before losing a unique event from the list.
+# You should be sure to set the value of HISTSIZE to a larger number
+# than SAVEHIST in order to give you some room for the duplicated
+# events, otherwise this option will behave just like HIST_IGNORE_ALL_DUPS
+# once the history fills up with unique events.
+setopt hist_expire_dups_first
+
+# If a new command line being added to the history list duplicates an
+# older one, the older command is removed from the list (even if it is
+# not the previous event).
+setopt hist_ignore_all_dups
+
+# Do not enter command lines into the history list
+# if they are duplicates of the previous event.
+setopt hist_ignore_dups
+
+# Remove command lines from the history list when the first character on
+# the line is a space, or when one of the expanded aliases contains a
+# leading space.
+# Note that the command lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the line.  If you want to make it vanish right away without
+# entering another command, type a space and press return.
+setopt hist_ignore_space
+
+# HIST_REDUCE_BLANKS
+# Remove superfluous blanks from each command line
+# being added to the history list.
+setopt hist_reduce_blanks
+
+# Whenever the user enters a line with history expansion,
+# don't execute the line directly; instead, perform
+# history expansion and reload the line into the editing buffer.
+setopt hist_verify
+
+# Remove function definitions from the history list.
+# Note that the function lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the definition.
+#setopt hist_no_functions
+
+# Remove the history (fc -l) command from the history list
+# when invoked.
+# Note that the command lingers in the internal history until the next
+# command is entered before it vanishes, allowing you to briefly reuse
+# or edit the line.
+setopt hist_no_store
+
+# If this is set, zsh sessions will append their history list to
+# the history file, rather than overwrite it. Thus, multiple parallel
+# zsh sessions will all have their history lists added to the
+# history file, in the order they are killed
+setopt appendhistory
+
+# If unset, the cursor is set to the end of the word if completion is
+# started. Otherwise it stays there and completion is done from both ends.
+setopt completeinword 
+
+#  When listing files that are possible completions, show the
+# type of each file with a trailing identifying mark.
+setopt list_types
+
+#  Do not require a leading '.' in a filename to be matched explicitly.
+setopt globdots
+
+# Try to correct the spelling of all arguments in a line.
+setopt correctall
+
+# List jobs in the long format by default.
+setopt longlistjobs 
+
+# Print eight bit characters literally in completion lists, etc.
+# This option is not necessary if your system correctly returns the
+# printability of eight bit characters (see man page ctype(3)).
+setopt printeightbit
+
+# Don't push multiple copies of the same directory onto the directory
+# stack
+setopt pushdignoredups 
+
+# This option both imports new commands from the history file, and also
+# causes your typed commands to be appended to the history file (the
+# latter is like specifying INC_APPEND_HISTORY).
+# The history lines are also output with timestamps ala
+# EXTENDED_HISTORY (which makes it easier to find the spot where
+# we left off reading the file after it gets re-written).
+setopt sharehistory 
+
+# Try to correct the spelling of all arguments in a line.
+# No .. not really .. it's make me crazy *g*
+# setopt correctall
+
+# Save each command's beginning timestamp (in seconds since the epoch)
+# and the duration (in seconds) to the history file.  The format of
+# this prefixed data is:
+# ':<beginning time>:<elapsed seconds>;<command>'.
+# i. e.:
+#  : 1054961691:0;/usr/games/fortune -f
+setopt EXTENDEDHISTORY
+
+# Allow the short forms of for, select, if, and function constructs, i.
+# e.: ``for i (*.o) rm $i'' instead of ``for i in *.o; do rm $i; done''
+setopt shortloops
+
+# Do *not* run all background jobs at a lower priority
+  unsetopt bgnice 
+# If this option is unset, output flow control via start/stop characters
+# (usually assigned to ^S/^Q) disabled in the shell's editor.
+  unsetopt flow_control
diff --git a/zsh_people/strcat/zshrc b/zsh_people/strcat/zshrc
new file mode 100644 (file)
index 0000000..7845ce6
--- /dev/null
@@ -0,0 +1,148 @@
+# $Id: .zshrc,v 1.17 2003/07/03 18:51:22 dope Exp dope $
+# 
+# README!
+# 
+# Filename       : ~/.zshrc
+# Purpose        : setup file for the shell 'zsh'
+# Author         : Christian Schneider <strcat@gmx.net>
+# Homepage       : http://www.strcat.de/zsh/
+# Latest release : <http://strcat.neessen.net/dotfiles/#zsh>
+# Needed files   : <http://strcat.neessen.net/dotfiles/zsh/dot-zsh.tar.gz>>
+#
+# Structure of this file:
+#  Lines starting with '#' are comments.
+#
+# Take a quick (haha) look on zshbuiltins(1), zshcompwid(1),
+# zshcompsys(1), zshcompctl(1), zshexpn(1), zshmisc(1), zshmodules(1),
+# zshoptions(1), zshparam(1), zshzle(1) or - for hardliner -
+# zshall(1).
+#  ,----[ Overview (Zsh 4.2.1) ]
+#  | [dope@dreckskind:~]% man -k zsh
+#  | zsh (1)              - the Z shell (330 lines)
+#  | zshall (1)           - the Z shell meta-man page (18348 lines)
+#  | zshcompwid (1)       - zsh completion widgets (1320 lines)
+#  | zshcompsys (1)       - zsh completion system (3432 lines)
+#  | zshzftpsys (1)       - zftp function front-end (858 lines)
+#  | zshbuiltins (1)      - zsh built-in commands (1716 lines)
+#  | zshoptions (1)       - zsh options (1254 lines)
+#  | zshzle (1)           - zsh command line editor (1320 lines)
+#  | zshparam (1)         - zsh parameters (1056 lines)
+#  | zshmodules (1)       - zsh loadable modules (2442 lines)
+#  | zshmisc (1)          - everything and then some (1782 lines)
+#  | zshcompctl (1)       - zsh programmable completion (858 lines)
+#  | zshexpn (1)          - zsh expansion and substitution (1914 lines)
+#  `----
+#  
+# Zsh start up sequence:
+#  1) /etc/zshenv   -> Always run for every zsh.   (login + interactive + other)
+#  2)   ~/.zshenv   -> Usually run for every zsh.  (login + interactive + other)
+#  3) /etc/zprofile -> Run for login shells.       (login)
+#  4)   ~/.zprofile -> Run for login shells.       (login)
+#  5) /etc/zshrc    -> Run for interactive shells. (login + interactive)
+#  6)   ~/.zshrc    -> Run for interactive shells. (login + interactive)
+#  7) /etc/zlogin   -> Run for login shells.       (login)
+#  8)   ~/.zlogin   -> Run for login shells.       (login)
+#
+# Last modified: [ 2004-09-15 02:43:09 ]
+#
+#
+# THIS FILE IS NOT INTENDED TO BE USED AS /etc/zshrc, NOR WITHOUT
+# EDITING!
+#
+# This file is based on ideas of:
+#  Sven Guckes...: <http://www.guckes.net/setup/zshrc>
+#  Michael Prokop: <http://www.michael-prokop.at/computer/config/.zshrc>
+#  Marijan Peh...: <http://free-po.hinet.hr/MarijanPeh/files/zshrc>
+#  Adam Spiers...: <http://adamspiers.org/computing/shells/>
+#
+# Tested and used unter {Net,Open}BSD, Slackware, Gentoo and LFS
+# with Zsh 4.0.7, 4.0.9, 4.1.1, 4.2.0 and 4.2.1
+
+# Login shell? If you want to know, you can type the following which will
+# do nothing it's a login shell or warn you if not.
+#--------------------------------------------------
+# if [[ ! -o login ]]; then
+#         print "Warning: It is *not* a login-Shell\!"
+# fi
+#-------------------------------------------------- 
+
+# -f true if file exists and is a regular file. See
+#  | man zshmisc | less -p "^CONDITIONAL EXPRESSIONS"
+# for details.
+#
+# Test and then source exported variables.
+if [ -f ~/.zsh/zshexports ]; then
+        source ~/.zsh/zshexports
+else
+        print "Note: ~/.zsh/zshexports is unavailable."
+fi
+
+# painless is my "what-happend-when" - box (for debugging and so on)
+if [ ${HOSTNAME} = painless ] && [ -e ~/.zsh/zshdevel ]; then
+       source ~/.zsh/zshdevel
+fi
+
+# Test and then source some options
+if [ -f ~/.zsh/zshoptions ]; then
+        source ~/.zsh/zshoptions
+else
+        print "Note: ~/.zsh/zshoptions is unavailable."
+fi
+
+# Test and then source alias definitions.
+if [ -f ~/.zsh/zshaliases ]; then
+        source ~/.zsh/zshaliases
+else
+        print "Note: ~/.zsh/zshaliases is unavailable."
+fi
+
+# Test and then source the functions.
+if [ -f ~/.zsh/zshfunctions ]; then
+        source ~/.zsh/zshfunctions
+else
+        print "Note: ~/.zsh/zshfunctions is unavailable."
+fi
+
+# Test and then source the lineeditor
+if [ -f ~/.zsh/zshzle ]; then
+        source ~/.zsh/zshzle
+else
+        print "Note: ~/.zsh/zshzle is unavailable."
+fi
+
+# Test and then source the "Statusbar-Functions"
+#--------------------------------------------------
+# if [ -f ~/.zsh/zshstatusbar ];then
+#         source ~/.zsh/zshstatusbar
+# else
+#         print "Note: ~/.zsh/zshstatusbar is unavailable."
+# fi
+#-------------------------------------------------- 
+
+# Test and then source the keybindings
+if [ -f ~/.zsh/zshbindings ]; then
+        source ~/.zsh/zshbindings
+else
+        print "Note: ~/.zsh/zshbindings is not available."
+fi
+
+# Test and then source the completionsystem
+if [ -f ~/.zsh/zshcompctl ]; then
+        source ~/.zsh/zshcompctl
+else
+        print "Note: ~/.zsh/zshcompctl is unavailable."
+fi
+
+# Test and then source the zstyles
+if [ -f ~/.zsh/zshstyle ]; then
+        source ~/.zsh/zshstyle
+else
+        print "Note: ~/.zsh/zshstyle is unavailable."
+fi
+
+# Test and then source the wretched rest 
+if [ -f ~/.zsh/zshmisc ]; then
+        source ~/.zsh/zshmisc
+else
+        print "Note: ~/.zsh/zshmisc is unavailable."
+fi
diff --git a/zsh_people/strcat/zshstatusbar b/zsh_people/strcat/zshstatusbar
new file mode 100644 (file)
index 0000000..36825f7
--- /dev/null
@@ -0,0 +1,124 @@
+# Posted by Thomas Köhler on the Zsh-Mailinglist (since ~1999)
+#
+# vi mode extensions
+redisplay() {
+   builtin zle .redisplay
+   ( true ; show_mode "INSERT") &!
+}
+redisplay2() {
+   builtin zle .redisplay
+   (true ; show_mode "COMMAND") &!
+}
+screenclear () {
+   echo -n "\033[2J\033[400H"
+   builtin zle .redisplay
+   (true ; show_mode "INSERT") &!
+}
+
+screenclearx () {
+   repeat 2 print 
+   local MYLINE="$LBUFFER$RBUFFER"
+   highlight $MYLINE
+   repeat 4 print 
+   builtin zle redisplay
+}
+show_mode() {
+   local COL
+   local x
+   COL=$[COLUMNS-3]
+   COL=$[COL-$#1]
+   x=$(echo $PREBUFFER | wc -l )
+#   x=$[x+1]
+   x=$[x+0]
+   echo -n "\e7\e[$x;A\e[0;G"
+   echo -n ""
+   echo -n "\e[0;37;44m--$1--\e[0m"
+   echo -n "\e8"
+}
+
+# vi-add-eol 
+#    Move  to the end of the line and enter insert mode.
+vi-add-eol() {
+   show_mode "INSERT"
+   builtin zle .vi-add-eol
+}
+
+# vi-add-next
+#    Enter insert mode after the  current  cursor  position, without changing lines.
+vi-add-next() {
+   show_mode "INSERT"
+   builtin zle .vi-add-next
+}
+
+# vi-change 
+#    Read a movement command from the keyboard, and kill from the
+#    cursor position to the endpoint of the movement. Then enter
+#    insert mode. If the command is vi-change.
+vi-change() {
+   show_mode "INSERT"
+   builtin zle .vi-change
+}
+
+# vi-change-eol 
+#    Kill  to the end of the line and enter insert mode.
+vi-change-eol() {
+   show_mode "INSERT"
+   builtin zle .vi-change-eol
+}
+
+# vi-change-whole-line 
+#    Kill the current line and enter insert mode.
+vi-change-whole-line() {
+   show_mode "INSERT"
+   builtin zle .vi-change-whole-line
+}
+
+# vi-insert
+#    Enter insert mode.
+vi-insert() {
+   show_mode "INSERT"
+   builtin zle .vi-insert
+}
+
+# vi-insert-bol 
+#    Move to the first non-blank character on the line and enter insert mode.
+vi-insert-bol() {
+   show_mode "INSERT"
+   builtin zle .vi-insert-bol
+}
+
+# vi-open-line-above 
+#    Open a line above the cursor and enter insert mode.
+vi-open-line-above() {
+   show_mode "INSERT"
+   builtin zle .vi-open-line-above
+}
+
+# vi-open-line-below
+#    Open a line below the cursor and enter insert mode.
+vi-open-line-below() {
+   show_mode "INSERT"
+   builtin zle .vi-open-line-below
+}
+
+# vi-substitute
+#    Substitute the next character(s).
+vi-substitute() {
+   show_mode "INSERT"
+   builtin zle .vi-substitute
+}
+
+#vi-replace
+#   Enter overwrite mode.
+vi-replace() {
+   show_mode "REPLACE"
+   builtin zle .vi-replace
+}
+
+# vi-cmd-mode
+#    Enter  command  mode;  that  is, select the `vicmd' keymap.  Yes,
+#    this is bound  by  default  in  emacs mode.
+vi-cmd-mode() {
+   show_mode "COMMAND"
+   builtin zle .vi-cmd-mode
+}
diff --git a/zsh_people/strcat/zshstyle b/zsh_people/strcat/zshstyle
new file mode 100644 (file)
index 0000000..f6464a5
--- /dev/null
@@ -0,0 +1,96 @@
+# 'zstyle' (Defines the given style for the pattern) 
+# Normally, the completion code will not produce the directory names
+# '.' and '..' as possible completions. If this style is set to
+# 'true', it will add both '.' and '..' as possible completions; if it
+# is set to '..', only '..' will be added.
+# zstyle ':completion:*' special-dirs .. # Fnord
+zstyle -e ':completion:*' special-dirs '[[ $PREFIX = (../)#(|.|..) ]] && reply=(..)'
+
+# add colors to completions
+# general completion
+  zstyle ':completion:*:descriptions' format $'%{\e[0;33m%}%d:%{\e[0m%}'
+  zstyle ':completion:*' select-prompt %SScrolling active: current selection at %P Lines: %m
+  zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}'
+  zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+# hosts (background = red, foreground = black)
+  zstyle ':completion:*:*:*:*:hosts' list-colors '=*=30;41'
+# usernames (background = white, foreground = blue)
+  zstyle ':completion:*:*:*:*:users' list-colors '=*=34;47'
+# If the zsh/complist module is loaded, this style can be used to set
+# color specifications. This mechanism replaces the use of the
+# ZLS_COLORS and ZLS_COLOURS parameters.
+# PIDs (bold red)
+  zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
+  zstyle ':completion:*:*:kill:*' menu yes select
+  zstyle ':completion:*:kill:*' force-list always
+
+# I'm bonelazy ;) Complete the hosts and - last but not least - the remote
+# directories. Try it:
+#  $ scp file username@<TAB><TAB>:/<TAB>
+zstyle ':completion:*:(ssh|scp|ftp):*' hosts $hosts
+zstyle ':completion:*:(ssh|scp|ftp):*' users $users
+
+# Not realy needed.
+#  $ cd <TAB>
+#  Komplettiere local directory
+#  <list existing directorys>
+# zstyle ':completion:*' format 'Komplettiere %d'
+
+# Don't complete backup files as executables
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# determine in which order the names (files) should be
+# listed and completed when using menu completion.
+# `size' to sort them by the size of the file
+# `links' to sort them by the number of links to the file
+# `modification' or `time' or `date' to sort them by the last modification time
+# `access' to sort them by the last access time
+# `inode' or `change' to sort them by the last inode change time
+# `reverse' to sort in decreasing order
+# If the style is set to any other value, or is unset, files will be
+# sorted alphabetically by name.
+zstyle ':completion:*' file-sort name
+
+# how many completions switch on menu selection
+# use 'long' to start menu compl. if list is bigger than screen
+# or some number to start menu compl. if list has that number
+# of completions (or more).
+zstyle ':completion:*' menu select=long
+
+# If there are more than 5 options, allow selecting from a menu with
+# arrows (case insensitive completion!).
+zstyle ':completion:*-case' menu select=5
+
+# don't complete backup files as executables
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# filename suffixes to ignore during completion (except after rm
+# command)
+zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns  '*?.(o|c~|old|pro|zwc)' '*~'
+
+# Messages/warnings format
+zstyle ':completion:*:messages' format $'%{\e[0;31m%}%d%{\e[0m%}'
+zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for: %d%{\e[0m%}'
+zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
+zstyle ':completion:*' group-name ''
+
+# completions for some progs. not in default completion system
+zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
+zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG):ogg\ files *(-/):directories'
+
+# Prevent CVS files/directories from being completed
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+
+# Ignore completion functions for commands you don't have:
+zstyle ':completion:*:functions' ignored-patterns '_*'
+
+# allow one error for every three characters typed in approximate
+# completer
+zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )'
+
+# offer indexes before parameters in subscripts
+zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
+
+# insert all expansions for expand completer
+zstyle ':completion:*:expand:*' tag-order all-expansions
diff --git a/zsh_people/strcat/zshzle b/zsh_people/strcat/zshzle
new file mode 100644 (file)
index 0000000..77edddf
--- /dev/null
@@ -0,0 +1,22 @@
+# Edit the command line using your usual editor.
+  zle -N edit-command-line
+# Setting abbreviation like 'iab' with Vim
+  zle -N my-expand-abbrev
+# Needed for my "Vim-like statusline". See ~/.zsh/zshstatusbar for
+# details.
+#  zle -N redisplay
+#  zle -N redisplay2
+#  zle -N screenclear
+#  zle -N screenclearx
+#  zle -N vi-add-eol
+#  zle -N vi-add-next
+#  zle -N vi-change
+#  zle -N vi-change-eol
+#  zle -N vi-change-whole-line
+#  zle -N vi-insert
+#  zle -N vi-insert-bol
+#  zle -N vi-open-line-above
+#  zle -N vi-open-line-below
+#  zle -N vi-substitute
+#  zle -N vi-replace
+#  zle -N vi-cmd-mode
diff --git a/zsh_people/thomas_koehler/klammer.zsh b/zsh_people/thomas_koehler/klammer.zsh
new file mode 100644 (file)
index 0000000..055a1c9
--- /dev/null
@@ -0,0 +1,46 @@
+
+### put all of this in .zshrc or try ". ~/zsh/klammer.zsh" in .zshrc
+
+COLORX="\e[0;31;47m"
+COLOR0="\e[0m"
+COLOR1="\e[0;30;41m"
+COLOR2="\e[0;30;42m"
+COLOR3="\e[0;30;43m"
+COLOR4="\e[0;30;44m"
+COLOR5="\e[0;30;45m"
+COLOR6="\e[0;30;46m"
+COLOR7="\e[0;30;47m"
+COLOR8="\e[0;34;41m"
+COLOR9="\e[0;34;43m"
+COLOR10="\e[0;37;44m"
+COLOROFF="\e[0m"
+
+
+highlight() {
+   line=$*
+   i=0
+   j=0
+   strlen=$#line
+   while [ $i -le $strlen ] ; do
+      i=$[i+1]
+      x=$line[$i]
+      case $x in
+         (\{) j=$[j+1] ; eval print -n $"COLOR$j"$"x"$"COLOROFF" ;;
+         (\})  eval print -n $"COLOR$j"$"x"$"COLOROFF" ; j=$[j-1] ;;
+         (*) print -n $x ;;
+      esac
+   done
+   print $COLOROFF
+}
+
+screenclearx () {
+   print -n '\e7'
+   print 
+   local MYLINE="$LBUFFER$RBUFFER"
+   highlight $MYLINE
+   print -n '\e8'
+#   print "${COLORX}Hit Enter to continue${COLOROFF}"
+#   read -k
+}
+zle -N screenclearx
+bindkey "^Xl" screenclearx
diff --git a/zsh_people/thomas_koehler/uhr.zsh b/zsh_people/thomas_koehler/uhr.zsh
new file mode 100644 (file)
index 0000000..699287a
--- /dev/null
@@ -0,0 +1,21 @@
+# a watch for the prompt
+# I have a multiline prompt, so beware!
+# you may need to adjust the parameters
+trap CRON ALRM
+TMOUT=1
+CRON() {
+   STRING=$(date)
+   # to right adjust the date: How many columns does our terminal
+   # have? Reduce by the length of $STRING+5
+   COL=$[COLUMNS-5]
+   COL=$[COL-$#STRING]
+   # Store the current cursor position; jump up two lines; jump to
+   # columns $COL
+   echo -n "\e7\e[2;A\e[$COL;G"
+   echo -n ""
+   # echo the date
+   echo -n "\e[0;37;44m-- $STRING --\e[0m"
+   # restore cursor position
+   echo -n "\e8"
+}
+
diff --git a/zsh_people/thomas_koehler/zshrc b/zsh_people/thomas_koehler/zshrc
new file mode 100644 (file)
index 0000000..61b6b85
--- /dev/null
@@ -0,0 +1,644 @@
+### OPTIONS
+setopt completeinword
+setopt no_always_last_prompt
+setopt rm_star_silent
+setopt automenu
+setopt extended_glob
+setopt autopushd
+setopt nobgnice
+setopt hist_ignore_all_dups
+setopt sharehistory
+unsetopt promptcr
+### path history
+DIRSTACKSIZE=15
+setopt autopushd pushdminus pushdsilent pushdtohome
+setopt autolist
+setopt extendedglob
+
+
+### ALIASES
+alias dh="dirs -v"
+# I used to use xv to often...
+alias xv="gqview -l"
+alias run-help=man
+alias lterm="export TERM=linux"
+alias ll="ls -al --color"
+alias ls="ls --color"
+alias l="ls -a --color"
+#alias ll="/bin/ls -al"
+#alias ls="/bin/ls"
+#alias l="/bin/ls -a"
+# export LYNX_CFG=~/.lynxrc
+alias lynx="noglob command lynx -cfg=~/.lynxrc"
+
+### ENVIRONMENT VARIABLES
+LC_COLLATE=C ; export LC_COLLATE
+MAILCHECK=86400
+# export LANG=de_DE@euro
+export LANG=de_DE
+export LC_MESSAGES=en_US
+
+export ORACLE_HOME=/home/oracle/OraHome1
+# export ORACLE_SID=whatever
+
+COLORX="\e[0;31;47m"
+COLOR0="\e[0m"
+COLOR1="\e[0;30;41m"
+COLOR2="\e[0;30;42m"
+COLOR3="\e[0;30;43m"
+COLOR4="\e[0;30;44m"
+COLOR5="\e[0;30;45m"
+COLOR6="\e[0;30;46m"
+COLOR7="\e[0;30;47m"
+COLOR8="\e[0;34;41m"
+COLOR9="\e[0;34;43m"
+COLOR10="\e[0;37;44m"
+COLOROFF="\e[0m"
+
+red='%{\e[0;31m%}'
+white_on_blue='%{\e[0;37;44m%}'
+green='%{\e[0;32m%}'
+yellow='%{\e[0;33m%}'
+blue='%{\e[0;34m%}'
+magenta='%{\e[0;35m%}'
+cyan='%{\e[0;36m%}'
+nocolor='%{\e[0m%}'
+
+ZDOTDIR="$HOME/.zsh"
+
+if [ "$TERM" = "xterm-debian" ] ; then 
+   chpwd () {
+      echo -n "\e]2;$LOGNAME@$(hostname): $(pwd)\a"
+   }
+fi
+
+PROMPT2='%_> '
+RPROMPT='%{\e[0;33m%}%1v%{\e[0m%}'
+
+export HISTFILE=~/.zshhistory
+export HISTSIZE=500
+export SAVEHIST=500
+export NNTPSERVER=picard.franken.de
+###        
+export PATH="/usr/lib/compilercache:$JAVA_HOME/bin:/home/tkoehler/bin:/usr/local/bin/X11:/usr/local/bin:/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin:/usr/bin/X11:/local/bin:/usr/games:/usr/lib/mutt:${ORACLE_HOME}/bin:/usr/lib/ICAClient:/usr/local/sap/SAPGUI/6.30/bin"
+
+VIM=/usr/local/share/vim
+echo ~VIM >/dev/null
+
+# alias JAVA_HOME="export JAVA_HOME=/usr/lib/jdk1.1/"
+export JAVA_HOME=/usr/local/java/j2sdk1.4.2_01
+
+## SAP
+#### PLATINHOME="/usr/local/sap/SAPGUI/6.30/"
+PLATIN_JAVA="/usr/local/java/j2sdk1.4.2_01/bin/java"
+PLATIN_JAVA_VER=1.4.2
+###   export PLATINHOME PLATIN_JAVA PLATIN_JAVA_VER
+export PLATIN_JAVA PLATIN_JAVA_VER
+export EDITOR=/usr/local/bin/vim
+export SLANG_EDITOR="/usr/local/bin/vim %s"
+
+export MOZILLA_HOME="/usr/local/netscape"
+
+export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH
+export CPLUS_INCLUDE_PATH
+
+export IRCNAME="http://jeanluc-picard.de/irc.html"
+export PAGER=less
+
+export LD_LIBRARY_PATH=/home/tkoehler/lib:/home/oracle/OraHome1/lib/
+
+# export LESS
+
+
+export ZLS_COLOURS
+ZLS_COLOURS="no=36;40:fi=36;40:di=32;40:ln=33;40:pi=31;40:so=22;40:bd=44;37:cd=44;37:ex=35;40:mi=36;40:lc=\e[:rc=m:mi=37;41"
+LS_COLORS=$ZLS_COLOURS
+export LS_COLORS
+#### muß mal noch rausfinden, warum die hier in ganz neuen zsh-Versionen nicht
+#### mehr so tun...
+export ZLS_COLOURS
+#       no 0   for normal text  (i.e.  when  displaying  something
+#              other than a matched file)
+#       fi 0   for regular files
+#       di 32  for directories
+#       ln 36  for symbolic links
+#       pi 31  for named pipes (FIFOs)
+#       so 33  for sockets
+#       bd 44;37
+#              for block devices
+#       cd 44;37
+#              for character devices
+#       ex 35  for executable files
+#       mi none
+#              for non-existent file (default is the value defined
+#              for fi)
+#       lc \e[ for the left code (see below)
+#       rc m   for the right code
+#       ec none
+#              for the end code
+MANPATH=/usr/man:/usr/share/man:/usr/X11R6/man:/usr/local/man
+
+### cool
+export REPORTTIME=3
+
+### FUNCTIONS
+x() { a=$1 ; shift ; echo "$@" |  xargs $a }
+prepare_ssh() {
+   if [ -f $HOME/.ssh/agent_var ] ; then
+      . $HOME/.ssh/agent_var
+   else
+      SSH_AGENT_PID=1
+   fi
+   if kill -0 $SSH_AGENT_PID ; then
+      :
+   else
+      eval `ssh-agent`
+      ssh-add $HOME/.ssh/id_rsa
+      touch $HOME/.ssh/agent_var ; chmod 600 $HOME/.ssh/agent_var
+      echo "export SSH_AGENT_PID=$SSH_AGENT_PID" > $HOME/.ssh/agent_var
+      echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $HOME/.ssh/agent_var
+   fi
+}
+
+if [ -z "$SSH_AGENT_PID" ] ; then
+    prepare_ssh
+fi
+
+archive_this_dir() {
+        if [ -z "$1" ] ; then
+                echo "Usage: archive_this_dir LABEL"
+                return 1
+        fi
+        ARCHIVE_TO_CD $1 $PWD 0xEA8CFEDE
+}
+
+archive_this_dir_as_pics() {
+        if [ -z "$1" ] ; then
+                echo "Usage: archive_this_dir_as_pics LABEL"
+                return 1
+        fi
+        ARCHIVE_PICTURES_TO_CD $1 $PWD 0xEA8CFEDE
+}
+
+gpg_recv_key() {
+        gpg --keyserver wwwkeys.pgp.net --keyserver-options honor-http-proxy --recv-keys $@
+}
+
+### highlight current line's {} pairs
+### yes, this functions doesn't work correct in all situations,
+### but it's a nice thing
+highlight() {
+   line=$*
+   i=0
+   j=0
+   strlen=$#line
+   while [ $i -le $strlen ] ; do
+      i=$[i+1]
+      x=$line[$i]
+      case $x in
+         (\{) j=$[j+1] ; eval print -n $"COLOR$j"$"x"$"COLOROFF" ;;
+         (\})  eval print -n $"COLOR$j"$"x"$"COLOROFF" ; j=$[j-1] ;;
+         (*) print -n $x ;;
+      esac
+   done
+   print $COLOROFF
+}
+
+NEW() {
+    vim -c "se tw=70" `date +%Y%m%d-%R`.txt
+}
+
+### set xterm's icon text, its titletext, or both at once
+seticontext() {
+   print "\033]1;$@\007"
+}
+settitletext() {
+   print "\033]2;$@\007"
+}
+settitle() {
+   print "\033]0;$@\007"
+}
+
+### a function for setting up proxy settings
+set_proxy() {
+export http_proxy="http://proxy:3128"
+export https_proxy="http://proxy:3128"
+export ftp_proxy="http://proxy:3128"
+}
+
+namedir () { eval "$1=$PWD" ; eval "echo  ~$1" }
+
+### run help on a vim help topic
+vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" }
+gvimhelp () { gvim -c "help $1" -c on -c "au! VimEnter *" }
+
+acroread() {
+   LANG=C command acroread $@
+}
+galeon() {
+   LANG=de_DE command galeon $@
+}
+aumix() {
+   LANG=en command aumix $@
+}
+function startx() {
+   command startx "$@" >& ~/.startx.out
+}
+
+
+function precmd {
+# echo -n "\e]2;$LOGNAME@$(hostname): $(pwd)\a"
+#  if [ "$TERM" = "screen-w" ] ; then
+#    perl ~/bin/screen_hardstatus.pl $MYTTY $USER $HOST &!
+#   PROMPT=$(perl ~/bin/screen_hardstatus.pl " " $USER $HOST $ZSH_VERSION)
+   apm=$(apm|sed -e 's/%/%%/')
+   PROMPT="${green}$(uptime) $nocolor
+${white_on_blue}--INSERT--${cyan}  zsh version: $ZSH_VERSION $yellow Return Code: %? $nocolor
+$blue%h $red%n@%m ${yellow}TTY:%l$cyan - $apm
+$cyan%~>$nocolor "
+   # PROMPT="$PROMPT$WHO\n"
+#  fi
+
+    case "$jobstates" in
+    (*running*suspended*)
+      psvar[1]="There are running and stopped jobs.";;
+    (*suspended*running*)
+      psvar[1]="There are running and stopped jobs.";;
+    (*suspended*)
+      psvar[1]="There are stopped jobs.";;
+    (*running*)
+      psvar[1]="There are running jobs.";;
+    (*)
+      psvar[1]="";;
+    esac
+}
+
+# pipe jobs to less
+jless() {
+   typeset -x -A tmpstates
+   for i in $jobstates[(I)*] 
+   do
+      tmpstates[$i]=$jobstates[$i]
+   done
+   for i in $tmpstates[(I)*]
+   do
+      echo "[$i]\t$tmpstates[$i]"
+   done  | sort -n |  less
+   unset tmpstates
+}
+
+function dmalloc { eval `command dmalloc -b $*` }
+
+### KEY BINDINGS
+# vi keybindings
+bindkey -v
+
+bindkey "\e[A" history-beginning-search-backward
+bindkey "\e[B" history-beginning-search-forward
+bindkey "\e[C" forward-char
+bindkey "\e[D" backward-char
+bindkey "^Xq" push-line
+bindkey "^Xr" history-incremental-search-backward
+bindkey "^Xs" history-incremental-search-forward
+bindkey "^X_" insert-last-word
+bindkey "^Xa" accept-and-hold
+bindkey "^X^H" run-help
+bindkey "^Xh" _complete_help
+bindkey "^I" expand-or-complete
+bindkey "^E" expand-word
+bindkey "^N" menu-complete
+bindkey "^P" reverse-menu-complete
+bindkey -M vicmd "^R" redo
+bindkey -M vicmd "u" undo
+bindkey -M vicmd "ga" what-cursor-position
+
+
+### VI MODE EXTENSIONS
+redisplay() {
+   builtin zle .redisplay
+#   L=$[LINES - 1]
+#   echo -n "\033[$L;0;H"
+   ( true ; show_mode "INSERT") &!
+}
+redisplay2() {
+   builtin zle .redisplay
+#   L=$[LINES - 1]
+#   echo -n "\033[$L;0;H"
+   (true ; show_mode "NORMAL") &!
+}
+zle -N redisplay
+zle -N redisplay2
+bindkey -M viins "^X^R" redisplay
+bindkey -M vicmd "^X^R" redisplay2
+
+screenclear () {
+   echo -n "\033[2J\033[400H"
+#repeat $[LINES - 2] echo
+   builtin zle .redisplay
+#   builtin zle .clear-screen
+   (true ; show_mode "INSERT") &!
+}
+zle -N screenclear
+bindkey "\f" screenclear
+
+screenclearx () {
+   # print -n '\e7'
+   repeat 2 print 
+   local MYLINE="$LBUFFER$RBUFFER"
+   highlight $MYLINE
+   repeat 4 print 
+   builtin zle redisplay
+   # print -n '\e8'
+#   print "${COLORX}Hit Enter to continue${COLOROFF}"
+#   read -k
+}
+zle -N screenclearx
+bindkey "^Xl" screenclearx
+#bindkey "^L" screenclearx
+
+
+
+show_mode() {
+   local COL
+   local x
+   COL=$[COLUMNS-3]
+   COL=$[COL-$#1]
+   #x=$(wc -l $PREBUFFER)
+   x=$(echo $PREBUFFER | wc -l )
+   x=$[x+1]
+#   echo -n "\e7\e[0;$COL;H"
+   echo -n "\e7\e[$x;A\e[0;G"
+   echo -n ""
+#    c='`'
+#    echo -n "\e7\e[5A\e[0$c"
+   echo -n "\e[0;37;44m--$1--\e[0m"
+   echo -n "\e8"
+}
+
+###       vi-add-eol (unbound) (A) (unbound)
+###              Move  to the end of the line and enter insert mode.
+
+vi-add-eol() {
+   show_mode "INSERT"
+   builtin zle .vi-add-eol
+}
+zle -N vi-add-eol
+bindkey -M vicmd "A" vi-add-eol
+
+###       vi-add-next (unbound) (a) (unbound)
+###              Enter insert mode after the  current  cursor  posi­
+###              tion, without changing lines.
+
+vi-add-next() {
+   show_mode "INSERT"
+   builtin zle .vi-add-next
+   # OLDLBUFFER=$LBUFFER
+   # OLDRBUFFER=$RBUFFER
+   # NNUMERIC=$NUMERIC
+   # bindkey -M viins "\e" vi-cmd-mode-a
+}
+zle -N vi-add-next
+bindkey -M vicmd "a" vi-add-next
+
+#vi-cmd-mode-a() {
+#   show_mode "NORMAL"
+#   STRING="LLBUFFER=\${LBUFFER:s/$OLDLBUFFER//}"
+#   eval $STRING
+#   STRING="RRBUFFER=\${RBUFFER:s/$OLDRBUFFER/}"
+#   eval $STRING
+#   INS="$LLBUFFER$RRBUFFER"
+#   LBUFFER=$OLDLBUFFER
+#   repeat $NNUMERIC LBUFFER="$LBUFFER$INS"
+#   builtin zle .vi-cmd-mode
+#   unset LLBUFFER RRBUFFER NNUMERIC INS
+#   bindkey -M viins "\e" vi-cmd-mode
+#}
+#zle -N vi-cmd-mode-a
+
+###       vi-change (unbound) (c) (unbound)
+###              Read a movement command from the keyboard, and kill
+###              from  the  cursor  position  to the endpoint of the
+###              movement.  Then enter insert mode.  If the  command
+###              is vi-change, change the current line.
+
+vi-change() {
+   show_mode "INSERT"
+   builtin zle .vi-change
+}
+zle -N vi-change
+bindkey -M vicmd "c" vi-change
+
+###       vi-change-eol (unbound) (C) (unbound)
+###              Kill  to the end of the line and enter insert mode.
+
+vi-change-eol() {
+   show_mode "INSERT"
+   builtin zle .vi-change-eol
+}
+zle -N vi-change-eol
+bindkey -M vicmd "C" vi-change-eol
+
+###       vi-change-whole-line (unbound) (S) (unbound)
+###              Kill the current line and enter insert mode.
+
+vi-change-whole-line() {
+   show_mode "INSERT"
+   builtin zle .vi-change-whole-line
+}
+zle -N vi-change-whole-line
+bindkey -M vicmd "S" vi-change-whole-line
+
+###       vi-insert (unbound) (i) (unbound)
+###              Enter insert mode.
+
+vi-insert() {
+   show_mode "INSERT"
+   builtin zle .vi-insert
+}
+zle -N vi-insert
+bindkey -M vicmd "i" vi-insert
+
+###       vi-insert-bol (unbound) (I) (unbound)
+###              Move to the first non-blank character on  the  line
+###              and enter insert mode.
+
+vi-insert-bol() {
+   show_mode "INSERT"
+   builtin zle .vi-insert-bol
+}
+zle -N vi-insert-bol
+bindkey -M vicmd "I" vi-insert-bol
+
+###       vi-open-line-above (unbound) (O) (unbound)
+###              Open a line above the cursor and enter insert mode.
+
+vi-open-line-above() {
+   show_mode "INSERT"
+   builtin zle .vi-open-line-above
+}
+zle -N vi-open-line-above
+bindkey -M vicmd "O" vi-open-line-above
+
+###       vi-open-line-below (unbound) (o) (unbound)
+###              Open a line below the cursor and enter insert mode.
+
+vi-open-line-below() {
+   show_mode "INSERT"
+   builtin zle .vi-open-line-below
+}
+zle -N vi-open-line-below
+bindkey -M vicmd "o" vi-open-line-below
+
+###       vi-substitute (unbound) (s) (unbound)
+###              Substitute the next character(s).
+
+vi-substitute() {
+   show_mode "INSERT"
+   builtin zle .vi-substitute
+}
+zle -N vi-substitute
+bindkey -M vicmd "s" vi-substitute
+
+
+###       vi-replace (unbound) (R) (unbound)
+###              Enter overwrite mode.
+###
+
+vi-replace() {
+   show_mode "REPLACE"
+   builtin zle .vi-replace
+}
+zle -N vi-replace
+bindkey -M vicmd "R" vi-replace
+
+###       vi-cmd-mode (^X^V) (unbound) (^[)
+###              Enter  command  mode;  that  is, select the `vicmd'
+###              keymap.  Yes, this is bound  by  default  in  emacs
+###              mode.
+
+vi-cmd-mode() {
+   show_mode "NORMAL"
+   builtin zle .vi-cmd-mode
+}
+zle -N vi-cmd-mode
+bindkey -M viins "\e" vi-cmd-mode
+
+
+
+###       vi-oper-swap-case
+###              Read a movement command from the keyboard, and swap
+###              the case of all characters from the cursor position
+###              to the endpoint of the movement.  If  the  movement
+###              command  is vi-oper-swap-case, swap the case of all
+###              characters on the current line.
+###
+
+bindkey -M vicmd "g~" vi-oper-swap-case
+
+
+
+### LOAD EXTENSIONS
+zmodload zsh/parameter
+# zmodload zftp
+
+### MISC
+
+umask 022
+mesg n
+ulimit -c unlimited
+
+# create iab's for my mutt-aliases to be sourced from within vim
+# cat ~/.muttrc.aliases | sed -e 's/^#/"/' -e 's/^alias/iab/' > ~/.vim_mutt.aliases
+
+# Colourize cursor on Linux console
+# echo -e "\033[?17;216;64c"
+# echo -e "\033[?17;215;55c"
+
+######   ### a clock in the prompt. Yes, this _is_ cool. But sometimes, it interferes with
+######   ### other things.
+######   ### I no longer need it as I have a running clock on my desktop when running
+######   ### X and a clock in screen's hardstatus line when running on the console
+######   trap CRON ALRM
+######   TMOUT=1
+######   CRON() {
+######      local STRING
+######      local COL
+######      local x
+######      STRING=$(date)
+######      COL=$[COLUMNS-5]
+######      COL=$[COL-$#STRING]
+######      x=$(echo $PREBUFFER | wc -l )
+######      x=$[x+1]
+######      echo -n "\e7\e[$x;A\e[$COL;G\e[0;37;44m-- $STRING --\e[0m\e8"
+######   }
+
+### thanks to Riviera for this one...
+### don't use it at the moment
+#*Riviera* chpwd () {
+#*Riviera*         dirs >| $ZDOTDIR/zsave/zsh_dirstack_tty$tti
+#*Riviera* }
+#*Riviera* cdt () {
+#*Riviera*         cd $(cut -d\  -f1 ~/.zsh/zsave/zsh_dirstack_tty$1|sed s/~/${HOME:gs./.\\\\/}/g)
+#*Riviera* }
+#*Riviera* und
+#*Riviera* in .zshrc
+#*Riviera* dirs $(sed s/~/${HOME:gs./.\\\\/}/g $ZDOTDIR/zsave/zsh_dirstack_tty$tti)
+#*Riviera* und in .zlogout nochmal das, was in chpwd steht.
+#*Riviera*
+#*Riviera* Damit kann ich 1. mit "cdt 3" in das in tty3 aktuelle Verzeichnis wechseln
+#*Riviera* und 2. nach nem login wieder denselben dirstack vorfinden auf derselben tty wie vorm ausloggen.
+#*Riviera* tti=$(tty)
+#*Riviera* tti=${tti#*/dev/tty}
+#*Riviera* Kommt noch dazu. Eigentlich hatte ich dann immer noch
+#*Riviera* case $tti in
+#*Riviera*  [A-Za-z]*)tti=${tti%*[0-9]};;
+#*Riviera*  *);;
+#*Riviera* esac
+#*Riviera* aber das hab ich rausgenommen
+#*Riviera* :)
+
+
+### COMPLETION AND MORE
+
+# The following lines were added by compinstall
+[[ -z $fpath[(r)$_compdir] ]] && fpath=($fpath $_compdir)
+#fpath=(/home/tkoehler/zsh/foo $fpath)
+
+autoload -U compinit
+compinit
+
+local _myhosts
+_myhosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*})
+# zstyle ':completion:*' hosts $_myhosts
+
+zstyle ':completion:*' auto-description 'specify %d'
+zstyle ':completion:*' completer _complete _ignored _match _correct _approximate _prefix
+zstyle ':completion:*' file-sort name
+zstyle ':completion:*' format 'Completing %d'
+zstyle ':completion:*' group-name ''
+## domains to use for mutt user@host<TAB> completion
+zstyle '*mutt*' hosts 'picard.franken.de' 'vim.org'
+zstyle '*' hosts 'picard.franken.de' 'unser.linux.laeuft.auf.s390.org'
+zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s'
+zstyle ':completion:*' matcher-list 'r:|[._-]=** r:|=**' 'l:|=* r:|=*' 'm:{a-z}={A-Z}'
+zstyle ':completion:*' match-original both
+zstyle ':completion:*' max-errors 3
+zstyle ':completion:*' menu select=0
+zstyle ':completion:*' prompt 'CORRECT (%e errors found) > '
+zstyle ':completion:*' special-dirs true
+zstyle ':completion:*' squeeze-slashes true
+zstyle '*mutt*' users vim vim-dev tkoehler
+zstyle '*' users thomas tkoehler
+zstyle ':completion:*' verbose true
+zstyle :compinstall filename '/home/tkoehler/.zshrc'
+# End of lines added by compinstall
+#fpath=(/usr/share/doc/zsh/examples/Functions/Misc/ $fpath)
+#autoload nslookup
+
+
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+zstyle ':completion:*:*:*:*:hosts' list-colors '=(#b)(*)(to.com)=34;40=35;40' '=(#b)(*)(mayn.de)=36;40=35;40' '=unser.linux.laeuft.auf.s390.org=33;40' '=*=31;40'
+zstyle ':completion:*:*:*:*:users' list-colors '=*=32;40'
+
+autoload -U zfinit
+zfinit
diff --git a/zsh_people/zyrnix/zshrc b/zsh_people/zyrnix/zshrc
new file mode 100644 (file)
index 0000000..f180dcc
--- /dev/null
@@ -0,0 +1,205 @@
+#!/usr/bin/zsh
+# -*- mode: shell-script -*-
+
+# In Emacs, use M-x folding.  Quick reference:
+#
+# Show all sections' text 'C-c @ C-o'
+# Hide all sections' text 'C-c @ C-w'
+# Show a section's text   'C-c @ C-s'
+# Hide a section's text   'C-c @ C-x'
+
+# {{{ zstyle completions
+
+## These next 2 lines are from compinstall.
+zstyle ':completion:*' completer _expand _complete _correct _approximate
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+
+zstyle ':completion:*:options' description 'yes'
+zstyle ':completion:*:options' auto-description '%d'
+
+## All of the following zstyles are from:
+## (http://www.zshwiki.org/cgi-bin/wiki.pl?ZshCompletionTips)
+
+### Use cache
+## Some functions, like _apt and _dpkg, are very slow. You can use a cache in
+## order to proxy the list of results (like the list of available debian
+## packages)
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path ~/.zsh/cache
+
+## Prevent CVS files/directories from being completed
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+
+# Allow zsh to complete on hostnames found in common config files.
+local _myhosts;
+_myhosts=( ${${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ }:#\!*}
+           ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
+         );
+zstyle ':completion:*' hosts $_myhosts;
+
+## With commands like `rm' it's annoying if one gets offered the same filename
+## again even if it is already on the command line. To avoid that:
+#
+zstyle ':completion:*:rm:*' ignore-line yes
+
+## Load the completion module.
+zstyle :compinstall filename '/home/zyrnix/.zshrc'
+autoload -U compinit
+compinit
+
+# }}}
+# {{{ PS1 prompt
+
+# Enable this for a nice interactive way to get a decent prompt.
+# autoload -U promptinit
+# promptinit
+# prompt adam1
+## At the command line, you can do this to see the various prompts:
+# prompt -l # display all
+# prompt -h # help
+
+# This is based on adam1 from promptinit.  I altered it so it includes a
+# history number and return code.  It does not truncate the path.
+#
+# It looks like this (with colors):
+# 384 zyrnix@server ~/tmp %
+#
+PS1=$'%h %{\e[22;44m%}%n@%m%{\e[00m%} %{\e[01;36m%}%0~%{\e[01;37m%} %# %{\e[00m%}'
+
+# }}}
+# {{{ xterm tweaks
+
+## FAQ 3.5 How do I get the meta key to work on my xterm?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l21
+[[ $TERM = "xterm" ]] && stty pass8 && bindkey -me
+
+## FAQ 3.6 How do I automatically display the directory in my xterm title bar?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l22
+##
+## I modified the xterm version because it was too plain.
+chpwd() {
+  [[ -t 1 ]] || return
+  case $TERM in
+    sun-cmd) print -Pn "\e]l%~\e\\"
+      ;;
+    *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;% [zsh $ZSH_VERSION] %n@%m: %~\a"
+      ;;
+  esac
+}
+
+# }}}
+# {{{ Zsh FAQ entries
+
+## FAQ 3.18: Why does zsh kill off all my background jobs when I logout?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l34
+# setopt nohup
+#
+## Or start jobs with &! instead of & to disown them
+## (disown = don't kill at logout)
+
+## FAQ 3.21: Why is my history not being saved?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l37
+##
+## I modified this to allow for 2,000 entries instead of 200.
+HISTSIZE=2000
+HISTFILE=~/.zsh_history
+SAVEHIST=2000
+
+## FAQ 3.23: How do I prevent the prompt overwriting output when there is no
+##           newline?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l39
+##
+## According to the manual, this prevents multi-line editing because the editor
+## does not know where the start of the line appears.
+##
+# unsetopt prompt_cr
+
+# }}}
+# {{{ General setopts
+
+## Don't clobber files by default.  Force myself to use >! or >| and >>! or >>|
+## to clobber the file
+unsetopt clobber
+
+## I use dvorak, so correct spelling mistakes that a dvorak user would make
+setopt dvorak
+
+## Extended history.
+## Instead of just a list of commands, append it with this:
+## `:<beginning time since epoch>:<elapsed seconds>:<command>'.
+setopt extended_history
+
+## Automatically append directories to the push/pop list
+setopt auto_pushd
+
+## Maximum size of the directory stack
+DIRSTACKSIZE=50
+
+## Allow for 10MB max coredumps
+limit coredumpsize 10m
+
+# }}}
+# {{{ Emacs compatibility
+
+## FAQ 3.10: Why does zsh not work in an Emacs shell mode any more?
+## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l26
+[[ $EMACS = t ]] && unsetopt zle
+
+# Enable emacs keymap
+bindkey -e
+
+# From resolve (http://repose.cx/conf/.zshrc)
+WORDCHARS=''                    # Emacs compatible M-b and M-f
+bindkey "\C-w" kill-region      # Emacs C-w command support
+
+# }}}
+# {{{ Watch logins
+
+## Watch for logins and logouts from all accounts including mine.
+watch=all
+
+## Watch every 30 seconds
+logcheck=30
+
+## Change the watch format to something more informative
+# %n = username, %M = hostname, %a = action, %l = tty, %T = time,
+# %W = date
+WATCHFMT="%n from %M has %a tty%l at %T %W"
+
+# }}}
+# {{{ Aliases
+
+## Aliases
+alias ls="ls --color=auto"
+alias targx="tar -zxvf"
+alias targc="tar -cxvf"
+alias tarbx="tar --bzip2 -xvf"
+alias tarbc="tar --bzip2 -cvf"
+
+# }}}
+# {{{ Setopts from Resolve
+
+## From resolve's config (http://repose.cx/conf/.zshrc)
+setopt extended_glob            # Weird & wacky pattern matching - yay zsh!
+setopt complete_in_word         # Not just at the end
+setopt always_to_end            # When complete from middle, move cursor
+setopt correct                  # Spelling correction
+setopt hist_verify              # When using ! cmds, confirm first
+setopt interactive_comments     # Escape commands so I can use them later
+setopt print_exit_value         # Alert me if something's failed
+
+## Anti-aliasing in the two toolkits
+## Use this type of assignment to set the variable if not already set
+(( ${+QT_XFT} )) || export QT_XFT=1
+(( ${+GDK_USE_XFT} )) || export GDK_USE_XFT=1
+
+# }}}
+# {{{ GNU Arch tagline - Do not edit this section
+
+# To insert a uuid with Linux kernel 2.3.16 or newer, do:
+# echo -e "\n# arch-tag: `cat /proc/sys/kernel/random/uuid`\n" >> file
+#
+# arch-tag: 223a17f5-7c19-4f32-8fa7-0c14054128be
+
+# }}}