aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Kavanagh <ryanakca@kubuntu.org>2011-08-14 17:16:55 -0400
committerRyan Kavanagh <ryanakca@kubuntu.org>2011-08-25 07:42:57 -0400
commit1c019761dfaf6be82de9284fa5e2b9dbfbdec27d (patch)
tree7ed6bd2f437d3a334bd7a81f62e6dfa63689272b
Initial import
Diffstat (limited to '')
-rw-r--r--.Xdefaults36
-rw-r--r--.config/nitrogen/bg-saved.cfg15
-rw-r--r--.config/nitrogen/nitrogen.cfg11
-rwxr-xr-x.dzen/battery.sh60
-rwxr-xr-x.dzen/dzen.sh156
-rw-r--r--.dzen/icons/arrow_down.xbm4
-rw-r--r--.dzen/icons/arrow_up.xbm4
-rw-r--r--.dzen/icons/bluetooth.xbm4
-rw-r--r--.dzen/icons/corner.xbm5
-rw-r--r--.dzen/icons/cpu.xbm6
-rw-r--r--.dzen/icons/down.xbm6
-rw-r--r--.dzen/icons/fwd.xbm4
-rw-r--r--.dzen/icons/layout-full-black.xbm5
-rw-r--r--.dzen/icons/layout-full.xbm8
-rw-r--r--.dzen/icons/layout-gimp.xbm8
-rw-r--r--.dzen/icons/layout-im-full.xbm8
-rw-r--r--.dzen/icons/layout-im-mirror.xbm8
-rw-r--r--.dzen/icons/layout-im-tall.xbm8
-rw-r--r--.dzen/icons/layout-im.xbm8
-rw-r--r--.dzen/icons/layout-mirror-black.xbm5
-rw-r--r--.dzen/icons/layout-mirror-bottom.xbm8
-rw-r--r--.dzen/icons/layout-mirror-top.xbm8
-rw-r--r--.dzen/icons/layout-tall-black.xbm5
-rw-r--r--.dzen/icons/layout-tall-left.xbm8
-rw-r--r--.dzen/icons/layout-tall-right.xbm8
-rw-r--r--.dzen/icons/layout-threecol.xbm8
-rw-r--r--.dzen/icons/load.xbm6
-rw-r--r--.dzen/icons/mail.xbm4
-rw-r--r--.dzen/icons/mem.xbm6
-rw-r--r--.dzen/icons/mpd.xbm6
-rw-r--r--.dzen/icons/net-wifi.xbm6
-rw-r--r--.dzen/icons/net-wifi3.xbm6
-rw-r--r--.dzen/icons/net-wifi4.xbm6
-rw-r--r--.dzen/icons/net-wifi5.xbm6
-rw-r--r--.dzen/icons/net-wired.xbm6
-rw-r--r--.dzen/icons/net-wired2.xbm6
-rw-r--r--.dzen/icons/next.xbm4
-rw-r--r--.dzen/icons/pause.xbm4
-rw-r--r--.dzen/icons/phones.xbm4
-rw-r--r--.dzen/icons/play.xbm4
-rw-r--r--.dzen/icons/plus.xbm5
-rw-r--r--.dzen/icons/power-ac.xbm6
-rw-r--r--.dzen/icons/power-bat.xbm6
-rw-r--r--.dzen/icons/power-bat2.xbm6
-rw-r--r--.dzen/icons/prev.xbm4
-rw-r--r--.dzen/icons/rwd.xbm4
-rw-r--r--.dzen/icons/spkr_hi.xbm4
-rw-r--r--.dzen/icons/spkr_mute.xbm4
-rw-r--r--.dzen/icons/square.xbm5
-rw-r--r--.dzen/icons/stop.xbm4
-rw-r--r--.dzen/icons/temp.xbm6
-rw-r--r--.dzen/icons/up.xbm6
-rw-r--r--.dzen/icons/vol-hi.xbm6
-rw-r--r--.dzen/icons/vol-mute.xbm6
-rw-r--r--.dzen/icons/wifi_01.xbm4
-rw-r--r--.dzen/icons/wifi_02.xbm4
-rwxr-xr-x.dzen/temperature.sh26
-rw-r--r--.gitignore5
-rw-r--r--.imapfilter/config.lua235
-rw-r--r--.inputrc4
-rw-r--r--.local/share/wallpapers/atlas.jpgbin0 -> 229957 bytes
-rw-r--r--.local/share/wallpapers/feh-slideshow.py10
-rw-r--r--.local/share/wallpapers/ny1.jpgbin0 -> 162695 bytes
-rw-r--r--.local/share/wallpapers/ny2.jpgbin0 -> 2154761 bytes
-rw-r--r--.local/share/wallpapers/skyscraper.bmpbin0 -> 3932214 bytes
-rw-r--r--.local/share/wallpapers/skyscraper_at_sunset.bmpbin0 -> 1620054 bytes
-rw-r--r--.local/share/wallpapers/torre_agba1_2333x1560.jpgbin0 -> 883294 bytes
-rw-r--r--.local/share/wallpapers/totheglory.jpgbin0 -> 103681 bytes
-rw-r--r--.mailcheckrc45
-rw-r--r--.mutt/accounts.rc97
l---------.mutt/certs/594f1775.01
-rw-r--r--.mutt/certs/Equifax_Secure_CA.pem17
-rw-r--r--.mutt/certs/SMTP.pem20
-rw-r--r--.mutt/certs/Thawte_Premium_Server_CA.pem19
l---------.mutt/certs/c33a80d4.01
-rw-r--r--.mutt/certs/ca-bundle.crt3509
-rw-r--r--.mutt/certs/certdata.txt19539
-rw-r--r--.mutt/certs/certificates41
l---------.mutt/certs/f73e89fd.01
-rw-r--r--.mutt/certs/get_gmail_cert1
-rw-r--r--.mutt/certs/mk-ca-bundle.pl187
-rw-r--r--.mutt/color.rc127
-rw-r--r--.mutt/mailboxes.rc1
-rw-r--r--.mutt/mailinglists.rc63
-rw-r--r--.mutt/savehooks.rc16
-rw-r--r--.mutt/score.rc24
-rw-r--r--.muttrc150
-rw-r--r--.netrc1
-rw-r--r--.notmuch-config68
-rw-r--r--.offlineimaprc87
-rw-r--r--.quiltrc-dpkg11
-rwxr-xr-x.screenlayout/epsilon-SAIL.sh2
-rwxr-xr-x.screenlayout/epsilon-home.sh2
-rw-r--r--.screenrc14
-rw-r--r--.signature2
-rw-r--r--.vim/README.csupport188
-rw-r--r--.vim/autoload/haskellmode.vim155
l---------.vim/autoload/pythoncomplete.vim1
-rw-r--r--.vim/c-support/codesnippets/Makefile178
-rw-r--r--.vim/c-support/codesnippets/Makefile.multi-target.template70
-rw-r--r--.vim/c-support/codesnippets/calloc_double_matrix.c36
-rw-r--r--.vim/c-support/codesnippets/calloc_int_matrix.c35
-rw-r--r--.vim/c-support/codesnippets/main.c20
-rw-r--r--.vim/c-support/codesnippets/main.cc18
-rw-r--r--.vim/c-support/codesnippets/print_double_array.c.noindent30
-rw-r--r--.vim/c-support/codesnippets/print_int_array.c.noindent30
-rw-r--r--.vim/c-support/doc/ChangeLog304
-rw-r--r--.vim/c-support/doc/c-hotkeys.pdfbin0 -> 48296 bytes
-rw-r--r--.vim/c-support/rc/customization.ctags7
-rw-r--r--.vim/c-support/rc/customization.gvimrc44
-rw-r--r--.vim/c-support/rc/customization.indent.pro8
-rw-r--r--.vim/c-support/rc/customization.vimrc149
-rw-r--r--.vim/c-support/scripts/wrapper.sh34
-rw-r--r--.vim/c-support/syntax/c.vim21
-rw-r--r--.vim/c-support/templates/Templates26
-rw-r--r--.vim/c-support/templates/c.comments.template147
-rw-r--r--.vim/c-support/templates/c.cpp.template353
-rw-r--r--.vim/c-support/templates/c.idioms.template98
-rw-r--r--.vim/c-support/templates/c.preprocessor.template34
-rw-r--r--.vim/c-support/templates/c.statements.template62
-rw-r--r--.vim/c-support/templates/cpp.comments.template139
-rw-r--r--.vim/c-support/templates/cpp.cpp.template329
-rw-r--r--.vim/c-support/templates/cpp.idioms.template98
-rw-r--r--.vim/c-support/templates/cpp.preprocessor.template34
-rw-r--r--.vim/c-support/templates/cpp.statements.template62
-rw-r--r--.vim/c-support/wordlists/c-c++-keywords.list209
-rw-r--r--.vim/c-support/wordlists/k+r.list108
-rw-r--r--.vim/c-support/wordlists/stl_index.list202
-rw-r--r--.vim/colors/adam.vim48
-rw-r--r--.vim/colors/adaryn.vim72
-rw-r--r--.vim/colors/adrian.vim97
-rw-r--r--.vim/colors/af.vim99
-rw-r--r--.vim/colors/aiseered.vim37
-rw-r--r--.vim/colors/aqua.vim44
-rw-r--r--.vim/colors/astronaut.vim160
-rw-r--r--.vim/colors/asu1dark.vim59
-rw-r--r--.vim/colors/automation.vim59
-rw-r--r--.vim/colors/autumn.vim69
-rw-r--r--.vim/colors/autumn2.vim69
-rw-r--r--.vim/colors/autumnleaf.vim154
-rw-r--r--.vim/colors/billw.vim99
-rw-r--r--.vim/colors/biogoo.vim85
-rw-r--r--.vim/colors/black_angus.vim115
-rw-r--r--.vim/colors/blackbeauty.vim66
-rw-r--r--.vim/colors/blackdust.vim62
-rw-r--r--.vim/colors/blacksea.vim32
-rw-r--r--.vim/colors/blue.vim41
-rw-r--r--.vim/colors/bluegreen.vim52
-rw-r--r--.vim/colors/blugrine.vim42
-rw-r--r--.vim/colors/bmichaelsen.vim55
-rw-r--r--.vim/colors/bog.vim87
-rw-r--r--.vim/colors/borland.vim60
-rw-r--r--.vim/colors/breeze.vim70
-rw-r--r--.vim/colors/brookstream.vim83
-rw-r--r--.vim/colors/brown.vim32
-rw-r--r--.vim/colors/buttercream.vim59
-rw-r--r--.vim/colors/bw.vim55
-rw-r--r--.vim/colors/c.vim32
-rw-r--r--.vim/colors/camo.vim76
-rw-r--r--.vim/colors/campfire.vim57
-rw-r--r--.vim/colors/candy.vim78
-rw-r--r--.vim/colors/caramel.vim67
-rw-r--r--.vim/colors/chela_light.vim89
-rw-r--r--.vim/colors/chocolateliquor.vim34
-rw-r--r--.vim/colors/cleanphp.vim81
-rw-r--r--.vim/colors/coffee.vim60
-rw-r--r--.vim/colors/colorer.vim79
-rw-r--r--.vim/colors/cool.vim82
-rw-r--r--.vim/colors/dante.vim83
-rw-r--r--.vim/colors/darkblack.vim60
-rw-r--r--.vim/colors/darkblue2.vim99
-rw-r--r--.vim/colors/darkdot.vim80
-rw-r--r--.vim/colors/darkocean.vim52
-rw-r--r--.vim/colors/darkslategray.vim117
-rw-r--r--.vim/colors/dawn.vim65
-rw-r--r--.vim/colors/delek.vim57
-rw-r--r--.vim/colors/denim.vim141
-rw-r--r--.vim/colors/desert.vim105
-rw-r--r--.vim/colors/dusk.vim64
-rw-r--r--.vim/colors/earth.vim69
-rw-r--r--.vim/colors/edo_sea.vim69
-rw-r--r--.vim/colors/emacs.vim63
-rw-r--r--.vim/colors/fine_blue.vim71
-rw-r--r--.vim/colors/fnaqevan.vim67
-rw-r--r--.vim/colors/fog.vim170
-rw-r--r--.vim/colors/fruit.vim69
-rw-r--r--.vim/colors/gobo.vim27
-rw-r--r--.vim/colors/golden.vim70
-rw-r--r--.vim/colors/gor.vim47
-rw-r--r--.vim/colors/gothic.vim42
-rw-r--r--.vim/colors/greyblue.vim75
-rw-r--r--.vim/colors/hhazure.vim83
-rw-r--r--.vim/colors/hhdblue.vim233
-rw-r--r--.vim/colors/hhdcyan.vim233
-rw-r--r--.vim/colors/hhdgray.vim233
-rw-r--r--.vim/colors/hhdgreen.vim233
-rw-r--r--.vim/colors/hhdmagenta.vim233
-rw-r--r--.vim/colors/hhdred.vim234
-rw-r--r--.vim/colors/hhdyellow.vim235
-rw-r--r--.vim/colors/hhorange.vim82
-rw-r--r--.vim/colors/hhpink.vim85
-rw-r--r--.vim/colors/hhspring.vim83
-rw-r--r--.vim/colors/hhteal.vim83
-rw-r--r--.vim/colors/hhviolet.vim83
-rw-r--r--.vim/colors/ibmedit.vim60
-rw-r--r--.vim/colors/inkpot.vim138
-rw-r--r--.vim/colors/ironman.vim80
-rw-r--r--.vim/colors/jhdark.vim72
-rw-r--r--.vim/colors/jhlight.vim80
-rw-r--r--.vim/colors/less.vim54
-rw-r--r--.vim/colors/lilac.vim75
-rw-r--r--.vim/colors/lingodirector.vim44
-rw-r--r--.vim/colors/manxome.vim47
-rw-r--r--.vim/colors/mars.vim142
-rw-r--r--.vim/colors/matrix.vim80
-rw-r--r--.vim/colors/metacosm.vim132
-rw-r--r--.vim/colors/midnight.vim80
-rw-r--r--.vim/colors/midnight2.vim86
-rw-r--r--.vim/colors/mod_tcsoft.vim68
-rw-r--r--.vim/colors/navajo-night.vim119
-rw-r--r--.vim/colors/navajo.vim65
-rw-r--r--.vim/colors/nedit.vim26
-rw-r--r--.vim/colors/nedit2.vim29
-rw-r--r--.vim/colors/neon.vim70
-rw-r--r--.vim/colors/night.vim70
-rw-r--r--.vim/colors/nightshimmer.vim111
-rw-r--r--.vim/colors/nightwish.vim59
-rw-r--r--.vim/colors/northsky.vim70
-rw-r--r--.vim/colors/nuvola.vim107
-rw-r--r--.vim/colors/oceanblack.vim115
-rw-r--r--.vim/colors/oceandeep.vim111
-rw-r--r--.vim/colors/oceanlight.vim105
-rw-r--r--.vim/colors/olive.vim119
-rw-r--r--.vim/colors/papayawhip.vim31
-rw-r--r--.vim/colors/potts.vim53
-rw-r--r--.vim/colors/print_bw.vim65
-rw-r--r--.vim/colors/ps_color.vim400
-rw-r--r--.vim/colors/putty.vim82
-rw-r--r--.vim/colors/python.vim104
-rw-r--r--.vim/colors/redblack.vim62
-rw-r--r--.vim/colors/relaxedgreen.vim114
-rw-r--r--.vim/colors/reloaded.vim856
-rw-r--r--.vim/colors/revolutions.vim75
-rw-r--r--.vim/colors/robinhood.vim99
-rw-r--r--.vim/colors/sand.vim30
-rw-r--r--.vim/colors/scite.vim48
-rw-r--r--.vim/colors/sea.vim69
-rw-r--r--.vim/colors/sean.vim83
-rw-r--r--.vim/colors/seashell.vim32
-rw-r--r--.vim/colors/sf.vim76
-rw-r--r--.vim/colors/simpleandfriendly.vim56
-rw-r--r--.vim/colors/taqua.vim85
-rw-r--r--.vim/colors/tcsoft.vim62
-rw-r--r--.vim/colors/tibet.vim101
-rw-r--r--.vim/colors/tolerable.vim43
-rw-r--r--.vim/colors/tomatosoup.vim80
-rw-r--r--.vim/colors/toothpik.vim45
-rw-r--r--.vim/colors/torte.vim51
-rw-r--r--.vim/colors/transparent.vim97
-rw-r--r--.vim/colors/turbo.vim68
-rw-r--r--.vim/colors/umber-green.vim89
-rw-r--r--.vim/colors/vc.vim24
-rw-r--r--.vim/colors/vcbc.vim31
-rw-r--r--.vim/colors/white.vim62
-rw-r--r--.vim/colors/whitedust.vim62
-rw-r--r--.vim/colors/wintersday.vim60
-rw-r--r--.vim/colors/wombat.vim51
-rw-r--r--.vim/colors/xemacs.vim46
-rw-r--r--.vim/colors/xian.vim50
-rw-r--r--.vim/colors/zenburn.vim133
-rw-r--r--.vim/compiler/ghc.vim470
-rw-r--r--.vim/compiler/tex.vim293
-rw-r--r--.vim/doc/csupport.txt1577
-rw-r--r--.vim/doc/haskellmode.txt456
-rw-r--r--.vim/doc/imaps.txt116
-rw-r--r--.vim/doc/latex-suite-quickstart.txt448
-rw-r--r--.vim/doc/latex-suite.txt3418
-rw-r--r--.vim/doc/latexhelp.txt2430
-rw-r--r--.vim/doc/ps_color.txt585
-rwxr-xr-x.vim/doc/taglist.txt1501
-rw-r--r--.vim/doc/tags1138
-rw-r--r--.vim/filetype.vim4
-rw-r--r--.vim/ftplugin/bib_latexSuite.vim16
-rw-r--r--.vim/ftplugin/c.vim294
-rw-r--r--.vim/ftplugin/cpp.vim164
-rw-r--r--.vim/ftplugin/gpg.vim33
-rw-r--r--.vim/ftplugin/haskell.vim13
-rw-r--r--.vim/ftplugin/haskell_doc.vim817
-rw-r--r--.vim/ftplugin/haskell_hpaste.vim79
-rw-r--r--.vim/ftplugin/latex-suite/bibtex.vim266
-rw-r--r--.vim/ftplugin/latex-suite/bibtools.py221
-rw-r--r--.vim/ftplugin/latex-suite/bibtools.pycbin0 -> 7004 bytes
-rw-r--r--.vim/ftplugin/latex-suite/brackets.vim145
-rw-r--r--.vim/ftplugin/latex-suite/compiler.vim820
-rw-r--r--.vim/ftplugin/latex-suite/custommacros.vim257
-rw-r--r--.vim/ftplugin/latex-suite/diacritics.vim124
-rw-r--r--.vim/ftplugin/latex-suite/dictionaries/SIunits289
-rw-r--r--.vim/ftplugin/latex-suite/dictionaries/dictionary677
-rw-r--r--.vim/ftplugin/latex-suite/elementmacros.vim338
-rw-r--r--.vim/ftplugin/latex-suite/envmacros.vim1167
-rw-r--r--.vim/ftplugin/latex-suite/folding.vim393
-rw-r--r--.vim/ftplugin/latex-suite/macros/example11
-rw-r--r--.vim/ftplugin/latex-suite/main.vim1024
-rw-r--r--.vim/ftplugin/latex-suite/mathmacros-utf.vim729
-rw-r--r--.vim/ftplugin/latex-suite/mathmacros.vim730
-rw-r--r--.vim/ftplugin/latex-suite/multicompile.vim17
-rw-r--r--.vim/ftplugin/latex-suite/outline.py186
-rw-r--r--.vim/ftplugin/latex-suite/outline.pycbin0 -> 4324 bytes
-rw-r--r--.vim/ftplugin/latex-suite/packages.vim669
-rw-r--r--.vim/ftplugin/latex-suite/packages/SIunits315
-rw-r--r--.vim/ftplugin/latex-suite/packages/accents28
-rw-r--r--.vim/ftplugin/latex-suite/packages/acromake10
-rw-r--r--.vim/ftplugin/latex-suite/packages/afterpage10
-rw-r--r--.vim/ftplugin/latex-suite/packages/alltt12
-rw-r--r--.vim/ftplugin/latex-suite/packages/amsmath106
-rw-r--r--.vim/ftplugin/latex-suite/packages/amsthm21
-rw-r--r--.vim/ftplugin/latex-suite/packages/amsxtra12
-rw-r--r--.vim/ftplugin/latex-suite/packages/arabic10
-rw-r--r--.vim/ftplugin/latex-suite/packages/array17
-rw-r--r--.vim/ftplugin/latex-suite/packages/babel98
-rw-r--r--.vim/ftplugin/latex-suite/packages/bar27
-rw-r--r--.vim/ftplugin/latex-suite/packages/bm10
-rw-r--r--.vim/ftplugin/latex-suite/packages/bophook12
-rw-r--r--.vim/ftplugin/latex-suite/packages/boxedminipage10
-rw-r--r--.vim/ftplugin/latex-suite/packages/caption243
-rw-r--r--.vim/ftplugin/latex-suite/packages/cases12
-rw-r--r--.vim/ftplugin/latex-suite/packages/ccaption20
-rw-r--r--.vim/ftplugin/latex-suite/packages/changebar35
-rw-r--r--.vim/ftplugin/latex-suite/packages/chapterbib24
-rw-r--r--.vim/ftplugin/latex-suite/packages/cite32
-rw-r--r--.vim/ftplugin/latex-suite/packages/color43
-rw-r--r--.vim/ftplugin/latex-suite/packages/comma12
-rw-r--r--.vim/ftplugin/latex-suite/packages/deleq36
-rw-r--r--.vim/ftplugin/latex-suite/packages/drftcite29
-rw-r--r--.vim/ftplugin/latex-suite/packages/dropping12
-rw-r--r--.vim/ftplugin/latex-suite/packages/enumerate10
-rw-r--r--.vim/ftplugin/latex-suite/packages/eqlist19
-rw-r--r--.vim/ftplugin/latex-suite/packages/eqparbox12
-rw-r--r--.vim/ftplugin/latex-suite/packages/everyshi10
-rw-r--r--.vim/ftplugin/latex-suite/packages/exmpl55
-rw-r--r--.vim/ftplugin/latex-suite/packages/flafter10
-rw-r--r--.vim/ftplugin/latex-suite/packages/float16
-rw-r--r--.vim/ftplugin/latex-suite/packages/floatflt12
-rw-r--r--.vim/ftplugin/latex-suite/packages/fn2end10
-rw-r--r--.vim/ftplugin/latex-suite/packages/footmisc21
-rw-r--r--.vim/ftplugin/latex-suite/packages/geometry93
-rw-r--r--.vim/ftplugin/latex-suite/packages/german12
-rw-r--r--.vim/ftplugin/latex-suite/packages/graphicx69
-rw-r--r--.vim/ftplugin/latex-suite/packages/graphpap10
-rw-r--r--.vim/ftplugin/latex-suite/packages/harpoon18
-rw-r--r--.vim/ftplugin/latex-suite/packages/hhline21
-rw-r--r--.vim/ftplugin/latex-suite/packages/histogram13
-rw-r--r--.vim/ftplugin/latex-suite/packages/hyperref167
-rw-r--r--.vim/ftplugin/latex-suite/packages/ifthen21
-rw-r--r--.vim/ftplugin/latex-suite/packages/inputenc29
-rw-r--r--.vim/ftplugin/latex-suite/packages/letterspace10
-rw-r--r--.vim/ftplugin/latex-suite/packages/lineno60
-rw-r--r--.vim/ftplugin/latex-suite/packages/longtable35
-rw-r--r--.vim/ftplugin/latex-suite/packages/lscape10
-rw-r--r--.vim/ftplugin/latex-suite/packages/manyfoot15
-rw-r--r--.vim/ftplugin/latex-suite/packages/moreverb28
-rw-r--r--.vim/ftplugin/latex-suite/packages/multibox10
-rw-r--r--.vim/ftplugin/latex-suite/packages/multicol21
-rw-r--r--.vim/ftplugin/latex-suite/packages/newalg26
-rw-r--r--.vim/ftplugin/latex-suite/packages/ngerman10
-rw-r--r--.vim/ftplugin/latex-suite/packages/numprint18
-rw-r--r--.vim/ftplugin/latex-suite/packages/oldstyle12
-rw-r--r--.vim/ftplugin/latex-suite/packages/outliner19
-rw-r--r--.vim/ftplugin/latex-suite/packages/overcite34
-rw-r--r--.vim/ftplugin/latex-suite/packages/parallel15
-rw-r--r--.vim/ftplugin/latex-suite/packages/plain10
-rw-r--r--.vim/ftplugin/latex-suite/packages/plates16
-rw-r--r--.vim/ftplugin/latex-suite/packages/polski165
-rw-r--r--.vim/ftplugin/latex-suite/packages/psgo27
-rw-r--r--.vim/ftplugin/latex-suite/packages/schedule20
-rw-r--r--.vim/ftplugin/latex-suite/packages/textfit12
-rw-r--r--.vim/ftplugin/latex-suite/packages/times10
-rw-r--r--.vim/ftplugin/latex-suite/packages/tipa364
-rw-r--r--.vim/ftplugin/latex-suite/packages/ulem21
-rw-r--r--.vim/ftplugin/latex-suite/packages/url24
-rw-r--r--.vim/ftplugin/latex-suite/packages/verbatim18
-rw-r--r--.vim/ftplugin/latex-suite/packages/version12
-rw-r--r--.vim/ftplugin/latex-suite/projecttemplate.vim11
-rw-r--r--.vim/ftplugin/latex-suite/pytools.py52
-rw-r--r--.vim/ftplugin/latex-suite/smartspace.vim102
-rw-r--r--.vim/ftplugin/latex-suite/templates.vim149
-rw-r--r--.vim/ftplugin/latex-suite/templates/IEEEtran.tex142
-rw-r--r--.vim/ftplugin/latex-suite/templates/article.tex9
-rw-r--r--.vim/ftplugin/latex-suite/templates/report.tex9
-rw-r--r--.vim/ftplugin/latex-suite/templates/report_two_column.tex9
-rw-r--r--.vim/ftplugin/latex-suite/texmenuconf.vim131
-rw-r--r--.vim/ftplugin/latex-suite/texproject.vim54
-rw-r--r--.vim/ftplugin/latex-suite/texrc738
-rw-r--r--.vim/ftplugin/latex-suite/texviewer.vim1052
-rw-r--r--.vim/ftplugin/latex-suite/version.vim30
-rw-r--r--.vim/ftplugin/latex-suite/wizardfuncs.vim377
-rw-r--r--.vim/ftplugin/pythoncomplete.vim625
-rw-r--r--.vim/ftplugin/tex.vim10
-rw-r--r--.vim/ftplugin/tex_latexSuite.vim13
-rw-r--r--.vim/haskellmode-20081031.vba1850
-rw-r--r--.vim/haskellmode-20090424.vba2005
-rw-r--r--.vim/indent/indent-r.vim50
-rw-r--r--.vim/indent/tex.vim139
-rw-r--r--.vim/kde-devel-vim.vim1029
-rw-r--r--.vim/ltags78
-rw-r--r--.vim/moin1_6.vim83
-rw-r--r--.vim/plugin/SyntaxFolds.vim323
-rw-r--r--.vim/plugin/c.vim2678
-rw-r--r--.vim/plugin/filebrowser.vim251
-rw-r--r--.vim/plugin/imaps.vim831
-rw-r--r--.vim/plugin/libList.vim249
-rw-r--r--.vim/plugin/minibufexpl.vim1838
-rw-r--r--.vim/plugin/openssl.vim201
-rw-r--r--.vim/plugin/remoteOpen.vim163
-rw-r--r--.vim/plugin/taglist.vim4546
-rw-r--r--.vim/syntax/django.vim93
-rw-r--r--.vim/syntax/htmldjango.vim34
-rw-r--r--.vim/syntax/prolog.vim119
-rw-r--r--.vim/syntax/rnc.vim59
-rw-r--r--.vim/syntax/syntax-r.vim621
-rw-r--r--.vim/syntax/tex.vim1
-rw-r--r--.vimrc97
-rwxr-xr-x.xinitrc20
-rw-r--r--.xmobarrc19
-rw-r--r--.xmonad/xmonad.hs449
-rw-r--r--.zsh/func/prompt_wunjo_setup311
-rw-r--r--.zsh/func/zgitinit248
-rw-r--r--.zsh_logout7
-rw-r--r--.zshrc754
-rw-r--r--Makefile108
-rw-r--r--README9
-rw-r--r--SUBSTS14
-rwxr-xr-xbin/gpg-mounter73
-rwxr-xr-xbin/gpg-wrapper41
-rwxr-xr-xbin/mutt-notmuch190
-rwxr-xr-xbin/run-mailcheck14
-rwxr-xr-xbin/update-xmonad.sh11
-rw-r--r--sha256sums437
-rw-r--r--sha256sums.asc473
439 files changed, 89394 insertions, 0 deletions
diff --git a/.Xdefaults b/.Xdefaults
new file mode 100644
index 0000000..db6f337
--- /dev/null
+++ b/.Xdefaults
@@ -0,0 +1,36 @@
+XTerm*metaSendsEscape: true
+XTerm*eightBitInput: false
+URxvt.background: #000000
+URxvt.foreground: #ffffff
+URxvt.colorBD: #ffffff
+URxvt.cursorColo: #e0e080
+URxvt.hilightColor: #f0f0f0
+URxvt.scrollBar: false
+URxvt.scrollstyle: xterm
+URxvt.transparent: true
+URxvt.tint: black
+URxvt.shading: 25
+URxvt*color4: #0055FF
+URxvt*color12: #0088FF
+URxvt.underlineColor: yellow
+URxvt.saveLines: 8192
+URxvt.mapAlert: true
+URxvt.font: xft:Inconsolata:size=7
+URxvt.perl-ext-common: default,matcher,mark-and-yank
+//URxvt*bellCommand: zenity --info --text="Bell in URxvt"
+URxvt*urlLauncher: firefox
+URxvt.matcher.button: 1
+URxvt.visualBell: false
+URxvt.urgentOnBell: true
+URxvt.keysym.M-C-1: command:\033]50;xft:Inconsolata:size=7\007
+URxvt.keysym.M-C-2: command:\033]50;xft:Inconsolata:size=11\007
+URxvt.keysym.M-y: perl:mark-and-yank:activate_mark_mode
+URxvt.keysym.M-u: perl:mark-and-yank:activate_mark_url_mode
+XLock*logoutButton: -1
+Xft.antialias: 1
+Xft.dpi: 97
+Xft.hinting: 1
+Xft.hintstyle: hintfull
+Xft.rgba: bgr
+Xpdf*fileFilterStyle: filter_hidden_files
+xlock.bg: #000000
diff --git a/.config/nitrogen/bg-saved.cfg b/.config/nitrogen/bg-saved.cfg
new file mode 100644
index 0000000..853fb50
--- /dev/null
+++ b/.config/nitrogen/bg-saved.cfg
@@ -0,0 +1,15 @@
+
+[:0.0]
+file=/home/ryan/.local/share/wallpapers/ny2.jpg
+mode=5
+bgcolor=#000000
+
+[xin_1]
+file=/home/ryan/.local/share/wallpapers/ny1.jpg
+mode=3
+bgcolor=#000000
+
+[xin_0]
+file=/home/ryan/.local/share/wallpapers/ny2.jpg
+mode=3
+bgcolor=#000000
diff --git a/.config/nitrogen/nitrogen.cfg b/.config/nitrogen/nitrogen.cfg
new file mode 100644
index 0000000..b7a99a1
--- /dev/null
+++ b/.config/nitrogen/nitrogen.cfg
@@ -0,0 +1,11 @@
+
+[geometry]
+posx=960
+posy=18
+sizex=958
+sizey=589
+
+[nitrogen]
+view=icon
+icon_caps=false
+dirs=/home/ryan/.local/share/wallpapers;
diff --git a/.dzen/battery.sh b/.dzen/battery.sh
new file mode 100755
index 0000000..9e67834
--- /dev/null
+++ b/.dzen/battery.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# original script by lyon8 <lyon8@gmx.net>
+# modifications from original by <sean.escriva@gmail.com>
+# show your laptop battery state in dzen
+# Taken from http://www.webframp.com/2008/08/17/switchdzen/ and modified by Ryan
+# Kavanagh <ryanakca@kubuntu.org> to add support for a missing battery and use
+# /sys instead of /proc/acpi/battery
+
+BG='#171717' # dzen backgrounad
+FG='#008dd5' # dzen foreground
+W=114 # width of the dzen bar
+GW=50 # width of the gauge
+GFG='#33ccff' # color of the gauge
+GH=7 # height of the gauge
+GBG='#333' # color of gauge background
+X=0 # x position
+Y=0 # y position
+FN='snap' # font
+
+STATEFILE='/sys/bus/acpi/drivers/battery/PNP0C0A:00/power_supply/BAT1/uevent' # battery's state file
+
+LOWBAT=10 # percentage of battery life marked as low
+LOWCOL='#ff4747' # color when battery is low
+CHGCOL='#60da11' # color when battery is charging
+TIME_INT=30 # time intervall in seconds
+
+PREBAR='^i(/home/ryan/.dzen/icons/power-bat.xbm) ' # caption (also icons are possible)
+
+while true; do
+ # look up battery's data
+ PRESENT=`cat $STATEFILE|grep POWER_SUPPLY_PRESENT|cut -d '=' -f 2`;
+ if [ $PRESENT = '1' ]; then
+ BAT_FULL=`cat $STATEFILE|grep POWER_SUPPLY_CHARGE_FULL_DESIGN | cut -d '=' -f 2 `;
+ STATUS=`cat $STATEFILE|grep POWER_SUPPLY_STATUS |cut -d '=' -f 2`;
+ RCAP=`cat $STATEFILE|grep POWER_SUPPLY_CHARGE_NOW|cut -d '=' -f 2`;
+
+ echo $BAT_FULL " " $STATUS " " $RCAP > /dev/stdout
+
+ # calculate remaining power
+ RPERCT=`expr $RCAP \* 100`;
+ RPERC=`expr $RPERCT / $BAT_FULL`;
+
+ # draw the bar and pipe everything into dzen
+ if [ $RPERC -le $LOWBAT ]; then
+ GFG=$LOWCOL;
+ fi
+ if [ $STATUS = 'Charging' ]; then
+ GFG=$CHGCOL;
+ else
+ GFG='#33ccff';
+ fi
+ echo -n $PREBAR #uncomment for an icon
+ eval echo $RPERC | dzen2-gdbar -h $GH -w $GW -fg $GFG -bg $GBG
+ else
+ echo -n $PREBAR #uncomment for an icon
+ eval echo 'Missing'
+ fi
+ sleep $TIME_INT;
+done | dzen2 -ta c -tw $W -y $Y -x $X -fg $FG -bg $BG #-fn $FN
diff --git a/.dzen/dzen.sh b/.dzen/dzen.sh
new file mode 100755
index 0000000..59c4700
--- /dev/null
+++ b/.dzen/dzen.sh
@@ -0,0 +1,156 @@
+#!/bin/zsh
+
+typeset -A DISKS
+###
+# Config
+###
+DATE_FORMAT="%a %d %b, %Y"
+TIME_ZONES=("America/Toronto" "UTC")
+DISKS=(home /home root /)
+SEPERATOR=' ^fg(#86AA3F)^c(3)^fg() '
+BAR_BG='#7DA926'
+BAR_FG='#B9D56E'
+BAR_HH=6
+BAR_HW=40
+BAR_VH=12
+BAR_VW=3
+BAR_ARGS="-bg $BAR_BG -fg $BAR_FG -w $BAR_HW -h $BAR_HH"
+ICON_DIR="$HOME/.dzen/icons/"
+NETWORK_INTERFACE=eth0
+NET_DOWN_MAX=55
+NET_UP_MAX=14
+MAILDIR=~/.maildb/GMAIL/
+
+GLOBALIVAL=1m
+DATEIVAL=60
+TIMEIVAL=1
+DISKIVAL=1
+#CPUTEMPIVAL=5
+#CPUIVAL=1
+#NPIVAL=3
+NETIVAL=1
+
+
+###
+# Functions
+###
+_date()
+{
+ date +${DATE_FORMAT}
+}
+
+_time()
+{
+ local zone
+ print_space=0
+ for zone in $TIME_ZONES; do
+ [[ $print_space -eq 1 ]] && print -n " "
+ print -n "${zone:t}: $(TZ=$zone date '+%H:%M')"
+ print_space=1
+ done
+}
+
+#
+# Format: label1 mountpoint1 label2 mountpoint2 ... labelN mountpointN
+# Copied and modified from Rob
+get_disk_usage() {
+ local rstr; local tstr; local i; local sep
+ for i in ${(k)DISKS}; do
+ tstr=$(print `df -h $DISKS[$i]|sed -ne 's/^.* \([0-9]*\)% .*/\1/p'` 100 | \
+ dzen2-gdbar -h $BAR_HH -w $BAR_HW -fg $BAR_FG -bg $BAR_BG -l "${i}" -nonl | \
+ sed 's/[0-9]\+%//g;s/ / /g')
+ if [ ! -z "$rstr" ]; then
+ sep=${SEPERATOR}
+ fi
+ rstr="${rstr}${sep}${tstr}"
+ done
+ print -n $rstr
+}
+
+# Requires mesure
+get_net_rates() {
+ local up; local down
+ up=`mesure -K -l -c 3 -t -o $NETWORK_INTERFACE`
+ down=`mesure -K -l -c 3 -t -i $NETWORK_INTERFACE`
+ echo "$down $up"
+}
+
+#cpu_temp()
+#{
+# print -n ${(@)$(</proc/acpi/thermal_zone/THRM/temperature)[2,3]}
+#}
+#
+#np()
+#{
+# #MAXPOS="100"
+# CAPTION="^i(${ICON_DIR}/musicS.xbm)"
+# #POS=`mpc | sed -ne 's/^.*(\([0-9]*\)%).*$/\1/p'`
+# #POSM="$POS $MAXPOS"
+# print -n "$CAPTION "
+# mpc | head -n1 | tr -d '\n'
+# #echo "$POSM" | gdbar -h 7 -w 50 -fg $BAR_FG -bg $BAR_BG
+#}
+#
+#cpu()
+#{
+# gcpubar -c 2 -bg $BAR_BG -fg $BAR_FG -w $BAR_HW -h $BAR_HH | tail -n1 | tr -d '\n'
+#}
+
+has_new_mail() {
+ find ${MAILDIR}/*/new -not -type d | wc -l
+}
+
+DATEI=0
+TIMEI=0
+DISKI=0
+#NPI=0
+#CPUTEMPI=0
+#CPUI=0
+NETI=0
+
+date=$(_date)
+times=$(_time)
+disk_usage=$(get_disk_usage)
+#now_playing=$(np)
+#temp=$(cpu_temp)
+#cpumeter=$(cpu)
+net_rates=( `get_net_rates` )
+
+while true; do
+ [[ $DATEI -ge $DATEIVAL ]] && date=$(_date) && DATEI=0
+ [[ $TIMEI -ge $TIMEIVAL ]] && times=$(_time) && TIMEI=0
+ [[ $DISKI -ge $DISKIVAL ]] && disk_usage=$(get_disk_usage) && DISKI=0
+ #[[ $NPI -ge $NPIVAL ]] && now_playing=$(np) && NPI=0
+ #[[ $CPUI -ge $CPUIVAL ]] && cpumeter=$(cpu) && CPUI=0
+ #[[ $CPUTEMPI -ge $CPUTEMPIVAL ]] && temp=$(cpu_temp) && CPUTEMPI=0
+ [[ $NETI -ge $NETIVAL ]] && net_rates=( `get_net_rates` ) && NETI=0
+
+ # Disk usage
+ echo -n "${disk_usage}${SEPERATOR}"
+ # Network
+ echo $net_rates[1] | dzen2-gdbar -nonl -s v -w $BAR_VW -h $BAR_VH -min 0 \
+ -max $NET_DOWN_MAX -fg $BAR_FG -bg $BAR_BG
+ echo -n " "
+ echo $net_rates[2] | dzen2-gdbar -nonl -s v -w $BAR_VW -h $BAR_VH -min 0 \
+ -max $NET_UP_MAX -fg $BAR_FG -bg $BAR_BG
+ echo -n "${SEPERATOR}"
+ # Mail notification
+ if [ `has_new_mail` -gt 0 ]; then
+ echo -n "^fg(#73d216)"
+ fi
+ echo -n "^i(${ICON_DIR}/mail.xbm)^fg()${SEPERATOR}"
+ # Time and date
+ echo -n "${times}${SEPERATOR}"
+ echo -n "${date}"
+ echo
+
+ DATEI=$(($DATEI+1))
+ TIMEI=$(($TIMEI+1))
+ DISKI=$(($DISKI+1))
+ #NPI=$(($NPI+1))
+ #CPUI=$(($CPUI+1))
+ #CPUTEMPI=$(($CPUTEMPI+1))
+ NETI=$(($NETI+1))
+
+ sleep $GLOBALIVAL
+done
diff --git a/.dzen/icons/arrow_down.xbm b/.dzen/icons/arrow_down.xbm
new file mode 100644
index 0000000..0502235
--- /dev/null
+++ b/.dzen/icons/arrow_down.xbm
@@ -0,0 +1,4 @@
+#define net_down_03_width 8
+#define net_down_03_height 8
+static unsigned char net_down_03_bits[] = {
+ 0x38, 0x38, 0x38, 0x38, 0xFE, 0x7C, 0x38, 0x10 };
diff --git a/.dzen/icons/arrow_up.xbm b/.dzen/icons/arrow_up.xbm
new file mode 100644
index 0000000..b21c007
--- /dev/null
+++ b/.dzen/icons/arrow_up.xbm
@@ -0,0 +1,4 @@
+#define net_up_03_width 8
+#define net_up_03_height 8
+static unsigned char net_up_03_bits[] = {
+ 0x10, 0x38, 0x7C, 0xFE, 0x38, 0x38, 0x38, 0x38 };
diff --git a/.dzen/icons/bluetooth.xbm b/.dzen/icons/bluetooth.xbm
new file mode 100644
index 0000000..3cc42d5
--- /dev/null
+++ b/.dzen/icons/bluetooth.xbm
@@ -0,0 +1,4 @@
+#define bluetooth_width 8
+#define bluetooth_height 8
+static unsigned char bluetooth_bits[] = {
+ 0x18, 0x2A, 0x6C, 0x38, 0x38, 0x6C, 0x2A, 0x18 };
diff --git a/.dzen/icons/corner.xbm b/.dzen/icons/corner.xbm
new file mode 100644
index 0000000..0851adf
--- /dev/null
+++ b/.dzen/icons/corner.xbm
@@ -0,0 +1,5 @@
+#define corner_width 8
+#define corner_height 16
+static unsigned char corner_bits[] = {
+ 0x00, 0x00, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/cpu.xbm b/.dzen/icons/cpu.xbm
new file mode 100644
index 0000000..2c7d0e8
--- /dev/null
+++ b/.dzen/icons/cpu.xbm
@@ -0,0 +1,6 @@
+#define cpu2_width 16
+#define cpu2_height 16
+static unsigned char cpu2_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x12, 0xfc, 0x3f,
+ 0xfc, 0x3f, 0x1c, 0x38, 0x1c, 0x38, 0x1e, 0x78, 0xfc, 0x3f, 0xfe, 0x7f,
+ 0xfc, 0x3f, 0x48, 0x12, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/down.xbm b/.dzen/icons/down.xbm
new file mode 100644
index 0000000..bc350dd
--- /dev/null
+++ b/.dzen/icons/down.xbm
@@ -0,0 +1,6 @@
+#define down_width 16
+#define down_height 16
+static unsigned char down_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/fwd.xbm b/.dzen/icons/fwd.xbm
new file mode 100644
index 0000000..3f52ea9
--- /dev/null
+++ b/.dzen/icons/fwd.xbm
@@ -0,0 +1,4 @@
+#define fwd_width 8
+#define fwd_height 8
+static unsigned char fwd_bits[] = {
+ 0x00, 0x12, 0x36, 0x7E, 0x7E, 0x36, 0x12, 0x00 };
diff --git a/.dzen/icons/layout-full-black.xbm b/.dzen/icons/layout-full-black.xbm
new file mode 100644
index 0000000..1c97fde
--- /dev/null
+++ b/.dzen/icons/layout-full-black.xbm
@@ -0,0 +1,5 @@
+#define full_width 12
+#define full_height 12
+static unsigned char full_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x04, 0x02, 0x04, 0x02,
+ 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0xfc, 0x03, 0x00, 0x00};
diff --git a/.dzen/icons/layout-full.xbm b/.dzen/icons/layout-full.xbm
new file mode 100644
index 0000000..f0492b6
--- /dev/null
+++ b/.dzen/icons/layout-full.xbm
@@ -0,0 +1,8 @@
+#define max_width 18
+#define max_height 18
+static unsigned char max_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0xFC, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00,
+ 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00,
+ 0x04, 0x80, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-gimp.xbm b/.dzen/icons/layout-gimp.xbm
new file mode 100644
index 0000000..4711c31
--- /dev/null
+++ b/.dzen/icons/layout-gimp.xbm
@@ -0,0 +1,8 @@
+#define layout_gimp_width 18
+#define layout_gimp_height 18
+static unsigned char layout_gimp_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x7c, 0xfd, 0x01, 0x44, 0x25, 0x01,
+ 0x44, 0x25, 0x01, 0x44, 0x25, 0x01, 0x7c, 0x01, 0x00, 0x40, 0xfd, 0x01,
+ 0x7c, 0x05, 0x01, 0x00, 0x04, 0x01, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-im-full.xbm b/.dzen/icons/layout-im-full.xbm
new file mode 100644
index 0000000..ba75847
--- /dev/null
+++ b/.dzen/icons/layout-im-full.xbm
@@ -0,0 +1,8 @@
+#define layout_im_full_width 18
+#define layout_im_full_height 18
+static unsigned char layout_im_full_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-im-mirror.xbm b/.dzen/icons/layout-im-mirror.xbm
new file mode 100644
index 0000000..6cb3ed1
--- /dev/null
+++ b/.dzen/icons/layout-im-mirror.xbm
@@ -0,0 +1,8 @@
+#define layout_im_mirror_width 18
+#define layout_im_mirror_height 18
+static unsigned char layout_im_mirror_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0xc4, 0xff, 0x00, 0x44, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-im-tall.xbm b/.dzen/icons/layout-im-tall.xbm
new file mode 100644
index 0000000..704f503
--- /dev/null
+++ b/.dzen/icons/layout-im-tall.xbm
@@ -0,0 +1,8 @@
+#define layout_im_tall_width 18
+#define layout_im_tall_height 18
+static unsigned char layout_im_tall_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00,
+ 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00,
+ 0x44, 0x90, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-im.xbm b/.dzen/icons/layout-im.xbm
new file mode 100644
index 0000000..e5e296a
--- /dev/null
+++ b/.dzen/icons/layout-im.xbm
@@ -0,0 +1,8 @@
+#define layout_im_grid_width 18
+#define layout_im_grid_height 18
+static unsigned char layout_im_grid_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0x00, 0x04, 0x80, 0x00, 0xa4, 0xbf, 0x00, 0x84, 0xa4, 0x00,
+ 0xa4, 0xa4, 0x00, 0xa4, 0xa4, 0x00, 0xa4, 0xa4, 0x00, 0xa4, 0xa4, 0x00,
+ 0x04, 0x80, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-mirror-black.xbm b/.dzen/icons/layout-mirror-black.xbm
new file mode 100644
index 0000000..246fd37
--- /dev/null
+++ b/.dzen/icons/layout-mirror-black.xbm
@@ -0,0 +1,5 @@
+#define mtall_width 12
+#define mtall_height 12
+static unsigned char mtall_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0xfc, 0x03,
+ 0xfc, 0x03, 0x00, 0x00, 0x6c, 0x03, 0x6c, 0x03, 0x6c, 0x03, 0x00, 0x00};
diff --git a/.dzen/icons/layout-mirror-bottom.xbm b/.dzen/icons/layout-mirror-bottom.xbm
new file mode 100644
index 0000000..e1d8679
--- /dev/null
+++ b/.dzen/icons/layout-mirror-bottom.xbm
@@ -0,0 +1,8 @@
+#define tilebottom_width 18
+#define tilebottom_height 18
+static unsigned char tilebottom_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00,
+ 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0xFC, 0xFF, 0x00, 0x44, 0x88, 0x00,
+ 0x44, 0x88, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-mirror-top.xbm b/.dzen/icons/layout-mirror-top.xbm
new file mode 100644
index 0000000..10e8ca2
--- /dev/null
+++ b/.dzen/icons/layout-mirror-top.xbm
@@ -0,0 +1,8 @@
+#define tiletop_width 18
+#define tiletop_height 18
+static unsigned char tiletop_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0xFC, 0xFF, 0x00,
+ 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00,
+ 0x04, 0x80, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-tall-black.xbm b/.dzen/icons/layout-tall-black.xbm
new file mode 100644
index 0000000..1a67757
--- /dev/null
+++ b/.dzen/icons/layout-tall-black.xbm
@@ -0,0 +1,5 @@
+#define tall_width 12
+#define tall_height 12
+static unsigned char tall_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x07, 0x7e, 0x07, 0x7e, 0x00, 0x7e, 0x07,
+ 0x7e, 0x07, 0x7e, 0x00, 0x7e, 0x07, 0x7e, 0x07, 0x00, 0x00, 0x00, 0x00};
diff --git a/.dzen/icons/layout-tall-left.xbm b/.dzen/icons/layout-tall-left.xbm
new file mode 100644
index 0000000..91e9b75
--- /dev/null
+++ b/.dzen/icons/layout-tall-left.xbm
@@ -0,0 +1,8 @@
+#define tileleft_width 18
+#define tileleft_height 18
+static unsigned char tileleft_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x7C, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x00,
+ 0x44, 0x80, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-tall-right.xbm b/.dzen/icons/layout-tall-right.xbm
new file mode 100644
index 0000000..f3c44ba
--- /dev/null
+++ b/.dzen/icons/layout-tall-right.xbm
@@ -0,0 +1,8 @@
+#define tileright_width 18
+#define tileright_height 18
+static unsigned char tileright_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x04, 0xF8, 0x00,
+ 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x04, 0xF8, 0x00, 0x04, 0x88, 0x00,
+ 0x04, 0x88, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/layout-threecol.xbm b/.dzen/icons/layout-threecol.xbm
new file mode 100644
index 0000000..3009ecc
--- /dev/null
+++ b/.dzen/icons/layout-threecol.xbm
@@ -0,0 +1,8 @@
+#define threecol_width 18
+#define threecol_height 18
+static unsigned char threecol_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00,
+ 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00,
+ 0x44, 0x88, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/load.xbm b/.dzen/icons/load.xbm
new file mode 100644
index 0000000..b9a1061
--- /dev/null
+++ b/.dzen/icons/load.xbm
@@ -0,0 +1,6 @@
+#define load_width 16
+#define load_height 16
+static unsigned char load_bits[] = {
+ 0x00, 0x00, 0xfe, 0x7f, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40,
+ 0x02, 0x44, 0x02, 0x4a, 0x02, 0x71, 0x8e, 0x40, 0x52, 0x40, 0x22, 0x40,
+ 0x02, 0x40, 0x02, 0x40, 0xfe, 0x7f, 0x00, 0x00 };
diff --git a/.dzen/icons/mail.xbm b/.dzen/icons/mail.xbm
new file mode 100644
index 0000000..295eb73
--- /dev/null
+++ b/.dzen/icons/mail.xbm
@@ -0,0 +1,4 @@
+#define mail_width 8
+#define mail_height 8
+static unsigned char mail_bits[] = {
+ 0x00, 0xFF, 0x7E, 0xBD, 0xDB, 0xE7, 0xFF, 0x00 };
diff --git a/.dzen/icons/mem.xbm b/.dzen/icons/mem.xbm
new file mode 100644
index 0000000..5c5bc8e
--- /dev/null
+++ b/.dzen/icons/mem.xbm
@@ -0,0 +1,6 @@
+#define load_mem_width 16
+#define load_mem_height 16
+static unsigned char load_mem_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x12, 0x48, 0x12, 0xfc, 0x3f,
+ 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0x48, 0x12,
+ 0x48, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/mpd.xbm b/.dzen/icons/mpd.xbm
new file mode 100644
index 0000000..8211667
--- /dev/null
+++ b/.dzen/icons/mpd.xbm
@@ -0,0 +1,6 @@
+#define mpd_width 16
+#define mpd_height 16
+static unsigned char mpd_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x40, 0x10,
+ 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x70, 0x1c, 0x78, 0x1e,
+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wifi.xbm b/.dzen/icons/net-wifi.xbm
new file mode 100644
index 0000000..0b3a4a1
--- /dev/null
+++ b/.dzen/icons/net-wifi.xbm
@@ -0,0 +1,6 @@
+#define net_wifi4_width 16
+#define net_wifi4_height 16
+static unsigned char net_wifi4_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x08, 0x10, 0xe4, 0x27, 0x10, 0x08,
+ 0xc0, 0x03, 0x20, 0x04, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+ 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wifi3.xbm b/.dzen/icons/net-wifi3.xbm
new file mode 100644
index 0000000..7ebb55d
--- /dev/null
+++ b/.dzen/icons/net-wifi3.xbm
@@ -0,0 +1,6 @@
+#define wireless3_full_width 16
+#define wireless3_full_height 16
+static unsigned char wireless3_full_bits[] = {
+ 0x00, 0x00, 0xf0, 0x0f, 0x08, 0x10, 0xe4, 0x27, 0x10, 0x08, 0x00, 0x00,
+ 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f,
+ 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wifi4.xbm b/.dzen/icons/net-wifi4.xbm
new file mode 100644
index 0000000..8179eb4
--- /dev/null
+++ b/.dzen/icons/net-wifi4.xbm
@@ -0,0 +1,6 @@
+#define net_wifi4_width 16
+#define net_wifi4_height 16
+static unsigned char net_wifi4_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0xfe, 0x7f, 0x00, 0x00,
+ 0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x00, 0x00,
+ 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wifi5.xbm b/.dzen/icons/net-wifi5.xbm
new file mode 100644
index 0000000..8a097ef
--- /dev/null
+++ b/.dzen/icons/net-wifi5.xbm
@@ -0,0 +1,6 @@
+#define wireless_full_width 16
+#define wireless_full_height 16
+static unsigned char wireless_full_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfe, 0x7f, 0x00, 0x00,
+ 0xfc, 0x3f, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x07, 0x00, 0x00,
+ 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wired.xbm b/.dzen/icons/net-wired.xbm
new file mode 100644
index 0000000..d9655d7
--- /dev/null
+++ b/.dzen/icons/net-wired.xbm
@@ -0,0 +1,6 @@
+#define network_eth2_width 16
+#define network_eth2_height 16
+static unsigned char network_eth2_bits[] = {
+ 0x00, 0x00, 0xfe, 0x7f, 0x02, 0x40, 0x02, 0x40, 0xc2, 0x43, 0xc2, 0x43,
+ 0xc2, 0x43, 0xf2, 0x4f, 0xf2, 0x4f, 0xf2, 0x4f, 0xf2, 0x4f, 0xf2, 0x4f,
+ 0x02, 0x40, 0x02, 0x40, 0xfe, 0x7f, 0x00, 0x00 };
diff --git a/.dzen/icons/net-wired2.xbm b/.dzen/icons/net-wired2.xbm
new file mode 100644
index 0000000..fb7276a
--- /dev/null
+++ b/.dzen/icons/net-wired2.xbm
@@ -0,0 +1,6 @@
+#define network_eth1_width 16
+#define network_eth1_height 16
+static unsigned char network_eth1_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x60, 0x03, 0x70, 0x07,
+ 0x78, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x78, 0x0f, 0x70, 0x07, 0x60, 0x03,
+ 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/next.xbm b/.dzen/icons/next.xbm
new file mode 100644
index 0000000..3937532
--- /dev/null
+++ b/.dzen/icons/next.xbm
@@ -0,0 +1,4 @@
+#define next_width 8
+#define next_height 8
+static unsigned char next_bits[] = {
+ 0x00, 0x42, 0x4E, 0x7E, 0x7E, 0x4E, 0x42, 0x00 };
diff --git a/.dzen/icons/pause.xbm b/.dzen/icons/pause.xbm
new file mode 100644
index 0000000..6bb2251
--- /dev/null
+++ b/.dzen/icons/pause.xbm
@@ -0,0 +1,4 @@
+#define pause_width 8
+#define pause_height 8
+static unsigned char pause_bits[] = {
+ 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00 };
diff --git a/.dzen/icons/phones.xbm b/.dzen/icons/phones.xbm
new file mode 100644
index 0000000..cab8c58
--- /dev/null
+++ b/.dzen/icons/phones.xbm
@@ -0,0 +1,4 @@
+#define phones_width 8
+#define phones_height 8
+static unsigned char phones_bits[] = {
+ 0x3C, 0x42, 0x81, 0x81, 0xA5, 0xE7, 0xE7, 0x66 };
diff --git a/.dzen/icons/play.xbm b/.dzen/icons/play.xbm
new file mode 100644
index 0000000..d42ad52
--- /dev/null
+++ b/.dzen/icons/play.xbm
@@ -0,0 +1,4 @@
+#define play_width 8
+#define play_height 8
+static unsigned char play_bits[] = {
+ 0x00, 0x06, 0x1E, 0x7E, 0x7E, 0x1E, 0x06, 0x00 };
diff --git a/.dzen/icons/plus.xbm b/.dzen/icons/plus.xbm
new file mode 100644
index 0000000..f8e5f8a
--- /dev/null
+++ b/.dzen/icons/plus.xbm
@@ -0,0 +1,5 @@
+#define occupied_width 8
+#define occupied_height 16
+static unsigned char occupied_bits[] = {
+ 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/power-ac.xbm b/.dzen/icons/power-ac.xbm
new file mode 100644
index 0000000..45ed243
--- /dev/null
+++ b/.dzen/icons/power-ac.xbm
@@ -0,0 +1,6 @@
+#define power_ac_width 16
+#define power_ac_height 16
+static unsigned char power_ac_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xc0, 0x3f,
+ 0xe0, 0x07, 0xfc, 0x07, 0xfc, 0x07, 0xe0, 0x07, 0xc0, 0x3f, 0x80, 0x07,
+ 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/power-bat.xbm b/.dzen/icons/power-bat.xbm
new file mode 100644
index 0000000..c450bbc
--- /dev/null
+++ b/.dzen/icons/power-bat.xbm
@@ -0,0 +1,6 @@
+#define battery_width 16
+#define battery_height 16
+static unsigned char battery_bits[] = {
+ 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, 0x10, 0x08,
+ 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f,
+ 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x00, 0x00 };
diff --git a/.dzen/icons/power-bat2.xbm b/.dzen/icons/power-bat2.xbm
new file mode 100644
index 0000000..e7be632
--- /dev/null
+++ b/.dzen/icons/power-bat2.xbm
@@ -0,0 +1,6 @@
+#define power_bat2_width 16
+#define power_bat2_height 16
+static unsigned char power_bat2_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x7e, 0x18,
+ 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x18, 0xfe, 0x1f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/prev.xbm b/.dzen/icons/prev.xbm
new file mode 100644
index 0000000..8774315
--- /dev/null
+++ b/.dzen/icons/prev.xbm
@@ -0,0 +1,4 @@
+#define prev_width 8
+#define prev_height 8
+static unsigned char prev_bits[] = {
+ 0x00, 0x42, 0x72, 0x7E, 0x7E, 0x72, 0x42, 0x00 };
diff --git a/.dzen/icons/rwd.xbm b/.dzen/icons/rwd.xbm
new file mode 100644
index 0000000..5170b21
--- /dev/null
+++ b/.dzen/icons/rwd.xbm
@@ -0,0 +1,4 @@
+#define rwd_width 8
+#define rwd_height 8
+static unsigned char rwd_bits[] = {
+ 0x00, 0x48, 0x6C, 0x7E, 0x7E, 0x6C, 0x48, 0x00 };
diff --git a/.dzen/icons/spkr_hi.xbm b/.dzen/icons/spkr_hi.xbm
new file mode 100644
index 0000000..7c2ffc4
--- /dev/null
+++ b/.dzen/icons/spkr_hi.xbm
@@ -0,0 +1,4 @@
+#define spkr_01_width 8
+#define spkr_01_height 8
+static unsigned char spkr_01_bits[] = {
+ 0x08, 0x4C, 0x8F, 0xAF, 0xAF, 0x8F, 0x4C, 0x08 };
diff --git a/.dzen/icons/spkr_mute.xbm b/.dzen/icons/spkr_mute.xbm
new file mode 100644
index 0000000..8265bf8
--- /dev/null
+++ b/.dzen/icons/spkr_mute.xbm
@@ -0,0 +1,4 @@
+#define spkr_02_width 8
+#define spkr_02_height 8
+static unsigned char spkr_02_bits[] = {
+ 0x08, 0x0C, 0x0F, 0x1F, 0x1F, 0x0F, 0x0C, 0x08 };
diff --git a/.dzen/icons/square.xbm b/.dzen/icons/square.xbm
new file mode 100644
index 0000000..4bc66cd
--- /dev/null
+++ b/.dzen/icons/square.xbm
@@ -0,0 +1,5 @@
+#define square_width 8
+#define square_height 16
+static unsigned char square_bits[] = {
+ 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/stop.xbm b/.dzen/icons/stop.xbm
new file mode 100644
index 0000000..f92b64d
--- /dev/null
+++ b/.dzen/icons/stop.xbm
@@ -0,0 +1,4 @@
+#define stop_width 8
+#define stop_height 8
+static unsigned char stop_bits[] = {
+ 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00 };
diff --git a/.dzen/icons/temp.xbm b/.dzen/icons/temp.xbm
new file mode 100644
index 0000000..f37932b
--- /dev/null
+++ b/.dzen/icons/temp.xbm
@@ -0,0 +1,6 @@
+#define temp_width 16
+#define temp_height 16
+static unsigned char temp_bits[] = {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x0b, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0b,
+ 0x40, 0x02, 0x40, 0x02, 0x40, 0x0a, 0x40, 0x02, 0x40, 0x02, 0x60, 0x06,
+ 0x20, 0x04, 0x60, 0x06, 0xc0, 0x03, 0x00, 0x00 };
diff --git a/.dzen/icons/up.xbm b/.dzen/icons/up.xbm
new file mode 100644
index 0000000..2fb6f25
--- /dev/null
+++ b/.dzen/icons/up.xbm
@@ -0,0 +1,6 @@
+#define up_width 16
+#define up_height 16
+static unsigned char up_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/vol-hi.xbm b/.dzen/icons/vol-hi.xbm
new file mode 100644
index 0000000..7c4a849
--- /dev/null
+++ b/.dzen/icons/vol-hi.xbm
@@ -0,0 +1,6 @@
+#define vol_hi2_width 16
+#define vol_hi2_height 16
+static unsigned char vol_hi2_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, 0x21, 0xc0, 0x49, 0xfc, 0x51,
+ 0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x51, 0xc0, 0x49,
+ 0x80, 0x21, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/vol-mute.xbm b/.dzen/icons/vol-mute.xbm
new file mode 100644
index 0000000..2d01f7b
--- /dev/null
+++ b/.dzen/icons/vol-mute.xbm
@@ -0,0 +1,6 @@
+#define vol_mute2_width 16
+#define vol_mute2_height 16
+static unsigned char vol_mute2_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0xc0, 0x01, 0xfc, 0x01,
+ 0xfc, 0x01, 0xfc, 0x29, 0xfc, 0x11, 0xfc, 0x29, 0xfc, 0x01, 0xc0, 0x01,
+ 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 };
diff --git a/.dzen/icons/wifi_01.xbm b/.dzen/icons/wifi_01.xbm
new file mode 100644
index 0000000..315d0f7
--- /dev/null
+++ b/.dzen/icons/wifi_01.xbm
@@ -0,0 +1,4 @@
+#define wifi_01_width 8
+#define wifi_01_height 8
+static unsigned char wifi_01_bits[] = {
+ 0x80, 0xA0, 0xA8, 0xAB, 0xAB, 0xA8, 0xA0, 0x80 };
diff --git a/.dzen/icons/wifi_02.xbm b/.dzen/icons/wifi_02.xbm
new file mode 100644
index 0000000..bd2b3ee
--- /dev/null
+++ b/.dzen/icons/wifi_02.xbm
@@ -0,0 +1,4 @@
+#define wifi_02_width 8
+#define wifi_02_height 8
+static unsigned char wifi_02_bits[] = {
+ 0x40, 0x90, 0xA4, 0xA9, 0xA9, 0xA4, 0x90, 0x40 };
diff --git a/.dzen/temperature.sh b/.dzen/temperature.sh
new file mode 100755
index 0000000..4badbc5
--- /dev/null
+++ b/.dzen/temperature.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# original script by lyon8 <lyon8@gmx.net>
+# modifications from original by <sean.escriva@gmail.com>
+# show your laptop battery state in dzen
+# Taken from http://www.webframp.com/2008/08/17/switchdzen/ and modified by Ryan
+# Kavanagh <ryanakca@kubuntu.org> to add support for a missing battery and use
+# /sys instead of /proc/acpi/battery
+
+BG='#171717' # dzen backgrounad
+FG='#11DD11' # dzen foreground
+W=130 # width of the dzen bar
+GW=50 # width of the gauge
+GFG='#33ccff' # color of the gauge
+GH=7 # height of the gauge
+GBG='#333' # color of gauge background
+X=922 # x position
+Y=0 # y position
+FN='snap' # font
+TIME_INT=10
+
+TEMPERATURE=`acpi -t`
+
+while true; do
+ echo $TEMPERATURE | sed -e 's/.*ok, //g' && sleep $TIME_INT
+done | dzen2 -ta c -tw $W -y $Y -x $X -fg $FG -bg $BG #-fn $FN
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..798757d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.*.swo
+.*.swp
+build
+SUBSTS.local
+.mutt/alias.rc
diff --git a/.imapfilter/config.lua b/.imapfilter/config.lua
new file mode 100644
index 0000000..5d4e50f
--- /dev/null
+++ b/.imapfilter/config.lua
@@ -0,0 +1,235 @@
+--
+-- Options
+--
+
+options.timeout = 120
+options.subscribe = true
+
+
+
+-- Accounts
+
+
+GMAIL = IMAP {
+-- server = 'imap.gmail.com',
+-- port = 993,
+-- username = 'ryanakca@gmail.com',
+ server = 'localhost',
+ username = 'ryan',
+ password = 'LOCAL_PASS',
+}
+
+-- Another account which connects to the mail server using the SSLv3
+
+-- Get a list of the available mailboxes and folders
+mailboxes, folders = GMAIL:list_all()
+
+-- Get a list of the subscribed mailboxes and folders
+mailboxes, folders = GMAIL:list_subscribed()
+
+--
+-- Filters
+-- For
+-- GMAIL
+--
+
+-- Ubuntu stuff
+kubuntu = GMAIL.INBOX:contain_field('List-ID', 'kubuntu-devel.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.kuDevel'], kubuntu)
+
+ubuntuWeb = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-website.lists.canonical.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uWebML'], ubuntuWeb)
+
+UbuntuDevelAnnounce = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-devel-announce.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uDevelAnnounce'], UbuntuDevelAnnounce)
+
+
+ubuntuCanada = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-ca.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uCanada'], ubuntuCanada)
+
+uDoc = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-doc.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uDoc'], uDoc)
+
+uClassroom = GMAIL.INBOX:contain_field('List-Id', 'ubuntu-classroom.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uClassroom'], uClassroom)
+
+uClassroomOwner = GMAIL.INBOX:match_from('ubuntu-classroom-owner@lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['[Google Mail].Bin'], uClassroomOwner)
+
+launchpadUsers = GMAIL.INBOX:contain_field('List-ID', 'launchpad-users.lists.launchpad.net') +
+ GMAIL.INBOX:contain_field('List-ID', 'launchpad-users.lists.canonical.com') +
+ GMAIL.INBOX:match_to('launchpad-users@lists.launchpad.net') +
+ GMAIL.INBOX:match_cc('launchpad-users@lists.launchpad.net')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.launchpadUsers'], launchpadUsers)
+
+kubuntuBugs = GMAIL.INBOX:contain_field('List-ID', 'kubuntu-bugs.lists.ubuntu.com') +
+ GMAIL.INBOX:contain_header('X-Launchpad-Message-Rationale: .*@kubuntu-bugs') +
+ GMAIL.INBOX:match_header('X-BeenThere: kubuntu-bugs@lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.kuBugs'], kubuntuBugs)
+
+ubuntuirc = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-irc.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.ubuntu-irc'], ubuntuirc)
+
+ubuntuinstaller = GMAIL.INBOX:contain_field('List-ID', 'ubuntu-installer.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.ubuntu-installer'], ubuntuinstaller)
+
+ubuntu = GMAIL.INBOX:contain_field('List-ID', '.*.lists.ubuntu.com')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu'], ubuntu)
+
+uWebBugs = GMAIL.INBOX:match_header('X-Launchpad-Bug.*product=ubuntu-website.*')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uWebBugs'], uWebBugs)
+
+kuWebBugs = GMAIL.INBOX:match_header('X-Launchpad-Bug:.*product=kubuntu-website.*')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.kuWebBugs'], kuWebBugs)
+
+ubugs = GMAIL.INBOX:match_header('X-Launchpad-Bug:.*distribution=ubuntu;.*') +
+ GMAIL.INBOX:contain_field('List-Id', 'ubuntu-bugcontrol.lists.launchpad.net')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uBugs'], ubugs)
+
+kubuntuninjas = GMAIL.INBOX:match_header('X-Launchpad-PPA: kubuntu-ninjas')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.kubuntu-ninjas'], kubuntuninjas)
+
+--answers = GMAIL.INBOX:match_header('X-Launchpad-Question: distribution=ubuntu.*')
+--GMAIL.INBOX:mark_seen(answers)
+--GMAIL.INBOX:move_messages(GMAIL['Ubuntu.uAnswers'], answers)
+
+kubuntuWebmaster = GMAIL.INBOX:contain_to('webmaster@kubuntu.org')
+GMAIL.INBOX:move_messages(GMAIL['Ubuntu.kuWebmaster'], kubuntuWebmaster)
+
+-- Debian stuff
+
+debianmentorslist = GMAIL.INBOX:contain_field('List-ID', 'debian-mentors.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-mentors'], debianmentorslist)
+
+debiandevel = GMAIL.INBOX:contain_field('List-ID', 'debian-devel.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-devel'], debiandevel)
+
+debiandevelann = GMAIL.INBOX:contain_field('List-ID', 'debian-devel-announce.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-devel-announce'], debiandevelann)
+
+debiannewmaint = GMAIL.INBOX:contain_field('List-ID', 'debian-newmaint.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-newmaint'], debiannewmaint)
+
+debianpythonapps = GMAIL.INBOX:contain_field('List-ID', 'python-apps-team.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.python-apps-team'], debianpythonapps)
+
+debianqtkde = GMAIL.INBOX:contain_field('List-ID', 'debian-qt-kde.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-qt-kde'], debianqtkde)
+
+debianpkgkdetalk = GMAIL.INBOX:contain_field('List-ID', 'pkg-kde-talk.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.pkg-kde-talk'], debianpkgkdetalk)
+
+debianpkgkdeextras = GMAIL.INBOX:contain_field('List-ID', 'pkg-kde-extras.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.pkg-kde-extras'], debianpkgkdeextras)
+
+debianpkgkdecommits = GMAIL.INBOX:contain_field('List-ID', 'pkg-kde-commits.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.pkg-kde-commits'], debianpkgkdecommits)
+
+debianpython = GMAIL.INBOX:contain_field('List-ID', 'debian-python.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-python'], debianpython)
+
+debiandevelfrench = GMAIL.INBOX:contain_field('List-ID', 'debian-devel-french.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-devel-french'], debiandevelfrench)
+
+debianpkgmultimediacommits = GMAIL.INBOX:contain_field('List-ID', 'pkg-multimedia-commits.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.pkg-multimedia-commits'], debianpkgmultimediacommits)
+
+debianpkgmultimediamaintainers = GMAIL.INBOX:contain_field('List-ID', 'pkg-multimedia-maintainers.lists.alioth.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.pkg-multimedia-maintainers'], debianpkgmultimediamaintainers)
+
+debianjava = GMAIL.INBOX:contain_field('List-ID', 'debian-java.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-java'], debianjava)
+
+debiannews = GMAIL.INBOX:contain_field('List-ID', 'debian-news.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-news'], debiannews)
+
+debiandak = GMAIL.INBOX:contain_field('List-ID', 'debian-dak.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-dak'], debiandak)
+
+debianproject = GMAIL.INBOX:contain_field('List-ID', 'debian-project.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-project'], debianproject)
+
+debianqa = GMAIL.INBOX:contain_field('List-ID', 'debian-qa.lists.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.debian-qa'], debianqa)
+
+dbugs = GMAIL.INBOX:match_from('.*@bugs.debian.org')
+GMAIL.INBOX:move_messages(GMAIL['Debian.dBugs'], dbugs)
+
+-- KDE Stuff
+
+kdefrancophone = GMAIL.INBOX:contain_field('List-ID', 'kde-francophone.kde.org')
+GMAIL.INBOX:move_messages(GMAIL['KDE.kde-francophone'], kdefrancophone)
+
+
+-- Other computer stuff
+--
+slashdot = ( GMAIL.INBOX:is_seen() *
+ GMAIL.INBOX:match_from('slashdot@slashdot.org') )
+GMAIL.INBOX:move_messages(GMAIL['Slashdot'], slashdot)
+--
+lwn = ( GMAIL.INBOX:is_seen() *
+ GMAIL.INBOX:match_from('lwn@lwn.net') )
+GMAIL.INBOX:move_messages(GMAIL['lwn'], lwn)
+
+sbuild = GMAIL.INBOX:match_from('sbuild@.*.ryanak.ca') +
+ GMAIL.INBOX:match_from('sbuild@lambda')
+GMAIL.INBOX:move_messages(GMAIL['sbuild'], sbuild)
+
+freebsdstable = GMAIL.INBOX:contain_field('List-Id', 'freebsd-stable.freebsd.org')
+GMAIL.INBOX:move_messages(GMAIL['FreeBSD.freebsd-stable'], freebsdstable)
+
+freebsdcurrent = GMAIL.INBOX:contain_field('List-Id', 'freebsd-current.freebsd.org')
+GMAIL.INBOX:move_messages(GMAIL['FreeBSD.freebsd-current'], freebsdcurrent)
+
+-- O'ists
+
+oactivists = GMAIL.INBOX:contain_field('List-Id', 'oactivists.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OActivists'], oactivists)
+
+oevolve = GMAIL.INBOX:contain_field('List-Id', 'oevolve.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OEvolve'], oevolve)
+
+oproducers = GMAIL.INBOX:contain_field('List-Id', 'oproducers.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OProducers'], oproducers)
+
+ogrownups = GMAIL.INBOX:contain_field('List-Id', 'ogrownups.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OGrownups'], ogrownups)
+
+ogeeks = GMAIL.INBOX:contain_field('List-ID', 'ogeeks.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OGeeks'], ogeeks)
+
+opeople = GMAIL.INBOX:contain_field('List-ID', 'opeople.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['OPeople'], opeople)
+
+paleobloggers = GMAIL.INBOX:contain_field('List-Id', 'paleobloggers.googlegroups.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['PaleoBloggers'], paleobloggers)
+
+-- Queen's
+
+qsocial = ( GMAIL.INBOX:is_seen() *
+ ( GMAIL.INBOX:match_to('social@cs.queensu.ca') +
+ GMAIL.INBOX:match_cc('social@cs.queensu.ca') ) )
+GMAIL.INBOX:move_messages(GMAIL['Queens.social'], qsocial)
+
+-- People
+
+bagpipes = GMAIL.INBOX:match_from('PM_EMAIL') +
+ GMAIL.INBOX:match_cc('PM_EMAIL')
+GMAIL.INBOX:move_messages(GMAIL['Bagpipes'], bagpipes)
+
+-- Misc
+
+pjm = GMAIL.INBOX:match_from('webmaster@pajamasmedia.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['PJM'], pjm)
+
+rubinreports = GMAIL.INBOX:match_from('profbarryrubin@yahoo.com') *
+ GMAIL.INBOX:is_seen()
+GMAIL.INBOX:move_messages(GMAIL['RubinReports'], rubinreports)
diff --git a/.inputrc b/.inputrc
new file mode 100644
index 0000000..4fd5901
--- /dev/null
+++ b/.inputrc
@@ -0,0 +1,4 @@
+set meta-flag on
+set convert-meta off
+set output-meta on
+set bell-style audible
diff --git a/.local/share/wallpapers/atlas.jpg b/.local/share/wallpapers/atlas.jpg
new file mode 100644
index 0000000..e102374
--- /dev/null
+++ b/.local/share/wallpapers/atlas.jpg
Binary files differ
diff --git a/.local/share/wallpapers/feh-slideshow.py b/.local/share/wallpapers/feh-slideshow.py
new file mode 100644
index 0000000..2e33a37
--- /dev/null
+++ b/.local/share/wallpapers/feh-slideshow.py
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+
+import os
+import random
+
+WALLPAPER_DIR="/home/ryan/.local/share/wallpapers"
+
+wallpapers = os.listdir(WALLPAPER_DIR)
+
+os.system('feh --bg-center %s' % random.choice(wallpapers))
diff --git a/.local/share/wallpapers/ny1.jpg b/.local/share/wallpapers/ny1.jpg
new file mode 100644
index 0000000..08c4099
--- /dev/null
+++ b/.local/share/wallpapers/ny1.jpg
Binary files differ
diff --git a/.local/share/wallpapers/ny2.jpg b/.local/share/wallpapers/ny2.jpg
new file mode 100644
index 0000000..202f4ea
--- /dev/null
+++ b/.local/share/wallpapers/ny2.jpg
Binary files differ
diff --git a/.local/share/wallpapers/skyscraper.bmp b/.local/share/wallpapers/skyscraper.bmp
new file mode 100644
index 0000000..a81f04e
--- /dev/null
+++ b/.local/share/wallpapers/skyscraper.bmp
Binary files differ
diff --git a/.local/share/wallpapers/skyscraper_at_sunset.bmp b/.local/share/wallpapers/skyscraper_at_sunset.bmp
new file mode 100644
index 0000000..80bf40e
--- /dev/null
+++ b/.local/share/wallpapers/skyscraper_at_sunset.bmp
Binary files differ
diff --git a/.local/share/wallpapers/torre_agba1_2333x1560.jpg b/.local/share/wallpapers/torre_agba1_2333x1560.jpg
new file mode 100644
index 0000000..ee451eb
--- /dev/null
+++ b/.local/share/wallpapers/torre_agba1_2333x1560.jpg
Binary files differ
diff --git a/.local/share/wallpapers/totheglory.jpg b/.local/share/wallpapers/totheglory.jpg
new file mode 100644
index 0000000..e4c6a05
--- /dev/null
+++ b/.local/share/wallpapers/totheglory.jpg
Binary files differ
diff --git a/.mailcheckrc b/.mailcheckrc
new file mode 100644
index 0000000..ba2eade
--- /dev/null
+++ b/.mailcheckrc
@@ -0,0 +1,45 @@
+# mailcheckrc Default configuration for Mailcheck program
+#
+# This is a sample mailcheckrc file. It provies a good starting point,
+# but it probably isn't exactly what you want. See mailcheck(1) for
+# more information.
+
+# If you edit /etc/login.defs to turn off mailbox checking, you'll
+# probably want to enable this next line:
+#/var/spool/mail/$(USER)
+
+# If you're using qmail's Maildir feature, you'll probably want to
+# enable this line:
+#$(HOME)/Maildir/
+
+# For qmail's mbox file in user's home directory:
+#$(HOME)/Mailbox
+
+# Mailcheck also supports remote POP3 and IMAP mailboxes. Most users
+# will want to set these up in a .mailcheckrc file in their home
+# directory, not here.
+
+# If you have a remote POP3 mailbox, use a line like the following
+# if your username is the same there as here.
+#pop3://servername
+#
+# If your POP3 username is different there than here:
+#pop3://username@servernameint
+#
+# In either case, you need to put an entry in $HOME/.netrc for the password.
+# .netrc is in the form:
+#
+# machine mail.example.com login rmf1 password MyPasWrd
+#
+# where mail.example.com, rmf1, and MyPasWrd are the values for your account,
+# and machine, login, and password are literal text in the file.
+
+# An IMAP account is similar to a POP account, but you can specify a
+# mailbox path:
+#imap://servername/inbox
+
+# For both POP3 and IMAP, you can specify a nonstandard port:
+#pop3://servername:1110
+#imap://servername:1143/inbox
+imap://ryan@localhost/
+imap://ryan@localhost/QueensU.INBOX
diff --git a/.mutt/accounts.rc b/.mutt/accounts.rc
new file mode 100644
index 0000000..22ea16c
--- /dev/null
+++ b/.mutt/accounts.rc
@@ -0,0 +1,97 @@
+# vim: syntax=muttrc
+
+account-hook imaps://imap.gmail.com \
+"set imap_user = 'ryanakca@gmail.com';\
+set imap_pass = 'GMAIL_PASS';\
+set imap_passive = 'no';\
+set folder = 'imaps://imap.gmail.com:933';\
+set spoolfile = '=INBOX'"
+
+account-hook imap://localhost \
+"set imap_user = 'ryan';\
+set imap_pass = 'LOCAL_PASS';\
+set imap_passive = 'no';\
+set folder = 'imap://localhost';\
+set spoolfile = '=INBOX'"
+
+account-hook imaps://mail.queensu.ca \
+"set imap_user = '9rak';\
+set imap_pass = 'QUEENSU_PASS';\
+set folder = 'imaps://9rak@mail.queensu.ca:993';\
+set record = 'imaps://9rak@mail.queensu.ca/Sent';\
+set postponed = 'imaps://9rak@mail.queensu.ca/Drafts';\
+set spoolfile = 'imaps://9rak@mail.queensu.ca/Inbox';\
+set imap_passive = 'no'"
+
+send-hook . \
+"set from = 'Ryan Kavanagh <ryanakca@kubuntu.org>';\
+set envelope_from_address = 'Ryan Kavanagh <ryanakca@kubuntu.org>';\
+set use_from = yes;\
+set use_envelope_from = 'yes';\
+my_hdr From: ryanakca@kubuntu.org;\
+my_hdr Reply-To: ryanakca@kubuntu.org;\
+my_hdr Return-Path: ryanakca@kubuntu.org;\
+set sendmail='/usr/bin/msmtp';\
+unset smtp_url;\
+unset smtp_pass;\
+unset record;\
+set spoolfile = '=INBOX';\
+set postponed = '=[Google Mail]/Drafts'"
+
+folder-hook . \
+"set from = 'Ryan Kavanagh <ryanakca@kubuntu.org>';\
+set envelope_from_address = 'Ryan Kavanagh <ryanakca@kubuntu.org>';\
+set use_from = yes;\
+set use_envelope_from = 'yes';\
+my_hdr From: ryanakca@kubuntu.org;\
+my_hdr Reply-To: ryanakca@kubuntu.org;\
+my_hdr Return-Path: ryanakca@kubuntu.org;\
+set sendmail='/usr/bin/msmtp';\
+unset smtp_url;\
+unset smtp_pass;\
+unset record;\
+set spoolfile = '=INBOX';\
+set postponed = '=[Google Mail]/Drafts';\
+macro index,pager <ESC>a '<save-message>=[Google Mail]/All Mail<enter><enter>' 'Archive';\
+macro index,pager S '<save-message>=[Google Mail].Spam<enter><enter>' 'Spam';\
+macro index .s '<tag-prefix><copy-message>=Debian.archive<enter>' 'Saves Deb packaging email to Debian.archive';\
+set pager_format = '-%Z-MAIN: %C/%m: %-20.20n %s';\
+set compose_format = '-- MAIN: Compose [Approx. msg size: %l Atts: %a]%>-';\
+set status_format = '-%r-MAIN: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---'"
+
+folder-hook .*[Qq]ueens[uU].* \
+"unhook send-hook;\
+set envelope_from_address = 'ryan.kavanagh@queensu.ca';\
+set from = 'ryan.kavanagh@queensu.ca';\
+my_hdr From: ryan.kavanagh@queensu.ca;\
+my_hdr Reply-To: ryan.kavanagh@queensu.ca;\
+my_hdr Return-Path: ryan.kavanagh@queensu.ca;\
+set use_envelope_from = 'yes';\
+unset sendmail;
+set smtp_url="smtps://9rak@mail.queensu.ca:465/";\
+set smtp_pass = 'QUEENSU_PASS';\
+set record='=QueensU.Sent';\
+set postponed='=QueensU.Drafts';\
+set pager_format = '-%Z-QUEENS: %C/%m: %-20.20n %s';\
+set compose_format = '-- QUEENS: Compose [Approx. msg size: %l Atts: %a]%>-';\
+set status_format = '-%r-QUEENS: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---'"
+
+folder-hook /var/mail/ryan \
+"set mbox_type = Maildir;\
+set folder = /var/mail/ryan;\
+set spoolfile = /var/mail/ryan;\
+set postponed = $HOME/.maildb/GMAIL/Drafts;\
+macro index,pager <ESC>a '<save-message>$HOME/.maildb/GMAIL/[Google Mail]/All Mail<enter><enter>' 'Archive';\
+set pager_format = '-%Z-LOCAL: %C/%m: %-20.20n %s';\
+set compose_format = '-- LOCAL: Compose [Approx. msg size: %l Atts: %a]%>-';\
+set status_format = '-%r-LOCAL: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---'"
+
+macro index <F12> "cimaps://imap.gmail.com/INBOX<enter>"
+macro index <F11> "cimap://localhost/INBOX<enter>"
+macro index <F10> "cimaps://mail.queensu.ca/Inbox<enter>"
+
+macro compose <F2> '<enter-command>set sendmail="/usr/bin/msmtp -a ubuntu"<enter><enter-command>unset smtp_url<enter><enter-command>unset smtp_pass<enter><edit-from>Ryan Kavanagh <ryanakca@ubuntu.com><enter><edit-reply-to>ryanakca@ubuntu.com<enter><edit-fcc><enter><enter-command>set postponed="=[Google Mail]/Drafts"<enter>' "Sent mail from Ubuntu account"
+macro compose <F3> '<enter-command>set sendmail="/usr/bin/msmtp"<enter><enter-command>unset smtp_url<enter><enter-command>unset smtp_pass<enter><edit-from>Ryan Kavanagh <ryanakca@kubuntu.org><enter><edit-reply-to>ryanakca@kubuntu.org<enter><edit-fcc><enter><enter-command>set postponed="=[Google Mail]/Drafts"<enter>' "Sent mail from Kubuntu account"
+macro compose <F4> '<enter-command>unset sendmail<enter><edit-from>Ryan Kavanagh <ryan.kavanagh@queensu.ca><enter><edit-reply-to>ryan.kavanagh@queensu.ca<enter><edit-fcc>=QueensU.Sent<enter><enter-command>set postponed="=QueensU.Drafts"<enter><enter-command>set smtp_url="smtps://9rak@mail.queensu.ca:465/"<enter><enter-command>set smtp_pass="QUEENSU_PASS"<enter><enter-command>set record="=QueensU.Sent"<enter>' "Sent mail from Queen's account"
+
+set certificate_file = '~/.mutt/certs/certificates'
diff --git a/.mutt/certs/594f1775.0 b/.mutt/certs/594f1775.0
new file mode 120000
index 0000000..4ba54a1
--- /dev/null
+++ b/.mutt/certs/594f1775.0
@@ -0,0 +1 @@
+Equifax_Secure_CA.pem \ No newline at end of file
diff --git a/.mutt/certs/Equifax_Secure_CA.pem b/.mutt/certs/Equifax_Secure_CA.pem
new file mode 100644
index 0000000..e352e83
--- /dev/null
+++ b/.mutt/certs/Equifax_Secure_CA.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
+ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
+MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
+B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
+fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
+8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
+A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
+CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
+A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
+spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
+Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
+zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
+BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
+70+sB3c4
+-----END CERTIFICATE-----
diff --git a/.mutt/certs/SMTP.pem b/.mutt/certs/SMTP.pem
new file mode 100644
index 0000000..1158375
--- /dev/null
+++ b/.mutt/certs/SMTP.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDWzCCAsSgAwIBAgIKFMs0nQADAAASjjANBgkqhkiG9w0BAQUFADBGMQswCQYD
+VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu
+dGVybmV0IEF1dGhvcml0eTAeFw0xMDA0MjIyMDAyNDVaFw0xMTA0MjIyMDEyNDVa
+MGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
+b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRcwFQYDVQQDEw5zbXRw
+LmdtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz4B46NG2l4Bk
+DdccddAuuOssQ4ZxCHoyj+ErdlEqZurVCoGQzAkhZTkzHrmIgYmM6roTbkF/zEaa
+2ROe9s4VoL4OgUnoyB0u1KbwrG5PHBbsMdk0r6jMmhh+MORFVYgQrFxJnu8GnHiG
+W4QhmKVytu0FclYE+F1gOOx5qIgTVCMCAwEAAaOCASwwggEoMB0GA1UdDgQWBBS1
++KKmwdxtkpKkJgvwhZztqe0uszAfBgNVHSMEGDAWgBS/wDDr9UMRPme6npH7/Gra
+42sSJDBbBgNVHR8EVDBSMFCgTqBMhkpodHRwOi8vd3d3LmdzdGF0aWMuY29tL0dv
+b2dsZUludGVybmV0QXV0aG9yaXR5L0dvb2dsZUludGVybmV0QXV0aG9yaXR5LmNy
+bDBmBggrBgEFBQcBAQRaMFgwVgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cuZ3N0YXRp
+Yy5jb20vR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRo
+b3JpdHkuY3J0MCEGCSsGAQQBgjcUAgQUHhIAVwBlAGIAUwBlAHIAdgBlAHIwDQYJ
+KoZIhvcNAQEFBQADgYEAUc39Y22ucA2N4mmDdPMC8DKbrRGlGMpC294mfh3yCkJa
+YRWjodFQSgCtFyKhTZ9roFpSEL0D4QxAtLSwtC0bSaSVusfAW3/CFgG/Cya724ic
+9UoEosoG8CK+eGoGQuEsZ0xR86J5jOs2H+4QPHFCn594V7ZySzdeQi93YV31RBE=
+-----END CERTIFICATE-----
diff --git a/.mutt/certs/Thawte_Premium_Server_CA.pem b/.mutt/certs/Thawte_Premium_Server_CA.pem
new file mode 100644
index 0000000..dc78c05
--- /dev/null
+++ b/.mutt/certs/Thawte_Premium_Server_CA.pem
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDIjCCAougAwIBAgIQHxn23jXdY6FCkYrVLMCrEjANBgkqhkiG9w0BAQUFADBM
+MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
+THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
+MTEyMTgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
+MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw
+FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBANknyBHye+RFyUa2Y3WDsXd+F0GJgDjxRSegPNnoqABL2QfQut7t9CymrNwn
+E+wMwaaZF0LmjSfSgRSwS4L6ssXQuyBZYiijlrVh9nbBbUbS/brGDz3RyXeaWDP2
+BnYyrVFfKV9u+BKLrebFCDmzQ0OpW5Ed1+PPUd91WY6NgKtTAgMBAAGjgecwgeQw
+DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0
+ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF
+BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0
+cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3
+dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF
+BQADgYEAicju7fexy+yRP2drx57Tcqo+BElR1CiHNZ1nhPmS9QSZaudDA8jy25IP
+VWvjEgaq13Hro0Hg32ZNVK53qcXwjWtnCAReojvNwj6/x1Ciq5B6D7E6eiYDSfXJ
+8/a2vR5IbgY89nq+wuHaA6vspH6vNR848xO3z1PQ7BrIjnYQ1A0=
+-----END CERTIFICATE-----
diff --git a/.mutt/certs/c33a80d4.0 b/.mutt/certs/c33a80d4.0
new file mode 120000
index 0000000..96360b2
--- /dev/null
+++ b/.mutt/certs/c33a80d4.0
@@ -0,0 +1 @@
+Thawte_Premium_Server_CA.pem \ No newline at end of file
diff --git a/.mutt/certs/ca-bundle.crt b/.mutt/certs/ca-bundle.crt
new file mode 100644
index 0000000..219c374
--- /dev/null
+++ b/.mutt/certs/ca-bundle.crt
@@ -0,0 +1,3509 @@
+##
+## ca-bundle.crt -- Bundle of CA Root Certificates
+##
+## Converted at: Thu Aug 27 16:45:20 2009 UTC
+##
+## This is a bundle of X.509 certificates of public Certificate Authorities
+## (CA). These were automatically extracted from Mozilla's root certificates
+## file (certdata.txt). This file can be found in the mozilla source tree:
+## '/mozilla/security/nss/lib/ckfw/builtins/certdata.txt'
+##
+## It contains the certificates in PEM format and therefore
+## can be directly used with curl / libcurl / php_curl, or with
+## an Apache+mod_ssl webserver for SSL client authentication.
+## Just configure this file as the SSLCACertificateFile.
+##
+
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is the Netscape security libraries.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1994-2000
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.53 $ $Date: 2009/05/21 19:50:28 $
+
+Verisign/RSA Secure Server CA
+=============================
+-----BEGIN CERTIFICATE-----
+MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
+IDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVow
+XzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQL
+EyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUA
+A4GJADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII0haGN1Xp
+sSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphIuR2nKRoTLkoRWZweFdVJ
+VCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZIhvcNAQECBQADfgBl3X7hsuyw4jrg7HFG
+mhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2
+qUtN8iD3zV9/ZHuO3ABc1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
+-----END CERTIFICATE-----
+
+GTE CyberTrust Root CA
+======================
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
+Q29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJvb3QwHhcNOTYwMjIzMjMwMTAw
+WhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9u
+MRwwGgYDVQQDExNHVEUgQ3liZXJUcnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQC45k+625h8cXyvRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH
+6X4MypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/51KiOQswk
+wB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKzdcZfHeFhVYAA1IFLezEP
+I2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWlIjeaY8JIILTbcuPI9tl8vrGvU9oUtCG4
+1tWW4/5ODFlitppK+ULdjG+BqXH/9ApybW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE-----
+
+GTE CyberTrust Global Root
+==========================
+-----BEGIN CERTIFICATE-----
+MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
+Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
+A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
+MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
+Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
+IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
+sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
+HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
+AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
+M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
+NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
+-----END CERTIFICATE-----
+
+Thawte Personal Basic CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
+dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMY
+VGhhd3RlIFBlcnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0
+aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpB
+MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhh
+d3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
+ITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZcGVyc29u
+YWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+C
+FeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJ
+l+A1OFdKwPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY
+0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAt4plrsD16
+iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7c8a914phXAPjLSeoF+CEhULcXpvG
+t7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN
+92NWod8isQ==
+-----END CERTIFICATE-----
+
+Thawte Personal Premium CA
+==========================
+-----BEGIN CERTIFICATE-----
+MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
+dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMa
+VGhhd3RlIFBlcnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1p
+dW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQG
+EwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoT
+EVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlz
+aW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3DQEJARYb
+cGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ
+Ztn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ
+8/JE2dWIEt12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicR
+FTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GB
+AGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIHb4Vnjt4rueIXsDqg8A6iAJrf8xQV
+brvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+W
+jS9Q2wfD6h+rM+D1KzGJ
+-----END CERTIFICATE-----
+
+Thawte Personal Freemail CA
+===========================
+-----BEGIN CERTIFICATE-----
+MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
+dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMb
+VGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVl
+bWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNV
+BAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE
+ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
+aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJ
+ARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
+gYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6W
+ZBrCFG5ErHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgk
+CGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF
+AAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjPMPuoSpaKH2JCI4wXD/S6ZJwXrEcp
+352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK
+/qarigd1iwzdUYRr5PjRzneigQ==
+-----END CERTIFICATE-----
+
+Thawte Server CA
+================
+-----BEGIN CERTIFICATE-----
+MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
+AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
+b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
+BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
+c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
+A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
+ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
+/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
+1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
+GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
+GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
+-----END CERTIFICATE-----
+
+Thawte Premium Server CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
+AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
+ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
+AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
+VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
+aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
+cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
+aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
+Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
+qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
+SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
+8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
+UCemDaYj+bvLpgcUQg==
+-----END CERTIFICATE-----
+
+Equifax Secure CA
+=================
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
+ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
+MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
+B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
+fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
+8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
+A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
+CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
+A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
+spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
+Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
+zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
+BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
+70+sB3c4
+-----END CERTIFICATE-----
+
+ABAecom (sub., Am. Bankers Assn.) Root CA
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAwgYkxCzAJBgNV
+BAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2FzaGluZ3RvbjEXMBUGA1UEChMOQUJBLkVD
+T00sIElOQy4xGTAXBgNVBAMTEEFCQS5FQ09NIFJvb3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWlu
+QGRpZ3NpZ3RydXN0LmNvbTAeFw05OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQswCQYD
+VQQGEwJVUzELMAkGA1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24xFzAVBgNVBAoTDkFCQS5F
+Q09NLCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBSb290IENBMSQwIgYJKoZIhvcNAQkBFhVhZG1p
+bkBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx0xHgeVVD
+BwhMywVCAOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM0KLMsFWWU4RmBQDaREmA2FQKpSWGlO1j
+Vv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFGPR7wuSw0X4x8TAgpnUBV6zx9g9618PeKgw6hTLQ6pbNf
+WiKX7BmbwQVo/ea3qZGULOR4SCQaJRk665WcOQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtx
+A6k4ShZsiSrK2jMTecJVjO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU+/94
+Qby9cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQgwDQYJKoZI
+hvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0kqS8Kfv2kRLD4VAe9G52dyntQJHsR
+W0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvTZOirvRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJh
+koHWG9YA8A6eKHegTYjHInYZw8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm
+/lowdiT/QHI8eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgxfexgeqMiKL0ZJGA/
+O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJTzFxiNmIf1Q=
+-----END CERTIFICATE-----
+
+Digital Signature Trust Co. Global CA 1
+=======================================
+-----BEGIN CERTIFICATE-----
+MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
+ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
+MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
+IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
+A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
+NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
+o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
+BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
+dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
+IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
+MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
+BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
+ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
+kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
+RbyhkwS7hp86W0N6w4pl
+-----END CERTIFICATE-----
+
+Digital Signature Trust Co. Global CA 3
+=======================================
+-----BEGIN CERTIFICATE-----
+MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
+ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
+MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
+IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
+A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
+VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
+xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
+BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
+dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
+IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
+MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
+BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
+AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
+up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
+mPnHfxsb1gYgAlihw6ID
+-----END CERTIFICATE-----
+
+Digital Signature Trust Co. Global CA 2
+=======================================
+-----BEGIN CERTIFICATE-----
+MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
+czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
+YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBS
+b290Q0EgWDExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4
+NTVaFw0wODExMjgxODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
+BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
+MA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0BCQEW
+EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANLGJrbn
+pT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdfWvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZ
+PdJEjdd0IG03Ao9pk1uKxBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGA
+vqPYUrBEzUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F5X5y
+P4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMvOnNn7pTKBBMFYgZw
+I7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAojeyP2n714Z5
+VEkxlTMr89EJFEliYIalsBHiUMIdBlc+LegzZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2
+vAd5ZWRzfdd5ynvVWlHG4VMElo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX
+8ngvYzZAOONGDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q
+gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2kYtdo+o56T9II
+2pPc8JIRetDccpMMc5NihWjQ9A==
+-----END CERTIFICATE-----
+
+Digital Signature Trust Co. Global CA 4
+=======================================
+-----BEGIN CERTIFICATE-----
+MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
+czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
+YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBS
+b290Q0EgWDIxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2
+MTZaFw0wODExMjcyMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
+BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
+MA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0BCQEW
+EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANx18IzA
+dZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbVp9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva
+3G3WqZlVUmfpKAOS3OWwBZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9
+kVySVGkl5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi3sOP
+17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+QVCvbK4iNC7Va26D
+unm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAtTYOXeFhKFoR
+ZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT
+4EOvkTvRyyzYdFQ6HE3K1GjNI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV
+6YyDfFk/xPEL553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q
+10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbINuBVd8d+6ybVK
+1GSYsyapMMj9puyrliGtf8J4tg==
+-----END CERTIFICATE-----
+
+Verisign Class 1 Public Primary Certification Authority
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTla
+MF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3Mg
+MSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEF
+AAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw
+0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7
+NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf
+7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnx
+giJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0A
+NACY89FxlA==
+-----END CERTIFICATE-----
+
+Verisign Class 2 Public Primary Certification Authority
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
+XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAy
+IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6
+Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/
+S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIobK/o5wXTX
+XtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUY
+YAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2
+lw0Xd8rY
+-----END CERTIFICATE-----
+
+Verisign Class 3 Public Primary Certification Authority
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
+XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
+IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
+f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
+hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
+TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
+WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
+Tqj/ZA1k
+-----END CERTIFICATE-----
+
+Verisign Class 1 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
+k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
+WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
+XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
+lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
+-----END CERTIFICATE-----
+
+Verisign Class 2 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
+cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
+Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
+c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
+cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
+Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
+c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
+nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
+wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
+ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
+1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
+LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
+-----END CERTIFICATE-----
+
+Verisign Class 3 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
+FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
+lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
+1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
+Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
+-----END CERTIFICATE-----
+
+Verisign Class 4 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4
+xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH
+qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF
+WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB
+ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp
+-----END CERTIFICATE-----
+
+GlobalSign Root CA
+==================
+-----BEGIN CERTIFICATE-----
+MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
+GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
+b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
+BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
+VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
+DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
+THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
+Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
+c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
+gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
+AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
+Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
+j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
+hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
+X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
+-----END CERTIFICATE-----
+
+GlobalSign Root CA - R2
+=======================
+-----BEGIN CERTIFICATE-----
+MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
+YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
+bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
+aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
+bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
+ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
+s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
+S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
+TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
+ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
+FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
+YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
+BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
+9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
+01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
+9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
+TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
+-----END CERTIFICATE-----
+
+ValiCert Class 1 VA
+===================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
+MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
+GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
+DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
+lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
+icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
+Orf1LXLI
+-----END CERTIFICATE-----
+
+ValiCert Class 2 VA
+===================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
+MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
+CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
+ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
+SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
+UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
+W9ViH0Pd
+-----END CERTIFICATE-----
+
+RSA Root Certificate 1
+======================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
+MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
+3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
+BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
+3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
+V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
+on+jjBXu
+-----END CERTIFICATE-----
+
+Verisign Class 1 Public Primary Certification Authority - G3
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
+cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
+dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
+bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
+rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
+FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
+q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
+y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
+ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
+a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
+D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
+-----END CERTIFICATE-----
+
+Verisign Class 2 Public Primary Certification Authority - G3
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
+azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
+b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
+aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
+BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
+c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
+aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
+ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
+tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
+C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
+0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
+Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
+JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
+0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
+sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
+JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
+GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
+-----END CERTIFICATE-----
+
+Verisign Class 3 Public Primary Certification Authority - G3
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
+cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
+dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
+EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
+cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
+EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
+055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
+ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
+j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
+/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
+xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
+t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
+-----END CERTIFICATE-----
+
+Verisign Class 4 Public Primary Certification Authority - G3
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
+cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
+dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
+tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
+8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
+Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
+Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
+j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
+mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
+fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
+RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
+UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
+-----END CERTIFICATE-----
+
+Entrust.net Secure Server CA
+============================
+-----BEGIN CERTIFICATE-----
+MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
+BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
+cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
+ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
+A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
+eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
+dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
+aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
+gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
+ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
+CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
+dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
+bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
+dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
+NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
+HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
+BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
+Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
+n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
+-----END CERTIFICATE-----
+
+Entrust.net Secure Personal CA
+==============================
+-----BEGIN CERTIFICATE-----
+MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMCVVMxFDASBgNV
+BAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8v
+Q1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1
+c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9u
+IEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJV
+UzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRf
+Q0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5
+OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdv
+kHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGp
+OZ5V+Pux5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTm
+T173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkwggEVMIHkoIHh
+oIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3
+dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBs
+aWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50
+cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg
+KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNVHRAEJDAigA8x
+OTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU
+xPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1Ud
+EwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K
+8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6h
+URzzwy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYG
+JqibGapEPHayXOw=
+-----END CERTIFICATE-----
+
+Entrust.net Premium 2048 Secure Server CA
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
+ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
+bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
+BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
+NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
+d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
+MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
+ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
+Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
+hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
+nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
+VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
+AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
+gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
+AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
+oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
+o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
+2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
+OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
+-----END CERTIFICATE-----
+
+Baltimore CyberTrust Root
+=========================
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
+ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
+ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
+SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
+dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
+uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
+UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
+G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
+XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
+l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
+VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
+BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
+cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
+hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
+Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
+RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+
+Equifax Secure Global eBusiness CA
+==================================
+-----BEGIN CERTIFICATE-----
+MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
+bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
+HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
+b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
+PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
+qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
+hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
+BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
+MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
+I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
+NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
+-----END CERTIFICATE-----
+
+Equifax Secure eBusiness CA 1
+=============================
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
+LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
+ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
+IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
+1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
+IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
+MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
+Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
+AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
+lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
+KpYrtWKmpj29f5JZzVoqgrI3eQ==
+-----END CERTIFICATE-----
+
+Equifax Secure eBusiness CA 2
+=============================
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
+ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
+MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
+DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
+2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
+BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
+A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
+JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
+A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
+uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
+Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
+jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
+78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
+V+GRMOrN
+-----END CERTIFICATE-----
+
+Visa International Global Root 2
+================================
+-----BEGIN CERTIFICATE-----
+MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCVVMxDTALBgNVBAoT
+BFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25hbCBTZXJ2aWNlIEFzc29jaWF0aW9uMRIw
+EAYDVQQDEwlHUCBSb290IDIwHhcNMDAwODE2MjI1MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYD
+VQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZp
+Y2UgQXNzb2NpYXRpb24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZDK9vZBv42pWUJGkzEXDK41Z0ohdXZFwgBuHW
+73G3O/erwWnQSaSxBNf0V2KJXLB1LRckaeNCYOTudNargFbYiCjh+20i/SN8RnNPflRzHqgsVVh1
+t0zzWkWlAhr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU58fy+pmjIlC++QU3o63tmsPm7Igbthkn
+GziLgE3sucfFicv8GjLtI/C1AVj59o/ghalMCXI5Etuz9c9OYmTaxhkVOmMd6RdVoUwiPDQyRvhl
+V7or7zaMavrZ2UT0qt2E1w0cslSsMoW0ZA3eQbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYE
+FJ59SzS/ca3CBfYDdYDOqU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0G
+CSqGSIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHbmQdpNSYx/scuhMKZ
+YdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQkIqUs38oW26sTTMs7WXcFsziza6k
+PWKSBpUmv9+55CCmc2rBvveURNZNbyoLaxhNdBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOe
+yti12HvOdUVmB/RtLdh6yumJivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8
+ofyrEK9ca3CnB+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G
+-----END CERTIFICATE-----
+
+beTRUSTed Root CA
+=================
+-----BEGIN CERTIFICATE-----
+MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJXVzESMBAGA1UE
+ChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQgUm9vdCBDQXMxGjAYBgNVBAMTEWJlVFJV
+U1RlZCBSb290IENBMB4XDTAwMDYyMDE0MjEwNFoXDTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMC
+V1cxEjAQBgNVBAoTCWJlVFJVU1RlZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRowGAYD
+VQQDExFiZVRSVVNUZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS0
+c3oTCjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4SP+00PpeQY1hRIfo7clY+vyTmt9P6j41ffgz
+eubx181vSUs9Ty1uDoM6GHh3o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwMjmVZxXH/YgmPqsWPzGCg
+c0rXOD8Vcr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX2P8ZDoMbjNx4RWc0PfSvHI3kbWvtILNn
+mrRhyxdviTX/507AMhLn7uzf/5cwdO2NR47rtMNE5qdMf1ZD6Li8tr76g5fmu/vEtpO+GRg+jIG5
+c4gW9JZDnGdzF5DYCW5jrEq2I8QBoa2k5MUCAwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8w
+ggFZBgNVHSAEggFQMIIBTDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQagfFS
+ZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFu
+Y2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv
+ZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJl
+IGZvdW5kIGF0IGJlVFJVU1RlZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29t
+L3ZhdWx0L3Rlcm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNUZWQuY29tL3ZhdWx0
+L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYDVQQKEwliZVRSVVNUZWQxCzAJBgNVBAYT
+AldXMB0GA1UdDgQWBBQquZtpLjub2M3eKjEENGvKBxirZzAfBgNVHSMEGDAWgBQquZtpLjub2M3e
+KjEENGvKBxirZzAOBgNVHQ8BAf8EBAMCAf4wDQYJKoZIhvcNAQEFBQADggEBAHlh26Nebhax6nZR
++csVm8tpvuaBa58oH2U+3RGFktToQb9+M70j5/Egv6S0phkBxoyNNXxlpE8JpNbYIxUFE6dDea/b
+ow6be3ga8wSGWsb2jCBHOElQBp1yZzrwmAOtlmdE/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ
+1gMe1lMBzW1MaFVA4e5rxyoAAEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5mlWXKWWu
+GVUlBXJH0+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYctmBjRYoQtLpGEK5BV2Vs
+PyMQPyEQWbfkQN0mDCP2qq4=
+-----END CERTIFICATE-----
+
+AddTrust Low-Value Services Root
+================================
+-----BEGIN CERTIFICATE-----
+MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
+cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
+CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
+ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
+54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
+oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
+Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
+GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
+HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
+AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
+RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
+HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
+ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
+iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
+eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
+mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
+ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
+-----END CERTIFICATE-----
+
+AddTrust External Root
+======================
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
+VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
+NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
+cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
+Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
+Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
+aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
+2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
+7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
+BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
+VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
+VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
+IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
+j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
+e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
+G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
+
+AddTrust Public Services Root
+=============================
+-----BEGIN CERTIFICATE-----
+MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
+cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
+BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
+dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
+nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
+d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
+Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
+HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
+A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
+A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
+JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
+GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
+Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
+EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
+-----END CERTIFICATE-----
+
+AddTrust Qualified Certificates Root
+====================================
+-----BEGIN CERTIFICATE-----
+MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
+cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
+CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
+IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
+64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
+KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
+L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
+wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
+MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
+BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
+azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
+ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
+GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
+dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
+RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
+iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
+-----END CERTIFICATE-----
+
+Verisign Time Stamping Authority CA
+===================================
+-----BEGIN CERTIFICATE-----
+MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UE
+BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAzIFB1YmxpYyBQ
+cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZl
+cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWdu
+IFRydXN0IE5ldHdvcmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1OTU5WjCBpTEXMBUGA1UE
+ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNV
+BAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAwMSww
+KgYDVQQDEyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1dGhvcml0eSBDQTCBnzANBgkqhkiG9w0B
+AQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVlizrQJIkRpivglWtvtDbc2fk7gu5Q+kCWHwmFHKdm9VLhj
+zCx9abQzNvQ3B5rB3UBU/OB4naCTuQk9I1F/RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6o
+v8uQjI11S7zi6ESHzeZBCiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/AgEA
+MEUGA1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl
+cmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL2NybC52ZXJpc2lnbi5jb20v
+cGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIGCCsGAQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRw
+Oi8vb2NzcC52ZXJpc2lnbi5jb20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2
+DcIBcBlK0lRWHqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQnKeg3S/LvRJdrF1Ea
+w1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937ntag+RaypJXUie28/sJyU58dzq6wf7iWb
+wBbtt8pb8BQ=
+-----END CERTIFICATE-----
+
+Thawte Time Stamping CA
+=======================
+-----BEGIN CERTIFICATE-----
+MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG
+A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
+Q0EwHhcNOTcwMTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNV
+BAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEd
+MBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBp
+bmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+o
+J9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9
+nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCo
+uqoEiYbC9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCe
+d/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJSdM=
+-----END CERTIFICATE-----
+
+Entrust.net Global Secure Server CA
+===================================
+-----BEGIN CERTIFICATE-----
+MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChMLRW50cnVzdC5u
+ZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGluY29ycC4gYnkgcmVmLiAobGlt
+aXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UE
+AxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0w
+MDAyMDQxNzIwMDBaFw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0G
+A1UECxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlh
+Yi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRy
+dXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3
+DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55l
+xyKbc+bT3QgON1WqJUaBbL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439P
+mrkDQYC2dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4QgEB
+BAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoTC0VudHJ1c3QubmV0
+MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0
+cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMT
+MUVudHJ1c3QubmV0IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNV
+BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD
+VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1UdDgQWBBTLbMBr
+47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w
+AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsiad0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbv
+H9X07t9WLebKahlzqlO+krNQAraFJnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3
+a9kC9n8O6mUE8c1UyrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw==
+-----END CERTIFICATE-----
+
+Entrust.net Global Secure Personal CA
+=====================================
+-----BEGIN CERTIFICATE-----
+MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
+ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxp
+bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
+BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcx
+NjE2NDBaFw0yMDAyMDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
+d3d3LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
+MCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
+ZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
+iQKBgQCTdLS25MVL1qFof2LV7PdRV7NySpj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQl
+hK8pK5/jgOLZy93GRUk0iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKkl
+Wb1m9fkn5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHdBgNV
+HR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3
+d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUw
+IwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l
+dCBDbGllbnQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
+IoAPMjAwMDAyMDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
+MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdFfP4tzrrTfTAM
+BgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQF
+AAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMShAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xK
+p9U1PL6oXOpLu5OOgGarDyn9TS2/GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQ
+Gof4T4HHdguEOnKdzmVml64mXg==
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority
+====================================
+-----BEGIN CERTIFICATE-----
+MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
+BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
+b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
+A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
+MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
+MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
+Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
+dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
+A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
+Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
+j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
+rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
+DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
+MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
+hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
+A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
+Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
+v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
+W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
+tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
+-----END CERTIFICATE-----
+
+AOL Time Warner Root Certification Authority 1
+==============================================
+-----BEGIN CERTIFICATE-----
+MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
+FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
+VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAy
+MDUyOTA2MDAwMFoXDTM3MTEyMDE1MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
+VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
+QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U0pPlLYnKhHw/EEMbjIt8
+hFj4JHxIzyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItITuLCxFlpMGK2MKKMCxGZYTVtfu/FsRkG
+IBKOQuHfD5YQUqjPnF+VFNivO3ULMSAfRC+iYkGzuxgh28pxPIzstrkNn+9R7017EvILDOGsQI93
+f7DKeHEMXRZxcKLXwjqFzQ6axOAAsNUl6twr5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQI
+fHNlIAqhBC4aMqiaILGcLCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEAAaNj
+MGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jYPXy+XxIwHwYDVR0j
+BBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
+A4IBAQCKIBilvrMvtKaEAEAwKfq0FHNMeUWn9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u
+0FIy2VkyvNp5ctZ7CegCgTXTCt8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77Bf
+WgDrvq2g+EQFZ7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oTLW4jYYehY0KswsuX
+n2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCzvhGbRWeDhhmH05i9CBoWH1iCC+GWaQVL
+juyDUTEH1dSf/1l7qG6Fz9NLqUmwX7A5KGgOc90lmt4S
+-----END CERTIFICATE-----
+
+AOL Time Warner Root Certification Authority 2
+==============================================
+-----BEGIN CERTIFICATE-----
+MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
+FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
+VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAy
+MDUyOTA2MDAwMFoXDTM3MDkyODIzNDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
+VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
+QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZI
+hvcNAQEBBQADggIPADCCAgoCggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ7ouZzU9AhqS2TcnZsdw8
+TQ2FTBVsRotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilbm2BPJoPRYxJWSXakFsKlnUWsi4SVqBax
+7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOYxFSMFkpBd4aVdQxHAWZg/BXxD+r1FHjHDtdugRxev17n
+OirYlxcwfACtCJ0zr7iZYYCLqJV+FNwSbKTQ2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2w
+TPDaRrbqJS5Gr42whTg0ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fxI2rS
+AG2X+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETzkxmlJ85per5n0/xQ
+pCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFhEVsVS6kkUfykXPcXnbDS+gfpj1bk
+GoxoigTTfFrjnqKhynFbotSg5ymFXQNoKk/SBtc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuW
+CpTehTacyH+BCQJJKg71ZDIMgtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1Ex
+MVCgyhwn2RAurda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
+FE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaAFE9pbQN+nZ8HGEO8txBO1b+pxCAoMA4G
+A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAO/Ouyuguh4X7ZVnnrREUpVe8WJ8kEle7
++z802u6teio0cnAxa8cZmIDJgt43d15Ui47y6mdPyXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRFASbI
+5Rq8NEQh3q0l/HYWdyGQgJhXnU7q7C+qPBR7V8F+GBRn7iTGvboVsNIYvbdVgaxTwOjdaRITQrcC
+tQVBynlQboIOcXKTRuidDV29rs4prWPVVRaAMCf/drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ
+68W/ClTluUI8JPu3B5wwn3la5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyBM5kYJRF3
+p+v9WAksmWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQmy8YJPamTQr5O8t1wswv
+ziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xOAU++CrYD062KRffaJ00psUjf5BHklka9
+bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT9Y41xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4o
+GKQWDzH9OmwjkyB24f0HhdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2
+uBOLZ8/5fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
+-----END CERTIFICATE-----
+
+beTRUSTed Root CA-Baltimore Implementation
+==========================================
+-----BEGIN CERTIFICATE-----
+MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
+GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Et
+QmFsdGltb3JlIEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVow
+ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
+BAMTKmJlVFJVU1RlZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBALx+xDmcjOPWHIb/ymKt4H8wRXqOGrO4x/nRNv8i805qX4QQ
++2aBw5R5MdKR4XeOGCrDFN5R9U+jK7wYFuK13XneIviCfsuBH/0nLI/6l2Qijvj/YaOcGx6Sj8Co
+Cd8JEey3fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92BFODEPM2dMPgwqZfT7syj0B9fHBOB1Bir
+lNFjw55/NZKeX0Tq7PQiXLfoPX2k+YmpkbIq2eszh+6l/ePazIjmiSZuxyuC0F6dWdsU7JGDBcNe
+DsYq0ATdcT0gTlgn/FP7eHgZFLL8kFKJOGJgB7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOC
+Ah4wggIaMA8GA1UdEwEB/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4AAAEJ
+KIORMTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3IgdXNlIG9mIHRoaXMg
+Q2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVudCBhbmQgYWNjZXB0YW5jZSBvZiB0
+aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwg
+dGhlIENlcnRpZmljYXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0
+eSBBZ3JlZW1lbnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVTVGVkIHdlYiBzaXRl
+LCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDBB
+BggrBgEFBQcCARY1aHR0cDovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2lu
+ZGV4Lmh0bWwwHQYDVR0OBBYEFEU9w6nR3D8kVpgccxiIav+DR+22MB8GA1UdIwQYMBaAFEU9w6nR
+3D8kVpgccxiIav+DR+22MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEASZK8o+6s
+vfoNyYt5hhwjdrCAWXf82n+0S9/DZEtqTg6t8n1ZdwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyX
+EHu67RMdmgduyzFiEuhjA6p9beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AYgkHNZTfq
+jjJ+vWuZXTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb4cV97yHgjQ5dUX2xZ/2j
+vTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9CReJf8Py05yc493EG931t3GzUwWJBtDL
+SoDByFOQtTwxiBdQn8nEDovYqAJjDQ==
+-----END CERTIFICATE-----
+
+beTRUSTed Root CA - Entrust Implementation
+==========================================
+-----BEGIN CERTIFICATE-----
+MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
+GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Eg
+LSBFbnRydXN0IEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1ow
+ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
+BAMTKmJlVFJVU1RlZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1Q+xVkrYwfTVXDNvzDSduTPdQqJtOK2/b9a0c
+S12zqcH+e0TrW6MFDR/FNCswACnxeECypP869AGIF37m1CbTukzqMvtDd5eHI8XbQ6P1KqNRXuE7
+0mVpflUVm3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdjDheT389Lrm5zdeDzqrmkwAkbhepxKYhB
+MvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCeyv78IZTuEyhL11xeDGbu6bsPwTSxfwh28z0mcMmLJR1i
+JAzqHHVOwBLkuhMdMCktVjMFu5dZfsZJT4nXLySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOC
+AwUwggMBMIIBtwYDVR0gBIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYIKwYB
+BQUHAgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNyZWF0
+ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
+ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9u
+IFByYWN0aWNlIFN0YXRlbWVudCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGlj
+aCBjYW4gYmUgZm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0cHM6Ly93d3cuYmV0
+cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1sMEIGCCsGAQUFBwIBFjZodHRw
+czovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwEQYJYIZI
+AYb4QgEBBAQDAgAHMIGJBgNVHR8EgYEwfzB9oHugeaR3MHUxEjAQBgNVBAoTCWJlVFJVU1RlZDEb
+MBkGA1UECxMSYmVUUlVTVGVkIFJvb3QgQ0FzMTMwMQYDVQQDEypiZVRSVVNUZWQgUm9vdCBDQSAt
+IEVudHJ1c3QgSW1wbGVtZW50YXRpb24xDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0
+MTEwODI0MjdagQ8yMDIyMDQxMTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFH1w5a44
+iwY/qhwaj/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQwqoSEFjAMBgNVHRMEBTAD
+AQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEAKrgX
+zh8QlOu4mre5X+za95IkrNySO8cgjfKZ5V04ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevd
+kObRVlTa4y0MnxEylCIBevZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/
+T220Y/ozADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2KjiS2d2kXgCl
+zMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFiaDrmLzfzgYYhxKlkqu9FNtEaZnz4
+6TfW1mG+oq1I59/mdP7TbX3SJdysYlep9w==
+-----END CERTIFICATE-----
+
+beTRUSTed Root CA - RSA Implementation
+======================================
+-----BEGIN CERTIFICATE-----
+MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUFADBiMRIwEAYDVQQK
+EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEvMC0GA1UEAxMmYmVUUlVT
+VGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEy
+MTEwNzI1WjBiMRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENB
+czEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQwCY5X0LkGLG9uJIAiv11DpvpPrILnHGhwhRuj
+brWqeNluB0s/6d/16uhUoWGKDi9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I1DpAa5LxmZZk3tv/ePTu
+lh1HiXzUvrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPktPDgaTuID0GQ+NRxQyTBjyZLO1bp/4xs
+N+lFrYWMU8NghpBKlsmzVLC7F/AcRdnUGxlkVgoZ98zh/4avflherHqQH8koOUV7orbHnB/ahdQh
+hlkwk75TMzf270HPM8ercmsl9fNTGwxMLvF1S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMB
+AAGjggIYMIICFDAMBgNVHRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+AAAD
+CSiDkTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNf
+c2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIBOhqCATZSZWxpYW5jZSBvbiBvciB1
+c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjcmVhdGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2Nl
+cHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv
+bnMgb2YgdXNlLCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQgYW5kIHRoZSBS
+ZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IHRoZSBiZVRSVVNU
+ZWQgd2ViIHNpdGUsIGh0dHA6Ly93d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9p
+bmRleC5odG1sMAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSp7BR++dlDzFMrFK3P9/BZiUHNGTAd
+BgNVHQ4EFgQUqewUfvnZQ8xTKxStz/fwWYlBzRkwDQYJKoZIhvcNAQEFBQADggEBANuXsHXqDMTB
+mMpWBcCorSZIry0g6IHHtt9DwSwddUvUQo3neqh03GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05
+pmuKmET7m9cqg5c0Lcd9NUwtNLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbdLrML3kqN
+Wz2rDcI1UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28BbJ1zTcwfBwvNMm2+fG8oe
+qqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3SK41ty8ymmFei74pnykkiFY5LKjSq5YD
+WtRIn7lAhAuYaPsBQ9Yb4gmxlxw=
+-----END CERTIFICATE-----
+
+RSA Security 2048 v3
+====================
+-----BEGIN CERTIFICATE-----
+MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
+ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
+MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
+BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
+Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
+WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
+KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
+MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
+FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
+v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
+0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
+VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
+nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
+pKnXwiJPZ9d37CAFYd4=
+-----END CERTIFICATE-----
+
+RSA Security 1024 v3
+====================
+-----BEGIN CERTIFICATE-----
+MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
+ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAy
+MjIyMTAxNDlaFw0yNjAyMjIyMDAxNDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
+BgNVBAsTFFJTQSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDV
+3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dYrIMKo1W1exeQFYRMiu4m
+mdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYtbzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1Blq
+FikYvtc6adwlWzMaUQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAf
+BgNVHSMEGDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1NAdRU2qUM
+X96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRyHUZXxGFraZ8SmyzVWujAovBD
+leMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNu
+mU4/iXgDmMrzVcydro7BqkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
+-----END CERTIFICATE-----
+
+GeoTrust Global CA
+==================
+-----BEGIN CERTIFICATE-----
+MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
+Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
+MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
+LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
+BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
+8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
+T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
+vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
+AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
+DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
+zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
+d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
+mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
+XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
+Mw==
+-----END CERTIFICATE-----
+
+GeoTrust Global CA 2
+====================
+-----BEGIN CERTIFICATE-----
+MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
+R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
+MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
+LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
+NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
+LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
+Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
+HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
+K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
+srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
+ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
+OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
+x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
+H4z1Ir+rzoPz4iIprn2DQKi6bA==
+-----END CERTIFICATE-----
+
+GeoTrust Universal CA
+=====================
+-----BEGIN CERTIFICATE-----
+MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
+R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
+MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
+Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
+JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
+RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
+7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
+8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
+qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
+Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
+Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
+KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
+ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
+XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
+hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
+aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
+qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
+oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
+xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
+KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
+DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
+xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
+p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
+P/rmMuGNG2+k5o7Y+SlIis5z/iw=
+-----END CERTIFICATE-----
+
+GeoTrust Universal CA 2
+=======================
+-----BEGIN CERTIFICATE-----
+MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
+R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
+MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
+SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
+A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
+DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
+j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
+JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
+QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
+WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
+20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
+ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
+SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
+8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
+BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
+dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
+4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
+A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
+Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
+pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
+FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
+gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
+X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
+-----END CERTIFICATE-----
+
+UTN-USER First-Network Applications
+===================================
+-----BEGIN CERTIFICATE-----
+MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
+BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
+WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
+YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
+dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
+cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
+mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
+DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
+Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
+P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
+j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
+HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
+cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
+CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
+IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
+RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
+xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
+DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
+-----END CERTIFICATE-----
+
+America Online Root Certification Authority 1
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
+v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
+DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
+sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
+8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
+o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
+GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
+VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
+3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
+Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
+sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
+-----END CERTIFICATE-----
+
+America Online Root Certification Authority 2
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
+fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
+f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
+qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
+RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
+gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
+6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
+FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
+Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
+B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
+aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
+T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
+JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
+zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
+ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
+1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
+GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
+Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
+cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
+-----END CERTIFICATE-----
+
+Visa eCommerce Root
+===================
+-----BEGIN CERTIFICATE-----
+MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
+EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
+QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
+WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
+VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
+bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
+F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
+RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
+TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
+/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
+GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
+MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
+CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
+YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
+zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
+YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
+398znM/jra6O1I7mT1GvFpLgXPYHDw==
+-----END CERTIFICATE-----
+
+TC TrustCenter, Germany, Class 2 CA
+===================================
+-----BEGIN CERTIFICATE-----
+MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
+EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
+U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
+bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
+ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
+YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
+aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
+MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
+hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs
+qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N
+u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
+Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
+LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf
+/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2
+9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
+ASZ4smZHcFFk
+-----END CERTIFICATE-----
+
+TC TrustCenter, Germany, Class 3 CA
+===================================
+-----BEGIN CERTIFICATE-----
+MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
+EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
+U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
+bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
+ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
+YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
+aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
+MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
+hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN
+2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7
+7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
+Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
+LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B
+u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm
+5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
+CdS7kjXvD9s0
+-----END CERTIFICATE-----
+
+Certum Root CA
+==============
+-----BEGIN CERTIFICATE-----
+MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
+ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
+Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
+by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
+wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
+kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
+89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
+Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
+NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
+hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
+GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
+GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
+0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
+qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
+-----END CERTIFICATE-----
+
+Comodo AAA Services root
+========================
+-----BEGIN CERTIFICATE-----
+MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
+R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
+TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
+MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
+c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
+BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
+C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
+i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
+Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
+Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
+Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
+BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
+cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
+LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
+7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
+Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
+8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
+12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
+-----END CERTIFICATE-----
+
+Comodo Secure Services root
+===========================
+-----BEGIN CERTIFICATE-----
+MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
+R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
+TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
+MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
+Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
+BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
+9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
+rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
+oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
+p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
+FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
+gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
+YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
+aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
+4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
+Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
+DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
+pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
+RR3B7Hzs/Sk=
+-----END CERTIFICATE-----
+
+Comodo Trusted Services root
+============================
+-----BEGIN CERTIFICATE-----
+MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
+R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
+TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
+MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
+bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
+IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
+3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
+/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
+juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
+ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
+DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
+ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
+cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
+uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
+pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
+BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
+R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
+9y5Xt5hwXsjEeLBi
+-----END CERTIFICATE-----
+
+IPS Chained CAs root
+====================
+-----BEGIN CERTIFICATE-----
+MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARwxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjEzMDEGA1UECxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MTMwMQYDVQQDEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczAeFw0wMTEyMjkwMDUzNThaFw0yNTEy
+MjcwMDUzNThaMIIBHDELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJ
+QmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwu
+MSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMTMwMQYDVQQLEypJ
+UFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMzAxBgNVBAMTKklQUyBD
+QSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBz
+QG1haWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcVpJJspQgvJhPUOtopKdJ
+C7/SMejHT8KGC/po/UNaivNgkjWZOLtNA1IhW/A3mTXhQSCBhYEFcYGdtJUZqV92NC5jNzVXjrQf
+Qj8VXOF6wV8TGDIxya2+o8eDZh65nAQTy2nBBt4wBrszo7Uf8I9vzv+W6FS+ZoCua9tBhDaiPQID
+AQABo4IEQzCCBD8wHQYDVR0OBBYEFKGtMbH5PuEXpsirNPxShwkeYlJBMIIBTgYDVR0jBIIBRTCC
+AUGAFKGtMbH5PuEXpsirNPxShwkeYlJBoYIBJKSCASAwggEcMQswCQYDVQQGEwJFUzESMBAGA1UE
+CBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBw
+dWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4g
+IEItNjA5Mjk0NTIxMzAxBgNVBAsTKklQUyBDQSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1
+dGhvcml0eTEzMDEGA1UEAxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNV
+HQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUF
+BwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGC
+NwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1Ud
+EgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ2hhaW5lZCBDQSBDZXJ0aWZp
+Y2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8v
+d3d3Lmlwcy5lcy9pcHMyMDAyLzA3BglghkgBhvhCAQQEKhYoaHR0cDovL3d3dy5pcHMuZXMvaXBz
+MjAwMi9pcHMyMDAyQ0FDLmNybDA8BglghkgBhvhCAQMELxYtaHR0cDovL3d3dy5pcHMuZXMvaXBz
+MjAwMi9yZXZvY2F0aW9uQ0FDLmh0bWw/MDkGCWCGSAGG+EIBBwQsFipodHRwOi8vd3d3Lmlwcy5l
+cy9pcHMyMDAyL3JlbmV3YWxDQUMuaHRtbD8wNwYJYIZIAYb4QgEIBCoWKGh0dHA6Ly93d3cuaXBz
+LmVzL2lwczIwMDIvcG9saWN5Q0FDLmh0bWwwbQYDVR0fBGYwZDAuoCygKoYoaHR0cDovL3d3dy5p
+cHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0FDLmNybDAyoDCgLoYsaHR0cDovL3d3d2JhY2suaXBzLmVz
+L2lwczIwMDIvaXBzMjAwMkNBQy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
+Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAERyMJ1WWKJBGyi3leGmGpVfp3hAK+/b
+lkr8THFj2XOVvQLiogbHvpcqk4A0hgP63Ng9HgfNHnNDJGD1HWHc3JagvPsd4+cSACczAsDAK1M9
+2GsDgaPb1pOVIO/Tln4mkImcJpvNb2ar7QMiRDjMWb2f2/YHogF/JsRj9SVCXmK9
+-----END CERTIFICATE-----
+
+IPS CLASE1 root
+===============
+-----BEGIN CERTIFICATE-----
+MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
+SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAwNTkzOFoXDTI1MTIyNzAwNTkzOFow
+ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
+LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
+Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
+RTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTEgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
+hkiG9w0BAQEFAAOBjQAwgYkCgYEA4FEnpwvdr9G5Q1uCN0VWcu+atsIS7ywSzHb5BlmvXSHU0lq4
+oNTzav3KaY1mSPd05u42veiWkXWmcSjK5yISMmmwPh5r9FBSYmL9Yzt9fuzuOOpi9GyocY3h6YvJ
+P8a1zZRCb92CRTzo3wno7wpVqVZHYUxJZHMQKD/Kvwn/xi8CAwEAAaOCBEowggRGMB0GA1UdDgQW
+BBTrsxl588GlHKzcuh9morKbadB4CDCCAUQGA1UdIwSCATswggE3gBTrsxl588GlHKzcuh9morKb
+adB4CKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
+BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
+LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
+EyVJUFMgQ0EgQ0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
+Q0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
+cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
+BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
+BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
+BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
+hvhCAQ0ENBYyQ0xBU0UxIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
+cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
+BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEuY3JsMD8GCWCGSAGG
++EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTEuaHRtbD8w
+PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMS5o
+dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
+RTEuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
+MDJDTEFTRTEuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
+Q0xBU0UxLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
+cy8wDQYJKoZIhvcNAQEFBQADgYEAK9Dr/drIyllq2tPMMi7JVBuKYn4VLenZMdMu9Ccj/1urxUq2
+ckCuU3T0vAW0xtnIyXf7t/k0f3gA+Nak5FI/LEpjV4F1Wo7ojPsCwJTGKbqz3Bzosq/SLmJbGqmO
+DszFV0VRFOlOHIilkfSj945RyKm+hjM+5i9Ibq9UkE6tsSU=
+-----END CERTIFICATE-----
+
+IPS CLASE3 root
+===============
+-----BEGIN CERTIFICATE-----
+MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
+SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMDE0NFoXDTI1MTIyNzAxMDE0NFow
+ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
+LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
+Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
+RTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTMgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
+hkiG9w0BAQEFAAOBjQAwgYkCgYEAqxf+DrDGaBtT8FK+n/ra+osTBLsBjzLZH49NzjaY2uQARIwo
+2BNEKqRrThckQpzTiKRBgtYj+4vJhuW5qYIF3PHeH+AMmVWY8jjsbJ0gA8DvqqPGZARRLXgNo9Ko
+OtYkTOmWehisEyMiG3zoMRGzXwmqMHBxRiVrSXGAK5UBsh8CAwEAAaOCBEowggRGMB0GA1UdDgQW
+BBS4k/8uy9wsjqLnev42USGjmFsMNDCCAUQGA1UdIwSCATswggE3gBS4k/8uy9wsjqLnev42USGj
+mFsMNKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
+BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
+LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
+EyVJUFMgQ0EgQ0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
+Q0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
+cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
+BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
+BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
+BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
+hvhCAQ0ENBYyQ0xBU0UzIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
+cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
+BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMuY3JsMD8GCWCGSAGG
++EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTMuaHRtbD8w
+PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMy5o
+dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
+RTMuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
+MDJDTEFTRTMuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
+Q0xBU0UzLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
+cy8wDQYJKoZIhvcNAQEFBQADgYEAF2VcmZVDAyevJuXr0LMXI/dDqsfwfewPxqmurpYPdikc4gYt
+fibFPPqhwYHOU7BC0ZdXGhd+pFFhxu7pXu8Fuuu9D6eSb9ijBmgpjnn1/7/5p6/ksc7C0YBCJwUE
+NPjDfxZ4IwwHJPJGR607VNCv1TGyr33I6unUVtkOE7LFRVA=
+-----END CERTIFICATE-----
+
+IPS CLASEA1 root
+================
+-----BEGIN CERTIFICATE-----
+MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
+KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNTMyWhcNMjUxMjI3MDEwNTMy
+WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
+YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
+ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
+QVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
+DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALsw19zQVL01Tp/FTILq0VA8R5j8m2mdd81u4D/u6zJf
+X5/S0HnllXNEITLgCtud186Nq1KLK3jgm1t99P1tCeWu4WwdByOgF9H5fahGRpEiqLJpxq339fWU
+oTCUvQDMRH/uxJ7JweaPCjbB/SQ9AaD1e+J8eGZDi09Z8pvZ+kmzAgMBAAGjggRTMIIETzAdBgNV
+HQ4EFgQUZyaW56G/2LUDnf473P7yiuYV3TAwggFGBgNVHSMEggE9MIIBOYAUZyaW56G/2LUDnf47
+3P7yiuYV3TChggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
+BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
+ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
+A1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
+UyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
+bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
+AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
+FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
+GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
+BglghkgBhvhCAQ0ENRYzQ0xBU0VBMSBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
+dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
+hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmww
+QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
+QTEuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
+bENMQVNFQTEuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
+cG9saWN5Q0xBU0VBMS5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
+czIwMDIvaXBzMjAwMkNMQVNFQTEuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
+MjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
+Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAH66iqyAAIQVCtWYUQxkxZwCWINmyq0e
+B81+atqAB98DNEock8RLWCA1NnHtogo1EqWmZaeFaQoO42Hu6r4okzPV7Oi+xNtff6j5YzHIa5bi
+KcJboOeXNp13XjFr/tOn2yrb25aLH2betgPAK7N41lUH5Y85UN4HI3LmvSAUS7SG
+-----END CERTIFICATE-----
+
+IPS CLASEA3 root
+================
+-----BEGIN CERTIFICATE-----
+MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
+KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNzUwWhcNMjUxMjI3MDEwNzUw
+WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
+YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
+ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
+QVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
+DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO6AAPYaZC6tasiDsYun7o/ZttvNG7uGBiJ2MwwSbUhW
+YdLcgiViL5/SaTBlA0IjWLxH3GvWdV0XPOH/8lhneaDBgbHUVqLyjRGZ/fZ98cfEXgIqmuJKtROK
+AP2Md4bm15T1IHUuDky/dMQ/gT6DtKM4Ninn6Cr1jIhBqoCm42zvAgMBAAGjggRTMIIETzAdBgNV
+HQ4EFgQUHp9XUEe2YZM50yz82l09BXW3mQIwggFGBgNVHSMEggE9MIIBOYAUHp9XUEe2YZM50yz8
+2l09BXW3mQKhggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
+BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
+ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
+A1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
+UyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
+bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
+AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
+FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
+GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
+BglghkgBhvhCAQ0ENRYzQ0xBU0VBMyBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
+dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
+hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmww
+QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
+QTMuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
+bENMQVNFQTMuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
+cG9saWN5Q0xBU0VBMy5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
+czIwMDIvaXBzMjAwMkNMQVNFQTMuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
+MjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
+Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAEo9IEca2on0eisxeewBwMwB9dbB/MjD
+81ACUZBYKp/nNQlbMAqBACVHr9QPDp5gJqiVp4MI3y2s6Q73nMify5NF8bpqxmdRSmlPa/59Cy9S
+KcJQrSRE7SOzSMtEQMEDlQwKeAYSAfWRMS1Jjbs/RU4s4OjNtckUFQzjB4ObJnXv
+-----END CERTIFICATE-----
+
+IPS Servidores root
+===================
+-----BEGIN CERTIFICATE-----
+MIICtzCCAiACAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJD
+RUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYG
+A1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQDEw5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3
+DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTk4MDEwMTIzMjEwN1oXDTA5MTIyOTIzMjEwN1owgaMx
+CzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcG
+A1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQD
+Ew5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMIGfMA0GCSqG
+SIb3DQEBAQUAA4GNADCBiQKBgQCsT1J0nznqjtwlxLyYXZhkJAk8IbPMGbWOlI6H0fg3PqHILVik
+gDVboXVsHUUMH2Fjal5vmwpMwci4YSM1gf/+rHhwLWjhOgeYlQJU3c0jt4BT18g3RXIGJBK6E2Eh
+im51KODFDzT9NthFf+G4Nu+z4cYgjui0OLzhPvYR3oydAQIDAQABMA0GCSqGSIb3DQEBBAUAA4GB
+ACzzw3lYJN7GO9HgQmm47mSzPWIBubOE3yN93ZjPEKn+ANgilgUTB1RXxafey9m4iEL2mdsUdx+2
+/iU94aI+A6mB0i1sR/WWRowiq8jMDQ6XXotBtDvECgZAHd1G9AHduoIuPD14cJ58GNCr+Lh3B0Zx
+8coLY1xq+XKU1QFPoNtC
+-----END CERTIFICATE-----
+
+IPS Timestamping root
+=====================
+-----BEGIN CERTIFICATE-----
+MIIIODCCB6GgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCAR4xCzAJBgNVBAYTAkVTMRIwEAYDVQQI
+EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
+Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
+Qi02MDkyOTQ1MjE0MDIGA1UECxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1
+dGhvcml0eTE0MDIGA1UEAxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMTAxOFoXDTI1
+MTIyNzAxMTAxOFowggEeMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQH
+EwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMu
+bC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxNDAyBgNVBAsT
+K0lQUyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxNDAyBgNVBAMTK0lQ
+UyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEW
+D2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLjuVqWajOY2ycJi
+oGaBjRrVetJznw6EZLqVtJCneK/K/lRhW86yIFcBrkSSQxA4Efdo/BdApWgnMjvEp+ZCccWZ73b/
+K5Uk9UmSGGjKALWkWi9uy9YbLA1UZ2t6KaFYq6JaANZbuxjC3/YeE1Z2m6Vo4pjOxgOKNNtMg0Gm
+qaMCAwEAAaOCBIAwggR8MB0GA1UdDgQWBBSL0BBQCYHynQnVDmB4AyKiP8jKZjCCAVAGA1UdIwSC
+AUcwggFDgBSL0BBQCYHynQnVDmB4AyKiP8jKZqGCASakggEiMIIBHjELMAkGA1UEBhMCRVMxEjAQ
+BgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJu
+ZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5J
+LkYuICBCLTYwOTI5NDUyMTQwMgYDVQQLEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRp
+b24gQXV0aG9yaXR5MTQwMgYDVQQDEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRpb24g
+QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB
+/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMG
+CCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYK
+KwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVz
+MBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBHBglghkgBhvhCAQ0EOhY4VGltZXN0YW1waW5n
+IENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC
+BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMEAGCWCGSAGG+EIBBAQzFjFodHRwOi8vd3d3
+Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMEUGCWCGSAGG+EIBAwQ4FjZo
+dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25UaW1lc3RhbXBpbmcuaHRtbD8wQgYJ
+YIZIAYb4QgEHBDUWM2h0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbFRpbWVzdGFtcGlu
+Zy5odG1sPzBABglghkgBhvhCAQgEMxYxaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lU
+aW1lc3RhbXBpbmcuaHRtbDB/BgNVHR8EeDB2MDegNaAzhjFodHRwOi8vd3d3Lmlwcy5lcy9pcHMy
+MDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMDugOaA3hjVodHRwOi8vd3d3YmFjay5pcHMuZXMv
+aXBzMjAwMi9pcHMyMDAyVGltZXN0YW1waW5nLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUH
+MAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEAZbrBzAAalZHK6Ww6vzoe
+FAh8+4Pua2JR0zORtWB5fgTYXXk36MNbsMRnLWhasl8OCvrNPzpFoeo2zyYepxEoxZSPhExTCMWT
+s/zif/WN87GphV+I3pGW7hdbrqXqcGV4LCFkAZXOzkw+UPS2Wctjjba9GNSHSl/c7+lW8AoM6HU=
+-----END CERTIFICATE-----
+
+QuoVadis Root CA
+================
+-----BEGIN CERTIFICATE-----
+MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
+ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
+MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
+cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
+EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
+J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
+F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
+YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
+AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
+PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
+ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
+MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
+YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
+ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
+Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
+Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
+BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
+FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
+tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
+fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
+LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
+gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
+5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
+5nrQNiOKSnQ2+Q==
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 2
+==================
+-----BEGIN CERTIFICATE-----
+MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
+EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
+ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
+DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
+XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
+lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
+lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
+lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
+66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
+wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
+D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
+BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
+J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
+DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
+a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
+ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
+Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
+UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
+VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
+IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
+WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
+f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
+4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
+VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 3
+==================
+-----BEGIN CERTIFICATE-----
+MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
+EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
+OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
+DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
+DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
+KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
+DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
+BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
+p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
+nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
+MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
+Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
+uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
+BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
+YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
+aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
+BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
+VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
+ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
+AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
+qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
+hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
+POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
+Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
+8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
+bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
+g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
+vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
+qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
+-----END CERTIFICATE-----
+
+Security Communication Root CA
+==============================
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
+U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
+HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
+U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
+8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
+DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
+5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
+DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
+JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
+DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
+0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
+mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
+s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
+6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
+FL39vmwLAw==
+-----END CERTIFICATE-----
+
+Sonera Class 1 Root CA
+======================
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
+U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
+NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
+IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
+7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
+EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
+0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
+2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
+HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
+iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
+28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
+yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
+vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
+qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
+IRlXvVWa
+-----END CERTIFICATE-----
+
+Sonera Class 2 Root CA
+======================
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
+U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
+NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
+IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
+/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
+dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
+f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
+tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
+nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
+XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
+0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
+cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
+Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
+EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
+llpwrN9M
+-----END CERTIFICATE-----
+
+Staat der Nederlanden Root CA
+=============================
+-----BEGIN CERTIFICATE-----
+MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
+ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
+HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
+bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
+vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
+jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
+C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
+vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
+22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
+HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
+dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
+BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
+EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
+MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
+nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
+iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
+-----END CERTIFICATE-----
+
+TDC Internet Root CA
+====================
+-----BEGIN CERTIFICATE-----
+MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
+ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
+NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
+ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
+xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
+znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
+5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
+otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
+AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
+VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
+MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
+AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
+UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
+CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
+gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
+2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
+O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
+Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
+-----END CERTIFICATE-----
+
+TDC OCES Root CA
+================
+-----BEGIN CERTIFICATE-----
+MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
+ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
+MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
+nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
+zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
+iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
+dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
+3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
+5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
+ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
+cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
+Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
+LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
+MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
+aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
+MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
+NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
+A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
+A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
+AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
+AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
+-----END CERTIFICATE-----
+
+UTN DATACorp SGC Root CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
+BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
+MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
+HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
+dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
+raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
+wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
+9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
+33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
+DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
+BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
+LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
+DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
+Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
+I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
+EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
+DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
+-----END CERTIFICATE-----
+
+UTN USERFirst Email Root CA
+===========================
+-----BEGIN CERTIFICATE-----
+MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
+BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
+OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
+FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
+ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
+dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
+B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
+om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
+TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
+yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
+AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
+HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
+bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
+AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
+xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
+NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
+w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
+-----END CERTIFICATE-----
+
+UTN USERFirst Hardware Root CA
+==============================
+-----BEGIN CERTIFICATE-----
+MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
+BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
+OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
+eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
+ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
+wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
+tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
+i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
+Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
+gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
+lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
+UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
+BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
+//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
+XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
+lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
+iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
+nfhmqA==
+-----END CERTIFICATE-----
+
+UTN USERFirst Object Root CA
+============================
+-----BEGIN CERTIFICATE-----
+MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
+BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
+NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
+HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
+dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
+loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
+w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
+lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
+RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
+BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
+ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
+c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
+DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
+NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
+PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
+qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
+hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
+-----END CERTIFICATE-----
+
+Camerfirma Chambers of Commerce Root
+====================================
+-----BEGIN CERTIFICATE-----
+MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
+QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
+ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
+NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
+cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
+MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
+AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
+xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
+NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
+DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
+d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
+EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
+cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
+AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
+bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
+VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
+aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
+fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
+L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
+UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
+ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
+erfutGWaIZDgqtCYvDi1czyL+Nw=
+-----END CERTIFICATE-----
+
+Camerfirma Global Chambersign Root
+==================================
+-----BEGIN CERTIFICATE-----
+MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
+QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
+ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
+NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
+YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
+MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
+ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
+1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
+by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
+6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
+8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
+BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
+aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
+Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
+aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
+ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
+bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
+PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
+gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
+PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
+IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
+t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
+-----END CERTIFICATE-----
+
+NetLock Qualified (Class QA) Root
+=================================
+-----BEGIN CERTIFICATE-----
+MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
+CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
+BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
+eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
+bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
+MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
+LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
+dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
+aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
+CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
+8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
+m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
+0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
+0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
+HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
+YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
+biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
+a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
+YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
+YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
+ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
+L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
+Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
+aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
+YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
+IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
+DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
+wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
+W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
+R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
+5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
+-----END CERTIFICATE-----
+
+NetLock Notary (Class A) Root
+=============================
+-----BEGIN CERTIFICATE-----
+MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
+EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
+dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
+ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
+DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
+EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
+VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
+cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
+D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
+z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
+/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
+tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
+4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
+A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
+Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
+bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
+IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
+LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
+ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
+IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
+IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
+b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
+bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
+Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
+bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
+ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
+ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
+CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
+KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
+8CgHrTwXZoi1/baI
+-----END CERTIFICATE-----
+
+NetLock Business (Class B) Root
+===============================
+-----BEGIN CERTIFICATE-----
+MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
+CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
+BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
+VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
+VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
+bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
+VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
+iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
+o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
+1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
+HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
+RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
+dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
+ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
+c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
+YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
+c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
+Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
+bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
+IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
+YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
+cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
+43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
+stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
+-----END CERTIFICATE-----
+
+NetLock Express (Class C) Root
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
+CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
+BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
+KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
+BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
+dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
+ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
+jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
+W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
+euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
+DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
+RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
+YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
+IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
+aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
+ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
+ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
+dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
+emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
+IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
+UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
+YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
+xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
+gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
+-----END CERTIFICATE-----
+
+XRamp Global CA Root
+====================
+-----BEGIN CERTIFICATE-----
+MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
+BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
+dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
+HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
+U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
+IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
+foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
+zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
+AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
+xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
+oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
+AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
+/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
+qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
+nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
+8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
+-----END CERTIFICATE-----
+
+Go Daddy Class 2 CA
+===================
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
+VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
+A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
+RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
+ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
+2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
+qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
+YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
+vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
+BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
+atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
+MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
+A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
+PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
+I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
+HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
+Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
+vZ8=
+-----END CERTIFICATE-----
+
+Starfield Class 2 CA
+====================
+-----BEGIN CERTIFICATE-----
+MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
+U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
+MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
+A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
+SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
+bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
+JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
+epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
+F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
+MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
+hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
+bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
+QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
+afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
+PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
+xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
+KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
+QBFGmh95DmK/D5fs4C8fF5Q=
+-----END CERTIFICATE-----
+
+StartCom Ltd.
+=============
+-----BEGIN CERTIFICATE-----
+MIIFFjCCBH+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgT
+BklzcmFlbDEOMAwGA1UEBxMFRWlsYXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsT
+EUNBIEF1dGhvcml0eSBEZXAuMSkwJwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac3RhcnRjb20ub3JnMB4XDTA1MDMxNzE3Mzc0OFoX
+DTM1MDMxMDE3Mzc0OFowgbAxCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxDjAMBgNVBAcT
+BUVpbGF0MRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMRowGAYDVQQLExFDQSBBdXRob3JpdHkgRGVw
+LjEpMCcGA1UEAxMgRnJlZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxITAfBgkqhkiG9w0B
+CQEWEmFkbWluQHN0YXJ0Y29tLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7YRgACOe
+yEpRKSfeOqE5tWmrCbIvNP1h3D3TsM+x18LEwrHkllbEvqoUDufMOlDIOmKdw6OsWXuO7lUaHEe+
+o5c5s7XvIywI6Nivcy+5yYPo7QAPyHWlLzRMGOh2iCNJitu27Wjaw7ViKUylS7eYtAkUEKD4/mJ2
+IhULpNYILzUCAwEAAaOCAjwwggI4MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMB0GA1Ud
+DgQWBBQcicOWzL3+MtUNjIExtpidjShkjTCB3QYDVR0jBIHVMIHSgBQcicOWzL3+MtUNjIExtpid
+jShkjaGBtqSBszCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgTBklzcmFlbDEOMAwGA1UEBxMFRWls
+YXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsTEUNBIEF1dGhvcml0eSBEZXAuMSkw
+JwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
+YWRtaW5Ac3RhcnRjb20ub3JnggEAMB0GA1UdEQQWMBSBEmFkbWluQHN0YXJ0Y29tLm9yZzAdBgNV
+HRIEFjAUgRJhZG1pbkBzdGFydGNvbS5vcmcwEQYJYIZIAYb4QgEBBAQDAgAHMC8GCWCGSAGG+EIB
+DQQiFiBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAyBglghkgBhvhCAQQEJRYjaHR0
+cDovL2NlcnQuc3RhcnRjb20ub3JnL2NhLWNybC5jcmwwKAYJYIZIAYb4QgECBBsWGWh0dHA6Ly9j
+ZXJ0LnN0YXJ0Y29tLm9yZy8wOQYJYIZIAYb4QgEIBCwWKmh0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9y
+Zy9pbmRleC5waHA/YXBwPTExMTANBgkqhkiG9w0BAQQFAAOBgQBscSXhnjSRIe/bbL0BCFaPiNhB
+OlP1ct8nV0t2hPdopP7rPwl+KLhX6h/BquL/lp9JmeaylXOWxkjHXo0Hclb4g4+fd68p00UOpO6w
+NnQt8M2YI3s3S9r+UZjEHjQ8iP2ZO1CnwYszx8JSFhKVU2Ui77qLzmLbcCOxgN8aIDjnfg==
+-----END CERTIFICATE-----
+
+StartCom Certification Authority
+================================
+-----BEGIN CERTIFICATE-----
+MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
+U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
+ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
+NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
+LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
+U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
+ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
+o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
+Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
+eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
+2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
+6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
+osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
+untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
+UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
+37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
+FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
+Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
+YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
+AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
+Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
+U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
+LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
+cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
+dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
+AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
+3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
+vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
+fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
+fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
+EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
+yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
+1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
+lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
+g14=
+-----END CERTIFICATE-----
+
+Taiwan GRCA
+===========
+-----BEGIN CERTIFICATE-----
+MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
+EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
+DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
+dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
+w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
+BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
+1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
+htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
+J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
+Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
+B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
+O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
+lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
+HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
+09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
+TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
+Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
+Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
+D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
+DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
+Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
+7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
+CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
+-----END CERTIFICATE-----
+
+Firmaprofesional Root CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
+GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
+Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
+ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
+MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
+OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
+ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
+j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
+lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
+3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
+NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
+KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
+AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
+DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
+ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
+u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
+wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
+7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
+VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
+-----END CERTIFICATE-----
+
+Wells Fargo Root CA
+===================
+-----BEGIN CERTIFICATE-----
+MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
+BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
+MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
+bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
+MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
+x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
+E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
+OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
+sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
+YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
+BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
+ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
+m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
+OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
+x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
+tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
+-----END CERTIFICATE-----
+
+Swisscom Root CA 1
+==================
+-----BEGIN CERTIFICATE-----
+MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
+EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
+dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
+MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
+aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
+IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
+MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
+NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
+AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
+b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
+7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
+cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
+WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
+haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
+MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
+BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
+MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
+jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
+MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
+VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
+vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
+OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
+1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
+nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
+x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
+NY6E0F/6MBr1mmz0DlP5OlvRHA==
+-----END CERTIFICATE-----
+
+DigiCert Assured ID Root CA
+===========================
+-----BEGIN CERTIFICATE-----
+MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
+IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
+MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
+ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
+9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
+UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
+/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
+oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
+GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
+66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
+hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
+EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
+SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
+8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
+-----END CERTIFICATE-----
+
+DigiCert Global Root CA
+=======================
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
+HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
+MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
+dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
+TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
+BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
+4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
+7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
+o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
+8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
+BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
+EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
+tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
+UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+
+DigiCert High Assurance EV Root CA
+==================================
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
+KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
+MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
+MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
+Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
+Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
+OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
+MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
+NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
+h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
+Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
+JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
+V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
+myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
+mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
+vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
+-----END CERTIFICATE-----
+
+Certplus Class 2 Primary CA
+===========================
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
+BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
+OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
+dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
+5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
+Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
+YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
+e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
+CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
+YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
+L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
+P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
+TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
+7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
+//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
+l7+ijrRU
+-----END CERTIFICATE-----
+
+DST Root CA X3
+==============
+-----BEGIN CERTIFICATE-----
+MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
+ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
+DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
+cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
+rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
+UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
+xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
+utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
+AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
+MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
+dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
+GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
+RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
+fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
+-----END CERTIFICATE-----
+
+DST ACES CA X6
+==============
+-----BEGIN CERTIFICATE-----
+MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
+EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
+MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
+MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
+CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
+DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
+pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
+GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
+MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
+EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
+Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
+dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
+CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
+5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
+Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
+nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
+vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
+oKfN5XozNmr6mis=
+-----END CERTIFICATE-----
+
+TURKTRUST Certificate Services Provider Root 1
+==============================================
+-----BEGIN CERTIFICATE-----
+MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
+MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
+acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
+MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
+U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
+TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
+aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
+yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
+Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
+8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
+W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
+BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
+sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
+q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
+B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
+nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
+-----END CERTIFICATE-----
+
+TURKTRUST Certificate Services Provider Root 2
+==============================================
+-----BEGIN CERTIFICATE-----
+MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
+MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
+QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
+MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
+dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
+A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
+acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
+LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
+x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
+QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
+5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
+AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
+A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
+Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
+Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
+9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
+UrbnBEI=
+-----END CERTIFICATE-----
+
+SwissSign Platinum CA - G2
+==========================
+-----BEGIN CERTIFICATE-----
+MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT
+BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw
+HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM
+U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ
+KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu
+669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
+eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne
+WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo
+j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
+8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
+aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy
+domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D
++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV
+CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv
+zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
+IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1
+Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3
+NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4
+U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8
+KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl
+9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B
+aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs
+OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY
+Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci
+IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g==
+-----END CERTIFICATE-----
+
+SwissSign Gold CA - G2
+======================
+-----BEGIN CERTIFICATE-----
+MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
+EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
+MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
+c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
+t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
+jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
+vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
+ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
+AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
+jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
+peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
+7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
+GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
+OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
+L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
+5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
+44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
+Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
+Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
+mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
+vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
+KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
+NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
+viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
+-----END CERTIFICATE-----
+
+SwissSign Silver CA - G2
+========================
+-----BEGIN CERTIFICATE-----
+MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
+BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
+DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
+aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
+9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
+N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
+6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
+MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
+qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
+FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
+ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
+celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
+CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
+tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
+cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
+4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
+kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
+3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
+/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
+DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
+e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
+WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
+DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
+DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
+-----END CERTIFICATE-----
+
+GeoTrust Primary Certification Authority
+========================================
+-----BEGIN CERTIFICATE-----
+MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
+EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
+ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
+cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
+b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
+nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
+RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
+tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
+hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
+Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
+NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
+Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
+1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
+-----END CERTIFICATE-----
+
+thawte Primary Root CA
+======================
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
+BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
+aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
+MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
+SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
+KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
+FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
+oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
+1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
+q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
+aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
+afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
+VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
+AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
+uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
+xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
+jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
+z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
+-----END CERTIFICATE-----
+
+VeriSign Class 3 Public Primary Certification Authority - G5
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
+BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
+ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
+IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
+yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
+biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
+dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
+YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
+j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
+Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
+Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
+fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
+BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
+Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
+aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
+SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
+KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
+Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
+ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
+-----END CERTIFICATE-----
+
+SecureTrust CA
+==============
+-----BEGIN CERTIFICATE-----
+MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
+EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
+dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
+BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
+OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
+DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
+GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
+01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
+ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
+aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
+KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
+SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
+mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
+nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
+3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
+-----END CERTIFICATE-----
+
+Secure Global CA
+================
+-----BEGIN CERTIFICATE-----
+MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
+EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
+bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
+MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
+Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
+YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
+bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
+8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
+HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
+0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
+oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
+MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
+CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
+3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
+f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
+-----END CERTIFICATE-----
+
+COMODO Certification Authority
+==============================
+-----BEGIN CERTIFICATE-----
+MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
+BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
+A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
+dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
+MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
+T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
+xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
+4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
+1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
+rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
+BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
+b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
+AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
+OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
+RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
+IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
+-----END CERTIFICATE-----
+
+DigiNotar Root CA
+=================
+-----BEGIN CERTIFICATE-----
+MIIFijCCA3KgAwIBAgIQDHbanJEMTiye/hXQWJM8TDANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQG
+EwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90YXIgUm9vdCBDQTEgMB4G
+CSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwHhcNMDcwNTE2MTcxOTM2WhcNMjUwMzMxMTgx
+OTIxWjBfMQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90
+YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwggIiMA0GCSqGSIb3
+DQEBAQUAA4ICDwAwggIKAoICAQCssFjBAL3YIQgLK5r+blYwBZ8bd5AQQVzDDYcRd46B8cp86Yxq
+7Th0Nbva3/m7wAk3tJZzgX0zGpg595NvlX89ubF1h7pRSOiLcD6VBMXYtsMW2YiwsYcdcNqGtA8U
+i3rPENF0NqISe3eGSnnme98CEWilToauNFibJBN4ViIlHgGLS1Fx+4LMWZZpiFpoU8W5DQI3y0u8
+ZkqQfioLBQftFl9VkHXYRskbg+IIvvEjzJkd1ioPgyAVWCeCLvriIsJJsbkBgWqdbZ1Ad2h2TiEq
+bYRAhU52mXyC8/O3AlnUJgEbjt+tUwbRrhjd4rI6y9eIOI6sWym5GdOY+RgDz0iChmYLG2kPyes4
+iHomGgVMktck1JbyrFIto0fVUvY//s6EBnCmqj6i8rZWNBhXouSBbefK8GrTx5FrAoNBfBXva5pk
+XuPQPOWx63tdhvvL5ndJzaNl3Pe5nLjkC1+Tz8wwGjIczhxjlaX56uF0i57pK6kwe6AYHw4YC+Vb
+qdPRbB4HZ4+RS6mKvNJmqpMBiLKR+jFc1abBUggJzQpjotMipuih2TkGl/VujQKQjBR7P4DNG5y6
+xFhyI6+2Vp/GekIzKQc/gsnmHwUNzUwoNovTyD4cxojvXu6JZOkd69qJfjKmadHdzIif0dDJZiHc
+BmfFlHqabWJMfczgZICynkeOowIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
+AwIBBjAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wDQYJKoZIhvcNAQEFBQADggIBADsC
+jcs8MOhuoK3yc7NfniUTBAXT9uOLuwt5zlPe5JbF0a9zvNXD0EBVfEB/zRtfCdXyfJ9oHbtdzno5
+wozWmHvFg1Wo1X1AyuAe94leY12hE8JdiraKfADzI8PthV9xdvBoY6pFITlIYXg23PFDk9Qlx/KA
+ZeFTAnVR/Ho67zerhChXDNjU1JlWbOOi/lmEtDHoM/hklJRRl6s5xUvt2t2AC298KQ3EjopyDedT
+FLJgQT2EkTFoPSdE2+Xe9PpjRchMPpj1P0G6Tss3DbpmmPHdy59c91Q2gmssvBNhl0L4eLvMyKKf
+yvBovWsdst+Nbwed2o5nx0ceyrm/KkKRt2NTZvFCo+H0Wk1Ya7XkpDOtXHAd3ODy63MUkZoDweoA
+ZbwH/M8SESIsrqC9OuCiKthZ6SnTGDWkrBFfGbW1G/8iSlzGeuQX7yCpp/Q/rYqnmgQlnQ7KN+ZQ
+/YxCKQSa7LnPS3K94gg2ryMvYuXKAdNw23yCIywWMQzGNgeQerEfZ1jEO1hZibCMjFCz2IbLaKPE
+CudpSyDOwR5WS5WpI2jYMNjD67BVUc3l/Su49bsRn1NU9jQZjHkJNsphFyUXC4KYcwx3dMPVDceo
+EkzHp1RxRy4sGn3J4ys7SN4nhKdjNrN9j6BkOSQNPXuHr2ZcdBtLc7LljPCGmbjlxd+Ewbfr
+-----END CERTIFICATE-----
+
+Network Solutions Certificate Authority
+=======================================
+-----BEGIN CERTIFICATE-----
+MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
+EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
+IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
+MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
+MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
+jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
+aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
+crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
+/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
+AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
+bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
+A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
+4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
+GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
+wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
+ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
+-----END CERTIFICATE-----
+
+WellsSecure Public Root Certificate Authority
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
+F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
+NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
+MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
+bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
+VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
+iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
+i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
+bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
+K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
+AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
+cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
+lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
+i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
+GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
+Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
+K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
+bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
+qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
+E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
+tylv2G0xffX8oRAHh84vWdw+WNs=
+-----END CERTIFICATE-----
+
+COMODO ECC Certification Authority
+==================================
+-----BEGIN CERTIFICATE-----
+MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
+R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
+ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
+GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
+b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
+4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
+wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
+BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
+FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
+U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
+-----END CERTIFICATE-----
+
+MD5 Collisions Forged Rogue CA 25c3
+===================================
+-----BEGIN CERTIFICATE-----
+MIIEMjCCA5ugAwIBAgIBQjANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
+bmVzcyBDQS0xMB4XDTA0MDczMTAwMDAwMVoXDTA0MDkwMjAwMDAwMVowPDE6MDgGA1UEAxMxTUQ1
+IENvbGxpc2lvbnMgSW5jLiAoaHR0cDovL3d3dy5waHJlZWRvbS5vcmcvbWQ1KTCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEAuqZZySwo1iqw+O2fRqSkN+4OGWhZ0bMDmVHWFppeN2sV4A5L9YRk
++KPbQW811ZsVH9vEOFJwgZdej6C193458DKsHq1E0rP6SMPOkZvs9Jx84Vr1yDdrmoPe58oglzFC
+cxWRaPSIr/koKMXpD3OwF0sTTJl10ETmfghsGvJPG0ECAwEAAaOCAiQwggIgMAsGA1UdDwQEAwIB
+xjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSnBGAfq3JDCMV/CJBVVhzWzuY46zAfBgNVHSME
+GDAWgBS+qKB0clBrRLfJI9j7qP+zV2tobDCCAb4GCWCGSAGG+EIBDQSCAa8WggGrMwAAACdeOeCJ
+YQ9Oo8VFCza7AdFTqsMIj2/4Tz6Hh0QR3GDg35JV+bhzG1STxZ/QRsRgtjVizbmvHKhpGslbPJY3
+wO1n77v+wIucUC8pvYMino4I+qwTcKJYf2JiihH3ifbftmdZcxb7YxaKtJE4zi71tr5MpJRJ5GUR
+CkIVycEw4mnVRX2lJru5YexiZPA54ee8aNhQUZ4dYNPRo6cK+AMgoXABF5E2TwJwMYaD3fcP2Acd
+EbMTBKXc8K5QsSgOY2kqDIJvj0cz32yiBpLxT0W+2TA2oyuM1neuNWN/Tkyak0g22Z8CAwEAAaOB
+vTCBujAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYEFM2mg/qlYDf3ljcXKd5BePGHiVXnMDsGA1Ud
+HwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmwuZ2VvdHJ1c3QuY29tL2NybHMvZ2xvYmFsY2ExLmNybDAf
+BgNVHSMEGDAWgBS+qKB0clBrRLfJI9j7qP+zV2tobDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
+BQUHAwIwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQQFAAOBgQCnIQKN0Q6igHcl/UNgFY/s75BH
+1IRCFSYRHM3CPBApqbbfq1d1kdrlK7OQRRwwY1Y/itlQ+u1YbMBlrGZX3hzGdjv1AA6ORc5/TJDs
+K8bNs7SPYtD+t8UmckTt9phbrsvRlfXaCL5oRrF1yOwdjx56lPGqU3iiRa5U6tGedMh2Zw==
+-----END CERTIFICATE-----
+
+IGC/A
+=====
+-----BEGIN CERTIFICATE-----
+MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
+VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
+Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
+MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
+EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
+STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
+TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
+So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
+HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
+frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
+tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
+egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
+iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
+q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
+MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
+Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
+lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
+0mBWWg==
+-----END CERTIFICATE-----
+
+Security Communication EV RootCA1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
+U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
+dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
+BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
+Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
+/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
+WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
+ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
+bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
+9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
+SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
+iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
+Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
+mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
+T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
+-----END CERTIFICATE-----
+
+OISTE WISeKey Global Root GA CA
+===============================
+-----BEGIN CERTIFICATE-----
+MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
+BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
+A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
+bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
+VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
+IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
+IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
+Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
+Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
+d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
+/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
+LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
+KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
+MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
+hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
+okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
+-----END CERTIFICATE-----
+
+S-TRUST Authentication and Encryption Root CA 2005 PN
+=====================================================
+-----BEGIN CERTIFICATE-----
+MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
+BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
+cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
+LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
+NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
+ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
+aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
+b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
+4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
+g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
+eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
+KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
+/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
+bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
+D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
+pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
+P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
+nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
+F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
+Hz2eBIPdltkdOpQ=
+-----END CERTIFICATE-----
+
+Microsec e-Szigno Root CA
+=========================
+-----BEGIN CERTIFICATE-----
+MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
+BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
+EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
+MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
+dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
+GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
+d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
+oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
+QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
+PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
+MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
+IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
+VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
+LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
+dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
+AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
+4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
+AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
+egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
+Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
+PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
+c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
+cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
+IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
+WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
+MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
+MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
+Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
+HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
+nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
+aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
+86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
+yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
+S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
+-----END CERTIFICATE-----
+
+Certigna
+========
+-----BEGIN CERTIFICATE-----
+MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
+EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
+MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
+Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
+XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
+GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
+ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
+DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
+Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
+tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
+BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
+SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
+hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
+PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
+1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
+WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
+-----END CERTIFICATE-----
+
+AC Ra+¡z Certic+ímara S.A.
+==========================
+-----BEGIN CERTIFICATE-----
+MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
+AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
+LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
+HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
+U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
+IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
+yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
+2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
+4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
+2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
+8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
+HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
+Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
+5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
+czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
+AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
+ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
+BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
+cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
+AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
+EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
+/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
+MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
+3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
+eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
+/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
+RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
+Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
+-----END CERTIFICATE-----
+
+TC TrustCenter Class 2 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
+MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
+IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
+xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
+Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
+SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
+dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
+KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
+TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
+JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
+vQ==
+-----END CERTIFICATE-----
+
+TC TrustCenter Class 3 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
+MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
+yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
+6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
+uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
+2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
+O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
+yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
+IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
+092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
+5A==
+-----END CERTIFICATE-----
+
+TC TrustCenter Universal CA I
+=============================
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
+IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
+MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
+VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
+JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
+qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
+xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
+ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
+gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
+BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
+1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
+vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
+ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
+ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
+7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
+-----END CERTIFICATE-----
+
+Deutsche Telekom Root CA 2
+==========================
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
+RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
+A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
+MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
+A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
+b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
+bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
+KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
+AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
+Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
+jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
+HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
+E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
+zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
+rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
+dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
+Cm26OWMohpLzGITY+9HPBVZkVw==
+-----END CERTIFICATE-----
+
+ComSign CA
+==========
+-----BEGIN CERTIFICATE-----
+MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
+EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
+MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
+Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
+ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
+P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
+GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
+YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
+rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
+oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
+AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
+VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
+QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
+mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
+/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
+zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
+AGegcQCCSA==
+-----END CERTIFICATE-----
+
+ComSign Secured CA
+==================
+-----BEGIN CERTIFICATE-----
+MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
+AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
+NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
+QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
+49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
+7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
+kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
+9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
+AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
+U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
+j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
+AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
+BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
+FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
+51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
+OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
+-----END CERTIFICATE-----
+
+Cybertrust Global Root
+======================
+-----BEGIN CERTIFICATE-----
+MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
+ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
+MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
+ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
+0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
+AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
+89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
+8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
+MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
+A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
+lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
+5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
+hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
+X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
+WL1WMRJOEcgh4LMRkWXbtKaIOM5V
+-----END CERTIFICATE-----
diff --git a/.mutt/certs/certdata.txt b/.mutt/certs/certdata.txt
new file mode 100644
index 0000000..c75d876
--- /dev/null
+++ b/.mutt/certs/certdata.txt
@@ -0,0 +1,19539 @@
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is the Netscape security libraries.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1994-2000
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+CVS_ID "@(#) $RCSfile: certdata.txt,v $ $Revision: 1.53 $ $Date: 2009/05/21 19:50:28 $"
+
+#
+# certdata.txt
+#
+# This file contains the object definitions for the certs and other
+# information "built into" NSS.
+#
+# Object definitions:
+#
+# Certificates
+#
+# -- Attribute -- -- type -- -- value --
+# CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+# CKA_TOKEN CK_BBOOL CK_TRUE
+# CKA_PRIVATE CK_BBOOL CK_FALSE
+# CKA_MODIFIABLE CK_BBOOL CK_FALSE
+# CKA_LABEL UTF8 (varies)
+# CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+# CKA_SUBJECT DER+base64 (varies)
+# CKA_ID byte array (varies)
+# CKA_ISSUER DER+base64 (varies)
+# CKA_SERIAL_NUMBER DER+base64 (varies)
+# CKA_VALUE DER+base64 (varies)
+# CKA_NETSCAPE_EMAIL ASCII7 (unused here)
+#
+# Trust
+#
+# -- Attribute -- -- type -- -- value --
+# CKA_CLASS CK_OBJECT_CLASS CKO_TRUST
+# CKA_TOKEN CK_BBOOL CK_TRUE
+# CKA_PRIVATE CK_BBOOL CK_FALSE
+# CKA_MODIFIABLE CK_BBOOL CK_FALSE
+# CKA_LABEL UTF8 (varies)
+# CKA_ISSUER DER+base64 (varies)
+# CKA_SERIAL_NUMBER DER+base64 (varies)
+# CKA_CERT_HASH binary+base64 (varies)
+# CKA_EXPIRES CK_DATE (not used here)
+# CKA_TRUST_DIGITAL_SIGNATURE CK_TRUST (varies)
+# CKA_TRUST_NON_REPUDIATION CK_TRUST (varies)
+# CKA_TRUST_KEY_ENCIPHERMENT CK_TRUST (varies)
+# CKA_TRUST_DATA_ENCIPHERMENT CK_TRUST (varies)
+# CKA_TRUST_KEY_AGREEMENT CK_TRUST (varies)
+# CKA_TRUST_KEY_CERT_SIGN CK_TRUST (varies)
+# CKA_TRUST_CRL_SIGN CK_TRUST (varies)
+# CKA_TRUST_SERVER_AUTH CK_TRUST (varies)
+# CKA_TRUST_CLIENT_AUTH CK_TRUST (varies)
+# CKA_TRUST_CODE_SIGNING CK_TRUST (varies)
+# CKA_TRUST_EMAIL_PROTECTION CK_TRUST (varies)
+# CKA_TRUST_IPSEC_END_SYSTEM CK_TRUST (varies)
+# CKA_TRUST_IPSEC_TUNNEL CK_TRUST (varies)
+# CKA_TRUST_IPSEC_USER CK_TRUST (varies)
+# CKA_TRUST_TIME_STAMPING CK_TRUST (varies)
+# CKA_TRUST_STEP_UP_APPROVED CK_BBOOL (varies)
+# (other trust attributes can be defined)
+#
+
+#
+# The object to tell NSS that this is a root list and we don't
+# have to go looking for others.
+#
+BEGINDATA
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_BUILTIN_ROOT_LIST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Mozilla Builtin Roots"
+
+#
+# Certificate "Verisign/RSA Secure Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign/RSA Secure Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\122\123\101\040\104\141
+\164\141\040\123\145\143\165\162\151\164\171\054\040\111\156\143
+\056\061\056\060\054\006\003\125\004\013\023\045\123\145\143\165
+\162\145\040\123\145\162\166\145\162\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\122\123\101\040\104\141
+\164\141\040\123\145\143\165\162\151\164\171\054\040\111\156\143
+\056\061\056\060\054\006\003\125\004\013\023\045\123\145\143\165
+\162\145\040\123\145\162\166\145\162\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\002\255\146\176\116\105\376\136\127\157\074\230\031\136
+\335\300
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\064\060\202\001\241\002\020\002\255\146\176\116\105
+\376\136\127\157\074\230\031\136\335\300\060\015\006\011\052\206
+\110\206\367\015\001\001\002\005\000\060\137\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\040\060\036\006\003\125\004
+\012\023\027\122\123\101\040\104\141\164\141\040\123\145\143\165
+\162\151\164\171\054\040\111\156\143\056\061\056\060\054\006\003
+\125\004\013\023\045\123\145\143\165\162\145\040\123\145\162\166
+\145\162\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\060\036\027\015\071\064
+\061\061\060\071\060\060\060\060\060\060\132\027\015\061\060\060
+\061\060\067\062\063\065\071\065\071\132\060\137\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\040\060\036\006\003\125
+\004\012\023\027\122\123\101\040\104\141\164\141\040\123\145\143
+\165\162\151\164\171\054\040\111\156\143\056\061\056\060\054\006
+\003\125\004\013\023\045\123\145\143\165\162\145\040\123\145\162
+\166\145\162\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\060\201\233\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\211
+\000\060\201\205\002\176\000\222\316\172\301\256\203\076\132\252
+\211\203\127\254\045\001\166\014\255\256\216\054\067\316\353\065
+\170\144\124\003\345\204\100\121\311\277\217\010\342\212\202\010
+\322\026\206\067\125\351\261\041\002\255\166\150\201\232\005\242
+\113\311\113\045\146\042\126\154\210\007\217\367\201\131\155\204
+\007\145\160\023\161\166\076\233\167\114\343\120\211\126\230\110
+\271\035\247\051\032\023\056\112\021\131\234\036\025\325\111\124
+\054\163\072\151\202\261\227\071\234\155\160\147\110\345\335\055
+\326\310\036\173\002\003\001\000\001\060\015\006\011\052\206\110
+\206\367\015\001\001\002\005\000\003\176\000\145\335\176\341\262
+\354\260\342\072\340\354\161\106\232\031\021\270\323\307\240\264
+\003\100\046\002\076\011\234\341\022\263\321\132\366\067\245\267
+\141\003\266\133\026\151\073\306\104\010\014\210\123\014\153\227
+\111\307\076\065\334\154\271\273\252\337\134\273\072\057\223\140
+\266\251\113\115\362\040\367\315\137\177\144\173\216\334\000\134
+\327\372\167\312\071\026\131\157\016\352\323\265\203\177\115\115
+\102\126\166\264\311\137\004\370\070\370\353\322\137\165\137\315
+\173\374\345\216\200\174\374\120
+END
+
+# Trust for Certificate "Verisign/RSA Secure Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign/RSA Secure Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\104\143\305\061\327\314\301\000\147\224\141\053\266\126\323\277
+\202\127\204\157
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\164\173\202\003\103\360\000\236\153\263\354\107\277\205\245\223
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\122\123\101\040\104\141
+\164\141\040\123\145\143\165\162\151\164\171\054\040\111\156\143
+\056\061\056\060\054\006\003\125\004\013\023\045\123\145\143\165
+\162\145\040\123\145\162\166\145\162\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\002\255\146\176\116\105\376\136\127\157\074\230\031\136
+\335\300
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "GTE CyberTrust Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GTE CyberTrust Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\034\060\032\006\003\125
+\004\003\023\023\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\034\060\032\006\003\125
+\004\003\023\023\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\243
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\001\372\060\202\001\143\002\002\001\243\060\015\006\011
+\052\206\110\206\367\015\001\001\004\005\000\060\105\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\030\060\026\006\003
+\125\004\012\023\017\107\124\105\040\103\157\162\160\157\162\141
+\164\151\157\156\061\034\060\032\006\003\125\004\003\023\023\107
+\124\105\040\103\171\142\145\162\124\162\165\163\164\040\122\157
+\157\164\060\036\027\015\071\066\060\062\062\063\062\063\060\061
+\060\060\132\027\015\060\066\060\062\062\063\062\063\065\071\060
+\060\132\060\105\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\030\060\026\006\003\125\004\012\023\017\107\124\105\040
+\103\157\162\160\157\162\141\164\151\157\156\061\034\060\032\006
+\003\125\004\003\023\023\107\124\105\040\103\171\142\145\162\124
+\162\165\163\164\040\122\157\157\164\060\201\237\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\201\215\000\060
+\201\211\002\201\201\000\270\346\117\272\333\230\174\161\174\257
+\104\267\323\017\106\331\144\345\223\301\102\216\307\272\111\215
+\065\055\172\347\213\275\345\005\061\131\306\261\057\012\014\373
+\237\247\077\242\011\146\204\126\036\067\051\033\207\351\176\014
+\312\232\237\245\177\365\025\224\243\325\242\106\202\330\150\114
+\321\067\025\006\150\257\275\370\260\263\360\051\365\225\132\011
+\026\141\167\012\042\045\324\117\105\252\307\275\345\226\337\371
+\324\250\216\102\314\044\300\036\221\047\112\265\155\006\200\143
+\071\304\242\136\070\003\002\003\001\000\001\060\015\006\011\052
+\206\110\206\367\015\001\001\004\005\000\003\201\201\000\022\263
+\165\306\137\035\341\141\125\200\000\324\201\113\173\061\017\043
+\143\347\075\363\003\371\364\066\250\273\331\343\245\227\115\352
+\053\051\340\326\152\163\201\346\300\211\243\323\361\340\245\245
+\042\067\232\143\302\110\040\264\333\162\343\310\366\331\174\276
+\261\257\123\332\024\264\041\270\326\325\226\343\376\116\014\131
+\142\266\232\112\371\102\335\214\157\201\251\161\377\364\012\162
+\155\155\104\016\235\363\164\164\250\325\064\111\351\136\236\351
+\264\172\341\345\132\037\204\060\234\323\237\245\045\330
+END
+
+# Trust for Certificate "GTE CyberTrust Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GTE CyberTrust Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\220\336\336\236\114\116\237\157\330\206\027\127\235\323\221\274
+\145\246\211\144
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\304\327\360\262\243\305\175\141\147\360\004\315\103\323\272\130
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\034\060\032\006\003\125
+\004\003\023\023\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\243
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "GTE CyberTrust Global Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GTE CyberTrust Global Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\047\060\045\006\003\125
+\004\013\023\036\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\123\157\154\165\164\151\157\156\163\054\040\111\156
+\143\056\061\043\060\041\006\003\125\004\003\023\032\107\124\105
+\040\103\171\142\145\162\124\162\165\163\164\040\107\154\157\142
+\141\154\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\047\060\045\006\003\125
+\004\013\023\036\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\123\157\154\165\164\151\157\156\163\054\040\111\156
+\143\056\061\043\060\041\006\003\125\004\003\023\032\107\124\105
+\040\103\171\142\145\162\124\162\165\163\164\040\107\154\157\142
+\141\154\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\245
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\132\060\202\001\303\002\002\001\245\060\015\006\011
+\052\206\110\206\367\015\001\001\004\005\000\060\165\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\030\060\026\006\003
+\125\004\012\023\017\107\124\105\040\103\157\162\160\157\162\141
+\164\151\157\156\061\047\060\045\006\003\125\004\013\023\036\107
+\124\105\040\103\171\142\145\162\124\162\165\163\164\040\123\157
+\154\165\164\151\157\156\163\054\040\111\156\143\056\061\043\060
+\041\006\003\125\004\003\023\032\107\124\105\040\103\171\142\145
+\162\124\162\165\163\164\040\107\154\157\142\141\154\040\122\157
+\157\164\060\036\027\015\071\070\060\070\061\063\060\060\062\071
+\060\060\132\027\015\061\070\060\070\061\063\062\063\065\071\060
+\060\132\060\165\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\030\060\026\006\003\125\004\012\023\017\107\124\105\040
+\103\157\162\160\157\162\141\164\151\157\156\061\047\060\045\006
+\003\125\004\013\023\036\107\124\105\040\103\171\142\145\162\124
+\162\165\163\164\040\123\157\154\165\164\151\157\156\163\054\040
+\111\156\143\056\061\043\060\041\006\003\125\004\003\023\032\107
+\124\105\040\103\171\142\145\162\124\162\165\163\164\040\107\154
+\157\142\141\154\040\122\157\157\164\060\201\237\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\201\215\000\060
+\201\211\002\201\201\000\225\017\240\266\360\120\234\350\172\307
+\210\315\335\027\016\056\260\224\320\033\075\016\366\224\300\212
+\224\307\006\310\220\227\310\270\144\032\172\176\154\074\123\341
+\067\050\163\140\177\262\227\123\007\237\123\371\155\130\224\322
+\257\215\155\210\147\200\346\355\262\225\317\162\061\312\245\034
+\162\272\134\002\347\144\102\347\371\251\054\326\072\015\254\215
+\102\252\044\001\071\346\234\077\001\205\127\015\130\207\105\370
+\323\205\252\223\151\046\205\160\110\200\077\022\025\307\171\264
+\037\005\057\073\142\231\002\003\001\000\001\060\015\006\011\052
+\206\110\206\367\015\001\001\004\005\000\003\201\201\000\155\353
+\033\011\351\136\331\121\333\147\042\141\244\052\074\110\167\343
+\240\174\246\336\163\242\024\003\205\075\373\253\016\060\305\203
+\026\063\201\023\010\236\173\064\116\337\100\310\164\327\271\175
+\334\364\166\125\175\233\143\124\030\351\360\352\363\134\261\331
+\213\102\036\271\300\225\116\272\372\325\342\174\365\150\141\277
+\216\354\005\227\137\133\260\327\243\205\064\304\044\247\015\017
+\225\223\357\313\224\330\236\037\235\134\205\155\307\252\256\117
+\037\042\265\315\225\255\272\247\314\371\253\013\172\177
+END
+
+# Trust for Certificate "GTE CyberTrust Global Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GTE CyberTrust Global Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\227\201\171\120\330\034\226\160\314\064\330\011\317\171\104\061
+\066\176\364\164
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\312\075\323\150\361\003\134\320\062\372\270\053\131\350\132\333
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\030\060\026\006\003\125\004\012\023\017\107\124\105\040\103\157
+\162\160\157\162\141\164\151\157\156\061\047\060\045\006\003\125
+\004\013\023\036\107\124\105\040\103\171\142\145\162\124\162\165
+\163\164\040\123\157\154\165\164\151\157\156\163\054\040\111\156
+\143\056\061\043\060\041\006\003\125\004\003\023\032\107\124\105
+\040\103\171\142\145\162\124\162\165\163\164\040\107\154\157\142
+\141\154\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\245
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Thawte Personal Basic CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Basic CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\313\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\041\060\037\006\003\125\004\003\023\030\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\102\141\163\151
+\143\040\103\101\061\050\060\046\006\011\052\206\110\206\367\015
+\001\011\001\026\031\160\145\162\163\157\156\141\154\055\142\141
+\163\151\143\100\164\150\141\167\164\145\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\313\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\041\060\037\006\003\125\004\003\023\030\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\102\141\163\151
+\143\040\103\101\061\050\060\046\006\011\052\206\110\206\367\015
+\001\011\001\026\031\160\145\162\163\157\156\141\154\055\142\141
+\163\151\143\100\164\150\141\167\164\145\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\041\060\202\002\212\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\313\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007\023
+\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006\003
+\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156\163
+\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013\023
+\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040\123
+\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157\156
+\061\041\060\037\006\003\125\004\003\023\030\124\150\141\167\164
+\145\040\120\145\162\163\157\156\141\154\040\102\141\163\151\143
+\040\103\101\061\050\060\046\006\011\052\206\110\206\367\015\001
+\011\001\026\031\160\145\162\163\157\156\141\154\055\142\141\163
+\151\143\100\164\150\141\167\164\145\056\143\157\155\060\036\027
+\015\071\066\060\061\060\061\060\060\060\060\060\060\132\027\015
+\062\060\061\062\063\061\062\063\065\071\065\071\132\060\201\313
+\061\013\060\011\006\003\125\004\006\023\002\132\101\061\025\060
+\023\006\003\125\004\010\023\014\127\145\163\164\145\162\156\040
+\103\141\160\145\061\022\060\020\006\003\125\004\007\023\011\103
+\141\160\145\040\124\157\167\156\061\032\060\030\006\003\125\004
+\012\023\021\124\150\141\167\164\145\040\103\157\156\163\165\154
+\164\151\156\147\061\050\060\046\006\003\125\004\013\023\037\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162
+\166\151\143\145\163\040\104\151\166\151\163\151\157\156\061\041
+\060\037\006\003\125\004\003\023\030\124\150\141\167\164\145\040
+\120\145\162\163\157\156\141\154\040\102\141\163\151\143\040\103
+\101\061\050\060\046\006\011\052\206\110\206\367\015\001\011\001
+\026\031\160\145\162\163\157\156\141\154\055\142\141\163\151\143
+\100\164\150\141\167\164\145\056\143\157\155\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\274\274\223\123\155\300\120\117
+\202\025\346\110\224\065\246\132\276\157\102\372\017\107\356\167
+\165\162\335\215\111\233\226\127\240\170\324\312\077\121\263\151
+\013\221\166\027\042\007\227\152\304\121\223\113\340\215\357\067
+\225\241\014\115\332\064\220\035\027\211\227\340\065\070\127\112
+\300\364\010\160\351\074\104\173\120\176\141\232\220\343\043\323
+\210\021\106\047\365\013\007\016\273\335\321\177\040\012\210\271
+\126\013\056\034\200\332\361\343\236\051\357\024\275\012\104\373
+\033\133\030\321\277\043\223\041\002\003\001\000\001\243\023\060
+\021\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\015\006\011\052\206\110\206\367\015\001\001\004\005
+\000\003\201\201\000\055\342\231\153\260\075\172\211\327\131\242
+\224\001\037\053\335\022\113\123\302\255\177\252\247\000\134\221
+\100\127\045\112\070\252\204\160\271\331\200\017\245\173\134\373
+\163\306\275\327\212\141\134\003\343\055\047\250\027\340\204\205
+\102\334\136\233\306\267\262\155\273\164\257\344\077\313\247\267
+\260\340\135\276\170\203\045\224\322\333\201\017\171\007\155\117
+\364\071\025\132\122\001\173\336\062\326\115\070\366\022\134\006
+\120\337\005\133\275\024\113\241\337\051\272\073\101\215\367\143
+\126\241\337\042\261
+END
+
+# Trust for Certificate "Thawte Personal Basic CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Basic CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\100\347\214\035\122\075\034\331\225\117\254\032\032\263\275\074
+\272\241\133\374
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\346\013\322\311\312\055\210\333\032\161\016\113\170\353\002\101
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\313\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\041\060\037\006\003\125\004\003\023\030\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\102\141\163\151
+\143\040\103\101\061\050\060\046\006\011\052\206\110\206\367\015
+\001\011\001\026\031\160\145\162\163\157\156\141\154\055\142\141
+\163\151\143\100\164\150\141\167\164\145\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Thawte Personal Premium CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Premium CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\317\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\043\060\041\006\003\125\004\003\023\032\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\120\162\145\155
+\151\165\155\040\103\101\061\052\060\050\006\011\052\206\110\206
+\367\015\001\011\001\026\033\160\145\162\163\157\156\141\154\055
+\160\162\145\155\151\165\155\100\164\150\141\167\164\145\056\143
+\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\317\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\043\060\041\006\003\125\004\003\023\032\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\120\162\145\155
+\151\165\155\040\103\101\061\052\060\050\006\011\052\206\110\206
+\367\015\001\011\001\026\033\160\145\162\163\157\156\141\154\055
+\160\162\145\155\151\165\155\100\164\150\141\167\164\145\056\143
+\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\051\060\202\002\222\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\317\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007\023
+\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006\003
+\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156\163
+\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013\023
+\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040\123
+\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157\156
+\061\043\060\041\006\003\125\004\003\023\032\124\150\141\167\164
+\145\040\120\145\162\163\157\156\141\154\040\120\162\145\155\151
+\165\155\040\103\101\061\052\060\050\006\011\052\206\110\206\367
+\015\001\011\001\026\033\160\145\162\163\157\156\141\154\055\160
+\162\145\155\151\165\155\100\164\150\141\167\164\145\056\143\157
+\155\060\036\027\015\071\066\060\061\060\061\060\060\060\060\060
+\060\132\027\015\062\060\061\062\063\061\062\063\065\071\065\071
+\132\060\201\317\061\013\060\011\006\003\125\004\006\023\002\132
+\101\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164
+\145\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004
+\007\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030
+\006\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157
+\156\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004
+\013\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151
+\157\156\061\043\060\041\006\003\125\004\003\023\032\124\150\141
+\167\164\145\040\120\145\162\163\157\156\141\154\040\120\162\145
+\155\151\165\155\040\103\101\061\052\060\050\006\011\052\206\110
+\206\367\015\001\011\001\026\033\160\145\162\163\157\156\141\154
+\055\160\162\145\155\151\165\155\100\164\150\141\167\164\145\056
+\143\157\155\060\201\237\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\201\215\000\060\201\211\002\201\201\000
+\311\146\331\370\007\104\317\271\214\056\360\241\357\023\105\154
+\005\337\336\047\026\121\066\101\021\154\154\073\355\376\020\175
+\022\236\345\233\102\232\376\140\061\303\146\267\163\072\110\256
+\116\320\062\067\224\210\265\015\266\331\363\362\104\331\325\210
+\022\335\166\115\362\032\374\157\043\036\172\361\330\230\105\116
+\007\020\357\026\102\320\103\165\155\112\336\342\252\311\061\377
+\037\000\160\174\146\317\020\045\010\272\372\356\000\351\106\003
+\146\047\021\025\073\252\133\362\230\335\066\102\262\332\210\165
+\002\003\001\000\001\243\023\060\021\060\017\006\003\125\035\023
+\001\001\377\004\005\060\003\001\001\377\060\015\006\011\052\206
+\110\206\367\015\001\001\004\005\000\003\201\201\000\151\066\211
+\367\064\052\063\162\057\155\073\324\042\262\270\157\232\305\066
+\146\016\033\074\241\261\165\132\346\375\065\323\370\250\362\007
+\157\205\147\216\336\053\271\342\027\260\072\240\360\016\242\000
+\232\337\363\024\025\156\273\310\205\132\230\200\371\377\276\164
+\035\075\363\376\060\045\321\067\064\147\372\245\161\171\060\141
+\051\162\300\340\054\114\373\126\344\072\250\157\345\062\131\122
+\333\165\050\120\131\014\370\013\031\344\254\331\257\226\215\057
+\120\333\007\303\352\037\253\063\340\365\053\061\211
+END
+
+# Trust for Certificate "Thawte Personal Premium CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Premium CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\066\206\065\143\375\121\050\307\276\246\360\005\317\351\264\066
+\150\010\154\316
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\072\262\336\042\232\040\223\111\371\355\310\322\212\347\150\015
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\317\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\043\060\041\006\003\125\004\003\023\032\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\120\162\145\155
+\151\165\155\040\103\101\061\052\060\050\006\011\052\206\110\206
+\367\015\001\011\001\026\033\160\145\162\163\157\156\141\154\055
+\160\162\145\155\151\165\155\100\164\150\141\167\164\145\056\143
+\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Thawte Personal Freemail CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Freemail CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\321\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\044\060\042\006\003\125\004\003\023\033\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\106\162\145\145
+\155\141\151\154\040\103\101\061\053\060\051\006\011\052\206\110
+\206\367\015\001\011\001\026\034\160\145\162\163\157\156\141\154
+\055\146\162\145\145\155\141\151\154\100\164\150\141\167\164\145
+\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\321\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\044\060\042\006\003\125\004\003\023\033\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\106\162\145\145
+\155\141\151\154\040\103\101\061\053\060\051\006\011\052\206\110
+\206\367\015\001\011\001\026\034\160\145\162\163\157\156\141\154
+\055\146\162\145\145\155\141\151\154\100\164\150\141\167\164\145
+\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\055\060\202\002\226\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\321\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007\023
+\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006\003
+\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156\163
+\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013\023
+\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040\123
+\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157\156
+\061\044\060\042\006\003\125\004\003\023\033\124\150\141\167\164
+\145\040\120\145\162\163\157\156\141\154\040\106\162\145\145\155
+\141\151\154\040\103\101\061\053\060\051\006\011\052\206\110\206
+\367\015\001\011\001\026\034\160\145\162\163\157\156\141\154\055
+\146\162\145\145\155\141\151\154\100\164\150\141\167\164\145\056
+\143\157\155\060\036\027\015\071\066\060\061\060\061\060\060\060
+\060\060\060\132\027\015\062\060\061\062\063\061\062\063\065\071
+\065\071\132\060\201\321\061\013\060\011\006\003\125\004\006\023
+\002\132\101\061\025\060\023\006\003\125\004\010\023\014\127\145
+\163\164\145\162\156\040\103\141\160\145\061\022\060\020\006\003
+\125\004\007\023\011\103\141\160\145\040\124\157\167\156\061\032
+\060\030\006\003\125\004\012\023\021\124\150\141\167\164\145\040
+\103\157\156\163\165\154\164\151\156\147\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\044\060\042\006\003\125\004\003\023\033\124
+\150\141\167\164\145\040\120\145\162\163\157\156\141\154\040\106
+\162\145\145\155\141\151\154\040\103\101\061\053\060\051\006\011
+\052\206\110\206\367\015\001\011\001\026\034\160\145\162\163\157
+\156\141\154\055\146\162\145\145\155\141\151\154\100\164\150\141
+\167\164\145\056\143\157\155\060\201\237\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211
+\002\201\201\000\324\151\327\324\260\224\144\133\161\351\107\330
+\014\121\266\352\162\221\260\204\136\175\055\015\217\173\022\337
+\205\045\165\050\164\072\102\054\143\047\237\225\173\113\357\176
+\031\207\035\206\352\243\335\271\316\226\144\032\302\024\156\104
+\254\174\346\217\350\115\017\161\037\100\070\246\000\243\207\170
+\366\371\224\206\136\255\352\300\136\166\353\331\024\243\135\156
+\172\174\014\245\113\125\177\006\031\051\177\236\232\046\325\152
+\273\070\044\010\152\230\307\261\332\243\230\221\375\171\333\345
+\132\304\034\271\002\003\001\000\001\243\023\060\021\060\017\006
+\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\015
+\006\011\052\206\110\206\367\015\001\001\004\005\000\003\201\201
+\000\307\354\222\176\116\370\365\226\245\147\142\052\244\360\115
+\021\140\320\157\215\140\130\141\254\046\273\122\065\134\010\317
+\060\373\250\112\226\212\037\142\102\043\214\027\017\364\272\144
+\234\027\254\107\051\337\235\230\136\322\154\140\161\134\242\254
+\334\171\343\347\156\000\107\037\265\015\050\350\002\235\344\232
+\375\023\364\246\331\174\261\370\334\137\043\046\011\221\200\163
+\320\024\033\336\103\251\203\045\362\346\234\057\025\312\376\246
+\253\212\007\165\213\014\335\121\204\153\344\370\321\316\167\242
+\201
+END
+
+# Trust for Certificate "Thawte Personal Freemail CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Personal Freemail CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\040\231\000\266\075\225\127\050\024\014\321\066\042\330\306\207
+\244\353\000\205
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\036\164\303\206\074\014\065\305\076\302\177\357\074\252\074\331
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\321\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\032\060\030\006
+\003\125\004\012\023\021\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\044\060\042\006\003\125\004\003\023\033\124\150\141\167
+\164\145\040\120\145\162\163\157\156\141\154\040\106\162\145\145
+\155\141\151\154\040\103\101\061\053\060\051\006\011\052\206\110
+\206\367\015\001\011\001\026\034\160\145\162\163\157\156\141\154
+\055\146\162\145\145\155\141\151\154\100\164\150\141\167\164\145
+\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Thawte Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\304\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\031\060\027\006\003\125\004\003\023\020\124
+\150\141\167\164\145\040\123\145\162\166\145\162\040\103\101\061
+\046\060\044\006\011\052\206\110\206\367\015\001\011\001\026\027
+\163\145\162\166\145\162\055\143\145\162\164\163\100\164\150\141
+\167\164\145\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\304\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\031\060\027\006\003\125\004\003\023\020\124
+\150\141\167\164\145\040\123\145\162\166\145\162\040\103\101\061
+\046\060\044\006\011\052\206\110\206\367\015\001\011\001\026\027
+\163\145\162\166\145\162\055\143\145\162\164\163\100\164\150\141
+\167\164\145\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\023\060\202\002\174\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\304\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007\023
+\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006\003
+\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156\163
+\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003\125
+\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151\163
+\151\157\156\061\031\060\027\006\003\125\004\003\023\020\124\150
+\141\167\164\145\040\123\145\162\166\145\162\040\103\101\061\046
+\060\044\006\011\052\206\110\206\367\015\001\011\001\026\027\163
+\145\162\166\145\162\055\143\145\162\164\163\100\164\150\141\167
+\164\145\056\143\157\155\060\036\027\015\071\066\060\070\060\061
+\060\060\060\060\060\060\132\027\015\062\060\061\062\063\061\062
+\063\065\071\065\071\132\060\201\304\061\013\060\011\006\003\125
+\004\006\023\002\132\101\061\025\060\023\006\003\125\004\010\023
+\014\127\145\163\164\145\162\156\040\103\141\160\145\061\022\060
+\020\006\003\125\004\007\023\011\103\141\160\145\040\124\157\167
+\156\061\035\060\033\006\003\125\004\012\023\024\124\150\141\167
+\164\145\040\103\157\156\163\165\154\164\151\156\147\040\143\143
+\061\050\060\046\006\003\125\004\013\023\037\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143\145
+\163\040\104\151\166\151\163\151\157\156\061\031\060\027\006\003
+\125\004\003\023\020\124\150\141\167\164\145\040\123\145\162\166
+\145\162\040\103\101\061\046\060\044\006\011\052\206\110\206\367
+\015\001\011\001\026\027\163\145\162\166\145\162\055\143\145\162
+\164\163\100\164\150\141\167\164\145\056\143\157\155\060\201\237
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\201\215\000\060\201\211\002\201\201\000\323\244\120\156\310\377
+\126\153\346\317\135\266\352\014\150\165\107\242\252\302\332\204
+\045\374\250\364\107\121\332\205\265\040\164\224\206\036\017\165
+\311\351\010\141\365\006\155\060\156\025\031\002\351\122\300\142
+\333\115\231\236\342\152\014\104\070\315\376\276\343\144\011\160
+\305\376\261\153\051\266\057\111\310\073\324\047\004\045\020\227
+\057\347\220\155\300\050\102\231\327\114\103\336\303\365\041\155
+\124\237\135\303\130\341\300\344\331\133\260\270\334\264\173\337
+\066\072\302\265\146\042\022\326\207\015\002\003\001\000\001\243
+\023\060\021\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\015\006\011\052\206\110\206\367\015\001\001
+\004\005\000\003\201\201\000\007\372\114\151\134\373\225\314\106
+\356\205\203\115\041\060\216\312\331\250\157\111\032\346\332\121
+\343\140\160\154\204\141\021\241\032\310\110\076\131\103\175\117
+\225\075\241\213\267\013\142\230\172\165\212\335\210\116\116\236
+\100\333\250\314\062\164\271\157\015\306\343\263\104\013\331\212
+\157\232\051\233\231\030\050\073\321\343\100\050\232\132\074\325
+\265\347\040\033\213\312\244\253\215\351\121\331\342\114\054\131
+\251\332\271\262\165\033\366\102\362\357\307\362\030\371\211\274
+\243\377\212\043\056\160\107
+END
+
+# Trust for Certificate "Thawte Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\043\345\224\224\121\225\362\101\110\003\264\325\144\322\243\243
+\365\330\213\214
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\305\160\304\242\355\123\170\014\310\020\123\201\144\313\320\035
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\304\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\031\060\027\006\003\125\004\003\023\020\124
+\150\141\167\164\145\040\123\145\162\166\145\162\040\103\101\061
+\046\060\044\006\011\052\206\110\206\367\015\001\011\001\026\027
+\163\145\162\166\145\162\055\143\145\162\164\163\100\164\150\141
+\167\164\145\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Thawte Premium Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Premium Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\316\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\041\060\037\006\003\125\004\003\023\030\124
+\150\141\167\164\145\040\120\162\145\155\151\165\155\040\123\145
+\162\166\145\162\040\103\101\061\050\060\046\006\011\052\206\110
+\206\367\015\001\011\001\026\031\160\162\145\155\151\165\155\055
+\163\145\162\166\145\162\100\164\150\141\167\164\145\056\143\157
+\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\316\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\041\060\037\006\003\125\004\003\023\030\124
+\150\141\167\164\145\040\120\162\145\155\151\165\155\040\123\145
+\162\166\145\162\040\103\101\061\050\060\046\006\011\052\206\110
+\206\367\015\001\011\001\026\031\160\162\145\155\151\165\155\055
+\163\145\162\166\145\162\100\164\150\141\167\164\145\056\143\157
+\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\047\060\202\002\220\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\316\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007\023
+\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006\003
+\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156\163
+\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003\125
+\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151\163
+\151\157\156\061\041\060\037\006\003\125\004\003\023\030\124\150
+\141\167\164\145\040\120\162\145\155\151\165\155\040\123\145\162
+\166\145\162\040\103\101\061\050\060\046\006\011\052\206\110\206
+\367\015\001\011\001\026\031\160\162\145\155\151\165\155\055\163
+\145\162\166\145\162\100\164\150\141\167\164\145\056\143\157\155
+\060\036\027\015\071\066\060\070\060\061\060\060\060\060\060\060
+\132\027\015\062\060\061\062\063\061\062\063\065\071\065\071\132
+\060\201\316\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\041\060\037\006\003\125\004\003\023\030\124
+\150\141\167\164\145\040\120\162\145\155\151\165\155\040\123\145
+\162\166\145\162\040\103\101\061\050\060\046\006\011\052\206\110
+\206\367\015\001\011\001\026\031\160\162\145\155\151\165\155\055
+\163\145\162\166\145\162\100\164\150\141\167\164\145\056\143\157
+\155\060\201\237\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\201\215\000\060\201\211\002\201\201\000\322\066
+\066\152\213\327\302\133\236\332\201\101\142\217\070\356\111\004
+\125\326\320\357\034\033\225\026\107\357\030\110\065\072\122\364
+\053\152\006\217\073\057\352\126\343\257\206\215\236\027\367\236
+\264\145\165\002\115\357\313\011\242\041\121\330\233\320\147\320
+\272\015\222\006\024\163\324\223\313\227\052\000\234\134\116\014
+\274\372\025\122\374\362\104\156\332\021\112\156\010\237\057\055
+\343\371\252\072\206\163\266\106\123\130\310\211\005\275\203\021
+\270\163\077\252\007\215\364\102\115\347\100\235\034\067\002\003
+\001\000\001\243\023\060\021\060\017\006\003\125\035\023\001\001
+\377\004\005\060\003\001\001\377\060\015\006\011\052\206\110\206
+\367\015\001\001\004\005\000\003\201\201\000\046\110\054\026\302
+\130\372\350\026\164\014\252\252\137\124\077\362\327\311\170\140
+\136\136\156\067\143\042\167\066\176\262\027\304\064\271\365\010
+\205\374\311\001\070\377\115\276\362\026\102\103\347\273\132\106
+\373\301\306\021\037\361\112\260\050\106\311\303\304\102\175\274
+\372\253\131\156\325\267\121\210\021\343\244\205\031\153\202\114
+\244\014\022\255\351\244\256\077\361\303\111\145\232\214\305\310
+\076\045\267\224\231\273\222\062\161\007\360\206\136\355\120\047
+\246\015\246\043\371\273\313\246\007\024\102
+END
+
+# Trust for Certificate "Thawte Premium Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Premium Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\142\177\215\170\047\145\143\231\322\175\177\220\104\311\376\263
+\363\076\372\232
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\006\237\151\171\026\146\220\002\033\214\214\242\303\007\157\072
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\316\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\022\060\020\006\003\125\004\007
+\023\011\103\141\160\145\040\124\157\167\156\061\035\060\033\006
+\003\125\004\012\023\024\124\150\141\167\164\145\040\103\157\156
+\163\165\154\164\151\156\147\040\143\143\061\050\060\046\006\003
+\125\004\013\023\037\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\123\145\162\166\151\143\145\163\040\104\151\166\151
+\163\151\157\156\061\041\060\037\006\003\125\004\003\023\030\124
+\150\141\167\164\145\040\120\162\145\155\151\165\155\040\123\145
+\162\166\145\162\040\103\101\061\050\060\046\006\011\052\206\110
+\206\367\015\001\011\001\026\031\160\162\145\155\151\165\155\055
+\163\145\162\166\145\162\100\164\150\141\167\164\145\056\143\157
+\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Equifax Secure CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\020\060\016\006\003\125\004\012\023\007\105\161\165\151\146\141
+\170\061\055\060\053\006\003\125\004\013\023\044\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\040\103\145\162\164\151
+\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\020\060\016\006\003\125\004\012\023\007\105\161\165\151\146\141
+\170\061\055\060\053\006\003\125\004\013\023\044\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\040\103\145\162\164\151
+\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\065\336\364\317
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\040\060\202\002\211\240\003\002\001\002\002\004\065
+\336\364\317\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\020\060\016\006\003\125\004\012\023\007\105\161\165\151
+\146\141\170\061\055\060\053\006\003\125\004\013\023\044\105\161
+\165\151\146\141\170\040\123\145\143\165\162\145\040\103\145\162
+\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151
+\164\171\060\036\027\015\071\070\060\070\062\062\061\066\064\061
+\065\061\132\027\015\061\070\060\070\062\062\061\066\064\061\065
+\061\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\020\060\016\006\003\125\004\012\023\007\105\161\165\151
+\146\141\170\061\055\060\053\006\003\125\004\013\023\044\105\161
+\165\151\146\141\170\040\123\145\143\165\162\145\040\103\145\162
+\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151
+\164\171\060\201\237\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\201\215\000\060\201\211\002\201\201\000\301
+\135\261\130\147\010\142\356\240\232\055\037\010\155\221\024\150
+\230\012\036\376\332\004\157\023\204\142\041\303\321\174\316\237
+\005\340\270\001\360\116\064\354\342\212\225\004\144\254\361\153
+\123\137\005\263\313\147\200\277\102\002\216\376\335\001\011\354
+\341\000\024\117\374\373\360\014\335\103\272\133\053\341\037\200
+\160\231\025\127\223\026\361\017\227\152\267\302\150\043\034\314
+\115\131\060\254\121\036\073\257\053\326\356\143\105\173\305\331
+\137\120\322\343\120\017\072\210\347\277\024\375\340\307\271\002
+\003\001\000\001\243\202\001\011\060\202\001\005\060\160\006\003
+\125\035\037\004\151\060\147\060\145\240\143\240\141\244\137\060
+\135\061\013\060\011\006\003\125\004\006\023\002\125\123\061\020
+\060\016\006\003\125\004\012\023\007\105\161\165\151\146\141\170
+\061\055\060\053\006\003\125\004\013\023\044\105\161\165\151\146
+\141\170\040\123\145\143\165\162\145\040\103\145\162\164\151\146
+\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171\061
+\015\060\013\006\003\125\004\003\023\004\103\122\114\061\060\032
+\006\003\125\035\020\004\023\060\021\201\017\062\060\061\070\060
+\070\062\062\061\066\064\061\065\061\132\060\013\006\003\125\035
+\017\004\004\003\002\001\006\060\037\006\003\125\035\043\004\030
+\060\026\200\024\110\346\150\371\053\322\262\225\327\107\330\043
+\040\020\117\063\230\220\237\324\060\035\006\003\125\035\016\004
+\026\004\024\110\346\150\371\053\322\262\225\327\107\330\043\040
+\020\117\063\230\220\237\324\060\014\006\003\125\035\023\004\005
+\060\003\001\001\377\060\032\006\011\052\206\110\206\366\175\007
+\101\000\004\015\060\013\033\005\126\063\056\060\143\003\002\006
+\300\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\201\201\000\130\316\051\352\374\367\336\265\316\002\271\027
+\265\205\321\271\343\340\225\314\045\061\015\000\246\222\156\177
+\266\222\143\236\120\225\321\232\157\344\021\336\143\205\156\230
+\356\250\377\132\310\323\125\262\146\161\127\336\300\041\353\075
+\052\247\043\111\001\004\206\102\173\374\356\177\242\026\122\265
+\147\147\323\100\333\073\046\130\262\050\167\075\256\024\167\141
+\326\372\052\146\047\240\015\372\247\163\134\352\160\361\224\041
+\145\104\137\372\374\357\051\150\251\242\207\171\357\171\357\117
+\254\007\167\070
+END
+
+# Trust for Certificate "Equifax Secure CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\322\062\011\255\043\323\024\043\041\164\344\015\177\235\142\023
+\227\206\143\072
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\147\313\235\300\023\044\212\202\233\262\027\036\321\033\354\324
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\020\060\016\006\003\125\004\012\023\007\105\161\165\151\146\141
+\170\061\055\060\053\006\003\125\004\013\023\044\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\040\103\145\162\164\151
+\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\065\336\364\317
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ABAecom (sub., Am. Bankers Assn.) Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ABAecom (sub., Am. Bankers Assn.) Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\211\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\104\103\061\023\060
+\021\006\003\125\004\007\023\012\127\141\163\150\151\156\147\164
+\157\156\061\027\060\025\006\003\125\004\012\023\016\101\102\101
+\056\105\103\117\115\054\040\111\116\103\056\061\031\060\027\006
+\003\125\004\003\023\020\101\102\101\056\105\103\117\115\040\122
+\157\157\164\040\103\101\061\044\060\042\006\011\052\206\110\206
+\367\015\001\011\001\026\025\141\144\155\151\156\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\211\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\104\103\061\023\060
+\021\006\003\125\004\007\023\012\127\141\163\150\151\156\147\164
+\157\156\061\027\060\025\006\003\125\004\012\023\016\101\102\101
+\056\105\103\117\115\054\040\111\116\103\056\061\031\060\027\006
+\003\125\004\003\023\020\101\102\101\056\105\103\117\115\040\122
+\157\157\164\040\103\101\061\044\060\042\006\011\052\206\110\206
+\367\015\001\011\001\026\025\141\144\155\151\156\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\220\000\000\106\122\000\000\000\001\000
+\000\000\004
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\265\060\202\002\235\240\003\002\001\002\002\021\000
+\320\036\100\220\000\000\106\122\000\000\000\001\000\000\000\004
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\211\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\013\060\011\006\003\125\004\010\023\002\104\103\061\023\060\021
+\006\003\125\004\007\023\012\127\141\163\150\151\156\147\164\157
+\156\061\027\060\025\006\003\125\004\012\023\016\101\102\101\056
+\105\103\117\115\054\040\111\116\103\056\061\031\060\027\006\003
+\125\004\003\023\020\101\102\101\056\105\103\117\115\040\122\157
+\157\164\040\103\101\061\044\060\042\006\011\052\206\110\206\367
+\015\001\011\001\026\025\141\144\155\151\156\100\144\151\147\163
+\151\147\164\162\165\163\164\056\143\157\155\060\036\027\015\071
+\071\060\067\061\062\061\067\063\063\065\063\132\027\015\060\071
+\060\067\060\071\061\067\063\063\065\063\132\060\201\211\061\013
+\060\011\006\003\125\004\006\023\002\125\123\061\013\060\011\006
+\003\125\004\010\023\002\104\103\061\023\060\021\006\003\125\004
+\007\023\012\127\141\163\150\151\156\147\164\157\156\061\027\060
+\025\006\003\125\004\012\023\016\101\102\101\056\105\103\117\115
+\054\040\111\116\103\056\061\031\060\027\006\003\125\004\003\023
+\020\101\102\101\056\105\103\117\115\040\122\157\157\164\040\103
+\101\061\044\060\042\006\011\052\206\110\206\367\015\001\011\001
+\026\025\141\144\155\151\156\100\144\151\147\163\151\147\164\162
+\165\163\164\056\143\157\155\060\202\001\042\060\015\006\011\052
+\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060
+\202\001\012\002\202\001\001\000\261\323\021\340\171\125\103\007
+\010\114\313\005\102\000\342\015\203\106\075\344\223\272\266\006
+\323\015\131\275\076\301\316\103\147\001\212\041\250\357\274\314
+\320\242\314\260\125\226\123\204\146\005\000\332\104\111\200\330
+\124\012\245\045\206\224\355\143\126\377\160\154\243\241\031\322
+\170\276\150\052\104\136\057\317\314\030\136\107\274\072\261\106
+\075\036\360\271\054\064\137\214\174\114\010\051\235\100\125\353
+\074\175\203\336\265\360\367\212\203\016\241\114\264\072\245\263
+\137\132\042\227\354\031\233\301\005\150\375\346\267\251\221\224
+\054\344\170\110\044\032\045\031\072\353\225\234\071\012\212\317
+\102\262\360\034\325\137\373\153\355\150\126\173\071\054\162\070
+\260\356\223\251\323\173\167\074\353\161\003\251\070\112\026\154
+\211\052\312\332\063\023\171\302\125\214\355\234\273\362\313\133
+\020\370\056\141\065\306\051\114\052\320\052\143\321\145\131\264
+\370\315\371\364\000\204\266\127\102\205\235\062\250\371\052\124
+\373\377\170\101\274\275\161\050\364\273\220\274\377\226\064\004
+\343\105\236\241\106\050\100\201\002\003\001\000\001\243\026\060
+\024\060\022\006\003\125\035\023\001\001\377\004\010\060\006\001
+\001\377\002\001\010\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\004\157\045\206\344\346\226
+\047\264\331\102\300\320\311\000\261\177\124\076\207\262\155\044
+\251\057\012\176\375\244\104\260\370\124\007\275\033\235\235\312
+\173\120\044\173\021\133\111\243\246\277\022\164\325\211\267\267
+\057\230\144\045\024\267\141\351\177\140\200\153\323\144\350\253
+\275\032\326\121\372\300\264\135\167\032\177\144\010\136\171\306
+\005\114\361\172\335\115\175\316\346\110\173\124\322\141\222\201
+\326\033\326\000\360\016\236\050\167\240\115\210\307\042\166\031
+\303\307\236\033\246\167\170\370\137\233\126\321\360\362\027\254
+\216\235\131\346\037\376\127\266\331\136\341\135\237\105\354\141
+\150\031\101\341\262\040\046\376\132\060\166\044\377\100\162\074
+\171\237\174\042\110\253\106\315\333\263\206\054\217\277\005\101
+\323\301\343\024\343\101\027\046\320\174\247\161\114\031\350\112
+\017\162\130\061\175\354\140\172\243\042\050\275\031\044\140\077
+\073\207\163\300\153\344\313\256\267\253\045\103\262\125\055\173
+\253\006\016\165\135\064\345\135\163\155\236\262\165\100\245\131
+\311\117\061\161\210\331\210\177\124
+END
+
+# Trust for Certificate "ABAecom (sub., Am. Bankers Assn.) Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ABAecom (sub., Am. Bankers Assn.) Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\172\164\101\017\260\315\134\227\052\066\113\161\277\003\035\210
+\246\121\016\236
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\101\270\007\367\250\321\011\356\264\232\216\160\115\374\033\170
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\211\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\104\103\061\023\060
+\021\006\003\125\004\007\023\012\127\141\163\150\151\156\147\164
+\157\156\061\027\060\025\006\003\125\004\012\023\016\101\102\101
+\056\105\103\117\115\054\040\111\116\103\056\061\031\060\027\006
+\003\125\004\003\023\020\101\102\101\056\105\103\117\115\040\122
+\157\157\164\040\103\101\061\044\060\042\006\011\052\206\110\206
+\367\015\001\011\001\026\025\141\144\155\151\156\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\220\000\000\106\122\000\000\000\001\000
+\000\000\004
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Digital Signature Trust Co. Global CA 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\066\160\025\226
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\051\060\202\002\222\240\003\002\001\002\002\004\066
+\160\025\226\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\106\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\044\060\042\006\003\125\004\012\023\033\104\151\147\151
+\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124\162
+\165\163\164\040\103\157\056\061\021\060\017\006\003\125\004\013
+\023\010\104\123\124\103\101\040\105\061\060\036\027\015\071\070
+\061\062\061\060\061\070\061\060\062\063\132\027\015\061\070\061
+\062\061\060\061\070\064\060\062\063\132\060\106\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\044\060\042\006\003\125
+\004\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156
+\141\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061
+\021\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040
+\105\061\060\201\235\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\201\213\000\060\201\207\002\201\201\000\240
+\154\201\251\317\064\036\044\335\376\206\050\314\336\203\057\371
+\136\324\102\322\350\164\140\146\023\230\006\034\251\121\022\151
+\157\061\125\271\111\162\000\010\176\323\245\142\104\067\044\231
+\217\331\203\110\217\231\155\225\023\273\103\073\056\111\116\210
+\067\301\273\130\177\376\341\275\370\273\141\315\363\107\300\231
+\246\361\363\221\350\170\174\000\313\141\311\104\047\161\151\125
+\112\176\111\115\355\242\243\276\002\114\000\312\002\250\356\001
+\002\061\144\017\122\055\023\164\166\066\265\172\264\055\161\002
+\001\003\243\202\001\044\060\202\001\040\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\150\006
+\003\125\035\037\004\141\060\137\060\135\240\133\240\131\244\127
+\060\125\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\061\061\015\060\013\006\003\125\004
+\003\023\004\103\122\114\061\060\053\006\003\125\035\020\004\044
+\060\042\200\017\061\071\071\070\061\062\061\060\061\070\061\060
+\062\063\132\201\017\062\060\061\070\061\062\061\060\061\070\061
+\060\062\063\132\060\013\006\003\125\035\017\004\004\003\002\001
+\006\060\037\006\003\125\035\043\004\030\060\026\200\024\152\171
+\176\221\151\106\030\023\012\002\167\245\131\133\140\230\045\016
+\242\370\060\035\006\003\125\035\016\004\026\004\024\152\171\176
+\221\151\106\030\023\012\002\167\245\131\133\140\230\045\016\242
+\370\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060
+\031\006\011\052\206\110\206\366\175\007\101\000\004\014\060\012
+\033\004\126\064\056\060\003\002\004\220\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\201\201\000\042\022\330
+\172\035\334\201\006\266\011\145\262\207\310\037\136\264\057\351
+\304\036\362\074\301\273\004\220\021\112\203\116\176\223\271\115
+\102\307\222\046\240\134\064\232\070\162\370\375\153\026\076\040
+\356\202\213\061\052\223\066\205\043\210\212\074\003\150\323\311
+\011\017\115\374\154\244\332\050\162\223\016\211\200\260\175\376
+\200\157\145\155\030\063\227\213\302\153\211\356\140\075\310\233
+\357\177\053\062\142\163\223\313\074\343\173\342\166\170\105\274
+\241\223\004\273\206\237\072\133\103\172\303\212\145
+END
+
+# Trust for Certificate "Digital Signature Trust Co. Global CA 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\201\226\213\072\357\034\334\160\365\372\062\151\302\222\243\143
+\133\321\043\323
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\045\172\272\203\056\266\242\013\332\376\365\002\017\010\327\255
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\066\160\025\226
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Digital Signature Trust Co. Global CA 3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\066\156\323\316
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\051\060\202\002\222\240\003\002\001\002\002\004\066
+\156\323\316\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\106\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\044\060\042\006\003\125\004\012\023\033\104\151\147\151
+\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124\162
+\165\163\164\040\103\157\056\061\021\060\017\006\003\125\004\013
+\023\010\104\123\124\103\101\040\105\062\060\036\027\015\071\070
+\061\062\060\071\061\071\061\067\062\066\132\027\015\061\070\061
+\062\060\071\061\071\064\067\062\066\132\060\106\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\044\060\042\006\003\125
+\004\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156
+\141\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061
+\021\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040
+\105\062\060\201\235\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\201\213\000\060\201\207\002\201\201\000\277
+\223\217\027\222\357\063\023\030\353\020\177\116\026\277\377\006
+\217\052\205\274\136\371\044\246\044\210\266\003\267\301\303\137
+\003\133\321\157\256\176\102\352\146\043\270\143\203\126\373\050
+\055\341\070\213\264\356\250\001\341\316\034\266\210\052\042\106
+\205\373\237\247\160\251\107\024\077\316\336\145\360\250\161\367
+\117\046\154\214\274\306\265\357\336\111\047\377\110\052\175\350
+\115\003\314\307\262\122\306\027\061\023\073\265\115\333\310\304
+\366\303\017\044\052\332\014\235\347\221\133\200\315\224\235\002
+\001\003\243\202\001\044\060\202\001\040\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\150\006
+\003\125\035\037\004\141\060\137\060\135\240\133\240\131\244\127
+\060\125\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\062\061\015\060\013\006\003\125\004
+\003\023\004\103\122\114\061\060\053\006\003\125\035\020\004\044
+\060\042\200\017\061\071\071\070\061\062\060\071\061\071\061\067
+\062\066\132\201\017\062\060\061\070\061\062\060\071\061\071\061
+\067\062\066\132\060\013\006\003\125\035\017\004\004\003\002\001
+\006\060\037\006\003\125\035\043\004\030\060\026\200\024\036\202
+\115\050\145\200\074\311\101\156\254\065\056\132\313\336\356\370
+\071\133\060\035\006\003\125\035\016\004\026\004\024\036\202\115
+\050\145\200\074\311\101\156\254\065\056\132\313\336\356\370\071
+\133\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060
+\031\006\011\052\206\110\206\366\175\007\101\000\004\014\060\012
+\033\004\126\064\056\060\003\002\004\220\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\201\201\000\107\215\203
+\255\142\362\333\260\236\105\042\005\271\242\326\003\016\070\162
+\347\236\374\173\346\223\266\232\245\242\224\310\064\035\221\321
+\305\327\364\012\045\017\075\170\201\236\017\261\147\304\220\114
+\143\335\136\247\342\272\237\365\367\115\245\061\173\234\051\055
+\114\376\144\076\354\266\123\376\352\233\355\202\333\164\165\113
+\007\171\156\036\330\031\203\163\336\365\076\320\265\336\347\113
+\150\175\103\056\052\040\341\176\240\170\104\236\010\365\230\371
+\307\177\033\033\326\006\040\002\130\241\303\242\003
+END
+
+# Trust for Certificate "Digital Signature Trust Co. Global CA 3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\253\110\363\063\333\004\253\271\300\162\332\133\014\301\320\127
+\360\066\233\106
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\223\302\216\021\173\324\363\003\031\275\050\165\023\112\105\112
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\106\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010
+\104\123\124\103\101\040\105\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\066\156\323\316
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Digital Signature Trust Co. Global CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\061\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\061\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\061\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\061\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\213\000\000\002\174\000\000\000\002\000
+\000\000\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\330\060\202\002\300\002\021\000\320\036\100\213\000
+\000\002\174\000\000\000\002\000\000\000\001\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\251\061\013\060
+\011\006\003\125\004\006\023\002\165\163\061\015\060\013\006\003
+\125\004\010\023\004\125\164\141\150\061\027\060\025\006\003\125
+\004\007\023\016\123\141\154\164\040\114\141\153\145\040\103\151
+\164\171\061\044\060\042\006\003\125\004\012\023\033\104\151\147
+\151\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124
+\162\165\163\164\040\103\157\056\061\021\060\017\006\003\125\004
+\013\023\010\104\123\124\103\101\040\130\061\061\026\060\024\006
+\003\125\004\003\023\015\104\123\124\040\122\157\157\164\103\101
+\040\130\061\061\041\060\037\006\011\052\206\110\206\367\015\001
+\011\001\026\022\143\141\100\144\151\147\163\151\147\164\162\165
+\163\164\056\143\157\155\060\036\027\015\071\070\061\062\060\061
+\061\070\061\070\065\065\132\027\015\060\070\061\061\062\070\061
+\070\061\070\065\065\132\060\201\251\061\013\060\011\006\003\125
+\004\006\023\002\165\163\061\015\060\013\006\003\125\004\010\023
+\004\125\164\141\150\061\027\060\025\006\003\125\004\007\023\016
+\123\141\154\164\040\114\141\153\145\040\103\151\164\171\061\044
+\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141\154
+\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163\164
+\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010\104
+\123\124\103\101\040\130\061\061\026\060\024\006\003\125\004\003
+\023\015\104\123\124\040\122\157\157\164\103\101\040\130\061\061
+\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026\022
+\143\141\100\144\151\147\163\151\147\164\162\165\163\164\056\143
+\157\155\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\322\306\046\266\347\245\075\301\304\150\325\120\157
+\123\305\157\111\023\011\270\257\054\110\215\024\152\243\027\137
+\132\371\323\056\165\057\330\050\142\321\223\057\374\115\324\253
+\207\345\010\307\231\347\222\077\165\275\353\045\264\025\301\233
+\031\075\322\104\215\327\164\040\155\067\002\217\151\223\133\212
+\304\031\235\364\262\016\374\026\154\271\261\005\222\203\321\205
+\054\140\224\076\105\125\240\331\253\010\041\346\140\350\073\164
+\362\231\120\121\150\320\003\055\261\200\276\243\330\122\260\104
+\315\103\112\160\216\130\205\225\341\116\054\326\055\101\157\326
+\204\347\310\230\104\312\107\333\054\044\245\151\046\317\153\270
+\047\142\303\364\311\172\222\043\355\023\147\202\256\105\056\105
+\345\176\162\077\205\235\224\142\020\346\074\221\241\255\167\000
+\340\025\354\363\204\200\162\172\216\156\140\227\307\044\131\020
+\064\203\133\341\245\244\151\266\127\065\034\170\131\306\323\057
+\072\163\147\356\224\312\004\023\005\142\006\160\043\263\364\174
+\356\105\331\144\013\133\111\252\244\103\316\046\304\104\022\154
+\270\335\171\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\242\067\262\077
+\151\373\327\206\171\124\111\061\225\063\053\363\321\011\024\111
+\142\140\206\245\260\021\342\120\302\035\006\127\076\055\350\063
+\144\276\233\252\255\137\033\115\324\231\225\242\213\232\311\142
+\162\265\151\352\331\130\253\065\355\025\242\103\326\266\274\007
+\171\145\144\163\175\327\171\312\173\325\132\121\306\341\123\004
+\226\215\070\317\243\027\254\071\161\153\001\303\213\123\074\143
+\351\356\171\300\344\276\222\062\144\172\263\037\227\224\142\275
+\352\262\040\025\225\373\227\362\170\057\143\066\100\070\343\106
+\017\035\335\254\225\312\347\113\220\173\261\113\251\324\305\353
+\232\332\252\325\243\224\024\106\215\055\037\363\072\326\223\072
+\366\076\171\374\350\346\260\165\355\356\075\311\160\307\135\252
+\201\113\106\045\034\307\154\025\343\225\116\017\252\062\067\224
+\012\027\044\222\023\204\130\322\143\157\053\367\346\133\142\013
+\023\027\260\015\122\114\376\376\157\134\342\221\156\035\375\244
+\142\327\150\372\216\172\117\322\010\332\223\334\360\222\021\172
+\320\334\162\223\014\163\223\142\205\150\320\364
+END
+
+# Trust for Certificate "Digital Signature Trust Co. Global CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\267\057\377\222\322\316\103\336\012\215\114\124\214\120\067\046
+\250\036\053\223
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\154\311\247\156\107\361\014\343\123\073\170\114\115\302\152\305
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\061\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\061\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\213\000\000\002\174\000\000\000\002\000
+\000\000\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Digital Signature Trust Co. Global CA 4"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 4"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\062\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\062\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\062\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\062\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\213\000\000\167\155\000\000\000\001\000
+\000\000\004
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\330\060\202\002\300\002\021\000\320\036\100\213\000
+\000\167\155\000\000\000\001\000\000\000\004\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\251\061\013\060
+\011\006\003\125\004\006\023\002\165\163\061\015\060\013\006\003
+\125\004\010\023\004\125\164\141\150\061\027\060\025\006\003\125
+\004\007\023\016\123\141\154\164\040\114\141\153\145\040\103\151
+\164\171\061\044\060\042\006\003\125\004\012\023\033\104\151\147
+\151\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124
+\162\165\163\164\040\103\157\056\061\021\060\017\006\003\125\004
+\013\023\010\104\123\124\103\101\040\130\062\061\026\060\024\006
+\003\125\004\003\023\015\104\123\124\040\122\157\157\164\103\101
+\040\130\062\061\041\060\037\006\011\052\206\110\206\367\015\001
+\011\001\026\022\143\141\100\144\151\147\163\151\147\164\162\165
+\163\164\056\143\157\155\060\036\027\015\071\070\061\061\063\060
+\062\062\064\066\061\066\132\027\015\060\070\061\061\062\067\062
+\062\064\066\061\066\132\060\201\251\061\013\060\011\006\003\125
+\004\006\023\002\165\163\061\015\060\013\006\003\125\004\010\023
+\004\125\164\141\150\061\027\060\025\006\003\125\004\007\023\016
+\123\141\154\164\040\114\141\153\145\040\103\151\164\171\061\044
+\060\042\006\003\125\004\012\023\033\104\151\147\151\164\141\154
+\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163\164
+\040\103\157\056\061\021\060\017\006\003\125\004\013\023\010\104
+\123\124\103\101\040\130\062\061\026\060\024\006\003\125\004\003
+\023\015\104\123\124\040\122\157\157\164\103\101\040\130\062\061
+\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026\022
+\143\141\100\144\151\147\163\151\147\164\162\165\163\164\056\143
+\157\155\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\334\165\360\214\300\165\226\232\300\142\037\046\367
+\304\341\232\352\340\126\163\133\231\315\001\104\250\010\266\325
+\247\332\032\004\030\071\222\112\170\243\201\302\365\167\172\120
+\264\160\377\232\253\306\307\312\156\203\117\102\230\373\046\013
+\332\334\155\326\251\231\125\122\147\351\050\003\222\334\345\260
+\005\232\017\025\371\153\131\162\126\362\372\071\374\252\150\356
+\017\037\020\203\057\374\235\372\027\226\335\202\343\346\105\175
+\300\113\200\104\037\355\054\340\204\375\221\134\222\124\151\045
+\345\142\151\334\345\356\000\122\275\063\013\255\165\002\205\247
+\144\120\055\305\031\031\060\300\046\333\311\323\375\056\231\255
+\131\265\013\115\324\101\256\205\110\103\131\334\267\250\342\242
+\336\303\217\327\270\241\142\246\150\120\122\344\317\061\247\224
+\205\332\237\106\062\027\126\345\362\353\146\075\022\377\103\333
+\230\357\167\317\313\201\215\064\261\306\120\112\046\321\344\076
+\101\120\257\154\256\042\064\056\325\153\156\203\272\171\270\166
+\145\110\332\011\051\144\143\042\271\373\107\166\205\214\206\104
+\313\011\333\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\265\066\016\135
+\341\141\050\132\021\145\300\077\203\003\171\115\276\050\246\013
+\007\002\122\205\315\370\221\320\020\154\265\152\040\133\034\220
+\331\060\074\306\110\236\212\136\144\371\241\161\167\357\004\047
+\037\007\353\344\046\367\163\164\311\104\030\032\146\323\340\103
+\257\221\073\321\313\054\330\164\124\072\034\115\312\324\150\315
+\043\174\035\020\236\105\351\366\000\156\246\315\031\377\117\054
+\051\217\127\115\304\167\222\276\340\114\011\373\135\104\206\146
+\041\250\271\062\242\126\325\351\214\203\174\131\077\304\361\013
+\347\235\354\236\275\234\030\016\076\302\071\171\050\267\003\015
+\010\313\306\347\331\001\067\120\020\354\314\141\026\100\324\257
+\061\164\173\374\077\061\247\320\107\163\063\071\033\314\116\152
+\327\111\203\021\006\376\353\202\130\063\062\114\360\126\254\036
+\234\057\126\232\173\301\112\034\245\375\125\066\316\374\226\115
+\364\260\360\354\267\154\202\355\057\061\231\102\114\251\262\015
+\270\025\135\361\337\272\311\265\112\324\144\230\263\046\251\060
+\310\375\246\354\253\226\041\255\177\302\170\266
+END
+
+# Trust for Certificate "Digital Signature Trust Co. Global CA 4"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Digital Signature Trust Co. Global CA 4"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\147\353\063\173\150\114\353\016\302\260\166\012\264\210\047\214
+\335\225\227\335
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\315\073\075\142\133\011\270\011\066\207\236\022\057\161\144\272
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\165\163
+\061\015\060\013\006\003\125\004\010\023\004\125\164\141\150\061
+\027\060\025\006\003\125\004\007\023\016\123\141\154\164\040\114
+\141\153\145\040\103\151\164\171\061\044\060\042\006\003\125\004
+\012\023\033\104\151\147\151\164\141\154\040\123\151\147\156\141
+\164\165\162\145\040\124\162\165\163\164\040\103\157\056\061\021
+\060\017\006\003\125\004\013\023\010\104\123\124\103\101\040\130
+\062\061\026\060\024\006\003\125\004\003\023\015\104\123\124\040
+\122\157\157\164\103\101\040\130\062\061\041\060\037\006\011\052
+\206\110\206\367\015\001\011\001\026\022\143\141\100\144\151\147
+\163\151\147\164\162\165\163\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\320\036\100\213\000\000\167\155\000\000\000\001\000
+\000\000\004
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Verisign Class 1 Public Primary Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\061\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\061\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\315\272\177\126\360\337\344\274\124\376\042\254\263
+\162\252\125
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\075\060\202\001\246\002\021\000\315\272\177\126\360
+\337\344\274\124\376\042\254\263\162\252\125\060\015\006\011\052
+\206\110\206\367\015\001\001\002\005\000\060\137\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\067\060\065\006\003\125\004\013\023\056\103\154\141
+\163\163\040\061\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\060\036\027\015\071
+\066\060\061\062\071\060\060\060\060\060\060\132\027\015\062\070
+\060\070\060\061\062\063\065\071\065\071\132\060\137\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003
+\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\061\067\060\065\006\003\125\004\013\023\056\103\154
+\141\163\163\040\061\040\120\165\142\154\151\143\040\120\162\151
+\155\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\060\201\237\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201
+\215\000\060\201\211\002\201\201\000\345\031\277\155\243\126\141
+\055\231\110\161\366\147\336\271\215\353\267\236\206\200\012\221
+\016\372\070\045\257\106\210\202\345\163\250\240\233\044\135\015
+\037\314\145\156\014\260\320\126\204\030\207\232\006\233\020\241
+\163\337\264\130\071\153\156\301\366\025\325\250\250\077\252\022
+\006\215\061\254\177\260\064\327\217\064\147\210\011\315\024\021
+\342\116\105\126\151\037\170\002\200\332\334\107\221\051\273\066
+\311\143\134\305\340\327\055\207\173\241\267\062\260\173\060\272
+\052\057\061\252\356\243\147\332\333\002\003\001\000\001\060\015
+\006\011\052\206\110\206\367\015\001\001\002\005\000\003\201\201
+\000\114\077\270\213\306\150\337\356\103\063\016\135\351\246\313
+\007\204\115\172\063\377\222\033\364\066\255\330\225\042\066\150
+\021\154\174\102\314\363\234\056\304\007\077\024\260\017\117\377
+\220\222\166\371\342\274\112\351\217\315\240\200\012\367\305\051
+\361\202\042\135\270\261\335\201\043\243\173\045\025\106\060\171
+\026\370\352\005\113\224\177\035\302\034\310\343\267\364\020\100
+\074\023\303\137\037\123\350\110\344\206\264\173\241\065\260\173
+\045\272\270\323\216\253\077\070\235\000\064\000\230\363\321\161
+\224
+END
+
+# Trust for Certificate "Verisign Class 1 Public Primary Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\220\256\242\151\205\377\024\200\114\103\111\122\354\351\140\204
+\167\257\125\157
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\227\140\350\127\137\323\120\107\345\103\014\224\066\212\260\142
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\061\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\315\272\177\126\360\337\344\274\124\376\042\254\263
+\162\252\125
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 2 Public Primary Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\062\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\062\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\055\033\374\112\027\215\243\221\353\347\377\365\213\105
+\276\013
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\074\060\202\001\245\002\020\055\033\374\112\027\215
+\243\221\353\347\377\365\213\105\276\013\060\015\006\011\052\206
+\110\206\367\015\001\001\002\005\000\060\137\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125\004
+\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156\143
+\056\061\067\060\065\006\003\125\004\013\023\056\103\154\141\163
+\163\040\062\040\120\165\142\154\151\143\040\120\162\151\155\141
+\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\060\036\027\015\071\066
+\060\061\062\071\060\060\060\060\060\060\132\027\015\062\070\060
+\070\060\061\062\063\065\071\065\071\132\060\137\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\067\060\065\006\003\125\004\013\023\056\103\154\141
+\163\163\040\062\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\266\132\213\243\015\152\043\203
+\200\153\317\071\207\364\041\023\063\006\114\045\242\355\125\022
+\227\305\247\200\271\372\203\301\040\240\372\057\025\015\174\241
+\140\153\176\171\054\372\006\017\072\256\366\033\157\261\322\377
+\057\050\122\137\203\175\113\304\172\267\370\146\037\200\124\374
+\267\302\216\131\112\024\127\106\321\232\223\276\101\221\003\273
+\025\200\223\134\353\347\314\010\154\077\076\263\112\374\377\113
+\154\043\325\120\202\046\104\031\216\043\303\161\352\031\044\107
+\004\236\165\277\310\246\000\037\002\003\001\000\001\060\015\006
+\011\052\206\110\206\367\015\001\001\002\005\000\003\201\201\000
+\212\033\053\372\071\301\164\327\136\330\031\144\242\130\112\055
+\067\340\063\107\017\254\355\367\252\333\036\344\213\006\134\140
+\047\312\105\122\316\026\357\077\006\144\347\224\150\174\140\063
+\025\021\151\257\235\142\215\243\003\124\153\246\276\345\356\005
+\030\140\004\277\102\200\375\320\250\250\036\001\073\367\243\134
+\257\243\334\346\046\200\043\074\270\104\164\367\012\256\111\213
+\141\170\314\044\277\210\212\247\016\352\163\031\101\375\115\003
+\360\210\321\345\170\215\245\052\117\366\227\015\027\167\312\330
+END
+
+# Trust for Certificate "Verisign Class 2 Public Primary Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\147\202\252\340\355\356\342\032\130\071\323\300\315\024\150\012
+\117\140\024\052
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\263\234\045\261\303\056\062\123\200\025\060\235\115\002\167\076
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\062\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\055\033\374\112\027\215\243\221\353\347\377\365\213\105
+\276\013
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 3 Public Primary Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\063\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\063\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\160\272\344\035\020\331\051\064\266\070\312\173\003\314
+\272\277
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\074\060\202\001\245\002\020\160\272\344\035\020\331
+\051\064\266\070\312\173\003\314\272\277\060\015\006\011\052\206
+\110\206\367\015\001\001\002\005\000\060\137\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125\004
+\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156\143
+\056\061\067\060\065\006\003\125\004\013\023\056\103\154\141\163
+\163\040\063\040\120\165\142\154\151\143\040\120\162\151\155\141
+\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\060\036\027\015\071\066
+\060\061\062\071\060\060\060\060\060\060\132\027\015\062\070\060
+\070\060\061\062\063\065\071\065\071\132\060\137\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\067\060\065\006\003\125\004\013\023\056\103\154\141
+\163\163\040\063\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\311\134\131\236\362\033\212\001
+\024\264\020\337\004\100\333\343\127\257\152\105\100\217\204\014
+\013\321\063\331\331\021\317\356\002\130\037\045\367\052\250\104
+\005\252\354\003\037\170\177\236\223\271\232\000\252\043\175\326
+\254\205\242\143\105\307\162\047\314\364\114\306\165\161\322\071
+\357\117\102\360\165\337\012\220\306\216\040\157\230\017\370\254
+\043\137\160\051\066\244\311\206\347\261\232\040\313\123\245\205
+\347\075\276\175\232\376\044\105\063\334\166\025\355\017\242\161
+\144\114\145\056\201\150\105\247\002\003\001\000\001\060\015\006
+\011\052\206\110\206\367\015\001\001\002\005\000\003\201\201\000
+\273\114\022\053\317\054\046\000\117\024\023\335\246\373\374\012
+\021\204\214\363\050\034\147\222\057\174\266\305\372\337\360\350
+\225\274\035\217\154\054\250\121\314\163\330\244\300\123\360\116
+\326\046\300\166\001\127\201\222\136\041\361\321\261\377\347\320
+\041\130\315\151\027\343\104\034\234\031\104\071\211\134\334\234
+\000\017\126\215\002\231\355\242\220\105\114\344\273\020\244\075
+\360\062\003\016\361\316\370\350\311\121\214\346\142\237\346\237
+\300\175\267\162\234\311\066\072\153\237\116\250\377\144\015\144
+END
+
+# Trust for Certificate "Verisign Class 3 Public Primary Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\164\054\061\222\346\007\344\044\353\105\111\124\053\341\273\305
+\076\141\164\342
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\020\374\143\135\366\046\076\015\363\045\276\137\171\315\147\147
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151
+\147\156\054\040\111\156\143\056\061\067\060\065\006\003\125\004
+\013\023\056\103\154\141\163\163\040\063\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\160\272\344\035\020\331\051\064\266\070\312\173\003\314
+\272\277
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Verisign Class 1 Public Primary Certification Authority - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\061\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\061\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\114\307\352\252\230\076\161\323\223\020\370\075\072\211
+\221\222
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\002\060\202\002\153\002\020\114\307\352\252\230\076
+\161\323\223\020\370\075\072\211\221\222\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\201\301\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\074\060\072\006\003\125\004\013\023\063\103\154\141
+\163\163\040\061\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107\062
+\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040\061
+\071\071\070\040\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151
+\172\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035
+\006\003\125\004\013\023\026\126\145\162\151\123\151\147\156\040
+\124\162\165\163\164\040\116\145\164\167\157\162\153\060\036\027
+\015\071\070\060\065\061\070\060\060\060\060\060\060\132\027\015
+\062\070\060\070\060\061\062\063\065\071\065\071\132\060\201\301
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060
+\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\061\074\060\072\006\003\125\004\013\023
+\063\103\154\141\163\163\040\061\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\062\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\070\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\060\201\237\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\201\215\000\060\201\211\002\201\201\000\252\320
+\272\276\026\055\270\203\324\312\322\017\274\166\061\312\224\330
+\035\223\214\126\002\274\331\157\032\157\122\066\156\165\126\012
+\125\323\337\103\207\041\021\145\212\176\217\275\041\336\153\062
+\077\033\204\064\225\005\235\101\065\353\222\353\226\335\252\131
+\077\001\123\155\231\117\355\345\342\052\132\220\301\271\304\246
+\025\317\310\105\353\246\135\216\234\076\360\144\044\166\245\315
+\253\032\157\266\330\173\121\141\156\246\177\207\310\342\267\345
+\064\334\101\210\352\011\100\276\163\222\075\153\347\165\002\003
+\001\000\001\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\201\201\000\251\117\303\015\307\147\276\054\313\331
+\250\315\055\165\347\176\025\236\073\162\353\176\353\134\055\011
+\207\326\153\155\140\174\345\256\305\220\043\014\134\112\320\257
+\261\135\363\307\266\012\333\340\025\223\015\335\003\274\307\166
+\212\265\335\117\303\233\023\165\270\001\300\346\311\133\153\245
+\270\211\334\254\244\335\162\355\116\241\367\117\274\006\323\352
+\310\144\164\173\302\225\101\234\145\163\130\361\220\232\074\152
+\261\230\311\304\207\274\317\105\155\105\342\156\042\077\376\274
+\017\061\134\350\362\331
+END
+
+# Trust for Certificate "Verisign Class 1 Public Primary Certification Authority - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\047\076\341\044\127\375\304\371\014\125\350\053\126\026\177\142
+\365\062\345\107
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\333\043\075\371\151\372\113\271\225\200\104\163\136\175\101\203
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\061\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\114\307\352\252\230\076\161\323\223\020\370\075\072\211
+\221\222
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 2 Public Primary Certification Authority - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\062\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\062\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\271\057\140\314\210\237\241\172\106\011\270\133\160
+\154\212\257
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\003\060\202\002\154\002\021\000\271\057\140\314\210
+\237\241\172\106\011\270\133\160\154\212\257\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\301\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003
+\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\061\074\060\072\006\003\125\004\013\023\063\103\154
+\141\163\163\040\062\040\120\165\142\154\151\143\040\120\162\151
+\155\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107
+\062\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040
+\061\071\071\070\040\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162
+\151\172\145\144\040\165\163\145\040\157\156\154\171\061\037\060
+\035\006\003\125\004\013\023\026\126\145\162\151\123\151\147\156
+\040\124\162\165\163\164\040\116\145\164\167\157\162\153\060\036
+\027\015\071\070\060\065\061\070\060\060\060\060\060\060\132\027
+\015\062\070\060\070\060\061\062\063\065\071\065\071\132\060\201
+\301\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027
+\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\061\074\060\072\006\003\125\004\013
+\023\063\103\154\141\163\163\040\062\040\120\165\142\154\151\143
+\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\040\055\040\107\062\061\072\060\070\006\003\125\004\013\023\061
+\050\143\051\040\061\071\071\070\040\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165
+\164\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154
+\171\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151
+\123\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157
+\162\153\060\201\237\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\201\215\000\060\201\211\002\201\201\000\247
+\210\001\041\164\054\347\032\003\360\230\341\227\074\017\041\010
+\361\234\333\227\351\232\374\302\004\006\023\276\137\122\310\314
+\036\054\022\126\054\270\001\151\054\314\231\037\255\260\226\256
+\171\004\362\023\071\301\173\230\272\010\054\350\302\204\023\054
+\252\151\351\011\364\307\251\002\244\102\302\043\117\112\330\360
+\016\242\373\061\154\311\346\157\231\047\007\365\346\364\114\170
+\236\155\353\106\206\372\271\206\311\124\362\262\304\257\324\106
+\034\132\311\025\060\377\015\154\365\055\016\155\316\177\167\002
+\003\001\000\001\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\201\201\000\162\056\371\177\321\361\161\373\304
+\236\366\305\136\121\212\100\230\270\150\370\233\034\203\330\342
+\235\275\377\355\241\346\146\352\057\011\364\312\327\352\245\053
+\225\366\044\140\206\115\104\056\203\245\304\055\240\323\256\170
+\151\157\162\332\154\256\010\360\143\222\067\346\273\304\060\027
+\255\167\314\111\065\252\317\330\217\321\276\267\030\226\107\163
+\152\124\042\064\144\055\266\026\233\131\133\264\121\131\072\263
+\013\024\364\022\337\147\240\364\255\062\144\136\261\106\162\047
+\214\022\173\305\104\264\256
+END
+
+# Trust for Certificate "Verisign Class 2 Public Primary Certification Authority - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\263\352\304\107\166\311\310\034\352\362\235\225\266\314\240\010
+\033\147\354\235
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\055\273\345\045\323\321\145\202\072\267\016\372\346\353\342\341
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\062\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\271\057\140\314\210\237\241\172\106\011\270\133\160
+\154\212\257
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 3 Public Primary Certification Authority - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\175\331\376\007\317\250\036\267\020\171\147\373\247\211
+\064\306
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\002\060\202\002\153\002\020\175\331\376\007\317\250
+\036\267\020\171\147\373\247\211\064\306\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\201\301\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\074\060\072\006\003\125\004\013\023\063\103\154\141
+\163\163\040\063\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107\062
+\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040\061
+\071\071\070\040\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151
+\172\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035
+\006\003\125\004\013\023\026\126\145\162\151\123\151\147\156\040
+\124\162\165\163\164\040\116\145\164\167\157\162\153\060\036\027
+\015\071\070\060\065\061\070\060\060\060\060\060\060\132\027\015
+\062\070\060\070\060\061\062\063\065\071\065\071\132\060\201\301
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060
+\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\061\074\060\072\006\003\125\004\013\023
+\063\103\154\141\163\163\040\063\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\062\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\070\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\060\201\237\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\201\215\000\060\201\211\002\201\201\000\314\136
+\321\021\135\134\151\320\253\323\271\152\114\231\037\131\230\060
+\216\026\205\040\106\155\107\077\324\205\040\204\341\155\263\370
+\244\355\014\361\027\017\073\371\247\371\045\327\301\317\204\143
+\362\174\143\317\242\107\362\306\133\063\216\144\100\004\150\301
+\200\271\144\034\105\167\307\330\156\365\225\051\074\120\350\064
+\327\170\037\250\272\155\103\221\225\217\105\127\136\176\305\373
+\312\244\004\353\352\227\067\124\060\157\273\001\107\062\063\315
+\334\127\233\144\151\141\370\233\035\034\211\117\134\147\002\003
+\001\000\001\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\201\201\000\121\115\315\276\134\313\230\031\234\025
+\262\001\071\170\056\115\017\147\160\160\231\306\020\132\224\244
+\123\115\124\155\053\257\015\135\100\213\144\323\327\356\336\126
+\141\222\137\246\304\035\020\141\066\323\054\047\074\350\051\011
+\271\021\144\164\314\265\163\237\034\110\251\274\141\001\356\342
+\027\246\014\343\100\010\073\016\347\353\104\163\052\232\361\151
+\222\357\161\024\303\071\254\161\247\221\011\157\344\161\006\263
+\272\131\127\046\171\000\366\370\015\242\063\060\050\324\252\130
+\240\235\235\151\221\375
+END
+
+# Trust for Certificate "Verisign Class 3 Public Primary Certification Authority - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\205\067\034\246\345\120\024\075\316\050\003\107\033\336\072\011
+\350\370\167\017
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\242\063\233\114\164\170\163\324\154\347\301\363\215\313\134\351
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\175\331\376\007\317\250\036\267\020\171\147\373\247\211
+\064\306
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 4 Public Primary Certification Authority - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 4 Public Primary Certification Authority - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\064\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\064\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\062\210\216\232\322\365\353\023\107\370\177\304\040\067
+\045\370
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\002\060\202\002\153\002\020\062\210\216\232\322\365
+\353\023\107\370\177\304\040\067\045\370\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\201\301\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\074\060\072\006\003\125\004\013\023\063\103\154\141
+\163\163\040\064\040\120\165\142\154\151\143\040\120\162\151\155
+\141\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107\062
+\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040\061
+\071\071\070\040\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151
+\172\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035
+\006\003\125\004\013\023\026\126\145\162\151\123\151\147\156\040
+\124\162\165\163\164\040\116\145\164\167\157\162\153\060\036\027
+\015\071\070\060\065\061\070\060\060\060\060\060\060\132\027\015
+\062\070\060\070\060\061\062\063\065\071\065\071\132\060\201\301
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060
+\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\061\074\060\072\006\003\125\004\013\023
+\063\103\154\141\163\163\040\064\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\062\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\070\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\060\201\237\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\201\215\000\060\201\211\002\201\201\000\272\360
+\344\317\371\304\256\205\124\271\007\127\371\217\305\177\150\021
+\370\304\027\260\104\334\343\060\163\325\052\142\052\270\320\314
+\034\355\050\133\176\275\152\334\263\221\044\312\101\142\074\374
+\002\001\277\034\026\061\224\005\227\166\156\242\255\275\141\027
+\154\116\060\206\360\121\067\052\120\307\250\142\201\334\133\112
+\252\301\240\264\156\353\057\345\127\305\261\053\100\160\333\132
+\115\241\216\037\275\003\037\330\003\324\217\114\231\161\274\342
+\202\314\130\350\230\072\206\323\206\070\363\000\051\037\002\003
+\001\000\001\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\201\201\000\205\214\022\301\247\271\120\025\172\313
+\076\254\270\103\212\334\252\335\024\272\211\201\176\001\074\043
+\161\041\210\057\202\334\143\372\002\105\254\105\131\327\052\130
+\104\133\267\237\201\073\222\150\075\342\067\044\365\173\154\217
+\166\065\226\011\250\131\235\271\316\043\253\164\326\203\375\062
+\163\047\330\151\076\103\164\366\256\305\211\232\347\123\174\351
+\173\366\113\363\301\145\203\336\215\212\234\074\210\215\071\131
+\374\252\077\042\215\241\301\146\120\201\162\114\355\042\144\117
+\117\312\200\221\266\051
+END
+
+# Trust for Certificate "Verisign Class 4 Public Primary Certification Authority - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 4 Public Primary Certification Authority - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\013\167\276\273\313\172\242\107\005\336\314\017\275\152\002\374
+\172\275\233\122
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\046\155\054\031\230\266\160\150\070\120\124\031\354\220\064\140
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\064\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\062\210\216\232\322\365\353\023\107\370\177\304\040\067
+\045\370
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "GlobalSign Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GlobalSign Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061
+\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154
+\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003
+\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031
+\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147
+\156\040\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061
+\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154
+\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003
+\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031
+\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147
+\156\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\025\113\132\303\224
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\165\060\202\002\135\240\003\002\001\002\002\013\004
+\000\000\000\000\001\025\113\132\303\224\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\127\061\013\060\011\006
+\003\125\004\006\023\002\102\105\061\031\060\027\006\003\125\004
+\012\023\020\107\154\157\142\141\154\123\151\147\156\040\156\166
+\055\163\141\061\020\060\016\006\003\125\004\013\023\007\122\157
+\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022
+\107\154\157\142\141\154\123\151\147\156\040\122\157\157\164\040
+\103\101\060\036\027\015\071\070\060\071\060\061\061\062\060\060
+\060\060\132\027\015\062\070\060\061\062\070\061\062\060\060\060
+\060\132\060\127\061\013\060\011\006\003\125\004\006\023\002\102
+\105\061\031\060\027\006\003\125\004\012\023\020\107\154\157\142
+\141\154\123\151\147\156\040\156\166\055\163\141\061\020\060\016
+\006\003\125\004\013\023\007\122\157\157\164\040\103\101\061\033
+\060\031\006\003\125\004\003\023\022\107\154\157\142\141\154\123
+\151\147\156\040\122\157\157\164\040\103\101\060\202\001\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\001\017\000\060\202\001\012\002\202\001\001\000\332\016\346\231
+\215\316\243\343\117\212\176\373\361\213\203\045\153\352\110\037
+\361\052\260\271\225\021\004\275\360\143\321\342\147\146\317\034
+\335\317\033\110\053\356\215\211\216\232\257\051\200\145\253\351
+\307\055\022\313\253\034\114\160\007\241\075\012\060\315\025\215
+\117\370\335\324\214\120\025\034\357\120\356\304\056\367\374\351
+\122\362\221\175\340\155\325\065\060\216\136\103\163\362\101\351
+\325\152\343\262\211\072\126\071\070\157\006\074\210\151\133\052
+\115\305\247\124\270\154\211\314\233\371\074\312\345\375\211\365
+\022\074\222\170\226\326\334\164\156\223\104\141\321\215\307\106
+\262\165\016\206\350\031\212\325\155\154\325\170\026\225\242\351
+\310\012\070\353\362\044\023\117\163\124\223\023\205\072\033\274
+\036\064\265\213\005\214\271\167\213\261\333\037\040\221\253\011
+\123\156\220\316\173\067\164\271\160\107\221\042\121\143\026\171
+\256\261\256\101\046\010\310\031\053\321\106\252\110\326\144\052
+\327\203\064\377\054\052\301\154\031\103\112\007\205\347\323\174
+\366\041\150\357\352\362\122\237\177\223\220\317\002\003\001\000
+\001\243\102\060\100\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004
+\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004
+\024\140\173\146\032\105\015\227\312\211\120\057\175\004\315\064
+\250\377\374\375\113\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\326\163\347\174\117\166\320
+\215\277\354\272\242\276\064\305\050\062\265\174\374\154\234\054
+\053\275\011\236\123\277\153\136\252\021\110\266\345\010\243\263
+\312\075\141\115\323\106\011\263\076\303\240\343\143\125\033\362
+\272\357\255\071\341\103\271\070\243\346\057\212\046\073\357\240
+\120\126\371\306\012\375\070\315\304\013\160\121\224\227\230\004
+\337\303\137\224\325\025\311\024\101\234\304\135\165\144\025\015
+\377\125\060\354\206\217\377\015\357\054\271\143\106\366\252\374
+\337\274\151\375\056\022\110\144\232\340\225\360\246\357\051\217
+\001\261\025\265\014\035\245\376\151\054\151\044\170\036\263\247
+\034\161\142\356\312\310\227\254\027\135\212\302\370\107\206\156
+\052\304\126\061\225\320\147\211\205\053\371\154\246\135\106\235
+\014\252\202\344\231\121\335\160\267\333\126\075\141\344\152\341
+\134\326\366\376\075\336\101\314\007\256\143\122\277\123\123\364
+\053\351\307\375\266\367\202\137\205\322\101\030\333\201\263\004
+\034\305\037\244\200\157\025\040\311\336\014\210\012\035\326\146
+\125\342\374\110\311\051\046\151\340
+END
+
+# Trust for Certificate "GlobalSign Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GlobalSign Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\261\274\226\213\324\364\235\142\052\250\232\201\362\025\001\122
+\244\035\202\234
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\076\105\122\025\011\121\222\341\267\135\067\237\261\207\051\212
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061
+\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154
+\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003
+\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031
+\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147
+\156\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\025\113\132\303\224
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GlobalSign Root CA - R2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GlobalSign Root CA - R2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157
+\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040
+\055\040\122\062\061\023\060\021\006\003\125\004\012\023\012\107
+\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125
+\004\003\023\012\107\154\157\142\141\154\123\151\147\156
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157
+\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040
+\055\040\122\062\061\023\060\021\006\003\125\004\012\023\012\107
+\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125
+\004\003\023\012\107\154\157\142\141\154\123\151\147\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\017\206\046\346\015
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\272\060\202\002\242\240\003\002\001\002\002\013\004
+\000\000\000\000\001\017\206\046\346\015\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\114\061\040\060\036\006
+\003\125\004\013\023\027\107\154\157\142\141\154\123\151\147\156
+\040\122\157\157\164\040\103\101\040\055\040\122\062\061\023\060
+\021\006\003\125\004\012\023\012\107\154\157\142\141\154\123\151
+\147\156\061\023\060\021\006\003\125\004\003\023\012\107\154\157
+\142\141\154\123\151\147\156\060\036\027\015\060\066\061\062\061
+\065\060\070\060\060\060\060\132\027\015\062\061\061\062\061\065
+\060\070\060\060\060\060\132\060\114\061\040\060\036\006\003\125
+\004\013\023\027\107\154\157\142\141\154\123\151\147\156\040\122
+\157\157\164\040\103\101\040\055\040\122\062\061\023\060\021\006
+\003\125\004\012\023\012\107\154\157\142\141\154\123\151\147\156
+\061\023\060\021\006\003\125\004\003\023\012\107\154\157\142\141
+\154\123\151\147\156\060\202\001\042\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001
+\012\002\202\001\001\000\246\317\044\016\276\056\157\050\231\105
+\102\304\253\076\041\124\233\013\323\177\204\160\372\022\263\313
+\277\207\137\306\177\206\323\262\060\134\326\375\255\361\173\334
+\345\370\140\226\011\222\020\365\320\123\336\373\173\176\163\210
+\254\122\210\173\112\246\312\111\246\136\250\247\214\132\021\274
+\172\202\353\276\214\351\263\254\226\045\007\227\112\231\052\007
+\057\264\036\167\277\212\017\265\002\174\033\226\270\305\271\072
+\054\274\326\022\271\353\131\175\342\320\006\206\137\136\111\152
+\265\071\136\210\064\354\274\170\014\010\230\204\154\250\315\113
+\264\240\175\014\171\115\360\270\055\313\041\312\325\154\133\175
+\341\240\051\204\241\371\323\224\111\313\044\142\221\040\274\335
+\013\325\331\314\371\352\047\012\053\163\221\306\235\033\254\310
+\313\350\340\240\364\057\220\213\115\373\260\066\033\366\031\172
+\205\340\155\362\141\023\210\134\237\340\223\012\121\227\212\132
+\316\257\253\325\367\252\011\252\140\275\334\331\137\337\162\251
+\140\023\136\000\001\311\112\372\077\244\352\007\003\041\002\216
+\202\312\003\302\233\217\002\003\001\000\001\243\201\234\060\201
+\231\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\035\006\003\125\035\016\004\026\004\024\233\342\007
+\127\147\034\036\300\152\006\336\131\264\232\055\337\334\031\206
+\056\060\066\006\003\125\035\037\004\057\060\055\060\053\240\051
+\240\047\206\045\150\164\164\160\072\057\057\143\162\154\056\147
+\154\157\142\141\154\163\151\147\156\056\156\145\164\057\162\157
+\157\164\055\162\062\056\143\162\154\060\037\006\003\125\035\043
+\004\030\060\026\200\024\233\342\007\127\147\034\036\300\152\006
+\336\131\264\232\055\337\334\031\206\056\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\231\201
+\123\207\034\150\227\206\221\354\340\112\270\104\013\253\201\254
+\047\117\326\301\270\034\103\170\263\014\232\374\352\054\074\156
+\141\033\115\113\051\365\237\005\035\046\301\270\351\203\000\142
+\105\266\251\010\223\271\251\063\113\030\232\302\370\207\210\116
+\333\335\161\064\032\301\124\332\106\077\340\323\052\253\155\124
+\042\365\072\142\315\040\157\272\051\211\327\335\221\356\323\134
+\242\076\241\133\101\365\337\345\144\103\055\351\325\071\253\322
+\242\337\267\213\320\300\200\031\034\105\300\055\214\350\370\055
+\244\164\126\111\305\005\265\117\025\336\156\104\170\071\207\250
+\176\273\363\171\030\221\273\364\157\235\301\360\214\065\214\135
+\001\373\303\155\271\357\104\155\171\106\061\176\012\376\251\202
+\301\377\357\253\156\040\304\120\311\137\235\115\233\027\214\014
+\345\001\311\240\101\152\163\123\372\245\120\264\156\045\017\373
+\114\030\364\375\122\331\216\151\261\350\021\017\336\210\330\373
+\035\111\367\252\336\225\317\040\170\302\140\022\333\045\100\214
+\152\374\176\102\070\100\144\022\367\236\201\341\223\056
+END
+
+# Trust for Certificate "GlobalSign Root CA - R2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GlobalSign Root CA - R2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\165\340\253\266\023\205\022\047\034\004\370\137\335\336\070\344
+\267\044\056\376
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\224\024\167\176\076\136\375\217\060\275\101\260\317\347\320\060
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157
+\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040
+\055\040\122\062\061\023\060\021\006\003\125\004\012\023\012\107
+\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125
+\004\003\023\012\107\154\157\142\141\154\123\151\147\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\017\206\046\346\015
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ValiCert Class 1 VA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ValiCert Class 1 VA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\061\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\061\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\347\060\202\002\120\002\001\001\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\273\061\044\060
+\042\006\003\125\004\007\023\033\126\141\154\151\103\145\162\164
+\040\126\141\154\151\144\141\164\151\157\156\040\116\145\164\167
+\157\162\153\061\027\060\025\006\003\125\004\012\023\016\126\141
+\154\151\103\145\162\164\054\040\111\156\143\056\061\065\060\063
+\006\003\125\004\013\023\054\126\141\154\151\103\145\162\164\040
+\103\154\141\163\163\040\061\040\120\157\154\151\143\171\040\126
+\141\154\151\144\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\061\041\060\037\006\003\125\004\003\023\030\150\164
+\164\160\072\057\057\167\167\167\056\166\141\154\151\143\145\162
+\164\056\143\157\155\057\061\040\060\036\006\011\052\206\110\206
+\367\015\001\011\001\026\021\151\156\146\157\100\166\141\154\151
+\143\145\162\164\056\143\157\155\060\036\027\015\071\071\060\066
+\062\065\062\062\062\063\064\070\132\027\015\061\071\060\066\062
+\065\062\062\062\063\064\070\132\060\201\273\061\044\060\042\006
+\003\125\004\007\023\033\126\141\154\151\103\145\162\164\040\126
+\141\154\151\144\141\164\151\157\156\040\116\145\164\167\157\162
+\153\061\027\060\025\006\003\125\004\012\023\016\126\141\154\151
+\103\145\162\164\054\040\111\156\143\056\061\065\060\063\006\003
+\125\004\013\023\054\126\141\154\151\103\145\162\164\040\103\154
+\141\163\163\040\061\040\120\157\154\151\143\171\040\126\141\154
+\151\144\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\041\060\037\006\003\125\004\003\023\030\150\164\164\160
+\072\057\057\167\167\167\056\166\141\154\151\143\145\162\164\056
+\143\157\155\057\061\040\060\036\006\011\052\206\110\206\367\015
+\001\011\001\026\021\151\156\146\157\100\166\141\154\151\143\145
+\162\164\056\143\157\155\060\201\237\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002
+\201\201\000\330\131\202\172\211\270\226\272\246\057\150\157\130
+\056\247\124\034\006\156\364\352\215\110\274\061\224\027\360\363
+\116\274\262\270\065\222\166\260\320\245\245\001\327\000\003\022
+\042\031\010\370\377\021\043\233\316\007\365\277\151\032\046\376
+\116\351\321\177\235\054\100\035\131\150\156\246\370\130\260\235
+\032\217\323\077\361\334\031\006\201\250\016\340\072\335\310\123
+\105\011\006\346\017\160\303\372\100\246\016\342\126\005\017\030
+\115\374\040\202\321\163\125\164\215\166\162\240\035\235\035\300
+\335\077\161\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\120\150\075\111\364
+\054\034\006\224\337\225\140\177\226\173\027\376\117\161\255\144
+\310\335\167\322\357\131\125\350\077\350\216\005\052\041\362\007
+\322\265\247\122\376\234\261\266\342\133\167\027\100\352\162\326
+\043\313\050\201\062\303\000\171\030\354\131\027\211\311\306\152
+\036\161\311\375\267\164\245\045\105\151\305\110\253\031\341\105
+\212\045\153\031\356\345\273\022\365\177\367\246\215\121\303\360
+\235\164\267\251\076\240\245\377\266\111\003\023\332\042\314\355
+\161\202\053\231\317\072\267\365\055\162\310
+END
+
+# Trust for Certificate "ValiCert Class 1 VA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ValiCert Class 1 VA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\345\337\164\074\266\001\304\233\230\103\334\253\214\350\152\201
+\020\237\344\216
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\145\130\253\025\255\127\154\036\250\247\265\151\254\277\377\353
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\061\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ValiCert Class 2 VA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ValiCert Class 2 VA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\062\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\062\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\347\060\202\002\120\002\001\001\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\273\061\044\060
+\042\006\003\125\004\007\023\033\126\141\154\151\103\145\162\164
+\040\126\141\154\151\144\141\164\151\157\156\040\116\145\164\167
+\157\162\153\061\027\060\025\006\003\125\004\012\023\016\126\141
+\154\151\103\145\162\164\054\040\111\156\143\056\061\065\060\063
+\006\003\125\004\013\023\054\126\141\154\151\103\145\162\164\040
+\103\154\141\163\163\040\062\040\120\157\154\151\143\171\040\126
+\141\154\151\144\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\061\041\060\037\006\003\125\004\003\023\030\150\164
+\164\160\072\057\057\167\167\167\056\166\141\154\151\143\145\162
+\164\056\143\157\155\057\061\040\060\036\006\011\052\206\110\206
+\367\015\001\011\001\026\021\151\156\146\157\100\166\141\154\151
+\143\145\162\164\056\143\157\155\060\036\027\015\071\071\060\066
+\062\066\060\060\061\071\065\064\132\027\015\061\071\060\066\062
+\066\060\060\061\071\065\064\132\060\201\273\061\044\060\042\006
+\003\125\004\007\023\033\126\141\154\151\103\145\162\164\040\126
+\141\154\151\144\141\164\151\157\156\040\116\145\164\167\157\162
+\153\061\027\060\025\006\003\125\004\012\023\016\126\141\154\151
+\103\145\162\164\054\040\111\156\143\056\061\065\060\063\006\003
+\125\004\013\023\054\126\141\154\151\103\145\162\164\040\103\154
+\141\163\163\040\062\040\120\157\154\151\143\171\040\126\141\154
+\151\144\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\041\060\037\006\003\125\004\003\023\030\150\164\164\160
+\072\057\057\167\167\167\056\166\141\154\151\143\145\162\164\056
+\143\157\155\057\061\040\060\036\006\011\052\206\110\206\367\015
+\001\011\001\026\021\151\156\146\157\100\166\141\154\151\143\145
+\162\164\056\143\157\155\060\201\237\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002
+\201\201\000\316\072\161\312\345\253\310\131\222\125\327\253\330
+\164\016\371\356\331\366\125\107\131\145\107\016\005\125\334\353
+\230\066\074\134\123\135\323\060\317\070\354\275\101\211\355\045
+\102\011\044\153\012\136\263\174\335\122\055\114\346\324\326\175
+\132\131\251\145\324\111\023\055\044\115\034\120\157\265\301\205
+\124\073\376\161\344\323\134\102\371\200\340\221\032\012\133\071
+\066\147\363\077\125\174\033\077\264\137\144\163\064\343\264\022
+\277\207\144\370\332\022\377\067\047\301\263\103\273\357\173\156
+\056\151\367\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\073\177\120\157\157
+\120\224\231\111\142\070\070\037\113\370\245\310\076\247\202\201
+\366\053\307\350\305\316\350\072\020\202\313\030\000\216\115\275
+\250\130\177\241\171\000\265\273\351\215\257\101\331\017\064\356
+\041\201\031\240\062\111\050\364\304\216\126\325\122\063\375\120
+\325\176\231\154\003\344\311\114\374\313\154\253\146\263\112\041
+\214\345\265\014\062\076\020\262\314\154\241\334\232\230\114\002
+\133\363\316\271\236\245\162\016\112\267\077\074\346\026\150\370
+\276\355\164\114\274\133\325\142\037\103\335
+END
+
+# Trust for Certificate "ValiCert Class 2 VA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ValiCert Class 2 VA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\061\172\052\320\177\053\063\136\365\241\303\116\113\127\350\267
+\330\361\374\246
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\251\043\165\233\272\111\066\156\061\302\333\362\347\146\272\207
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\062\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "RSA Root Certificate 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Root Certificate 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\063\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\063\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\347\060\202\002\120\002\001\001\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\273\061\044\060
+\042\006\003\125\004\007\023\033\126\141\154\151\103\145\162\164
+\040\126\141\154\151\144\141\164\151\157\156\040\116\145\164\167
+\157\162\153\061\027\060\025\006\003\125\004\012\023\016\126\141
+\154\151\103\145\162\164\054\040\111\156\143\056\061\065\060\063
+\006\003\125\004\013\023\054\126\141\154\151\103\145\162\164\040
+\103\154\141\163\163\040\063\040\120\157\154\151\143\171\040\126
+\141\154\151\144\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\061\041\060\037\006\003\125\004\003\023\030\150\164
+\164\160\072\057\057\167\167\167\056\166\141\154\151\143\145\162
+\164\056\143\157\155\057\061\040\060\036\006\011\052\206\110\206
+\367\015\001\011\001\026\021\151\156\146\157\100\166\141\154\151
+\143\145\162\164\056\143\157\155\060\036\027\015\071\071\060\066
+\062\066\060\060\062\062\063\063\132\027\015\061\071\060\066\062
+\066\060\060\062\062\063\063\132\060\201\273\061\044\060\042\006
+\003\125\004\007\023\033\126\141\154\151\103\145\162\164\040\126
+\141\154\151\144\141\164\151\157\156\040\116\145\164\167\157\162
+\153\061\027\060\025\006\003\125\004\012\023\016\126\141\154\151
+\103\145\162\164\054\040\111\156\143\056\061\065\060\063\006\003
+\125\004\013\023\054\126\141\154\151\103\145\162\164\040\103\154
+\141\163\163\040\063\040\120\157\154\151\143\171\040\126\141\154
+\151\144\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\041\060\037\006\003\125\004\003\023\030\150\164\164\160
+\072\057\057\167\167\167\056\166\141\154\151\143\145\162\164\056
+\143\157\155\057\061\040\060\036\006\011\052\206\110\206\367\015
+\001\011\001\026\021\151\156\146\157\100\166\141\154\151\143\145
+\162\164\056\143\157\155\060\201\237\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002
+\201\201\000\343\230\121\226\034\350\325\261\006\201\152\127\303
+\162\165\223\253\317\236\246\374\363\026\122\326\055\115\237\065
+\104\250\056\004\115\007\111\212\070\051\365\167\067\347\267\253
+\135\337\066\161\024\231\217\334\302\222\361\347\140\222\227\354
+\330\110\334\277\301\002\040\306\044\244\050\114\060\132\166\155
+\261\134\363\335\336\236\020\161\241\210\307\133\233\101\155\312
+\260\270\216\025\356\255\063\053\317\107\004\134\165\161\012\230
+\044\230\051\247\111\131\245\335\370\267\103\142\141\363\323\342
+\320\125\077\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\126\273\002\130\204
+\147\010\054\337\037\333\173\111\063\365\323\147\235\364\264\012
+\020\263\311\305\054\342\222\152\161\170\047\362\160\203\102\323
+\076\317\251\124\364\361\330\222\026\214\321\004\313\113\253\311
+\237\105\256\074\212\251\260\161\063\135\310\305\127\337\257\250
+\065\263\177\211\207\351\350\045\222\270\177\205\172\256\326\274
+\036\067\130\052\147\311\221\317\052\201\076\355\306\071\337\300
+\076\031\234\031\314\023\115\202\101\265\214\336\340\075\140\010
+\040\017\105\176\153\242\177\243\214\025\356
+END
+
+# Trust for Certificate "RSA Root Certificate 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Root Certificate 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\151\275\214\364\234\323\000\373\131\056\027\223\312\125\152\363
+\354\252\065\373
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\242\157\123\267\356\100\333\112\150\347\372\030\331\020\113\162
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\273\061\044\060\042\006\003\125\004\007\023\033\126\141
+\154\151\103\145\162\164\040\126\141\154\151\144\141\164\151\157
+\156\040\116\145\164\167\157\162\153\061\027\060\025\006\003\125
+\004\012\023\016\126\141\154\151\103\145\162\164\054\040\111\156
+\143\056\061\065\060\063\006\003\125\004\013\023\054\126\141\154
+\151\103\145\162\164\040\103\154\141\163\163\040\063\040\120\157
+\154\151\143\171\040\126\141\154\151\144\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\041\060\037\006\003\125
+\004\003\023\030\150\164\164\160\072\057\057\167\167\167\056\166
+\141\154\151\143\145\162\164\056\143\157\155\057\061\040\060\036
+\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156\146
+\157\100\166\141\154\151\143\145\162\164\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 1 Public Primary Certification Authority - G3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority - G3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\061\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\061\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\213\133\165\126\204\124\205\013\000\317\257\070\110
+\316\261\244
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\032\060\202\003\002\002\021\000\213\133\165\126\204
+\124\205\013\000\317\257\070\110\316\261\244\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\312\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003
+\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\071\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\105\060\103\006\003\125\004\003\023\074\126\145\162\151\123
+\151\147\156\040\103\154\141\163\163\040\061\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\063\060\036\027\015\071\071\061\060\060
+\061\060\060\060\060\060\060\132\027\015\063\066\060\067\061\066
+\062\063\065\071\065\071\132\060\201\312\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\027\060\025\006\003\125\004\012
+\023\016\126\145\162\151\123\151\147\156\054\040\111\156\143\056
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040
+\061\071\071\071\040\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162
+\151\172\145\144\040\165\163\145\040\157\156\154\171\061\105\060
+\103\006\003\125\004\003\023\074\126\145\162\151\123\151\147\156
+\040\103\154\141\163\163\040\061\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\063\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\335\204\324\271\264\371\247\330\363\004\170
+\234\336\075\334\154\023\026\331\172\335\044\121\146\300\307\046
+\131\015\254\006\010\302\224\321\063\037\360\203\065\037\156\033
+\310\336\252\156\025\116\124\047\357\304\155\032\354\013\343\016
+\360\104\245\127\307\100\130\036\243\107\037\161\354\140\366\155
+\224\310\030\071\355\376\102\030\126\337\344\114\111\020\170\116
+\001\166\065\143\022\066\335\146\274\001\004\066\243\125\150\325
+\242\066\011\254\253\041\046\124\006\255\077\312\024\340\254\312
+\255\006\035\225\342\370\235\361\340\140\377\302\177\165\053\114
+\314\332\376\207\231\041\352\272\376\076\124\327\322\131\170\333
+\074\156\317\240\023\000\032\270\047\241\344\276\147\226\312\240
+\305\263\234\335\311\165\236\353\060\232\137\243\315\331\256\170
+\031\077\043\351\134\333\051\275\255\125\310\033\124\214\143\366
+\350\246\352\307\067\022\134\243\051\036\002\331\333\037\073\264
+\327\017\126\107\201\025\004\112\257\203\047\321\305\130\210\301
+\335\366\252\247\243\030\332\150\252\155\021\121\341\277\145\153
+\237\226\166\321\075\002\003\001\000\001\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\253\146
+\215\327\263\272\307\232\266\346\125\320\005\361\237\061\215\132
+\252\331\252\106\046\017\161\355\245\255\123\126\142\001\107\052
+\104\351\376\077\164\013\023\233\271\364\115\033\262\321\137\262
+\266\322\210\134\263\237\315\313\324\247\331\140\225\204\072\370
+\301\067\035\141\312\347\260\305\345\221\332\124\246\254\061\201
+\256\227\336\315\010\254\270\300\227\200\177\156\162\244\347\151
+\023\225\145\037\304\223\074\375\171\217\004\324\076\117\352\367
+\236\316\315\147\174\117\145\002\377\221\205\124\163\307\377\066
+\367\206\055\354\320\136\117\377\021\237\162\006\326\270\032\361
+\114\015\046\145\342\104\200\036\307\237\343\335\350\012\332\354
+\245\040\200\151\150\241\117\176\341\153\317\007\101\372\203\216
+\274\070\335\260\056\021\261\153\262\102\314\232\274\371\110\042
+\171\112\031\017\262\034\076\040\164\331\152\303\276\362\050\170
+\023\126\171\117\155\120\352\033\260\265\127\261\067\146\130\043
+\363\334\017\337\012\207\304\357\206\005\325\070\024\140\231\243
+\113\336\006\226\161\054\362\333\266\037\244\357\077\356
+END
+
+# Trust for Certificate "Verisign Class 1 Public Primary Certification Authority - G3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 1 Public Primary Certification Authority - G3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\040\102\205\334\367\353\166\101\225\127\216\023\153\324\267\321
+\351\216\106\245
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\261\107\274\030\127\321\030\240\170\055\354\161\350\052\225\163
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\061\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\213\133\165\126\204\124\205\013\000\317\257\070\110
+\316\261\244
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 2 Public Primary Certification Authority - G3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority - G3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\062\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\062\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\141\160\313\111\214\137\230\105\051\347\260\246\331\120
+\133\172
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\031\060\202\003\001\002\020\141\160\313\111\214\137
+\230\105\051\347\260\246\331\120\133\172\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\201\312\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003\125
+\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\061\037\060\035\006\003\125\004\013\023\026\126\145\162
+\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164\167
+\157\162\153\061\072\060\070\006\003\125\004\013\023\061\050\143
+\051\040\061\071\071\071\040\126\145\162\151\123\151\147\156\054
+\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164\150
+\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171\061
+\105\060\103\006\003\125\004\003\023\074\126\145\162\151\123\151
+\147\156\040\103\154\141\163\163\040\062\040\120\165\142\154\151
+\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\040\055\040\107\063\060\036\027\015\071\071\061\060\060\061
+\060\060\060\060\060\060\132\027\015\063\066\060\067\061\066\062
+\063\065\071\065\071\132\060\201\312\061\013\060\011\006\003\125
+\004\006\023\002\125\123\061\027\060\025\006\003\125\004\012\023
+\016\126\145\162\151\123\151\147\156\054\040\111\156\143\056\061
+\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123\151
+\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162\153
+\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040\061
+\071\071\071\040\126\145\162\151\123\151\147\156\054\040\111\156
+\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151
+\172\145\144\040\165\163\145\040\157\156\154\171\061\105\060\103
+\006\003\125\004\003\023\074\126\145\162\151\123\151\147\156\040
+\103\154\141\163\163\040\062\040\120\165\142\154\151\143\040\120
+\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\055
+\040\107\063\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\257\012\015\302\325\054\333\147\271\055\345\224
+\047\335\245\276\340\260\115\217\263\141\126\074\326\174\303\364
+\315\076\206\313\242\210\342\341\330\244\151\305\265\342\277\301
+\246\107\120\136\106\071\213\325\226\272\265\157\024\277\020\316
+\047\023\236\005\107\233\061\172\023\330\037\331\323\002\067\213
+\255\054\107\360\216\201\006\247\015\060\014\353\367\074\017\040
+\035\334\162\106\356\245\002\310\133\303\311\126\151\114\305\030
+\301\221\173\013\325\023\000\233\274\357\303\110\076\106\140\040
+\205\052\325\220\266\315\213\240\314\062\335\267\375\100\125\262
+\120\034\126\256\314\215\167\115\307\040\115\247\061\166\357\150
+\222\212\220\036\010\201\126\262\255\151\243\122\320\313\034\304
+\043\075\037\231\376\114\350\026\143\216\306\010\216\366\061\366
+\322\372\345\166\335\265\034\222\243\111\315\315\001\315\150\315
+\251\151\272\243\353\035\015\234\244\040\246\301\240\305\321\106
+\114\027\155\322\254\146\077\226\214\340\204\324\066\377\042\131
+\305\371\021\140\250\137\004\175\362\032\366\045\102\141\017\304
+\112\270\076\211\002\003\001\000\001\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\202\001\001\000\064\046\025
+\074\300\215\115\103\111\035\275\351\041\222\327\146\234\267\336
+\305\270\320\344\135\137\166\042\300\046\371\204\072\072\371\214
+\265\373\354\140\361\350\316\004\260\310\335\247\003\217\060\363
+\230\337\244\346\244\061\337\323\034\013\106\334\162\040\077\256
+\356\005\074\244\063\077\013\071\254\160\170\163\113\231\053\337
+\060\302\124\260\250\073\125\241\376\026\050\315\102\275\164\156
+\200\333\047\104\247\316\104\135\324\033\220\230\015\036\102\224
+\261\000\054\004\320\164\243\002\005\042\143\143\315\203\265\373
+\301\155\142\153\151\165\375\135\160\101\271\365\277\174\337\276
+\301\062\163\042\041\213\130\201\173\025\221\172\272\343\144\110
+\260\177\373\066\045\332\225\320\361\044\024\027\335\030\200\153
+\106\043\071\124\365\216\142\011\004\035\224\220\246\233\346\045
+\342\102\105\252\270\220\255\276\010\217\251\013\102\030\224\317
+\162\071\341\261\103\340\050\317\267\347\132\154\023\153\111\263
+\377\343\030\174\211\213\063\135\254\063\327\247\371\332\072\125
+\311\130\020\371\252\357\132\266\317\113\113\337\052
+END
+
+# Trust for Certificate "Verisign Class 2 Public Primary Certification Authority - G3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 2 Public Primary Certification Authority - G3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\141\357\103\327\177\312\324\141\121\274\230\340\303\131\022\257
+\237\353\143\021
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\370\276\304\143\042\311\250\106\164\213\270\035\036\112\053\366
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\062\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\141\160\313\111\214\137\230\105\051\347\260\246\331\120
+\133\172
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 3 Public Primary Certification Authority - G3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority - G3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\233\176\006\111\243\076\142\271\325\356\220\110\161
+\051\357\127
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\032\060\202\003\002\002\021\000\233\176\006\111\243
+\076\142\271\325\356\220\110\161\051\357\127\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\312\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003
+\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\071\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\105\060\103\006\003\125\004\003\023\074\126\145\162\151\123
+\151\147\156\040\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\063\060\036\027\015\071\071\061\060\060
+\061\060\060\060\060\060\060\132\027\015\063\066\060\067\061\066
+\062\063\065\071\065\071\132\060\201\312\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\027\060\025\006\003\125\004\012
+\023\016\126\145\162\151\123\151\147\156\054\040\111\156\143\056
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040
+\061\071\071\071\040\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162
+\151\172\145\144\040\165\163\145\040\157\156\154\171\061\105\060
+\103\006\003\125\004\003\023\074\126\145\162\151\123\151\147\156
+\040\103\154\141\163\163\040\063\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\063\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\313\272\234\122\374\170\037\032\036\157\033
+\067\163\275\370\311\153\224\022\060\117\360\066\107\365\320\221
+\012\365\027\310\245\141\301\026\100\115\373\212\141\220\345\166
+\040\301\021\006\175\253\054\156\246\365\021\101\216\372\055\255
+\052\141\131\244\147\046\114\320\350\274\122\133\160\040\004\130
+\321\172\311\244\151\274\203\027\144\255\005\213\274\320\130\316
+\215\214\365\353\360\102\111\013\235\227\047\147\062\156\341\256
+\223\025\034\160\274\040\115\057\030\336\222\210\350\154\205\127
+\021\032\351\176\343\046\021\124\242\105\226\125\203\312\060\211
+\350\334\330\243\355\052\200\077\177\171\145\127\076\025\040\146
+\010\057\225\223\277\252\107\057\250\106\227\360\022\342\376\302
+\012\053\121\346\166\346\267\106\267\342\015\246\314\250\303\114
+\131\125\211\346\350\123\134\034\352\235\360\142\026\013\247\311
+\137\014\360\336\302\166\316\257\367\152\362\372\101\246\242\063
+\024\311\345\172\143\323\236\142\067\325\205\145\236\016\346\123
+\044\164\033\136\035\022\123\133\307\054\347\203\111\073\025\256
+\212\150\271\127\227\002\003\001\000\001\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\021\024
+\226\301\253\222\010\367\077\057\311\262\376\344\132\237\144\336
+\333\041\117\206\231\064\166\066\127\335\320\025\057\305\255\177
+\025\037\067\142\163\076\324\347\137\316\027\003\333\065\372\053
+\333\256\140\011\137\036\137\217\156\273\013\075\352\132\023\036
+\014\140\157\265\300\265\043\042\056\007\013\313\251\164\313\107
+\273\035\301\327\245\153\314\057\322\102\375\111\335\247\211\317
+\123\272\332\000\132\050\277\202\337\370\272\023\035\120\206\202
+\375\216\060\217\051\106\260\036\075\065\332\070\142\026\030\112
+\255\346\266\121\154\336\257\142\353\001\320\036\044\376\172\217
+\022\032\022\150\270\373\146\231\024\024\105\134\256\347\256\151
+\027\201\053\132\067\311\136\052\364\306\342\241\134\124\233\246
+\124\000\317\360\361\301\307\230\060\032\073\066\026\333\243\156
+\352\375\255\262\302\332\357\002\107\023\212\300\361\263\061\255
+\117\034\341\117\234\257\017\014\235\367\170\015\330\364\065\126
+\200\332\267\155\027\217\235\036\201\144\341\376\305\105\272\255
+\153\271\012\172\116\117\113\204\356\113\361\175\335\021
+END
+
+# Trust for Certificate "Verisign Class 3 Public Primary Certification Authority - G3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 3 Public Primary Certification Authority - G3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\023\055\015\105\123\113\151\227\315\262\325\303\071\342\125\166
+\140\233\134\306
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\315\150\266\247\307\304\316\165\340\035\117\127\104\141\222\011
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\233\176\006\111\243\076\142\271\325\356\220\110\161
+\051\357\127
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Class 4 Public Primary Certification Authority - G3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 4 Public Primary Certification Authority - G3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\064\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\064\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\354\240\247\213\156\165\152\001\317\304\174\314\057
+\224\136\327
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\032\060\202\003\002\002\021\000\354\240\247\213\156
+\165\152\001\317\304\174\314\057\224\136\327\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\060\201\312\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003
+\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153\061\072\060\070\006\003\125\004\013\023\061\050
+\143\051\040\061\071\071\071\040\126\145\162\151\123\151\147\156
+\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165\164
+\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171
+\061\105\060\103\006\003\125\004\003\023\074\126\145\162\151\123
+\151\147\156\040\103\154\141\163\163\040\064\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\063\060\036\027\015\071\071\061\060\060
+\061\060\060\060\060\060\060\132\027\015\063\066\060\067\061\066
+\062\063\065\071\065\071\132\060\201\312\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\027\060\025\006\003\125\004\012
+\023\016\126\145\162\151\123\151\147\156\054\040\111\156\143\056
+\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151\123
+\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157\162
+\153\061\072\060\070\006\003\125\004\013\023\061\050\143\051\040
+\061\071\071\071\040\126\145\162\151\123\151\147\156\054\040\111
+\156\143\056\040\055\040\106\157\162\040\141\165\164\150\157\162
+\151\172\145\144\040\165\163\145\040\157\156\154\171\061\105\060
+\103\006\003\125\004\003\023\074\126\145\162\151\123\151\147\156
+\040\103\154\141\163\163\040\064\040\120\165\142\154\151\143\040
+\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040
+\055\040\107\063\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\255\313\245\021\151\306\131\253\361\217\265
+\031\017\126\316\314\265\037\040\344\236\046\045\113\340\163\145
+\211\131\336\320\203\344\365\017\265\273\255\361\174\350\041\374
+\344\350\014\356\174\105\042\031\166\222\264\023\267\040\133\011
+\372\141\256\250\362\245\215\205\302\052\326\336\146\066\322\233
+\002\364\250\222\140\174\234\151\264\217\044\036\320\206\122\366
+\062\234\101\130\036\042\275\315\105\142\225\010\156\320\146\335
+\123\242\314\360\020\334\124\163\213\004\241\106\063\063\134\027
+\100\271\236\115\323\363\276\125\203\350\261\211\216\132\174\232
+\226\042\220\073\210\045\362\322\123\210\002\014\013\170\362\346
+\067\027\113\060\106\007\344\200\155\246\330\226\056\350\054\370
+\021\263\070\015\146\246\233\352\311\043\133\333\216\342\363\023
+\216\032\131\055\252\002\360\354\244\207\146\334\301\077\365\330
+\271\364\354\202\306\322\075\225\035\345\300\117\204\311\331\243
+\104\050\006\152\327\105\254\360\153\152\357\116\137\370\021\202
+\036\070\143\064\146\120\324\076\223\163\372\060\303\146\255\377
+\223\055\227\357\003\002\003\001\000\001\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\217\372
+\045\153\117\133\344\244\116\047\125\253\042\025\131\074\312\265
+\012\324\112\333\253\335\241\137\123\305\240\127\071\302\316\107
+\053\276\072\310\126\277\302\331\047\020\072\261\005\074\300\167
+\061\273\072\323\005\173\155\232\034\060\214\200\313\223\223\052
+\203\253\005\121\202\002\000\021\147\153\363\210\141\107\137\003
+\223\325\133\015\340\361\324\241\062\065\205\262\072\333\260\202
+\253\321\313\012\274\117\214\133\305\113\000\073\037\052\202\246
+\176\066\205\334\176\074\147\000\265\344\073\122\340\250\353\135
+\025\371\306\155\360\255\035\016\205\267\251\232\163\024\132\133
+\217\101\050\300\325\350\055\115\244\136\315\252\331\355\316\334
+\330\325\074\102\035\027\301\022\135\105\070\303\070\363\374\205
+\056\203\106\110\262\327\040\137\222\066\217\347\171\017\230\136
+\231\350\360\320\244\273\365\123\275\052\316\131\260\257\156\177
+\154\273\322\036\000\260\041\355\370\101\142\202\271\330\262\304
+\273\106\120\363\061\305\217\001\250\164\353\365\170\047\332\347
+\367\146\103\363\236\203\076\040\252\303\065\140\221\316
+END
+
+# Trust for Certificate "Verisign Class 4 Public Primary Certification Authority - G3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Class 4 Public Primary Certification Authority - G3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\310\354\214\207\222\151\313\113\253\071\351\215\176\127\147\363
+\024\225\163\235
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\333\310\362\047\056\261\352\152\051\043\135\376\126\076\063\337
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\061\071\071\071\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\064\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\354\240\247\213\156\165\152\001\317\304\174\314\057
+\224\136\327
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_TRUE
+
+#
+# Certificate "Entrust.net Secure Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Secure Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\303\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\073\060\071\006\003\125\004\013\023
+\062\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040
+\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151\141
+\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050\143
+\051\040\061\071\071\071\040\105\156\164\162\165\163\164\056\156
+\145\164\040\114\151\155\151\164\145\144\061\072\060\070\006\003
+\125\004\003\023\061\105\156\164\162\165\163\164\056\156\145\164
+\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\303\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\073\060\071\006\003\125\004\013\023
+\062\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040
+\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151\141
+\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050\143
+\051\040\061\071\071\071\040\105\156\164\162\165\163\164\056\156
+\145\164\040\114\151\155\151\164\145\144\061\072\060\070\006\003
+\125\004\003\023\061\105\156\164\162\165\163\164\056\156\145\164
+\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\067\112\322\103
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\330\060\202\004\101\240\003\002\001\002\002\004\067
+\112\322\103\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\201\303\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\024\060\022\006\003\125\004\012\023\013\105\156\164
+\162\165\163\164\056\156\145\164\061\073\060\071\006\003\125\004
+\013\023\062\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\120\123\040\151\156\143\157\162\160\056\040\142
+\171\040\162\145\146\056\040\050\154\151\155\151\164\163\040\154
+\151\141\142\056\051\061\045\060\043\006\003\125\004\013\023\034
+\050\143\051\040\061\071\071\071\040\105\156\164\162\165\163\164
+\056\156\145\164\040\114\151\155\151\164\145\144\061\072\060\070
+\006\003\125\004\003\023\061\105\156\164\162\165\163\164\056\156
+\145\164\040\123\145\143\165\162\145\040\123\145\162\166\145\162
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\060\036\027\015\071\071\060\065
+\062\065\061\066\060\071\064\060\132\027\015\061\071\060\065\062
+\065\061\066\063\071\064\060\132\060\201\303\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\024\060\022\006\003\125\004
+\012\023\013\105\156\164\162\165\163\164\056\156\145\164\061\073
+\060\071\006\003\125\004\013\023\062\167\167\167\056\145\156\164
+\162\165\163\164\056\156\145\164\057\103\120\123\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\072\060\070\006\003\125\004\003\023\061\105\156\164
+\162\165\163\164\056\156\145\164\040\123\145\143\165\162\145\040
+\123\145\162\166\145\162\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\201
+\235\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\201\213\000\060\201\207\002\201\201\000\315\050\203\064\124
+\033\211\363\017\257\067\221\061\377\257\061\140\311\250\350\262
+\020\150\355\237\347\223\066\361\012\144\273\107\365\004\027\077
+\043\107\115\305\047\031\201\046\014\124\162\015\210\055\331\037
+\232\022\237\274\263\161\323\200\031\077\107\146\173\214\065\050
+\322\271\012\337\044\332\234\326\120\171\201\172\132\323\067\367
+\302\112\330\051\222\046\144\321\344\230\154\072\000\212\365\064
+\233\145\370\355\343\020\377\375\270\111\130\334\240\336\202\071
+\153\201\261\026\031\141\271\124\266\346\103\002\001\003\243\202
+\001\327\060\202\001\323\060\021\006\011\140\206\110\001\206\370
+\102\001\001\004\004\003\002\000\007\060\202\001\031\006\003\125
+\035\037\004\202\001\020\060\202\001\014\060\201\336\240\201\333
+\240\201\330\244\201\325\060\201\322\061\013\060\011\006\003\125
+\004\006\023\002\125\123\061\024\060\022\006\003\125\004\012\023
+\013\105\156\164\162\165\163\164\056\156\145\164\061\073\060\071
+\006\003\125\004\013\023\062\167\167\167\056\145\156\164\162\165
+\163\164\056\156\145\164\057\103\120\123\040\151\156\143\157\162
+\160\056\040\142\171\040\162\145\146\056\040\050\154\151\155\151
+\164\163\040\154\151\141\142\056\051\061\045\060\043\006\003\125
+\004\013\023\034\050\143\051\040\061\071\071\071\040\105\156\164
+\162\165\163\164\056\156\145\164\040\114\151\155\151\164\145\144
+\061\072\060\070\006\003\125\004\003\023\061\105\156\164\162\165
+\163\164\056\156\145\164\040\123\145\143\165\162\145\040\123\145
+\162\166\145\162\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\061\015\060\013
+\006\003\125\004\003\023\004\103\122\114\061\060\051\240\047\240
+\045\206\043\150\164\164\160\072\057\057\167\167\167\056\145\156
+\164\162\165\163\164\056\156\145\164\057\103\122\114\057\156\145
+\164\061\056\143\162\154\060\053\006\003\125\035\020\004\044\060
+\042\200\017\061\071\071\071\060\065\062\065\061\066\060\071\064
+\060\132\201\017\062\060\061\071\060\065\062\065\061\066\060\071
+\064\060\132\060\013\006\003\125\035\017\004\004\003\002\001\006
+\060\037\006\003\125\035\043\004\030\060\026\200\024\360\027\142
+\023\125\075\263\377\012\000\153\373\120\204\227\363\355\142\320
+\032\060\035\006\003\125\035\016\004\026\004\024\360\027\142\023
+\125\075\263\377\012\000\153\373\120\204\227\363\355\142\320\032
+\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060\031
+\006\011\052\206\110\206\366\175\007\101\000\004\014\060\012\033
+\004\126\064\056\060\003\002\004\220\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\201\201\000\220\334\060\002
+\372\144\164\302\247\012\245\174\041\215\064\027\250\373\107\016
+\377\045\174\215\023\012\373\344\230\265\357\214\370\305\020\015
+\367\222\276\361\303\325\325\225\152\004\273\054\316\046\066\145
+\310\061\306\347\356\077\343\127\165\204\172\021\357\106\117\030
+\364\323\230\273\250\207\062\272\162\366\074\342\075\237\327\035
+\331\303\140\103\214\130\016\042\226\057\142\243\054\037\272\255
+\005\357\253\062\170\207\240\124\163\031\265\134\005\371\122\076
+\155\055\105\013\367\012\223\352\355\006\371\262
+END
+
+# Trust for Certificate "Entrust.net Secure Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Secure Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\231\246\233\346\032\376\210\153\115\053\202\000\174\270\124\374
+\061\176\025\071
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\337\362\200\163\314\361\346\141\163\374\365\102\351\305\174\356
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\303\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\073\060\071\006\003\125\004\013\023
+\062\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040
+\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151\141
+\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050\143
+\051\040\061\071\071\071\040\105\156\164\162\165\163\164\056\156
+\145\164\040\114\151\155\151\164\145\144\061\072\060\070\006\003
+\125\004\003\023\061\105\156\164\162\165\163\164\056\156\145\164
+\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\067\112\322\103
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Entrust.net Secure Personal CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Secure Personal CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\110\060\106\006\003\125\004\013\024
+\077\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\154\151\145\156\164\137\103\101\137\111\156\146\157\057
+\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040\162
+\145\146\056\040\154\151\155\151\164\163\040\154\151\141\142\056
+\061\045\060\043\006\003\125\004\013\023\034\050\143\051\040\061
+\071\071\071\040\105\156\164\162\165\163\164\056\156\145\164\040
+\114\151\155\151\164\145\144\061\063\060\061\006\003\125\004\003
+\023\052\105\156\164\162\165\163\164\056\156\145\164\040\103\154
+\151\145\156\164\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\110\060\106\006\003\125\004\013\024
+\077\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\154\151\145\156\164\137\103\101\137\111\156\146\157\057
+\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040\162
+\145\146\056\040\154\151\155\151\164\163\040\154\151\141\142\056
+\061\045\060\043\006\003\125\004\013\023\034\050\143\051\040\061
+\071\071\071\040\105\156\164\162\165\163\164\056\156\145\164\040
+\114\151\155\151\164\145\144\061\063\060\061\006\003\125\004\003
+\023\052\105\156\164\162\165\163\164\056\156\145\164\040\103\154
+\151\145\156\164\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\003\221\356
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\355\060\202\004\126\240\003\002\001\002\002\004\070
+\003\221\356\060\015\006\011\052\206\110\206\367\015\001\001\004
+\005\000\060\201\311\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\024\060\022\006\003\125\004\012\023\013\105\156\164
+\162\165\163\164\056\156\145\164\061\110\060\106\006\003\125\004
+\013\024\077\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\154\151\145\156\164\137\103\101\137\111\156\146
+\157\057\103\120\123\040\151\156\143\157\162\160\056\040\142\171
+\040\162\145\146\056\040\154\151\155\151\164\163\040\154\151\141
+\142\056\061\045\060\043\006\003\125\004\013\023\034\050\143\051
+\040\061\071\071\071\040\105\156\164\162\165\163\164\056\156\145
+\164\040\114\151\155\151\164\145\144\061\063\060\061\006\003\125
+\004\003\023\052\105\156\164\162\165\163\164\056\156\145\164\040
+\103\154\151\145\156\164\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\036
+\027\015\071\071\061\060\061\062\061\071\062\064\063\060\132\027
+\015\061\071\061\060\061\062\061\071\065\064\063\060\132\060\201
+\311\061\013\060\011\006\003\125\004\006\023\002\125\123\061\024
+\060\022\006\003\125\004\012\023\013\105\156\164\162\165\163\164
+\056\156\145\164\061\110\060\106\006\003\125\004\013\024\077\167
+\167\167\056\145\156\164\162\165\163\164\056\156\145\164\057\103
+\154\151\145\156\164\137\103\101\137\111\156\146\157\057\103\120
+\123\040\151\156\143\157\162\160\056\040\142\171\040\162\145\146
+\056\040\154\151\155\151\164\163\040\154\151\141\142\056\061\045
+\060\043\006\003\125\004\013\023\034\050\143\051\040\061\071\071
+\071\040\105\156\164\162\165\163\164\056\156\145\164\040\114\151
+\155\151\164\145\144\061\063\060\061\006\003\125\004\003\023\052
+\105\156\164\162\165\163\164\056\156\145\164\040\103\154\151\145
+\156\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\060\201\235\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\201\213\000
+\060\201\207\002\201\201\000\310\072\231\136\061\027\337\254\047
+\157\220\173\344\031\377\105\243\064\302\333\301\250\117\360\150
+\352\204\375\237\165\171\317\301\212\121\224\257\307\127\003\107
+\144\236\255\202\033\132\332\177\067\170\107\273\067\230\022\226
+\316\306\023\175\357\322\014\060\121\251\071\236\125\370\373\261
+\347\060\336\203\262\272\076\361\325\211\073\073\205\272\252\164
+\054\376\077\061\156\257\221\225\156\006\324\007\115\113\054\126
+\107\030\004\122\332\016\020\223\277\143\220\233\341\337\214\346
+\002\244\346\117\136\367\213\002\001\003\243\202\001\340\060\202
+\001\334\060\021\006\011\140\206\110\001\206\370\102\001\001\004
+\004\003\002\000\007\060\202\001\042\006\003\125\035\037\004\202
+\001\031\060\202\001\025\060\201\344\240\201\341\240\201\336\244
+\201\333\060\201\330\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\024\060\022\006\003\125\004\012\023\013\105\156\164
+\162\165\163\164\056\156\145\164\061\110\060\106\006\003\125\004
+\013\024\077\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\154\151\145\156\164\137\103\101\137\111\156\146
+\157\057\103\120\123\040\151\156\143\157\162\160\056\040\142\171
+\040\162\145\146\056\040\154\151\155\151\164\163\040\154\151\141
+\142\056\061\045\060\043\006\003\125\004\013\023\034\050\143\051
+\040\061\071\071\071\040\105\156\164\162\165\163\164\056\156\145
+\164\040\114\151\155\151\164\145\144\061\063\060\061\006\003\125
+\004\003\023\052\105\156\164\162\165\163\164\056\156\145\164\040
+\103\154\151\145\156\164\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\015
+\060\013\006\003\125\004\003\023\004\103\122\114\061\060\054\240
+\052\240\050\206\046\150\164\164\160\072\057\057\167\167\167\056
+\145\156\164\162\165\163\164\056\156\145\164\057\103\122\114\057
+\103\154\151\145\156\164\061\056\143\162\154\060\053\006\003\125
+\035\020\004\044\060\042\200\017\061\071\071\071\061\060\061\062
+\061\071\062\064\063\060\132\201\017\062\060\061\071\061\060\061
+\062\061\071\062\064\063\060\132\060\013\006\003\125\035\017\004
+\004\003\002\001\006\060\037\006\003\125\035\043\004\030\060\026
+\200\024\304\373\234\051\173\227\315\114\226\374\356\133\263\312
+\231\164\213\225\352\114\060\035\006\003\125\035\016\004\026\004
+\024\304\373\234\051\173\227\315\114\226\374\356\133\263\312\231
+\164\213\225\352\114\060\014\006\003\125\035\023\004\005\060\003
+\001\001\377\060\031\006\011\052\206\110\206\366\175\007\101\000
+\004\014\060\012\033\004\126\064\056\060\003\002\004\220\060\015
+\006\011\052\206\110\206\367\015\001\001\004\005\000\003\201\201
+\000\077\256\212\361\327\146\003\005\236\076\372\352\034\106\273
+\244\133\217\170\232\022\110\231\371\364\065\336\014\066\007\002
+\153\020\072\211\024\201\234\061\246\174\262\101\262\152\347\007
+\001\241\113\371\237\045\073\226\312\231\303\076\241\121\034\363
+\303\056\104\367\260\147\106\252\222\345\073\332\034\031\024\070
+\060\325\342\242\061\045\056\361\354\105\070\355\370\006\130\003
+\163\142\260\020\061\217\100\277\144\340\134\076\305\117\037\332
+\022\103\377\114\346\006\046\250\233\031\252\104\074\166\262\134
+\354
+END
+
+# Trust for Certificate "Entrust.net Secure Personal CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Secure Personal CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\332\171\301\161\021\120\302\064\071\252\053\013\014\142\375\125
+\262\371\365\200
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\014\101\057\023\133\240\124\365\226\146\055\176\315\016\003\364
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\105\156\164\162\165
+\163\164\056\156\145\164\061\110\060\106\006\003\125\004\013\024
+\077\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164
+\057\103\154\151\145\156\164\137\103\101\137\111\156\146\157\057
+\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040\162
+\145\146\056\040\154\151\155\151\164\163\040\154\151\141\142\056
+\061\045\060\043\006\003\125\004\013\023\034\050\143\051\040\061
+\071\071\071\040\105\156\164\162\165\163\164\056\156\145\164\040
+\114\151\155\151\164\145\144\061\063\060\061\006\003\125\004\003
+\023\052\105\156\164\162\165\163\164\056\156\145\164\040\103\154
+\151\145\156\164\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\003\221\356
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Entrust.net Premium 2048 Secure Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Premium 2048 Secure Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\040\050\062\060\064\070\051
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\040\050\062\060\064\070\051
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\143\271\146
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\134\060\202\003\104\240\003\002\001\002\002\004\070
+\143\271\146\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\201\264\061\024\060\022\006\003\125\004\012\023\013
+\105\156\164\162\165\163\164\056\156\145\164\061\100\060\076\006
+\003\125\004\013\024\067\167\167\167\056\145\156\164\162\165\163
+\164\056\156\145\164\057\103\120\123\137\062\060\064\070\040\151
+\156\143\157\162\160\056\040\142\171\040\162\145\146\056\040\050
+\154\151\155\151\164\163\040\154\151\141\142\056\051\061\045\060
+\043\006\003\125\004\013\023\034\050\143\051\040\061\071\071\071
+\040\105\156\164\162\165\163\164\056\156\145\164\040\114\151\155
+\151\164\145\144\061\063\060\061\006\003\125\004\003\023\052\105
+\156\164\162\165\163\164\056\156\145\164\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\050\062\060\064\070\051\060\036\027\015\071\071\061
+\062\062\064\061\067\065\060\065\061\132\027\015\061\071\061\062
+\062\064\061\070\062\060\065\061\132\060\201\264\061\024\060\022
+\006\003\125\004\012\023\013\105\156\164\162\165\163\164\056\156
+\145\164\061\100\060\076\006\003\125\004\013\024\067\167\167\167
+\056\145\156\164\162\165\163\164\056\156\145\164\057\103\120\123
+\137\062\060\064\070\040\151\156\143\157\162\160\056\040\142\171
+\040\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151
+\141\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050
+\143\051\040\061\071\071\071\040\105\156\164\162\165\163\164\056
+\156\145\164\040\114\151\155\151\164\145\144\061\063\060\061\006
+\003\125\004\003\023\052\105\156\164\162\165\163\164\056\156\145
+\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\040\050\062\060\064\070\051
+\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001
+\000\255\115\113\251\022\206\262\352\243\040\007\025\026\144\052
+\053\113\321\277\013\112\115\216\355\200\166\245\147\267\170\100
+\300\163\102\310\150\300\333\123\053\335\136\270\166\230\065\223
+\213\032\235\174\023\072\016\037\133\267\036\317\345\044\024\036
+\261\201\251\215\175\270\314\153\113\003\361\002\014\334\253\245
+\100\044\000\177\164\224\241\235\010\051\263\210\013\365\207\167
+\235\125\315\344\303\176\327\152\144\253\205\024\206\225\133\227
+\062\120\157\075\310\272\146\014\343\374\275\270\111\301\166\211
+\111\031\375\300\250\275\211\243\147\057\306\237\274\161\031\140
+\270\055\351\054\311\220\166\146\173\224\342\257\170\326\145\123
+\135\074\326\234\262\317\051\003\371\057\244\120\262\324\110\316
+\005\062\125\212\375\262\144\114\016\344\230\007\165\333\177\337
+\271\010\125\140\205\060\051\371\173\110\244\151\206\343\065\077
+\036\206\135\172\172\025\275\357\000\216\025\042\124\027\000\220
+\046\223\274\016\111\150\221\277\370\107\323\235\225\102\301\016
+\115\337\157\046\317\303\030\041\142\146\103\160\326\325\300\007
+\341\002\003\001\000\001\243\164\060\162\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\037\006
+\003\125\035\043\004\030\060\026\200\024\125\344\201\321\021\200
+\276\330\211\271\010\243\061\371\241\044\011\026\271\160\060\035
+\006\003\125\035\016\004\026\004\024\125\344\201\321\021\200\276
+\330\211\271\010\243\061\371\241\044\011\026\271\160\060\035\006
+\011\052\206\110\206\366\175\007\101\000\004\020\060\016\033\010
+\126\065\056\060\072\064\056\060\003\002\004\220\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\131\107\254\041\204\212\027\311\234\211\123\036\272\200\205\032
+\306\074\116\076\261\234\266\174\306\222\135\030\144\002\343\323
+\006\010\021\141\174\143\343\053\235\061\003\160\166\322\243\050
+\240\364\273\232\143\163\355\155\345\052\333\355\024\251\053\306
+\066\021\320\053\353\007\213\245\332\236\134\031\235\126\022\365
+\124\051\310\005\355\262\022\052\215\364\003\033\377\347\222\020
+\207\260\072\265\303\235\005\067\022\243\307\364\025\271\325\244
+\071\026\233\123\072\043\221\361\250\202\242\152\210\150\301\171
+\002\042\274\252\246\326\256\337\260\024\137\270\207\320\335\174
+\177\173\377\257\034\317\346\333\007\255\136\333\205\235\320\053
+\015\063\333\004\321\346\111\100\023\053\166\373\076\351\234\211
+\017\025\316\030\260\205\170\041\117\153\117\016\372\066\147\315
+\007\362\377\010\320\342\336\331\277\052\257\270\207\206\041\074
+\004\312\267\224\150\177\317\074\351\230\327\070\377\354\300\331
+\120\360\056\113\130\256\106\157\320\056\303\140\332\162\125\162
+\275\114\105\236\141\272\277\204\201\222\003\321\322\151\174\305
+END
+
+# Trust for Certificate "Entrust.net Premium 2048 Secure Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Premium 2048 Secure Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\200\035\142\320\173\104\235\134\134\003\134\230\352\141\372\104
+\074\052\130\376
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\272\041\352\040\326\335\333\217\301\127\213\100\255\241\374\374
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\040\050\062\060\064\070\051
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\143\271\146
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Baltimore CyberTrust Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Baltimore CyberTrust Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061
+\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155
+\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171
+\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004
+\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142
+\145\162\124\162\165\163\164\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061
+\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155
+\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171
+\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004
+\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142
+\145\162\124\162\165\163\164\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\002\000\000\271
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\167\060\202\002\137\240\003\002\001\002\002\004\002
+\000\000\271\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\111
+\105\061\022\060\020\006\003\125\004\012\023\011\102\141\154\164
+\151\155\157\162\145\061\023\060\021\006\003\125\004\013\023\012
+\103\171\142\145\162\124\162\165\163\164\061\042\060\040\006\003
+\125\004\003\023\031\102\141\154\164\151\155\157\162\145\040\103
+\171\142\145\162\124\162\165\163\164\040\122\157\157\164\060\036
+\027\015\060\060\060\065\061\062\061\070\064\066\060\060\132\027
+\015\062\065\060\065\061\062\062\063\065\071\060\060\132\060\132
+\061\013\060\011\006\003\125\004\006\023\002\111\105\061\022\060
+\020\006\003\125\004\012\023\011\102\141\154\164\151\155\157\162
+\145\061\023\060\021\006\003\125\004\013\023\012\103\171\142\145
+\162\124\162\165\163\164\061\042\060\040\006\003\125\004\003\023
+\031\102\141\154\164\151\155\157\162\145\040\103\171\142\145\162
+\124\162\165\163\164\040\122\157\157\164\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\243\004\273\042\253
+\230\075\127\350\046\162\232\265\171\324\051\342\341\350\225\200
+\261\260\343\133\216\053\051\232\144\337\241\135\355\260\011\005
+\155\333\050\056\316\142\242\142\376\264\210\332\022\353\070\353
+\041\235\300\101\053\001\122\173\210\167\323\034\217\307\272\271
+\210\265\152\011\347\163\350\021\100\247\321\314\312\142\215\055
+\345\217\013\246\120\322\250\120\303\050\352\365\253\045\207\212
+\232\226\034\251\147\270\077\014\325\367\371\122\023\057\302\033
+\325\160\160\360\217\300\022\312\006\313\232\341\331\312\063\172
+\167\326\370\354\271\361\150\104\102\110\023\322\300\302\244\256
+\136\140\376\266\246\005\374\264\335\007\131\002\324\131\030\230
+\143\365\245\143\340\220\014\175\135\262\006\172\363\205\352\353
+\324\003\256\136\204\076\137\377\025\355\151\274\371\071\066\162
+\165\317\167\122\115\363\311\220\054\271\075\345\311\043\123\077
+\037\044\230\041\134\007\231\051\275\306\072\354\347\156\206\072
+\153\227\164\143\063\275\150\030\061\360\170\215\166\277\374\236
+\216\135\052\206\247\115\220\334\047\032\071\002\003\001\000\001
+\243\105\060\103\060\035\006\003\125\035\016\004\026\004\024\345
+\235\131\060\202\107\130\314\254\372\010\124\066\206\173\072\265
+\004\115\360\060\022\006\003\125\035\023\001\001\377\004\010\060
+\006\001\001\377\002\001\003\060\016\006\003\125\035\017\001\001
+\377\004\004\003\002\001\006\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\003\202\001\001\000\205\014\135\216\344
+\157\121\150\102\005\240\335\273\117\047\045\204\003\275\367\144
+\375\055\327\060\343\244\020\027\353\332\051\051\266\171\077\166
+\366\031\023\043\270\020\012\371\130\244\324\141\160\275\004\141
+\152\022\212\027\325\012\275\305\274\060\174\326\351\014\045\215
+\206\100\117\354\314\243\176\070\306\067\021\117\355\335\150\061
+\216\114\322\263\001\164\356\276\165\136\007\110\032\177\160\377
+\026\134\204\300\171\205\270\005\375\177\276\145\021\243\017\300
+\002\264\370\122\067\071\004\325\251\061\172\030\277\240\052\364
+\022\231\367\243\105\202\343\074\136\365\235\236\265\310\236\174
+\056\310\244\236\116\010\024\113\155\375\160\155\153\032\143\275
+\144\346\037\267\316\360\362\237\056\273\033\267\362\120\210\163
+\222\302\342\343\026\215\232\062\002\253\216\030\335\351\020\021
+\356\176\065\253\220\257\076\060\224\172\320\063\075\247\145\017
+\365\374\216\236\142\317\107\104\054\001\135\273\035\265\062\322
+\107\322\070\056\320\376\201\334\062\152\036\265\356\074\325\374
+\347\201\035\031\303\044\102\352\143\071\251
+END
+
+# Trust for Certificate "Baltimore CyberTrust Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Baltimore CyberTrust Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\324\336\040\320\136\146\374\123\376\032\120\210\054\170\333\050
+\122\312\344\164
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\254\266\224\245\234\027\340\327\221\122\233\261\227\006\246\344
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061
+\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155
+\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171
+\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004
+\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142
+\145\162\124\162\165\163\164\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\002\000\000\271
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Equifax Secure Global eBusiness CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure Global eBusiness CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060
+\053\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102
+\165\163\151\156\145\163\163\040\103\101\055\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060
+\053\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102
+\165\163\151\156\145\163\163\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\220\060\202\001\371\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061\034
+\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141\170
+\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060\053
+\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040\123
+\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102\165
+\163\151\156\145\163\163\040\103\101\055\061\060\036\027\015\071
+\071\060\066\062\061\060\064\060\060\060\060\132\027\015\062\060
+\060\066\062\061\060\064\060\060\060\060\132\060\132\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\034\060\032\006\003
+\125\004\012\023\023\105\161\165\151\146\141\170\040\123\145\143
+\165\162\145\040\111\156\143\056\061\055\060\053\006\003\125\004
+\003\023\044\105\161\165\151\146\141\170\040\123\145\143\165\162
+\145\040\107\154\157\142\141\154\040\145\102\165\163\151\156\145
+\163\163\040\103\101\055\061\060\201\237\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211
+\002\201\201\000\272\347\027\220\002\145\261\064\125\074\111\302
+\121\325\337\247\321\067\217\321\347\201\163\101\122\140\233\235
+\241\027\046\170\255\307\261\350\046\224\062\265\336\063\215\072
+\057\333\362\232\172\132\163\230\243\134\351\373\212\163\033\134
+\347\303\277\200\154\315\251\364\326\053\300\367\371\231\252\143
+\242\261\107\002\017\324\344\121\072\022\074\154\212\132\124\204
+\160\333\301\305\220\317\162\105\313\250\131\300\315\063\235\077
+\243\226\353\205\063\041\034\076\036\076\140\156\166\234\147\205
+\305\310\303\141\002\003\001\000\001\243\146\060\144\060\021\006
+\011\140\206\110\001\206\370\102\001\001\004\004\003\002\000\007
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\037\006\003\125\035\043\004\030\060\026\200\024\276\250
+\240\164\162\120\153\104\267\311\043\330\373\250\377\263\127\153
+\150\154\060\035\006\003\125\035\016\004\026\004\024\276\250\240
+\164\162\120\153\104\267\311\043\330\373\250\377\263\127\153\150
+\154\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000
+\003\201\201\000\060\342\001\121\252\307\352\137\332\271\320\145
+\017\060\326\076\332\015\024\111\156\221\223\047\024\061\357\304
+\367\055\105\370\354\307\277\242\101\015\043\264\222\371\031\000
+\147\275\001\257\315\340\161\374\132\317\144\304\340\226\230\320
+\243\100\342\001\212\357\047\007\361\145\001\212\104\055\006\145
+\165\122\300\206\020\040\041\137\154\153\017\154\256\011\034\257
+\362\242\030\064\304\165\244\163\034\361\215\334\357\255\371\263
+\166\264\222\277\334\225\020\036\276\313\310\073\132\204\140\031
+\126\224\251\125
+END
+
+# Trust for Certificate "Equifax Secure Global eBusiness CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure Global eBusiness CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\176\170\112\020\034\202\145\314\055\341\361\155\107\264\100\312
+\331\012\031\105
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\217\135\167\006\047\304\230\074\133\223\170\347\327\175\233\314
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060
+\053\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102
+\165\163\151\156\145\163\163\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Equifax Secure eBusiness CA 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure eBusiness CA 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\123\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\046\060
+\044\006\003\125\004\003\023\035\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\145\102\165\163\151\156\145\163\163
+\040\103\101\055\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\123\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\046\060
+\044\006\003\125\004\003\023\035\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\145\102\165\163\151\156\145\163\163
+\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\004
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\202\060\202\001\353\240\003\002\001\002\002\001\004
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\123\061\013\060\011\006\003\125\004\006\023\002\125\123\061\034
+\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141\170
+\040\123\145\143\165\162\145\040\111\156\143\056\061\046\060\044
+\006\003\125\004\003\023\035\105\161\165\151\146\141\170\040\123
+\145\143\165\162\145\040\145\102\165\163\151\156\145\163\163\040
+\103\101\055\061\060\036\027\015\071\071\060\066\062\061\060\064
+\060\060\060\060\132\027\015\062\060\060\066\062\061\060\064\060
+\060\060\060\132\060\123\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\034\060\032\006\003\125\004\012\023\023\105\161
+\165\151\146\141\170\040\123\145\143\165\162\145\040\111\156\143
+\056\061\046\060\044\006\003\125\004\003\023\035\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\040\145\102\165\163\151
+\156\145\163\163\040\103\101\055\061\060\201\237\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\201\215\000\060
+\201\211\002\201\201\000\316\057\031\274\027\267\167\336\223\251
+\137\132\015\027\117\064\032\014\230\364\042\331\131\324\304\150
+\106\360\264\065\305\205\003\040\306\257\105\245\041\121\105\101
+\353\026\130\066\062\157\342\120\142\144\371\375\121\234\252\044
+\331\364\235\203\052\207\012\041\323\022\070\064\154\215\000\156
+\132\240\331\102\356\032\041\225\371\122\114\125\132\305\017\070
+\117\106\372\155\370\056\065\326\035\174\353\342\360\260\165\200
+\310\251\023\254\276\210\357\072\156\253\137\052\070\142\002\260
+\022\173\376\217\246\003\002\003\001\000\001\243\146\060\144\060
+\021\006\011\140\206\110\001\206\370\102\001\001\004\004\003\002
+\000\007\060\017\006\003\125\035\023\001\001\377\004\005\060\003
+\001\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024
+\112\170\062\122\021\333\131\026\066\136\337\301\024\066\100\152
+\107\174\114\241\060\035\006\003\125\035\016\004\026\004\024\112
+\170\062\122\021\333\131\026\066\136\337\301\024\066\100\152\107
+\174\114\241\060\015\006\011\052\206\110\206\367\015\001\001\004
+\005\000\003\201\201\000\165\133\250\233\003\021\346\351\126\114
+\315\371\251\114\300\015\232\363\314\145\151\346\045\166\314\131
+\267\326\124\303\035\315\231\254\031\335\264\205\325\340\075\374
+\142\040\247\204\113\130\145\361\342\371\225\041\077\365\324\176
+\130\036\107\207\124\076\130\241\265\265\370\052\357\161\347\274
+\303\366\261\111\106\342\327\240\153\345\126\172\232\047\230\174
+\106\142\024\347\311\374\156\003\022\171\200\070\035\110\202\215
+\374\027\376\052\226\053\265\142\246\246\075\275\177\222\131\315
+\132\052\202\262\067\171
+END
+
+# Trust for Certificate "Equifax Secure eBusiness CA 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure eBusiness CA 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\332\100\030\213\221\211\243\355\356\256\332\227\376\057\235\365
+\267\321\212\101
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\144\234\357\056\104\374\306\217\122\007\320\121\163\217\313\075
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\123\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\046\060
+\044\006\003\125\004\003\023\035\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\145\102\165\163\151\156\145\163\163
+\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\004
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Equifax Secure eBusiness CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure eBusiness CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\061\046\060\044\006\003\125\004
+\013\023\035\105\161\165\151\146\141\170\040\123\145\143\165\162
+\145\040\145\102\165\163\151\156\145\163\163\040\103\101\055\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\061\046\060\044\006\003\125\004
+\013\023\035\105\161\165\151\146\141\170\040\123\145\143\165\162
+\145\040\145\102\165\163\151\156\145\163\163\040\103\101\055\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\067\160\317\265
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\040\060\202\002\211\240\003\002\001\002\002\004\067
+\160\317\265\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\027\060\025\006\003\125\004\012\023\016\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\061\046\060\044\006\003
+\125\004\013\023\035\105\161\165\151\146\141\170\040\123\145\143
+\165\162\145\040\145\102\165\163\151\156\145\163\163\040\103\101
+\055\062\060\036\027\015\071\071\060\066\062\063\061\062\061\064
+\064\065\132\027\015\061\071\060\066\062\063\061\062\061\064\064
+\065\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\027\060\025\006\003\125\004\012\023\016\105\161\165\151
+\146\141\170\040\123\145\143\165\162\145\061\046\060\044\006\003
+\125\004\013\023\035\105\161\165\151\146\141\170\040\123\145\143
+\165\162\145\040\145\102\165\163\151\156\145\163\163\040\103\101
+\055\062\060\201\237\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\201\215\000\060\201\211\002\201\201\000\344
+\071\071\223\036\122\006\033\050\066\370\262\243\051\305\355\216
+\262\021\275\376\353\347\264\164\302\217\377\005\347\331\235\006
+\277\022\310\077\016\362\326\321\044\262\021\336\321\163\011\212
+\324\261\054\230\011\015\036\120\106\262\203\246\105\215\142\150
+\273\205\033\040\160\062\252\100\315\246\226\137\304\161\067\077
+\004\363\267\101\044\071\007\032\036\056\141\130\240\022\013\345
+\245\337\305\253\352\067\161\314\034\310\067\072\271\227\122\247
+\254\305\152\044\224\116\234\173\317\300\152\326\337\041\275\002
+\003\001\000\001\243\202\001\011\060\202\001\005\060\160\006\003
+\125\035\037\004\151\060\147\060\145\240\143\240\141\244\137\060
+\135\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027
+\060\025\006\003\125\004\012\023\016\105\161\165\151\146\141\170
+\040\123\145\143\165\162\145\061\046\060\044\006\003\125\004\013
+\023\035\105\161\165\151\146\141\170\040\123\145\143\165\162\145
+\040\145\102\165\163\151\156\145\163\163\040\103\101\055\062\061
+\015\060\013\006\003\125\004\003\023\004\103\122\114\061\060\032
+\006\003\125\035\020\004\023\060\021\201\017\062\060\061\071\060
+\066\062\063\061\062\061\064\064\065\132\060\013\006\003\125\035
+\017\004\004\003\002\001\006\060\037\006\003\125\035\043\004\030
+\060\026\200\024\120\236\013\352\257\136\271\040\110\246\120\152
+\313\375\330\040\172\247\202\166\060\035\006\003\125\035\016\004
+\026\004\024\120\236\013\352\257\136\271\040\110\246\120\152\313
+\375\330\040\172\247\202\166\060\014\006\003\125\035\023\004\005
+\060\003\001\001\377\060\032\006\011\052\206\110\206\366\175\007
+\101\000\004\015\060\013\033\005\126\063\056\060\143\003\002\006
+\300\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\201\201\000\014\206\202\255\350\116\032\365\216\211\047\342
+\065\130\075\051\264\007\217\066\120\225\277\156\301\236\353\304
+\220\262\205\250\273\267\102\340\017\007\071\337\373\236\220\262
+\321\301\076\123\237\003\104\260\176\113\364\157\344\174\037\347
+\342\261\344\270\232\357\303\275\316\336\013\062\064\331\336\050
+\355\063\153\304\324\327\075\022\130\253\175\011\055\313\160\365
+\023\212\224\241\047\244\326\160\305\155\224\265\311\175\235\240
+\322\306\010\111\331\146\233\246\323\364\013\334\305\046\127\341
+\221\060\352\315
+END
+
+# Trust for Certificate "Equifax Secure eBusiness CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Equifax Secure eBusiness CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\071\117\366\205\013\006\276\122\345\030\126\314\020\341\200\350
+\202\263\205\314
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\252\277\277\144\227\332\230\035\157\306\010\072\225\160\063\312
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\027\060\025\006\003\125\004\012\023\016\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\061\046\060\044\006\003\125\004
+\013\023\035\105\161\165\151\146\141\170\040\123\145\143\165\162
+\145\040\145\102\165\163\151\156\145\163\163\040\103\101\055\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\067\160\317\265
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Visa International Global Root 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Visa International Global Root 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\022\060\020\006\003\125\004\003\023\011\107\120\040\122\157\157
+\164\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\022\060\020\006\003\125\004\003\023\011\107\120\040\122\157\157
+\164\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\036
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\200\060\202\002\150\240\003\002\001\002\002\002\003
+\036\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\022\060\020\006\003\125\004\003\023\011\107\120\040\122\157\157
+\164\040\062\060\036\027\015\060\060\060\070\061\066\062\062\065
+\061\060\060\132\027\015\062\060\060\070\061\065\062\063\065\071
+\060\060\132\060\141\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\015\060\013\006\003\125\004\012\023\004\126\111\123
+\101\061\057\060\055\006\003\125\004\013\023\046\126\151\163\141
+\040\111\156\164\145\162\156\141\164\151\157\156\141\154\040\123
+\145\162\166\151\143\145\040\101\163\163\157\143\151\141\164\151
+\157\156\061\022\060\020\006\003\125\004\003\023\011\107\120\040
+\122\157\157\164\040\062\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\251\001\160\265\252\304\100\360\253
+\152\046\141\171\031\000\374\277\233\067\131\014\257\157\144\033
+\370\332\225\224\044\151\063\021\160\312\343\126\164\242\027\127
+\144\134\040\006\341\326\357\161\267\073\367\253\301\151\320\111
+\244\261\004\327\364\127\142\211\134\260\165\055\027\044\151\343
+\102\140\344\356\164\326\253\200\126\330\210\050\341\373\155\042
+\375\043\174\106\163\117\176\124\163\036\250\054\125\130\165\267
+\114\363\132\105\245\002\032\372\332\235\303\105\303\042\136\363
+\213\361\140\051\322\307\137\264\014\072\121\203\357\060\370\324
+\347\307\362\372\231\243\042\120\276\371\005\067\243\255\355\232
+\303\346\354\210\033\266\031\047\033\070\213\200\115\354\271\307
+\305\211\313\374\032\062\355\043\360\265\001\130\371\366\217\340
+\205\251\114\011\162\071\022\333\263\365\317\116\142\144\332\306
+\031\025\072\143\035\351\027\125\241\114\042\074\064\062\106\370
+\145\127\272\053\357\066\214\152\372\331\331\104\364\252\335\204
+\327\015\034\262\124\254\062\205\264\144\015\336\101\273\261\064
+\306\001\206\062\144\325\237\002\003\001\000\001\243\102\060\100
+\060\035\006\003\125\035\016\004\026\004\024\236\175\113\064\277
+\161\255\302\005\366\003\165\200\316\251\117\032\304\044\114\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\041\245\166\024\125\371\255\047\160\217\074\364
+\325\154\310\314\012\253\243\230\013\212\006\043\305\311\141\333
+\231\007\151\065\046\061\376\307\056\204\302\231\141\324\015\351
+\175\056\023\053\174\216\205\266\205\307\113\317\065\266\054\107
+\075\316\051\057\330\157\237\211\034\144\223\277\010\275\166\320
+\220\212\224\263\177\050\133\156\254\115\063\054\355\145\334\026
+\314\342\315\256\244\075\142\222\006\225\046\277\337\271\344\040
+\246\163\152\301\276\367\224\104\326\115\157\052\013\153\030\115
+\164\020\066\150\152\132\301\152\247\335\066\051\214\270\060\213
+\117\041\077\000\056\124\060\007\072\272\212\344\303\236\312\330
+\265\330\173\316\165\105\146\007\364\155\055\330\172\312\351\211
+\212\362\043\330\057\313\156\000\066\117\373\360\057\001\314\017
+\300\042\145\364\253\342\116\141\055\003\202\175\221\026\265\060
+\325\024\336\136\307\220\374\241\374\253\020\257\134\153\160\247
+\007\357\051\206\350\262\045\307\040\377\046\335\167\357\171\104
+\024\304\275\335\073\305\003\233\167\043\354\240\354\273\132\071
+\265\314\255\006
+END
+
+# Trust for Certificate "Visa International Global Root 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Visa International Global Root 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\311\015\033\352\210\075\247\321\027\276\073\171\364\041\016\032
+\130\224\247\055
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\065\110\225\066\112\124\132\162\226\216\340\144\314\357\054\214
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\022\060\020\006\003\125\004\003\023\011\107\120\040\122\157\157
+\164\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\036
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "beTRUSTed Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\127\127\061
+\022\060\020\006\003\125\004\012\023\011\142\145\124\122\125\123
+\124\145\144\061\033\060\031\006\003\125\004\003\023\022\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\163
+\061\032\060\030\006\003\125\004\003\023\021\142\145\124\122\125
+\123\124\145\144\040\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\127\127\061
+\022\060\020\006\003\125\004\012\023\011\142\145\124\122\125\123
+\124\145\144\061\033\060\031\006\003\125\004\003\023\022\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\163
+\061\032\060\030\006\003\125\004\003\023\021\142\145\124\122\125
+\123\124\145\144\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\071\117\175\207
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\054\060\202\004\024\240\003\002\001\002\002\004\071
+\117\175\207\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\127
+\127\061\022\060\020\006\003\125\004\012\023\011\142\145\124\122
+\125\123\124\145\144\061\033\060\031\006\003\125\004\003\023\022
+\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040\103
+\101\163\061\032\060\030\006\003\125\004\003\023\021\142\145\124
+\122\125\123\124\145\144\040\122\157\157\164\040\103\101\060\036
+\027\015\060\060\060\066\062\060\061\064\062\061\060\064\132\027
+\015\061\060\060\066\062\060\061\063\062\061\060\064\132\060\132
+\061\013\060\011\006\003\125\004\006\023\002\127\127\061\022\060
+\020\006\003\125\004\012\023\011\142\145\124\122\125\123\124\145
+\144\061\033\060\031\006\003\125\004\003\023\022\142\145\124\122
+\125\123\124\145\144\040\122\157\157\164\040\103\101\163\061\032
+\060\030\006\003\125\004\003\023\021\142\145\124\122\125\123\124
+\145\144\040\122\157\157\164\040\103\101\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\324\264\163\172\023
+\012\070\125\001\276\211\126\341\224\236\324\276\132\353\112\064
+\165\033\141\051\304\341\255\010\140\041\170\110\377\264\320\372
+\136\101\215\141\104\207\350\355\311\130\372\374\223\232\337\117
+\352\076\065\175\370\063\172\346\361\327\315\157\111\113\075\117
+\055\156\016\203\072\030\170\167\243\317\347\364\115\163\330\232
+\073\032\035\276\225\123\317\040\227\302\317\076\044\122\154\014
+\216\145\131\305\161\377\142\011\217\252\305\217\314\140\240\163
+\112\327\070\077\025\162\277\242\227\267\160\350\257\342\176\026
+\006\114\365\252\144\046\162\007\045\255\065\374\030\261\046\327
+\330\377\031\016\203\033\214\334\170\105\147\064\075\364\257\034
+\215\344\155\153\355\040\263\147\232\264\141\313\027\157\211\065
+\377\347\116\300\062\022\347\356\354\337\377\227\060\164\355\215
+\107\216\353\264\303\104\346\247\114\177\126\103\350\270\274\266
+\276\372\203\227\346\273\373\304\266\223\276\031\030\076\214\201
+\271\163\210\026\364\226\103\234\147\163\027\220\330\011\156\143
+\254\112\266\043\304\001\241\255\244\344\305\002\003\001\000\001
+\243\202\001\370\060\202\001\364\060\017\006\003\125\035\023\001
+\001\377\004\005\060\003\001\001\377\060\202\001\131\006\003\125
+\035\040\004\202\001\120\060\202\001\114\060\202\001\110\006\012
+\053\006\001\004\001\261\076\001\000\000\060\202\001\070\060\202
+\001\001\006\010\053\006\001\005\005\007\002\002\060\201\364\032
+\201\361\122\145\154\151\141\156\143\145\040\157\156\040\164\150
+\151\163\040\143\145\162\164\151\146\151\143\141\164\145\040\142
+\171\040\141\156\171\040\160\141\162\164\171\040\141\163\163\165
+\155\145\163\040\141\143\143\145\160\164\141\156\143\145\040\157
+\146\040\164\150\145\040\164\150\145\156\040\141\160\160\154\151
+\143\141\142\154\145\040\163\164\141\156\144\141\162\144\040\164
+\145\162\155\163\040\141\156\144\040\143\157\156\144\151\164\151
+\157\156\163\040\157\146\040\165\163\145\054\040\141\156\144\040
+\143\145\162\164\151\146\151\143\141\164\151\157\156\040\160\162
+\141\143\164\151\143\145\040\163\164\141\164\145\155\145\156\164
+\054\040\167\150\151\143\150\040\143\141\156\040\142\145\040\146
+\157\165\156\144\040\141\164\040\142\145\124\122\125\123\124\145
+\144\047\163\040\167\145\142\040\163\151\164\145\054\040\150\164
+\164\160\163\072\057\057\167\167\167\056\142\145\124\122\125\123
+\124\145\144\056\143\157\155\057\166\141\165\154\164\057\164\145
+\162\155\163\060\061\006\010\053\006\001\005\005\007\002\001\026
+\045\150\164\164\160\163\072\057\057\167\167\167\056\142\145\124
+\122\125\123\124\145\144\056\143\157\155\057\166\141\165\154\164
+\057\164\145\162\155\163\060\064\006\003\125\035\037\004\055\060
+\053\060\051\240\047\240\045\244\043\060\041\061\022\060\020\006
+\003\125\004\012\023\011\142\145\124\122\125\123\124\145\144\061
+\013\060\011\006\003\125\004\006\023\002\127\127\060\035\006\003
+\125\035\016\004\026\004\024\052\271\233\151\056\073\233\330\315
+\336\052\061\004\064\153\312\007\030\253\147\060\037\006\003\125
+\035\043\004\030\060\026\200\024\052\271\233\151\056\073\233\330
+\315\336\052\061\004\064\153\312\007\030\253\147\060\016\006\003
+\125\035\017\001\001\377\004\004\003\002\001\376\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\171\141\333\243\136\156\026\261\352\166\121\371\313\025\233\313
+\151\276\346\201\153\237\050\037\145\076\335\021\205\222\324\350
+\101\277\176\063\275\043\347\361\040\277\244\264\246\031\001\306
+\214\215\065\174\145\244\117\011\244\326\330\043\025\005\023\247
+\103\171\257\333\243\016\233\173\170\032\363\004\206\132\306\366
+\214\040\107\070\111\120\006\235\162\147\072\360\230\003\255\226
+\147\104\374\077\020\015\206\115\344\000\073\051\173\316\073\073
+\231\206\141\045\100\204\334\023\142\267\372\312\131\326\003\036
+\326\123\001\315\155\114\150\125\100\341\356\153\307\052\000\000
+\110\202\263\012\001\303\140\052\014\367\202\065\356\110\206\226
+\344\164\324\075\352\001\161\272\004\165\100\247\251\177\071\071
+\232\125\227\051\145\256\031\125\045\005\162\107\323\350\030\334
+\270\351\257\103\163\001\022\164\243\341\134\137\025\135\044\363
+\371\344\364\266\147\147\022\347\144\042\212\366\245\101\246\034
+\266\140\143\105\212\020\264\272\106\020\256\101\127\145\154\077
+\043\020\077\041\020\131\267\344\100\335\046\014\043\366\252\256
+END
+
+# Trust for Certificate "beTRUSTed Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\133\315\315\314\146\366\334\344\104\037\343\175\134\303\023\114
+\106\364\160\070
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\205\312\166\132\033\321\150\042\334\242\043\022\312\306\200\064
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\127\127\061
+\022\060\020\006\003\125\004\012\023\011\142\145\124\122\125\123
+\124\145\144\061\033\060\031\006\003\125\004\003\023\022\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\163
+\061\032\060\030\006\003\125\004\003\023\021\142\145\124\122\125
+\123\124\145\144\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\071\117\175\207
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AddTrust Low-Value Services Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Low-Value Services Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\003\023\030\101
+\144\144\124\162\165\163\164\040\103\154\141\163\163\040\061\040
+\103\101\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\003\023\030\101
+\144\144\124\162\165\163\164\040\103\154\141\163\163\040\061\040
+\103\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\030\060\202\003\000\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\145\061\013\060\011\006\003\125\004\006\023\002\123\105\061\024
+\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165\163
+\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024\101
+\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164\167
+\157\162\153\061\041\060\037\006\003\125\004\003\023\030\101\144
+\144\124\162\165\163\164\040\103\154\141\163\163\040\061\040\103
+\101\040\122\157\157\164\060\036\027\015\060\060\060\065\063\060
+\061\060\063\070\063\061\132\027\015\062\060\060\065\063\060\061
+\060\063\070\063\061\132\060\145\061\013\060\011\006\003\125\004
+\006\023\002\123\105\061\024\060\022\006\003\125\004\012\023\013
+\101\144\144\124\162\165\163\164\040\101\102\061\035\060\033\006
+\003\125\004\013\023\024\101\144\144\124\162\165\163\164\040\124
+\124\120\040\116\145\164\167\157\162\153\061\041\060\037\006\003
+\125\004\003\023\030\101\144\144\124\162\165\163\164\040\103\154
+\141\163\163\040\061\040\103\101\040\122\157\157\164\060\202\001
+\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\202\001\017\000\060\202\001\012\002\202\001\001\000\226\226
+\324\041\111\140\342\153\350\101\007\014\336\304\340\334\023\043
+\315\301\065\307\373\326\116\021\012\147\136\365\006\133\153\245
+\010\073\133\051\026\072\347\207\262\064\006\305\274\005\245\003
+\174\202\313\051\020\256\341\210\201\275\326\236\323\376\055\126
+\301\025\316\343\046\235\025\056\020\373\006\217\060\004\336\247
+\264\143\264\377\261\234\256\074\257\167\266\126\305\265\253\242
+\351\151\072\075\016\063\171\062\077\160\202\222\231\141\155\215
+\060\010\217\161\077\246\110\127\031\370\045\334\113\146\134\245
+\164\217\230\256\310\371\300\006\042\347\254\163\337\245\056\373
+\122\334\261\025\145\040\372\065\146\151\336\337\054\361\156\274
+\060\333\054\044\022\333\353\065\065\150\220\313\000\260\227\041
+\075\164\041\043\145\064\053\273\170\131\243\326\341\166\071\232
+\244\111\216\214\164\257\156\244\232\243\331\233\322\070\134\233
+\242\030\314\165\043\204\276\353\342\115\063\161\216\032\360\302
+\370\307\035\242\255\003\227\054\370\317\045\306\366\270\044\061
+\261\143\135\222\177\143\360\045\311\123\056\037\277\115\002\003
+\001\000\001\243\201\322\060\201\317\060\035\006\003\125\035\016
+\004\026\004\024\225\261\264\360\224\266\275\307\332\321\021\011
+\041\276\301\257\111\375\020\173\060\013\006\003\125\035\017\004
+\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004
+\005\060\003\001\001\377\060\201\217\006\003\125\035\043\004\201
+\207\060\201\204\200\024\225\261\264\360\224\266\275\307\332\321
+\021\011\041\276\301\257\111\375\020\173\241\151\244\147\060\145
+\061\013\060\011\006\003\125\004\006\023\002\123\105\061\024\060
+\022\006\003\125\004\012\023\013\101\144\144\124\162\165\163\164
+\040\101\102\061\035\060\033\006\003\125\004\013\023\024\101\144
+\144\124\162\165\163\164\040\124\124\120\040\116\145\164\167\157
+\162\153\061\041\060\037\006\003\125\004\003\023\030\101\144\144
+\124\162\165\163\164\040\103\154\141\163\163\040\061\040\103\101
+\040\122\157\157\164\202\001\001\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\054\155\144\033
+\037\315\015\335\271\001\372\226\143\064\062\110\107\231\256\227
+\355\375\162\026\246\163\107\132\364\353\335\351\365\326\373\105
+\314\051\211\104\135\277\106\071\075\350\356\274\115\124\206\036
+\035\154\343\027\047\103\341\211\126\053\251\157\162\116\111\063
+\343\162\174\052\043\232\274\076\377\050\052\355\243\377\034\043
+\272\103\127\011\147\115\113\142\006\055\370\377\154\235\140\036
+\330\034\113\175\265\061\057\331\320\174\135\370\336\153\203\030
+\170\067\127\057\350\063\007\147\337\036\307\153\052\225\166\256
+\217\127\243\360\364\122\264\251\123\010\317\340\117\323\172\123
+\213\375\273\034\126\066\362\376\262\266\345\166\273\325\042\145
+\247\077\376\321\146\255\013\274\153\231\206\357\077\175\363\030
+\062\312\173\306\343\253\144\106\225\370\046\151\331\125\203\173
+\054\226\007\377\131\054\104\243\306\345\351\251\334\241\143\200
+\132\041\136\041\317\123\124\360\272\157\211\333\250\252\225\317
+\213\343\161\314\036\033\040\104\010\300\172\266\100\375\304\344
+\065\341\035\026\034\320\274\053\216\326\161\331
+END
+
+# Trust for Certificate "AddTrust Low-Value Services Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Low-Value Services Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\314\253\016\240\114\043\001\326\151\173\335\067\237\315\022\353
+\044\343\224\235
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\036\102\225\002\063\222\153\271\137\300\177\332\326\262\113\374
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\003\023\030\101
+\144\144\124\162\165\163\164\040\103\154\141\163\163\040\061\040
+\103\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AddTrust External Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust External Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\157\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\046\060\044\006\003\125\004\013\023\035
+\101\144\144\124\162\165\163\164\040\105\170\164\145\162\156\141
+\154\040\124\124\120\040\116\145\164\167\157\162\153\061\042\060
+\040\006\003\125\004\003\023\031\101\144\144\124\162\165\163\164
+\040\105\170\164\145\162\156\141\154\040\103\101\040\122\157\157
+\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\157\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\046\060\044\006\003\125\004\013\023\035
+\101\144\144\124\162\165\163\164\040\105\170\164\145\162\156\141
+\154\040\124\124\120\040\116\145\164\167\157\162\153\061\042\060
+\040\006\003\125\004\003\023\031\101\144\144\124\162\165\163\164
+\040\105\170\164\145\162\156\141\154\040\103\101\040\122\157\157
+\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\066\060\202\003\036\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\157\061\013\060\011\006\003\125\004\006\023\002\123\105\061\024
+\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165\163
+\164\040\101\102\061\046\060\044\006\003\125\004\013\023\035\101
+\144\144\124\162\165\163\164\040\105\170\164\145\162\156\141\154
+\040\124\124\120\040\116\145\164\167\157\162\153\061\042\060\040
+\006\003\125\004\003\023\031\101\144\144\124\162\165\163\164\040
+\105\170\164\145\162\156\141\154\040\103\101\040\122\157\157\164
+\060\036\027\015\060\060\060\065\063\060\061\060\064\070\063\070
+\132\027\015\062\060\060\065\063\060\061\060\064\070\063\070\132
+\060\157\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\046\060\044\006\003\125\004\013\023\035
+\101\144\144\124\162\165\163\164\040\105\170\164\145\162\156\141
+\154\040\124\124\120\040\116\145\164\167\157\162\153\061\042\060
+\040\006\003\125\004\003\023\031\101\144\144\124\162\165\163\164
+\040\105\170\164\145\162\156\141\154\040\103\101\040\122\157\157
+\164\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001
+\001\000\267\367\032\063\346\362\000\004\055\071\340\116\133\355
+\037\274\154\017\315\265\372\043\266\316\336\233\021\063\227\244
+\051\114\175\223\237\275\112\274\223\355\003\032\343\217\317\345
+\155\120\132\326\227\051\224\132\200\260\111\172\333\056\225\375
+\270\312\277\067\070\055\036\076\221\101\255\160\126\307\360\117
+\077\350\062\236\164\312\310\220\124\351\306\137\017\170\235\232
+\100\074\016\254\141\252\136\024\217\236\207\241\152\120\334\327
+\232\116\257\005\263\246\161\224\234\161\263\120\140\012\307\023
+\235\070\007\206\002\250\351\250\151\046\030\220\253\114\260\117
+\043\253\072\117\204\330\337\316\237\341\151\157\273\327\102\327
+\153\104\344\307\255\356\155\101\137\162\132\161\010\067\263\171
+\145\244\131\240\224\067\367\000\057\015\302\222\162\332\320\070
+\162\333\024\250\105\304\135\052\175\267\264\326\304\356\254\315
+\023\104\267\311\053\335\103\000\045\372\141\271\151\152\130\043
+\021\267\247\063\217\126\165\131\365\315\051\327\106\267\012\053
+\145\266\323\102\157\025\262\270\173\373\357\351\135\123\325\064
+\132\047\002\003\001\000\001\243\201\334\060\201\331\060\035\006
+\003\125\035\016\004\026\004\024\255\275\230\172\064\264\046\367
+\372\304\046\124\357\003\275\340\044\313\124\032\060\013\006\003
+\125\035\017\004\004\003\002\001\006\060\017\006\003\125\035\023
+\001\001\377\004\005\060\003\001\001\377\060\201\231\006\003\125
+\035\043\004\201\221\060\201\216\200\024\255\275\230\172\064\264
+\046\367\372\304\046\124\357\003\275\340\044\313\124\032\241\163
+\244\161\060\157\061\013\060\011\006\003\125\004\006\023\002\123
+\105\061\024\060\022\006\003\125\004\012\023\013\101\144\144\124
+\162\165\163\164\040\101\102\061\046\060\044\006\003\125\004\013
+\023\035\101\144\144\124\162\165\163\164\040\105\170\164\145\162
+\156\141\154\040\124\124\120\040\116\145\164\167\157\162\153\061
+\042\060\040\006\003\125\004\003\023\031\101\144\144\124\162\165
+\163\164\040\105\170\164\145\162\156\141\154\040\103\101\040\122
+\157\157\164\202\001\001\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\001\001\000\260\233\340\205\045\302
+\326\043\342\017\226\006\222\235\101\230\234\331\204\171\201\331
+\036\133\024\007\043\066\145\217\260\330\167\273\254\101\154\107
+\140\203\121\260\371\062\075\347\374\366\046\023\307\200\026\245
+\277\132\374\207\317\170\171\211\041\232\342\114\007\012\206\065
+\274\362\336\121\304\322\226\267\334\176\116\356\160\375\034\071
+\353\014\002\121\024\055\216\275\026\340\301\337\106\165\347\044
+\255\354\364\102\264\205\223\160\020\147\272\235\006\065\112\030
+\323\053\172\314\121\102\241\172\143\321\346\273\241\305\053\302
+\066\276\023\015\346\275\143\176\171\173\247\011\015\100\253\152
+\335\217\212\303\366\366\214\032\102\005\121\324\105\365\237\247
+\142\041\150\025\040\103\074\231\347\174\275\044\330\251\221\027
+\163\210\077\126\033\061\070\030\264\161\017\232\315\310\016\236
+\216\056\033\341\214\230\203\313\037\061\361\104\114\306\004\163
+\111\166\140\017\307\370\275\027\200\153\056\351\314\114\016\132
+\232\171\017\040\012\056\325\236\143\046\036\125\222\224\330\202
+\027\132\173\320\274\307\217\116\206\004
+END
+
+# Trust for Certificate "AddTrust External Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust External Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\002\372\363\342\221\103\124\150\140\170\127\151\115\365\344\133
+\150\205\030\150
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\035\065\124\004\205\170\260\077\102\102\115\277\040\163\012\077
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\157\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\046\060\044\006\003\125\004\013\023\035
+\101\144\144\124\162\165\163\164\040\105\170\164\145\162\156\141
+\154\040\124\124\120\040\116\145\164\167\157\162\153\061\042\060
+\040\006\003\125\004\003\023\031\101\144\144\124\162\165\163\164
+\040\105\170\164\145\162\156\141\154\040\103\101\040\122\157\157
+\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AddTrust Public Services Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Public Services Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\040\060\036\006\003\125\004\003\023\027\101
+\144\144\124\162\165\163\164\040\120\165\142\154\151\143\040\103
+\101\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\040\060\036\006\003\125\004\003\023\027\101
+\144\144\124\162\165\163\164\040\120\165\142\154\151\143\040\103
+\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\025\060\202\002\375\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\144\061\013\060\011\006\003\125\004\006\023\002\123\105\061\024
+\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165\163
+\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024\101
+\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164\167
+\157\162\153\061\040\060\036\006\003\125\004\003\023\027\101\144
+\144\124\162\165\163\164\040\120\165\142\154\151\143\040\103\101
+\040\122\157\157\164\060\036\027\015\060\060\060\065\063\060\061
+\060\064\061\065\060\132\027\015\062\060\060\065\063\060\061\060
+\064\061\065\060\132\060\144\061\013\060\011\006\003\125\004\006
+\023\002\123\105\061\024\060\022\006\003\125\004\012\023\013\101
+\144\144\124\162\165\163\164\040\101\102\061\035\060\033\006\003
+\125\004\013\023\024\101\144\144\124\162\165\163\164\040\124\124
+\120\040\116\145\164\167\157\162\153\061\040\060\036\006\003\125
+\004\003\023\027\101\144\144\124\162\165\163\164\040\120\165\142
+\154\151\143\040\103\101\040\122\157\157\164\060\202\001\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\001\017\000\060\202\001\012\002\202\001\001\000\351\032\060\217
+\203\210\024\301\040\330\074\233\217\033\176\003\164\273\332\151
+\323\106\245\370\216\302\014\021\220\121\245\057\146\124\100\125
+\352\333\037\112\126\356\237\043\156\364\071\313\241\271\157\362
+\176\371\135\207\046\141\236\034\370\342\354\246\201\370\041\305
+\044\314\021\014\077\333\046\162\172\307\001\227\007\027\371\327
+\030\054\060\175\016\172\036\142\036\306\113\300\375\175\142\167
+\323\104\036\047\366\077\113\104\263\267\070\331\071\037\140\325
+\121\222\163\003\264\000\151\343\363\024\116\356\321\334\011\317
+\167\064\106\120\260\370\021\362\376\070\171\367\007\071\376\121
+\222\227\013\133\010\137\064\206\001\255\210\227\353\146\315\136
+\321\377\334\175\362\204\332\272\167\255\334\200\010\307\247\207
+\326\125\237\227\152\350\310\021\144\272\347\031\051\077\021\263
+\170\220\204\040\122\133\021\357\170\320\203\366\325\110\220\320
+\060\034\317\200\371\140\376\171\344\210\362\335\000\353\224\105
+\353\145\224\151\100\272\300\325\264\270\272\175\004\021\250\353
+\061\005\226\224\116\130\041\216\237\320\140\375\002\003\001\000
+\001\243\201\321\060\201\316\060\035\006\003\125\035\016\004\026
+\004\024\201\076\067\330\222\260\037\167\237\134\264\253\163\252
+\347\366\064\140\057\372\060\013\006\003\125\035\017\004\004\003
+\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\201\216\006\003\125\035\043\004\201\206\060
+\201\203\200\024\201\076\067\330\222\260\037\167\237\134\264\253
+\163\252\347\366\064\140\057\372\241\150\244\146\060\144\061\013
+\060\011\006\003\125\004\006\023\002\123\105\061\024\060\022\006
+\003\125\004\012\023\013\101\144\144\124\162\165\163\164\040\101
+\102\061\035\060\033\006\003\125\004\013\023\024\101\144\144\124
+\162\165\163\164\040\124\124\120\040\116\145\164\167\157\162\153
+\061\040\060\036\006\003\125\004\003\023\027\101\144\144\124\162
+\165\163\164\040\120\165\142\154\151\143\040\103\101\040\122\157
+\157\164\202\001\001\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\003\367\025\112\370\044\332
+\043\126\026\223\166\335\066\050\271\256\033\270\303\361\144\272
+\040\030\170\225\051\047\127\005\274\174\052\364\271\121\125\332
+\207\002\336\017\026\027\061\370\252\171\056\011\023\273\257\262
+\040\031\022\345\223\371\113\371\203\350\104\325\262\101\045\277
+\210\165\157\377\020\374\112\124\320\137\360\372\357\066\163\175
+\033\066\105\306\041\155\264\025\270\116\317\234\134\245\075\132
+\000\216\006\343\074\153\062\173\362\237\360\266\375\337\360\050
+\030\110\360\306\274\320\277\064\200\226\302\112\261\155\216\307
+\220\105\336\057\147\254\105\004\243\172\334\125\222\311\107\146
+\330\032\214\307\355\234\116\232\340\022\273\265\152\114\204\341
+\341\042\015\207\000\144\376\214\175\142\071\145\246\357\102\266
+\200\045\022\141\001\250\044\023\160\000\021\046\137\372\065\120
+\305\110\314\006\107\350\047\330\160\215\137\144\346\241\104\046
+\136\042\354\222\315\377\102\232\104\041\155\134\305\343\042\035
+\137\107\022\347\316\137\135\372\330\252\261\063\055\331\166\362
+\116\072\063\014\053\263\055\220\006
+END
+
+# Trust for Certificate "AddTrust Public Services Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Public Services Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\052\266\050\110\136\170\373\363\255\236\171\020\335\153\337\231
+\162\054\226\345
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\301\142\076\043\305\202\163\234\003\131\113\053\351\167\111\177
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\040\060\036\006\003\125\004\003\023\027\101
+\144\144\124\162\165\163\164\040\120\165\142\154\151\143\040\103
+\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AddTrust Qualified Certificates Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Qualified Certificates Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\147\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\043\060\041\006\003\125\004\003\023\032\101
+\144\144\124\162\165\163\164\040\121\165\141\154\151\146\151\145
+\144\040\103\101\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\147\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\043\060\041\006\003\125\004\003\023\032\101
+\144\144\124\162\165\163\164\040\121\165\141\154\151\146\151\145
+\144\040\103\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\036\060\202\003\006\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\147\061\013\060\011\006\003\125\004\006\023\002\123\105\061\024
+\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165\163
+\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024\101
+\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164\167
+\157\162\153\061\043\060\041\006\003\125\004\003\023\032\101\144
+\144\124\162\165\163\164\040\121\165\141\154\151\146\151\145\144
+\040\103\101\040\122\157\157\164\060\036\027\015\060\060\060\065
+\063\060\061\060\064\064\065\060\132\027\015\062\060\060\065\063
+\060\061\060\064\064\065\060\132\060\147\061\013\060\011\006\003
+\125\004\006\023\002\123\105\061\024\060\022\006\003\125\004\012
+\023\013\101\144\144\124\162\165\163\164\040\101\102\061\035\060
+\033\006\003\125\004\013\023\024\101\144\144\124\162\165\163\164
+\040\124\124\120\040\116\145\164\167\157\162\153\061\043\060\041
+\006\003\125\004\003\023\032\101\144\144\124\162\165\163\164\040
+\121\165\141\154\151\146\151\145\144\040\103\101\040\122\157\157
+\164\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001
+\001\000\344\036\232\376\334\011\132\207\244\237\107\276\021\137
+\257\204\064\333\142\074\171\170\267\351\060\265\354\014\034\052
+\304\026\377\340\354\161\353\212\365\021\156\355\117\015\221\322
+\022\030\055\111\025\001\302\244\042\023\307\021\144\377\042\022
+\232\271\216\134\057\010\317\161\152\263\147\001\131\361\135\106
+\363\260\170\245\366\016\102\172\343\177\033\314\320\360\267\050
+\375\052\352\236\263\260\271\004\252\375\366\307\264\261\270\052
+\240\373\130\361\031\240\157\160\045\176\076\151\112\177\017\042
+\330\357\255\010\021\232\051\231\341\252\104\105\232\022\136\076
+\235\155\122\374\347\240\075\150\057\360\113\160\174\023\070\255
+\274\025\045\361\326\316\253\242\300\061\326\057\237\340\377\024
+\131\374\204\223\331\207\174\114\124\023\353\237\321\055\021\370
+\030\072\072\336\045\331\367\323\100\355\244\006\022\304\073\341
+\221\301\126\065\360\024\334\145\066\011\156\253\244\007\307\065
+\321\302\003\063\066\133\165\046\155\102\361\022\153\103\157\113
+\161\224\372\064\035\355\023\156\312\200\177\230\057\154\271\145
+\330\351\002\003\001\000\001\243\201\324\060\201\321\060\035\006
+\003\125\035\016\004\026\004\024\071\225\213\142\213\134\311\324
+\200\272\130\017\227\077\025\010\103\314\230\247\060\013\006\003
+\125\035\017\004\004\003\002\001\006\060\017\006\003\125\035\023
+\001\001\377\004\005\060\003\001\001\377\060\201\221\006\003\125
+\035\043\004\201\211\060\201\206\200\024\071\225\213\142\213\134
+\311\324\200\272\130\017\227\077\025\010\103\314\230\247\241\153
+\244\151\060\147\061\013\060\011\006\003\125\004\006\023\002\123
+\105\061\024\060\022\006\003\125\004\012\023\013\101\144\144\124
+\162\165\163\164\040\101\102\061\035\060\033\006\003\125\004\013
+\023\024\101\144\144\124\162\165\163\164\040\124\124\120\040\116
+\145\164\167\157\162\153\061\043\060\041\006\003\125\004\003\023
+\032\101\144\144\124\162\165\163\164\040\121\165\141\154\151\146
+\151\145\144\040\103\101\040\122\157\157\164\202\001\001\060\015
+\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001
+\001\000\031\253\165\352\370\213\145\141\225\023\272\151\004\357
+\206\312\023\240\307\252\117\144\033\077\030\366\250\055\054\125
+\217\005\267\060\352\102\152\035\300\045\121\055\247\277\014\263
+\355\357\010\177\154\074\106\032\352\030\103\337\166\314\371\146
+\206\234\054\150\365\351\027\370\061\263\030\304\326\110\175\043
+\114\150\301\176\273\001\024\157\305\331\156\336\273\004\102\152
+\370\366\134\175\345\332\372\207\353\015\065\122\147\320\236\227
+\166\005\223\077\225\307\001\346\151\125\070\177\020\141\231\311
+\343\137\246\312\076\202\143\110\252\342\010\110\076\252\362\262
+\205\142\246\264\247\331\275\067\234\150\265\055\126\175\260\267
+\077\240\261\007\326\351\117\334\336\105\161\060\062\177\033\056
+\011\371\277\122\241\356\302\200\076\006\134\056\125\100\301\033
+\365\160\105\260\334\135\372\366\162\132\167\322\143\315\317\130
+\211\000\102\143\077\171\071\320\104\260\202\156\101\031\350\335
+\340\301\210\132\321\036\161\223\037\044\060\164\345\036\250\336
+\074\047\067\177\203\256\236\167\317\360\060\261\377\113\231\350
+\306\241
+END
+
+# Trust for Certificate "AddTrust Qualified Certificates Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AddTrust Qualified Certificates Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\115\043\170\354\221\225\071\265\000\177\165\217\003\073\041\036
+\305\115\213\317
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\047\354\071\107\315\332\132\257\342\232\001\145\041\251\114\273
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\147\061\013\060\011\006\003\125\004\006\023\002\123\105\061
+\024\060\022\006\003\125\004\012\023\013\101\144\144\124\162\165
+\163\164\040\101\102\061\035\060\033\006\003\125\004\013\023\024
+\101\144\144\124\162\165\163\164\040\124\124\120\040\116\145\164
+\167\157\162\153\061\043\060\041\006\003\125\004\003\023\032\101
+\144\144\124\162\165\163\164\040\121\165\141\154\151\146\151\145
+\144\040\103\101\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Verisign Time Stamping Authority CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Time Stamping Authority CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\245\061\027\060\025\006\003\125\004\012\023\016\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\061\037\060\035
+\006\003\125\004\013\023\026\126\145\162\151\123\151\147\156\040
+\124\162\165\163\164\040\116\145\164\167\157\162\153\061\073\060
+\071\006\003\125\004\013\023\062\124\145\162\155\163\040\157\146
+\040\165\163\145\040\141\164\040\150\164\164\160\163\072\057\057
+\167\167\167\056\166\145\162\151\163\151\147\156\056\143\157\155
+\057\162\160\141\040\050\143\051\060\060\061\054\060\052\006\003
+\125\004\003\023\043\126\145\162\151\123\151\147\156\040\124\151
+\155\145\040\123\164\141\155\160\151\156\147\040\101\165\164\150
+\157\162\151\164\171\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\123\141\262\140\256\333\161\216\247\224\263\023\063\364
+\007\011
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\315\060\202\003\066\240\003\002\001\002\002\020\123
+\141\262\140\256\333\161\216\247\224\263\023\063\364\007\011\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\301\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027
+\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\061\074\060\072\006\003\125\004\013
+\023\063\103\154\141\163\163\040\063\040\120\165\142\154\151\143
+\040\120\162\151\155\141\162\171\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\040\055\040\107\062\061\072\060\070\006\003\125\004\013\023\061
+\050\143\051\040\061\071\071\070\040\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165
+\164\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154
+\171\061\037\060\035\006\003\125\004\013\023\026\126\145\162\151
+\123\151\147\156\040\124\162\165\163\164\040\116\145\164\167\157
+\162\153\060\036\027\015\060\060\060\071\062\066\060\060\060\060
+\060\060\132\027\015\061\060\060\071\062\065\062\063\065\071\065
+\071\132\060\201\245\061\027\060\025\006\003\125\004\012\023\016
+\126\145\162\151\123\151\147\156\054\040\111\156\143\056\061\037
+\060\035\006\003\125\004\013\023\026\126\145\162\151\123\151\147
+\156\040\124\162\165\163\164\040\116\145\164\167\157\162\153\061
+\073\060\071\006\003\125\004\013\023\062\124\145\162\155\163\040
+\157\146\040\165\163\145\040\141\164\040\150\164\164\160\163\072
+\057\057\167\167\167\056\166\145\162\151\163\151\147\156\056\143
+\157\155\057\162\160\141\040\050\143\051\060\060\061\054\060\052
+\006\003\125\004\003\023\043\126\145\162\151\123\151\147\156\040
+\124\151\155\145\040\123\164\141\155\160\151\156\147\040\101\165
+\164\150\157\162\151\164\171\040\103\101\060\201\237\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215\000
+\060\201\211\002\201\201\000\322\031\235\147\302\000\041\131\142
+\316\264\011\042\104\151\212\370\045\132\333\355\015\267\066\176
+\116\340\273\224\076\220\045\207\302\141\107\051\331\275\124\270
+\143\314\054\175\151\264\063\066\364\067\007\232\301\335\100\124
+\374\340\170\235\240\223\271\011\075\043\121\177\104\302\024\164
+\333\012\276\313\311\060\064\100\230\076\320\327\045\020\201\224
+\275\007\117\234\326\124\047\337\056\250\277\313\220\214\215\165
+\113\274\342\350\104\207\315\346\101\012\045\156\350\364\044\002
+\305\122\017\156\354\230\165\002\003\001\000\001\243\201\337\060
+\201\334\060\017\006\003\125\035\023\004\010\060\006\001\001\377
+\002\001\000\060\105\006\003\125\035\040\004\076\060\074\060\072
+\006\014\140\206\110\001\206\370\105\001\007\027\001\003\060\052
+\060\050\006\010\053\006\001\005\005\007\002\001\026\034\150\164
+\164\160\163\072\057\057\167\167\167\056\166\145\162\151\163\151
+\147\156\056\143\157\155\057\162\160\141\060\061\006\003\125\035
+\037\004\052\060\050\060\046\240\044\240\042\206\040\150\164\164
+\160\072\057\057\143\162\154\056\166\145\162\151\163\151\147\156
+\056\143\157\155\057\160\143\141\063\056\143\162\154\060\013\006
+\003\125\035\017\004\004\003\002\001\006\060\102\006\010\053\006
+\001\005\005\007\001\001\004\066\060\064\060\062\006\010\053\006
+\001\005\005\007\060\001\246\046\026\044\150\164\164\160\072\057
+\057\157\143\163\160\056\166\145\162\151\163\151\147\156\056\143
+\157\155\057\157\143\163\160\057\163\164\141\164\165\163\060\015
+\006\011\052\206\110\206\367\015\001\001\005\005\000\003\201\201
+\000\202\160\150\225\337\266\015\302\001\160\031\112\322\124\126
+\036\254\362\105\114\207\270\365\065\353\170\113\005\251\310\235
+\073\031\041\056\160\064\112\242\365\211\340\025\165\105\347\050
+\067\000\064\047\051\350\067\113\362\357\104\227\153\027\121\032
+\303\126\235\074\032\212\366\112\106\106\067\214\372\313\365\144
+\132\070\150\056\034\303\357\160\316\270\106\006\026\277\367\176
+\347\265\250\076\105\254\251\045\165\042\173\157\077\260\234\224
+\347\307\163\253\254\037\356\045\233\300\026\355\267\312\133\360
+\024
+END
+
+# Trust for Certificate "Verisign Time Stamping Authority CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Verisign Time Stamping Authority CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\246\017\064\310\142\154\201\366\213\367\175\251\366\147\130\212
+\220\077\175\066
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\211\111\124\214\310\150\232\203\051\354\334\006\163\041\253\227
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\301\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\074\060\072\006\003\125
+\004\013\023\063\103\154\141\163\163\040\063\040\120\165\142\154
+\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\055\040\107\062\061\072\060\070\006\003\125\004\013
+\023\061\050\143\051\040\061\071\071\070\040\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162\040
+\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040\157
+\156\154\171\061\037\060\035\006\003\125\004\013\023\026\126\145
+\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145\164
+\167\157\162\153
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\123\141\262\140\256\333\161\216\247\224\263\023\063\364
+\007\011
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Thawte Time Stamping CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Time Stamping CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\213\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\024\060\022\006\003\125\004\007
+\023\013\104\165\162\142\141\156\166\151\154\154\145\061\017\060
+\015\006\003\125\004\012\023\006\124\150\141\167\164\145\061\035
+\060\033\006\003\125\004\013\023\024\124\150\141\167\164\145\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\061\037\060
+\035\006\003\125\004\003\023\026\124\150\141\167\164\145\040\124
+\151\155\145\163\164\141\155\160\151\156\147\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\213\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\024\060\022\006\003\125\004\007
+\023\013\104\165\162\142\141\156\166\151\154\154\145\061\017\060
+\015\006\003\125\004\012\023\006\124\150\141\167\164\145\061\035
+\060\033\006\003\125\004\013\023\024\124\150\141\167\164\145\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\061\037\060
+\035\006\003\125\004\003\023\026\124\150\141\167\164\145\040\124
+\151\155\145\163\164\141\155\160\151\156\147\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\241\060\202\002\012\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\213\061\013\060\011\006\003\125\004\006\023\002\132\101\061
+\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145\162
+\156\040\103\141\160\145\061\024\060\022\006\003\125\004\007\023
+\013\104\165\162\142\141\156\166\151\154\154\145\061\017\060\015
+\006\003\125\004\012\023\006\124\150\141\167\164\145\061\035\060
+\033\006\003\125\004\013\023\024\124\150\141\167\164\145\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\061\037\060\035
+\006\003\125\004\003\023\026\124\150\141\167\164\145\040\124\151
+\155\145\163\164\141\155\160\151\156\147\040\103\101\060\036\027
+\015\071\067\060\061\060\061\060\060\060\060\060\060\132\027\015
+\062\060\061\062\063\061\062\063\065\071\065\071\132\060\201\213
+\061\013\060\011\006\003\125\004\006\023\002\132\101\061\025\060
+\023\006\003\125\004\010\023\014\127\145\163\164\145\162\156\040
+\103\141\160\145\061\024\060\022\006\003\125\004\007\023\013\104
+\165\162\142\141\156\166\151\154\154\145\061\017\060\015\006\003
+\125\004\012\023\006\124\150\141\167\164\145\061\035\060\033\006
+\003\125\004\013\023\024\124\150\141\167\164\145\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\061\037\060\035\006\003
+\125\004\003\023\026\124\150\141\167\164\145\040\124\151\155\145
+\163\164\141\155\160\151\156\147\040\103\101\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\326\053\130\170\141\105\206\123
+\352\064\173\121\234\355\260\346\056\030\016\376\340\137\250\047
+\323\264\311\340\174\131\116\026\016\163\124\140\301\177\366\237
+\056\351\072\205\044\025\074\333\107\004\143\303\236\304\224\032
+\132\337\114\172\363\331\103\035\074\020\172\171\045\333\220\376
+\360\121\347\060\326\101\000\375\237\050\337\171\276\224\273\235
+\266\024\343\043\205\327\251\101\340\114\244\171\260\053\032\213
+\362\370\073\212\076\105\254\161\222\000\264\220\101\230\373\137
+\355\372\267\056\212\370\210\067\002\003\001\000\001\243\023\060
+\021\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\015\006\011\052\206\110\206\367\015\001\001\004\005
+\000\003\201\201\000\147\333\342\302\346\207\075\100\203\206\067
+\065\175\037\316\232\303\014\146\040\250\272\252\004\211\206\302
+\365\020\010\015\277\313\242\005\212\320\115\066\076\364\327\357
+\151\306\136\344\260\224\157\112\271\347\336\133\210\266\173\333
+\343\047\345\166\303\360\065\301\313\265\047\233\063\171\334\220
+\246\000\236\167\372\374\315\047\224\102\026\234\323\034\150\354
+\277\134\335\345\251\173\020\012\062\164\124\023\061\213\205\003
+\204\221\267\130\001\060\024\070\257\050\312\374\261\120\031\031
+\011\254\211\111\323
+END
+
+# Trust for Certificate "Thawte Time Stamping CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Thawte Time Stamping CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\276\066\244\126\057\262\356\005\333\263\323\043\043\255\364\105
+\010\116\326\126
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\177\146\172\161\323\353\151\170\040\232\121\024\235\203\332\040
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\213\061\013\060\011\006\003\125\004\006\023\002\132\101
+\061\025\060\023\006\003\125\004\010\023\014\127\145\163\164\145
+\162\156\040\103\141\160\145\061\024\060\022\006\003\125\004\007
+\023\013\104\165\162\142\141\156\166\151\154\154\145\061\017\060
+\015\006\003\125\004\012\023\006\124\150\141\167\164\145\061\035
+\060\033\006\003\125\004\013\023\024\124\150\141\167\164\145\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\061\037\060
+\035\006\003\125\004\003\023\026\124\150\141\167\164\145\040\124
+\151\155\145\163\164\141\155\160\151\156\147\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Entrust.net Global Secure Server CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Global Secure Server CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\272\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\077\060\075\006\003\125
+\004\013\024\066\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\123\123\114\137\103\120\123\040\151\156\143\157
+\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151\155
+\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006\003
+\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105\156
+\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164\145
+\144\061\072\060\070\006\003\125\004\003\023\061\105\156\164\162
+\165\163\164\056\156\145\164\040\123\145\143\165\162\145\040\123
+\145\162\166\145\162\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\272\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\077\060\075\006\003\125
+\004\013\024\066\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\123\123\114\137\103\120\123\040\151\156\143\157
+\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151\155
+\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006\003
+\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105\156
+\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164\145
+\144\061\072\060\070\006\003\125\004\003\023\061\105\156\164\162
+\165\163\164\056\156\145\164\040\123\145\143\165\162\145\040\123
+\145\162\166\145\162\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\233\021\074
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\225\060\202\003\376\240\003\002\001\002\002\004\070
+\233\021\074\060\015\006\011\052\206\110\206\367\015\001\001\004
+\005\000\060\201\272\061\024\060\022\006\003\125\004\012\023\013
+\105\156\164\162\165\163\164\056\156\145\164\061\077\060\075\006
+\003\125\004\013\024\066\167\167\167\056\145\156\164\162\165\163
+\164\056\156\145\164\057\123\123\114\137\103\120\123\040\151\156
+\143\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154
+\151\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043
+\006\003\125\004\013\023\034\050\143\051\040\062\060\060\060\040
+\105\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151
+\164\145\144\061\072\060\070\006\003\125\004\003\023\061\105\156
+\164\162\165\163\164\056\156\145\164\040\123\145\143\165\162\145
+\040\123\145\162\166\145\162\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060
+\036\027\015\060\060\060\062\060\064\061\067\062\060\060\060\132
+\027\015\062\060\060\062\060\064\061\067\065\060\060\060\132\060
+\201\272\061\024\060\022\006\003\125\004\012\023\013\105\156\164
+\162\165\163\164\056\156\145\164\061\077\060\075\006\003\125\004
+\013\024\066\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\123\123\114\137\103\120\123\040\151\156\143\157\162
+\160\056\040\142\171\040\162\145\146\056\040\050\154\151\155\151
+\164\163\040\154\151\141\142\056\051\061\045\060\043\006\003\125
+\004\013\023\034\050\143\051\040\062\060\060\060\040\105\156\164
+\162\165\163\164\056\156\145\164\040\114\151\155\151\164\145\144
+\061\072\060\070\006\003\125\004\003\023\061\105\156\164\162\165
+\163\164\056\156\145\164\040\123\145\143\165\162\145\040\123\145
+\162\166\145\162\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\060\201\237\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201
+\215\000\060\201\211\002\201\201\000\307\301\137\116\161\361\316
+\360\140\206\017\322\130\177\323\063\227\055\027\242\165\060\265
+\226\144\046\057\150\303\104\253\250\165\346\000\147\064\127\236
+\145\307\042\233\163\346\323\335\010\016\067\125\252\045\106\201
+\154\275\376\250\366\165\127\127\214\220\154\112\303\076\213\113
+\103\012\311\021\126\232\232\047\042\231\317\125\236\141\331\002
+\342\174\266\174\070\007\334\343\177\117\232\271\003\101\200\266
+\165\147\023\013\237\350\127\066\310\135\000\066\336\146\024\332
+\156\166\037\117\067\214\202\023\211\002\003\001\000\001\243\202
+\001\244\060\202\001\240\060\021\006\011\140\206\110\001\206\370
+\102\001\001\004\004\003\002\000\007\060\201\343\006\003\125\035
+\037\004\201\333\060\201\330\060\201\325\240\201\322\240\201\317
+\244\201\314\060\201\311\061\024\060\022\006\003\125\004\012\023
+\013\105\156\164\162\165\163\164\056\156\145\164\061\077\060\075
+\006\003\125\004\013\024\066\167\167\167\056\145\156\164\162\165
+\163\164\056\156\145\164\057\123\123\114\137\103\120\123\040\151
+\156\143\157\162\160\056\040\142\171\040\162\145\146\056\040\050
+\154\151\155\151\164\163\040\154\151\141\142\056\051\061\045\060
+\043\006\003\125\004\013\023\034\050\143\051\040\062\060\060\060
+\040\105\156\164\162\165\163\164\056\156\145\164\040\114\151\155
+\151\164\145\144\061\072\060\070\006\003\125\004\003\023\061\105
+\156\164\162\165\163\164\056\156\145\164\040\123\145\143\165\162
+\145\040\123\145\162\166\145\162\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\015\060\013\006\003\125\004\003\023\004\103\122\114\061\060
+\053\006\003\125\035\020\004\044\060\042\200\017\062\060\060\060
+\060\062\060\064\061\067\062\060\060\060\132\201\017\062\060\062
+\060\060\062\060\064\061\067\065\060\060\060\132\060\013\006\003
+\125\035\017\004\004\003\002\001\006\060\037\006\003\125\035\043
+\004\030\060\026\200\024\313\154\300\153\343\273\076\313\374\042
+\234\376\373\213\222\234\260\362\156\042\060\035\006\003\125\035
+\016\004\026\004\024\313\154\300\153\343\273\076\313\374\042\234
+\376\373\213\222\234\260\362\156\042\060\014\006\003\125\035\023
+\004\005\060\003\001\001\377\060\035\006\011\052\206\110\206\366
+\175\007\101\000\004\020\060\016\033\010\126\065\056\060\072\064
+\056\060\003\002\004\220\060\015\006\011\052\206\110\206\367\015
+\001\001\004\005\000\003\201\201\000\142\333\201\221\316\310\232
+\167\102\057\354\275\047\243\123\017\120\033\352\116\222\360\251
+\257\251\240\272\110\141\313\357\311\006\357\037\325\364\356\337
+\126\055\346\312\152\031\163\252\123\276\222\263\120\002\266\205
+\046\162\143\330\165\120\142\165\024\267\263\120\032\077\312\021
+\000\013\205\105\151\155\266\245\256\121\341\112\334\202\077\154
+\214\064\262\167\153\331\002\366\177\016\352\145\004\361\315\124
+\312\272\311\314\340\204\367\310\076\021\227\323\140\011\030\274
+\005\377\154\211\063\360\354\025\017
+END
+
+# Trust for Certificate "Entrust.net Global Secure Server CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Global Secure Server CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\211\071\127\156\027\215\367\005\170\017\314\136\310\117\204\366
+\045\072\110\223
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\235\146\152\314\377\325\365\103\264\277\214\026\321\053\250\231
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\272\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\077\060\075\006\003\125
+\004\013\024\066\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\123\123\114\137\103\120\123\040\151\156\143\157
+\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151\155
+\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006\003
+\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105\156
+\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164\145
+\144\061\072\060\070\006\003\125\004\003\023\061\105\156\164\162
+\165\163\164\056\156\145\164\040\123\145\143\165\162\145\040\123
+\145\162\166\145\162\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\233\021\074
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Entrust.net Global Secure Personal CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Global Secure Personal CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\107\103\103\101\137\103\120\123\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\154\151\145\156\164\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\107\103\103\101\137\103\120\123\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\154\151\145\156\164\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\236\366\344
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\203\060\202\003\354\240\003\002\001\002\002\004\070
+\236\366\344\060\015\006\011\052\206\110\206\367\015\001\001\004
+\005\000\060\201\264\061\024\060\022\006\003\125\004\012\023\013
+\105\156\164\162\165\163\164\056\156\145\164\061\100\060\076\006
+\003\125\004\013\024\067\167\167\167\056\145\156\164\162\165\163
+\164\056\156\145\164\057\107\103\103\101\137\103\120\123\040\151
+\156\143\157\162\160\056\040\142\171\040\162\145\146\056\040\050
+\154\151\155\151\164\163\040\154\151\141\142\056\051\061\045\060
+\043\006\003\125\004\013\023\034\050\143\051\040\062\060\060\060
+\040\105\156\164\162\165\163\164\056\156\145\164\040\114\151\155
+\151\164\145\144\061\063\060\061\006\003\125\004\003\023\052\105
+\156\164\162\165\163\164\056\156\145\164\040\103\154\151\145\156
+\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\060\036\027\015\060\060\060
+\062\060\067\061\066\061\066\064\060\132\027\015\062\060\060\062
+\060\067\061\066\064\066\064\060\132\060\201\264\061\024\060\022
+\006\003\125\004\012\023\013\105\156\164\162\165\163\164\056\156
+\145\164\061\100\060\076\006\003\125\004\013\024\067\167\167\167
+\056\145\156\164\162\165\163\164\056\156\145\164\057\107\103\103
+\101\137\103\120\123\040\151\156\143\157\162\160\056\040\142\171
+\040\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151
+\141\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050
+\143\051\040\062\060\060\060\040\105\156\164\162\165\163\164\056
+\156\145\164\040\114\151\155\151\164\145\144\061\063\060\061\006
+\003\125\004\003\023\052\105\156\164\162\165\163\164\056\156\145
+\164\040\103\154\151\145\156\164\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\060\201\237\060\015\006\011\052\206\110\206\367\015\001\001\001
+\005\000\003\201\215\000\060\201\211\002\201\201\000\223\164\264
+\266\344\305\113\326\241\150\177\142\325\354\367\121\127\263\162
+\112\230\365\320\211\311\255\143\315\115\065\121\152\204\324\255
+\311\150\171\157\270\353\021\333\207\256\134\044\121\023\361\124
+\045\204\257\051\053\237\343\200\342\331\313\335\306\105\111\064
+\210\220\136\001\227\357\352\123\246\335\374\301\336\113\052\045
+\344\351\065\372\125\005\006\345\211\172\352\244\021\127\073\374
+\174\075\066\315\147\065\155\244\251\045\131\275\146\365\371\047
+\344\225\147\326\077\222\200\136\362\064\175\053\205\002\003\001
+\000\001\243\202\001\236\060\202\001\232\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\201\335
+\006\003\125\035\037\004\201\325\060\201\322\060\201\317\240\201
+\314\240\201\311\244\201\306\060\201\303\061\024\060\022\006\003
+\125\004\012\023\013\105\156\164\162\165\163\164\056\156\145\164
+\061\100\060\076\006\003\125\004\013\024\067\167\167\167\056\145
+\156\164\162\165\163\164\056\156\145\164\057\107\103\103\101\137
+\103\120\123\040\151\156\143\157\162\160\056\040\142\171\040\162
+\145\146\056\040\050\154\151\155\151\164\163\040\154\151\141\142
+\056\051\061\045\060\043\006\003\125\004\013\023\034\050\143\051
+\040\062\060\060\060\040\105\156\164\162\165\163\164\056\156\145
+\164\040\114\151\155\151\164\145\144\061\063\060\061\006\003\125
+\004\003\023\052\105\156\164\162\165\163\164\056\156\145\164\040
+\103\154\151\145\156\164\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\015
+\060\013\006\003\125\004\003\023\004\103\122\114\061\060\053\006
+\003\125\035\020\004\044\060\042\200\017\062\060\060\060\060\062
+\060\067\061\066\061\066\064\060\132\201\017\062\060\062\060\060
+\062\060\067\061\066\064\066\064\060\132\060\013\006\003\125\035
+\017\004\004\003\002\001\006\060\037\006\003\125\035\043\004\030
+\060\026\200\024\204\213\164\375\305\215\300\377\047\155\040\067
+\105\174\376\055\316\272\323\175\060\035\006\003\125\035\016\004
+\026\004\024\204\213\164\375\305\215\300\377\047\155\040\067\105
+\174\376\055\316\272\323\175\060\014\006\003\125\035\023\004\005
+\060\003\001\001\377\060\035\006\011\052\206\110\206\366\175\007
+\101\000\004\020\060\016\033\010\126\065\056\060\072\064\056\060
+\003\002\004\220\060\015\006\011\052\206\110\206\367\015\001\001
+\004\005\000\003\201\201\000\116\157\065\200\073\321\212\365\016
+\247\040\313\055\145\125\320\222\364\347\204\265\006\046\203\022
+\204\013\254\073\262\104\356\275\317\100\333\040\016\272\156\024
+\352\060\340\073\142\174\177\213\153\174\112\247\325\065\074\276
+\250\134\352\113\273\223\216\200\146\253\017\051\375\115\055\277
+\032\233\012\220\305\253\332\321\263\206\324\057\044\122\134\172
+\155\306\362\376\345\115\032\060\214\220\362\272\327\112\076\103
+\176\324\310\120\032\207\370\117\201\307\166\013\204\072\162\235
+\316\145\146\227\256\046\136
+END
+
+# Trust for Certificate "Entrust.net Global Secure Personal CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust.net Global Secure Personal CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\317\164\277\377\233\206\201\133\010\063\124\100\066\076\207\266
+\266\360\277\163
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\232\167\031\030\355\226\317\337\033\267\016\365\215\271\210\056
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156
+\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125
+\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056
+\156\145\164\057\107\103\103\101\137\103\120\123\040\151\156\143
+\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151
+\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006
+\003\125\004\013\023\034\050\143\051\040\062\060\060\060\040\105
+\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164
+\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164
+\162\165\163\164\056\156\145\164\040\103\154\151\145\156\164\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\070\236\366\344
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Entrust Root Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust Root Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165
+\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004
+\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160
+\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145
+\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143
+\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040
+\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105
+\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165
+\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004
+\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160
+\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145
+\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143
+\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040
+\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105
+\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\105\153\120\124
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\221\060\202\003\171\240\003\002\001\002\002\004\105
+\153\120\124\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\201\260\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\026\060\024\006\003\125\004\012\023\015\105\156\164
+\162\165\163\164\054\040\111\156\143\056\061\071\060\067\006\003
+\125\004\013\023\060\167\167\167\056\145\156\164\162\165\163\164
+\056\156\145\164\057\103\120\123\040\151\163\040\151\156\143\157
+\162\160\157\162\141\164\145\144\040\142\171\040\162\145\146\145
+\162\145\156\143\145\061\037\060\035\006\003\125\004\013\023\026
+\050\143\051\040\062\060\060\066\040\105\156\164\162\165\163\164
+\054\040\111\156\143\056\061\055\060\053\006\003\125\004\003\023
+\044\105\156\164\162\165\163\164\040\122\157\157\164\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\060\036\027\015\060\066\061\061\062\067\062
+\060\062\063\064\062\132\027\015\062\066\061\061\062\067\062\060
+\065\063\064\062\132\060\201\260\061\013\060\011\006\003\125\004
+\006\023\002\125\123\061\026\060\024\006\003\125\004\012\023\015
+\105\156\164\162\165\163\164\054\040\111\156\143\056\061\071\060
+\067\006\003\125\004\013\023\060\167\167\167\056\145\156\164\162
+\165\163\164\056\156\145\164\057\103\120\123\040\151\163\040\151
+\156\143\157\162\160\157\162\141\164\145\144\040\142\171\040\162
+\145\146\145\162\145\156\143\145\061\037\060\035\006\003\125\004
+\013\023\026\050\143\051\040\062\060\060\066\040\105\156\164\162
+\165\163\164\054\040\111\156\143\056\061\055\060\053\006\003\125
+\004\003\023\044\105\156\164\162\165\163\164\040\122\157\157\164
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\266\225\266\103\102\372\306
+\155\052\157\110\337\224\114\071\127\005\356\303\171\021\101\150
+\066\355\354\376\232\001\217\241\070\050\374\367\020\106\146\056
+\115\036\032\261\032\116\306\321\300\225\210\260\311\377\061\213
+\063\003\333\267\203\173\076\040\204\136\355\262\126\050\247\370
+\340\271\100\161\067\305\313\107\016\227\052\150\300\042\225\142
+\025\333\107\331\365\320\053\377\202\113\311\255\076\336\114\333
+\220\200\120\077\011\212\204\000\354\060\012\075\030\315\373\375
+\052\131\232\043\225\027\054\105\236\037\156\103\171\155\014\134
+\230\376\110\247\305\043\107\134\136\375\156\347\036\264\366\150
+\105\321\206\203\133\242\212\215\261\343\051\200\376\045\161\210
+\255\276\274\217\254\122\226\113\252\121\215\344\023\061\031\350
+\116\115\237\333\254\263\152\325\274\071\124\161\312\172\172\177
+\220\335\175\035\200\331\201\273\131\046\302\021\376\346\223\342
+\367\200\344\145\373\064\067\016\051\200\160\115\257\070\206\056
+\236\177\127\257\236\027\256\353\034\313\050\041\137\266\034\330
+\347\242\004\042\371\323\332\330\313\002\003\001\000\001\243\201
+\260\060\201\255\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\053\006\003\125\035\020\004\044\060\042
+\200\017\062\060\060\066\061\061\062\067\062\060\062\063\064\062
+\132\201\017\062\060\062\066\061\061\062\067\062\060\065\063\064
+\062\132\060\037\006\003\125\035\043\004\030\060\026\200\024\150
+\220\344\147\244\246\123\200\307\206\146\244\361\367\113\103\373
+\204\275\155\060\035\006\003\125\035\016\004\026\004\024\150\220
+\344\147\244\246\123\200\307\206\146\244\361\367\113\103\373\204
+\275\155\060\035\006\011\052\206\110\206\366\175\007\101\000\004
+\020\060\016\033\010\126\067\056\061\072\064\056\060\003\002\004
+\220\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\223\324\060\260\327\003\040\052\320\371\143
+\350\221\014\005\040\251\137\031\312\173\162\116\324\261\333\320
+\226\373\124\132\031\054\014\010\367\262\274\205\250\235\177\155
+\073\122\263\052\333\347\324\204\214\143\366\017\313\046\001\221
+\120\154\364\137\024\342\223\164\300\023\236\060\072\120\343\264
+\140\305\034\360\042\104\215\161\107\254\310\032\311\351\233\232
+\000\140\023\377\160\176\137\021\115\111\033\263\025\122\173\311
+\124\332\277\235\225\257\153\232\330\236\351\361\344\103\215\342
+\021\104\072\277\257\275\203\102\163\122\213\252\273\247\051\317
+\365\144\034\012\115\321\274\252\254\237\052\320\377\177\177\332
+\175\352\261\355\060\045\301\204\332\064\322\133\170\203\126\354
+\234\066\303\046\342\021\366\147\111\035\222\253\214\373\353\377
+\172\356\205\112\247\120\200\360\247\134\112\224\056\137\005\231
+\074\122\101\340\315\264\143\317\001\103\272\234\203\334\217\140
+\073\363\132\264\264\173\256\332\013\220\070\165\357\201\035\146
+\322\367\127\160\066\263\277\374\050\257\161\045\205\133\023\376
+\036\177\132\264\074
+END
+
+# Trust for Certificate "Entrust Root Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Entrust Root Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\263\036\261\267\100\343\154\204\002\332\334\067\324\115\365\324
+\147\111\122\371
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\326\245\303\355\135\335\076\000\301\075\207\222\037\035\077\344
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165
+\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004
+\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156
+\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160
+\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145
+\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143
+\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040
+\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105
+\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\105\153\120\124
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AOL Time Warner Root Certification Authority 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AOL Time Warner Root Certification Authority 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\346\060\202\002\316\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124\151
+\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061\034
+\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143\141
+\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060\065
+\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145\040
+\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\061\060\036\027\015\060\062\060\065\062\071\060
+\066\060\060\060\060\132\027\015\063\067\061\061\062\060\061\065
+\060\063\060\060\132\060\201\203\061\013\060\011\006\003\125\004
+\006\023\002\125\123\061\035\060\033\006\003\125\004\012\023\024
+\101\117\114\040\124\151\155\145\040\127\141\162\156\145\162\040
+\111\156\143\056\061\034\060\032\006\003\125\004\013\023\023\101
+\155\145\162\151\143\141\040\117\156\154\151\156\145\040\111\156
+\143\056\061\067\060\065\006\003\125\004\003\023\056\101\117\114
+\040\124\151\155\145\040\127\141\162\156\145\162\040\122\157\157
+\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\040\061\060\202\001\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\001\017\000\060\202\001\012\002\202\001\001\000\231\336\217\303
+\045\243\151\064\350\005\367\164\271\277\132\227\031\271\057\224
+\322\223\345\055\211\312\204\174\077\020\103\033\214\213\174\204
+\130\370\044\174\110\317\052\375\300\025\331\030\176\204\032\027
+\323\333\236\327\312\344\331\327\252\130\121\207\360\360\213\110
+\116\342\302\304\131\151\060\142\266\060\242\214\013\021\231\141
+\065\155\176\357\305\261\031\006\040\022\216\102\341\337\017\226
+\020\122\250\317\234\137\225\024\330\257\073\165\013\061\040\037
+\104\057\242\142\101\263\273\030\041\333\312\161\074\214\354\266
+\271\015\237\357\121\357\115\173\022\362\013\014\341\254\100\217
+\167\177\260\312\170\161\014\135\026\161\160\242\327\302\072\205
+\315\016\232\304\340\000\260\325\045\352\334\053\344\224\055\070
+\234\211\101\127\144\050\145\031\034\266\104\264\310\061\153\216
+\001\173\166\131\045\177\025\034\204\010\174\163\145\040\012\241
+\004\056\032\062\250\232\040\261\234\054\041\131\347\373\317\356
+\160\055\010\312\143\076\054\233\223\031\152\244\302\227\377\267
+\206\127\210\205\154\236\025\026\053\115\054\263\002\003\001\000
+\001\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004
+\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004
+\024\241\066\060\026\313\206\220\000\105\200\123\261\217\310\330
+\075\174\276\137\022\060\037\006\003\125\035\043\004\030\060\026
+\200\024\241\066\060\026\313\206\220\000\105\200\123\261\217\310
+\330\075\174\276\137\022\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\206\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\001\001\000\212\040\030\245\276\263
+\057\264\246\204\000\100\060\051\372\264\024\163\114\171\105\247
+\366\160\340\350\176\144\036\012\225\174\152\141\302\357\116\037
+\276\377\311\231\037\007\141\112\341\135\114\315\255\356\320\122
+\062\331\131\062\274\332\171\162\326\173\011\350\002\201\065\323
+\012\337\021\035\311\171\240\200\115\376\132\327\126\326\355\017
+\052\257\247\030\165\063\014\352\301\141\005\117\152\232\211\362
+\215\271\237\056\357\260\137\132\000\353\276\255\240\370\104\005
+\147\274\313\004\357\236\144\305\351\310\077\005\277\306\057\007
+\034\303\066\161\206\312\070\146\112\315\326\270\113\306\154\247
+\227\073\372\023\055\156\043\141\207\241\143\102\254\302\313\227
+\237\141\150\317\055\114\004\235\327\045\117\012\016\115\220\213
+\030\126\250\223\110\127\334\157\256\275\236\147\127\167\211\120
+\263\276\021\233\105\147\203\206\031\207\323\230\275\010\032\026
+\037\130\202\013\341\226\151\005\113\216\354\203\121\061\007\325
+\324\237\377\131\173\250\156\205\317\323\113\251\111\260\137\260
+\071\050\150\016\163\335\045\232\336\022
+END
+
+# Trust for Certificate "AOL Time Warner Root Certification Authority 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AOL Time Warner Root Certification Authority 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\164\124\123\134\044\243\247\130\040\176\076\076\323\044\370\026
+\373\041\026\111
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\347\172\334\261\037\156\006\037\164\154\131\026\047\303\113\300
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AOL Time Warner Root Certification Authority 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AOL Time Warner Root Certification Authority 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\346\060\202\003\316\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124\151
+\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061\034
+\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143\141
+\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060\065
+\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145\040
+\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\062\060\036\027\015\060\062\060\065\062\071\060
+\066\060\060\060\060\132\027\015\063\067\060\071\062\070\062\063
+\064\063\060\060\132\060\201\203\061\013\060\011\006\003\125\004
+\006\023\002\125\123\061\035\060\033\006\003\125\004\012\023\024
+\101\117\114\040\124\151\155\145\040\127\141\162\156\145\162\040
+\111\156\143\056\061\034\060\032\006\003\125\004\013\023\023\101
+\155\145\162\151\143\141\040\117\156\154\151\156\145\040\111\156
+\143\056\061\067\060\065\006\003\125\004\003\023\056\101\117\114
+\040\124\151\155\145\040\127\141\162\156\145\162\040\122\157\157
+\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\040\062\060\202\002\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\002\017\000\060\202\002\012\002\202\002\001\000\264\067\132\010
+\026\231\024\350\125\261\033\044\153\374\307\213\346\207\251\211
+\356\213\231\315\117\100\206\244\266\115\311\331\261\334\074\115
+\015\205\114\025\154\106\213\122\170\237\370\043\375\147\365\044
+\072\150\135\320\367\144\141\101\124\243\213\245\010\322\051\133
+\233\140\117\046\203\321\143\022\126\111\166\244\026\302\245\235
+\105\254\213\204\225\250\026\261\354\237\352\044\032\357\271\127
+\134\232\044\041\054\115\016\161\037\246\254\135\105\164\003\230
+\304\124\214\026\112\101\167\206\225\165\014\107\001\146\140\374
+\025\361\017\352\365\024\170\307\016\327\156\201\034\136\277\136
+\347\072\052\330\227\027\060\174\000\255\010\235\063\257\270\231
+\141\200\213\250\225\176\024\334\022\154\244\320\330\357\100\111
+\002\066\371\156\251\326\035\226\126\004\262\263\055\026\126\206
+\217\331\040\127\200\315\147\020\155\260\114\360\332\106\266\352
+\045\056\106\257\215\260\205\070\064\213\024\046\202\053\254\256
+\231\013\216\024\327\122\275\236\151\303\206\002\013\352\166\165
+\061\011\316\063\031\041\205\103\346\211\055\237\045\067\147\361
+\043\152\322\000\155\227\371\237\347\051\312\335\037\327\006\352
+\270\311\271\011\041\237\310\077\006\305\322\351\022\106\000\116
+\173\010\353\102\075\053\110\156\235\147\335\113\002\344\104\363
+\223\031\245\047\316\151\172\276\147\323\374\120\244\054\253\303
+\153\271\343\200\114\317\005\141\113\053\334\033\271\246\322\320
+\252\365\053\163\373\316\220\065\237\014\122\034\277\134\041\141
+\021\133\025\113\251\044\121\374\244\134\367\027\235\260\322\372
+\007\351\217\126\344\032\214\150\212\004\323\174\132\343\236\242
+\241\312\161\133\242\324\240\347\051\205\135\003\150\052\117\322
+\006\327\075\371\303\003\057\077\145\371\147\036\107\100\323\143
+\017\343\325\216\371\205\253\227\114\263\327\046\353\226\012\224
+\336\205\066\234\310\177\201\011\002\111\052\016\365\144\062\014
+\202\321\272\152\202\033\263\113\164\021\363\214\167\326\237\277
+\334\067\244\247\125\004\057\324\061\350\323\106\271\003\174\332
+\022\116\131\144\267\121\061\061\120\240\312\034\047\331\020\056
+\255\326\275\020\146\053\303\260\042\112\022\133\002\003\001\000
+\001\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004
+\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004
+\024\117\151\155\003\176\235\237\007\030\103\274\267\020\116\325
+\277\251\304\040\050\060\037\006\003\125\035\043\004\030\060\026
+\200\024\117\151\155\003\176\235\237\007\030\103\274\267\020\116
+\325\277\251\304\040\050\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\206\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\002\001\000\073\363\256\312\350\056
+\207\205\373\145\131\347\255\021\024\245\127\274\130\237\044\022
+\127\273\373\077\064\332\356\255\172\052\064\162\160\061\153\307
+\031\230\200\311\202\336\067\167\136\124\213\216\362\352\147\117
+\311\164\204\221\126\011\325\345\172\232\201\266\201\302\255\066
+\344\361\124\021\123\363\064\105\001\046\310\345\032\274\064\104
+\041\336\255\045\374\166\026\167\041\220\200\230\127\235\116\352
+\354\057\252\074\024\173\127\301\176\030\024\147\356\044\306\275
+\272\025\260\322\030\275\267\125\201\254\123\300\350\335\151\022
+\023\102\267\002\265\005\101\312\171\120\156\202\016\161\162\223
+\106\350\235\015\135\275\256\316\051\255\143\325\125\026\200\060
+\047\377\166\272\367\270\326\112\343\331\265\371\122\320\116\100
+\251\307\345\302\062\307\252\166\044\341\153\005\120\353\305\277
+\012\124\345\271\102\074\044\373\267\007\234\060\237\171\132\346
+\340\100\122\025\364\374\252\364\126\371\104\227\207\355\016\145
+\162\136\276\046\373\115\244\055\010\007\336\330\134\240\334\201
+\063\231\030\045\021\167\247\353\375\130\011\054\231\153\033\212
+\363\122\077\032\115\110\140\361\240\366\063\002\123\213\355\045
+\011\270\015\055\355\227\163\354\327\226\037\216\140\016\332\020
+\233\057\030\044\366\246\115\012\371\073\313\165\302\314\057\316
+\044\151\311\012\042\216\131\247\367\202\014\327\327\153\065\234
+\103\000\152\304\225\147\272\234\105\313\270\016\067\367\334\116
+\001\117\276\012\266\003\323\255\212\105\367\332\047\115\051\261
+\110\337\344\021\344\226\106\275\154\002\076\326\121\310\225\027
+\001\025\251\362\252\252\362\277\057\145\033\157\320\271\032\223
+\365\216\065\304\200\207\076\224\057\146\344\351\250\377\101\234
+\160\052\117\052\071\030\225\036\176\373\141\001\074\121\010\056
+\050\030\244\026\017\061\375\072\154\043\223\040\166\341\375\007
+\205\321\133\077\322\034\163\062\335\372\271\370\214\317\002\207
+\172\232\226\344\355\117\211\215\123\103\253\016\023\300\001\025
+\264\171\070\333\374\156\075\236\121\266\270\023\213\147\317\371
+\174\331\042\035\366\135\305\034\001\057\230\350\172\044\030\274
+\204\327\372\334\162\133\367\301\072\150
+END
+
+# Trust for Certificate "AOL Time Warner Root Certification Authority 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AOL Time Warner Root Certification Authority 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\374\041\232\166\021\057\166\301\305\010\203\074\232\057\242\272
+\204\254\010\172
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\001\132\231\303\326\117\251\113\074\073\261\243\253\047\114\277
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\035\060\033\006\003\125\004\012\023\024\101\117\114\040\124
+\151\155\145\040\127\141\162\156\145\162\040\111\156\143\056\061
+\034\060\032\006\003\125\004\013\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\067\060
+\065\006\003\125\004\003\023\056\101\117\114\040\124\151\155\145
+\040\127\141\162\156\145\162\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "beTRUSTed Root CA-Baltimore Implementation"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA-Baltimore Implementation"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\055
+\102\141\154\164\151\155\157\162\145\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\055
+\102\141\154\164\151\155\157\162\145\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\074\265\075\106
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\152\060\202\004\122\240\003\002\001\002\002\004\074
+\265\075\106\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\146\061\022\060\020\006\003\125\004\012\023\011\142
+\145\124\122\125\123\124\145\144\061\033\060\031\006\003\125\004
+\013\023\022\142\145\124\122\125\123\124\145\144\040\122\157\157
+\164\040\103\101\163\061\063\060\061\006\003\125\004\003\023\052
+\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040\103
+\101\055\102\141\154\164\151\155\157\162\145\040\111\155\160\154
+\145\155\145\156\164\141\164\151\157\156\060\036\027\015\060\062
+\060\064\061\061\060\067\063\070\065\061\132\027\015\062\062\060
+\064\061\061\060\067\063\070\065\061\132\060\146\061\022\060\020
+\006\003\125\004\012\023\011\142\145\124\122\125\123\124\145\144
+\061\033\060\031\006\003\125\004\013\023\022\142\145\124\122\125
+\123\124\145\144\040\122\157\157\164\040\103\101\163\061\063\060
+\061\006\003\125\004\003\023\052\142\145\124\122\125\123\124\145
+\144\040\122\157\157\164\040\103\101\055\102\141\154\164\151\155
+\157\162\145\040\111\155\160\154\145\155\145\156\164\141\164\151
+\157\156\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\274\176\304\071\234\214\343\326\034\206\377\312\142
+\255\340\177\060\105\172\216\032\263\270\307\371\321\066\377\042
+\363\116\152\137\204\020\373\146\201\303\224\171\061\322\221\341
+\167\216\030\052\303\024\336\121\365\117\243\053\274\030\026\342
+\265\335\171\336\042\370\202\176\313\201\037\375\047\054\217\372
+\227\144\042\216\370\377\141\243\234\033\036\222\217\300\250\011
+\337\011\021\354\267\175\061\232\032\352\203\041\006\074\237\272
+\134\377\224\352\152\270\303\153\125\064\117\075\062\037\335\201
+\024\340\304\074\315\235\060\370\060\251\227\323\356\314\243\320
+\037\137\034\023\201\324\030\253\224\321\143\303\236\177\065\222
+\236\137\104\352\354\364\042\134\267\350\075\175\244\371\211\251
+\221\262\052\331\353\063\207\356\245\375\343\332\314\210\346\211
+\046\156\307\053\202\320\136\235\131\333\024\354\221\203\005\303
+\136\016\306\052\320\004\335\161\075\040\116\130\047\374\123\373
+\170\170\031\024\262\374\220\122\211\070\142\140\007\264\240\354
+\254\153\120\326\375\271\050\153\357\122\055\072\262\377\361\001
+\100\254\067\002\003\001\000\001\243\202\002\036\060\202\002\032
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\202\001\265\006\003\125\035\040\004\202\001\254\060\202
+\001\250\060\202\001\244\006\017\053\006\001\004\001\261\076\000
+\000\001\011\050\203\221\061\060\202\001\217\060\202\001\110\006
+\010\053\006\001\005\005\007\002\002\060\202\001\072\032\202\001
+\066\122\145\154\151\141\156\143\145\040\157\156\040\157\162\040
+\165\163\145\040\157\146\040\164\150\151\163\040\103\145\162\164
+\151\146\151\143\141\164\145\040\143\162\145\141\164\145\163\040
+\141\156\040\141\143\153\156\157\167\154\145\144\147\155\145\156
+\164\040\141\156\144\040\141\143\143\145\160\164\141\156\143\145
+\040\157\146\040\164\150\145\040\164\150\145\156\040\141\160\160
+\154\151\143\141\142\154\145\040\163\164\141\156\144\141\162\144
+\040\164\145\162\155\163\040\141\156\144\040\143\157\156\144\151
+\164\151\157\156\163\040\157\146\040\165\163\145\054\040\164\150
+\145\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\120\162\141\143\164\151\143\145\040\123\164\141\164\145\155\145
+\156\164\040\141\156\144\040\164\150\145\040\122\145\154\171\151
+\156\147\040\120\141\162\164\171\040\101\147\162\145\145\155\145
+\156\164\054\040\167\150\151\143\150\040\143\141\156\040\142\145
+\040\146\157\165\156\144\040\141\164\040\164\150\145\040\142\145
+\124\122\125\123\124\145\144\040\167\145\142\040\163\151\164\145
+\054\040\150\164\164\160\072\057\057\167\167\167\056\142\145\164
+\162\165\163\164\145\144\056\143\157\155\057\160\162\157\144\165
+\143\164\163\137\163\145\162\166\151\143\145\163\057\151\156\144
+\145\170\056\150\164\155\154\060\101\006\010\053\006\001\005\005
+\007\002\001\026\065\150\164\164\160\072\057\057\167\167\167\056
+\142\145\164\162\165\163\164\145\144\056\143\157\155\057\160\162
+\157\144\165\143\164\163\137\163\145\162\166\151\143\145\163\057
+\151\156\144\145\170\056\150\164\155\154\060\035\006\003\125\035
+\016\004\026\004\024\105\075\303\251\321\334\077\044\126\230\034
+\163\030\210\152\377\203\107\355\266\060\037\006\003\125\035\043
+\004\030\060\026\200\024\105\075\303\251\321\334\077\044\126\230
+\034\163\030\210\152\377\203\107\355\266\060\016\006\003\125\035
+\017\001\001\377\004\004\003\002\001\006\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\111\222
+\274\243\356\254\275\372\015\311\213\171\206\034\043\166\260\200
+\131\167\374\332\177\264\113\337\303\144\113\152\116\016\255\362
+\175\131\167\005\255\012\211\163\260\372\274\313\334\215\000\210
+\217\246\240\262\352\254\122\047\277\241\110\174\227\020\173\272
+\355\023\035\232\007\156\313\061\142\022\350\143\003\252\175\155
+\343\370\033\166\041\170\033\237\113\103\214\323\111\206\366\033
+\134\366\056\140\025\323\351\343\173\165\077\320\002\203\320\030
+\202\101\315\145\067\352\216\062\176\275\153\231\135\060\021\310
+\333\110\124\034\073\341\247\023\323\152\110\223\367\075\214\177
+\005\350\316\363\210\052\143\004\270\352\176\130\174\001\173\133
+\341\305\175\357\041\340\215\016\135\121\175\261\147\375\243\275
+\070\066\306\362\070\206\207\032\226\150\140\106\373\050\024\107
+\125\341\247\200\014\153\342\352\337\115\174\220\110\240\066\275
+\011\027\211\177\303\362\323\234\234\343\335\304\033\335\365\267
+\161\263\123\005\211\006\320\313\112\200\301\310\123\220\265\074
+\061\210\027\120\237\311\304\016\213\330\250\002\143\015
+END
+
+# Trust for Certificate "beTRUSTed Root CA-Baltimore Implementation"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA-Baltimore Implementation"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\334\273\236\267\031\113\304\162\005\301\021\165\051\206\203\133
+\123\312\344\370
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\201\065\271\373\373\022\312\030\151\066\353\256\151\170\241\361
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\055
+\102\141\154\164\151\155\157\162\145\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\074\265\075\106
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "beTRUSTed Root CA - Entrust Implementation"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA - Entrust Implementation"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\105\156\164\162\165\163\164\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\105\156\164\162\165\163\164\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\074\265\117\100
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\006\121\060\202\005\071\240\003\002\001\002\002\004\074
+\265\117\100\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\146\061\022\060\020\006\003\125\004\012\023\011\142
+\145\124\122\125\123\124\145\144\061\033\060\031\006\003\125\004
+\013\023\022\142\145\124\122\125\123\124\145\144\040\122\157\157
+\164\040\103\101\163\061\063\060\061\006\003\125\004\003\023\052
+\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040\103
+\101\040\055\040\105\156\164\162\165\163\164\040\111\155\160\154
+\145\155\145\156\164\141\164\151\157\156\060\036\027\015\060\062
+\060\064\061\061\060\070\062\064\062\067\132\027\015\062\062\060
+\064\061\061\060\070\065\064\062\067\132\060\146\061\022\060\020
+\006\003\125\004\012\023\011\142\145\124\122\125\123\124\145\144
+\061\033\060\031\006\003\125\004\013\023\022\142\145\124\122\125
+\123\124\145\144\040\122\157\157\164\040\103\101\163\061\063\060
+\061\006\003\125\004\003\023\052\142\145\124\122\125\123\124\145
+\144\040\122\157\157\164\040\103\101\040\055\040\105\156\164\162
+\165\163\164\040\111\155\160\154\145\155\145\156\164\141\164\151
+\157\156\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\272\364\104\003\252\022\152\265\103\354\125\222\266
+\060\175\065\127\014\333\363\015\047\156\114\367\120\250\233\116
+\053\157\333\365\255\034\113\135\263\251\301\376\173\104\353\133
+\243\005\015\037\305\064\053\060\000\051\361\170\100\262\244\377
+\072\364\001\210\027\176\346\324\046\323\272\114\352\062\373\103
+\167\227\207\043\305\333\103\243\365\052\243\121\136\341\073\322
+\145\151\176\125\025\233\172\347\151\367\104\340\127\265\025\350
+\146\140\017\015\003\373\202\216\243\350\021\173\154\276\307\143
+\016\027\223\337\317\113\256\156\163\165\340\363\252\271\244\300
+\011\033\205\352\161\051\210\101\062\371\360\052\016\154\011\362
+\164\153\146\154\122\023\037\030\274\324\076\367\330\156\040\236
+\312\376\374\041\224\356\023\050\113\327\134\136\014\146\356\351
+\273\017\301\064\261\177\010\166\363\075\046\160\311\213\045\035
+\142\044\014\352\034\165\116\300\022\344\272\023\035\060\051\055
+\126\063\005\273\227\131\176\306\111\117\211\327\057\044\250\266
+\210\100\265\144\222\123\126\044\344\242\240\205\263\136\220\264
+\022\063\315\002\003\001\000\001\243\202\003\005\060\202\003\001
+\060\202\001\267\006\003\125\035\040\004\202\001\256\060\202\001
+\252\060\202\001\246\006\017\053\006\001\004\001\261\076\000\000
+\002\011\050\203\221\061\060\202\001\221\060\202\001\111\006\010
+\053\006\001\005\005\007\002\002\060\202\001\073\032\202\001\067
+\122\145\154\151\141\156\143\145\040\157\156\040\157\162\040\165
+\163\145\040\157\146\040\164\150\151\163\040\103\145\162\164\151
+\146\151\143\141\164\145\040\143\162\145\141\164\145\163\040\141
+\156\040\141\143\153\156\157\167\154\145\144\147\155\145\156\164
+\040\141\156\144\040\141\143\143\145\160\164\141\156\143\145\040
+\157\146\040\164\150\145\040\164\150\145\156\040\141\160\160\154
+\151\143\141\142\154\145\040\163\164\141\156\144\141\162\144\040
+\164\145\162\155\163\040\141\156\144\040\143\157\156\144\151\164
+\151\157\156\163\040\157\146\040\165\163\145\054\040\164\150\145
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\120
+\162\141\143\164\151\143\145\040\123\164\141\164\145\155\145\156
+\164\040\141\156\144\040\164\150\145\040\122\145\154\171\151\156
+\147\040\120\141\162\164\171\040\101\147\162\145\145\155\145\156
+\164\054\040\167\150\151\143\150\040\143\141\156\040\142\145\040
+\146\157\165\156\144\040\141\164\040\164\150\145\040\142\145\124
+\122\125\123\124\145\144\040\167\145\142\040\163\151\164\145\054
+\040\150\164\164\160\163\072\057\057\167\167\167\056\142\145\164
+\162\165\163\164\145\144\056\143\157\155\057\160\162\157\144\165
+\143\164\163\137\163\145\162\166\151\143\145\163\057\151\156\144
+\145\170\056\150\164\155\154\060\102\006\010\053\006\001\005\005
+\007\002\001\026\066\150\164\164\160\163\072\057\057\167\167\167
+\056\142\145\164\162\165\163\164\145\144\056\143\157\155\057\160
+\162\157\144\165\143\164\163\137\163\145\162\166\151\143\145\163
+\057\151\156\144\145\170\056\150\164\155\154\060\021\006\011\140
+\206\110\001\206\370\102\001\001\004\004\003\002\000\007\060\201
+\211\006\003\125\035\037\004\201\201\060\177\060\175\240\173\240
+\171\244\167\060\165\061\022\060\020\006\003\125\004\012\023\011
+\142\145\124\122\125\123\124\145\144\061\033\060\031\006\003\125
+\004\013\023\022\142\145\124\122\125\123\124\145\144\040\122\157
+\157\164\040\103\101\163\061\063\060\061\006\003\125\004\003\023
+\052\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\040\055\040\105\156\164\162\165\163\164\040\111\155\160
+\154\145\155\145\156\164\141\164\151\157\156\061\015\060\013\006
+\003\125\004\003\023\004\103\122\114\061\060\053\006\003\125\035
+\020\004\044\060\042\200\017\062\060\060\062\060\064\061\061\060
+\070\062\064\062\067\132\201\017\062\060\062\062\060\064\061\061
+\060\070\065\064\062\067\132\060\013\006\003\125\035\017\004\004
+\003\002\001\006\060\037\006\003\125\035\043\004\030\060\026\200
+\024\175\160\345\256\070\213\006\077\252\034\032\217\371\317\044
+\060\252\204\204\026\060\035\006\003\125\035\016\004\026\004\024
+\175\160\345\256\070\213\006\077\252\034\032\217\371\317\044\060
+\252\204\204\026\060\014\006\003\125\035\023\004\005\060\003\001
+\001\377\060\035\006\011\052\206\110\206\366\175\007\101\000\004
+\020\060\016\033\010\126\066\056\060\072\064\056\060\003\002\004
+\220\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\052\270\027\316\037\020\224\353\270\232\267
+\271\137\354\332\367\222\044\254\334\222\073\307\040\215\362\231
+\345\135\070\241\302\064\355\305\023\131\134\005\265\053\117\141
+\233\221\373\101\374\374\325\074\115\230\166\006\365\201\175\353
+\335\220\346\321\126\124\332\343\055\014\237\021\062\224\042\001
+\172\366\154\054\164\147\004\314\245\217\216\054\263\103\265\224
+\242\320\175\351\142\177\006\276\047\001\203\236\072\375\212\356
+\230\103\112\153\327\265\227\073\072\277\117\155\264\143\372\063
+\000\064\056\055\155\226\311\173\312\231\143\272\276\364\366\060
+\240\055\230\226\351\126\104\005\251\104\243\141\020\353\202\241
+\147\135\274\135\047\165\252\212\050\066\052\070\222\331\335\244
+\136\000\245\314\314\174\051\052\336\050\220\253\267\341\266\377
+\175\045\013\100\330\252\064\243\055\336\007\353\137\316\012\335
+\312\176\072\175\046\301\142\150\072\346\057\067\363\201\206\041
+\304\251\144\252\357\105\066\321\032\146\174\370\351\067\326\326
+\141\276\242\255\110\347\337\346\164\376\323\155\175\322\045\334
+\254\142\127\251\367
+END
+
+# Trust for Certificate "beTRUSTed Root CA - Entrust Implementation"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA - Entrust Implementation"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\162\231\171\023\354\233\015\256\145\321\266\327\262\112\166\243
+\256\302\356\026
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\175\206\220\217\133\361\362\100\300\367\075\142\265\244\251\073
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\146\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\063\060\061\006\003\125\004\003\023\052\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\105\156\164\162\165\163\164\040\111\155\160\154\145\155
+\145\156\164\141\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\074\265\117\100
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "beTRUSTed Root CA - RSA Implementation"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA - RSA Implementation"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\142\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\057\060\055\006\003\125\004\003\023\046\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\122\123\101\040\111\155\160\154\145\155\145\156\164\141
+\164\151\157\156
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\142\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\057\060\055\006\003\125\004\003\023\046\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\122\123\101\040\111\155\160\154\145\155\145\156\164\141
+\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\073\131\307\173\315\133\127\236\275\067\122\254\166\264
+\252\032
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\150\060\202\004\120\240\003\002\001\002\002\020\073
+\131\307\173\315\133\127\236\275\067\122\254\166\264\252\032\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\142
+\061\022\060\020\006\003\125\004\012\023\011\142\145\124\122\125
+\123\124\145\144\061\033\060\031\006\003\125\004\013\023\022\142
+\145\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101
+\163\061\057\060\055\006\003\125\004\003\023\046\142\145\124\122
+\125\123\124\145\144\040\122\157\157\164\040\103\101\040\055\040
+\122\123\101\040\111\155\160\154\145\155\145\156\164\141\164\151
+\157\156\060\036\027\015\060\062\060\064\061\061\061\061\061\070
+\061\063\132\027\015\062\062\060\064\061\062\061\061\060\067\062
+\065\132\060\142\061\022\060\020\006\003\125\004\012\023\011\142
+\145\124\122\125\123\124\145\144\061\033\060\031\006\003\125\004
+\013\023\022\142\145\124\122\125\123\124\145\144\040\122\157\157
+\164\040\103\101\163\061\057\060\055\006\003\125\004\003\023\046
+\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040\103
+\101\040\055\040\122\123\101\040\111\155\160\154\145\155\145\156
+\164\141\164\151\157\156\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\344\272\064\060\011\216\127\320\271
+\006\054\157\156\044\200\042\277\135\103\246\372\117\254\202\347
+\034\150\160\205\033\243\156\265\252\170\331\156\007\113\077\351
+\337\365\352\350\124\241\141\212\016\057\151\165\030\267\014\345
+\024\215\161\156\230\270\125\374\014\225\320\233\156\341\055\210
+\324\072\100\153\222\361\231\226\144\336\333\377\170\364\356\226
+\035\107\211\174\324\276\271\210\167\043\072\011\346\004\236\155
+\252\136\322\310\275\232\116\031\337\211\352\133\016\176\303\344
+\264\360\340\151\073\210\017\101\220\370\324\161\103\044\301\217
+\046\113\073\126\351\377\214\154\067\351\105\255\205\214\123\303
+\140\206\220\112\226\311\263\124\260\273\027\360\034\105\331\324
+\033\031\144\126\012\031\367\314\341\377\206\257\176\130\136\254
+\172\220\037\311\050\071\105\173\242\266\307\234\037\332\205\324
+\041\206\131\060\223\276\123\063\067\366\357\101\317\063\307\253
+\162\153\045\365\363\123\033\014\114\056\361\165\113\357\240\207
+\367\376\212\025\320\154\325\313\371\150\123\271\160\025\023\302
+\365\056\373\103\065\165\055\002\003\001\000\001\243\202\002\030
+\060\202\002\024\060\014\006\003\125\035\023\004\005\060\003\001
+\001\377\060\202\001\265\006\003\125\035\040\004\202\001\254\060
+\202\001\250\060\202\001\244\006\017\053\006\001\004\001\261\076
+\000\000\003\011\050\203\221\061\060\202\001\217\060\101\006\010
+\053\006\001\005\005\007\002\001\026\065\150\164\164\160\072\057
+\057\167\167\167\056\142\145\164\162\165\163\164\145\144\056\143
+\157\155\057\160\162\157\144\165\143\164\163\137\163\145\162\166
+\151\143\145\163\057\151\156\144\145\170\056\150\164\155\154\060
+\202\001\110\006\010\053\006\001\005\005\007\002\002\060\202\001
+\072\032\202\001\066\122\145\154\151\141\156\143\145\040\157\156
+\040\157\162\040\165\163\145\040\157\146\040\164\150\151\163\040
+\103\145\162\164\151\146\151\143\141\164\145\040\143\162\145\141
+\164\145\163\040\141\156\040\141\143\153\156\157\167\154\145\144
+\147\155\145\156\164\040\141\156\144\040\141\143\143\145\160\164
+\141\156\143\145\040\157\146\040\164\150\145\040\164\150\145\156
+\040\141\160\160\154\151\143\141\142\154\145\040\163\164\141\156
+\144\141\162\144\040\164\145\162\155\163\040\141\156\144\040\143
+\157\156\144\151\164\151\157\156\163\040\157\146\040\165\163\145
+\054\040\164\150\145\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\120\162\141\143\164\151\143\145\040\123\164\141
+\164\145\155\145\156\164\040\141\156\144\040\164\150\145\040\122
+\145\154\171\151\156\147\040\120\141\162\164\171\040\101\147\162
+\145\145\155\145\156\164\054\040\167\150\151\143\150\040\143\141
+\156\040\142\145\040\146\157\165\156\144\040\141\164\040\164\150
+\145\040\142\145\124\122\125\123\124\145\144\040\167\145\142\040
+\163\151\164\145\054\040\150\164\164\160\072\057\057\167\167\167
+\056\142\145\164\162\165\163\164\145\144\056\143\157\155\057\160
+\162\157\144\165\143\164\163\137\163\145\162\166\151\143\145\163
+\057\151\156\144\145\170\056\150\164\155\154\060\013\006\003\125
+\035\017\004\004\003\002\001\006\060\037\006\003\125\035\043\004
+\030\060\026\200\024\251\354\024\176\371\331\103\314\123\053\024
+\255\317\367\360\131\211\101\315\031\060\035\006\003\125\035\016
+\004\026\004\024\251\354\024\176\371\331\103\314\123\053\024\255
+\317\367\360\131\211\101\315\031\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\333\227\260\165
+\352\014\304\301\230\312\126\005\300\250\255\046\110\257\055\040
+\350\201\307\266\337\103\301\054\035\165\113\324\102\215\347\172
+\250\164\334\146\102\131\207\263\365\151\155\331\251\236\263\175
+\034\061\301\365\124\342\131\044\111\345\356\275\071\246\153\212
+\230\104\373\233\327\052\203\227\064\055\307\175\065\114\055\064
+\270\076\015\304\354\210\047\257\236\222\375\120\141\202\250\140
+\007\024\123\314\145\023\301\366\107\104\151\322\061\310\246\335
+\056\263\013\336\112\215\133\075\253\015\302\065\122\242\126\067
+\314\062\213\050\205\102\234\221\100\172\160\053\070\066\325\341
+\163\032\037\345\372\176\137\334\326\234\073\060\352\333\300\133
+\047\134\323\163\007\301\302\363\114\233\157\237\033\312\036\252
+\250\070\063\011\130\262\256\374\007\350\066\334\125\272\057\117
+\100\376\172\275\006\246\201\301\223\042\174\206\021\012\006\167
+\110\256\065\267\057\062\232\141\136\213\276\051\237\051\044\210
+\126\071\054\250\322\253\226\003\132\324\110\237\271\100\204\013
+\230\150\373\001\103\326\033\342\011\261\227\034
+END
+
+# Trust for Certificate "beTRUSTed Root CA - RSA Implementation"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "beTRUSTed Root CA - RSA Implementation"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\035\202\131\312\041\047\303\313\301\154\331\062\366\054\145\051
+\214\250\207\022
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\206\102\005\011\274\247\235\354\035\363\056\016\272\330\035\320
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\142\061\022\060\020\006\003\125\004\012\023\011\142\145\124
+\122\125\123\124\145\144\061\033\060\031\006\003\125\004\013\023
+\022\142\145\124\122\125\123\124\145\144\040\122\157\157\164\040
+\103\101\163\061\057\060\055\006\003\125\004\003\023\046\142\145
+\124\122\125\123\124\145\144\040\122\157\157\164\040\103\101\040
+\055\040\122\123\101\040\111\155\160\154\145\155\145\156\164\141
+\164\151\157\156
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\073\131\307\173\315\133\127\236\275\067\122\254\166\264
+\252\032
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "RSA Security 2048 v3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Security 2048 v3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\062\060\064\070\040\126\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\062\060\064\070\040\126\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\012\001\001\001\000\000\002\174\000\000\000\012\000\000
+\000\002
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\141\060\202\002\111\240\003\002\001\002\002\020\012
+\001\001\001\000\000\002\174\000\000\000\012\000\000\000\002\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\072
+\061\031\060\027\006\003\125\004\012\023\020\122\123\101\040\123
+\145\143\165\162\151\164\171\040\111\156\143\061\035\060\033\006
+\003\125\004\013\023\024\122\123\101\040\123\145\143\165\162\151
+\164\171\040\062\060\064\070\040\126\063\060\036\027\015\060\061
+\060\062\062\062\062\060\063\071\062\063\132\027\015\062\066\060
+\062\062\062\062\060\063\071\062\063\132\060\072\061\031\060\027
+\006\003\125\004\012\023\020\122\123\101\040\123\145\143\165\162
+\151\164\171\040\111\156\143\061\035\060\033\006\003\125\004\013
+\023\024\122\123\101\040\123\145\143\165\162\151\164\171\040\062
+\060\064\070\040\126\063\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\267\217\125\161\322\200\335\173\151
+\171\247\360\030\120\062\074\142\147\366\012\225\007\335\346\033
+\363\236\331\322\101\124\153\255\237\174\276\031\315\373\106\253
+\101\150\036\030\352\125\310\057\221\170\211\050\373\047\051\140
+\377\337\217\214\073\311\111\233\265\244\224\316\001\352\076\265
+\143\173\177\046\375\031\335\300\041\275\204\321\055\117\106\303
+\116\334\330\067\071\073\050\257\313\235\032\352\053\257\041\245
+\301\043\042\270\270\033\132\023\207\127\203\321\360\040\347\350
+\117\043\102\260\000\245\175\211\351\351\141\163\224\230\161\046
+\274\055\152\340\367\115\360\361\266\052\070\061\201\015\051\341
+\000\301\121\017\114\122\370\004\132\252\175\162\323\270\207\052
+\273\143\020\003\052\263\241\117\015\132\136\106\267\075\016\365
+\164\354\231\237\371\075\044\201\210\246\335\140\124\350\225\066
+\075\306\011\223\232\243\022\200\000\125\231\031\107\275\320\245
+\174\303\272\373\037\367\365\017\370\254\271\265\364\067\230\023
+\030\336\205\133\267\014\202\073\207\157\225\071\130\060\332\156
+\001\150\027\042\314\300\013\002\003\001\000\001\243\143\060\141
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\037\006\003\125\035\043\004\030\060\026\200\024\007\303
+\121\060\244\252\351\105\256\065\044\372\377\044\054\063\320\261
+\235\214\060\035\006\003\125\035\016\004\026\004\024\007\303\121
+\060\244\252\351\105\256\065\044\372\377\044\054\063\320\261\235
+\214\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\137\076\206\166\156\270\065\074\116\066\034
+\036\171\230\277\375\325\022\021\171\122\016\356\061\211\274\335
+\177\371\321\306\025\041\350\212\001\124\015\072\373\124\271\326
+\143\324\261\252\226\115\242\102\115\324\123\037\213\020\336\177
+\145\276\140\023\047\161\210\244\163\343\204\143\321\244\125\341
+\120\223\346\033\016\171\320\147\274\106\310\277\077\027\015\225
+\346\306\220\151\336\347\264\057\336\225\175\320\022\077\075\076
+\177\115\077\024\150\365\021\120\325\301\364\220\245\010\035\061
+\140\377\140\214\043\124\012\257\376\241\156\305\321\172\052\150
+\170\317\036\202\012\040\264\037\255\345\205\262\152\150\165\116
+\255\045\067\224\205\276\275\241\324\352\267\014\113\074\235\350
+\022\000\360\137\254\015\341\254\160\143\163\367\177\171\237\062
+\045\102\164\005\200\050\277\275\301\044\226\130\025\261\027\041
+\351\211\113\333\007\210\147\364\025\255\160\076\057\115\205\073
+\302\267\333\376\230\150\043\211\341\164\017\336\364\305\204\143
+\051\033\314\313\007\311\000\244\251\327\302\042\117\147\327\167
+\354\040\005\141\336
+END
+
+# Trust for Certificate "RSA Security 2048 v3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Security 2048 v3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\045\001\220\031\317\373\331\231\034\267\150\045\164\215\224\137
+\060\223\225\102
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\167\015\031\261\041\375\000\102\234\076\014\245\335\013\002\216
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\062\060\064\070\040\126\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\012\001\001\001\000\000\002\174\000\000\000\012\000\000
+\000\002
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "RSA Security 1024 v3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Security 1024 v3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\061\060\062\064\040\126\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\061\060\062\064\040\126\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\012\001\001\001\000\000\002\174\000\000\000\013\000\000
+\000\002
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\134\060\202\001\305\240\003\002\001\002\002\020\012
+\001\001\001\000\000\002\174\000\000\000\013\000\000\000\002\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\072
+\061\031\060\027\006\003\125\004\012\023\020\122\123\101\040\123
+\145\143\165\162\151\164\171\040\111\156\143\061\035\060\033\006
+\003\125\004\013\023\024\122\123\101\040\123\145\143\165\162\151
+\164\171\040\061\060\062\064\040\126\063\060\036\027\015\060\061
+\060\062\062\062\062\061\060\061\064\071\132\027\015\062\066\060
+\062\062\062\062\060\060\061\064\071\132\060\072\061\031\060\027
+\006\003\125\004\012\023\020\122\123\101\040\123\145\143\165\162
+\151\164\171\040\111\156\143\061\035\060\033\006\003\125\004\013
+\023\024\122\123\101\040\123\145\143\165\162\151\164\171\040\061
+\060\062\064\040\126\063\060\201\237\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002
+\201\201\000\325\335\376\146\011\317\044\074\076\256\201\116\116
+\212\304\151\200\133\131\073\337\271\115\114\312\265\055\303\047
+\055\074\257\000\102\155\274\050\246\226\317\177\327\130\254\203
+\012\243\125\265\173\027\220\025\204\114\212\356\046\231\334\130
+\357\307\070\246\252\257\320\216\102\310\142\327\253\254\251\373
+\112\175\277\352\376\022\115\335\377\046\055\157\066\124\150\310
+\322\204\126\356\222\123\141\011\263\077\071\233\250\311\233\275
+\316\237\176\324\031\152\026\051\030\276\327\072\151\334\045\133
+\063\032\121\002\003\001\000\001\243\143\060\141\060\017\006\003
+\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006
+\003\125\035\017\001\001\377\004\004\003\002\001\006\060\037\006
+\003\125\035\043\004\030\060\026\200\024\304\300\034\244\007\224
+\375\315\115\001\324\124\332\245\014\137\336\256\005\132\060\035
+\006\003\125\035\016\004\026\004\024\304\300\034\244\007\224\375
+\315\115\001\324\124\332\245\014\137\336\256\005\132\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\201\201\000
+\077\055\152\343\046\103\225\175\211\227\145\373\165\344\162\035
+\106\127\304\141\153\151\237\022\233\054\325\132\350\300\242\360
+\103\225\343\037\351\166\315\334\353\274\223\240\145\012\307\115
+\117\137\247\257\242\106\024\271\014\363\314\275\152\156\267\235
+\336\045\102\320\124\377\236\150\163\143\334\044\353\042\277\250
+\162\362\136\000\341\015\116\072\103\156\231\116\077\211\170\003
+\230\312\363\125\314\235\256\216\301\252\105\230\372\217\032\240
+\215\210\043\361\025\101\015\245\106\076\221\077\213\353\367\161
+END
+
+# Trust for Certificate "RSA Security 1024 v3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "RSA Security 1024 v3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\074\273\135\340\374\326\071\174\005\210\345\146\227\275\106\052
+\275\371\134\166
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\072\345\120\260\071\276\307\106\066\063\241\376\202\076\215\224
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\072\061\031\060\027\006\003\125\004\012\023\020\122\123\101
+\040\123\145\143\165\162\151\164\171\040\111\156\143\061\035\060
+\033\006\003\125\004\013\023\024\122\123\101\040\123\145\143\165
+\162\151\164\171\040\061\060\062\064\040\126\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\012\001\001\001\000\000\002\174\000\000\000\013\000\000
+\000\002
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GeoTrust Global CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Global CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\102\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\033\060\031\006\003\125\004\003
+\023\022\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\102\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\033\060\031\006\003\125\004\003
+\023\022\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\003\002\064\126
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\124\060\202\002\074\240\003\002\001\002\002\003\002
+\064\126\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\060\102\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162
+\165\163\164\040\111\156\143\056\061\033\060\031\006\003\125\004
+\003\023\022\107\145\157\124\162\165\163\164\040\107\154\157\142
+\141\154\040\103\101\060\036\027\015\060\062\060\065\062\061\060
+\064\060\060\060\060\132\027\015\062\062\060\065\062\061\060\064
+\060\060\060\060\132\060\102\061\013\060\011\006\003\125\004\006
+\023\002\125\123\061\026\060\024\006\003\125\004\012\023\015\107
+\145\157\124\162\165\163\164\040\111\156\143\056\061\033\060\031
+\006\003\125\004\003\023\022\107\145\157\124\162\165\163\164\040
+\107\154\157\142\141\154\040\103\101\060\202\001\042\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017
+\000\060\202\001\012\002\202\001\001\000\332\314\030\143\060\375
+\364\027\043\032\126\176\133\337\074\154\070\344\161\267\170\221
+\324\274\241\330\114\370\250\103\266\003\351\115\041\007\010\210
+\332\130\057\146\071\051\275\005\170\213\235\070\350\005\267\152
+\176\161\244\346\304\140\246\260\357\200\344\211\050\017\236\045
+\326\355\203\363\255\246\221\307\230\311\102\030\065\024\235\255
+\230\106\222\056\117\312\361\207\103\301\026\225\127\055\120\357
+\211\055\200\172\127\255\362\356\137\153\322\000\215\271\024\370
+\024\025\065\331\300\106\243\173\162\310\221\277\311\125\053\315
+\320\227\076\234\046\144\314\337\316\203\031\161\312\116\346\324
+\325\173\251\031\315\125\336\310\354\322\136\070\123\345\134\117
+\214\055\376\120\043\066\374\146\346\313\216\244\071\031\000\267
+\225\002\071\221\013\016\376\070\056\321\035\005\232\366\115\076
+\157\017\007\035\257\054\036\217\140\071\342\372\066\123\023\071
+\324\136\046\053\333\075\250\024\275\062\353\030\003\050\122\004
+\161\345\253\063\075\341\070\273\007\066\204\142\234\171\352\026
+\060\364\137\300\053\350\161\153\344\371\002\003\001\000\001\243
+\123\060\121\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\300
+\172\230\150\215\211\373\253\005\144\014\021\175\252\175\145\270
+\312\314\116\060\037\006\003\125\035\043\004\030\060\026\200\024
+\300\172\230\150\215\211\373\253\005\144\014\021\175\252\175\145
+\270\312\314\116\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\202\001\001\000\065\343\051\152\345\057\135\124
+\216\051\120\224\237\231\032\024\344\217\170\052\142\224\242\047
+\147\236\320\317\032\136\107\351\301\262\244\317\335\101\032\005
+\116\233\113\356\112\157\125\122\263\044\241\067\012\353\144\166
+\052\056\054\363\375\073\165\220\277\372\161\330\307\075\067\322
+\265\005\225\142\271\246\336\211\075\066\173\070\167\110\227\254
+\246\040\217\056\246\311\014\302\262\231\105\000\307\316\021\121
+\042\042\340\245\352\266\025\110\011\144\352\136\117\164\367\005
+\076\307\212\122\014\333\025\264\275\155\233\345\306\261\124\150
+\251\343\151\220\266\232\245\017\270\271\077\040\175\256\112\265
+\270\234\344\035\266\253\346\224\245\301\307\203\255\333\365\047
+\207\016\004\154\325\377\335\240\135\355\207\122\267\053\025\002
+\256\071\246\152\164\351\332\304\347\274\115\064\036\251\134\115
+\063\137\222\011\057\210\146\135\167\227\307\035\166\023\251\325
+\345\361\026\011\021\065\325\254\333\044\161\160\054\230\126\013
+\331\027\264\321\343\121\053\136\165\350\325\320\334\117\064\355
+\302\005\146\200\241\313\346\063
+END
+
+# Trust for Certificate "GeoTrust Global CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Global CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\336\050\364\244\377\345\271\057\243\305\003\321\243\111\247\371
+\226\052\202\022
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\367\165\253\051\373\121\116\267\167\136\377\005\074\231\216\365
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\102\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\033\060\031\006\003\125\004\003
+\023\022\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\003\002\064\126
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GeoTrust Global CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Global CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\035\060\033\006\003\125\004\003
+\023\024\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\035\060\033\006\003\125\004\003
+\023\024\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\146\060\202\002\116\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061\026
+\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165\163
+\164\040\111\156\143\056\061\035\060\033\006\003\125\004\003\023
+\024\107\145\157\124\162\165\163\164\040\107\154\157\142\141\154
+\040\103\101\040\062\060\036\027\015\060\064\060\063\060\064\060
+\065\060\060\060\060\132\027\015\061\071\060\063\060\064\060\065
+\060\060\060\060\132\060\104\061\013\060\011\006\003\125\004\006
+\023\002\125\123\061\026\060\024\006\003\125\004\012\023\015\107
+\145\157\124\162\165\163\164\040\111\156\143\056\061\035\060\033
+\006\003\125\004\003\023\024\107\145\157\124\162\165\163\164\040
+\107\154\157\142\141\154\040\103\101\040\062\060\202\001\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\001\017\000\060\202\001\012\002\202\001\001\000\357\074\115\100
+\075\020\337\073\123\000\341\147\376\224\140\025\076\205\210\361
+\211\015\220\310\050\043\231\005\350\053\040\235\306\363\140\106
+\330\301\262\325\214\061\331\334\040\171\044\201\277\065\062\374
+\143\151\333\261\052\153\356\041\130\362\010\351\170\313\157\313
+\374\026\122\310\221\304\377\075\163\336\261\076\247\302\175\146
+\301\365\176\122\044\032\342\325\147\221\320\202\020\327\170\113
+\117\053\102\071\275\144\055\100\240\260\020\323\070\110\106\210
+\241\014\273\072\063\052\142\230\373\000\235\023\131\177\157\073
+\162\252\356\246\017\206\371\005\141\352\147\177\014\067\226\213
+\346\151\026\107\021\302\047\131\003\263\246\140\302\041\100\126
+\372\240\307\175\072\023\343\354\127\307\263\326\256\235\211\200
+\367\001\347\054\366\226\053\023\015\171\054\331\300\344\206\173
+\113\214\014\162\202\212\373\027\315\000\154\072\023\074\260\204
+\207\113\026\172\051\262\117\333\035\324\013\363\146\067\275\330
+\366\127\273\136\044\172\270\074\213\271\372\222\032\032\204\236
+\330\164\217\252\033\177\136\364\376\105\042\041\002\003\001\000
+\001\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004
+\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004
+\024\161\070\066\362\002\061\123\107\053\156\272\145\106\251\020
+\025\130\040\005\011\060\037\006\003\125\035\043\004\030\060\026
+\200\024\161\070\066\362\002\061\123\107\053\156\272\145\106\251
+\020\025\130\040\005\011\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\206\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\001\001\000\003\367\265\053\253\135
+\020\374\173\262\262\136\254\233\016\176\123\170\131\076\102\004
+\376\165\243\255\254\201\116\327\002\213\136\304\055\310\122\166
+\307\054\037\374\201\062\230\321\113\306\222\223\063\065\061\057
+\374\330\035\104\335\340\201\177\235\351\213\341\144\221\142\013
+\071\010\214\254\164\235\131\331\172\131\122\227\021\271\026\173
+\157\105\323\226\331\061\175\002\066\017\234\073\156\317\054\015
+\003\106\105\353\240\364\177\110\104\306\010\100\314\336\033\160
+\265\051\255\272\213\073\064\145\165\033\161\041\035\054\024\012
+\260\226\225\270\326\352\362\145\373\051\272\117\352\221\223\164
+\151\266\362\377\341\032\320\014\321\166\205\313\212\045\275\227
+\136\054\157\025\231\046\347\266\051\377\042\354\311\002\307\126
+\000\315\111\271\263\154\173\123\004\032\342\250\311\252\022\005
+\043\302\316\347\273\004\002\314\300\107\242\344\304\051\057\133
+\105\127\211\121\356\074\353\122\010\377\007\065\036\237\065\152
+\107\112\126\230\321\132\205\037\214\365\042\277\253\316\203\363
+\342\042\051\256\175\203\100\250\272\154
+END
+
+# Trust for Certificate "GeoTrust Global CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Global CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\251\351\170\010\024\067\130\210\362\005\031\260\155\053\015\053
+\140\026\220\175
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\016\100\247\154\336\003\135\217\321\017\344\321\215\371\154\251
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\035\060\033\006\003\125\004\003
+\023\024\107\145\157\124\162\165\163\164\040\107\154\157\142\141
+\154\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GeoTrust Universal CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Universal CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\036\060\034\006\003\125\004\003
+\023\025\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\036\060\034\006\003\125\004\003
+\023\025\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\150\060\202\003\120\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061\026
+\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165\163
+\164\040\111\156\143\056\061\036\060\034\006\003\125\004\003\023
+\025\107\145\157\124\162\165\163\164\040\125\156\151\166\145\162
+\163\141\154\040\103\101\060\036\027\015\060\064\060\063\060\064
+\060\065\060\060\060\060\132\027\015\062\071\060\063\060\064\060
+\065\060\060\060\060\132\060\105\061\013\060\011\006\003\125\004
+\006\023\002\125\123\061\026\060\024\006\003\125\004\012\023\015
+\107\145\157\124\162\165\163\164\040\111\156\143\056\061\036\060
+\034\006\003\125\004\003\023\025\107\145\157\124\162\165\163\164
+\040\125\156\151\166\145\162\163\141\154\040\103\101\060\202\002
+\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\202\002\017\000\060\202\002\012\002\202\002\001\000\246\025
+\125\240\243\306\340\037\214\235\041\120\327\301\276\053\133\265
+\244\236\241\331\162\130\275\000\033\114\277\141\311\024\035\105
+\202\253\306\035\200\326\075\353\020\234\072\257\155\044\370\274
+\161\001\236\006\365\174\137\036\301\016\125\312\203\232\131\060
+\256\031\313\060\110\225\355\042\067\215\364\112\232\162\146\076
+\255\225\300\340\026\000\340\020\037\053\061\016\327\224\124\323
+\102\063\240\064\035\036\105\166\335\117\312\030\067\354\205\025
+\172\031\010\374\325\307\234\360\362\251\056\020\251\222\346\075
+\130\075\251\026\150\074\057\165\041\030\177\050\167\245\341\141
+\027\267\246\351\370\036\231\333\163\156\364\012\242\041\154\356
+\332\252\205\222\146\257\366\172\153\202\332\272\042\010\065\017
+\317\102\361\065\372\152\356\176\053\045\314\072\021\344\155\257
+\163\262\166\035\255\320\262\170\147\032\244\071\034\121\013\147
+\126\203\375\070\135\015\316\335\360\273\053\226\037\336\173\062
+\122\375\035\273\265\006\241\262\041\136\245\326\225\150\177\360
+\231\236\334\105\010\076\347\322\011\015\065\224\335\200\116\123
+\227\327\265\011\104\040\144\026\027\003\002\114\123\015\150\336
+\325\252\162\115\223\155\202\016\333\234\275\317\264\363\134\135
+\124\172\151\011\226\326\333\021\301\215\165\250\264\317\071\310
+\316\074\274\044\174\346\142\312\341\275\175\247\275\127\145\013
+\344\376\045\355\266\151\020\334\050\032\106\275\001\035\320\227
+\265\341\230\073\300\067\144\326\075\224\356\013\341\365\050\256
+\013\126\277\161\213\043\051\101\216\206\305\113\122\173\330\161
+\253\037\212\025\246\073\203\132\327\130\001\121\306\114\101\331
+\177\330\101\147\162\242\050\337\140\203\251\236\310\173\374\123
+\163\162\131\365\223\172\027\166\016\316\367\345\134\331\013\125
+\064\242\252\133\265\152\124\347\023\312\127\354\227\155\364\136
+\006\057\105\213\130\324\043\026\222\344\026\156\050\143\131\060
+\337\120\001\234\143\211\032\237\333\027\224\202\160\067\303\044
+\236\232\107\326\132\312\116\250\151\211\162\037\221\154\333\176
+\236\033\255\307\037\163\335\054\117\031\145\375\177\223\100\020
+\056\322\360\355\074\236\056\050\076\151\046\063\305\173\002\003
+\001\000\001\243\143\060\141\060\017\006\003\125\035\023\001\001
+\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004
+\026\004\024\332\273\056\252\260\014\270\210\046\121\164\134\155
+\003\323\300\330\217\172\326\060\037\006\003\125\035\043\004\030
+\060\026\200\024\332\273\056\252\260\014\270\210\046\121\164\134
+\155\003\323\300\330\217\172\326\060\016\006\003\125\035\017\001
+\001\377\004\004\003\002\001\206\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\002\001\000\061\170\346\307
+\265\337\270\224\100\311\161\304\250\065\354\106\035\302\205\363
+\050\130\206\260\013\374\216\262\071\217\104\125\253\144\204\134
+\151\251\320\232\070\074\372\345\037\065\345\104\343\200\171\224
+\150\244\273\304\237\075\341\064\315\060\106\213\124\053\225\245
+\357\367\077\231\204\375\065\346\317\061\306\334\152\277\247\327
+\043\010\341\230\136\303\132\010\166\251\246\257\167\057\267\140
+\275\104\106\152\357\227\377\163\225\301\216\350\223\373\375\061
+\267\354\127\021\021\105\233\060\361\032\210\071\301\117\074\247
+\000\325\307\374\253\155\200\042\160\245\014\340\135\004\051\002
+\373\313\240\221\321\174\326\303\176\120\325\235\130\276\101\070
+\353\271\165\074\025\331\233\311\112\203\131\300\332\123\375\063
+\273\066\030\233\205\017\025\335\356\055\254\166\223\271\331\001
+\215\110\020\250\373\365\070\206\361\333\012\306\275\204\243\043
+\101\336\326\167\157\205\324\205\034\120\340\256\121\212\272\215
+\076\166\342\271\312\047\362\137\237\357\156\131\015\006\330\053
+\027\244\322\174\153\273\137\024\032\110\217\032\114\347\263\107
+\034\216\114\105\053\040\356\110\337\347\335\011\216\030\250\332
+\100\215\222\046\021\123\141\163\135\353\275\347\304\115\051\067
+\141\353\254\071\055\147\056\026\326\365\000\203\205\241\314\177
+\166\304\175\344\267\113\146\357\003\105\140\151\266\014\122\226
+\222\204\136\246\243\265\244\076\053\331\314\330\033\107\252\362
+\104\332\117\371\003\350\360\024\313\077\363\203\336\320\301\124
+\343\267\350\012\067\115\213\040\131\003\060\031\241\054\310\275
+\021\037\337\256\311\112\305\363\047\146\146\206\254\150\221\377
+\331\346\123\034\017\213\134\151\145\012\046\310\036\064\303\135
+\121\173\327\251\234\006\241\066\335\325\211\224\274\331\344\055
+\014\136\011\154\010\227\174\243\075\174\223\377\077\241\024\247
+\317\265\135\353\333\333\034\304\166\337\210\271\275\105\005\225
+\033\256\374\106\152\114\257\110\343\316\256\017\322\176\353\346
+\154\234\117\201\152\172\144\254\273\076\325\347\313\166\056\305
+\247\110\301\134\220\017\313\310\077\372\346\062\341\215\033\157
+\244\346\216\330\371\051\110\212\316\163\376\054
+END
+
+# Trust for Certificate "GeoTrust Universal CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Universal CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\346\041\363\065\103\171\005\232\113\150\060\235\212\057\164\042
+\025\207\354\171
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\222\145\130\213\242\032\061\162\163\150\134\264\245\172\007\110
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\036\060\034\006\003\125\004\003
+\023\025\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GeoTrust Universal CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Universal CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\040\060\036\006\003\125\004\003
+\023\027\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\040\060\036\006\003\125\004\003
+\023\027\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\154\060\202\003\124\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061\026
+\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165\163
+\164\040\111\156\143\056\061\040\060\036\006\003\125\004\003\023
+\027\107\145\157\124\162\165\163\164\040\125\156\151\166\145\162
+\163\141\154\040\103\101\040\062\060\036\027\015\060\064\060\063
+\060\064\060\065\060\060\060\060\132\027\015\062\071\060\063\060
+\064\060\065\060\060\060\060\132\060\107\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\026\060\024\006\003\125\004\012
+\023\015\107\145\157\124\162\165\163\164\040\111\156\143\056\061
+\040\060\036\006\003\125\004\003\023\027\107\145\157\124\162\165
+\163\164\040\125\156\151\166\145\162\163\141\154\040\103\101\040
+\062\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002
+\001\000\263\124\122\301\311\076\362\331\334\261\123\032\131\051
+\347\261\303\105\050\345\327\321\355\305\305\113\241\252\164\173
+\127\257\112\046\374\330\365\136\247\156\031\333\164\014\117\065
+\133\062\013\001\343\333\353\172\167\065\352\252\132\340\326\350
+\241\127\224\360\220\243\164\126\224\104\060\003\036\134\116\053
+\205\046\164\202\172\014\166\240\157\115\316\101\055\240\025\006
+\024\137\267\102\315\173\217\130\141\064\334\052\010\371\056\303
+\001\246\042\104\034\114\007\202\346\133\316\320\112\174\004\323
+\031\163\047\360\252\230\177\056\257\116\353\207\036\044\167\152
+\135\266\350\133\105\272\334\303\241\005\157\126\216\217\020\046
+\245\111\303\056\327\101\207\042\340\117\206\312\140\265\352\241
+\143\300\001\227\020\171\275\000\074\022\155\053\025\261\254\113
+\261\356\030\271\116\226\334\334\166\377\073\276\317\137\003\300
+\374\073\350\276\106\033\377\332\100\302\122\367\376\343\072\367
+\152\167\065\320\332\215\353\136\030\152\061\307\036\272\074\033
+\050\326\153\124\306\252\133\327\242\054\033\031\314\242\002\366
+\233\131\275\067\153\206\265\155\202\272\330\352\311\126\274\251
+\066\130\375\076\031\363\355\014\046\251\223\070\370\117\301\135
+\042\006\320\227\352\341\255\306\125\340\201\053\050\203\072\372
+\364\173\041\121\000\276\122\070\316\315\146\171\250\364\201\126
+\342\320\203\011\107\121\133\120\152\317\333\110\032\135\076\367
+\313\366\145\367\154\361\225\370\002\073\062\126\202\071\172\133
+\275\057\211\033\277\241\264\350\377\177\215\214\337\003\361\140
+\116\130\021\114\353\243\077\020\053\203\232\001\163\331\224\155
+\204\000\047\146\254\360\160\100\011\102\222\255\117\223\015\141
+\011\121\044\330\222\325\013\224\141\262\207\262\355\377\232\065
+\377\205\124\312\355\104\103\254\033\074\026\153\110\112\012\034
+\100\210\037\222\302\013\000\005\377\362\310\002\112\244\252\251
+\314\231\226\234\057\130\340\175\341\276\273\007\334\137\004\162
+\134\061\064\303\354\137\055\340\075\144\220\042\346\321\354\270
+\056\335\131\256\331\241\067\277\124\065\334\163\062\117\214\004
+\036\063\262\311\106\361\330\134\310\125\120\311\150\275\250\272
+\066\011\002\003\001\000\001\243\143\060\141\060\017\006\003\125
+\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003
+\125\035\016\004\026\004\024\166\363\125\341\372\244\066\373\360
+\237\134\142\161\355\074\364\107\070\020\053\060\037\006\003\125
+\035\043\004\030\060\026\200\024\166\363\125\341\372\244\066\373
+\360\237\134\142\161\355\074\364\107\070\020\053\060\016\006\003
+\125\035\017\001\001\377\004\004\003\002\001\206\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\002\001\000
+\146\301\306\043\363\331\340\056\156\137\350\317\256\260\260\045
+\115\053\370\073\130\233\100\044\067\132\313\253\026\111\377\263
+\165\171\063\241\057\155\160\027\064\221\376\147\176\217\354\233
+\345\136\202\251\125\037\057\334\324\121\007\022\376\254\026\076
+\054\065\306\143\374\334\020\353\015\243\252\320\174\314\321\320
+\057\121\056\304\024\132\336\350\031\341\076\306\314\244\051\347
+\056\204\252\006\060\170\166\124\163\050\230\131\070\340\000\015
+\142\323\102\175\041\237\256\075\072\214\325\372\167\015\030\053
+\026\016\137\066\341\374\052\265\060\044\317\340\143\014\173\130
+\032\376\231\272\102\022\261\221\364\174\150\342\310\350\257\054
+\352\311\176\256\273\052\075\015\025\334\064\225\266\030\164\250
+\152\017\307\264\364\023\304\344\133\355\012\322\244\227\114\052
+\355\057\154\022\211\075\361\047\160\252\152\003\122\041\237\100
+\250\147\120\362\363\132\037\337\337\043\366\334\170\116\346\230
+\117\125\072\123\343\357\362\364\237\307\174\330\130\257\051\042
+\227\270\340\275\221\056\260\166\354\127\021\317\357\051\104\363
+\351\205\172\140\143\344\135\063\211\027\331\061\252\332\326\363
+\030\065\162\317\207\053\057\143\043\204\135\204\214\077\127\240
+\210\374\231\221\050\046\151\231\324\217\227\104\276\216\325\110
+\261\244\050\051\361\025\264\341\345\236\335\370\217\246\157\046
+\327\011\074\072\034\021\016\246\154\067\367\255\104\207\054\050
+\307\330\164\202\263\320\157\112\127\273\065\051\047\240\213\350
+\041\247\207\144\066\135\314\330\026\254\307\262\047\100\222\125
+\070\050\215\121\156\335\024\147\123\154\161\134\046\204\115\165
+\132\266\176\140\126\251\115\255\373\233\036\227\363\015\331\322
+\227\124\167\332\075\022\267\340\036\357\010\006\254\371\205\207
+\351\242\334\257\176\030\022\203\375\126\027\101\056\325\051\202
+\175\231\364\061\366\161\251\317\054\001\047\245\005\271\252\262
+\110\116\052\357\237\223\122\121\225\074\122\163\216\126\114\027
+\100\300\011\050\344\213\152\110\123\333\354\315\125\125\361\306
+\370\351\242\054\114\246\321\046\137\176\257\132\114\332\037\246
+\362\034\054\176\256\002\026\322\126\320\057\127\123\107\350\222
+END
+
+# Trust for Certificate "GeoTrust Universal CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Universal CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\067\232\031\173\101\205\105\065\014\246\003\151\363\074\056\257
+\107\117\040\171
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\064\374\270\320\066\333\236\024\263\302\362\333\217\344\224\307
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\040\060\036\006\003\125\004\003
+\023\027\107\145\157\124\162\165\163\164\040\125\156\151\166\145
+\162\163\141\154\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "UTN-USER First-Network Applications"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN-USER First-Network Applications"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\053\060\051\006\003\125
+\004\003\023\042\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\116\145\164\167\157\162\153\040\101\160\160\154\151\143
+\141\164\151\157\156\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\053\060\051\006\003\125
+\004\003\023\042\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\116\145\164\167\157\162\153\040\101\160\160\154\151\143
+\141\164\151\157\156\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\060\113\300
+\063\167
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\144\060\202\003\114\240\003\002\001\002\002\020\104
+\276\014\213\120\000\044\264\021\323\066\060\113\300\063\167\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\243\061\013\060\011\006\003\125\004\006\023\002\125\123\061\013
+\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025\006
+\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145\040
+\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124
+\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030\150
+\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164\162
+\165\163\164\056\143\157\155\061\053\060\051\006\003\125\004\003
+\023\042\125\124\116\055\125\123\105\122\106\151\162\163\164\055
+\116\145\164\167\157\162\153\040\101\160\160\154\151\143\141\164
+\151\157\156\163\060\036\027\015\071\071\060\067\060\071\061\070
+\064\070\063\071\132\027\015\061\071\060\067\060\071\061\070\065
+\067\064\071\132\060\201\243\061\013\060\011\006\003\125\004\006
+\023\002\125\123\061\013\060\011\006\003\125\004\010\023\002\125
+\124\061\027\060\025\006\003\125\004\007\023\016\123\141\154\164
+\040\114\141\153\145\040\103\151\164\171\061\036\060\034\006\003
+\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122\125
+\123\124\040\116\145\164\167\157\162\153\061\041\060\037\006\003
+\125\004\013\023\030\150\164\164\160\072\057\057\167\167\167\056
+\165\163\145\162\164\162\165\163\164\056\143\157\155\061\053\060
+\051\006\003\125\004\003\023\042\125\124\116\055\125\123\105\122
+\106\151\162\163\164\055\116\145\164\167\157\162\153\040\101\160
+\160\154\151\143\141\164\151\157\156\163\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\263\373\221\241\344
+\066\125\205\254\006\064\133\240\232\130\262\370\265\017\005\167
+\203\256\062\261\166\222\150\354\043\112\311\166\077\343\234\266
+\067\171\003\271\253\151\215\007\045\266\031\147\344\260\033\030
+\163\141\112\350\176\315\323\057\144\343\246\174\014\372\027\200
+\243\015\107\211\117\121\161\057\356\374\077\371\270\026\200\207
+\211\223\045\040\232\103\202\151\044\166\050\131\065\241\035\300
+\177\203\006\144\026\040\054\323\111\244\205\264\300\141\177\121
+\010\370\150\025\221\200\313\245\325\356\073\072\364\204\004\136
+\140\131\247\214\064\162\356\270\170\305\321\073\022\112\157\176
+\145\047\271\244\125\305\271\157\103\244\305\035\054\231\300\122
+\244\170\114\025\263\100\230\010\153\103\306\001\260\172\173\365
+\153\034\042\077\313\357\377\250\320\072\113\166\025\236\322\321
+\306\056\343\333\127\033\062\242\270\157\350\206\246\077\160\253
+\345\160\222\253\104\036\100\120\373\234\243\142\344\154\156\240
+\310\336\342\200\102\372\351\057\350\316\062\004\217\174\215\267
+\034\243\065\074\025\335\236\303\256\227\245\002\003\001\000\001
+\243\201\221\060\201\216\060\013\006\003\125\035\017\004\004\003
+\002\001\306\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\372
+\206\311\333\340\272\351\170\365\113\250\326\025\337\360\323\341
+\152\024\074\060\117\006\003\125\035\037\004\110\060\106\060\104
+\240\102\240\100\206\076\150\164\164\160\072\057\057\143\162\154
+\056\165\163\145\162\164\162\165\163\164\056\143\157\155\057\125
+\124\116\055\125\123\105\122\106\151\162\163\164\055\116\145\164
+\167\157\162\153\101\160\160\154\151\143\141\164\151\157\156\163
+\056\143\162\154\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\202\001\001\000\244\363\045\314\321\324\221\203
+\042\320\314\062\253\233\226\116\064\221\124\040\045\064\141\137
+\052\002\025\341\213\252\377\175\144\121\317\012\377\274\175\330
+\041\152\170\313\057\121\157\370\102\035\063\275\353\265\173\224
+\303\303\251\240\055\337\321\051\037\035\376\217\077\273\250\105
+\052\177\321\156\125\044\342\273\002\373\061\077\276\350\274\354
+\100\053\370\001\324\126\070\344\312\104\202\265\141\040\041\147
+\145\366\360\013\347\064\370\245\302\234\243\134\100\037\205\223
+\225\006\336\117\324\047\251\266\245\374\026\315\163\061\077\270
+\145\047\317\324\123\032\360\254\156\237\117\005\014\003\201\247
+\204\051\304\132\275\144\127\162\255\073\317\067\030\246\230\306
+\255\006\264\334\010\243\004\325\051\244\226\232\022\147\112\214
+\140\105\235\361\043\232\260\000\234\150\265\230\120\323\357\216
+\056\222\145\261\110\076\041\276\025\060\052\015\265\014\243\153
+\077\256\177\127\365\037\226\174\337\157\335\202\060\054\145\033
+\100\112\315\150\271\162\354\161\166\354\124\216\037\205\014\001
+\152\372\246\070\254\037\304\204
+END
+
+# Trust for Certificate "UTN-USER First-Network Applications"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN-USER First-Network Applications"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\135\230\234\333\025\226\021\066\121\145\144\033\126\017\333\352
+\052\302\076\361
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\277\140\131\243\133\272\366\247\166\102\332\157\032\173\120\317
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\053\060\051\006\003\125
+\004\003\023\042\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\116\145\164\167\157\162\153\040\101\160\160\154\151\143
+\141\164\151\157\156\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\060\113\300
+\063\167
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "America Online Root Certification Authority 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "America Online Root Certification Authority 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\244\060\202\002\214\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061\034
+\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143\141
+\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060\064
+\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040\117
+\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\061\060\036\027\015\060\062\060\065\062\070\060\066
+\060\060\060\060\132\027\015\063\067\061\061\061\071\062\060\064
+\063\060\060\132\060\143\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\034\060\032\006\003\125\004\012\023\023\101\155
+\145\162\151\143\141\040\117\156\154\151\156\145\040\111\156\143
+\056\061\066\060\064\006\003\125\004\003\023\055\101\155\145\162
+\151\143\141\040\117\156\154\151\156\145\040\122\157\157\164\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\040\061\060\202\001\042\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017
+\000\060\202\001\012\002\202\001\001\000\250\057\350\244\151\006
+\003\107\303\351\052\230\377\031\242\160\232\306\120\262\176\245
+\337\150\115\033\174\017\266\227\150\175\055\246\213\227\351\144
+\206\311\243\357\240\206\277\140\145\234\113\124\210\302\110\305
+\112\071\277\024\343\131\125\345\031\264\164\310\264\005\071\134
+\026\245\342\225\005\340\022\256\131\213\242\063\150\130\034\246
+\324\025\267\330\237\327\334\161\253\176\232\277\233\216\063\017
+\042\375\037\056\347\007\066\357\142\071\305\335\313\272\045\024
+\043\336\014\306\075\074\316\202\010\346\146\076\332\121\073\026
+\072\243\005\177\240\334\207\325\234\374\162\251\240\175\170\344
+\267\061\125\036\145\273\324\141\260\041\140\355\020\062\162\305
+\222\045\036\370\220\112\030\170\107\337\176\060\067\076\120\033
+\333\034\323\153\232\206\123\007\260\357\254\006\170\370\204\231
+\376\041\215\114\200\266\014\202\366\146\160\171\032\323\117\243
+\317\361\317\106\260\113\017\076\335\210\142\270\214\251\011\050
+\073\172\307\227\341\036\345\364\237\300\300\256\044\240\310\241
+\331\017\326\173\046\202\151\062\075\247\002\003\001\000\001\243
+\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\000
+\255\331\243\366\171\366\156\164\251\177\063\075\201\027\327\114
+\317\063\336\060\037\006\003\125\035\043\004\030\060\026\200\024
+\000\255\331\243\366\171\366\156\164\251\177\063\075\201\027\327
+\114\317\063\336\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\202\001\001\000\174\212\321\037\030\067\202\340
+\270\260\243\355\126\225\310\142\141\234\005\242\315\302\142\046
+\141\315\020\026\327\314\264\145\064\320\021\212\255\250\251\005
+\146\357\164\363\155\137\235\231\257\366\213\373\353\122\262\005
+\230\242\157\052\305\124\275\045\275\137\256\310\206\352\106\054
+\301\263\275\301\351\111\160\030\026\227\010\023\214\040\340\033
+\056\072\107\313\036\344\000\060\225\133\364\105\243\300\032\260
+\001\116\253\275\300\043\156\143\077\200\112\305\007\355\334\342
+\157\307\301\142\361\343\162\326\004\310\164\147\013\372\210\253
+\241\001\310\157\360\024\257\322\231\315\121\223\176\355\056\070
+\307\275\316\106\120\075\162\343\171\045\235\233\210\053\020\040
+\335\245\270\062\237\215\340\051\337\041\164\206\202\333\057\202
+\060\306\307\065\206\263\371\226\137\106\333\014\105\375\363\120
+\303\157\306\303\110\255\106\246\341\047\107\012\035\016\233\266
+\302\167\177\143\362\340\175\032\276\374\340\337\327\307\247\154
+\260\371\256\272\074\375\164\264\021\350\130\015\200\274\323\250
+\200\072\231\355\165\314\106\173
+END
+
+# Trust for Certificate "America Online Root Certification Authority 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "America Online Root Certification Authority 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\071\041\301\025\301\135\016\312\134\313\133\304\360\175\041\330
+\005\013\126\152
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\024\361\010\255\235\372\144\342\211\347\034\317\250\255\175\136
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "America Online Root Certification Authority 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "America Online Root Certification Authority 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\244\060\202\003\214\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061\034
+\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143\141
+\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060\064
+\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040\117
+\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\040\062\060\036\027\015\060\062\060\065\062\070\060\066
+\060\060\060\060\132\027\015\063\067\060\071\062\071\061\064\060
+\070\060\060\132\060\143\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\034\060\032\006\003\125\004\012\023\023\101\155
+\145\162\151\143\141\040\117\156\154\151\156\145\040\111\156\143
+\056\061\066\060\064\006\003\125\004\003\023\055\101\155\145\162
+\151\143\141\040\117\156\154\151\156\145\040\122\157\157\164\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\040\062\060\202\002\042\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017
+\000\060\202\002\012\002\202\002\001\000\314\101\105\035\351\075
+\115\020\366\214\261\101\311\340\136\313\015\267\277\107\163\323
+\360\125\115\335\306\014\372\261\146\005\152\315\170\264\334\002
+\333\116\201\363\327\247\174\161\274\165\143\240\135\343\007\014
+\110\354\045\304\003\040\364\377\016\073\022\377\233\215\341\306
+\325\033\264\155\042\343\261\333\177\041\144\257\206\274\127\042
+\052\326\107\201\127\104\202\126\123\275\206\024\001\013\374\177
+\164\244\132\256\361\272\021\265\233\130\132\200\264\067\170\011
+\063\174\062\107\003\134\304\245\203\110\364\127\126\156\201\066
+\047\030\117\354\233\050\302\324\264\327\174\014\076\014\053\337
+\312\004\327\306\216\352\130\116\250\244\245\030\034\154\105\230
+\243\101\321\055\322\307\155\215\031\361\255\171\267\201\077\275
+\006\202\047\055\020\130\005\265\170\005\271\057\333\014\153\220
+\220\176\024\131\070\273\224\044\023\345\321\235\024\337\323\202
+\115\106\360\200\071\122\062\017\343\204\262\172\103\362\136\336
+\137\077\035\335\343\262\033\240\241\052\043\003\156\056\001\025
+\207\134\246\165\165\307\227\141\276\336\206\334\324\110\333\275
+\052\277\112\125\332\350\175\120\373\264\200\027\270\224\277\001
+\075\352\332\272\174\340\130\147\027\271\130\340\210\206\106\147
+\154\235\020\107\130\062\320\065\174\171\052\220\242\132\020\021
+\043\065\255\057\314\344\112\133\247\310\047\362\203\336\136\273
+\136\167\347\350\245\156\143\302\015\135\141\320\214\322\154\132
+\041\016\312\050\243\316\052\351\225\307\110\317\226\157\035\222
+\045\310\306\306\301\301\014\005\254\046\304\322\165\322\341\052
+\147\300\075\133\245\232\353\317\173\032\250\235\024\105\345\017
+\240\232\145\336\057\050\275\316\157\224\146\203\110\051\330\352
+\145\214\257\223\331\144\237\125\127\046\277\157\313\067\061\231
+\243\140\273\034\255\211\064\062\142\270\103\041\006\162\014\241
+\134\155\106\305\372\051\317\060\336\211\334\161\133\335\266\067
+\076\337\120\365\270\007\045\046\345\274\265\376\074\002\263\267
+\370\276\103\301\207\021\224\236\043\154\027\212\270\212\047\014
+\124\107\360\251\263\300\200\214\240\047\353\035\031\343\007\216
+\167\160\312\053\364\175\166\340\170\147\002\003\001\000\001\243
+\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\115
+\105\301\150\070\273\163\251\151\241\040\347\355\365\042\241\043
+\024\327\236\060\037\006\003\125\035\043\004\030\060\026\200\024
+\115\105\301\150\070\273\163\251\151\241\040\347\355\365\042\241
+\043\024\327\236\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\202\002\001\000\147\153\006\271\137\105\073\052
+\113\063\263\346\033\153\131\116\042\314\271\267\244\045\311\247
+\304\360\124\226\013\144\363\261\130\117\136\121\374\262\227\173
+\047\145\302\345\312\347\015\014\045\173\142\343\372\237\264\207
+\267\105\106\257\203\245\227\110\214\245\275\361\026\053\233\166
+\054\172\065\140\154\021\200\227\314\251\222\122\346\053\346\151
+\355\251\370\066\055\054\167\277\141\110\321\143\013\271\133\122
+\355\030\260\103\102\042\246\261\167\256\336\151\305\315\307\034
+\241\261\245\034\020\373\030\276\032\160\335\301\222\113\276\051
+\132\235\077\065\276\345\175\121\370\125\340\045\165\043\207\036
+\134\334\272\235\260\254\263\151\333\027\203\311\367\336\014\274
+\010\334\221\236\250\320\327\025\067\163\245\065\270\374\176\305
+\104\100\006\303\353\370\042\200\134\107\316\002\343\021\237\104
+\377\375\232\062\314\175\144\121\016\353\127\046\166\072\343\036
+\042\074\302\246\066\335\031\357\247\374\022\363\046\300\131\061
+\205\114\234\330\317\337\244\314\314\051\223\377\224\155\166\134
+\023\010\227\362\355\245\013\115\335\350\311\150\016\146\323\000
+\016\063\022\133\274\225\345\062\220\250\263\306\154\203\255\167
+\356\213\176\176\261\251\253\323\341\361\266\300\261\352\210\300
+\347\323\220\351\050\222\224\173\150\173\227\052\012\147\055\205
+\002\070\020\344\003\141\324\332\045\066\307\010\130\055\241\247
+\121\257\060\012\111\365\246\151\207\007\055\104\106\166\216\052
+\345\232\073\327\030\242\374\234\070\020\314\306\073\322\265\027
+\072\157\375\256\045\275\365\162\131\144\261\164\052\070\137\030
+\114\337\317\161\004\132\066\324\277\057\231\234\350\331\272\261
+\225\346\002\113\041\241\133\325\301\117\217\256\151\155\123\333
+\001\223\265\134\036\030\335\144\132\312\030\050\076\143\004\021
+\375\034\215\000\017\270\067\337\147\212\235\146\251\002\152\221
+\377\023\312\057\135\203\274\207\223\154\334\044\121\026\004\045
+\146\372\263\331\302\272\051\276\232\110\070\202\231\364\277\073
+\112\061\031\371\277\216\041\063\024\312\117\124\137\373\316\373
+\217\161\177\375\136\031\240\017\113\221\270\304\124\274\006\260
+\105\217\046\221\242\216\376\251
+END
+
+# Trust for Certificate "America Online Root Certification Authority 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "America Online Root Certification Authority 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\205\265\377\147\233\014\171\226\037\310\156\104\042\000\106\023
+\333\027\222\204
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\326\355\074\312\342\146\017\257\020\103\015\167\233\004\011\277
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\101\155\145\162\151\143
+\141\040\117\156\154\151\156\145\040\111\156\143\056\061\066\060
+\064\006\003\125\004\003\023\055\101\155\145\162\151\143\141\040
+\117\156\154\151\156\145\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Visa eCommerce Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Visa eCommerce Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\153\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\034\060\032\006\003\125\004\003\023\023\126\151\163\141\040\145
+\103\157\155\155\145\162\143\145\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\153\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\034\060\032\006\003\125\004\003\023\023\126\151\163\141\040\145
+\103\157\155\155\145\162\143\145\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\023\206\065\115\035\077\006\362\301\371\145\005\325\220
+\034\142
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\242\060\202\002\212\240\003\002\001\002\002\020\023
+\206\065\115\035\077\006\362\301\371\145\005\325\220\034\142\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\153
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\015\060
+\013\006\003\125\004\012\023\004\126\111\123\101\061\057\060\055
+\006\003\125\004\013\023\046\126\151\163\141\040\111\156\164\145
+\162\156\141\164\151\157\156\141\154\040\123\145\162\166\151\143
+\145\040\101\163\163\157\143\151\141\164\151\157\156\061\034\060
+\032\006\003\125\004\003\023\023\126\151\163\141\040\145\103\157
+\155\155\145\162\143\145\040\122\157\157\164\060\036\027\015\060
+\062\060\066\062\066\060\062\061\070\063\066\132\027\015\062\062
+\060\066\062\064\060\060\061\066\061\062\132\060\153\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\015\060\013\006\003
+\125\004\012\023\004\126\111\123\101\061\057\060\055\006\003\125
+\004\013\023\046\126\151\163\141\040\111\156\164\145\162\156\141
+\164\151\157\156\141\154\040\123\145\162\166\151\143\145\040\101
+\163\163\157\143\151\141\164\151\157\156\061\034\060\032\006\003
+\125\004\003\023\023\126\151\163\141\040\145\103\157\155\155\145
+\162\143\145\040\122\157\157\164\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\257\127\336\126\036\156\241
+\332\140\261\224\047\313\027\333\007\077\200\205\117\310\234\266
+\320\364\157\117\317\231\330\341\333\302\110\134\072\254\071\063
+\307\037\152\213\046\075\053\065\365\110\261\221\301\002\116\004
+\226\221\173\260\063\360\261\024\116\021\157\265\100\257\033\105
+\245\112\357\176\266\254\362\240\037\130\077\022\106\140\074\215
+\241\340\175\317\127\076\063\036\373\107\361\252\025\227\007\125
+\146\245\265\055\056\330\200\131\262\247\015\267\106\354\041\143
+\377\065\253\245\002\317\052\364\114\376\173\365\224\135\204\115
+\250\362\140\217\333\016\045\074\237\163\161\317\224\337\112\352
+\333\337\162\070\214\363\226\275\361\027\274\322\272\073\105\132
+\306\247\366\306\027\213\001\235\374\031\250\052\203\026\270\072
+\110\376\116\076\240\253\006\031\351\123\363\200\023\007\355\055
+\277\077\012\074\125\040\071\054\054\000\151\164\225\112\274\040
+\262\251\171\345\030\211\221\250\334\034\115\357\273\176\067\013
+\135\376\071\245\210\122\214\000\154\354\030\174\101\275\366\213
+\165\167\272\140\235\204\347\376\055\002\003\001\000\001\243\102
+\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003
+\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003
+\002\001\006\060\035\006\003\125\035\016\004\026\004\024\025\070
+\203\017\077\054\077\160\063\036\315\106\376\007\214\040\340\327
+\303\267\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\001\001\000\137\361\101\175\174\134\010\271\053\340
+\325\222\107\372\147\134\245\023\303\003\041\233\053\114\211\106
+\317\131\115\311\376\245\100\266\143\315\335\161\050\225\147\021
+\314\044\254\323\104\154\161\256\001\040\153\003\242\217\030\267
+\051\072\175\345\026\140\123\170\074\300\257\025\203\367\217\122
+\063\044\275\144\223\227\356\213\367\333\030\250\155\161\263\367
+\054\027\320\164\045\151\367\376\153\074\224\276\115\113\101\214
+\116\342\163\320\343\220\042\163\103\315\363\357\352\163\316\105
+\212\260\246\111\377\114\175\235\161\210\304\166\035\220\133\035
+\356\375\314\367\356\375\140\245\261\172\026\161\321\026\320\174
+\022\074\154\151\227\333\256\137\071\232\160\057\005\074\031\106
+\004\231\040\066\320\140\156\141\006\273\026\102\214\160\367\060
+\373\340\333\146\243\000\001\275\346\054\332\221\137\240\106\213
+\115\152\234\075\075\335\005\106\376\166\277\240\012\074\344\000
+\346\047\267\377\204\055\336\272\042\047\226\020\161\353\042\355
+\337\337\063\234\317\343\255\256\216\324\216\346\117\121\257\026
+\222\340\134\366\007\017
+END
+
+# Trust for Certificate "Visa eCommerce Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Visa eCommerce Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\160\027\233\206\214\000\244\372\140\221\122\042\077\237\076\062
+\275\340\005\142
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\374\021\270\330\010\223\060\000\155\043\371\176\353\122\036\002
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\153\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\015\060\013\006\003\125\004\012\023\004\126\111\123\101\061\057
+\060\055\006\003\125\004\013\023\046\126\151\163\141\040\111\156
+\164\145\162\156\141\164\151\157\156\141\154\040\123\145\162\166
+\151\143\145\040\101\163\163\157\143\151\141\164\151\157\156\061
+\034\060\032\006\003\125\004\003\023\023\126\151\163\141\040\145
+\103\157\155\155\145\162\143\145\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\023\206\065\115\035\077\006\362\301\371\145\005\325\220
+\034\142
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TC TrustCenter, Germany, Class 2 CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter, Germany, Class 2 CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\062\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\062\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\352
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\134\060\202\002\305\240\003\002\001\002\002\002\003
+\352\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\062\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145\060
+\036\027\015\071\070\060\063\060\071\061\061\065\071\065\071\132
+\027\015\061\061\060\061\060\061\061\061\065\071\065\071\132\060
+\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165\162
+\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155\142
+\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157\162
+\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141\164
+\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110\061
+\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040\062
+\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015\001
+\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145\100
+\164\162\165\163\164\143\145\156\164\145\162\056\144\145\060\201
+\237\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\201\215\000\060\201\211\002\201\201\000\332\070\350\355\062
+\000\051\161\203\001\015\277\214\001\334\332\306\255\071\244\251
+\212\057\325\213\134\150\137\120\306\142\365\146\275\312\221\042
+\354\252\035\121\327\075\263\121\262\203\116\135\313\111\260\360
+\114\125\345\153\055\307\205\013\060\034\222\116\202\324\312\002
+\355\367\157\276\334\340\343\024\270\005\123\362\232\364\126\213
+\132\236\205\223\321\264\202\126\256\115\273\250\113\127\026\274
+\376\370\130\236\370\051\215\260\173\315\170\311\117\254\213\147
+\014\361\234\373\374\127\233\127\134\117\015\002\003\001\000\001
+\243\153\060\151\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\206\060\063\006\011\140\206\110\001\206\370\102
+\001\010\004\046\026\044\150\164\164\160\072\057\057\167\167\167
+\056\164\162\165\163\164\143\145\156\164\145\162\056\144\145\057
+\147\165\151\144\145\154\151\156\145\163\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\015\006
+\011\052\206\110\206\367\015\001\001\004\005\000\003\201\201\000
+\204\122\373\050\337\377\037\165\001\274\001\276\004\126\227\152
+\164\102\044\061\203\371\106\261\006\212\211\317\226\054\063\277
+\214\265\137\172\162\241\205\006\316\206\370\005\216\350\371\045
+\312\332\203\214\006\254\353\066\155\205\221\064\004\066\364\102
+\360\370\171\056\012\110\134\253\314\121\117\170\166\240\331\254
+\031\275\052\321\151\004\050\221\312\066\020\047\200\127\133\322
+\134\365\302\133\253\144\201\143\164\121\364\227\277\315\022\050
+\367\115\146\177\247\360\034\001\046\170\262\146\107\160\121\144
+END
+
+# Trust for Certificate "TC TrustCenter, Germany, Class 2 CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter, Germany, Class 2 CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\203\216\060\367\177\335\024\252\070\136\321\105\000\234\016\042
+\066\111\117\252
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\270\026\063\114\114\114\362\330\323\115\006\264\246\133\100\003
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\062\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\352
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TC TrustCenter, Germany, Class 3 CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter, Germany, Class 3 CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\063\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\063\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\353
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\134\060\202\002\305\240\003\002\001\002\002\002\003
+\353\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\063\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145\060
+\036\027\015\071\070\060\063\060\071\061\061\065\071\065\071\132
+\027\015\061\061\060\061\060\061\061\061\065\071\065\071\132\060
+\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165\162
+\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155\142
+\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157\162
+\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141\164
+\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110\061
+\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040\063
+\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015\001
+\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145\100
+\164\162\165\163\164\143\145\156\164\145\162\056\144\145\060\201
+\237\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\201\215\000\060\201\211\002\201\201\000\266\264\301\065\005
+\056\015\215\354\240\100\152\034\016\047\246\120\222\153\120\033
+\007\336\056\347\166\314\340\332\374\204\250\136\214\143\152\053
+\115\331\116\002\166\021\301\013\362\215\171\312\000\266\361\260
+\016\327\373\244\027\075\257\253\151\172\226\047\277\257\063\241
+\232\052\131\252\304\265\067\010\362\022\245\061\266\103\365\062
+\226\161\050\050\253\215\050\206\337\273\356\343\014\175\060\326
+\303\122\253\217\135\047\234\153\300\243\347\005\153\127\111\104
+\263\156\352\144\317\322\216\172\120\167\167\002\003\001\000\001
+\243\153\060\151\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\206\060\063\006\011\140\206\110\001\206\370\102
+\001\010\004\046\026\044\150\164\164\160\072\057\057\167\167\167
+\056\164\162\165\163\164\143\145\156\164\145\162\056\144\145\057
+\147\165\151\144\145\154\151\156\145\163\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\015\006
+\011\052\206\110\206\367\015\001\001\004\005\000\003\201\201\000
+\026\075\306\315\301\273\205\161\205\106\237\076\040\217\121\050
+\231\354\055\105\041\143\043\133\004\273\114\220\270\210\222\004
+\115\275\175\001\243\077\366\354\316\361\336\376\175\345\341\076
+\273\306\253\136\013\335\075\226\304\313\251\324\371\046\346\006
+\116\236\014\245\172\272\156\303\174\202\031\321\307\261\261\303
+\333\015\216\233\100\174\067\013\361\135\350\375\037\220\210\245
+\016\116\067\144\041\250\116\215\264\237\361\336\110\255\325\126
+\030\122\051\213\107\064\022\011\324\273\222\065\357\017\333\064
+END
+
+# Trust for Certificate "TC TrustCenter, Germany, Class 3 CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter, Germany, Class 3 CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\237\307\226\350\370\122\117\206\072\341\111\155\070\022\102\020
+\137\033\170\365
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\137\224\112\163\042\270\367\321\061\354\131\071\367\216\376\156
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\274\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\020\060\016\006\003\125\004\010\023\007\110\141\155\142\165
+\162\147\061\020\060\016\006\003\125\004\007\023\007\110\141\155
+\142\165\162\147\061\072\060\070\006\003\125\004\012\023\061\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\146\157
+\162\040\123\145\143\165\162\151\164\171\040\151\156\040\104\141
+\164\141\040\116\145\164\167\157\162\153\163\040\107\155\142\110
+\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124\162
+\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163\040
+\063\040\103\101\061\051\060\047\006\011\052\206\110\206\367\015
+\001\011\001\026\032\143\145\162\164\151\146\151\143\141\164\145
+\100\164\162\165\163\164\143\145\156\164\145\162\056\144\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\003\353
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Certum Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164
+\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020
+\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164
+\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020
+\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\003\001\000\040
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\014\060\202\001\364\240\003\002\001\002\002\003\001
+\000\040\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114
+\061\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145
+\164\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060
+\020\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103
+\101\060\036\027\015\060\062\060\066\061\061\061\060\064\066\063
+\071\132\027\015\062\067\060\066\061\061\061\060\064\066\063\071
+\132\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114
+\061\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145
+\164\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060
+\020\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103
+\101\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001
+\001\000\316\261\301\056\323\117\174\315\045\316\030\076\117\304
+\214\157\200\152\163\310\133\121\370\233\322\334\273\000\134\261
+\240\374\165\003\356\201\360\210\356\043\122\351\346\025\063\215
+\254\055\011\305\166\371\053\071\200\211\344\227\113\220\245\250
+\170\370\163\103\173\244\141\260\330\130\314\341\154\146\176\234
+\363\011\136\125\143\204\325\250\357\363\261\056\060\150\263\304
+\074\330\254\156\215\231\132\220\116\064\334\066\232\217\201\210
+\120\267\155\226\102\011\363\327\225\203\015\101\113\260\152\153
+\370\374\017\176\142\237\147\304\355\046\137\020\046\017\010\117
+\360\244\127\050\316\217\270\355\105\366\156\356\045\135\252\156
+\071\276\344\223\057\331\107\240\162\353\372\246\133\257\312\123
+\077\342\016\306\226\126\021\156\367\351\146\251\046\330\177\225
+\123\355\012\205\210\272\117\051\245\102\214\136\266\374\205\040
+\000\252\150\013\241\032\205\001\234\304\106\143\202\210\266\042
+\261\356\376\252\106\131\176\317\065\054\325\266\332\135\367\110
+\063\024\124\266\353\331\157\316\315\210\326\253\033\332\226\073
+\035\131\002\003\001\000\001\243\023\060\021\060\017\006\003\125
+\035\023\001\001\377\004\005\060\003\001\001\377\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\270\215\316\357\347\024\272\317\356\260\104\222\154\264\071\076
+\242\204\156\255\270\041\167\322\324\167\202\207\346\040\101\201
+\356\342\370\021\267\143\321\027\067\276\031\166\044\034\004\032
+\114\353\075\252\147\157\055\324\315\376\145\061\160\305\033\246
+\002\012\272\140\173\155\130\302\232\111\376\143\062\013\153\343
+\072\300\254\253\073\260\350\323\011\121\214\020\203\306\064\340
+\305\053\340\032\266\140\024\047\154\062\167\214\274\262\162\230
+\317\315\314\077\271\310\044\102\024\326\127\374\346\046\103\251
+\035\345\200\220\316\003\124\050\076\367\077\323\370\115\355\152
+\012\072\223\023\233\073\024\043\023\143\234\077\321\207\047\171
+\345\114\121\343\001\255\205\135\032\073\261\325\163\020\244\323
+\362\274\156\144\365\132\126\220\250\307\016\114\164\017\056\161
+\073\367\310\107\364\151\157\025\362\021\136\203\036\234\174\122
+\256\375\002\332\022\250\131\147\030\333\274\160\335\233\261\151
+\355\200\316\211\100\110\152\016\065\312\051\146\025\041\224\054
+\350\140\052\233\205\112\100\363\153\212\044\354\006\026\054\163
+END
+
+# Trust for Certificate "Certum Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certum Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\142\122\334\100\367\021\103\242\057\336\236\367\064\216\006\102
+\121\261\201\030
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\054\217\237\146\035\030\220\261\107\046\235\216\206\202\214\251
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061
+\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164
+\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020
+\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\003\001\000\040
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Comodo AAA Services root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo AAA Services root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003
+\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151
+\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003
+\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151
+\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\062\060\202\003\032\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033
+\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145\162
+\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006
+\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032\060
+\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040\103
+\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003\125
+\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151\143
+\141\164\145\040\123\145\162\166\151\143\145\163\060\036\027\015
+\060\064\060\061\060\061\060\060\060\060\060\060\132\027\015\062
+\070\061\062\063\061\062\063\065\071\065\071\132\060\173\061\013
+\060\011\006\003\125\004\006\023\002\107\102\061\033\060\031\006
+\003\125\004\010\014\022\107\162\145\141\164\145\162\040\115\141
+\156\143\150\145\163\164\145\162\061\020\060\016\006\003\125\004
+\007\014\007\123\141\154\146\157\162\144\061\032\060\030\006\003
+\125\004\012\014\021\103\157\155\157\144\157\040\103\101\040\114
+\151\155\151\164\145\144\061\041\060\037\006\003\125\004\003\014
+\030\101\101\101\040\103\145\162\164\151\146\151\143\141\164\145
+\040\123\145\162\166\151\143\145\163\060\202\001\042\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017
+\000\060\202\001\012\002\202\001\001\000\276\100\235\364\156\341
+\352\166\207\034\115\105\104\216\276\106\310\203\006\235\301\052
+\376\030\037\216\344\002\372\363\253\135\120\212\026\061\013\232
+\006\320\305\160\042\315\111\055\124\143\314\266\156\150\106\013
+\123\352\313\114\044\300\274\162\116\352\361\025\256\364\124\232
+\022\012\303\172\262\063\140\342\332\211\125\363\042\130\363\336
+\334\317\357\203\206\242\214\224\117\237\150\362\230\220\106\204
+\047\307\166\277\343\314\065\054\213\136\007\144\145\202\300\110
+\260\250\221\371\141\237\166\040\120\250\221\307\146\265\353\170
+\142\003\126\360\212\032\023\352\061\243\036\240\231\375\070\366
+\366\047\062\130\157\007\365\153\270\373\024\053\257\267\252\314
+\326\143\137\163\214\332\005\231\250\070\250\313\027\170\066\121
+\254\351\236\364\170\072\215\317\017\331\102\342\230\014\253\057
+\237\016\001\336\357\237\231\111\361\055\337\254\164\115\033\230
+\265\107\305\345\051\321\371\220\030\307\142\234\276\203\307\046
+\173\076\212\045\307\300\335\235\346\065\150\020\040\235\217\330
+\336\322\303\204\234\015\136\350\057\311\002\003\001\000\001\243
+\201\300\060\201\275\060\035\006\003\125\035\016\004\026\004\024
+\240\021\012\043\076\226\361\007\354\342\257\051\357\202\245\177
+\320\060\244\264\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\173\006\003\125\035\037\004\164\060\162
+\060\070\240\066\240\064\206\062\150\164\164\160\072\057\057\143
+\162\154\056\143\157\155\157\144\157\143\141\056\143\157\155\057
+\101\101\101\103\145\162\164\151\146\151\143\141\164\145\123\145
+\162\166\151\143\145\163\056\143\162\154\060\066\240\064\240\062
+\206\060\150\164\164\160\072\057\057\143\162\154\056\143\157\155
+\157\144\157\056\156\145\164\057\101\101\101\103\145\162\164\151
+\146\151\143\141\164\145\123\145\162\166\151\143\145\163\056\143
+\162\154\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\001\001\000\010\126\374\002\360\233\350\377\244\372
+\326\173\306\104\200\316\117\304\305\366\000\130\314\246\266\274
+\024\111\150\004\166\350\346\356\135\354\002\017\140\326\215\120
+\030\117\046\116\001\343\346\260\245\356\277\274\164\124\101\277
+\375\374\022\270\307\117\132\364\211\140\005\177\140\267\005\112
+\363\366\361\302\277\304\271\164\206\266\055\175\153\314\322\363
+\106\335\057\306\340\152\303\303\064\003\054\175\226\335\132\302
+\016\247\012\231\301\005\213\253\014\057\363\134\072\317\154\067
+\125\011\207\336\123\100\154\130\357\374\266\253\145\156\004\366
+\033\334\074\340\132\025\306\236\331\361\131\110\060\041\145\003
+\154\354\351\041\163\354\233\003\241\340\067\255\240\025\030\217
+\372\272\002\316\247\054\251\020\023\054\324\345\010\046\253\042
+\227\140\370\220\136\164\324\242\232\123\275\362\251\150\340\242
+\156\302\327\154\261\243\017\236\277\353\150\347\126\362\256\362
+\343\053\070\072\011\201\265\153\205\327\276\055\355\077\032\267
+\262\143\342\365\142\054\202\324\152\000\101\120\361\071\203\237
+\225\351\066\226\230\156
+END
+
+# Trust for Certificate "Comodo AAA Services root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo AAA Services root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\321\353\043\244\155\027\326\217\331\045\144\302\361\361\140\027
+\144\330\343\111
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\111\171\004\260\353\207\031\254\107\260\274\021\121\233\164\320
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003
+\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151
+\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Comodo Secure Services root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo Secure Services root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\176\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\044\060\042\006\003
+\125\004\003\014\033\123\145\143\165\162\145\040\103\145\162\164
+\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\176\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\044\060\042\006\003
+\125\004\003\014\033\123\145\143\165\162\145\040\103\145\162\164
+\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\077\060\202\003\047\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\176\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033
+\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145\162
+\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006
+\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032\060
+\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040\103
+\101\040\114\151\155\151\164\145\144\061\044\060\042\006\003\125
+\004\003\014\033\123\145\143\165\162\145\040\103\145\162\164\151
+\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163\060
+\036\027\015\060\064\060\061\060\061\060\060\060\060\060\060\132
+\027\015\062\070\061\062\063\061\062\063\065\071\065\071\132\060
+\176\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033
+\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145\162
+\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006
+\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032\060
+\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040\103
+\101\040\114\151\155\151\164\145\144\061\044\060\042\006\003\125
+\004\003\014\033\123\145\143\165\162\145\040\103\145\162\164\151
+\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163\060
+\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001
+\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000
+\300\161\063\202\212\320\160\353\163\207\202\100\325\035\344\313
+\311\016\102\220\371\336\064\271\241\272\021\364\045\205\363\314
+\162\155\362\173\227\153\263\007\361\167\044\221\137\045\217\366
+\164\075\344\200\302\370\074\015\363\277\100\352\367\310\122\321
+\162\157\357\310\253\101\270\156\056\027\052\225\151\014\315\322
+\036\224\173\055\224\035\252\165\327\263\230\313\254\274\144\123
+\100\274\217\254\254\066\313\134\255\273\335\340\224\027\354\321
+\134\320\277\357\245\225\311\220\305\260\254\373\033\103\337\172
+\010\135\267\270\362\100\033\053\047\236\120\316\136\145\202\210
+\214\136\323\116\014\172\352\010\221\266\066\252\053\102\373\352
+\302\243\071\345\333\046\070\255\213\012\356\031\143\307\034\044
+\337\003\170\332\346\352\301\107\032\013\013\106\011\335\002\374
+\336\313\207\137\327\060\143\150\241\256\334\062\241\272\276\376
+\104\253\150\266\245\027\025\375\275\325\247\247\232\344\104\063
+\351\210\216\374\355\121\353\223\161\116\255\001\347\104\216\253
+\055\313\250\376\001\111\110\360\300\335\307\150\330\222\376\075
+\002\003\001\000\001\243\201\307\060\201\304\060\035\006\003\125
+\035\016\004\026\004\024\074\330\223\210\302\300\202\011\314\001
+\231\006\223\040\351\236\160\011\143\117\060\016\006\003\125\035
+\017\001\001\377\004\004\003\002\001\006\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\201\201\006\003
+\125\035\037\004\172\060\170\060\073\240\071\240\067\206\065\150
+\164\164\160\072\057\057\143\162\154\056\143\157\155\157\144\157
+\143\141\056\143\157\155\057\123\145\143\165\162\145\103\145\162
+\164\151\146\151\143\141\164\145\123\145\162\166\151\143\145\163
+\056\143\162\154\060\071\240\067\240\065\206\063\150\164\164\160
+\072\057\057\143\162\154\056\143\157\155\157\144\157\056\156\145
+\164\057\123\145\143\165\162\145\103\145\162\164\151\146\151\143
+\141\164\145\123\145\162\166\151\143\145\163\056\143\162\154\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202
+\001\001\000\207\001\155\043\035\176\133\027\175\301\141\062\317
+\217\347\363\212\224\131\146\340\236\050\250\136\323\267\364\064
+\346\252\071\262\227\026\305\202\157\062\244\351\214\347\257\375
+\357\302\350\271\113\252\243\364\346\332\215\145\041\373\272\200
+\353\046\050\205\032\376\071\214\336\133\004\004\264\124\371\243
+\147\236\101\372\011\122\314\005\110\250\311\077\041\004\036\316
+\110\153\374\205\350\302\173\257\177\267\314\370\137\072\375\065
+\306\015\357\227\334\114\253\021\341\153\313\061\321\154\373\110
+\200\253\334\234\067\270\041\024\113\015\161\075\354\203\063\156
+\321\156\062\026\354\230\307\026\213\131\246\064\253\005\127\055
+\223\367\252\023\313\322\023\342\267\056\073\315\153\120\027\011
+\150\076\265\046\127\356\266\340\266\335\271\051\200\171\175\217
+\243\360\244\050\244\025\304\205\364\047\324\153\277\345\134\344
+\145\002\166\124\264\343\067\146\044\323\031\141\310\122\020\345
+\213\067\232\271\251\371\035\277\352\231\222\141\226\377\001\315
+\241\137\015\274\161\274\016\254\013\035\107\105\035\301\354\174
+\354\375\051
+END
+
+# Trust for Certificate "Comodo Secure Services root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo Secure Services root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\112\145\325\364\035\357\071\270\270\220\112\112\323\144\201\063
+\317\307\241\321
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\323\331\275\256\237\254\147\044\263\310\033\122\341\271\251\275
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\176\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\044\060\042\006\003
+\125\004\003\014\033\123\145\143\165\162\145\040\103\145\162\164
+\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Comodo Trusted Services root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo Trusted Services root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\003\014\034\124\162\165\163\164\145\144\040\103\145\162
+\164\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145
+\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\003\014\034\124\162\165\163\164\145\144\040\103\145\162
+\164\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145
+\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\103\060\202\003\053\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\177\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033
+\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145\162
+\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006
+\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032\060
+\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040\103
+\101\040\114\151\155\151\164\145\144\061\045\060\043\006\003\125
+\004\003\014\034\124\162\165\163\164\145\144\040\103\145\162\164
+\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145\163
+\060\036\027\015\060\064\060\061\060\061\060\060\060\060\060\060
+\132\027\015\062\070\061\062\063\061\062\063\065\071\065\071\132
+\060\177\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\003\014\034\124\162\165\163\164\145\144\040\103\145\162
+\164\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145
+\163\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001
+\001\000\337\161\157\066\130\123\132\362\066\124\127\200\304\164
+\010\040\355\030\177\052\035\346\065\232\036\045\254\234\345\226
+\176\162\122\240\025\102\333\131\335\144\172\032\320\270\173\335
+\071\025\274\125\110\304\355\072\000\352\061\021\272\362\161\164
+\032\147\270\317\063\314\250\061\257\243\343\327\177\277\063\055
+\114\152\074\354\213\303\222\322\123\167\044\164\234\007\156\160
+\374\275\013\133\166\272\137\362\377\327\067\113\112\140\170\367
+\360\372\312\160\264\352\131\252\243\316\110\057\251\303\262\013
+\176\027\162\026\014\246\007\014\033\070\317\311\142\267\077\240
+\223\245\207\101\362\267\160\100\167\330\276\024\174\343\250\300
+\172\216\351\143\152\321\017\232\306\322\364\213\072\024\004\126
+\324\355\270\314\156\365\373\342\054\130\275\177\117\153\053\367
+\140\044\130\044\316\046\357\064\221\072\325\343\201\320\262\360
+\004\002\327\133\267\076\222\254\153\022\212\371\344\005\260\073
+\221\111\134\262\353\123\352\370\237\107\206\356\277\225\300\300
+\006\237\322\133\136\021\033\364\307\004\065\051\322\125\134\344
+\355\353\002\003\001\000\001\243\201\311\060\201\306\060\035\006
+\003\125\035\016\004\026\004\024\305\173\130\275\355\332\045\151
+\322\367\131\026\250\263\062\300\173\047\133\364\060\016\006\003
+\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003
+\125\035\023\001\001\377\004\005\060\003\001\001\377\060\201\203
+\006\003\125\035\037\004\174\060\172\060\074\240\072\240\070\206
+\066\150\164\164\160\072\057\057\143\162\154\056\143\157\155\157
+\144\157\143\141\056\143\157\155\057\124\162\165\163\164\145\144
+\103\145\162\164\151\146\151\143\141\164\145\123\145\162\166\151
+\143\145\163\056\143\162\154\060\072\240\070\240\066\206\064\150
+\164\164\160\072\057\057\143\162\154\056\143\157\155\157\144\157
+\056\156\145\164\057\124\162\165\163\164\145\144\103\145\162\164
+\151\146\151\143\141\164\145\123\145\162\166\151\143\145\163\056
+\143\162\154\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\202\001\001\000\310\223\201\073\211\264\257\270\204
+\022\114\215\322\360\333\160\272\127\206\025\064\020\271\057\177
+\036\260\250\211\140\241\212\302\167\014\120\112\233\000\213\330
+\213\364\101\342\320\203\212\112\034\024\006\260\243\150\005\160
+\061\060\247\123\233\016\351\112\240\130\151\147\016\256\235\366
+\245\054\101\277\074\006\153\344\131\314\155\020\361\226\157\037
+\337\364\004\002\244\237\105\076\310\330\372\066\106\104\120\077
+\202\227\221\037\050\333\030\021\214\052\344\145\203\127\022\022
+\214\027\077\224\066\376\135\260\300\004\167\023\270\364\025\325
+\077\070\314\224\072\125\320\254\230\365\272\000\137\340\206\031
+\201\170\057\050\300\176\323\314\102\012\365\256\120\240\321\076
+\306\241\161\354\077\240\040\214\146\072\211\264\216\324\330\261
+\115\045\107\356\057\210\310\265\341\005\105\300\276\024\161\336
+\172\375\216\173\175\115\010\226\245\022\163\360\055\312\067\047
+\164\022\047\114\313\266\227\351\331\256\010\155\132\071\100\335
+\005\107\165\152\132\041\263\243\030\317\116\367\056\127\267\230
+\160\136\310\304\170\260\142
+END
+
+# Trust for Certificate "Comodo Trusted Services root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Comodo Trusted Services root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\341\237\343\016\213\204\140\236\200\233\027\015\162\250\305\272
+\156\024\011\275
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\221\033\077\156\315\236\253\356\007\376\037\161\322\263\141\047
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\107\102\061
+\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145
+\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016
+\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032
+\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040
+\103\101\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\003\014\034\124\162\165\163\164\145\144\040\103\145\162
+\164\151\146\151\143\141\164\145\040\123\145\162\166\151\143\145
+\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS Chained CAs root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Chained CAs root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\034\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\063\060\061\006\003\125\004\013\023
+\052\111\120\123\040\103\101\040\103\150\141\151\156\145\144\040
+\103\101\163\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\063\060\061\006
+\003\125\004\003\023\052\111\120\123\040\103\101\040\103\150\141
+\151\156\145\144\040\103\101\163\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\034\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\063\060\061\006\003\125\004\013\023
+\052\111\120\123\040\103\101\040\103\150\141\151\156\145\144\040
+\103\101\163\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\063\060\061\006
+\003\125\004\003\023\052\111\120\123\040\103\101\040\103\150\141
+\151\156\145\144\040\103\101\163\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\367\060\202\007\140\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\034\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\063\060\061\006\003\125\004\013\023\052
+\111\120\123\040\103\101\040\103\150\141\151\156\145\144\040\103
+\101\163\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\061\063\060\061\006\003
+\125\004\003\023\052\111\120\123\040\103\101\040\103\150\141\151
+\156\145\144\040\103\101\163\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\060
+\036\027\015\060\061\061\062\062\071\060\060\065\063\065\070\132
+\027\015\062\065\061\062\062\067\060\060\065\063\065\070\132\060
+\202\001\034\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\063\060\061\006\003\125\004\013\023\052
+\111\120\123\040\103\101\040\103\150\141\151\156\145\144\040\103
+\101\163\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\061\063\060\061\006\003
+\125\004\003\023\052\111\120\123\040\103\101\040\103\150\141\151
+\156\145\144\040\103\101\163\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\060
+\201\237\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\201\215\000\060\201\211\002\201\201\000\334\126\222\111
+\262\224\040\274\230\117\120\353\150\244\247\111\013\277\322\061
+\350\307\117\302\206\013\372\150\375\103\132\212\363\140\222\065
+\231\070\273\115\003\122\041\133\360\067\231\065\341\101\040\201
+\205\201\005\161\201\235\264\225\031\251\137\166\064\056\143\067
+\065\127\216\264\037\102\077\025\134\341\172\301\137\023\030\062
+\061\311\255\276\243\307\203\146\036\271\234\004\023\313\151\301
+\006\336\060\006\273\063\243\265\037\360\217\157\316\377\226\350
+\124\276\146\200\256\153\333\101\204\066\242\075\002\003\001\000
+\001\243\202\004\103\060\202\004\077\060\035\006\003\125\035\016
+\004\026\004\024\241\255\061\261\371\076\341\027\246\310\253\064
+\374\122\207\011\036\142\122\101\060\202\001\116\006\003\125\035
+\043\004\202\001\105\060\202\001\101\200\024\241\255\061\261\371
+\076\341\027\246\310\253\064\374\122\207\011\036\142\122\101\241
+\202\001\044\244\202\001\040\060\202\001\034\061\013\060\011\006
+\003\125\004\006\023\002\105\123\061\022\060\020\006\003\125\004
+\010\023\011\102\141\162\143\145\154\157\156\141\061\022\060\020
+\006\003\125\004\007\023\011\102\141\162\143\145\154\157\156\141
+\061\056\060\054\006\003\125\004\012\023\045\111\120\123\040\111
+\156\164\145\162\156\145\164\040\160\165\142\154\151\163\150\151
+\156\147\040\123\145\162\166\151\143\145\163\040\163\056\154\056
+\061\053\060\051\006\003\125\004\012\024\042\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\040\103\056\111\056\106
+\056\040\040\102\055\066\060\071\062\071\064\065\062\061\063\060
+\061\006\003\125\004\013\023\052\111\120\123\040\103\101\040\103
+\150\141\151\156\145\144\040\103\101\163\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\061\063\060\061\006\003\125\004\003\023\052\111\120\123
+\040\103\101\040\103\150\141\151\156\145\144\040\103\101\163\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110
+\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154
+\056\151\160\163\056\145\163\202\001\000\060\014\006\003\125\035
+\023\004\005\060\003\001\001\377\060\014\006\003\125\035\017\004
+\005\003\003\007\377\200\060\153\006\003\125\035\045\004\144\060
+\142\006\010\053\006\001\005\005\007\003\001\006\010\053\006\001
+\005\005\007\003\002\006\010\053\006\001\005\005\007\003\003\006
+\010\053\006\001\005\005\007\003\004\006\010\053\006\001\005\005
+\007\003\010\006\012\053\006\001\004\001\202\067\002\001\025\006
+\012\053\006\001\004\001\202\067\002\001\026\006\012\053\006\001
+\004\001\202\067\012\003\001\006\012\053\006\001\004\001\202\067
+\012\003\004\060\021\006\011\140\206\110\001\206\370\102\001\001
+\004\004\003\002\000\007\060\032\006\003\125\035\021\004\023\060
+\021\201\017\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\060\032\006\003\125\035\022\004\023\060\021\201\017\151
+\160\163\100\155\141\151\154\056\151\160\163\056\145\163\060\102
+\006\011\140\206\110\001\206\370\102\001\015\004\065\026\063\103
+\150\141\151\156\145\144\040\103\101\040\103\145\162\164\151\146
+\151\143\141\164\145\040\151\163\163\165\145\144\040\142\171\040
+\150\164\164\160\072\057\057\167\167\167\056\151\160\163\056\145
+\163\057\060\051\006\011\140\206\110\001\206\370\102\001\002\004
+\034\026\032\150\164\164\160\072\057\057\167\167\167\056\151\160
+\163\056\145\163\057\151\160\163\062\060\060\062\057\060\067\006
+\011\140\206\110\001\206\370\102\001\004\004\052\026\050\150\164
+\164\160\072\057\057\167\167\167\056\151\160\163\056\145\163\057
+\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062\103
+\101\103\056\143\162\154\060\074\006\011\140\206\110\001\206\370
+\102\001\003\004\057\026\055\150\164\164\160\072\057\057\167\167
+\167\056\151\160\163\056\145\163\057\151\160\163\062\060\060\062
+\057\162\145\166\157\143\141\164\151\157\156\103\101\103\056\150
+\164\155\154\077\060\071\006\011\140\206\110\001\206\370\102\001
+\007\004\054\026\052\150\164\164\160\072\057\057\167\167\167\056
+\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057\162
+\145\156\145\167\141\154\103\101\103\056\150\164\155\154\077\060
+\067\006\011\140\206\110\001\206\370\102\001\010\004\052\026\050
+\150\164\164\160\072\057\057\167\167\167\056\151\160\163\056\145
+\163\057\151\160\163\062\060\060\062\057\160\157\154\151\143\171
+\103\101\103\056\150\164\155\154\060\155\006\003\125\035\037\004
+\146\060\144\060\056\240\054\240\052\206\050\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\151\160\163\062\060\060\062\103\101\103\056
+\143\162\154\060\062\240\060\240\056\206\054\150\164\164\160\072
+\057\057\167\167\167\142\141\143\153\056\151\160\163\056\145\163
+\057\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062
+\103\101\103\056\143\162\154\060\057\006\010\053\006\001\005\005
+\007\001\001\004\043\060\041\060\037\006\010\053\006\001\005\005
+\007\060\001\206\023\150\164\164\160\072\057\057\157\143\163\160
+\056\151\160\163\056\145\163\057\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\104\162\060\235\126
+\130\242\101\033\050\267\225\341\246\032\225\137\247\170\100\053
+\357\333\226\112\374\114\161\143\331\163\225\275\002\342\242\006
+\307\276\227\052\223\200\064\206\003\372\334\330\075\036\007\315
+\036\163\103\044\140\365\035\141\334\334\226\240\274\373\035\343
+\347\022\000\047\063\002\300\300\053\123\075\330\153\003\201\243
+\333\326\223\225\040\357\323\226\176\046\220\211\234\046\233\315
+\157\146\253\355\003\042\104\070\314\131\275\237\333\366\007\242
+\001\177\046\304\143\365\045\102\136\142\275
+END
+
+# Trust for Certificate "IPS Chained CAs root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Chained CAs root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\310\302\137\026\236\370\120\164\325\276\350\315\242\324\074\256
+\347\137\322\127
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\215\162\121\333\240\072\317\040\167\337\362\145\006\136\337\357
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\034\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\063\060\061\006\003\125\004\013\023
+\052\111\120\123\040\103\101\040\103\150\141\151\156\145\144\040
+\103\101\163\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\063\060\061\006
+\003\125\004\003\023\052\111\120\123\040\103\101\040\103\150\141
+\151\156\145\144\040\103\101\163\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS CLASE1 root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASE1 root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\352\060\202\007\123\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023\045
+\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023\045
+\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206\367
+\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056\151
+\160\163\056\145\163\060\036\027\015\060\061\061\062\062\071\060
+\060\065\071\063\070\132\027\015\062\065\061\062\062\067\060\060
+\065\071\063\070\132\060\202\001\022\061\013\060\011\006\003\125
+\004\006\023\002\105\123\061\022\060\020\006\003\125\004\010\023
+\011\102\141\162\143\145\154\157\156\141\061\022\060\020\006\003
+\125\004\007\023\011\102\141\162\143\145\154\157\156\141\061\056
+\060\054\006\003\125\004\012\023\045\111\120\123\040\111\156\164
+\145\162\156\145\164\040\160\165\142\154\151\163\150\151\156\147
+\040\123\145\162\166\151\143\145\163\040\163\056\154\056\061\053
+\060\051\006\003\125\004\012\024\042\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163\040\103\056\111\056\106\056\040
+\040\102\055\066\060\071\062\071\064\065\062\061\056\060\054\006
+\003\125\004\013\023\045\111\120\123\040\103\101\040\103\114\101
+\123\105\061\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\056\060\054\006
+\003\125\004\003\023\045\111\120\123\040\103\101\040\103\114\101
+\123\105\061\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\036\060\034\006
+\011\052\206\110\206\367\015\001\011\001\026\017\151\160\163\100
+\155\141\151\154\056\151\160\163\056\145\163\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\340\121\047\247\013\335\257\321
+\271\103\133\202\067\105\126\162\357\232\266\302\022\357\054\022
+\314\166\371\006\131\257\135\041\324\322\132\270\240\324\363\152
+\375\312\151\215\146\110\367\164\346\356\066\275\350\226\221\165
+\246\161\050\312\347\042\022\062\151\260\076\036\153\364\120\122
+\142\142\375\143\073\175\176\354\356\070\352\142\364\154\250\161
+\215\341\351\213\311\077\306\265\315\224\102\157\335\202\105\074
+\350\337\011\350\357\012\125\251\126\107\141\114\111\144\163\020
+\050\077\312\277\011\377\306\057\002\003\001\000\001\243\202\004
+\112\060\202\004\106\060\035\006\003\125\035\016\004\026\004\024
+\353\263\031\171\363\301\245\034\254\334\272\037\146\242\262\233
+\151\320\170\010\060\202\001\104\006\003\125\035\043\004\202\001
+\073\060\202\001\067\200\024\353\263\031\171\363\301\245\034\254
+\334\272\037\146\242\262\233\151\320\170\010\241\202\001\032\244
+\202\001\026\060\202\001\022\061\013\060\011\006\003\125\004\006
+\023\002\105\123\061\022\060\020\006\003\125\004\010\023\011\102
+\141\162\143\145\154\157\156\141\061\022\060\020\006\003\125\004
+\007\023\011\102\141\162\143\145\154\157\156\141\061\056\060\054
+\006\003\125\004\012\023\045\111\120\123\040\111\156\164\145\162
+\156\145\164\040\160\165\142\154\151\163\150\151\156\147\040\123
+\145\162\166\151\143\145\163\040\163\056\154\056\061\053\060\051
+\006\003\125\004\012\024\042\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163\040\103\056\111\056\106\056\040\040\102
+\055\066\060\071\062\071\064\065\062\061\056\060\054\006\003\125
+\004\013\023\045\111\120\123\040\103\101\040\103\114\101\123\105
+\061\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\056\060\054\006\003\125
+\004\003\023\045\111\120\123\040\103\101\040\103\114\101\123\105
+\061\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052
+\206\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141
+\151\154\056\151\160\163\056\145\163\202\001\000\060\014\006\003
+\125\035\023\004\005\060\003\001\001\377\060\014\006\003\125\035
+\017\004\005\003\003\007\377\200\060\153\006\003\125\035\045\004
+\144\060\142\006\010\053\006\001\005\005\007\003\001\006\010\053
+\006\001\005\005\007\003\002\006\010\053\006\001\005\005\007\003
+\003\006\010\053\006\001\005\005\007\003\004\006\010\053\006\001
+\005\005\007\003\010\006\012\053\006\001\004\001\202\067\002\001
+\025\006\012\053\006\001\004\001\202\067\002\001\026\006\012\053
+\006\001\004\001\202\067\012\003\001\006\012\053\006\001\004\001
+\202\067\012\003\004\060\021\006\011\140\206\110\001\206\370\102
+\001\001\004\004\003\002\000\007\060\032\006\003\125\035\021\004
+\023\060\021\201\017\151\160\163\100\155\141\151\154\056\151\160
+\163\056\145\163\060\032\006\003\125\035\022\004\023\060\021\201
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+\060\101\006\011\140\206\110\001\206\370\102\001\015\004\064\026
+\062\103\114\101\123\105\061\040\103\101\040\103\145\162\164\151
+\146\151\143\141\164\145\040\151\163\163\165\145\144\040\142\171
+\040\150\164\164\160\072\057\057\167\167\167\056\151\160\163\056
+\145\163\057\060\051\006\011\140\206\110\001\206\370\102\001\002
+\004\034\026\032\150\164\164\160\072\057\057\167\167\167\056\151
+\160\163\056\145\163\057\151\160\163\062\060\060\062\057\060\072
+\006\011\140\206\110\001\206\370\102\001\004\004\055\026\053\150
+\164\164\160\072\057\057\167\167\167\056\151\160\163\056\145\163
+\057\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062
+\103\114\101\123\105\061\056\143\162\154\060\077\006\011\140\206
+\110\001\206\370\102\001\003\004\062\026\060\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\162\145\166\157\143\141\164\151\157\156\103
+\114\101\123\105\061\056\150\164\155\154\077\060\074\006\011\140
+\206\110\001\206\370\102\001\007\004\057\026\055\150\164\164\160
+\072\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160
+\163\062\060\060\062\057\162\145\156\145\167\141\154\103\114\101
+\123\105\061\056\150\164\155\154\077\060\072\006\011\140\206\110
+\001\206\370\102\001\010\004\055\026\053\150\164\164\160\072\057
+\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163\062
+\060\060\062\057\160\157\154\151\143\171\103\114\101\123\105\061
+\056\150\164\155\154\060\163\006\003\125\035\037\004\154\060\152
+\060\061\240\057\240\055\206\053\150\164\164\160\072\057\057\167
+\167\167\056\151\160\163\056\145\163\057\151\160\163\062\060\060
+\062\057\151\160\163\062\060\060\062\103\114\101\123\105\061\056
+\143\162\154\060\065\240\063\240\061\206\057\150\164\164\160\072
+\057\057\167\167\167\142\141\143\153\056\151\160\163\056\145\163
+\057\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062
+\103\114\101\123\105\061\056\143\162\154\060\057\006\010\053\006
+\001\005\005\007\001\001\004\043\060\041\060\037\006\010\053\006
+\001\005\005\007\060\001\206\023\150\164\164\160\072\057\057\157
+\143\163\160\056\151\160\163\056\145\163\057\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\201\201\000\053\320
+\353\375\332\310\312\131\152\332\323\314\062\056\311\124\033\212
+\142\176\025\055\351\331\061\323\056\364\047\043\377\133\253\305
+\112\266\162\100\256\123\164\364\274\005\264\306\331\310\311\167
+\373\267\371\064\177\170\000\370\326\244\344\122\077\054\112\143
+\127\201\165\132\216\350\214\373\002\300\224\306\051\272\263\334
+\034\350\262\257\322\056\142\133\032\251\216\016\314\305\127\105
+\121\024\351\116\034\210\245\221\364\243\367\216\121\310\251\276
+\206\063\076\346\057\110\156\257\124\220\116\255\261\045
+END
+
+# Trust for Certificate "IPS CLASE1 root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASE1 root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\103\236\122\137\132\152\107\303\054\353\304\134\143\355\071\061
+\174\345\364\337
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\204\220\035\225\060\111\126\374\101\201\360\105\327\166\304\153
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS CLASE3 root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASE3 root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\352\060\202\007\123\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023\045
+\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023\045
+\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206\367
+\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056\151
+\160\163\056\145\163\060\036\027\015\060\061\061\062\062\071\060
+\061\060\061\064\064\132\027\015\062\065\061\062\062\067\060\061
+\060\061\064\064\132\060\202\001\022\061\013\060\011\006\003\125
+\004\006\023\002\105\123\061\022\060\020\006\003\125\004\010\023
+\011\102\141\162\143\145\154\157\156\141\061\022\060\020\006\003
+\125\004\007\023\011\102\141\162\143\145\154\157\156\141\061\056
+\060\054\006\003\125\004\012\023\045\111\120\123\040\111\156\164
+\145\162\156\145\164\040\160\165\142\154\151\163\150\151\156\147
+\040\123\145\162\166\151\143\145\163\040\163\056\154\056\061\053
+\060\051\006\003\125\004\012\024\042\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163\040\103\056\111\056\106\056\040
+\040\102\055\066\060\071\062\071\064\065\062\061\056\060\054\006
+\003\125\004\013\023\045\111\120\123\040\103\101\040\103\114\101
+\123\105\063\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\056\060\054\006
+\003\125\004\003\023\045\111\120\123\040\103\101\040\103\114\101
+\123\105\063\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\036\060\034\006
+\011\052\206\110\206\367\015\001\011\001\026\017\151\160\163\100
+\155\141\151\154\056\151\160\163\056\145\163\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\253\027\376\016\260\306\150\033
+\123\360\122\276\237\372\332\372\213\023\004\273\001\217\062\331
+\037\217\115\316\066\230\332\344\000\104\214\050\330\023\104\052
+\244\153\116\027\044\102\234\323\210\244\101\202\326\043\373\213
+\311\206\345\271\251\202\005\334\361\336\037\340\014\231\125\230
+\362\070\354\154\235\040\003\300\357\252\243\306\144\004\121\055
+\170\015\243\322\250\072\326\044\114\351\226\172\030\254\023\043
+\042\033\174\350\061\021\263\137\011\252\060\160\161\106\045\153
+\111\161\200\053\225\001\262\037\002\003\001\000\001\243\202\004
+\112\060\202\004\106\060\035\006\003\125\035\016\004\026\004\024
+\270\223\377\056\313\334\054\216\242\347\172\376\066\121\041\243
+\230\133\014\064\060\202\001\104\006\003\125\035\043\004\202\001
+\073\060\202\001\067\200\024\270\223\377\056\313\334\054\216\242
+\347\172\376\066\121\041\243\230\133\014\064\241\202\001\032\244
+\202\001\026\060\202\001\022\061\013\060\011\006\003\125\004\006
+\023\002\105\123\061\022\060\020\006\003\125\004\010\023\011\102
+\141\162\143\145\154\157\156\141\061\022\060\020\006\003\125\004
+\007\023\011\102\141\162\143\145\154\157\156\141\061\056\060\054
+\006\003\125\004\012\023\045\111\120\123\040\111\156\164\145\162
+\156\145\164\040\160\165\142\154\151\163\150\151\156\147\040\123
+\145\162\166\151\143\145\163\040\163\056\154\056\061\053\060\051
+\006\003\125\004\012\024\042\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163\040\103\056\111\056\106\056\040\040\102
+\055\066\060\071\062\071\064\065\062\061\056\060\054\006\003\125
+\004\013\023\045\111\120\123\040\103\101\040\103\114\101\123\105
+\063\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\056\060\054\006\003\125
+\004\003\023\045\111\120\123\040\103\101\040\103\114\101\123\105
+\063\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052
+\206\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141
+\151\154\056\151\160\163\056\145\163\202\001\000\060\014\006\003
+\125\035\023\004\005\060\003\001\001\377\060\014\006\003\125\035
+\017\004\005\003\003\007\377\200\060\153\006\003\125\035\045\004
+\144\060\142\006\010\053\006\001\005\005\007\003\001\006\010\053
+\006\001\005\005\007\003\002\006\010\053\006\001\005\005\007\003
+\003\006\010\053\006\001\005\005\007\003\004\006\010\053\006\001
+\005\005\007\003\010\006\012\053\006\001\004\001\202\067\002\001
+\025\006\012\053\006\001\004\001\202\067\002\001\026\006\012\053
+\006\001\004\001\202\067\012\003\001\006\012\053\006\001\004\001
+\202\067\012\003\004\060\021\006\011\140\206\110\001\206\370\102
+\001\001\004\004\003\002\000\007\060\032\006\003\125\035\021\004
+\023\060\021\201\017\151\160\163\100\155\141\151\154\056\151\160
+\163\056\145\163\060\032\006\003\125\035\022\004\023\060\021\201
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+\060\101\006\011\140\206\110\001\206\370\102\001\015\004\064\026
+\062\103\114\101\123\105\063\040\103\101\040\103\145\162\164\151
+\146\151\143\141\164\145\040\151\163\163\165\145\144\040\142\171
+\040\150\164\164\160\072\057\057\167\167\167\056\151\160\163\056
+\145\163\057\060\051\006\011\140\206\110\001\206\370\102\001\002
+\004\034\026\032\150\164\164\160\072\057\057\167\167\167\056\151
+\160\163\056\145\163\057\151\160\163\062\060\060\062\057\060\072
+\006\011\140\206\110\001\206\370\102\001\004\004\055\026\053\150
+\164\164\160\072\057\057\167\167\167\056\151\160\163\056\145\163
+\057\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062
+\103\114\101\123\105\063\056\143\162\154\060\077\006\011\140\206
+\110\001\206\370\102\001\003\004\062\026\060\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\162\145\166\157\143\141\164\151\157\156\103
+\114\101\123\105\063\056\150\164\155\154\077\060\074\006\011\140
+\206\110\001\206\370\102\001\007\004\057\026\055\150\164\164\160
+\072\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160
+\163\062\060\060\062\057\162\145\156\145\167\141\154\103\114\101
+\123\105\063\056\150\164\155\154\077\060\072\006\011\140\206\110
+\001\206\370\102\001\010\004\055\026\053\150\164\164\160\072\057
+\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163\062
+\060\060\062\057\160\157\154\151\143\171\103\114\101\123\105\063
+\056\150\164\155\154\060\163\006\003\125\035\037\004\154\060\152
+\060\061\240\057\240\055\206\053\150\164\164\160\072\057\057\167
+\167\167\056\151\160\163\056\145\163\057\151\160\163\062\060\060
+\062\057\151\160\163\062\060\060\062\103\114\101\123\105\063\056
+\143\162\154\060\065\240\063\240\061\206\057\150\164\164\160\072
+\057\057\167\167\167\142\141\143\153\056\151\160\163\056\145\163
+\057\151\160\163\062\060\060\062\057\151\160\163\062\060\060\062
+\103\114\101\123\105\063\056\143\162\154\060\057\006\010\053\006
+\001\005\005\007\001\001\004\043\060\041\060\037\006\010\053\006
+\001\005\005\007\060\001\206\023\150\164\164\160\072\057\057\157
+\143\163\160\056\151\160\163\056\145\163\057\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\201\201\000\027\145
+\134\231\225\103\003\047\257\046\345\353\320\263\027\043\367\103
+\252\307\360\175\354\017\306\251\256\256\226\017\166\051\034\342
+\006\055\176\046\305\074\372\241\301\201\316\123\260\102\321\227
+\127\032\027\176\244\121\141\306\356\351\136\357\005\272\353\275
+\017\247\222\157\330\243\006\150\051\216\171\365\377\277\371\247
+\257\344\261\316\302\321\200\102\047\005\004\064\370\303\177\026
+\170\043\014\007\044\362\106\107\255\073\124\320\257\325\061\262
+\257\175\310\352\351\324\126\331\016\023\262\305\105\120
+END
+
+# Trust for Certificate "IPS CLASE3 root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASE3 root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\101\170\253\114\277\316\173\101\002\254\332\304\223\076\157\365
+\015\317\161\134
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\102\166\227\150\317\246\264\070\044\252\241\033\362\147\336\312
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\022\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\056\060\054\006\003\125\004\013\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\056\060\054\006\003\125\004\003\023
+\045\111\120\123\040\103\101\040\103\114\101\123\105\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS CLASEA1 root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASEA1 root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\367\060\202\007\140\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023\046
+\111\120\123\040\103\101\040\103\114\101\123\105\101\061\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110
+\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154
+\056\151\160\163\056\145\163\060\036\027\015\060\061\061\062\062
+\071\060\061\060\065\063\062\132\027\015\062\065\061\062\062\067
+\060\061\060\065\063\062\132\060\202\001\024\061\013\060\011\006
+\003\125\004\006\023\002\105\123\061\022\060\020\006\003\125\004
+\010\023\011\102\141\162\143\145\154\157\156\141\061\022\060\020
+\006\003\125\004\007\023\011\102\141\162\143\145\154\157\156\141
+\061\056\060\054\006\003\125\004\012\023\045\111\120\123\040\111
+\156\164\145\162\156\145\164\040\160\165\142\154\151\163\150\151
+\156\147\040\123\145\162\166\151\143\145\163\040\163\056\154\056
+\061\053\060\051\006\003\125\004\012\024\042\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\040\103\056\111\056\106
+\056\040\040\102\055\066\060\071\062\071\064\065\062\061\057\060
+\055\006\003\125\004\013\023\046\111\120\123\040\103\101\040\103
+\114\101\123\105\101\061\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\057
+\060\055\006\003\125\004\003\023\046\111\120\123\040\103\101\040
+\103\114\101\123\105\101\061\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\060
+\201\237\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\201\215\000\060\201\211\002\201\201\000\273\060\327\334
+\320\124\275\065\116\237\305\114\202\352\321\120\074\107\230\374
+\233\151\235\167\315\156\340\077\356\353\062\137\137\237\322\320
+\171\345\225\163\104\041\062\340\012\333\235\327\316\215\253\122
+\213\053\170\340\233\133\175\364\375\155\011\345\256\341\154\035
+\007\043\240\027\321\371\175\250\106\106\221\042\250\262\151\306
+\255\367\365\365\224\241\060\224\275\000\314\104\177\356\304\236
+\311\301\346\217\012\066\301\375\044\075\001\240\365\173\342\174
+\170\146\103\213\117\131\362\233\331\372\111\263\002\003\001\000
+\001\243\202\004\123\060\202\004\117\060\035\006\003\125\035\016
+\004\026\004\024\147\046\226\347\241\277\330\265\003\235\376\073
+\334\376\362\212\346\025\335\060\060\202\001\106\006\003\125\035
+\043\004\202\001\075\060\202\001\071\200\024\147\046\226\347\241
+\277\330\265\003\235\376\073\334\376\362\212\346\025\335\060\241
+\202\001\034\244\202\001\030\060\202\001\024\061\013\060\011\006
+\003\125\004\006\023\002\105\123\061\022\060\020\006\003\125\004
+\010\023\011\102\141\162\143\145\154\157\156\141\061\022\060\020
+\006\003\125\004\007\023\011\102\141\162\143\145\154\157\156\141
+\061\056\060\054\006\003\125\004\012\023\045\111\120\123\040\111
+\156\164\145\162\156\145\164\040\160\165\142\154\151\163\150\151
+\156\147\040\123\145\162\166\151\143\145\163\040\163\056\154\056
+\061\053\060\051\006\003\125\004\012\024\042\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\040\103\056\111\056\106
+\056\040\040\102\055\066\060\071\062\071\064\065\062\061\057\060
+\055\006\003\125\004\013\023\046\111\120\123\040\103\101\040\103
+\114\101\123\105\101\061\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\057
+\060\055\006\003\125\004\003\023\046\111\120\123\040\103\101\040
+\103\114\101\123\105\101\061\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\202
+\001\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377
+\060\014\006\003\125\035\017\004\005\003\003\007\377\200\060\153
+\006\003\125\035\045\004\144\060\142\006\010\053\006\001\005\005
+\007\003\001\006\010\053\006\001\005\005\007\003\002\006\010\053
+\006\001\005\005\007\003\003\006\010\053\006\001\005\005\007\003
+\004\006\010\053\006\001\005\005\007\003\010\006\012\053\006\001
+\004\001\202\067\002\001\025\006\012\053\006\001\004\001\202\067
+\002\001\026\006\012\053\006\001\004\001\202\067\012\003\001\006
+\012\053\006\001\004\001\202\067\012\003\004\060\021\006\011\140
+\206\110\001\206\370\102\001\001\004\004\003\002\000\007\060\032
+\006\003\125\035\021\004\023\060\021\201\017\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\060\032\006\003\125\035
+\022\004\023\060\021\201\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163\060\102\006\011\140\206\110\001\206\370
+\102\001\015\004\065\026\063\103\114\101\123\105\101\061\040\103
+\101\040\103\145\162\164\151\146\151\143\141\164\145\040\151\163
+\163\165\145\144\040\142\171\040\150\164\164\160\072\057\057\167
+\167\167\056\151\160\163\056\145\163\057\060\051\006\011\140\206
+\110\001\206\370\102\001\002\004\034\026\032\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\060\073\006\011\140\206\110\001\206\370\102
+\001\004\004\056\026\054\150\164\164\160\072\057\057\167\167\167
+\056\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057
+\151\160\163\062\060\060\062\103\114\101\123\105\101\061\056\143
+\162\154\060\100\006\011\140\206\110\001\206\370\102\001\003\004
+\063\026\061\150\164\164\160\072\057\057\167\167\167\056\151\160
+\163\056\145\163\057\151\160\163\062\060\060\062\057\162\145\166
+\157\143\141\164\151\157\156\103\114\101\123\105\101\061\056\150
+\164\155\154\077\060\075\006\011\140\206\110\001\206\370\102\001
+\007\004\060\026\056\150\164\164\160\072\057\057\167\167\167\056
+\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057\162
+\145\156\145\167\141\154\103\114\101\123\105\101\061\056\150\164
+\155\154\077\060\073\006\011\140\206\110\001\206\370\102\001\010
+\004\056\026\054\150\164\164\160\072\057\057\167\167\167\056\151
+\160\163\056\145\163\057\151\160\163\062\060\060\062\057\160\157
+\154\151\143\171\103\114\101\123\105\101\061\056\150\164\155\154
+\060\165\006\003\125\035\037\004\156\060\154\060\062\240\060\240
+\056\206\054\150\164\164\160\072\057\057\167\167\167\056\151\160
+\163\056\145\163\057\151\160\163\062\060\060\062\057\151\160\163
+\062\060\060\062\103\114\101\123\105\101\061\056\143\162\154\060
+\066\240\064\240\062\206\060\150\164\164\160\072\057\057\167\167
+\167\142\141\143\153\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\151\160\163\062\060\060\062\103\114\101\123
+\105\101\061\056\143\162\154\060\057\006\010\053\006\001\005\005
+\007\001\001\004\043\060\041\060\037\006\010\053\006\001\005\005
+\007\060\001\206\023\150\164\164\160\072\057\057\157\143\163\160
+\056\151\160\163\056\145\163\057\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\176\272\212\254\200
+\000\204\025\012\325\230\121\014\144\305\234\002\130\203\146\312
+\255\036\007\315\176\152\332\200\007\337\003\064\112\034\223\304
+\113\130\040\065\066\161\355\242\012\065\022\245\246\145\247\205
+\151\012\016\343\141\356\352\276\050\223\063\325\354\350\276\304
+\333\137\177\250\371\143\061\310\153\226\342\051\302\133\240\347
+\227\066\235\167\136\061\153\376\323\247\333\052\333\333\226\213
+\037\146\336\266\003\300\053\263\170\326\125\007\345\217\071\120
+\336\007\043\162\346\275\040\024\113\264\206
+END
+
+# Trust for Certificate "IPS CLASEA1 root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASEA1 root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\063\243\065\302\074\350\003\113\004\341\075\345\304\216\171\032
+\353\214\062\004
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\014\370\236\027\374\324\003\275\346\215\233\074\005\207\376\204
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\061
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS CLASEA3 root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASEA3 root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\367\060\202\007\140\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023\046
+\111\120\123\040\103\101\040\103\114\101\123\105\101\063\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206\110
+\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154
+\056\151\160\163\056\145\163\060\036\027\015\060\061\061\062\062
+\071\060\061\060\067\065\060\132\027\015\062\065\061\062\062\067
+\060\061\060\067\065\060\132\060\202\001\024\061\013\060\011\006
+\003\125\004\006\023\002\105\123\061\022\060\020\006\003\125\004
+\010\023\011\102\141\162\143\145\154\157\156\141\061\022\060\020
+\006\003\125\004\007\023\011\102\141\162\143\145\154\157\156\141
+\061\056\060\054\006\003\125\004\012\023\045\111\120\123\040\111
+\156\164\145\162\156\145\164\040\160\165\142\154\151\163\150\151
+\156\147\040\123\145\162\166\151\143\145\163\040\163\056\154\056
+\061\053\060\051\006\003\125\004\012\024\042\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\040\103\056\111\056\106
+\056\040\040\102\055\066\060\071\062\071\064\065\062\061\057\060
+\055\006\003\125\004\013\023\046\111\120\123\040\103\101\040\103
+\114\101\123\105\101\063\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\057
+\060\055\006\003\125\004\003\023\046\111\120\123\040\103\101\040
+\103\114\101\123\105\101\063\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\060
+\201\237\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\201\215\000\060\201\211\002\201\201\000\356\200\000\366
+\032\144\056\255\152\310\203\261\213\247\356\217\331\266\333\315
+\033\273\206\006\042\166\063\014\022\155\110\126\141\322\334\202
+\045\142\057\237\322\151\060\145\003\102\043\130\274\107\334\153
+\326\165\135\027\074\341\377\362\130\147\171\240\301\201\261\324
+\126\242\362\215\021\231\375\366\175\361\307\304\136\002\052\232
+\342\112\265\023\212\000\375\214\167\206\346\327\224\365\040\165
+\056\016\114\277\164\304\077\201\076\203\264\243\070\066\051\347
+\350\052\365\214\210\101\252\200\246\343\154\357\002\003\001\000
+\001\243\202\004\123\060\202\004\117\060\035\006\003\125\035\016
+\004\026\004\024\036\237\127\120\107\266\141\223\071\323\054\374
+\332\135\075\005\165\267\231\002\060\202\001\106\006\003\125\035
+\043\004\202\001\075\060\202\001\071\200\024\036\237\127\120\107
+\266\141\223\071\323\054\374\332\135\075\005\165\267\231\002\241
+\202\001\034\244\202\001\030\060\202\001\024\061\013\060\011\006
+\003\125\004\006\023\002\105\123\061\022\060\020\006\003\125\004
+\010\023\011\102\141\162\143\145\154\157\156\141\061\022\060\020
+\006\003\125\004\007\023\011\102\141\162\143\145\154\157\156\141
+\061\056\060\054\006\003\125\004\012\023\045\111\120\123\040\111
+\156\164\145\162\156\145\164\040\160\165\142\154\151\163\150\151
+\156\147\040\123\145\162\166\151\143\145\163\040\163\056\154\056
+\061\053\060\051\006\003\125\004\012\024\042\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\040\103\056\111\056\106
+\056\040\040\102\055\066\060\071\062\071\064\065\062\061\057\060
+\055\006\003\125\004\013\023\046\111\120\123\040\103\101\040\103
+\114\101\123\105\101\063\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061\057
+\060\055\006\003\125\004\003\023\046\111\120\123\040\103\101\040
+\103\114\101\123\105\101\063\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026\017
+\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163\202
+\001\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377
+\060\014\006\003\125\035\017\004\005\003\003\007\377\200\060\153
+\006\003\125\035\045\004\144\060\142\006\010\053\006\001\005\005
+\007\003\001\006\010\053\006\001\005\005\007\003\002\006\010\053
+\006\001\005\005\007\003\003\006\010\053\006\001\005\005\007\003
+\004\006\010\053\006\001\005\005\007\003\010\006\012\053\006\001
+\004\001\202\067\002\001\025\006\012\053\006\001\004\001\202\067
+\002\001\026\006\012\053\006\001\004\001\202\067\012\003\001\006
+\012\053\006\001\004\001\202\067\012\003\004\060\021\006\011\140
+\206\110\001\206\370\102\001\001\004\004\003\002\000\007\060\032
+\006\003\125\035\021\004\023\060\021\201\017\151\160\163\100\155
+\141\151\154\056\151\160\163\056\145\163\060\032\006\003\125\035
+\022\004\023\060\021\201\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163\060\102\006\011\140\206\110\001\206\370
+\102\001\015\004\065\026\063\103\114\101\123\105\101\063\040\103
+\101\040\103\145\162\164\151\146\151\143\141\164\145\040\151\163
+\163\165\145\144\040\142\171\040\150\164\164\160\072\057\057\167
+\167\167\056\151\160\163\056\145\163\057\060\051\006\011\140\206
+\110\001\206\370\102\001\002\004\034\026\032\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\060\073\006\011\140\206\110\001\206\370\102
+\001\004\004\056\026\054\150\164\164\160\072\057\057\167\167\167
+\056\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057
+\151\160\163\062\060\060\062\103\114\101\123\105\101\063\056\143
+\162\154\060\100\006\011\140\206\110\001\206\370\102\001\003\004
+\063\026\061\150\164\164\160\072\057\057\167\167\167\056\151\160
+\163\056\145\163\057\151\160\163\062\060\060\062\057\162\145\166
+\157\143\141\164\151\157\156\103\114\101\123\105\101\063\056\150
+\164\155\154\077\060\075\006\011\140\206\110\001\206\370\102\001
+\007\004\060\026\056\150\164\164\160\072\057\057\167\167\167\056
+\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057\162
+\145\156\145\167\141\154\103\114\101\123\105\101\063\056\150\164
+\155\154\077\060\073\006\011\140\206\110\001\206\370\102\001\010
+\004\056\026\054\150\164\164\160\072\057\057\167\167\167\056\151
+\160\163\056\145\163\057\151\160\163\062\060\060\062\057\160\157
+\154\151\143\171\103\114\101\123\105\101\063\056\150\164\155\154
+\060\165\006\003\125\035\037\004\156\060\154\060\062\240\060\240
+\056\206\054\150\164\164\160\072\057\057\167\167\167\056\151\160
+\163\056\145\163\057\151\160\163\062\060\060\062\057\151\160\163
+\062\060\060\062\103\114\101\123\105\101\063\056\143\162\154\060
+\066\240\064\240\062\206\060\150\164\164\160\072\057\057\167\167
+\167\142\141\143\153\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\151\160\163\062\060\060\062\103\114\101\123
+\105\101\063\056\143\162\154\060\057\006\010\053\006\001\005\005
+\007\001\001\004\043\060\041\060\037\006\010\053\006\001\005\005
+\007\060\001\206\023\150\164\164\160\072\057\057\157\143\163\160
+\056\151\160\163\056\145\163\057\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\201\201\000\112\075\040\107\032
+\332\211\364\172\053\061\171\354\001\300\314\001\365\326\301\374
+\310\303\363\120\002\121\220\130\052\237\347\065\011\133\060\012
+\201\000\045\107\257\324\017\016\236\140\046\250\225\247\203\010
+\337\055\254\351\016\367\234\310\237\313\223\105\361\272\152\306
+\147\121\112\151\117\153\376\175\013\057\122\051\302\120\255\044
+\104\355\043\263\110\313\104\100\301\003\225\014\012\170\006\022
+\001\365\221\061\055\111\215\273\077\105\116\054\340\350\315\265
+\311\024\025\014\343\007\203\233\046\165\357
+END
+
+# Trust for Certificate "IPS CLASEA3 root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS CLASEA3 root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\026\324\044\376\226\020\341\165\031\257\043\053\266\207\164\342
+\101\104\276\156
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\006\371\353\354\314\126\235\210\272\220\365\272\260\032\340\002
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\024\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\057\060\055\006\003\125\004\013\023
+\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003
+\023\046\111\120\123\040\103\101\040\103\114\101\123\105\101\063
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\061\036\060\034\006\011\052\206
+\110\206\367\015\001\011\001\026\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS Servidores root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Servidores root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\101\122\103\105
+\114\117\116\101\061\022\060\020\006\003\125\004\007\023\011\102
+\101\122\103\105\114\117\116\101\061\031\060\027\006\003\125\004
+\012\023\020\111\120\123\040\123\145\147\165\162\151\144\141\144
+\040\103\101\061\030\060\026\006\003\125\004\013\023\017\103\145
+\162\164\151\146\151\143\141\143\151\157\156\145\163\061\027\060
+\025\006\003\125\004\003\023\016\111\120\123\040\123\105\122\126
+\111\104\117\122\105\123\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\101\122\103\105
+\114\117\116\101\061\022\060\020\006\003\125\004\007\023\011\102
+\101\122\103\105\114\117\116\101\061\031\060\027\006\003\125\004
+\012\023\020\111\120\123\040\123\145\147\165\162\151\144\141\144
+\040\103\101\061\030\060\026\006\003\125\004\013\023\017\103\145
+\162\164\151\146\151\143\141\143\151\157\156\145\163\061\027\060
+\025\006\003\125\004\003\023\016\111\120\123\040\123\105\122\126
+\111\104\117\122\105\123\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\267\060\202\002\040\002\001\000\060\015\006\011\052
+\206\110\206\367\015\001\001\004\005\000\060\201\243\061\013\060
+\011\006\003\125\004\006\023\002\105\123\061\022\060\020\006\003
+\125\004\010\023\011\102\101\122\103\105\114\117\116\101\061\022
+\060\020\006\003\125\004\007\023\011\102\101\122\103\105\114\117
+\116\101\061\031\060\027\006\003\125\004\012\023\020\111\120\123
+\040\123\145\147\165\162\151\144\141\144\040\103\101\061\030\060
+\026\006\003\125\004\013\023\017\103\145\162\164\151\146\151\143
+\141\143\151\157\156\145\163\061\027\060\025\006\003\125\004\003
+\023\016\111\120\123\040\123\105\122\126\111\104\117\122\105\123
+\061\036\060\034\006\011\052\206\110\206\367\015\001\011\001\026
+\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145\163
+\060\036\027\015\071\070\060\061\060\061\062\063\062\061\060\067
+\132\027\015\060\071\061\062\062\071\062\063\062\061\060\067\132
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\101\122\103\105
+\114\117\116\101\061\022\060\020\006\003\125\004\007\023\011\102
+\101\122\103\105\114\117\116\101\061\031\060\027\006\003\125\004
+\012\023\020\111\120\123\040\123\145\147\165\162\151\144\141\144
+\040\103\101\061\030\060\026\006\003\125\004\013\023\017\103\145
+\162\164\151\146\151\143\141\143\151\157\156\145\163\061\027\060
+\025\006\003\125\004\003\023\016\111\120\123\040\123\105\122\126
+\111\104\117\122\105\123\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163\060\201\237\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002
+\201\201\000\254\117\122\164\237\071\352\216\334\045\304\274\230
+\135\230\144\044\011\074\041\263\314\031\265\216\224\216\207\321
+\370\067\076\241\310\055\130\244\200\065\133\241\165\154\035\105
+\014\037\141\143\152\136\157\233\012\114\301\310\270\141\043\065
+\201\377\376\254\170\160\055\150\341\072\007\230\225\002\124\335
+\315\043\267\200\123\327\310\067\105\162\006\044\022\272\023\141
+\041\212\156\165\050\340\305\017\064\375\066\330\105\177\341\270
+\066\357\263\341\306\040\216\350\264\070\274\341\076\366\021\336
+\214\235\001\002\003\001\000\001\060\015\006\011\052\206\110\206
+\367\015\001\001\004\005\000\003\201\201\000\054\363\303\171\130
+\044\336\306\073\321\340\102\151\270\356\144\263\075\142\001\271
+\263\204\337\043\175\335\230\317\020\251\376\000\330\042\226\005
+\023\007\124\127\305\247\336\313\331\270\210\102\366\231\333\024
+\167\037\266\376\045\075\341\242\076\003\251\201\322\055\154\107
+\365\226\106\214\042\253\310\314\015\016\227\136\213\101\264\073
+\304\012\006\100\035\335\106\364\001\335\272\202\056\074\075\170
+\160\236\174\030\320\253\370\270\167\007\106\161\361\312\013\143
+\134\152\371\162\224\325\001\117\240\333\102
+END
+
+# Trust for Certificate "IPS Servidores root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Servidores root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\044\272\155\154\212\133\130\067\244\215\265\372\351\031\352\147
+\134\224\322\027
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\173\265\010\231\232\214\030\277\205\047\175\016\256\332\262\253
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\243\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\101\122\103\105
+\114\117\116\101\061\022\060\020\006\003\125\004\007\023\011\102
+\101\122\103\105\114\117\116\101\061\031\060\027\006\003\125\004
+\012\023\020\111\120\123\040\123\145\147\165\162\151\144\141\144
+\040\103\101\061\030\060\026\006\003\125\004\013\023\017\103\145
+\162\164\151\146\151\143\141\143\151\157\156\145\163\061\027\060
+\025\006\003\125\004\003\023\016\111\120\123\040\123\105\122\126
+\111\104\117\122\105\123\061\036\060\034\006\011\052\206\110\206
+\367\015\001\011\001\026\017\151\160\163\100\155\141\151\154\056
+\151\160\163\056\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IPS Timestamping root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Timestamping root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\202\001\036\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\064\060\062\006\003\125\004\013\023
+\053\111\120\123\040\103\101\040\124\151\155\145\163\164\141\155
+\160\151\156\147\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\061\064\060\062
+\006\003\125\004\003\023\053\111\120\123\040\103\101\040\124\151
+\155\145\163\164\141\155\160\151\156\147\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\061\036\060\034\006\011\052\206\110\206\367\015\001\011
+\001\026\017\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\036\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\064\060\062\006\003\125\004\013\023
+\053\111\120\123\040\103\101\040\124\151\155\145\163\164\141\155
+\160\151\156\147\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\061\064\060\062
+\006\003\125\004\003\023\053\111\120\123\040\103\101\040\124\151
+\155\145\163\164\141\155\160\151\156\147\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\061\036\060\034\006\011\052\206\110\206\367\015\001\011
+\001\026\017\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\010\070\060\202\007\241\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\202\001\036\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143\145
+\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011\102
+\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125\004
+\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164\040
+\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166\151
+\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125\004
+\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060\071
+\062\071\064\065\062\061\064\060\062\006\003\125\004\013\023\053
+\111\120\123\040\103\101\040\124\151\155\145\163\164\141\155\160
+\151\156\147\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\064\060\062\006
+\003\125\004\003\023\053\111\120\123\040\103\101\040\124\151\155
+\145\163\164\141\155\160\151\156\147\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\036\060\034\006\011\052\206\110\206\367\015\001\011\001
+\026\017\151\160\163\100\155\141\151\154\056\151\160\163\056\145
+\163\060\036\027\015\060\061\061\062\062\071\060\061\061\060\061
+\070\132\027\015\062\065\061\062\062\067\060\061\061\060\061\070
+\132\060\202\001\036\061\013\060\011\006\003\125\004\006\023\002
+\105\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162
+\143\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023
+\011\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003
+\125\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145
+\164\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162
+\166\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003
+\125\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160
+\163\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066
+\060\071\062\071\064\065\062\061\064\060\062\006\003\125\004\013
+\023\053\111\120\123\040\103\101\040\124\151\155\145\163\164\141
+\155\160\151\156\147\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171\061\064\060
+\062\006\003\125\004\003\023\053\111\120\123\040\103\101\040\124
+\151\155\145\163\164\141\155\160\151\156\147\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\061\036\060\034\006\011\052\206\110\206\367\015\001
+\011\001\026\017\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\060\201\237\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\201\215\000\060\201\211\002\201\201\000
+\274\270\356\126\245\232\214\346\066\311\302\142\240\146\201\215
+\032\325\172\322\163\237\016\204\144\272\225\264\220\247\170\257
+\312\376\124\141\133\316\262\040\127\001\256\104\222\103\020\070
+\021\367\150\374\027\100\245\150\047\062\073\304\247\346\102\161
+\305\231\357\166\377\053\225\044\365\111\222\030\150\312\000\265
+\244\132\057\156\313\326\033\054\015\124\147\153\172\051\241\130
+\253\242\132\000\326\133\273\030\302\337\366\036\023\126\166\233
+\245\150\342\230\316\306\003\212\064\333\114\203\101\246\251\243
+\002\003\001\000\001\243\202\004\200\060\202\004\174\060\035\006
+\003\125\035\016\004\026\004\024\213\320\020\120\011\201\362\235
+\011\325\016\140\170\003\042\242\077\310\312\146\060\202\001\120
+\006\003\125\035\043\004\202\001\107\060\202\001\103\200\024\213
+\320\020\120\011\201\362\235\011\325\016\140\170\003\042\242\077
+\310\312\146\241\202\001\046\244\202\001\042\060\202\001\036\061
+\013\060\011\006\003\125\004\006\023\002\105\123\061\022\060\020
+\006\003\125\004\010\023\011\102\141\162\143\145\154\157\156\141
+\061\022\060\020\006\003\125\004\007\023\011\102\141\162\143\145
+\154\157\156\141\061\056\060\054\006\003\125\004\012\023\045\111
+\120\123\040\111\156\164\145\162\156\145\164\040\160\165\142\154
+\151\163\150\151\156\147\040\123\145\162\166\151\143\145\163\040
+\163\056\154\056\061\053\060\051\006\003\125\004\012\024\042\151
+\160\163\100\155\141\151\154\056\151\160\163\056\145\163\040\103
+\056\111\056\106\056\040\040\102\055\066\060\071\062\071\064\065
+\062\061\064\060\062\006\003\125\004\013\023\053\111\120\123\040
+\103\101\040\124\151\155\145\163\164\141\155\160\151\156\147\040
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165
+\164\150\157\162\151\164\171\061\064\060\062\006\003\125\004\003
+\023\053\111\120\123\040\103\101\040\124\151\155\145\163\164\141
+\155\160\151\156\147\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171\061\036\060
+\034\006\011\052\206\110\206\367\015\001\011\001\026\017\151\160
+\163\100\155\141\151\154\056\151\160\163\056\145\163\202\001\000
+\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060\014
+\006\003\125\035\017\004\005\003\003\007\377\200\060\153\006\003
+\125\035\045\004\144\060\142\006\010\053\006\001\005\005\007\003
+\001\006\010\053\006\001\005\005\007\003\002\006\010\053\006\001
+\005\005\007\003\003\006\010\053\006\001\005\005\007\003\004\006
+\010\053\006\001\005\005\007\003\010\006\012\053\006\001\004\001
+\202\067\002\001\025\006\012\053\006\001\004\001\202\067\002\001
+\026\006\012\053\006\001\004\001\202\067\012\003\001\006\012\053
+\006\001\004\001\202\067\012\003\004\060\021\006\011\140\206\110
+\001\206\370\102\001\001\004\004\003\002\000\007\060\032\006\003
+\125\035\021\004\023\060\021\201\017\151\160\163\100\155\141\151
+\154\056\151\160\163\056\145\163\060\032\006\003\125\035\022\004
+\023\060\021\201\017\151\160\163\100\155\141\151\154\056\151\160
+\163\056\145\163\060\107\006\011\140\206\110\001\206\370\102\001
+\015\004\072\026\070\124\151\155\145\163\164\141\155\160\151\156
+\147\040\103\101\040\103\145\162\164\151\146\151\143\141\164\145
+\040\151\163\163\165\145\144\040\142\171\040\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\060\051\006
+\011\140\206\110\001\206\370\102\001\002\004\034\026\032\150\164
+\164\160\072\057\057\167\167\167\056\151\160\163\056\145\163\057
+\151\160\163\062\060\060\062\057\060\100\006\011\140\206\110\001
+\206\370\102\001\004\004\063\026\061\150\164\164\160\072\057\057
+\167\167\167\056\151\160\163\056\145\163\057\151\160\163\062\060
+\060\062\057\151\160\163\062\060\060\062\124\151\155\145\163\164
+\141\155\160\151\156\147\056\143\162\154\060\105\006\011\140\206
+\110\001\206\370\102\001\003\004\070\026\066\150\164\164\160\072
+\057\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163
+\062\060\060\062\057\162\145\166\157\143\141\164\151\157\156\124
+\151\155\145\163\164\141\155\160\151\156\147\056\150\164\155\154
+\077\060\102\006\011\140\206\110\001\206\370\102\001\007\004\065
+\026\063\150\164\164\160\072\057\057\167\167\167\056\151\160\163
+\056\145\163\057\151\160\163\062\060\060\062\057\162\145\156\145
+\167\141\154\124\151\155\145\163\164\141\155\160\151\156\147\056
+\150\164\155\154\077\060\100\006\011\140\206\110\001\206\370\102
+\001\010\004\063\026\061\150\164\164\160\072\057\057\167\167\167
+\056\151\160\163\056\145\163\057\151\160\163\062\060\060\062\057
+\160\157\154\151\143\171\124\151\155\145\163\164\141\155\160\151
+\156\147\056\150\164\155\154\060\177\006\003\125\035\037\004\170
+\060\166\060\067\240\065\240\063\206\061\150\164\164\160\072\057
+\057\167\167\167\056\151\160\163\056\145\163\057\151\160\163\062
+\060\060\062\057\151\160\163\062\060\060\062\124\151\155\145\163
+\164\141\155\160\151\156\147\056\143\162\154\060\073\240\071\240
+\067\206\065\150\164\164\160\072\057\057\167\167\167\142\141\143
+\153\056\151\160\163\056\145\163\057\151\160\163\062\060\060\062
+\057\151\160\163\062\060\060\062\124\151\155\145\163\164\141\155
+\160\151\156\147\056\143\162\154\060\057\006\010\053\006\001\005
+\005\007\001\001\004\043\060\041\060\037\006\010\053\006\001\005
+\005\007\060\001\206\023\150\164\164\160\072\057\057\157\143\163
+\160\056\151\160\163\056\145\163\057\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\201\201\000\145\272\301\314
+\000\032\225\221\312\351\154\072\277\072\036\024\010\174\373\203
+\356\153\142\121\323\063\221\265\140\171\176\004\330\135\171\067
+\350\303\133\260\304\147\055\150\132\262\137\016\012\372\315\077
+\072\105\241\352\066\317\046\036\247\021\050\305\224\217\204\114
+\123\010\305\223\263\374\342\177\365\215\363\261\251\205\137\210
+\336\221\226\356\027\133\256\245\352\160\145\170\054\041\144\001
+\225\316\316\114\076\120\364\266\131\313\143\215\266\275\030\324
+\207\112\137\334\357\351\126\360\012\014\350\165
+END
+
+# Trust for Certificate "IPS Timestamping root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IPS Timestamping root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\226\231\134\167\021\350\345\055\371\343\113\354\354\147\323\313
+\361\266\304\322
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\056\003\375\305\365\327\053\224\144\301\276\211\061\361\026\233
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\202\001\036\061\013\060\011\006\003\125\004\006\023\002\105
+\123\061\022\060\020\006\003\125\004\010\023\011\102\141\162\143
+\145\154\157\156\141\061\022\060\020\006\003\125\004\007\023\011
+\102\141\162\143\145\154\157\156\141\061\056\060\054\006\003\125
+\004\012\023\045\111\120\123\040\111\156\164\145\162\156\145\164
+\040\160\165\142\154\151\163\150\151\156\147\040\123\145\162\166
+\151\143\145\163\040\163\056\154\056\061\053\060\051\006\003\125
+\004\012\024\042\151\160\163\100\155\141\151\154\056\151\160\163
+\056\145\163\040\103\056\111\056\106\056\040\040\102\055\066\060
+\071\062\071\064\065\062\061\064\060\062\006\003\125\004\013\023
+\053\111\120\123\040\103\101\040\124\151\155\145\163\164\141\155
+\160\151\156\147\040\103\145\162\164\151\146\151\143\141\164\151
+\157\156\040\101\165\164\150\157\162\151\164\171\061\064\060\062
+\006\003\125\004\003\023\053\111\120\123\040\103\101\040\124\151
+\155\145\163\164\141\155\160\151\156\147\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\061\036\060\034\006\011\052\206\110\206\367\015\001\011
+\001\026\017\151\160\163\100\155\141\151\154\056\151\160\163\056
+\145\163
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "QuoVadis Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
+\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
+\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\072\266\120\213
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\320\060\202\004\270\240\003\002\001\002\002\004\072
+\266\120\213\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\177\061\013\060\011\006\003\125\004\006\023\002\102
+\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126
+\141\144\151\163\040\114\151\155\151\164\145\144\061\045\060\043
+\006\003\125\004\013\023\034\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\061\056\060\054\006\003\125\004\003\023\045\121\165
+\157\126\141\144\151\163\040\122\157\157\164\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\060\036\027\015\060\061\060\063\061\071\061\070\063
+\063\063\063\132\027\015\062\061\060\063\061\067\061\070\063\063
+\063\063\132\060\177\061\013\060\011\006\003\125\004\006\023\002
+\102\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157
+\126\141\144\151\163\040\114\151\155\151\164\145\144\061\045\060
+\043\006\003\125\004\013\023\034\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\061\056\060\054\006\003\125\004\003\023\045\121
+\165\157\126\141\144\151\163\040\122\157\157\164\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\277\141\265\225\123\272\127\374\372\362\147
+\013\072\032\337\021\200\144\225\264\321\274\315\172\317\366\051
+\226\056\044\124\100\044\070\367\032\205\334\130\114\313\244\047
+\102\227\320\237\203\212\303\344\006\003\133\000\245\121\036\160
+\004\164\342\301\324\072\253\327\255\073\007\030\005\216\375\203
+\254\352\146\331\030\033\150\212\365\127\032\230\272\365\355\166
+\075\174\331\336\224\152\073\113\027\301\325\217\275\145\070\072
+\225\320\075\125\066\116\337\171\127\061\052\036\330\131\145\111
+\130\040\230\176\253\137\176\237\351\326\115\354\203\164\251\307
+\154\330\356\051\112\205\052\006\024\371\124\346\323\332\145\007
+\213\143\067\022\327\320\354\303\173\040\101\104\243\355\313\240
+\027\341\161\145\316\035\146\061\367\166\001\031\310\175\003\130
+\266\225\111\035\246\022\046\350\306\014\166\340\343\146\313\352
+\135\246\046\356\345\314\137\275\147\247\001\047\016\242\312\124
+\305\261\172\225\035\161\036\112\051\212\003\334\152\105\301\244
+\031\136\157\066\315\303\242\260\267\376\134\070\342\122\274\370
+\104\103\346\220\273\002\003\001\000\001\243\202\002\122\060\202
+\002\116\060\075\006\010\053\006\001\005\005\007\001\001\004\061
+\060\057\060\055\006\010\053\006\001\005\005\007\060\001\206\041
+\150\164\164\160\163\072\057\057\157\143\163\160\056\161\165\157
+\166\141\144\151\163\157\146\146\163\150\157\162\145\056\143\157
+\155\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\202\001\032\006\003\125\035\040\004\202\001\021\060
+\202\001\015\060\202\001\011\006\011\053\006\001\004\001\276\130
+\000\001\060\201\373\060\201\324\006\010\053\006\001\005\005\007
+\002\002\060\201\307\032\201\304\122\145\154\151\141\156\143\145
+\040\157\156\040\164\150\145\040\121\165\157\126\141\144\151\163
+\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164
+\145\040\142\171\040\141\156\171\040\160\141\162\164\171\040\141
+\163\163\165\155\145\163\040\141\143\143\145\160\164\141\156\143
+\145\040\157\146\040\164\150\145\040\164\150\145\156\040\141\160
+\160\154\151\143\141\142\154\145\040\163\164\141\156\144\141\162
+\144\040\164\145\162\155\163\040\141\156\144\040\143\157\156\144
+\151\164\151\157\156\163\040\157\146\040\165\163\145\054\040\143
+\145\162\164\151\146\151\143\141\164\151\157\156\040\160\162\141
+\143\164\151\143\145\163\054\040\141\156\144\040\164\150\145\040
+\121\165\157\126\141\144\151\163\040\103\145\162\164\151\146\151
+\143\141\164\145\040\120\157\154\151\143\171\056\060\042\006\010
+\053\006\001\005\005\007\002\001\026\026\150\164\164\160\072\057
+\057\167\167\167\056\161\165\157\166\141\144\151\163\056\142\155
+\060\035\006\003\125\035\016\004\026\004\024\213\113\155\355\323
+\051\271\006\031\354\071\071\251\360\227\204\152\313\357\337\060
+\201\256\006\003\125\035\043\004\201\246\060\201\243\200\024\213
+\113\155\355\323\051\271\006\031\354\071\071\251\360\227\204\152
+\313\357\337\241\201\204\244\201\201\060\177\061\013\060\011\006
+\003\125\004\006\023\002\102\115\061\031\060\027\006\003\125\004
+\012\023\020\121\165\157\126\141\144\151\163\040\114\151\155\151
+\164\145\144\061\045\060\043\006\003\125\004\013\023\034\122\157
+\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\061\056\060\054\006\003
+\125\004\003\023\045\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171\202\004\072\266\120\213
+\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\212\324\024\265\376\364\232\222\247\031\324\244
+\176\162\030\217\331\150\174\122\044\335\147\157\071\172\304\252
+\136\075\342\130\260\115\160\230\204\141\350\033\343\151\030\016
+\316\373\107\120\240\116\377\360\044\037\275\262\316\365\047\374
+\354\057\123\252\163\173\003\075\164\156\346\026\236\353\245\056
+\304\277\126\047\120\053\142\272\276\113\034\074\125\134\101\035
+\044\276\202\040\107\135\325\104\176\172\026\150\337\175\115\121
+\160\170\127\035\063\036\375\002\231\234\014\315\012\005\117\307
+\273\216\244\165\372\112\155\261\200\216\011\126\271\234\032\140
+\376\135\301\327\172\334\021\170\320\326\135\301\267\325\255\062
+\231\003\072\212\314\124\045\071\061\201\173\023\042\121\272\106
+\154\241\273\236\372\004\154\111\046\164\217\322\163\353\314\060
+\242\346\352\131\042\207\370\227\365\016\375\352\314\222\244\026
+\304\122\030\352\041\316\261\361\346\204\201\345\272\251\206\050
+\362\103\132\135\022\235\254\036\331\250\345\012\152\247\177\240
+\207\051\317\362\211\115\324\354\305\342\346\172\320\066\043\212
+\112\164\066\371
+END
+
+# Trust for Certificate "QuoVadis Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\336\077\100\275\120\223\323\233\154\140\366\332\274\007\142\001
+\000\211\166\311
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\047\336\066\376\162\267\000\003\000\235\364\360\036\154\004\044
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\045\060\043\006\003
+\125\004\013\023\034\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171\061\056\060\054\006\003\125\004\003\023\045\121\165\157\126
+\141\144\151\163\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\072\266\120\213
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "QuoVadis Root CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\005\011
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\267\060\202\003\237\240\003\002\001\002\002\002\005
+\011\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\062\060\036\027\015\060\066\061\061\062
+\064\061\070\062\067\060\060\132\027\015\063\061\061\061\062\064
+\061\070\062\063\063\063\132\060\105\061\013\060\011\006\003\125
+\004\006\023\002\102\115\061\031\060\027\006\003\125\004\012\023
+\020\121\165\157\126\141\144\151\163\040\114\151\155\151\164\145
+\144\061\033\060\031\006\003\125\004\003\023\022\121\165\157\126
+\141\144\151\163\040\122\157\157\164\040\103\101\040\062\060\202
+\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\232
+\030\312\113\224\015\000\055\257\003\051\212\360\017\201\310\256
+\114\031\205\035\010\237\253\051\104\205\363\057\201\255\062\036
+\220\106\277\243\206\046\032\036\376\176\034\030\072\134\234\140
+\027\052\072\164\203\063\060\175\141\124\021\313\355\253\340\346
+\322\242\176\365\153\157\030\267\012\013\055\375\351\076\357\012
+\306\263\020\351\334\302\106\027\370\135\375\244\332\377\236\111
+\132\234\346\063\346\044\226\367\077\272\133\053\034\172\065\302
+\326\147\376\253\146\120\213\155\050\140\053\357\327\140\303\307
+\223\274\215\066\221\363\177\370\333\021\023\304\234\167\166\301
+\256\267\002\152\201\172\251\105\203\342\005\346\271\126\301\224
+\067\217\110\161\143\042\354\027\145\007\225\212\113\337\217\306
+\132\012\345\260\343\137\136\153\021\253\014\371\205\353\104\351
+\370\004\163\362\351\376\134\230\214\365\163\257\153\264\176\315
+\324\134\002\053\114\071\341\262\225\225\055\102\207\327\325\263
+\220\103\267\154\023\361\336\335\366\304\370\211\077\321\165\365
+\222\303\221\325\212\210\320\220\354\334\155\336\211\302\145\161
+\226\213\015\003\375\234\277\133\026\254\222\333\352\376\171\174
+\255\353\257\367\026\313\333\315\045\053\345\037\373\232\237\342
+\121\314\072\123\014\110\346\016\275\311\264\166\006\122\346\021
+\023\205\162\143\003\004\340\004\066\053\040\031\002\350\164\247
+\037\266\311\126\146\360\165\045\334\147\301\016\141\140\210\263
+\076\321\250\374\243\332\035\260\321\261\043\124\337\104\166\155
+\355\101\330\301\262\042\266\123\034\337\065\035\334\241\167\052
+\061\344\055\365\345\345\333\310\340\377\345\200\327\013\143\240
+\377\063\241\017\272\054\025\025\352\227\263\322\242\265\276\362
+\214\226\036\032\217\035\154\244\141\067\271\206\163\063\327\227
+\226\236\043\175\202\244\114\201\342\241\321\272\147\137\225\007
+\243\047\021\356\026\020\173\274\105\112\114\262\004\322\253\357
+\325\375\014\121\316\120\152\010\061\371\221\332\014\217\144\134
+\003\303\072\213\040\077\156\215\147\075\072\326\376\175\133\210
+\311\136\373\314\141\334\213\063\167\323\104\062\065\011\142\004
+\222\026\020\330\236\047\107\373\073\041\343\370\353\035\133\002
+\003\001\000\001\243\201\260\060\201\255\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\013\006\003\125
+\035\017\004\004\003\002\001\006\060\035\006\003\125\035\016\004
+\026\004\024\032\204\142\274\110\114\063\045\004\324\356\320\366
+\003\304\031\106\321\224\153\060\156\006\003\125\035\043\004\147
+\060\145\200\024\032\204\142\274\110\114\063\045\004\324\356\320
+\366\003\304\031\106\321\224\153\241\111\244\107\060\105\061\013
+\060\011\006\003\125\004\006\023\002\102\115\061\031\060\027\006
+\003\125\004\012\023\020\121\165\157\126\141\144\151\163\040\114
+\151\155\151\164\145\144\061\033\060\031\006\003\125\004\003\023
+\022\121\165\157\126\141\144\151\163\040\122\157\157\164\040\103
+\101\040\062\202\002\005\011\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\003\202\002\001\000\076\012\026\115\237
+\006\133\250\256\161\135\057\005\057\147\346\023\105\203\304\066
+\366\363\300\046\014\015\265\107\144\135\370\264\162\311\106\245
+\003\030\047\125\211\170\175\166\352\226\064\200\027\040\334\347
+\203\370\215\374\007\270\332\137\115\056\147\262\204\375\331\104
+\374\167\120\201\346\174\264\311\015\013\162\123\370\166\007\007
+\101\107\226\014\373\340\202\046\223\125\214\376\042\037\140\145
+\174\137\347\046\263\367\062\220\230\120\324\067\161\125\366\222
+\041\170\367\225\171\372\370\055\046\207\146\126\060\167\246\067
+\170\063\122\020\130\256\077\141\216\362\152\261\357\030\176\112
+\131\143\312\215\242\126\325\247\057\274\126\037\317\071\301\342
+\373\012\250\025\054\175\115\172\143\306\154\227\104\074\322\157
+\303\112\027\012\370\220\322\127\242\031\121\245\055\227\101\332
+\007\117\251\120\332\220\215\224\106\341\076\360\224\375\020\000
+\070\365\073\350\100\341\264\156\126\032\040\314\157\130\215\355
+\056\105\217\326\351\223\077\347\261\054\337\072\326\042\214\334
+\204\273\042\157\320\370\344\306\071\351\004\210\074\303\272\353
+\125\172\155\200\231\044\365\154\001\373\370\227\260\224\133\353
+\375\322\157\361\167\150\015\065\144\043\254\270\125\241\003\321
+\115\102\031\334\370\165\131\126\243\371\250\111\171\370\257\016
+\271\021\240\174\267\152\355\064\320\266\046\142\070\032\207\014
+\370\350\375\056\323\220\177\007\221\052\035\326\176\134\205\203
+\231\260\070\010\077\351\136\371\065\007\344\311\142\156\127\177
+\247\120\225\367\272\310\233\346\216\242\001\305\326\146\277\171
+\141\363\074\034\341\271\202\134\135\240\303\351\330\110\275\031
+\242\021\024\031\156\262\206\033\150\076\110\067\032\210\267\135
+\226\136\234\307\357\047\142\010\342\221\031\134\322\361\041\335
+\272\027\102\202\227\161\201\123\061\251\237\366\175\142\277\162
+\341\243\223\035\314\212\046\132\011\070\320\316\327\015\200\026
+\264\170\245\072\207\114\215\212\245\325\106\227\362\054\020\271
+\274\124\042\300\001\120\151\103\236\364\262\357\155\370\354\332
+\361\343\261\357\337\221\217\124\052\013\045\301\046\031\304\122
+\020\005\145\325\202\020\352\302\061\315\056
+END
+
+# Trust for Certificate "QuoVadis Root CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\312\072\373\317\022\100\066\113\104\262\026\040\210\200\110\071
+\031\223\174\367
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\136\071\173\335\370\272\354\202\351\254\142\272\014\124\000\053
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\005\011
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "QuoVadis Root CA 3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA 3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\005\306
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\006\235\060\202\004\205\240\003\002\001\002\002\002\005
+\306\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\063\060\036\027\015\060\066\061\061\062
+\064\061\071\061\061\062\063\132\027\015\063\061\061\061\062\064
+\061\071\060\066\064\064\132\060\105\061\013\060\011\006\003\125
+\004\006\023\002\102\115\061\031\060\027\006\003\125\004\012\023
+\020\121\165\157\126\141\144\151\163\040\114\151\155\151\164\145
+\144\061\033\060\031\006\003\125\004\003\023\022\121\165\157\126
+\141\144\151\163\040\122\157\157\164\040\103\101\040\063\060\202
+\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\314
+\127\102\026\124\234\346\230\323\323\115\356\376\355\307\237\103
+\071\112\145\263\350\026\210\064\333\015\131\221\164\317\222\270
+\004\100\255\002\113\061\253\274\215\221\150\330\040\016\032\001
+\342\032\173\116\027\135\342\212\267\077\231\032\315\353\141\253
+\302\145\246\037\267\267\275\267\217\374\375\160\217\013\240\147
+\276\001\242\131\317\161\346\017\051\166\377\261\126\171\105\053
+\037\236\172\124\350\243\051\065\150\244\001\117\017\244\056\067
+\357\033\277\343\217\020\250\162\253\130\127\347\124\206\310\311
+\363\133\332\054\332\135\216\156\074\243\076\332\373\202\345\335
+\362\134\262\005\063\157\212\066\316\320\023\116\377\277\112\014
+\064\114\246\303\041\275\120\004\125\353\261\273\235\373\105\036
+\144\025\336\125\001\214\002\166\265\313\241\077\102\151\274\057
+\275\150\103\026\126\211\052\067\141\221\375\246\256\116\300\313
+\024\145\224\067\113\222\006\357\004\320\310\234\210\333\013\173
+\201\257\261\075\052\304\145\072\170\266\356\334\200\261\322\323
+\231\234\072\356\153\132\153\263\215\267\325\316\234\302\276\245
+\113\057\026\261\236\150\073\006\157\256\175\237\370\336\354\314
+\051\247\230\243\045\103\057\357\361\137\046\341\210\115\370\136
+\156\327\331\024\156\031\063\151\247\073\204\211\223\304\123\125
+\023\241\121\170\100\370\270\311\242\356\173\272\122\102\203\236
+\024\355\005\122\132\131\126\247\227\374\235\077\012\051\330\334
+\117\221\016\023\274\336\225\244\337\213\231\276\254\233\063\210
+\357\265\201\257\033\306\042\123\310\366\307\356\227\024\260\305
+\174\170\122\310\360\316\156\167\140\204\246\351\052\166\040\355
+\130\001\027\060\223\351\032\213\340\163\143\331\152\222\224\111
+\116\264\255\112\205\304\243\042\060\374\011\355\150\042\163\246
+\210\014\125\041\130\305\341\072\237\052\335\312\341\220\340\331
+\163\253\154\200\270\350\013\144\223\240\234\214\031\377\263\322
+\014\354\221\046\207\212\263\242\341\160\217\054\012\345\315\155
+\150\121\353\332\077\005\177\213\062\346\023\134\153\376\137\100
+\342\042\310\264\264\144\117\326\272\175\110\076\250\151\014\327
+\273\206\161\311\163\270\077\073\235\045\113\332\377\100\353\002
+\003\001\000\001\243\202\001\225\060\202\001\221\060\017\006\003
+\125\035\023\001\001\377\004\005\060\003\001\001\377\060\201\341
+\006\003\125\035\040\004\201\331\060\201\326\060\201\323\006\011
+\053\006\001\004\001\276\130\000\003\060\201\305\060\201\223\006
+\010\053\006\001\005\005\007\002\002\060\201\206\032\201\203\101
+\156\171\040\165\163\145\040\157\146\040\164\150\151\163\040\103
+\145\162\164\151\146\151\143\141\164\145\040\143\157\156\163\164
+\151\164\165\164\145\163\040\141\143\143\145\160\164\141\156\143
+\145\040\157\146\040\164\150\145\040\121\165\157\126\141\144\151
+\163\040\122\157\157\164\040\103\101\040\063\040\103\145\162\164
+\151\146\151\143\141\164\145\040\120\157\154\151\143\171\040\057
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\120
+\162\141\143\164\151\143\145\040\123\164\141\164\145\155\145\156
+\164\056\060\055\006\010\053\006\001\005\005\007\002\001\026\041
+\150\164\164\160\072\057\057\167\167\167\056\161\165\157\166\141
+\144\151\163\147\154\157\142\141\154\056\143\157\155\057\143\160
+\163\060\013\006\003\125\035\017\004\004\003\002\001\006\060\035
+\006\003\125\035\016\004\026\004\024\362\300\023\340\202\103\076
+\373\356\057\147\062\226\065\134\333\270\313\002\320\060\156\006
+\003\125\035\043\004\147\060\145\200\024\362\300\023\340\202\103
+\076\373\356\057\147\062\226\065\134\333\270\313\002\320\241\111
+\244\107\060\105\061\013\060\011\006\003\125\004\006\023\002\102
+\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126
+\141\144\151\163\040\114\151\155\151\164\145\144\061\033\060\031
+\006\003\125\004\003\023\022\121\165\157\126\141\144\151\163\040
+\122\157\157\164\040\103\101\040\063\202\002\005\306\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002\001
+\000\117\255\240\054\114\372\300\362\157\367\146\125\253\043\064
+\356\347\051\332\303\133\266\260\203\331\320\320\342\041\373\363
+\140\247\073\135\140\123\047\242\233\366\010\042\052\347\277\240
+\162\345\234\044\152\061\261\220\172\047\333\204\021\211\047\246
+\167\132\070\327\277\254\206\374\356\135\203\274\006\306\321\167
+\153\017\155\044\057\113\172\154\247\007\226\312\343\204\237\255
+\210\213\035\253\026\215\133\146\027\331\026\364\213\200\322\335
+\370\262\166\303\374\070\023\252\014\336\102\151\053\156\363\074
+\353\200\047\333\365\246\104\015\237\132\125\131\013\325\015\122
+\110\305\256\237\362\057\200\305\352\062\120\065\022\227\056\301
+\341\377\361\043\210\121\070\237\362\146\126\166\347\017\121\227
+\245\122\014\115\111\121\225\066\075\277\242\113\014\020\035\206
+\231\114\252\363\162\021\223\344\352\366\233\332\250\135\247\115
+\267\236\002\256\163\000\310\332\043\003\350\371\352\031\164\142
+\000\224\313\042\040\276\224\247\131\265\202\152\276\231\171\172
+\251\362\112\044\122\367\164\375\272\116\346\250\035\002\156\261
+\015\200\104\301\256\323\043\067\137\273\205\174\053\222\056\350
+\176\245\213\335\231\341\277\047\157\055\135\252\173\207\376\012
+\335\113\374\216\365\046\344\156\160\102\156\063\354\061\236\173
+\223\301\344\311\151\032\075\300\153\116\042\155\356\253\130\115
+\306\320\101\301\053\352\117\022\207\136\353\105\330\154\365\230
+\002\323\240\330\125\212\006\231\031\242\240\167\321\060\236\254
+\314\165\356\203\365\260\142\071\317\154\127\342\114\322\221\013
+\016\165\050\033\232\277\375\032\103\361\312\167\373\073\217\141
+\270\151\050\026\102\004\136\160\052\034\041\330\217\341\275\043
+\133\055\164\100\222\331\143\031\015\163\335\151\274\142\107\274
+\340\164\053\262\353\175\276\101\033\265\300\106\305\241\042\313
+\137\116\301\050\222\336\030\272\325\052\050\273\021\213\027\223
+\230\231\140\224\134\043\317\132\047\227\136\013\005\006\223\067
+\036\073\151\066\353\251\236\141\035\217\062\332\216\014\326\164
+\076\173\011\044\332\001\167\107\304\073\315\064\214\231\365\312
+\341\045\141\063\262\131\033\342\156\327\067\127\266\015\251\022
+\332
+END
+
+# Trust for Certificate "QuoVadis Root CA 3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "QuoVadis Root CA 3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\037\111\024\367\330\164\225\035\335\256\002\300\276\375\072\055
+\202\165\121\205
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\061\205\074\142\224\227\143\271\252\375\211\116\257\157\340\317
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061
+\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144
+\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003
+\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157
+\157\164\040\103\101\040\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\005\306
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Security Communication Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Security Communication Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\120\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\030\060\026\006\003\125\004\012\023\017\123\105\103\117\115\040
+\124\162\165\163\164\056\156\145\164\061\047\060\045\006\003\125
+\004\013\023\036\123\145\143\165\162\151\164\171\040\103\157\155
+\155\165\156\151\143\141\164\151\157\156\040\122\157\157\164\103
+\101\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\120\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\030\060\026\006\003\125\004\012\023\017\123\105\103\117\115\040
+\124\162\165\163\164\056\156\145\164\061\047\060\045\006\003\125
+\004\013\023\036\123\145\143\165\162\151\164\171\040\103\157\155
+\155\165\156\151\143\141\164\151\157\156\040\122\157\157\164\103
+\101\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\132\060\202\002\102\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\120\061\013\060\011\006\003\125\004\006\023\002\112\120\061\030
+\060\026\006\003\125\004\012\023\017\123\105\103\117\115\040\124
+\162\165\163\164\056\156\145\164\061\047\060\045\006\003\125\004
+\013\023\036\123\145\143\165\162\151\164\171\040\103\157\155\155
+\165\156\151\143\141\164\151\157\156\040\122\157\157\164\103\101
+\061\060\036\027\015\060\063\060\071\063\060\060\064\062\060\064
+\071\132\027\015\062\063\060\071\063\060\060\064\062\060\064\071
+\132\060\120\061\013\060\011\006\003\125\004\006\023\002\112\120
+\061\030\060\026\006\003\125\004\012\023\017\123\105\103\117\115
+\040\124\162\165\163\164\056\156\145\164\061\047\060\045\006\003
+\125\004\013\023\036\123\145\143\165\162\151\164\171\040\103\157
+\155\155\165\156\151\143\141\164\151\157\156\040\122\157\157\164
+\103\101\061\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\263\263\376\177\323\155\261\357\026\174\127\245
+\014\155\166\212\057\113\277\144\373\114\356\212\360\363\051\174
+\365\377\356\052\340\351\351\272\133\144\042\232\232\157\054\072
+\046\151\121\005\231\046\334\325\034\152\161\306\232\175\036\235
+\335\174\154\306\214\147\147\112\076\370\161\260\031\047\251\011
+\014\246\225\277\113\214\014\372\125\230\073\330\350\042\241\113
+\161\070\171\254\227\222\151\263\211\176\352\041\150\006\230\024
+\226\207\322\141\066\274\155\047\126\236\127\356\300\300\126\375
+\062\317\244\331\216\302\043\327\215\250\363\330\045\254\227\344
+\160\070\364\266\072\264\235\073\227\046\103\243\241\274\111\131
+\162\114\043\060\207\001\130\366\116\276\034\150\126\146\257\315
+\101\135\310\263\115\052\125\106\253\037\332\036\342\100\075\333
+\315\175\271\222\200\234\067\335\014\226\144\235\334\042\367\144
+\213\337\141\336\025\224\122\025\240\175\122\311\113\250\041\311
+\306\261\355\313\303\225\140\321\017\360\253\160\370\337\313\115
+\176\354\326\372\253\331\275\177\124\362\245\351\171\372\331\326
+\166\044\050\163\002\003\001\000\001\243\077\060\075\060\035\006
+\003\125\035\016\004\026\004\024\240\163\111\231\150\334\205\133
+\145\343\233\050\057\127\237\275\063\274\007\110\060\013\006\003
+\125\035\017\004\004\003\002\001\006\060\017\006\003\125\035\023
+\001\001\377\004\005\060\003\001\001\377\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\150\100
+\251\250\273\344\117\135\171\263\005\265\027\263\140\023\353\306
+\222\135\340\321\323\152\376\373\276\233\155\277\307\005\155\131
+\040\304\034\360\267\332\204\130\002\143\372\110\026\357\117\245
+\013\367\112\230\362\077\236\033\255\107\153\143\316\010\107\353
+\122\077\170\234\257\115\256\370\325\117\317\232\230\052\020\101
+\071\122\304\335\331\233\016\357\223\001\256\262\056\312\150\102
+\044\102\154\260\263\072\076\315\351\332\110\304\025\313\351\371
+\007\017\222\120\111\212\335\061\227\137\311\351\067\252\073\131
+\145\227\224\062\311\263\237\076\072\142\130\305\111\255\142\016
+\161\245\062\252\057\306\211\166\103\100\023\023\147\075\242\124
+\045\020\313\361\072\362\331\372\333\111\126\273\246\376\247\101
+\065\303\340\210\141\311\210\307\337\066\020\042\230\131\352\260
+\112\373\126\026\163\156\254\115\367\042\241\117\255\035\172\055
+\105\047\345\060\301\136\362\332\023\313\045\102\121\225\107\003
+\214\154\041\314\164\102\355\123\377\063\213\217\017\127\001\026
+\057\317\246\356\311\160\042\024\275\375\276\154\013\003
+END
+
+# Trust for Certificate "Security Communication Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Security Communication Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\066\261\053\111\371\201\236\327\114\236\274\070\017\306\126\217
+\135\254\262\367
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\361\274\143\152\124\340\265\047\365\315\347\032\343\115\156\112
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\120\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\030\060\026\006\003\125\004\012\023\017\123\105\103\117\115\040
+\124\162\165\163\164\056\156\145\164\061\047\060\045\006\003\125
+\004\013\023\036\123\145\143\165\162\151\164\171\040\103\157\155
+\155\165\156\151\143\141\164\151\157\156\040\122\157\157\164\103
+\101\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Sonera Class 1 Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Sonera Class 1 Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\061\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\061\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\044
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\040\060\202\002\010\240\003\002\001\002\002\001\044
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061\017
+\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141\061
+\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162\141
+\040\103\154\141\163\163\061\040\103\101\060\036\027\015\060\061
+\060\064\060\066\061\060\064\071\061\063\132\027\015\062\061\060
+\064\060\066\061\060\064\071\061\063\132\060\071\061\013\060\011
+\006\003\125\004\006\023\002\106\111\061\017\060\015\006\003\125
+\004\012\023\006\123\157\156\145\162\141\061\031\060\027\006\003
+\125\004\003\023\020\123\157\156\145\162\141\040\103\154\141\163
+\163\061\040\103\101\060\202\001\042\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001
+\012\002\202\001\001\000\265\211\037\053\117\147\012\171\377\305
+\036\370\177\074\355\321\176\332\260\315\155\057\066\254\064\306
+\333\331\144\027\010\143\060\063\042\212\114\356\216\273\017\015
+\102\125\311\235\056\245\357\367\247\214\303\253\271\227\313\216
+\357\077\025\147\250\202\162\143\123\017\101\214\175\020\225\044
+\241\132\245\006\372\222\127\235\372\245\001\362\165\351\037\274
+\126\046\122\116\170\031\145\130\125\003\130\300\024\256\214\174
+\125\137\160\133\167\043\006\066\227\363\044\265\232\106\225\344
+\337\015\013\005\105\345\321\362\035\202\273\306\023\340\376\252
+\172\375\151\060\224\363\322\105\205\374\362\062\133\062\336\350
+\154\135\037\313\244\042\164\260\200\216\135\224\367\006\000\113
+\251\324\136\056\065\120\011\363\200\227\364\014\027\256\071\330
+\137\315\063\301\034\312\211\302\042\367\105\022\355\136\022\223
+\235\143\253\202\056\271\353\102\101\104\313\112\032\000\202\015
+\236\371\213\127\076\114\307\027\355\054\213\162\063\137\162\172
+\070\126\325\346\331\256\005\032\035\165\105\261\313\245\045\034
+\022\127\066\375\042\067\002\003\001\000\001\243\063\060\061\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\021\006\003\125\035\016\004\012\004\010\107\342\014\213\366
+\123\210\122\060\013\006\003\125\035\017\004\004\003\002\001\006
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\213\032\262\311\135\141\264\341\271\053\271\123
+\321\262\205\235\167\216\026\356\021\075\333\302\143\331\133\227
+\145\373\022\147\330\052\134\266\253\345\136\303\267\026\057\310
+\350\253\035\212\375\253\032\174\325\137\143\317\334\260\335\167
+\271\250\346\322\042\070\207\007\024\331\377\276\126\265\375\007
+\016\074\125\312\026\314\247\246\167\067\373\333\134\037\116\131
+\006\207\243\003\103\365\026\253\267\204\275\116\357\237\061\067
+\360\106\361\100\266\321\014\245\144\370\143\136\041\333\125\116
+\117\061\166\234\020\141\216\266\123\072\243\021\276\257\155\174
+\036\275\256\055\342\014\151\307\205\123\150\242\141\272\305\076
+\264\171\124\170\236\012\307\002\276\142\321\021\202\113\145\057
+\221\132\302\250\207\261\126\150\224\171\371\045\367\301\325\256
+\032\270\273\075\217\251\212\070\025\367\163\320\132\140\321\200
+\260\360\334\325\120\315\116\356\222\110\151\355\262\043\036\060
+\314\310\224\310\266\365\073\206\177\077\246\056\237\366\076\054
+\265\222\226\076\337\054\223\212\377\201\214\017\017\131\041\031
+\127\275\125\232
+END
+
+# Trust for Certificate "Sonera Class 1 Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Sonera Class 1 Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\007\107\042\001\231\316\164\271\174\260\075\171\262\144\242\310
+\125\351\063\377
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\063\267\204\365\137\047\327\150\047\336\024\336\022\052\355\157
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\061\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\044
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Sonera Class 2 Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Sonera Class 2 Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\062\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\062\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\035
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\040\060\202\002\010\240\003\002\001\002\002\001\035
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061\017
+\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141\061
+\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162\141
+\040\103\154\141\163\163\062\040\103\101\060\036\027\015\060\061
+\060\064\060\066\060\067\062\071\064\060\132\027\015\062\061\060
+\064\060\066\060\067\062\071\064\060\132\060\071\061\013\060\011
+\006\003\125\004\006\023\002\106\111\061\017\060\015\006\003\125
+\004\012\023\006\123\157\156\145\162\141\061\031\060\027\006\003
+\125\004\003\023\020\123\157\156\145\162\141\040\103\154\141\163
+\163\062\040\103\101\060\202\001\042\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001
+\012\002\202\001\001\000\220\027\112\065\235\312\360\015\226\307
+\104\372\026\067\374\110\275\275\177\200\055\065\073\341\157\250
+\147\251\277\003\034\115\214\157\062\107\325\101\150\244\023\004
+\301\065\014\232\204\103\374\134\035\377\211\263\350\027\030\315
+\221\137\373\211\343\352\277\116\135\174\033\046\323\165\171\355
+\346\204\343\127\345\255\051\304\364\072\050\347\245\173\204\066
+\151\263\375\136\166\275\243\055\231\323\220\116\043\050\175\030
+\143\361\124\073\046\235\166\133\227\102\262\377\256\360\116\354
+\335\071\225\116\203\006\177\347\111\100\310\305\001\262\124\132
+\146\035\075\374\371\351\074\012\236\201\270\160\360\001\213\344
+\043\124\174\310\256\370\220\036\000\226\162\324\124\317\141\043
+\274\352\373\235\002\225\321\266\271\161\072\151\010\077\017\264
+\341\102\307\210\365\077\230\250\247\272\034\340\161\161\357\130
+\127\201\120\172\134\153\164\106\016\203\003\230\303\216\250\156
+\362\166\062\156\047\203\302\163\363\334\030\350\264\223\352\165
+\104\153\004\140\040\161\127\207\235\363\276\240\220\043\075\212
+\044\341\332\041\333\303\002\003\001\000\001\243\063\060\061\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\021\006\003\125\035\016\004\012\004\010\112\240\252\130\204
+\323\136\074\060\013\006\003\125\035\017\004\004\003\002\001\006
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\132\316\207\371\026\162\025\127\113\035\331\233
+\347\242\046\060\354\223\147\337\326\055\322\064\257\367\070\245
+\316\253\026\271\253\057\174\065\313\254\320\017\264\114\053\374
+\200\357\153\214\221\137\066\166\367\333\263\033\031\352\364\262
+\021\375\141\161\104\277\050\263\072\035\277\263\103\350\237\277
+\334\061\010\161\260\235\215\326\064\107\062\220\306\145\044\367
+\240\112\174\004\163\217\071\157\027\214\162\265\275\113\310\172
+\370\173\203\303\050\116\234\011\352\147\077\262\147\004\033\303
+\024\332\370\347\111\044\221\320\035\152\372\141\071\357\153\347
+\041\165\006\007\330\022\264\041\040\160\102\161\201\332\074\232
+\066\276\246\133\015\152\154\232\037\221\173\371\371\357\102\272
+\116\116\236\314\014\215\224\334\331\105\234\136\354\102\120\143
+\256\364\135\304\261\022\334\312\073\250\056\235\024\132\005\165
+\267\354\327\143\342\272\065\266\004\010\221\350\332\235\234\366
+\146\265\030\254\012\246\124\046\064\063\322\033\301\324\177\032
+\072\216\013\252\062\156\333\374\117\045\237\331\062\307\226\132
+\160\254\337\114
+END
+
+# Trust for Certificate "Sonera Class 2 Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Sonera Class 2 Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\067\367\155\346\007\174\220\305\261\076\223\032\267\101\020\264
+\362\344\232\047
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\243\354\165\017\056\210\337\372\110\001\116\013\134\110\157\373
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\071\061\013\060\011\006\003\125\004\006\023\002\106\111\061
+\017\060\015\006\003\125\004\012\023\006\123\157\156\145\162\141
+\061\031\060\027\006\003\125\004\003\023\020\123\157\156\145\162
+\141\040\103\154\141\163\163\062\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\035
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Staat der Nederlanden Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Staat der Nederlanden Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\125\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\036\060\034\006\003\125\004\012\023\025\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061
+\046\060\044\006\003\125\004\003\023\035\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040
+\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\125\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\036\060\034\006\003\125\004\012\023\025\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061
+\046\060\044\006\003\125\004\003\023\035\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\000\230\226\212
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\272\060\202\002\242\240\003\002\001\002\002\004\000
+\230\226\212\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\125\061\013\060\011\006\003\125\004\006\023\002\116
+\114\061\036\060\034\006\003\125\004\012\023\025\123\164\141\141
+\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145
+\156\061\046\060\044\006\003\125\004\003\023\035\123\164\141\141
+\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145
+\156\040\122\157\157\164\040\103\101\060\036\027\015\060\062\061
+\062\061\067\060\071\062\063\064\071\132\027\015\061\065\061\062
+\061\066\060\071\061\065\063\070\132\060\125\061\013\060\011\006
+\003\125\004\006\023\002\116\114\061\036\060\034\006\003\125\004
+\012\023\025\123\164\141\141\164\040\144\145\162\040\116\145\144
+\145\162\154\141\156\144\145\156\061\046\060\044\006\003\125\004
+\003\023\035\123\164\141\141\164\040\144\145\162\040\116\145\144
+\145\162\154\141\156\144\145\156\040\122\157\157\164\040\103\101
+\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001
+\000\230\322\265\121\021\172\201\246\024\230\161\155\276\314\347
+\023\033\326\047\016\172\263\152\030\034\266\141\132\325\141\011
+\277\336\220\023\307\147\356\335\363\332\305\014\022\236\065\125
+\076\054\047\210\100\153\367\334\335\042\141\365\302\307\016\365
+\366\325\166\123\115\217\214\274\030\166\067\205\235\350\312\111
+\307\322\117\230\023\011\242\076\042\210\234\177\326\362\020\145
+\264\356\137\030\325\027\343\370\305\375\342\235\242\357\123\016
+\205\167\242\017\341\060\107\356\000\347\063\175\104\147\032\013
+\121\350\213\240\236\120\230\150\064\122\037\056\155\001\362\140
+\105\362\061\353\251\061\150\051\273\172\101\236\306\031\177\224
+\264\121\071\003\177\262\336\247\062\233\264\107\216\157\264\112
+\256\345\257\261\334\260\033\141\274\231\162\336\344\211\267\172
+\046\135\332\063\111\133\122\234\016\365\212\255\303\270\075\350
+\006\152\302\325\052\013\154\173\204\275\126\005\313\206\145\222
+\354\104\053\260\216\271\334\160\013\106\332\255\274\143\210\071
+\372\333\152\376\043\372\274\344\110\364\147\053\152\021\020\041
+\111\002\003\001\000\001\243\201\221\060\201\216\060\014\006\003
+\125\035\023\004\005\060\003\001\001\377\060\117\006\003\125\035
+\040\004\110\060\106\060\104\006\004\125\035\040\000\060\074\060
+\072\006\010\053\006\001\005\005\007\002\001\026\056\150\164\164
+\160\072\057\057\167\167\167\056\160\153\151\157\166\145\162\150
+\145\151\144\056\156\154\057\160\157\154\151\143\151\145\163\057
+\162\157\157\164\055\160\157\154\151\143\171\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
+\035\016\004\026\004\024\250\175\353\274\143\244\164\023\164\000
+\354\226\340\323\064\301\054\277\154\370\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\005\204
+\207\125\164\066\141\301\273\321\324\306\025\250\023\264\237\244
+\376\273\356\025\264\057\006\014\051\362\250\222\244\141\015\374
+\253\134\010\133\121\023\053\115\302\052\141\310\370\011\130\374
+\055\002\262\071\175\231\146\201\277\156\134\225\105\040\154\346
+\171\247\321\330\034\051\374\302\040\047\121\310\361\174\135\064
+\147\151\205\021\060\306\000\322\327\363\323\174\266\360\061\127
+\050\022\202\163\351\063\057\246\125\264\013\221\224\107\234\372
+\273\172\102\062\350\256\176\055\310\274\254\024\277\331\017\331
+\133\374\301\371\172\225\341\175\176\226\374\161\260\302\114\310
+\337\105\064\311\316\015\362\234\144\010\320\073\303\051\305\262
+\355\220\004\301\261\051\221\305\060\157\301\251\162\063\314\376
+\135\026\027\054\021\151\347\176\376\305\203\010\337\274\334\042
+\072\056\040\151\043\071\126\140\147\220\213\056\166\071\373\021
+\210\227\366\174\275\113\270\040\026\147\005\215\342\073\301\162
+\077\224\225\067\307\135\271\236\330\223\241\027\217\377\014\146
+\025\301\044\174\062\174\003\035\073\241\130\105\062\223
+END
+
+# Trust for Certificate "Staat der Nederlanden Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Staat der Nederlanden Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\020\035\372\077\325\013\313\273\233\265\140\014\031\125\244\032
+\364\163\072\004
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\140\204\174\132\316\333\014\324\313\247\351\376\002\306\251\300
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\125\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\036\060\034\006\003\125\004\012\023\025\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061
+\046\060\044\006\003\125\004\003\023\035\123\164\141\141\164\040
+\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\000\230\226\212
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TDC Internet Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TDC Internet Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\103\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\025\060\023\006\003\125\004\012\023\014\124\104\103\040\111\156
+\164\145\162\156\145\164\061\035\060\033\006\003\125\004\013\023
+\024\124\104\103\040\111\156\164\145\162\156\145\164\040\122\157
+\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\103\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\025\060\023\006\003\125\004\012\023\014\124\104\103\040\111\156
+\164\145\162\156\145\164\061\035\060\033\006\003\125\004\013\023
+\024\124\104\103\040\111\156\164\145\162\156\145\164\040\122\157
+\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\072\314\245\114
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\053\060\202\003\023\240\003\002\001\002\002\004\072
+\314\245\114\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\103\061\013\060\011\006\003\125\004\006\023\002\104
+\113\061\025\060\023\006\003\125\004\012\023\014\124\104\103\040
+\111\156\164\145\162\156\145\164\061\035\060\033\006\003\125\004
+\013\023\024\124\104\103\040\111\156\164\145\162\156\145\164\040
+\122\157\157\164\040\103\101\060\036\027\015\060\061\060\064\060
+\065\061\066\063\063\061\067\132\027\015\062\061\060\064\060\065
+\061\067\060\063\061\067\132\060\103\061\013\060\011\006\003\125
+\004\006\023\002\104\113\061\025\060\023\006\003\125\004\012\023
+\014\124\104\103\040\111\156\164\145\162\156\145\164\061\035\060
+\033\006\003\125\004\013\023\024\124\104\103\040\111\156\164\145
+\162\156\145\164\040\122\157\157\164\040\103\101\060\202\001\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\001\017\000\060\202\001\012\002\202\001\001\000\304\270\100
+\274\221\325\143\037\327\231\240\213\014\100\036\164\267\110\235
+\106\214\002\262\340\044\137\360\031\023\247\067\203\153\135\307
+\216\371\204\060\316\032\073\372\373\316\213\155\043\306\303\156
+\146\237\211\245\337\340\102\120\147\372\037\154\036\364\320\005
+\326\277\312\326\116\344\150\140\154\106\252\034\135\143\341\007
+\206\016\145\000\247\056\246\161\306\274\271\201\250\072\175\032
+\322\371\321\254\113\313\316\165\257\334\173\372\201\163\324\374
+\272\275\101\210\324\164\263\371\136\070\072\074\103\250\322\225
+\116\167\155\023\014\235\217\170\001\267\132\040\037\003\067\065
+\342\054\333\113\053\054\170\271\111\333\304\320\307\234\234\344
+\212\040\011\041\026\126\146\377\005\354\133\343\360\317\253\044
+\044\136\303\177\160\172\022\304\322\265\020\240\266\041\341\215
+\170\151\125\104\151\365\312\226\034\064\205\027\045\167\342\366
+\057\047\230\170\375\171\006\072\242\326\132\103\301\377\354\004
+\073\356\023\357\323\130\132\377\222\353\354\256\332\362\067\003
+\107\101\266\227\311\055\012\101\042\273\273\346\247\002\003\001
+\000\001\243\202\001\045\060\202\001\041\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\145\006
+\003\125\035\037\004\136\060\134\060\132\240\130\240\126\244\124
+\060\122\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\025\060\023\006\003\125\004\012\023\014\124\104\103\040\111\156
+\164\145\162\156\145\164\061\035\060\033\006\003\125\004\013\023
+\024\124\104\103\040\111\156\164\145\162\156\145\164\040\122\157
+\157\164\040\103\101\061\015\060\013\006\003\125\004\003\023\004
+\103\122\114\061\060\053\006\003\125\035\020\004\044\060\042\200
+\017\062\060\060\061\060\064\060\065\061\066\063\063\061\067\132
+\201\017\062\060\062\061\060\064\060\065\061\067\060\063\061\067
+\132\060\013\006\003\125\035\017\004\004\003\002\001\006\060\037
+\006\003\125\035\043\004\030\060\026\200\024\154\144\001\307\375
+\205\155\254\310\332\236\120\010\205\010\265\074\126\250\120\060
+\035\006\003\125\035\016\004\026\004\024\154\144\001\307\375\205
+\155\254\310\332\236\120\010\205\010\265\074\126\250\120\060\014
+\006\003\125\035\023\004\005\060\003\001\001\377\060\035\006\011
+\052\206\110\206\366\175\007\101\000\004\020\060\016\033\010\126
+\065\056\060\072\064\056\060\003\002\004\220\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\116
+\103\314\321\335\035\020\033\006\177\267\244\372\323\331\115\373
+\043\237\043\124\133\346\213\057\004\050\213\265\047\155\211\241
+\354\230\151\334\347\215\046\203\005\171\164\354\264\271\243\227
+\301\065\000\375\025\332\071\201\072\225\061\220\336\227\351\206
+\250\231\167\014\345\132\240\204\377\022\026\254\156\270\215\303
+\173\222\302\254\056\320\175\050\354\266\363\140\070\151\157\076
+\330\004\125\076\236\314\125\322\272\376\273\107\004\327\012\331
+\026\012\064\051\365\130\023\325\117\317\217\126\113\263\036\356
+\323\230\171\332\010\036\014\157\270\370\026\047\357\302\157\075
+\366\243\113\076\016\344\155\154\333\073\101\022\233\275\015\107
+\043\177\074\112\320\257\300\257\366\357\033\265\025\304\353\203
+\304\011\137\164\213\331\021\373\302\126\261\074\370\160\312\064
+\215\103\100\023\214\375\231\003\124\171\306\056\352\206\241\366
+\072\324\011\274\364\274\146\314\075\130\320\127\111\012\356\045
+\342\101\356\023\371\233\070\064\321\000\365\176\347\224\035\374
+\151\003\142\270\231\005\005\075\153\170\022\275\260\157\145
+END
+
+# Trust for Certificate "TDC Internet Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TDC Internet Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\041\374\275\216\177\154\257\005\033\321\263\103\354\250\347\141
+\107\362\017\212
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\221\364\003\125\040\241\370\143\054\142\336\254\373\141\034\216
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\103\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\025\060\023\006\003\125\004\012\023\014\124\104\103\040\111\156
+\164\145\162\156\145\164\061\035\060\033\006\003\125\004\013\023
+\024\124\104\103\040\111\156\164\145\162\156\145\164\040\122\157
+\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\072\314\245\114
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TDC OCES Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TDC OCES Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\061\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\014\060\012\006\003\125\004\012\023\003\124\104\103\061\024\060
+\022\006\003\125\004\003\023\013\124\104\103\040\117\103\105\123
+\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\061\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\014\060\012\006\003\125\004\012\023\003\124\104\103\061\024\060
+\022\006\003\125\004\003\023\013\124\104\103\040\117\103\105\123
+\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\076\110\275\304
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\031\060\202\004\001\240\003\002\001\002\002\004\076
+\110\275\304\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\061\061\013\060\011\006\003\125\004\006\023\002\104
+\113\061\014\060\012\006\003\125\004\012\023\003\124\104\103\061
+\024\060\022\006\003\125\004\003\023\013\124\104\103\040\117\103
+\105\123\040\103\101\060\036\027\015\060\063\060\062\061\061\060
+\070\063\071\063\060\132\027\015\063\067\060\062\061\061\060\071
+\060\071\063\060\132\060\061\061\013\060\011\006\003\125\004\006
+\023\002\104\113\061\014\060\012\006\003\125\004\012\023\003\124
+\104\103\061\024\060\022\006\003\125\004\003\023\013\124\104\103
+\040\117\103\105\123\040\103\101\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\254\142\366\141\040\262\317
+\300\306\205\327\343\171\346\314\355\362\071\222\244\227\056\144
+\243\204\133\207\234\114\375\244\363\304\137\041\275\126\020\353
+\333\056\141\354\223\151\343\243\314\275\231\303\005\374\006\270
+\312\066\034\376\220\216\111\114\304\126\232\057\126\274\317\173
+\014\361\157\107\246\015\103\115\342\351\035\071\064\315\215\054
+\331\022\230\371\343\341\301\112\174\206\070\304\251\304\141\210
+\322\136\257\032\046\115\325\344\240\042\107\204\331\144\267\031
+\226\374\354\031\344\262\227\046\116\112\114\313\217\044\213\124
+\030\034\110\141\173\325\210\150\332\135\265\352\315\032\060\301
+\200\203\166\120\252\117\321\324\335\070\360\357\026\364\341\014
+\120\006\277\352\373\172\111\241\050\053\034\366\374\025\062\243
+\164\152\217\251\303\142\051\161\061\345\073\244\140\027\136\164
+\346\332\023\355\351\037\037\033\321\262\150\163\306\020\064\165
+\106\020\020\343\220\000\166\100\313\213\267\103\011\041\377\253
+\116\223\306\130\351\245\202\333\167\304\072\231\261\162\225\111
+\004\360\267\053\372\173\131\216\335\002\003\001\000\001\243\202
+\002\067\060\202\002\063\060\017\006\003\125\035\023\001\001\377
+\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001
+\377\004\004\003\002\001\006\060\201\354\006\003\125\035\040\004
+\201\344\060\201\341\060\201\336\006\010\052\201\120\201\051\001
+\001\001\060\201\321\060\057\006\010\053\006\001\005\005\007\002
+\001\026\043\150\164\164\160\072\057\057\167\167\167\056\143\145
+\162\164\151\146\151\153\141\164\056\144\153\057\162\145\160\157
+\163\151\164\157\162\171\060\201\235\006\010\053\006\001\005\005
+\007\002\002\060\201\220\060\012\026\003\124\104\103\060\003\002
+\001\001\032\201\201\103\145\162\164\151\146\151\153\141\164\145
+\162\040\146\162\141\040\144\145\156\156\145\040\103\101\040\165
+\144\163\164\145\144\145\163\040\165\156\144\145\162\040\117\111
+\104\040\061\056\062\056\062\060\070\056\061\066\071\056\061\056
+\061\056\061\056\040\103\145\162\164\151\146\151\143\141\164\145
+\163\040\146\162\157\155\040\164\150\151\163\040\103\101\040\141
+\162\145\040\151\163\163\165\145\144\040\165\156\144\145\162\040
+\117\111\104\040\061\056\062\056\062\060\070\056\061\066\071\056
+\061\056\061\056\061\056\060\021\006\011\140\206\110\001\206\370
+\102\001\001\004\004\003\002\000\007\060\201\201\006\003\125\035
+\037\004\172\060\170\060\110\240\106\240\104\244\102\060\100\061
+\013\060\011\006\003\125\004\006\023\002\104\113\061\014\060\012
+\006\003\125\004\012\023\003\124\104\103\061\024\060\022\006\003
+\125\004\003\023\013\124\104\103\040\117\103\105\123\040\103\101
+\061\015\060\013\006\003\125\004\003\023\004\103\122\114\061\060
+\054\240\052\240\050\206\046\150\164\164\160\072\057\057\143\162
+\154\056\157\143\145\163\056\143\145\162\164\151\146\151\153\141
+\164\056\144\153\057\157\143\145\163\056\143\162\154\060\053\006
+\003\125\035\020\004\044\060\042\200\017\062\060\060\063\060\062
+\061\061\060\070\063\071\063\060\132\201\017\062\060\063\067\060
+\062\061\061\060\071\060\071\063\060\132\060\037\006\003\125\035
+\043\004\030\060\026\200\024\140\265\205\354\126\144\176\022\031
+\047\147\035\120\025\113\163\256\073\371\022\060\035\006\003\125
+\035\016\004\026\004\024\140\265\205\354\126\144\176\022\031\047
+\147\035\120\025\113\163\256\073\371\022\060\035\006\011\052\206
+\110\206\366\175\007\101\000\004\020\060\016\033\010\126\066\056
+\060\072\064\056\060\003\002\004\220\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\202\001\001\000\012\272\046
+\046\106\323\163\250\011\363\153\013\060\231\375\212\341\127\172
+\021\323\270\224\327\011\020\156\243\261\070\003\321\266\362\103
+\101\051\142\247\162\330\373\174\005\346\061\160\047\124\030\116
+\212\174\116\345\321\312\214\170\210\317\033\323\220\213\346\043
+\370\013\016\063\103\175\234\342\012\031\217\311\001\076\164\135
+\164\311\213\034\003\345\030\310\001\114\077\313\227\005\135\230
+\161\246\230\157\266\174\275\067\177\276\341\223\045\155\157\360
+\012\255\027\030\341\003\274\007\051\310\255\046\350\370\141\360
+\375\041\011\176\232\216\251\150\175\110\142\162\275\000\352\001
+\231\270\006\202\121\201\116\361\365\264\221\124\271\043\172\000
+\232\237\135\215\340\074\144\271\032\022\222\052\307\202\104\162
+\071\334\342\074\306\330\125\365\025\116\310\005\016\333\306\320
+\142\246\354\025\264\265\002\202\333\254\214\242\201\360\233\231
+\061\365\040\040\250\210\141\012\007\237\224\374\320\327\033\314
+\056\027\363\004\047\166\147\353\124\203\375\244\220\176\006\075
+\004\243\103\055\332\374\013\142\352\057\137\142\123
+END
+
+# Trust for Certificate "TDC OCES Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TDC OCES Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\207\201\302\132\226\275\302\373\114\145\006\117\371\071\013\046
+\004\212\016\001
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\223\177\220\034\355\204\147\027\244\145\137\233\313\060\002\227
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\061\061\013\060\011\006\003\125\004\006\023\002\104\113\061
+\014\060\012\006\003\125\004\012\023\003\124\104\103\061\024\060
+\022\006\003\125\004\003\023\013\124\104\103\040\117\103\105\123
+\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\076\110\275\304
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "UTN DATACorp SGC Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN DATACorp SGC Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\223\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\033\060\031\006\003\125
+\004\003\023\022\125\124\116\040\055\040\104\101\124\101\103\157
+\162\160\040\123\107\103
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\223\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\033\060\031\006\003\125
+\004\003\023\022\125\124\116\040\055\040\104\101\124\101\103\157
+\162\160\040\123\107\103
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\041\264\021\323\052\150\006\251
+\255\151
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\136\060\202\003\106\240\003\002\001\002\002\020\104
+\276\014\213\120\000\041\264\021\323\052\150\006\251\255\151\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\223\061\013\060\011\006\003\125\004\006\023\002\125\123\061\013
+\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025\006
+\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145\040
+\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124
+\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030\150
+\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164\162
+\165\163\164\056\143\157\155\061\033\060\031\006\003\125\004\003
+\023\022\125\124\116\040\055\040\104\101\124\101\103\157\162\160
+\040\123\107\103\060\036\027\015\071\071\060\066\062\064\061\070
+\065\067\062\061\132\027\015\061\071\060\066\062\064\061\071\060
+\066\063\060\132\060\201\223\061\013\060\011\006\003\125\004\006
+\023\002\125\123\061\013\060\011\006\003\125\004\010\023\002\125
+\124\061\027\060\025\006\003\125\004\007\023\016\123\141\154\164
+\040\114\141\153\145\040\103\151\164\171\061\036\060\034\006\003
+\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122\125
+\123\124\040\116\145\164\167\157\162\153\061\041\060\037\006\003
+\125\004\013\023\030\150\164\164\160\072\057\057\167\167\167\056
+\165\163\145\162\164\162\165\163\164\056\143\157\155\061\033\060
+\031\006\003\125\004\003\023\022\125\124\116\040\055\040\104\101
+\124\101\103\157\162\160\040\123\107\103\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\337\356\130\020\242
+\053\156\125\304\216\277\056\106\011\347\340\010\017\056\053\172
+\023\224\033\275\366\266\200\216\145\005\223\000\036\274\257\342
+\017\216\031\015\022\107\354\254\255\243\372\056\160\370\336\156
+\373\126\102\025\236\056\134\357\043\336\041\271\005\166\047\031
+\017\117\326\303\234\264\276\224\031\143\362\246\021\012\353\123
+\110\234\276\362\051\073\026\350\032\240\114\246\311\364\030\131
+\150\300\160\362\123\000\300\136\120\202\245\126\157\066\371\112
+\340\104\206\240\115\116\326\107\156\111\112\313\147\327\246\304
+\005\271\216\036\364\374\377\315\347\066\340\234\005\154\262\063
+\042\025\320\264\340\314\027\300\262\300\364\376\062\077\051\052
+\225\173\330\362\247\116\017\124\174\241\015\200\263\011\003\301
+\377\134\335\136\232\076\274\256\274\107\212\152\256\161\312\037
+\261\052\270\137\102\005\013\354\106\060\321\162\013\312\351\126
+\155\365\357\337\170\276\141\272\262\245\256\004\114\274\250\254
+\151\025\227\275\357\353\264\214\277\065\370\324\303\321\050\016
+\134\072\237\160\030\063\040\167\304\242\257\002\003\001\000\001
+\243\201\253\060\201\250\060\013\006\003\125\035\017\004\004\003
+\002\001\306\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\123
+\062\321\263\317\177\372\340\361\240\135\205\116\222\322\236\105
+\035\264\117\060\075\006\003\125\035\037\004\066\060\064\060\062
+\240\060\240\056\206\054\150\164\164\160\072\057\057\143\162\154
+\056\165\163\145\162\164\162\165\163\164\056\143\157\155\057\125
+\124\116\055\104\101\124\101\103\157\162\160\123\107\103\056\143
+\162\154\060\052\006\003\125\035\045\004\043\060\041\006\010\053
+\006\001\005\005\007\003\001\006\012\053\006\001\004\001\202\067
+\012\003\003\006\011\140\206\110\001\206\370\102\004\001\060\015
+\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001
+\001\000\047\065\227\000\212\213\050\275\306\063\060\036\051\374
+\342\367\325\230\324\100\273\140\312\277\253\027\054\011\066\177
+\120\372\101\334\256\226\072\012\043\076\211\131\311\243\007\355
+\033\067\255\374\174\276\121\111\132\336\072\012\124\010\026\105
+\302\231\261\207\315\214\150\340\151\003\351\304\116\230\262\073
+\214\026\263\016\240\014\230\120\233\223\251\160\011\310\054\243
+\217\337\002\344\340\161\072\361\264\043\162\240\252\001\337\337
+\230\076\024\120\240\061\046\275\050\351\132\060\046\165\371\173
+\140\034\215\363\315\120\046\155\004\047\232\337\325\015\105\107
+\051\153\054\346\166\331\251\051\175\062\335\311\066\074\275\256
+\065\361\021\236\035\273\220\077\022\107\116\216\327\176\017\142
+\163\035\122\046\070\034\030\111\375\060\164\232\304\345\042\057
+\330\300\215\355\221\172\114\000\217\162\177\135\332\335\033\213
+\105\153\347\335\151\227\250\305\126\114\017\014\366\237\172\221
+\067\366\227\202\340\335\161\151\377\166\077\140\115\074\317\367
+\231\371\306\127\364\311\125\071\170\272\054\171\311\246\210\053
+\364\010
+END
+
+# Trust for Certificate "UTN DATACorp SGC Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN DATACorp SGC Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\130\021\237\016\022\202\207\352\120\375\331\207\105\157\117\170
+\334\372\326\324
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\263\245\076\167\041\155\254\112\300\311\373\325\101\075\312\006
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\223\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\033\060\031\006\003\125
+\004\003\023\022\125\124\116\040\055\040\104\101\124\101\103\157
+\162\160\040\123\107\103
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\041\264\021\323\052\150\006\251
+\255\151
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "UTN USERFirst Email Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Email Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\066\060\064\006\003\125
+\004\003\023\055\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\103\154\151\145\156\164\040\101\165\164\150\145\156\164
+\151\143\141\164\151\157\156\040\141\156\144\040\105\155\141\151
+\154
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\066\060\064\006\003\125
+\004\003\023\055\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\103\154\151\145\156\164\040\101\165\164\150\145\156\164
+\151\143\141\164\151\157\156\040\141\156\144\040\105\155\141\151
+\154
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\045\045\147
+\311\211
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\242\060\202\003\212\240\003\002\001\002\002\020\104
+\276\014\213\120\000\044\264\021\323\066\045\045\147\311\211\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\256\061\013\060\011\006\003\125\004\006\023\002\125\123\061\013
+\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025\006
+\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145\040
+\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124
+\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030\150
+\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164\162
+\165\163\164\056\143\157\155\061\066\060\064\006\003\125\004\003
+\023\055\125\124\116\055\125\123\105\122\106\151\162\163\164\055
+\103\154\151\145\156\164\040\101\165\164\150\145\156\164\151\143
+\141\164\151\157\156\040\141\156\144\040\105\155\141\151\154\060
+\036\027\015\071\071\060\067\060\071\061\067\062\070\065\060\132
+\027\015\061\071\060\067\060\071\061\067\063\066\065\070\132\060
+\201\256\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025
+\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145
+\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025
+\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145
+\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030
+\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164
+\162\165\163\164\056\143\157\155\061\066\060\064\006\003\125\004
+\003\023\055\125\124\116\055\125\123\105\122\106\151\162\163\164
+\055\103\154\151\145\156\164\040\101\165\164\150\145\156\164\151
+\143\141\164\151\157\156\040\141\156\144\040\105\155\141\151\154
+\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001
+\000\262\071\205\244\362\175\253\101\073\142\106\067\256\315\301
+\140\165\274\071\145\371\112\032\107\242\271\314\110\314\152\230
+\325\115\065\031\271\244\102\345\316\111\342\212\057\036\174\322
+\061\007\307\116\264\203\144\235\056\051\325\242\144\304\205\275
+\205\121\065\171\244\116\150\220\173\034\172\244\222\250\027\362
+\230\025\362\223\314\311\244\062\225\273\014\117\060\275\230\240
+\013\213\345\156\033\242\106\372\170\274\242\157\253\131\136\245
+\057\317\312\332\155\252\057\353\254\241\263\152\252\267\056\147
+\065\213\171\341\036\151\210\342\346\106\315\240\245\352\276\013
+\316\166\072\172\016\233\352\374\332\047\133\075\163\037\042\346
+\110\141\306\114\363\151\261\250\056\033\266\324\061\040\054\274
+\202\212\216\244\016\245\327\211\103\374\026\132\257\035\161\327
+\021\131\332\272\207\015\257\372\363\341\302\360\244\305\147\214
+\326\326\124\072\336\012\244\272\003\167\263\145\310\375\036\323
+\164\142\252\030\312\150\223\036\241\205\176\365\107\145\313\370
+\115\127\050\164\322\064\377\060\266\356\366\142\060\024\214\054
+\353\002\003\001\000\001\243\201\271\060\201\266\060\013\006\003
+\125\035\017\004\004\003\002\001\306\060\017\006\003\125\035\023
+\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035
+\016\004\026\004\024\211\202\147\175\304\235\046\160\000\113\264
+\120\110\174\336\075\256\004\156\175\060\130\006\003\125\035\037
+\004\121\060\117\060\115\240\113\240\111\206\107\150\164\164\160
+\072\057\057\143\162\154\056\165\163\145\162\164\162\165\163\164
+\056\143\157\155\057\125\124\116\055\125\123\105\122\106\151\162
+\163\164\055\103\154\151\145\156\164\101\165\164\150\145\156\164
+\151\143\141\164\151\157\156\141\156\144\105\155\141\151\154\056
+\143\162\154\060\035\006\003\125\035\045\004\026\060\024\006\010
+\053\006\001\005\005\007\003\002\006\010\053\006\001\005\005\007
+\003\004\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\001\001\000\261\155\141\135\246\032\177\174\253\112
+\344\060\374\123\157\045\044\306\312\355\342\061\134\053\016\356
+\356\141\125\157\004\076\317\071\336\305\033\111\224\344\353\040
+\114\264\346\236\120\056\162\331\215\365\252\243\263\112\332\126
+\034\140\227\200\334\202\242\255\112\275\212\053\377\013\011\264
+\306\327\040\004\105\344\315\200\001\272\272\053\156\316\252\327
+\222\376\344\257\353\364\046\035\026\052\177\154\060\225\067\057
+\063\022\254\177\335\307\321\021\214\121\230\262\320\243\221\320
+\255\366\237\236\203\223\036\035\102\270\106\257\153\146\360\233
+\177\352\343\003\002\345\002\121\301\252\325\065\235\162\100\003
+\211\272\061\035\305\020\150\122\236\337\242\205\305\134\010\246
+\170\346\123\117\261\350\267\323\024\236\223\246\303\144\343\254
+\176\161\315\274\237\351\003\033\314\373\351\254\061\301\257\174
+\025\164\002\231\303\262\107\246\302\062\141\327\307\157\110\044
+\121\047\241\325\207\125\362\173\217\230\075\026\236\356\165\266
+\370\320\216\362\363\306\256\050\133\247\360\363\066\027\374\303
+\005\323\312\003\112\124
+END
+
+# Trust for Certificate "UTN USERFirst Email Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Email Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\261\162\261\245\155\225\371\037\345\002\207\341\115\067\352\152
+\104\143\166\212
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\327\064\075\357\035\047\011\050\341\061\002\133\023\053\335\367
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\066\060\064\006\003\125
+\004\003\023\055\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\103\154\151\145\156\164\040\101\165\164\150\145\156\164
+\151\143\141\164\151\157\156\040\141\156\144\040\105\155\141\151
+\154
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\045\045\147
+\311\211
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "UTN USERFirst Hardware Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Hardware Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\227\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\037\060\035\006\003\125
+\004\003\023\026\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\110\141\162\144\167\141\162\145
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\227\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\037\060\035\006\003\125
+\004\003\023\026\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\110\141\162\144\167\141\162\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\052\376\145
+\012\375
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\164\060\202\003\134\240\003\002\001\002\002\020\104
+\276\014\213\120\000\044\264\021\323\066\052\376\145\012\375\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\227\061\013\060\011\006\003\125\004\006\023\002\125\123\061\013
+\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025\006
+\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145\040
+\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124
+\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030\150
+\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164\162
+\165\163\164\056\143\157\155\061\037\060\035\006\003\125\004\003
+\023\026\125\124\116\055\125\123\105\122\106\151\162\163\164\055
+\110\141\162\144\167\141\162\145\060\036\027\015\071\071\060\067
+\060\071\061\070\061\060\064\062\132\027\015\061\071\060\067\060
+\071\061\070\061\071\062\062\132\060\201\227\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\013\060\011\006\003\125\004
+\010\023\002\125\124\061\027\060\025\006\003\125\004\007\023\016
+\123\141\154\164\040\114\141\153\145\040\103\151\164\171\061\036
+\060\034\006\003\125\004\012\023\025\124\150\145\040\125\123\105
+\122\124\122\125\123\124\040\116\145\164\167\157\162\153\061\041
+\060\037\006\003\125\004\013\023\030\150\164\164\160\072\057\057
+\167\167\167\056\165\163\145\162\164\162\165\163\164\056\143\157
+\155\061\037\060\035\006\003\125\004\003\023\026\125\124\116\055
+\125\123\105\122\106\151\162\163\164\055\110\141\162\144\167\141
+\162\145\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\261\367\303\070\077\264\250\177\317\071\202\121\147
+\320\155\237\322\377\130\363\347\237\053\354\015\211\124\231\271
+\070\231\026\367\340\041\171\110\302\273\141\164\022\226\035\074
+\152\162\325\074\020\147\072\071\355\053\023\315\146\353\225\011
+\063\244\154\227\261\350\306\354\301\165\171\234\106\136\215\253
+\320\152\375\271\052\125\027\020\124\263\031\360\232\366\361\261
+\135\266\247\155\373\340\161\027\153\242\210\373\000\337\376\032
+\061\167\014\232\001\172\261\062\343\053\001\007\070\156\303\245
+\136\043\274\105\233\173\120\301\311\060\217\333\345\053\172\323
+\133\373\063\100\036\240\325\230\027\274\213\207\303\211\323\135
+\240\216\262\252\252\366\216\151\210\006\305\372\211\041\363\010
+\235\151\056\011\063\233\051\015\106\017\214\314\111\064\260\151
+\121\275\371\006\315\150\255\146\114\274\076\254\141\275\012\210
+\016\310\337\075\356\174\004\114\235\012\136\153\221\326\356\307
+\355\050\215\253\115\207\211\163\320\156\244\320\036\026\213\024
+\341\166\104\003\177\143\254\344\315\111\234\305\222\364\253\062
+\241\110\133\002\003\001\000\001\243\201\271\060\201\266\060\013
+\006\003\125\035\017\004\004\003\002\001\306\060\017\006\003\125
+\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003
+\125\035\016\004\026\004\024\241\162\137\046\033\050\230\103\225
+\135\007\067\325\205\226\235\113\322\303\105\060\104\006\003\125
+\035\037\004\075\060\073\060\071\240\067\240\065\206\063\150\164
+\164\160\072\057\057\143\162\154\056\165\163\145\162\164\162\165
+\163\164\056\143\157\155\057\125\124\116\055\125\123\105\122\106
+\151\162\163\164\055\110\141\162\144\167\141\162\145\056\143\162
+\154\060\061\006\003\125\035\045\004\052\060\050\006\010\053\006
+\001\005\005\007\003\001\006\010\053\006\001\005\005\007\003\005
+\006\010\053\006\001\005\005\007\003\006\006\010\053\006\001\005
+\005\007\003\007\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\003\202\001\001\000\107\031\017\336\164\306\231\227
+\257\374\255\050\136\165\216\353\055\147\356\116\173\053\327\014
+\377\366\336\313\125\242\012\341\114\124\145\223\140\153\237\022
+\234\255\136\203\054\353\132\256\300\344\055\364\000\143\035\270
+\300\154\362\317\111\273\115\223\157\006\246\012\042\262\111\142
+\010\116\377\310\310\024\262\210\026\135\347\001\344\022\225\345
+\105\064\263\213\151\275\317\264\205\217\165\121\236\175\072\070
+\072\024\110\022\306\373\247\073\032\215\015\202\100\007\350\004
+\010\220\241\211\313\031\120\337\312\034\001\274\035\004\031\173
+\020\166\227\073\356\220\220\312\304\016\037\026\156\165\357\063
+\370\323\157\133\036\226\343\340\164\167\164\173\212\242\156\055
+\335\166\326\071\060\202\360\253\234\122\362\052\307\257\111\136
+\176\307\150\345\202\201\310\152\047\371\047\210\052\325\130\120
+\225\037\360\073\034\127\273\175\024\071\142\053\232\311\224\222
+\052\243\042\014\377\211\046\175\137\043\053\107\327\025\035\251
+\152\236\121\015\052\121\236\201\371\324\073\136\160\022\177\020
+\062\234\036\273\235\370\146\250
+END
+
+# Trust for Certificate "UTN USERFirst Hardware Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Hardware Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\004\203\355\063\231\254\066\010\005\207\042\355\274\136\106\000
+\343\276\371\327
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\114\126\101\345\015\273\053\350\312\243\355\030\010\255\103\071
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\227\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\037\060\035\006\003\125
+\004\003\023\026\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\110\141\162\144\167\141\162\145
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\052\376\145
+\012\375
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "UTN USERFirst Object Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Object Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\225\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\035\060\033\006\003\125
+\004\003\023\024\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\117\142\152\145\143\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\225\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\035\060\033\006\003\125
+\004\003\023\024\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\117\142\152\145\143\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\055\340\263
+\137\033
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\146\060\202\003\116\240\003\002\001\002\002\020\104
+\276\014\213\120\000\044\264\021\323\066\055\340\263\137\033\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\225\061\013\060\011\006\003\125\004\006\023\002\125\123\061\013
+\060\011\006\003\125\004\010\023\002\125\124\061\027\060\025\006
+\003\125\004\007\023\016\123\141\154\164\040\114\141\153\145\040
+\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124
+\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164
+\167\157\162\153\061\041\060\037\006\003\125\004\013\023\030\150
+\164\164\160\072\057\057\167\167\167\056\165\163\145\162\164\162
+\165\163\164\056\143\157\155\061\035\060\033\006\003\125\004\003
+\023\024\125\124\116\055\125\123\105\122\106\151\162\163\164\055
+\117\142\152\145\143\164\060\036\027\015\071\071\060\067\060\071
+\061\070\063\061\062\060\132\027\015\061\071\060\067\060\071\061
+\070\064\060\063\066\132\060\201\225\061\013\060\011\006\003\125
+\004\006\023\002\125\123\061\013\060\011\006\003\125\004\010\023
+\002\125\124\061\027\060\025\006\003\125\004\007\023\016\123\141
+\154\164\040\114\141\153\145\040\103\151\164\171\061\036\060\034
+\006\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124
+\122\125\123\124\040\116\145\164\167\157\162\153\061\041\060\037
+\006\003\125\004\013\023\030\150\164\164\160\072\057\057\167\167
+\167\056\165\163\145\162\164\162\165\163\164\056\143\157\155\061
+\035\060\033\006\003\125\004\003\023\024\125\124\116\055\125\123
+\105\122\106\151\162\163\164\055\117\142\152\145\143\164\060\202
+\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005
+\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000\316
+\252\201\077\243\243\141\170\252\061\000\125\225\021\236\047\017
+\037\034\337\072\233\202\150\060\300\112\141\035\361\057\016\372
+\276\171\367\245\043\357\125\121\226\204\315\333\343\271\156\076
+\061\330\012\040\147\307\364\331\277\224\353\107\004\076\002\316
+\052\242\135\207\004\011\366\060\235\030\212\227\262\252\034\374
+\101\322\241\066\313\373\075\221\272\347\331\160\065\372\344\347
+\220\303\233\243\233\323\074\365\022\231\167\261\267\011\340\150
+\346\034\270\363\224\143\210\152\152\376\013\166\311\276\364\042
+\344\147\271\253\032\136\167\301\205\007\335\015\154\277\356\006
+\307\167\152\101\236\247\017\327\373\356\224\027\267\374\205\276
+\244\253\304\034\061\335\327\266\321\344\360\357\337\026\217\262
+\122\223\327\241\324\211\241\007\056\277\341\001\022\102\036\032
+\341\330\225\064\333\144\171\050\377\272\056\021\302\345\350\133
+\222\110\373\107\013\302\154\332\255\062\203\101\363\245\345\101
+\160\375\145\220\155\372\372\121\304\371\275\226\053\031\004\054
+\323\155\247\334\360\177\157\203\145\342\152\253\207\206\165\002
+\003\001\000\001\243\201\257\060\201\254\060\013\006\003\125\035
+\017\004\004\003\002\001\306\060\017\006\003\125\035\023\001\001
+\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004
+\026\004\024\332\355\144\164\024\234\024\074\253\335\231\251\275
+\133\050\115\213\074\311\330\060\102\006\003\125\035\037\004\073
+\060\071\060\067\240\065\240\063\206\061\150\164\164\160\072\057
+\057\143\162\154\056\165\163\145\162\164\162\165\163\164\056\143
+\157\155\057\125\124\116\055\125\123\105\122\106\151\162\163\164
+\055\117\142\152\145\143\164\056\143\162\154\060\051\006\003\125
+\035\045\004\042\060\040\006\010\053\006\001\005\005\007\003\003
+\006\010\053\006\001\005\005\007\003\010\006\012\053\006\001\004
+\001\202\067\012\003\004\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\001\001\000\010\037\122\261\067\104
+\170\333\375\316\271\332\225\226\230\252\125\144\200\265\132\100
+\335\041\245\305\301\363\137\054\114\310\107\132\151\352\350\360
+\065\065\364\320\045\363\310\246\244\207\112\275\033\261\163\010
+\275\324\303\312\266\065\273\131\206\167\061\315\247\200\024\256
+\023\357\374\261\110\371\153\045\045\055\121\266\054\155\105\301
+\230\310\212\126\135\076\356\103\116\076\153\047\216\320\072\113
+\205\013\137\323\355\152\247\165\313\321\132\207\057\071\165\023
+\132\162\260\002\201\237\276\360\017\204\124\040\142\154\151\324
+\341\115\306\015\231\103\001\015\022\226\214\170\235\277\120\242
+\261\104\252\152\317\027\172\317\157\017\324\370\044\125\137\360
+\064\026\111\146\076\120\106\311\143\161\070\061\142\270\142\271
+\363\123\255\154\265\053\242\022\252\031\117\011\332\136\347\223
+\306\216\024\010\376\360\060\200\030\240\206\205\115\310\175\327
+\213\003\376\156\325\367\235\026\254\222\054\240\043\345\234\221
+\122\037\224\337\027\224\163\303\263\301\301\161\005\040\000\170
+\275\023\122\035\250\076\315\000\037\310
+END
+
+# Trust for Certificate "UTN USERFirst Object Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "UTN USERFirst Object Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\341\055\373\113\101\327\331\303\053\060\121\113\254\035\201\330
+\070\136\055\106
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\247\362\344\026\006\101\021\120\060\153\234\343\264\234\260\311
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\225\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\013\060\011\006\003\125\004\010\023\002\125\124\061\027\060
+\025\006\003\125\004\007\023\016\123\141\154\164\040\114\141\153
+\145\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023
+\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116
+\145\164\167\157\162\153\061\041\060\037\006\003\125\004\013\023
+\030\150\164\164\160\072\057\057\167\167\167\056\165\163\145\162
+\164\162\165\163\164\056\143\157\155\061\035\060\033\006\003\125
+\004\003\023\024\125\124\116\055\125\123\105\122\106\151\162\163
+\164\055\117\142\152\145\143\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\276\014\213\120\000\044\264\021\323\066\055\340\263
+\137\033
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Camerfirma Chambers of Commerce Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Camerfirma Chambers of Commerce Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\042\060
+\040\006\003\125\004\003\023\031\103\150\141\155\142\145\162\163
+\040\157\146\040\103\157\155\155\145\162\143\145\040\122\157\157
+\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\042\060
+\040\006\003\125\004\003\023\031\103\150\141\155\142\145\162\163
+\040\157\146\040\103\157\155\155\145\162\143\145\040\122\157\157
+\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\275\060\202\003\245\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\177\061\013\060\011\006\003\125\004\006\023\002\105\125\061\047
+\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155\145
+\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101\070
+\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004\013
+\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150\141
+\155\142\145\162\163\151\147\156\056\157\162\147\061\042\060\040
+\006\003\125\004\003\023\031\103\150\141\155\142\145\162\163\040
+\157\146\040\103\157\155\155\145\162\143\145\040\122\157\157\164
+\060\036\027\015\060\063\060\071\063\060\061\066\061\063\064\063
+\132\027\015\063\067\060\071\063\060\061\066\061\063\064\064\132
+\060\177\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\042\060
+\040\006\003\125\004\003\023\031\103\150\141\155\142\145\162\163
+\040\157\146\040\103\157\155\155\145\162\143\145\040\122\157\157
+\164\060\202\001\040\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\015\000\060\202\001\010\002\202\001
+\001\000\267\066\125\345\245\135\030\060\340\332\211\124\221\374
+\310\307\122\370\057\120\331\357\261\165\163\145\107\175\033\133
+\272\165\305\374\241\210\044\372\057\355\312\010\112\071\124\304
+\121\172\265\332\140\352\070\074\201\262\313\361\273\331\221\043
+\077\110\001\160\165\251\005\052\255\037\161\363\311\124\075\035
+\006\152\100\076\263\014\205\356\134\033\171\302\142\304\270\066
+\216\065\135\001\014\043\004\107\065\252\233\140\116\240\146\075
+\313\046\012\234\100\241\364\135\230\277\161\253\245\000\150\052
+\355\203\172\017\242\024\265\324\042\263\200\260\074\014\132\121
+\151\055\130\030\217\355\231\236\361\256\342\225\346\366\107\250
+\326\014\017\260\130\130\333\303\146\067\236\233\221\124\063\067
+\322\224\034\152\110\311\311\362\245\332\245\014\043\367\043\016
+\234\062\125\136\161\234\204\005\121\232\055\375\346\116\052\064
+\132\336\312\100\067\147\014\124\041\125\167\332\012\014\314\227
+\256\200\334\224\066\112\364\076\316\066\023\036\123\344\254\116
+\072\005\354\333\256\162\234\070\213\320\071\073\211\012\076\167
+\376\165\002\001\003\243\202\001\104\060\202\001\100\060\022\006
+\003\125\035\023\001\001\377\004\010\060\006\001\001\377\002\001
+\014\060\074\006\003\125\035\037\004\065\060\063\060\061\240\057
+\240\055\206\053\150\164\164\160\072\057\057\143\162\154\056\143
+\150\141\155\142\145\162\163\151\147\156\056\157\162\147\057\143
+\150\141\155\142\145\162\163\162\157\157\164\056\143\162\154\060
+\035\006\003\125\035\016\004\026\004\024\343\224\365\261\115\351
+\333\241\051\133\127\213\115\166\006\166\341\321\242\212\060\016
+\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\021
+\006\011\140\206\110\001\206\370\102\001\001\004\004\003\002\000
+\007\060\047\006\003\125\035\021\004\040\060\036\201\034\143\150
+\141\155\142\145\162\163\162\157\157\164\100\143\150\141\155\142
+\145\162\163\151\147\156\056\157\162\147\060\047\006\003\125\035
+\022\004\040\060\036\201\034\143\150\141\155\142\145\162\163\162
+\157\157\164\100\143\150\141\155\142\145\162\163\151\147\156\056
+\157\162\147\060\130\006\003\125\035\040\004\121\060\117\060\115
+\006\013\053\006\001\004\001\201\207\056\012\003\001\060\076\060
+\074\006\010\053\006\001\005\005\007\002\001\026\060\150\164\164
+\160\072\057\057\143\160\163\056\143\150\141\155\142\145\162\163
+\151\147\156\056\157\162\147\057\143\160\163\057\143\150\141\155
+\142\145\162\163\162\157\157\164\056\150\164\155\154\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001
+\000\014\101\227\302\032\206\300\042\174\237\373\220\363\032\321
+\003\261\357\023\371\041\137\004\234\332\311\245\215\047\154\226
+\207\221\276\101\220\001\162\223\347\036\175\137\366\211\306\135
+\247\100\011\075\254\111\105\105\334\056\215\060\150\262\011\272
+\373\303\057\314\272\013\337\077\167\173\106\175\072\022\044\216
+\226\217\074\005\012\157\322\224\050\035\155\014\300\056\210\042
+\325\330\317\035\023\307\360\110\327\327\005\247\317\307\107\236
+\073\074\064\310\200\117\324\024\273\374\015\120\367\372\263\354
+\102\137\251\335\155\310\364\165\317\173\301\162\046\261\001\034
+\134\054\375\172\116\264\001\305\005\127\271\347\074\252\005\331
+\210\351\007\106\101\316\357\101\201\256\130\337\203\242\256\312
+\327\167\037\347\000\074\235\157\216\344\062\011\035\115\170\064
+\170\064\074\224\233\046\355\117\161\306\031\172\275\040\042\110
+\132\376\113\175\003\267\347\130\276\306\062\116\164\036\150\335
+\250\150\133\263\076\356\142\175\331\200\350\012\165\172\267\356
+\264\145\232\041\220\340\252\320\230\274\070\265\163\074\213\370
+\334
+END
+
+# Trust for Certificate "Camerfirma Chambers of Commerce Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Camerfirma Chambers of Commerce Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\156\072\125\244\031\014\031\134\223\204\074\300\333\162\056\061
+\060\141\360\261
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\260\001\356\024\331\257\051\030\224\166\216\361\151\063\052\204
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\177\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\042\060
+\040\006\003\125\004\003\023\031\103\150\141\155\142\145\162\163
+\040\157\146\040\103\157\155\155\145\162\143\145\040\122\157\157
+\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Camerfirma Global Chambersign Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Camerfirma Global Chambersign Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060
+\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103
+\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060
+\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103
+\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\305\060\202\003\255\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061\047
+\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155\145
+\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101\070
+\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004\013
+\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150\141
+\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060\036
+\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103\150
+\141\155\142\145\162\163\151\147\156\040\122\157\157\164\060\036
+\027\015\060\063\060\071\063\060\061\066\061\064\061\070\132\027
+\015\063\067\060\071\063\060\061\066\061\064\061\070\132\060\175
+\061\013\060\011\006\003\125\004\006\023\002\105\125\061\047\060
+\045\006\003\125\004\012\023\036\101\103\040\103\141\155\145\162
+\146\151\162\155\141\040\123\101\040\103\111\106\040\101\070\062
+\067\064\063\062\070\067\061\043\060\041\006\003\125\004\013\023
+\032\150\164\164\160\072\057\057\167\167\167\056\143\150\141\155
+\142\145\162\163\151\147\156\056\157\162\147\061\040\060\036\006
+\003\125\004\003\023\027\107\154\157\142\141\154\040\103\150\141
+\155\142\145\162\163\151\147\156\040\122\157\157\164\060\202\001
+\040\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\202\001\015\000\060\202\001\010\002\202\001\001\000\242\160
+\242\320\237\102\256\133\027\307\330\175\317\024\203\374\117\311
+\241\267\023\257\212\327\236\076\004\012\222\213\140\126\372\264
+\062\057\210\115\241\140\010\364\267\011\116\240\111\057\111\326
+\323\337\235\227\132\237\224\004\160\354\077\131\331\267\314\146
+\213\230\122\050\011\002\337\305\057\204\215\172\227\167\277\354
+\100\235\045\162\253\265\077\062\230\373\267\267\374\162\204\345
+\065\207\371\125\372\243\037\016\157\056\050\335\151\240\331\102
+\020\306\370\265\104\302\320\103\177\333\274\344\242\074\152\125
+\170\012\167\251\330\352\031\062\267\057\376\134\077\033\356\261
+\230\354\312\255\172\151\105\343\226\017\125\366\346\355\165\352
+\145\350\062\126\223\106\211\250\045\212\145\006\356\153\277\171
+\007\320\361\267\257\355\054\115\222\273\300\250\137\247\147\175
+\004\362\025\010\160\254\222\326\175\004\322\063\373\114\266\013
+\013\373\032\311\304\215\003\251\176\134\362\120\253\022\245\241
+\317\110\120\245\357\322\310\032\023\372\260\177\261\202\034\167
+\152\017\137\334\013\225\217\357\103\176\346\105\011\045\002\001
+\003\243\202\001\120\060\202\001\114\060\022\006\003\125\035\023
+\001\001\377\004\010\060\006\001\001\377\002\001\014\060\077\006
+\003\125\035\037\004\070\060\066\060\064\240\062\240\060\206\056
+\150\164\164\160\072\057\057\143\162\154\056\143\150\141\155\142
+\145\162\163\151\147\156\056\157\162\147\057\143\150\141\155\142
+\145\162\163\151\147\156\162\157\157\164\056\143\162\154\060\035
+\006\003\125\035\016\004\026\004\024\103\234\066\237\260\236\060
+\115\306\316\137\255\020\253\345\003\245\372\251\024\060\016\006
+\003\125\035\017\001\001\377\004\004\003\002\001\006\060\021\006
+\011\140\206\110\001\206\370\102\001\001\004\004\003\002\000\007
+\060\052\006\003\125\035\021\004\043\060\041\201\037\143\150\141
+\155\142\145\162\163\151\147\156\162\157\157\164\100\143\150\141
+\155\142\145\162\163\151\147\156\056\157\162\147\060\052\006\003
+\125\035\022\004\043\060\041\201\037\143\150\141\155\142\145\162
+\163\151\147\156\162\157\157\164\100\143\150\141\155\142\145\162
+\163\151\147\156\056\157\162\147\060\133\006\003\125\035\040\004
+\124\060\122\060\120\006\013\053\006\001\004\001\201\207\056\012
+\001\001\060\101\060\077\006\010\053\006\001\005\005\007\002\001
+\026\063\150\164\164\160\072\057\057\143\160\163\056\143\150\141
+\155\142\145\162\163\151\147\156\056\157\162\147\057\143\160\163
+\057\143\150\141\155\142\145\162\163\151\147\156\162\157\157\164
+\056\150\164\155\154\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\074\073\160\221\371\004\124
+\047\221\341\355\355\376\150\177\141\135\345\101\145\117\062\361
+\030\005\224\152\034\336\037\160\333\076\173\062\002\064\265\014
+\154\241\212\174\245\364\217\377\324\330\255\027\325\055\004\321
+\077\130\200\342\201\131\210\276\300\343\106\223\044\376\220\275
+\046\242\060\055\350\227\046\127\065\211\164\226\030\366\025\342
+\257\044\031\126\002\002\262\272\017\024\352\306\212\146\301\206
+\105\125\213\276\222\276\234\244\004\307\111\074\236\350\051\172
+\211\327\376\257\377\150\365\245\027\220\275\254\231\314\245\206
+\127\011\147\106\333\326\026\302\106\361\344\251\120\365\217\321
+\222\025\323\137\076\306\000\111\072\156\130\262\321\321\047\015
+\045\310\062\370\040\021\315\175\062\063\110\224\124\114\335\334
+\171\304\060\237\353\216\270\125\265\327\210\134\305\152\044\075
+\262\323\005\003\121\306\007\357\314\024\162\164\075\156\162\316
+\030\050\214\112\240\167\345\011\053\105\104\107\254\267\147\177
+\001\212\005\132\223\276\241\301\377\370\347\016\147\244\107\111
+\166\135\165\220\032\365\046\217\360
+END
+
+# Trust for Certificate "Camerfirma Global Chambersign Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Camerfirma Global Chambersign Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\063\233\153\024\120\044\233\125\172\001\207\162\204\331\340\057
+\303\322\330\351
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\305\346\173\277\006\320\117\103\355\304\172\145\212\373\153\031
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061
+\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155
+\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101
+\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004
+\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150
+\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060
+\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103
+\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "NetLock Qualified (Class QA) Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Qualified (Class QA) Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\102\060\100\006\003\125\004
+\003\023\071\116\145\164\114\157\143\153\040\115\151\156\157\163
+\151\164\145\164\164\040\113\157\172\152\145\147\171\172\157\151
+\040\050\103\154\141\163\163\040\121\101\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157\061\036\060\034
+\006\011\052\206\110\206\367\015\001\011\001\026\017\151\156\146
+\157\100\156\145\164\154\157\143\153\056\150\165
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\102\060\100\006\003\125\004
+\003\023\071\116\145\164\114\157\143\153\040\115\151\156\157\163
+\151\164\145\164\164\040\113\157\172\152\145\147\171\172\157\151
+\040\050\103\154\141\163\163\040\121\101\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157\061\036\060\034
+\006\011\052\206\110\206\367\015\001\011\001\026\017\151\156\146
+\157\100\156\145\164\154\157\143\153\056\150\165
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\173
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\006\321\060\202\005\271\240\003\002\001\002\002\001\173
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\311\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145\164
+\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172\164
+\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030\006
+\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141\156
+\171\153\151\141\144\157\153\061\102\060\100\006\003\125\004\003
+\023\071\116\145\164\114\157\143\153\040\115\151\156\157\163\151
+\164\145\164\164\040\113\157\172\152\145\147\171\172\157\151\040
+\050\103\154\141\163\163\040\121\101\051\040\124\141\156\165\163
+\151\164\166\141\156\171\153\151\141\144\157\061\036\060\034\006
+\011\052\206\110\206\367\015\001\011\001\026\017\151\156\146\157
+\100\156\145\164\154\157\143\153\056\150\165\060\036\027\015\060
+\063\060\063\063\060\060\061\064\067\061\061\132\027\015\062\062
+\061\062\061\065\060\061\064\067\061\061\132\060\201\311\061\013
+\060\011\006\003\125\004\006\023\002\110\125\061\021\060\017\006
+\003\125\004\007\023\010\102\165\144\141\160\145\163\164\061\047
+\060\045\006\003\125\004\012\023\036\116\145\164\114\157\143\153
+\040\110\141\154\157\172\141\164\142\151\172\164\157\156\163\141
+\147\151\040\113\146\164\056\061\032\060\030\006\003\125\004\013
+\023\021\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157\153\061\102\060\100\006\003\125\004\003\023\071\116\145
+\164\114\157\143\153\040\115\151\156\157\163\151\164\145\164\164
+\040\113\157\172\152\145\147\171\172\157\151\040\050\103\154\141
+\163\163\040\121\101\051\040\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\061\036\060\034\006\011\052\206\110
+\206\367\015\001\011\001\026\017\151\156\146\157\100\156\145\164
+\154\157\143\153\056\150\165\060\202\001\042\060\015\006\011\052
+\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060
+\202\001\012\002\202\001\001\000\307\122\045\262\330\075\324\204
+\125\011\247\033\275\154\271\024\364\212\002\333\166\374\152\052
+\170\253\345\167\360\156\340\214\043\147\333\245\144\231\271\335
+\001\076\157\357\055\232\074\042\360\135\311\127\240\125\101\177
+\362\103\136\130\202\123\061\145\316\036\362\046\272\000\124\036
+\257\260\274\034\344\122\214\240\062\257\267\067\261\123\147\150
+\164\147\120\366\055\056\144\336\256\046\171\337\337\231\206\253
+\253\177\205\354\240\373\200\314\364\270\014\036\223\105\143\271
+\334\270\133\233\355\133\071\324\137\142\260\247\216\174\146\070
+\054\252\261\010\143\027\147\175\314\275\263\361\303\077\317\120
+\071\355\321\031\203\025\333\207\022\047\226\267\332\352\345\235
+\274\272\352\071\117\213\357\164\232\347\305\320\322\352\206\121
+\034\344\376\144\010\050\004\171\005\353\312\305\161\016\013\357
+\253\352\354\022\021\241\030\005\062\151\321\014\054\032\075\045
+\231\077\265\174\312\155\260\256\231\231\372\010\140\347\031\302
+\362\275\121\323\314\323\002\254\301\021\014\200\316\253\334\224
+\235\153\243\071\123\072\326\205\002\003\000\305\175\243\202\002
+\300\060\202\002\274\060\022\006\003\125\035\023\001\001\377\004
+\010\060\006\001\001\377\002\001\004\060\016\006\003\125\035\017
+\001\001\377\004\004\003\002\001\006\060\202\002\165\006\011\140
+\206\110\001\206\370\102\001\015\004\202\002\146\026\202\002\142
+\106\111\107\131\105\114\105\115\041\040\105\172\145\156\040\164
+\141\156\165\163\151\164\166\141\156\171\040\141\040\116\145\164
+\114\157\143\153\040\113\146\164\056\040\115\151\156\157\163\151
+\164\145\164\164\040\123\172\157\154\147\141\154\164\141\164\141
+\163\151\040\123\172\141\142\141\154\171\172\141\164\141\142\141
+\156\040\154\145\151\162\164\040\145\154\152\141\162\141\163\157
+\153\040\141\154\141\160\152\141\156\040\153\145\163\172\165\154
+\164\056\040\101\040\155\151\156\157\163\151\164\145\164\164\040
+\145\154\145\153\164\162\157\156\151\153\165\163\040\141\154\141
+\151\162\141\163\040\152\157\147\150\141\164\141\163\040\145\162
+\166\145\156\171\145\163\165\154\145\163\145\156\145\153\054\040
+\166\141\154\141\155\151\156\164\040\145\154\146\157\147\141\144
+\141\163\141\156\141\153\040\146\145\154\164\145\164\145\154\145
+\040\141\040\115\151\156\157\163\151\164\145\164\164\040\123\172
+\157\154\147\141\154\164\141\164\141\163\151\040\123\172\141\142
+\141\154\171\172\141\164\142\141\156\054\040\141\172\040\101\154
+\164\141\154\141\156\157\163\040\123\172\145\162\172\157\144\145
+\163\151\040\106\145\154\164\145\164\145\154\145\153\142\145\156
+\040\145\154\157\151\162\164\040\145\154\154\145\156\157\162\172
+\145\163\151\040\145\154\152\141\162\141\163\040\155\145\147\164
+\145\164\145\154\145\056\040\101\040\144\157\153\165\155\145\156
+\164\165\155\157\153\040\155\145\147\164\141\154\141\154\150\141
+\164\157\153\040\141\040\150\164\164\160\163\072\057\057\167\167
+\167\056\156\145\164\154\157\143\153\056\150\165\057\144\157\143
+\163\057\040\143\151\155\145\156\040\166\141\147\171\040\153\145
+\162\150\145\164\157\153\040\141\172\040\151\156\146\157\100\156
+\145\164\154\157\143\153\056\156\145\164\040\145\055\155\141\151
+\154\040\143\151\155\145\156\056\040\127\101\122\116\111\116\107
+\041\040\124\150\145\040\151\163\163\165\141\156\143\145\040\141
+\156\144\040\164\150\145\040\165\163\145\040\157\146\040\164\150
+\151\163\040\143\145\162\164\151\146\151\143\141\164\145\040\141
+\162\145\040\163\165\142\152\145\143\164\040\164\157\040\164\150
+\145\040\116\145\164\114\157\143\153\040\121\165\141\154\151\146
+\151\145\144\040\103\120\123\040\141\166\141\151\154\141\142\154
+\145\040\141\164\040\150\164\164\160\163\072\057\057\167\167\167
+\056\156\145\164\154\157\143\153\056\150\165\057\144\157\143\163
+\057\040\157\162\040\142\171\040\145\055\155\141\151\154\040\141
+\164\040\151\156\146\157\100\156\145\164\154\157\143\153\056\156
+\145\164\060\035\006\003\125\035\016\004\026\004\024\011\152\142
+\026\222\260\132\273\125\016\313\165\062\072\062\345\262\041\311
+\050\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\221\152\120\234\333\170\201\233\077\213\102
+\343\073\374\246\303\356\103\340\317\363\342\200\065\111\105\166
+\002\342\343\057\005\305\361\052\347\300\101\063\306\266\233\320
+\063\071\315\300\333\241\255\154\067\002\114\130\101\073\362\227
+\222\306\110\250\315\345\212\071\211\141\371\122\227\351\275\366
+\371\224\164\350\161\016\274\167\206\303\006\314\132\174\112\176
+\064\120\060\056\373\177\062\232\215\075\363\040\133\370\152\312
+\206\363\061\114\054\131\200\002\175\376\070\311\060\165\034\267
+\125\343\274\237\272\250\155\204\050\005\165\263\213\015\300\221
+\124\041\347\246\013\264\231\365\121\101\334\315\243\107\042\331
+\307\001\201\304\334\107\117\046\352\037\355\333\315\015\230\364
+\243\234\264\163\062\112\226\231\376\274\177\310\045\130\370\130
+\363\166\146\211\124\244\246\076\304\120\134\272\211\030\202\165
+\110\041\322\117\023\350\140\176\007\166\333\020\265\121\346\252
+\271\150\252\315\366\235\220\165\022\352\070\032\312\104\350\267
+\231\247\052\150\225\146\225\253\255\357\211\313\140\251\006\022
+\306\224\107\351\050
+END
+
+# Trust for Certificate "NetLock Qualified (Class QA) Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Qualified (Class QA) Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\001\150\227\341\240\270\362\303\261\064\146\134\040\247\047\267
+\241\130\342\217
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\324\200\145\150\044\371\211\042\050\333\365\244\232\027\217\024
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\311\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\102\060\100\006\003\125\004
+\003\023\071\116\145\164\114\157\143\153\040\115\151\156\157\163
+\151\164\145\164\164\040\113\157\172\152\145\147\171\172\157\151
+\040\050\103\154\141\163\163\040\121\101\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157\061\036\060\034
+\006\011\052\206\110\206\367\015\001\011\001\026\017\151\156\146
+\157\100\156\145\164\154\157\143\153\056\150\165
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\173
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "NetLock Notary (Class A) Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Notary (Class A) Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\257\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\020\060\016\006\003\125\004\010\023\007\110\165\156\147\141
+\162\171\061\021\060\017\006\003\125\004\007\023\010\102\165\144
+\141\160\145\163\164\061\047\060\045\006\003\125\004\012\023\036
+\116\145\164\114\157\143\153\040\110\141\154\157\172\141\164\142
+\151\172\164\157\156\163\141\147\151\040\113\146\164\056\061\032
+\060\030\006\003\125\004\013\023\021\124\141\156\165\163\151\164
+\166\141\156\171\153\151\141\144\157\153\061\066\060\064\006\003
+\125\004\003\023\055\116\145\164\114\157\143\153\040\113\157\172
+\152\145\147\171\172\157\151\040\050\103\154\141\163\163\040\101
+\051\040\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\257\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\020\060\016\006\003\125\004\010\023\007\110\165\156\147\141
+\162\171\061\021\060\017\006\003\125\004\007\023\010\102\165\144
+\141\160\145\163\164\061\047\060\045\006\003\125\004\012\023\036
+\116\145\164\114\157\143\153\040\110\141\154\157\172\141\164\142
+\151\172\164\157\156\163\141\147\151\040\113\146\164\056\061\032
+\060\030\006\003\125\004\013\023\021\124\141\156\165\163\151\164
+\166\141\156\171\153\151\141\144\157\153\061\066\060\064\006\003
+\125\004\003\023\055\116\145\164\114\157\143\153\040\113\157\172
+\152\145\147\171\172\157\151\040\050\103\154\141\163\163\040\101
+\051\040\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\003
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\006\175\060\202\005\145\240\003\002\001\002\002\002\001
+\003\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000
+\060\201\257\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\020\060\016\006\003\125\004\010\023\007\110\165\156\147\141
+\162\171\061\021\060\017\006\003\125\004\007\023\010\102\165\144
+\141\160\145\163\164\061\047\060\045\006\003\125\004\012\023\036
+\116\145\164\114\157\143\153\040\110\141\154\157\172\141\164\142
+\151\172\164\157\156\163\141\147\151\040\113\146\164\056\061\032
+\060\030\006\003\125\004\013\023\021\124\141\156\165\163\151\164
+\166\141\156\171\153\151\141\144\157\153\061\066\060\064\006\003
+\125\004\003\023\055\116\145\164\114\157\143\153\040\113\157\172
+\152\145\147\171\172\157\151\040\050\103\154\141\163\163\040\101
+\051\040\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157\060\036\027\015\071\071\060\062\062\064\062\063\061\064
+\064\067\132\027\015\061\071\060\062\061\071\062\063\061\064\064
+\067\132\060\201\257\061\013\060\011\006\003\125\004\006\023\002
+\110\125\061\020\060\016\006\003\125\004\010\023\007\110\165\156
+\147\141\162\171\061\021\060\017\006\003\125\004\007\023\010\102
+\165\144\141\160\145\163\164\061\047\060\045\006\003\125\004\012
+\023\036\116\145\164\114\157\143\153\040\110\141\154\157\172\141
+\164\142\151\172\164\157\156\163\141\147\151\040\113\146\164\056
+\061\032\060\030\006\003\125\004\013\023\021\124\141\156\165\163
+\151\164\166\141\156\171\153\151\141\144\157\153\061\066\060\064
+\006\003\125\004\003\023\055\116\145\164\114\157\143\153\040\113
+\157\172\152\145\147\171\172\157\151\040\050\103\154\141\163\163
+\040\101\051\040\124\141\156\165\163\151\164\166\141\156\171\153
+\151\141\144\157\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\274\164\214\017\273\114\364\067\036\251\005
+\202\330\346\341\154\160\352\170\265\156\321\070\104\015\250\203
+\316\135\322\326\325\201\305\324\113\347\133\224\160\046\333\073
+\235\152\114\142\367\161\363\144\326\141\073\075\353\163\243\067
+\331\317\352\214\222\073\315\367\007\334\146\164\227\364\105\042
+\335\364\134\340\277\155\363\276\145\063\344\025\072\277\333\230
+\220\125\070\304\355\246\125\143\013\260\170\004\364\343\156\301
+\077\216\374\121\170\037\222\236\203\302\376\331\260\251\311\274
+\132\000\377\251\250\230\164\373\366\054\076\025\071\015\266\004
+\125\250\016\230\040\102\263\261\045\255\176\232\157\135\123\261
+\253\014\374\353\340\363\172\263\250\263\377\106\366\143\242\330
+\072\230\173\266\254\205\377\260\045\117\164\143\347\023\007\245
+\012\217\005\367\300\144\157\176\247\047\200\226\336\324\056\206
+\140\307\153\053\136\163\173\027\347\221\077\144\014\330\113\042
+\064\053\233\062\362\110\037\237\241\012\204\172\342\302\255\227
+\075\216\325\301\371\126\243\120\351\306\264\372\230\242\356\225
+\346\052\003\214\337\002\003\001\000\001\243\202\002\237\060\202
+\002\233\060\016\006\003\125\035\017\001\001\377\004\004\003\002
+\000\006\060\022\006\003\125\035\023\001\001\377\004\010\060\006
+\001\001\377\002\001\004\060\021\006\011\140\206\110\001\206\370
+\102\001\001\004\004\003\002\000\007\060\202\002\140\006\011\140
+\206\110\001\206\370\102\001\015\004\202\002\121\026\202\002\115
+\106\111\107\131\105\114\105\115\041\040\105\172\145\156\040\164
+\141\156\165\163\151\164\166\141\156\171\040\141\040\116\145\164
+\114\157\143\153\040\113\146\164\056\040\101\154\164\141\154\141
+\156\157\163\040\123\172\157\154\147\141\154\164\141\164\141\163
+\151\040\106\145\154\164\145\164\145\154\145\151\142\145\156\040
+\154\145\151\162\164\040\145\154\152\141\162\141\163\157\153\040
+\141\154\141\160\152\141\156\040\153\145\163\172\165\154\164\056
+\040\101\040\150\151\164\145\154\145\163\151\164\145\163\040\146
+\157\154\171\141\155\141\164\141\164\040\141\040\116\145\164\114
+\157\143\153\040\113\146\164\056\040\164\145\162\155\145\153\146
+\145\154\145\154\157\163\163\145\147\055\142\151\172\164\157\163
+\151\164\141\163\141\040\166\145\144\151\056\040\101\040\144\151
+\147\151\164\141\154\151\163\040\141\154\141\151\162\141\163\040
+\145\154\146\157\147\141\144\141\163\141\156\141\153\040\146\145
+\154\164\145\164\145\154\145\040\141\172\040\145\154\157\151\162
+\164\040\145\154\154\145\156\157\162\172\145\163\151\040\145\154
+\152\141\162\141\163\040\155\145\147\164\145\164\145\154\145\056
+\040\101\172\040\145\154\152\141\162\141\163\040\154\145\151\162
+\141\163\141\040\155\145\147\164\141\154\141\154\150\141\164\157
+\040\141\040\116\145\164\114\157\143\153\040\113\146\164\056\040
+\111\156\164\145\162\156\145\164\040\150\157\156\154\141\160\152
+\141\156\040\141\040\150\164\164\160\163\072\057\057\167\167\167
+\056\156\145\164\154\157\143\153\056\156\145\164\057\144\157\143
+\163\040\143\151\155\145\156\040\166\141\147\171\040\153\145\162
+\150\145\164\157\040\141\172\040\145\154\154\145\156\157\162\172
+\145\163\100\156\145\164\154\157\143\153\056\156\145\164\040\145
+\055\155\141\151\154\040\143\151\155\145\156\056\040\111\115\120
+\117\122\124\101\116\124\041\040\124\150\145\040\151\163\163\165
+\141\156\143\145\040\141\156\144\040\164\150\145\040\165\163\145
+\040\157\146\040\164\150\151\163\040\143\145\162\164\151\146\151
+\143\141\164\145\040\151\163\040\163\165\142\152\145\143\164\040
+\164\157\040\164\150\145\040\116\145\164\114\157\143\153\040\103
+\120\123\040\141\166\141\151\154\141\142\154\145\040\141\164\040
+\150\164\164\160\163\072\057\057\167\167\167\056\156\145\164\154
+\157\143\153\056\156\145\164\057\144\157\143\163\040\157\162\040
+\142\171\040\145\055\155\141\151\154\040\141\164\040\143\160\163
+\100\156\145\164\154\157\143\153\056\156\145\164\056\060\015\006
+\011\052\206\110\206\367\015\001\001\004\005\000\003\202\001\001
+\000\110\044\106\367\272\126\157\372\310\050\003\100\116\345\061
+\071\153\046\153\123\177\333\337\337\363\161\075\046\300\024\016
+\306\147\173\043\250\014\163\335\001\273\306\312\156\067\071\125
+\325\307\214\126\040\016\050\012\016\322\052\244\260\111\122\306
+\070\007\376\276\012\011\214\321\230\317\312\332\024\061\241\117
+\322\071\374\017\021\054\103\303\335\253\223\307\125\076\107\174
+\030\032\000\334\363\173\330\362\177\122\154\040\364\013\137\151
+\122\364\356\370\262\051\140\353\343\111\061\041\015\326\265\020
+\101\342\101\011\154\342\032\232\126\113\167\002\366\240\233\232
+\047\207\350\125\051\161\302\220\237\105\170\032\341\025\144\075
+\320\016\330\240\166\237\256\305\320\056\352\326\017\126\354\144
+\177\132\233\024\130\001\047\176\023\120\307\153\052\346\150\074
+\277\134\240\012\033\341\016\172\351\342\200\303\351\351\366\375
+\154\021\236\320\345\050\047\053\124\062\102\024\202\165\346\112
+\360\053\146\165\143\214\242\373\004\076\203\016\233\066\360\030
+\344\046\040\303\214\360\050\007\255\074\027\146\210\265\375\266
+\210
+END
+
+# Trust for Certificate "NetLock Notary (Class A) Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Notary (Class A) Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\254\355\137\145\123\375\045\316\001\137\037\172\110\073\152\164
+\237\141\170\306
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\206\070\155\136\111\143\154\205\134\333\155\334\224\267\320\367
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\257\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\020\060\016\006\003\125\004\010\023\007\110\165\156\147\141
+\162\171\061\021\060\017\006\003\125\004\007\023\010\102\165\144
+\141\160\145\163\164\061\047\060\045\006\003\125\004\012\023\036
+\116\145\164\114\157\143\153\040\110\141\154\157\172\141\164\142
+\151\172\164\157\156\163\141\147\151\040\113\146\164\056\061\032
+\060\030\006\003\125\004\013\023\021\124\141\156\165\163\151\164
+\166\141\156\171\153\151\141\144\157\153\061\066\060\064\006\003
+\125\004\003\023\055\116\145\164\114\157\143\153\040\113\157\172
+\152\145\147\171\172\157\151\040\050\103\154\141\163\163\040\101
+\051\040\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\002\001\003
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "NetLock Business (Class B) Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Business (Class B) Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\231\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\062\060\060\006\003\125\004
+\003\023\051\116\145\164\114\157\143\153\040\125\172\154\145\164
+\151\040\050\103\154\141\163\163\040\102\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\231\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\062\060\060\006\003\125\004
+\003\023\051\116\145\164\114\157\143\153\040\125\172\154\145\164
+\151\040\050\103\154\141\163\163\040\102\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\151
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\113\060\202\004\264\240\003\002\001\002\002\001\151
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\231\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145\164
+\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172\164
+\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030\006
+\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141\156
+\171\153\151\141\144\157\153\061\062\060\060\006\003\125\004\003
+\023\051\116\145\164\114\157\143\153\040\125\172\154\145\164\151
+\040\050\103\154\141\163\163\040\102\051\040\124\141\156\165\163
+\151\164\166\141\156\171\153\151\141\144\157\060\036\027\015\071
+\071\060\062\062\065\061\064\061\060\062\062\132\027\015\061\071
+\060\062\062\060\061\064\061\060\062\062\132\060\201\231\061\013
+\060\011\006\003\125\004\006\023\002\110\125\061\021\060\017\006
+\003\125\004\007\023\010\102\165\144\141\160\145\163\164\061\047
+\060\045\006\003\125\004\012\023\036\116\145\164\114\157\143\153
+\040\110\141\154\157\172\141\164\142\151\172\164\157\156\163\141
+\147\151\040\113\146\164\056\061\032\060\030\006\003\125\004\013
+\023\021\124\141\156\165\163\151\164\166\141\156\171\153\151\141
+\144\157\153\061\062\060\060\006\003\125\004\003\023\051\116\145
+\164\114\157\143\153\040\125\172\154\145\164\151\040\050\103\154
+\141\163\163\040\102\051\040\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\060\201\237\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\201\215\000\060\201\211
+\002\201\201\000\261\352\004\354\040\240\043\302\217\070\140\317
+\307\106\263\325\033\376\373\271\231\236\004\334\034\177\214\112
+\201\230\356\244\324\312\212\027\271\042\177\203\012\165\114\233
+\300\151\330\144\071\243\355\222\243\375\133\134\164\032\300\107
+\312\072\151\166\232\272\342\104\027\374\114\243\325\376\270\227
+\210\257\210\003\211\037\244\362\004\076\310\007\013\346\371\263
+\057\172\142\024\011\106\024\312\144\365\213\200\265\142\250\330
+\153\326\161\223\055\263\277\011\124\130\355\006\353\250\173\334
+\103\261\241\151\002\003\001\000\001\243\202\002\237\060\202\002
+\233\060\022\006\003\125\035\023\001\001\377\004\010\060\006\001
+\001\377\002\001\004\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\000\006\060\021\006\011\140\206\110\001\206\370\102
+\001\001\004\004\003\002\000\007\060\202\002\140\006\011\140\206
+\110\001\206\370\102\001\015\004\202\002\121\026\202\002\115\106
+\111\107\131\105\114\105\115\041\040\105\172\145\156\040\164\141
+\156\165\163\151\164\166\141\156\171\040\141\040\116\145\164\114
+\157\143\153\040\113\146\164\056\040\101\154\164\141\154\141\156
+\157\163\040\123\172\157\154\147\141\154\164\141\164\141\163\151
+\040\106\145\154\164\145\164\145\154\145\151\142\145\156\040\154
+\145\151\162\164\040\145\154\152\141\162\141\163\157\153\040\141
+\154\141\160\152\141\156\040\153\145\163\172\165\154\164\056\040
+\101\040\150\151\164\145\154\145\163\151\164\145\163\040\146\157
+\154\171\141\155\141\164\141\164\040\141\040\116\145\164\114\157
+\143\153\040\113\146\164\056\040\164\145\162\155\145\153\146\145
+\154\145\154\157\163\163\145\147\055\142\151\172\164\157\163\151
+\164\141\163\141\040\166\145\144\151\056\040\101\040\144\151\147
+\151\164\141\154\151\163\040\141\154\141\151\162\141\163\040\145
+\154\146\157\147\141\144\141\163\141\156\141\153\040\146\145\154
+\164\145\164\145\154\145\040\141\172\040\145\154\157\151\162\164
+\040\145\154\154\145\156\157\162\172\145\163\151\040\145\154\152
+\141\162\141\163\040\155\145\147\164\145\164\145\154\145\056\040
+\101\172\040\145\154\152\141\162\141\163\040\154\145\151\162\141
+\163\141\040\155\145\147\164\141\154\141\154\150\141\164\157\040
+\141\040\116\145\164\114\157\143\153\040\113\146\164\056\040\111
+\156\164\145\162\156\145\164\040\150\157\156\154\141\160\152\141
+\156\040\141\040\150\164\164\160\163\072\057\057\167\167\167\056
+\156\145\164\154\157\143\153\056\156\145\164\057\144\157\143\163
+\040\143\151\155\145\156\040\166\141\147\171\040\153\145\162\150
+\145\164\157\040\141\172\040\145\154\154\145\156\157\162\172\145
+\163\100\156\145\164\154\157\143\153\056\156\145\164\040\145\055
+\155\141\151\154\040\143\151\155\145\156\056\040\111\115\120\117
+\122\124\101\116\124\041\040\124\150\145\040\151\163\163\165\141
+\156\143\145\040\141\156\144\040\164\150\145\040\165\163\145\040
+\157\146\040\164\150\151\163\040\143\145\162\164\151\146\151\143
+\141\164\145\040\151\163\040\163\165\142\152\145\143\164\040\164
+\157\040\164\150\145\040\116\145\164\114\157\143\153\040\103\120
+\123\040\141\166\141\151\154\141\142\154\145\040\141\164\040\150
+\164\164\160\163\072\057\057\167\167\167\056\156\145\164\154\157
+\143\153\056\156\145\164\057\144\157\143\163\040\157\162\040\142
+\171\040\145\055\155\141\151\154\040\141\164\040\143\160\163\100
+\156\145\164\154\157\143\153\056\156\145\164\056\060\015\006\011
+\052\206\110\206\367\015\001\001\004\005\000\003\201\201\000\004
+\333\256\214\027\257\370\016\220\061\116\315\076\011\300\155\072
+\260\370\063\114\107\114\343\165\210\020\227\254\260\070\025\221
+\306\051\226\314\041\300\155\074\245\164\317\330\202\245\071\303
+\145\343\102\160\273\042\220\343\175\333\065\166\341\240\265\332
+\237\160\156\223\032\060\071\035\060\333\056\343\174\262\221\262
+\321\067\051\372\271\326\027\134\107\117\343\035\070\353\237\325
+\173\225\250\050\236\025\112\321\321\320\053\000\227\240\342\222
+\066\053\143\254\130\001\153\063\051\120\206\203\361\001\110
+END
+
+# Trust for Certificate "NetLock Business (Class B) Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Business (Class B) Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\207\237\113\356\005\337\230\130\073\343\140\326\063\347\015\077
+\376\230\161\257
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\071\026\252\271\152\101\341\024\151\337\236\154\073\162\334\266
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\231\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\062\060\060\006\003\125\004
+\003\023\051\116\145\164\114\157\143\153\040\125\172\154\145\164
+\151\040\050\103\154\141\163\163\040\102\051\040\124\141\156\165
+\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\151
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "NetLock Express (Class C) Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Express (Class C) Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\233\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\064\060\062\006\003\125\004
+\003\023\053\116\145\164\114\157\143\153\040\105\170\160\162\145
+\163\163\172\040\050\103\154\141\163\163\040\103\051\040\124\141
+\156\165\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\233\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\064\060\062\006\003\125\004
+\003\023\053\116\145\164\114\157\143\153\040\105\170\160\162\145
+\163\163\172\040\050\103\154\141\163\163\040\103\051\040\124\141
+\156\165\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\150
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\117\060\202\004\270\240\003\002\001\002\002\001\150
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\233\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145\164
+\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172\164
+\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030\006
+\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141\156
+\171\153\151\141\144\157\153\061\064\060\062\006\003\125\004\003
+\023\053\116\145\164\114\157\143\153\040\105\170\160\162\145\163
+\163\172\040\050\103\154\141\163\163\040\103\051\040\124\141\156
+\165\163\151\164\166\141\156\171\153\151\141\144\157\060\036\027
+\015\071\071\060\062\062\065\061\064\060\070\061\061\132\027\015
+\061\071\060\062\062\060\061\064\060\070\061\061\132\060\201\233
+\061\013\060\011\006\003\125\004\006\023\002\110\125\061\021\060
+\017\006\003\125\004\007\023\010\102\165\144\141\160\145\163\164
+\061\047\060\045\006\003\125\004\012\023\036\116\145\164\114\157
+\143\153\040\110\141\154\157\172\141\164\142\151\172\164\157\156
+\163\141\147\151\040\113\146\164\056\061\032\060\030\006\003\125
+\004\013\023\021\124\141\156\165\163\151\164\166\141\156\171\153
+\151\141\144\157\153\061\064\060\062\006\003\125\004\003\023\053
+\116\145\164\114\157\143\153\040\105\170\160\162\145\163\163\172
+\040\050\103\154\141\163\163\040\103\051\040\124\141\156\165\163
+\151\164\166\141\156\171\153\151\141\144\157\060\201\237\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\201\215
+\000\060\201\211\002\201\201\000\353\354\260\154\141\212\043\045
+\257\140\040\343\331\237\374\223\013\333\135\215\260\241\263\100
+\072\202\316\375\165\340\170\062\003\206\132\206\225\221\355\123
+\372\235\100\374\346\350\335\331\133\172\003\275\135\363\073\014
+\303\121\171\233\255\125\240\351\320\003\020\257\012\272\024\102
+\331\122\046\021\042\307\322\040\314\202\244\232\251\376\270\201
+\166\235\152\267\322\066\165\076\261\206\011\366\156\155\176\116
+\267\172\354\256\161\204\366\004\063\010\045\062\353\164\254\026
+\104\306\344\100\223\035\177\255\002\003\001\000\001\243\202\002
+\237\060\202\002\233\060\022\006\003\125\035\023\001\001\377\004
+\010\060\006\001\001\377\002\001\004\060\016\006\003\125\035\017
+\001\001\377\004\004\003\002\000\006\060\021\006\011\140\206\110
+\001\206\370\102\001\001\004\004\003\002\000\007\060\202\002\140
+\006\011\140\206\110\001\206\370\102\001\015\004\202\002\121\026
+\202\002\115\106\111\107\131\105\114\105\115\041\040\105\172\145
+\156\040\164\141\156\165\163\151\164\166\141\156\171\040\141\040
+\116\145\164\114\157\143\153\040\113\146\164\056\040\101\154\164
+\141\154\141\156\157\163\040\123\172\157\154\147\141\154\164\141
+\164\141\163\151\040\106\145\154\164\145\164\145\154\145\151\142
+\145\156\040\154\145\151\162\164\040\145\154\152\141\162\141\163
+\157\153\040\141\154\141\160\152\141\156\040\153\145\163\172\165
+\154\164\056\040\101\040\150\151\164\145\154\145\163\151\164\145
+\163\040\146\157\154\171\141\155\141\164\141\164\040\141\040\116
+\145\164\114\157\143\153\040\113\146\164\056\040\164\145\162\155
+\145\153\146\145\154\145\154\157\163\163\145\147\055\142\151\172
+\164\157\163\151\164\141\163\141\040\166\145\144\151\056\040\101
+\040\144\151\147\151\164\141\154\151\163\040\141\154\141\151\162
+\141\163\040\145\154\146\157\147\141\144\141\163\141\156\141\153
+\040\146\145\154\164\145\164\145\154\145\040\141\172\040\145\154
+\157\151\162\164\040\145\154\154\145\156\157\162\172\145\163\151
+\040\145\154\152\141\162\141\163\040\155\145\147\164\145\164\145
+\154\145\056\040\101\172\040\145\154\152\141\162\141\163\040\154
+\145\151\162\141\163\141\040\155\145\147\164\141\154\141\154\150
+\141\164\157\040\141\040\116\145\164\114\157\143\153\040\113\146
+\164\056\040\111\156\164\145\162\156\145\164\040\150\157\156\154
+\141\160\152\141\156\040\141\040\150\164\164\160\163\072\057\057
+\167\167\167\056\156\145\164\154\157\143\153\056\156\145\164\057
+\144\157\143\163\040\143\151\155\145\156\040\166\141\147\171\040
+\153\145\162\150\145\164\157\040\141\172\040\145\154\154\145\156
+\157\162\172\145\163\100\156\145\164\154\157\143\153\056\156\145
+\164\040\145\055\155\141\151\154\040\143\151\155\145\156\056\040
+\111\115\120\117\122\124\101\116\124\041\040\124\150\145\040\151
+\163\163\165\141\156\143\145\040\141\156\144\040\164\150\145\040
+\165\163\145\040\157\146\040\164\150\151\163\040\143\145\162\164
+\151\146\151\143\141\164\145\040\151\163\040\163\165\142\152\145
+\143\164\040\164\157\040\164\150\145\040\116\145\164\114\157\143
+\153\040\103\120\123\040\141\166\141\151\154\141\142\154\145\040
+\141\164\040\150\164\164\160\163\072\057\057\167\167\167\056\156
+\145\164\154\157\143\153\056\156\145\164\057\144\157\143\163\040
+\157\162\040\142\171\040\145\055\155\141\151\154\040\141\164\040
+\143\160\163\100\156\145\164\154\157\143\153\056\156\145\164\056
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\003
+\201\201\000\020\255\177\327\014\062\200\012\330\206\361\171\230
+\265\255\324\315\263\066\304\226\110\301\134\315\232\331\005\056
+\237\276\120\353\364\046\024\020\055\324\146\027\370\236\301\047
+\375\361\355\344\173\113\240\154\265\253\232\127\160\246\355\240
+\244\355\056\365\375\374\275\376\115\067\010\014\274\343\226\203
+\042\365\111\033\177\113\053\264\124\301\200\174\231\116\035\320
+\214\356\320\254\345\222\372\165\126\376\144\240\023\217\270\270
+\026\235\141\005\147\200\310\320\330\245\007\002\064\230\004\215
+\063\004\324
+END
+
+# Trust for Certificate "NetLock Express (Class C) Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "NetLock Express (Class C) Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\343\222\121\057\012\317\365\005\337\366\336\006\177\165\067\341
+\145\352\127\113
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\117\353\361\360\160\302\200\143\135\130\237\332\022\074\251\304
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\233\061\013\060\011\006\003\125\004\006\023\002\110\125
+\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160
+\145\163\164\061\047\060\045\006\003\125\004\012\023\036\116\145
+\164\114\157\143\153\040\110\141\154\157\172\141\164\142\151\172
+\164\157\156\163\141\147\151\040\113\146\164\056\061\032\060\030
+\006\003\125\004\013\023\021\124\141\156\165\163\151\164\166\141
+\156\171\153\151\141\144\157\153\061\064\060\062\006\003\125\004
+\003\023\053\116\145\164\114\157\143\153\040\105\170\160\162\145
+\163\163\172\040\050\103\154\141\163\163\040\103\051\040\124\141
+\156\165\163\151\164\166\141\156\171\153\151\141\144\157
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\150
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "XRamp Global CA Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "XRamp Global CA Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170
+\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155
+\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160
+\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143
+\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023
+\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170
+\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155
+\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160
+\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143
+\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023
+\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\120\224\154\354\030\352\325\234\115\325\227\357\165\217
+\240\255
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\060\060\202\003\030\240\003\002\001\002\002\020\120
+\224\154\354\030\352\325\234\115\325\227\357\165\217\240\255\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\202\061\013\060\011\006\003\125\004\006\023\002\125\123\061\036
+\060\034\006\003\125\004\013\023\025\167\167\167\056\170\162\141
+\155\160\163\145\143\165\162\151\164\171\056\143\157\155\061\044
+\060\042\006\003\125\004\012\023\033\130\122\141\155\160\040\123
+\145\143\165\162\151\164\171\040\123\145\162\166\151\143\145\163
+\040\111\156\143\061\055\060\053\006\003\125\004\003\023\044\130
+\122\141\155\160\040\107\154\157\142\141\154\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\060\036\027\015\060\064\061\061\060\061\061\067\061
+\064\060\064\132\027\015\063\065\060\061\060\061\060\065\063\067
+\061\071\132\060\201\202\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\036\060\034\006\003\125\004\013\023\025\167\167
+\167\056\170\162\141\155\160\163\145\143\165\162\151\164\171\056
+\143\157\155\061\044\060\042\006\003\125\004\012\023\033\130\122
+\141\155\160\040\123\145\143\165\162\151\164\171\040\123\145\162
+\166\151\143\145\163\040\111\156\143\061\055\060\053\006\003\125
+\004\003\023\044\130\122\141\155\160\040\107\154\157\142\141\154
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\230\044\036\275\025\264\272
+\337\307\214\245\047\266\070\013\151\363\266\116\250\054\056\041
+\035\134\104\337\041\135\176\043\164\376\136\176\264\112\267\246
+\255\037\256\340\006\026\342\233\133\331\147\164\153\135\200\217
+\051\235\206\033\331\234\015\230\155\166\020\050\130\344\145\260
+\177\112\230\171\237\340\303\061\176\200\053\265\214\300\100\073
+\021\206\320\313\242\206\066\140\244\325\060\202\155\331\156\320
+\017\022\004\063\227\137\117\141\132\360\344\371\221\253\347\035
+\073\274\350\317\364\153\055\064\174\342\110\141\034\216\363\141
+\104\314\157\240\112\251\224\260\115\332\347\251\064\172\162\070
+\250\101\314\074\224\021\175\353\310\246\214\267\206\313\312\063
+\073\331\075\067\213\373\172\076\206\054\347\163\327\012\127\254
+\144\233\031\353\364\017\004\010\212\254\003\027\031\144\364\132
+\045\042\215\064\054\262\366\150\035\022\155\323\212\036\024\332
+\304\217\246\342\043\205\325\172\015\275\152\340\351\354\354\027
+\273\102\033\147\252\045\355\105\203\041\374\301\311\174\325\142
+\076\372\362\305\055\323\375\324\145\002\003\001\000\001\243\201
+\237\060\201\234\060\023\006\011\053\006\001\004\001\202\067\024
+\002\004\006\036\004\000\103\000\101\060\013\006\003\125\035\017
+\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377
+\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026
+\004\024\306\117\242\075\006\143\204\011\234\316\142\344\004\254
+\215\134\265\351\266\033\060\066\006\003\125\035\037\004\057\060
+\055\060\053\240\051\240\047\206\045\150\164\164\160\072\057\057
+\143\162\154\056\170\162\141\155\160\163\145\143\165\162\151\164
+\171\056\143\157\155\057\130\107\103\101\056\143\162\154\060\020
+\006\011\053\006\001\004\001\202\067\025\001\004\003\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\221\025\071\003\001\033\147\373\112\034\371\012
+\140\133\241\332\115\227\142\371\044\123\047\327\202\144\116\220
+\056\303\111\033\053\232\334\374\250\170\147\065\361\035\360\021
+\275\267\110\343\020\366\015\337\077\322\311\266\252\125\244\110
+\272\002\333\336\131\056\025\133\073\235\026\175\107\327\067\352
+\137\115\166\022\066\273\037\327\241\201\004\106\040\243\054\155
+\251\236\001\176\077\051\316\000\223\337\375\311\222\163\211\211
+\144\236\347\053\344\034\221\054\322\271\316\175\316\157\061\231
+\323\346\276\322\036\220\360\011\024\171\134\043\253\115\322\332
+\041\037\115\231\171\235\341\317\047\237\020\233\034\210\015\260
+\212\144\101\061\270\016\154\220\044\244\233\134\161\217\272\273
+\176\034\033\333\152\200\017\041\274\351\333\246\267\100\364\262
+\213\251\261\344\357\232\032\320\075\151\231\356\250\050\243\341
+\074\263\360\262\021\234\317\174\100\346\335\347\103\175\242\330
+\072\265\251\215\362\064\231\304\324\020\341\006\375\011\204\020
+\073\356\304\114\364\354\047\174\102\302\164\174\202\212\011\311
+\264\003\045\274
+END
+
+# Trust for Certificate "XRamp Global CA Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "XRamp Global CA Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\270\001\206\321\353\234\206\245\101\004\317\060\124\363\114\122
+\267\345\130\306
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\241\013\104\263\312\020\330\000\156\235\017\330\017\222\012\321
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170
+\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155
+\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160
+\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143
+\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023
+\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\120\224\154\354\030\352\325\234\115\325\227\357\165\217
+\240\255
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Go Daddy Class 2 CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Go Daddy Class 2 CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157
+\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156
+\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040
+\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157
+\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156
+\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040
+\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\000\060\202\002\350\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061\041
+\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157\040
+\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156\143
+\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040\104
+\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\060\036\027\015\060\064\060\066\062\071\061\067
+\060\066\062\060\132\027\015\063\064\060\066\062\071\061\067\060
+\066\062\060\132\060\143\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\041\060\037\006\003\125\004\012\023\030\124\150
+\145\040\107\157\040\104\141\144\144\171\040\107\162\157\165\160
+\054\040\111\156\143\056\061\061\060\057\006\003\125\004\013\023
+\050\107\157\040\104\141\144\144\171\040\103\154\141\163\163\040
+\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\060\202\001\040\060\015\006
+\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\015
+\000\060\202\001\010\002\202\001\001\000\336\235\327\352\127\030
+\111\241\133\353\327\137\110\206\352\276\335\377\344\357\147\034
+\364\145\150\263\127\161\240\136\167\273\355\233\111\351\160\200
+\075\126\030\143\010\157\332\362\314\320\077\177\002\124\042\124
+\020\330\262\201\324\300\165\075\113\177\307\167\303\076\170\253
+\032\003\265\040\153\057\152\053\261\305\210\176\304\273\036\260
+\301\330\105\047\157\252\067\130\367\207\046\327\330\055\366\251
+\027\267\037\162\066\116\246\027\077\145\230\222\333\052\156\135
+\242\376\210\340\013\336\177\345\215\025\341\353\313\072\325\342
+\022\242\023\055\330\216\257\137\022\075\240\010\005\010\266\134
+\245\145\070\004\105\231\036\243\140\140\164\305\101\245\162\142
+\033\142\305\037\157\137\032\102\276\002\121\145\250\256\043\030
+\152\374\170\003\251\115\177\200\303\372\253\132\374\241\100\244
+\312\031\026\376\262\310\357\136\163\015\356\167\275\232\366\171
+\230\274\261\007\147\242\025\015\335\240\130\306\104\173\012\076
+\142\050\137\272\101\007\123\130\317\021\176\070\164\305\370\377
+\265\151\220\217\204\164\352\227\033\257\002\001\003\243\201\300
+\060\201\275\060\035\006\003\125\035\016\004\026\004\024\322\304
+\260\322\221\324\114\021\161\263\141\313\075\241\376\335\250\152
+\324\343\060\201\215\006\003\125\035\043\004\201\205\060\201\202
+\200\024\322\304\260\322\221\324\114\021\161\263\141\313\075\241
+\376\335\250\152\324\343\241\147\244\145\060\143\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\041\060\037\006\003\125
+\004\012\023\030\124\150\145\040\107\157\040\104\141\144\144\171
+\040\107\162\157\165\160\054\040\111\156\143\056\061\061\060\057
+\006\003\125\004\013\023\050\107\157\040\104\141\144\144\171\040
+\103\154\141\163\163\040\062\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\202
+\001\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\062\113\363\262\312\076\221\374\022\306\241\007
+\214\216\167\240\063\006\024\134\220\036\030\367\010\246\075\012
+\031\371\207\200\021\156\151\344\226\027\060\377\064\221\143\162
+\070\356\314\034\001\243\035\224\050\244\061\366\172\304\124\327
+\366\345\061\130\003\242\314\316\142\333\224\105\163\265\277\105
+\311\044\265\325\202\002\255\043\171\151\215\270\266\115\316\317
+\114\312\063\043\350\034\210\252\235\213\101\156\026\311\040\345
+\211\236\315\073\332\160\367\176\231\046\040\024\124\045\253\156
+\163\205\346\233\041\235\012\154\202\016\250\370\302\014\372\020
+\036\154\226\357\207\015\304\017\141\213\255\356\203\053\225\370
+\216\222\204\162\071\353\040\352\203\355\203\315\227\156\010\274
+\353\116\046\266\163\053\344\323\366\114\376\046\161\342\141\021
+\164\112\377\127\032\207\017\165\110\056\317\121\151\027\240\002
+\022\141\225\325\321\100\262\020\114\356\304\254\020\103\246\245
+\236\012\325\225\142\232\015\317\210\202\305\062\014\344\053\237
+\105\346\015\237\050\234\261\271\052\132\127\255\067\017\257\035
+\177\333\275\237
+END
+
+# Trust for Certificate "Go Daddy Class 2 CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Go Daddy Class 2 CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\047\226\272\346\077\030\001\342\167\046\033\240\327\167\160\002
+\217\040\356\344
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\221\336\006\045\253\332\375\062\027\014\273\045\027\052\204\147
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157
+\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156
+\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040
+\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145
+\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Starfield Class 2 CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Starfield Class 2 CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151
+\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163
+\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023
+\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163
+\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151
+\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163
+\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023
+\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163
+\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\017\060\202\002\367\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061\045
+\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151\145
+\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163\054
+\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023\051
+\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163\040
+\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\060\036\027\015\060\064\060
+\066\062\071\061\067\063\071\061\066\132\027\015\063\064\060\066
+\062\071\061\067\063\071\061\066\132\060\150\061\013\060\011\006
+\003\125\004\006\023\002\125\123\061\045\060\043\006\003\125\004
+\012\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143
+\150\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061
+\062\060\060\006\003\125\004\013\023\051\123\164\141\162\146\151
+\145\154\144\040\103\154\141\163\163\040\062\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\060\202\001\040\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\015\000\060\202\001\010\002
+\202\001\001\000\267\062\310\376\351\161\246\004\205\255\014\021
+\144\337\316\115\357\310\003\030\207\077\241\253\373\074\246\237
+\360\303\241\332\324\330\156\053\123\220\373\044\244\076\204\360
+\236\350\137\354\345\047\104\365\050\246\077\173\336\340\052\360
+\310\257\123\057\236\312\005\001\223\036\217\146\034\071\247\115
+\372\132\266\163\004\045\146\353\167\177\347\131\306\112\231\045
+\024\124\353\046\307\363\177\031\325\060\160\217\257\260\106\052
+\377\255\353\051\355\327\237\252\004\207\243\324\371\211\245\064
+\137\333\103\221\202\066\331\146\074\261\270\271\202\375\234\072
+\076\020\310\073\357\006\145\146\172\233\031\030\075\377\161\121
+\074\060\056\137\276\075\167\163\262\135\006\154\303\043\126\232
+\053\205\046\222\034\247\002\263\344\077\015\257\010\171\202\270
+\066\075\352\234\323\065\263\274\151\312\365\314\235\350\375\144
+\215\027\200\063\156\136\112\135\231\311\036\207\264\235\032\300
+\325\156\023\065\043\136\337\233\137\075\357\326\367\166\302\352
+\076\273\170\015\034\102\147\153\004\330\370\326\332\157\213\362
+\104\240\001\253\002\001\003\243\201\305\060\201\302\060\035\006
+\003\125\035\016\004\026\004\024\277\137\267\321\316\335\037\206
+\364\133\125\254\334\327\020\302\016\251\210\347\060\201\222\006
+\003\125\035\043\004\201\212\060\201\207\200\024\277\137\267\321
+\316\335\037\206\364\133\125\254\334\327\020\302\016\251\210\347
+\241\154\244\152\060\150\061\013\060\011\006\003\125\004\006\023
+\002\125\123\061\045\060\043\006\003\125\004\012\023\034\123\164
+\141\162\146\151\145\154\144\040\124\145\143\150\156\157\154\157
+\147\151\145\163\054\040\111\156\143\056\061\062\060\060\006\003
+\125\004\013\023\051\123\164\141\162\146\151\145\154\144\040\103
+\154\141\163\163\040\062\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\202\001
+\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202
+\001\001\000\005\235\077\210\235\321\311\032\125\241\254\151\363
+\363\131\332\233\001\207\032\117\127\251\241\171\011\052\333\367
+\057\262\036\314\307\136\152\330\203\207\241\227\357\111\065\076
+\167\006\101\130\142\277\216\130\270\012\147\077\354\263\335\041
+\146\037\311\124\372\162\314\075\114\100\330\201\257\167\236\203
+\172\273\242\307\365\064\027\216\331\021\100\364\374\054\052\115
+\025\177\247\142\135\056\045\323\000\013\040\032\035\150\371\027
+\270\364\275\213\355\050\131\335\115\026\213\027\203\310\262\145
+\307\055\172\245\252\274\123\206\155\335\127\244\312\370\040\101
+\013\150\360\364\373\164\276\126\135\172\171\365\371\035\205\343
+\055\225\276\365\161\220\103\314\215\037\232\000\012\207\051\351
+\125\042\130\000\043\352\343\022\103\051\133\107\010\335\214\101
+\152\145\006\250\345\041\252\101\264\225\041\225\271\175\321\064
+\253\023\326\255\274\334\342\075\071\315\275\076\165\160\241\030
+\131\003\311\042\264\217\234\325\136\052\327\245\266\324\012\155
+\370\267\100\021\106\232\037\171\016\142\277\017\227\354\340\057
+\037\027\224
+END
+
+# Trust for Certificate "Starfield Class 2 CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Starfield Class 2 CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\255\176\034\050\260\144\357\217\140\003\100\040\024\303\320\343
+\067\016\265\212
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\062\112\113\273\310\143\151\233\276\164\232\306\335\035\106\044
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151
+\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163
+\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023
+\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163
+\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "StartCom Ltd."
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "StartCom Ltd."
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\111\114
+\061\017\060\015\006\003\125\004\010\023\006\111\163\162\141\145
+\154\061\016\060\014\006\003\125\004\007\023\005\105\151\154\141
+\164\061\026\060\024\006\003\125\004\012\023\015\123\164\141\162
+\164\103\157\155\040\114\164\144\056\061\032\060\030\006\003\125
+\004\013\023\021\103\101\040\101\165\164\150\157\162\151\164\171
+\040\104\145\160\056\061\051\060\047\006\003\125\004\003\023\040
+\106\162\145\145\040\123\123\114\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026
+\022\141\144\155\151\156\100\163\164\141\162\164\143\157\155\056
+\157\162\147
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\111\114
+\061\017\060\015\006\003\125\004\010\023\006\111\163\162\141\145
+\154\061\016\060\014\006\003\125\004\007\023\005\105\151\154\141
+\164\061\026\060\024\006\003\125\004\012\023\015\123\164\141\162
+\164\103\157\155\040\114\164\144\056\061\032\060\030\006\003\125
+\004\013\023\021\103\101\040\101\165\164\150\157\162\151\164\171
+\040\104\145\160\056\061\051\060\047\006\003\125\004\003\023\040
+\106\162\145\145\040\123\123\114\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026
+\022\141\144\155\151\156\100\163\164\141\162\164\143\157\155\056
+\157\162\147
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\026\060\202\004\177\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\201\260\061\013\060\011\006\003\125\004\006\023\002\111\114\061
+\017\060\015\006\003\125\004\010\023\006\111\163\162\141\145\154
+\061\016\060\014\006\003\125\004\007\023\005\105\151\154\141\164
+\061\026\060\024\006\003\125\004\012\023\015\123\164\141\162\164
+\103\157\155\040\114\164\144\056\061\032\060\030\006\003\125\004
+\013\023\021\103\101\040\101\165\164\150\157\162\151\164\171\040
+\104\145\160\056\061\051\060\047\006\003\125\004\003\023\040\106
+\162\145\145\040\123\123\114\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\061
+\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026\022
+\141\144\155\151\156\100\163\164\141\162\164\143\157\155\056\157
+\162\147\060\036\027\015\060\065\060\063\061\067\061\067\063\067
+\064\070\132\027\015\063\065\060\063\061\060\061\067\063\067\064
+\070\132\060\201\260\061\013\060\011\006\003\125\004\006\023\002
+\111\114\061\017\060\015\006\003\125\004\010\023\006\111\163\162
+\141\145\154\061\016\060\014\006\003\125\004\007\023\005\105\151
+\154\141\164\061\026\060\024\006\003\125\004\012\023\015\123\164
+\141\162\164\103\157\155\040\114\164\144\056\061\032\060\030\006
+\003\125\004\013\023\021\103\101\040\101\165\164\150\157\162\151
+\164\171\040\104\145\160\056\061\051\060\047\006\003\125\004\003
+\023\040\106\162\145\145\040\123\123\114\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011
+\001\026\022\141\144\155\151\156\100\163\164\141\162\164\143\157
+\155\056\157\162\147\060\201\237\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\201\215\000\060\201\211\002\201
+\201\000\355\204\140\000\043\236\310\112\121\051\047\336\072\241
+\071\265\151\253\011\262\057\064\375\141\334\075\323\260\317\261
+\327\302\304\302\261\344\226\126\304\276\252\024\016\347\314\072
+\120\310\072\142\235\303\243\254\131\173\216\356\125\032\034\107
+\276\243\227\071\263\265\357\043\054\010\350\330\257\163\057\271
+\311\203\350\355\000\017\310\165\245\057\064\114\030\350\166\210
+\043\111\212\333\266\355\150\332\303\265\142\051\114\245\113\267
+\230\264\011\024\020\240\370\376\142\166\042\025\013\244\326\010
+\057\065\002\003\001\000\001\243\202\002\074\060\202\002\070\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\013\006\003\125\035\017\004\004\003\002\001\346\060\035\006
+\003\125\035\016\004\026\004\024\034\211\303\226\314\275\376\062
+\325\015\214\201\061\266\230\235\215\050\144\215\060\201\335\006
+\003\125\035\043\004\201\325\060\201\322\200\024\034\211\303\226
+\314\275\376\062\325\015\214\201\061\266\230\235\215\050\144\215
+\241\201\266\244\201\263\060\201\260\061\013\060\011\006\003\125
+\004\006\023\002\111\114\061\017\060\015\006\003\125\004\010\023
+\006\111\163\162\141\145\154\061\016\060\014\006\003\125\004\007
+\023\005\105\151\154\141\164\061\026\060\024\006\003\125\004\012
+\023\015\123\164\141\162\164\103\157\155\040\114\164\144\056\061
+\032\060\030\006\003\125\004\013\023\021\103\101\040\101\165\164
+\150\157\162\151\164\171\040\104\145\160\056\061\051\060\047\006
+\003\125\004\003\023\040\106\162\145\145\040\123\123\114\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110\206
+\367\015\001\011\001\026\022\141\144\155\151\156\100\163\164\141
+\162\164\143\157\155\056\157\162\147\202\001\000\060\035\006\003
+\125\035\021\004\026\060\024\201\022\141\144\155\151\156\100\163
+\164\141\162\164\143\157\155\056\157\162\147\060\035\006\003\125
+\035\022\004\026\060\024\201\022\141\144\155\151\156\100\163\164
+\141\162\164\143\157\155\056\157\162\147\060\021\006\011\140\206
+\110\001\206\370\102\001\001\004\004\003\002\000\007\060\057\006
+\011\140\206\110\001\206\370\102\001\015\004\042\026\040\106\162
+\145\145\040\123\123\114\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\062
+\006\011\140\206\110\001\206\370\102\001\004\004\045\026\043\150
+\164\164\160\072\057\057\143\145\162\164\056\163\164\141\162\164
+\143\157\155\056\157\162\147\057\143\141\055\143\162\154\056\143
+\162\154\060\050\006\011\140\206\110\001\206\370\102\001\002\004
+\033\026\031\150\164\164\160\072\057\057\143\145\162\164\056\163
+\164\141\162\164\143\157\155\056\157\162\147\057\060\071\006\011
+\140\206\110\001\206\370\102\001\010\004\054\026\052\150\164\164
+\160\072\057\057\143\145\162\164\056\163\164\141\162\164\143\157
+\155\056\157\162\147\057\151\156\144\145\170\056\160\150\160\077
+\141\160\160\075\061\061\061\060\015\006\011\052\206\110\206\367
+\015\001\001\004\005\000\003\201\201\000\154\161\045\341\236\064
+\221\041\357\333\154\275\001\010\126\217\210\330\101\072\123\365
+\162\337\047\127\113\166\204\367\150\244\376\353\077\011\176\050
+\270\127\352\037\301\252\342\377\226\237\111\231\346\262\225\163
+\226\306\110\307\136\215\007\162\126\370\203\217\237\167\257\051
+\323\105\016\244\356\260\066\164\055\360\315\230\043\173\067\113
+\332\376\121\230\304\036\064\074\210\375\231\073\120\247\301\213
+\063\307\302\122\026\022\225\123\145\042\357\272\213\316\142\333
+\160\043\261\200\337\032\040\070\347\176
+END
+
+# Trust for Certificate "StartCom Ltd."
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "StartCom Ltd."
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\225\346\255\370\327\161\106\002\115\325\152\041\262\347\077\315
+\362\073\065\377
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\010\174\130\037\122\053\104\264\073\171\315\001\370\305\303\311
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\260\061\013\060\011\006\003\125\004\006\023\002\111\114
+\061\017\060\015\006\003\125\004\010\023\006\111\163\162\141\145
+\154\061\016\060\014\006\003\125\004\007\023\005\105\151\154\141
+\164\061\026\060\024\006\003\125\004\012\023\015\123\164\141\162
+\164\103\157\155\040\114\164\144\056\061\032\060\030\006\003\125
+\004\013\023\021\103\101\040\101\165\164\150\157\162\151\164\171
+\040\104\145\160\056\061\051\060\047\006\003\125\004\003\023\040
+\106\162\145\145\040\123\123\114\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\061\041\060\037\006\011\052\206\110\206\367\015\001\011\001\026
+\022\141\144\155\151\156\100\163\164\141\162\164\143\157\155\056
+\157\162\147
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "StartCom Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "StartCom Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\111\114\061
+\026\060\024\006\003\125\004\012\023\015\123\164\141\162\164\103
+\157\155\040\114\164\144\056\061\053\060\051\006\003\125\004\013
+\023\042\123\145\143\165\162\145\040\104\151\147\151\164\141\154
+\040\103\145\162\164\151\146\151\143\141\164\145\040\123\151\147
+\156\151\156\147\061\051\060\047\006\003\125\004\003\023\040\123
+\164\141\162\164\103\157\155\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\111\114\061
+\026\060\024\006\003\125\004\012\023\015\123\164\141\162\164\103
+\157\155\040\114\164\144\056\061\053\060\051\006\003\125\004\013
+\023\042\123\145\143\165\162\145\040\104\151\147\151\164\141\154
+\040\103\145\162\164\151\146\151\143\141\164\145\040\123\151\147
+\156\151\156\147\061\051\060\047\006\003\125\004\003\023\040\123
+\164\141\162\164\103\157\155\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\311\060\202\005\261\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\175\061\013\060\011\006\003\125\004\006\023\002\111\114\061\026
+\060\024\006\003\125\004\012\023\015\123\164\141\162\164\103\157
+\155\040\114\164\144\056\061\053\060\051\006\003\125\004\013\023
+\042\123\145\143\165\162\145\040\104\151\147\151\164\141\154\040
+\103\145\162\164\151\146\151\143\141\164\145\040\123\151\147\156
+\151\156\147\061\051\060\047\006\003\125\004\003\023\040\123\164
+\141\162\164\103\157\155\040\103\145\162\164\151\146\151\143\141
+\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\036
+\027\015\060\066\060\071\061\067\061\071\064\066\063\066\132\027
+\015\063\066\060\071\061\067\061\071\064\066\063\066\132\060\175
+\061\013\060\011\006\003\125\004\006\023\002\111\114\061\026\060
+\024\006\003\125\004\012\023\015\123\164\141\162\164\103\157\155
+\040\114\164\144\056\061\053\060\051\006\003\125\004\013\023\042
+\123\145\143\165\162\145\040\104\151\147\151\164\141\154\040\103
+\145\162\164\151\146\151\143\141\164\145\040\123\151\147\156\151
+\156\147\061\051\060\047\006\003\125\004\003\023\040\123\164\141
+\162\164\103\157\155\040\103\145\162\164\151\146\151\143\141\164
+\151\157\156\040\101\165\164\150\157\162\151\164\171\060\202\002
+\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\202\002\017\000\060\202\002\012\002\202\002\001\000\301\210
+\333\011\274\154\106\174\170\237\225\173\265\063\220\362\162\142
+\326\301\066\040\042\044\136\316\351\167\362\103\012\242\006\144
+\244\314\216\066\370\070\346\043\360\156\155\261\074\335\162\243
+\205\034\241\323\075\264\063\053\323\057\257\376\352\260\101\131
+\147\266\304\006\175\012\236\164\205\326\171\114\200\067\172\337
+\071\005\122\131\367\364\033\106\103\244\322\205\205\322\303\161
+\363\165\142\064\272\054\212\177\036\217\356\355\064\320\021\307
+\226\315\122\075\272\063\326\335\115\336\013\073\112\113\237\302
+\046\057\372\265\026\034\162\065\167\312\074\135\346\312\341\046
+\213\032\066\166\134\001\333\164\024\045\376\355\265\240\210\017
+\335\170\312\055\037\007\227\060\001\055\162\171\372\106\326\023
+\052\250\271\246\253\203\111\035\345\362\357\335\344\001\216\030
+\012\217\143\123\026\205\142\251\016\031\072\314\265\146\246\302
+\153\164\007\344\053\341\166\076\264\155\330\366\104\341\163\142
+\037\073\304\276\240\123\126\045\154\121\011\367\252\253\312\277
+\166\375\155\233\363\235\333\277\075\146\274\014\126\252\257\230
+\110\225\072\113\337\247\130\120\331\070\165\251\133\352\103\014
+\002\377\231\353\350\154\115\160\133\051\145\234\335\252\135\314
+\257\001\061\354\014\353\322\215\350\352\234\173\346\156\367\047
+\146\014\032\110\327\156\102\343\077\336\041\076\173\341\015\160
+\373\143\252\250\154\032\124\264\134\045\172\311\242\311\213\026
+\246\273\054\176\027\136\005\115\130\156\022\035\001\356\022\020
+\015\306\062\177\030\377\374\364\372\315\156\221\350\066\111\276
+\032\110\151\213\302\226\115\032\022\262\151\027\301\012\220\326
+\372\171\042\110\277\272\173\151\370\160\307\372\172\067\330\330
+\015\322\166\117\127\377\220\267\343\221\322\335\357\302\140\267
+\147\072\335\376\252\234\360\324\213\177\162\042\316\306\237\227
+\266\370\257\212\240\020\250\331\373\030\306\266\265\134\122\074
+\211\266\031\052\163\001\012\017\003\263\022\140\362\172\057\201
+\333\243\156\377\046\060\227\365\213\335\211\127\266\255\075\263
+\257\053\305\267\166\002\360\245\326\053\232\206\024\052\162\366
+\343\063\214\135\011\113\023\337\273\214\164\023\122\113\002\003
+\001\000\001\243\202\002\122\060\202\002\116\060\014\006\003\125
+\035\023\004\005\060\003\001\001\377\060\013\006\003\125\035\017
+\004\004\003\002\001\256\060\035\006\003\125\035\016\004\026\004
+\024\116\013\357\032\244\100\133\245\027\151\207\060\312\064\150
+\103\320\101\256\362\060\144\006\003\125\035\037\004\135\060\133
+\060\054\240\052\240\050\206\046\150\164\164\160\072\057\057\143
+\145\162\164\056\163\164\141\162\164\143\157\155\056\157\162\147
+\057\163\146\163\143\141\055\143\162\154\056\143\162\154\060\053
+\240\051\240\047\206\045\150\164\164\160\072\057\057\143\162\154
+\056\163\164\141\162\164\143\157\155\056\157\162\147\057\163\146
+\163\143\141\055\143\162\154\056\143\162\154\060\202\001\135\006
+\003\125\035\040\004\202\001\124\060\202\001\120\060\202\001\114
+\006\013\053\006\001\004\001\201\265\067\001\001\001\060\202\001
+\073\060\057\006\010\053\006\001\005\005\007\002\001\026\043\150
+\164\164\160\072\057\057\143\145\162\164\056\163\164\141\162\164
+\143\157\155\056\157\162\147\057\160\157\154\151\143\171\056\160
+\144\146\060\065\006\010\053\006\001\005\005\007\002\001\026\051
+\150\164\164\160\072\057\057\143\145\162\164\056\163\164\141\162
+\164\143\157\155\056\157\162\147\057\151\156\164\145\162\155\145
+\144\151\141\164\145\056\160\144\146\060\201\320\006\010\053\006
+\001\005\005\007\002\002\060\201\303\060\047\026\040\123\164\141
+\162\164\040\103\157\155\155\145\162\143\151\141\154\040\050\123
+\164\141\162\164\103\157\155\051\040\114\164\144\056\060\003\002
+\001\001\032\201\227\114\151\155\151\164\145\144\040\114\151\141
+\142\151\154\151\164\171\054\040\162\145\141\144\040\164\150\145
+\040\163\145\143\164\151\157\156\040\052\114\145\147\141\154\040
+\114\151\155\151\164\141\164\151\157\156\163\052\040\157\146\040
+\164\150\145\040\123\164\141\162\164\103\157\155\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\040\120\157\154\151\143\171\040\141\166\141\151
+\154\141\142\154\145\040\141\164\040\150\164\164\160\072\057\057
+\143\145\162\164\056\163\164\141\162\164\143\157\155\056\157\162
+\147\057\160\157\154\151\143\171\056\160\144\146\060\021\006\011
+\140\206\110\001\206\370\102\001\001\004\004\003\002\000\007\060
+\070\006\011\140\206\110\001\206\370\102\001\015\004\053\026\051
+\123\164\141\162\164\103\157\155\040\106\162\145\145\040\123\123
+\114\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\101\165\164\150\157\162\151\164\171\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\202\002\001\000\026\154\231
+\364\146\014\064\365\320\205\136\175\012\354\332\020\116\070\034
+\136\337\246\045\005\113\221\062\301\350\073\361\075\335\104\011
+\133\007\111\212\051\313\146\002\267\261\232\367\045\230\011\074
+\216\033\341\335\066\207\053\113\273\150\323\071\146\075\240\046
+\307\362\071\221\035\121\253\202\173\176\325\316\132\344\342\003
+\127\160\151\227\010\371\136\130\246\012\337\214\006\232\105\026
+\026\070\012\136\127\366\142\307\172\002\005\346\274\036\265\362
+\236\364\251\051\203\370\262\024\343\156\050\207\104\303\220\032
+\336\070\251\074\254\103\115\144\105\316\335\050\251\134\362\163
+\173\004\370\027\350\253\261\363\056\134\144\156\163\061\072\022
+\270\274\263\021\344\175\217\201\121\232\073\215\211\364\115\223
+\146\173\074\003\355\323\232\035\232\363\145\120\365\240\320\165
+\237\057\257\360\352\202\103\230\370\151\234\211\171\304\103\216
+\106\162\343\144\066\022\257\367\045\036\070\211\220\167\176\303
+\153\152\271\303\313\104\113\254\170\220\213\347\307\054\036\113
+\021\104\310\064\122\047\315\012\135\237\205\301\211\325\032\170
+\362\225\020\123\062\335\200\204\146\165\331\265\150\050\373\141
+\056\276\204\250\070\300\231\022\206\245\036\147\144\255\006\056
+\057\251\160\205\307\226\017\174\211\145\365\216\103\124\016\253
+\335\245\200\071\224\140\300\064\311\226\160\054\243\022\365\037
+\110\173\275\034\176\153\267\235\220\364\042\073\256\370\374\052
+\312\372\202\122\240\357\257\113\125\223\353\301\265\360\042\213
+\254\064\116\046\042\004\241\207\054\165\112\267\345\175\023\327
+\270\014\144\300\066\322\311\057\206\022\214\043\011\301\033\202
+\073\163\111\243\152\127\207\224\345\326\170\305\231\103\143\343
+\115\340\167\055\341\145\231\162\151\004\032\107\011\346\017\001
+\126\044\373\037\277\016\171\251\130\056\271\304\011\001\176\225
+\272\155\000\006\076\262\352\112\020\071\330\320\053\365\277\354
+\165\277\227\002\305\011\033\010\334\125\067\342\201\373\067\204
+\103\142\040\312\347\126\113\145\352\376\154\301\044\223\044\241
+\064\353\005\377\232\042\256\233\175\077\361\145\121\012\246\060
+\152\263\364\210\034\200\015\374\162\212\350\203\136
+END
+
+# Trust for Certificate "StartCom Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "StartCom Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\076\053\367\362\003\033\226\363\214\346\304\330\250\135\076\055
+\130\107\152\017
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\042\115\217\212\374\367\065\302\273\127\064\220\173\213\042\026
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\175\061\013\060\011\006\003\125\004\006\023\002\111\114\061
+\026\060\024\006\003\125\004\012\023\015\123\164\141\162\164\103
+\157\155\040\114\164\144\056\061\053\060\051\006\003\125\004\013
+\023\042\123\145\143\165\162\145\040\104\151\147\151\164\141\154
+\040\103\145\162\164\151\146\151\143\141\164\145\040\123\151\147
+\156\151\156\147\061\051\060\047\006\003\125\004\003\023\040\123
+\164\141\162\164\103\157\155\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Taiwan GRCA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Taiwan GRCA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\077\061\013\060\011\006\003\125\004\006\023\002\124\127\061
+\060\060\056\006\003\125\004\012\014\047\107\157\166\145\162\156
+\155\145\156\164\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\077\061\013\060\011\006\003\125\004\006\023\002\124\127\061
+\060\060\056\006\003\125\004\012\014\047\107\157\166\145\162\156
+\155\145\156\164\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\037\235\131\132\327\057\302\006\104\245\200\010\151\343
+\136\366
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\162\060\202\003\132\240\003\002\001\002\002\020\037
+\235\131\132\327\057\302\006\104\245\200\010\151\343\136\366\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\077
+\061\013\060\011\006\003\125\004\006\023\002\124\127\061\060\060
+\056\006\003\125\004\012\014\047\107\157\166\145\162\156\155\145
+\156\164\040\122\157\157\164\040\103\145\162\164\151\146\151\143
+\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060
+\036\027\015\060\062\061\062\060\065\061\063\062\063\063\063\132
+\027\015\063\062\061\062\060\065\061\063\062\063\063\063\132\060
+\077\061\013\060\011\006\003\125\004\006\023\002\124\127\061\060
+\060\056\006\003\125\004\012\014\047\107\157\166\145\162\156\155
+\145\156\164\040\122\157\157\164\040\103\145\162\164\151\146\151
+\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171
+\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001
+\000\232\045\270\354\314\242\165\250\173\367\316\133\131\212\311
+\321\206\022\010\124\354\234\362\347\106\366\210\363\174\351\245
+\337\114\107\066\244\033\001\034\177\036\127\212\215\303\305\321
+\041\343\332\044\077\110\053\373\237\056\241\224\347\054\034\223
+\321\277\033\001\207\123\231\316\247\365\012\041\166\167\377\251
+\267\306\163\224\117\106\367\020\111\067\372\250\131\111\135\152
+\201\007\126\362\212\371\006\320\367\160\042\115\264\267\101\271
+\062\270\261\360\261\303\234\077\160\375\123\335\201\252\330\143
+\170\366\330\123\156\241\254\152\204\044\162\124\206\306\322\262
+\312\034\016\171\201\326\265\160\142\010\001\056\116\117\016\325
+\021\257\251\257\345\232\277\334\314\207\155\046\344\311\127\242
+\373\226\371\314\341\077\123\214\154\114\176\233\123\010\013\154
+\027\373\147\310\302\255\261\315\200\264\227\334\166\001\026\025
+\351\152\327\244\341\170\107\316\206\325\373\061\363\372\061\276
+\064\252\050\373\160\114\035\111\307\257\054\235\155\146\246\266
+\215\144\176\265\040\152\235\073\201\266\217\100\000\147\113\211
+\206\270\314\145\376\025\123\351\004\301\326\137\035\104\327\012
+\057\047\232\106\175\241\015\165\255\124\206\025\334\111\073\361
+\226\316\017\233\240\354\243\172\135\276\325\052\165\102\345\173
+\336\245\266\252\257\050\254\254\220\254\070\267\325\150\065\046
+\172\334\367\073\363\375\105\233\321\273\103\170\156\157\361\102
+\124\152\230\360\015\255\227\351\122\136\351\325\152\162\336\152
+\367\033\140\024\364\245\344\266\161\147\252\037\352\342\115\301
+\102\100\376\147\106\027\070\057\107\077\161\234\256\345\041\312
+\141\055\155\007\250\204\174\055\356\121\045\361\143\220\236\375
+\341\127\210\153\357\212\043\155\261\346\275\077\255\321\075\226
+\013\205\215\315\153\047\273\267\005\233\354\273\221\251\012\007
+\022\002\227\116\040\220\360\377\015\036\342\101\073\323\100\072
+\347\215\135\332\146\344\002\260\007\122\230\134\016\216\063\234
+\302\246\225\373\125\031\156\114\216\256\113\017\275\301\070\115
+\136\217\204\035\146\315\305\140\226\264\122\132\005\211\216\225
+\172\230\301\221\074\225\043\262\016\364\171\264\311\174\301\112
+\041\002\003\001\000\001\243\152\060\150\060\035\006\003\125\035
+\016\004\026\004\024\314\314\357\314\051\140\244\073\261\222\266
+\074\372\062\142\217\254\045\025\073\060\014\006\003\125\035\023
+\004\005\060\003\001\001\377\060\071\006\004\147\052\007\000\004
+\061\060\057\060\055\002\001\000\060\011\006\005\053\016\003\002
+\032\005\000\060\007\006\005\147\052\003\000\000\004\024\003\233
+\360\042\023\377\225\050\066\323\334\236\300\062\373\061\072\212
+\121\145\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\002\001\000\100\200\112\372\046\311\316\136\060\335
+\117\206\164\166\130\365\256\263\203\063\170\244\172\164\027\031
+\116\351\122\265\271\340\012\164\142\252\150\312\170\240\114\232
+\216\054\043\056\325\152\022\044\277\324\150\323\212\320\330\234
+\237\264\037\014\336\070\176\127\070\374\215\342\117\136\014\237
+\253\073\322\377\165\227\313\244\343\147\010\377\345\300\026\265
+\110\001\175\351\371\012\377\033\345\152\151\277\170\041\250\302
+\247\043\251\206\253\166\126\350\016\014\366\023\335\052\146\212
+\144\111\075\032\030\207\220\004\237\102\122\267\117\313\376\107
+\101\166\065\357\377\000\166\066\105\062\233\306\106\205\135\342
+\044\260\036\343\110\226\230\127\107\224\125\172\017\101\261\104
+\044\363\301\376\032\153\277\210\375\301\246\332\223\140\136\201
+\112\231\040\234\110\146\031\265\000\171\124\017\270\054\057\113
+\274\251\135\133\140\177\214\207\245\340\122\143\052\276\330\073
+\205\100\025\376\036\266\145\077\305\113\332\176\265\172\065\051
+\243\056\172\230\140\042\243\364\175\047\116\055\352\264\164\074
+\351\017\244\063\017\020\021\274\023\001\326\345\016\323\277\265
+\022\242\341\105\043\300\314\010\156\141\267\211\253\203\343\044
+\036\346\135\007\347\037\040\076\317\147\310\347\254\060\155\047
+\113\150\156\113\052\134\002\010\064\333\370\166\344\147\243\046
+\234\077\242\062\302\112\305\201\030\061\020\126\252\204\357\055
+\012\377\270\037\167\322\277\245\130\240\142\344\327\113\221\165
+\215\211\200\230\176\155\313\123\116\136\257\366\262\227\205\227
+\271\332\125\006\271\044\356\327\306\070\036\143\033\022\073\225
+\341\130\254\362\337\204\325\137\231\057\015\125\133\346\070\333
+\056\077\162\351\110\205\313\273\051\023\217\036\070\125\271\363
+\262\304\060\231\043\116\135\362\110\241\022\014\334\022\220\011
+\220\124\221\003\074\107\345\325\311\145\340\267\113\175\354\107
+\323\263\013\076\255\236\320\164\000\016\353\275\121\255\300\336
+\054\300\303\152\376\357\334\013\247\372\106\337\140\333\234\246
+\131\120\165\043\151\163\223\262\371\374\002\323\107\346\161\316
+\020\002\356\047\214\204\377\254\105\015\023\134\203\062\340\045
+\245\206\054\174\364\022
+END
+
+# Trust for Certificate "Taiwan GRCA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Taiwan GRCA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\364\213\021\277\336\253\276\224\124\040\161\346\101\336\153\276
+\210\053\100\271
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\067\205\104\123\062\105\037\040\360\363\225\341\045\304\103\116
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\077\061\013\060\011\006\003\125\004\006\023\002\124\127\061
+\060\060\056\006\003\125\004\012\014\047\107\157\166\145\162\156
+\155\145\156\164\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164
+\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\037\235\131\132\327\057\302\006\104\245\200\010\151\343
+\136\366
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Firmaprofesional Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Firmaprofesional Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\235\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\042\060\040\006\003\125\004\007\023\031\103\057\040\115\165
+\156\164\141\156\145\162\040\062\064\064\040\102\141\162\143\145
+\154\157\156\141\061\102\060\100\006\003\125\004\003\023\071\101
+\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162\164
+\151\146\151\143\141\143\151\157\156\040\106\151\162\155\141\160
+\162\157\146\145\163\151\157\156\141\154\040\103\111\106\040\101
+\066\062\066\063\064\060\066\070\061\046\060\044\006\011\052\206
+\110\206\367\015\001\011\001\026\027\143\141\100\146\151\162\155
+\141\160\162\157\146\145\163\151\157\156\141\154\056\143\157\155
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\235\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\042\060\040\006\003\125\004\007\023\031\103\057\040\115\165
+\156\164\141\156\145\162\040\062\064\064\040\102\141\162\143\145
+\154\157\156\141\061\102\060\100\006\003\125\004\003\023\071\101
+\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162\164
+\151\146\151\143\141\143\151\157\156\040\106\151\162\155\141\160
+\162\157\146\145\163\151\157\156\141\154\040\103\111\106\040\101
+\066\062\066\063\064\060\066\070\061\046\060\044\006\011\052\206
+\110\206\367\015\001\011\001\026\027\143\141\100\146\151\162\155
+\141\160\162\157\146\145\163\151\157\156\141\154\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\127\060\202\003\077\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\235\061\013\060\011\006\003\125\004\006\023\002\105\123\061
+\042\060\040\006\003\125\004\007\023\031\103\057\040\115\165\156
+\164\141\156\145\162\040\062\064\064\040\102\141\162\143\145\154
+\157\156\141\061\102\060\100\006\003\125\004\003\023\071\101\165
+\164\157\162\151\144\141\144\040\144\145\040\103\145\162\164\151
+\146\151\143\141\143\151\157\156\040\106\151\162\155\141\160\162
+\157\146\145\163\151\157\156\141\154\040\103\111\106\040\101\066
+\062\066\063\064\060\066\070\061\046\060\044\006\011\052\206\110
+\206\367\015\001\011\001\026\027\143\141\100\146\151\162\155\141
+\160\162\157\146\145\163\151\157\156\141\154\056\143\157\155\060
+\036\027\015\060\061\061\060\062\064\062\062\060\060\060\060\132
+\027\015\061\063\061\060\062\064\062\062\060\060\060\060\132\060
+\201\235\061\013\060\011\006\003\125\004\006\023\002\105\123\061
+\042\060\040\006\003\125\004\007\023\031\103\057\040\115\165\156
+\164\141\156\145\162\040\062\064\064\040\102\141\162\143\145\154
+\157\156\141\061\102\060\100\006\003\125\004\003\023\071\101\165
+\164\157\162\151\144\141\144\040\144\145\040\103\145\162\164\151
+\146\151\143\141\143\151\157\156\040\106\151\162\155\141\160\162
+\157\146\145\163\151\157\156\141\154\040\103\111\106\040\101\066
+\062\066\063\064\060\066\070\061\046\060\044\006\011\052\206\110
+\206\367\015\001\011\001\026\027\143\141\100\146\151\162\155\141
+\160\162\157\146\145\163\151\157\156\141\154\056\143\157\155\060
+\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001
+\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000
+\347\043\003\157\157\043\245\136\170\316\225\054\355\224\036\156
+\012\236\001\307\352\060\321\054\235\335\067\350\233\230\171\126
+\323\374\163\337\320\212\336\125\217\121\371\132\352\336\265\160
+\304\355\244\355\377\243\015\156\017\144\120\061\257\001\047\130
+\256\376\154\247\112\057\027\055\323\163\325\023\034\217\131\245
+\064\054\035\124\004\105\315\150\270\240\300\003\245\317\205\102
+\107\225\050\133\317\357\200\154\340\220\227\212\001\074\035\363
+\207\020\060\046\110\175\327\374\351\235\221\161\377\101\232\251
+\100\265\067\234\051\040\117\037\122\343\240\175\023\155\124\267
+\012\336\351\152\116\007\254\254\031\137\334\176\142\164\366\262
+\005\000\272\205\240\375\035\070\156\313\132\273\206\274\224\147
+\063\065\203\054\037\043\315\370\310\221\161\314\227\213\357\256
+\017\334\051\003\033\300\071\353\160\355\301\156\016\330\147\013
+\211\251\274\065\344\357\266\064\264\245\266\304\055\245\276\320
+\303\224\044\110\333\337\226\323\000\265\146\032\213\146\005\017
+\335\077\077\313\077\252\136\232\112\370\264\112\357\225\067\033
+\002\003\001\000\001\243\201\237\060\201\234\060\052\006\003\125
+\035\021\004\043\060\041\206\037\150\164\164\160\072\057\057\167
+\167\167\056\146\151\162\155\141\160\162\157\146\145\163\151\157
+\156\141\154\056\143\157\155\060\022\006\003\125\035\023\001\001
+\377\004\010\060\006\001\001\377\002\001\001\060\053\006\003\125
+\035\020\004\044\060\042\200\017\062\060\060\061\061\060\062\064
+\062\062\060\060\060\060\132\201\017\062\060\061\063\061\060\062
+\064\062\062\060\060\060\060\132\060\016\006\003\125\035\017\001
+\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016\004
+\026\004\024\063\013\240\146\321\352\332\316\336\142\223\004\050
+\122\265\024\177\070\150\267\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\003\202\001\001\000\107\163\376\215\047
+\124\360\365\324\167\234\047\171\127\127\267\025\126\354\307\330
+\130\267\001\002\364\063\355\223\120\210\236\174\106\261\275\077
+\024\157\361\263\107\110\213\214\227\006\327\352\176\243\134\052
+\273\115\057\107\342\370\071\006\311\234\056\061\032\003\170\364
+\274\070\306\042\213\063\061\360\026\004\004\175\371\166\344\113
+\327\300\346\203\354\131\314\077\336\377\117\153\267\147\176\246
+\206\201\062\043\003\235\310\367\137\301\112\140\245\222\251\261
+\244\240\140\303\170\207\263\042\363\052\353\133\251\355\005\253
+\067\017\261\342\323\225\166\143\126\164\214\130\162\033\067\345
+\144\241\276\115\014\223\230\014\227\366\207\155\263\077\347\313
+\200\246\355\210\307\137\120\142\002\350\231\164\026\320\346\264
+\071\361\047\313\310\100\326\343\206\020\251\043\022\222\340\151
+\101\143\247\257\045\013\300\305\222\313\036\230\243\132\272\305
+\063\017\240\227\001\335\177\340\173\326\006\124\317\241\342\115
+\070\353\113\120\265\313\046\364\312\332\160\112\152\241\342\171
+\252\341\247\063\366\375\112\037\366\331\140
+END
+
+# Trust for Certificate "Firmaprofesional Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Firmaprofesional Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\251\142\217\113\230\251\033\110\065\272\322\301\106\062\206\273
+\146\144\152\214
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\021\222\171\100\074\261\203\100\345\253\146\112\147\222\200\337
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\235\061\013\060\011\006\003\125\004\006\023\002\105\123
+\061\042\060\040\006\003\125\004\007\023\031\103\057\040\115\165
+\156\164\141\156\145\162\040\062\064\064\040\102\141\162\143\145
+\154\157\156\141\061\102\060\100\006\003\125\004\003\023\071\101
+\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162\164
+\151\146\151\143\141\143\151\157\156\040\106\151\162\155\141\160
+\162\157\146\145\163\151\157\156\141\154\040\103\111\106\040\101
+\066\062\066\063\064\060\066\070\061\046\060\044\006\011\052\206
+\110\206\367\015\001\011\001\026\027\143\141\100\146\151\162\155
+\141\160\162\157\146\145\163\151\157\156\141\154\056\143\157\155
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Wells Fargo Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Wells Fargo Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\127\145\154\154\163
+\040\106\141\162\147\157\061\054\060\052\006\003\125\004\013\023
+\043\127\145\154\154\163\040\106\141\162\147\157\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\061\057\060\055\006\003\125\004\003\023\046\127
+\145\154\154\163\040\106\141\162\147\157\040\122\157\157\164\040
+\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\127\145\154\154\163
+\040\106\141\162\147\157\061\054\060\052\006\003\125\004\013\023
+\043\127\145\154\154\163\040\106\141\162\147\157\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\061\057\060\055\006\003\125\004\003\023\046\127
+\145\154\154\163\040\106\141\162\147\157\040\122\157\157\164\040
+\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\071\344\227\236
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\345\060\202\002\315\240\003\002\001\002\002\004\071
+\344\227\236\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\060\201\202\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\024\060\022\006\003\125\004\012\023\013\127\145\154
+\154\163\040\106\141\162\147\157\061\054\060\052\006\003\125\004
+\013\023\043\127\145\154\154\163\040\106\141\162\147\157\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\061\057\060\055\006\003\125\004\003\023
+\046\127\145\154\154\163\040\106\141\162\147\157\040\122\157\157
+\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165
+\164\150\157\162\151\164\171\060\036\027\015\060\060\061\060\061
+\061\061\066\064\061\062\070\132\027\015\062\061\060\061\061\064
+\061\066\064\061\062\070\132\060\201\202\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\024\060\022\006\003\125\004\012
+\023\013\127\145\154\154\163\040\106\141\162\147\157\061\054\060
+\052\006\003\125\004\013\023\043\127\145\154\154\163\040\106\141
+\162\147\157\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\061\057\060\055\006
+\003\125\004\003\023\046\127\145\154\154\163\040\106\141\162\147
+\157\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141
+\164\145\040\101\165\164\150\157\162\151\164\171\060\202\001\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\001\017\000\060\202\001\012\002\202\001\001\000\325\250\063
+\073\046\371\064\377\315\233\176\345\004\107\316\000\342\175\167
+\347\061\302\056\047\245\115\150\271\061\272\215\103\131\227\307
+\163\252\177\075\134\100\236\005\345\241\342\211\331\114\270\077
+\233\371\014\264\310\142\031\054\105\256\221\036\163\161\101\304
+\113\023\375\160\302\045\254\042\365\165\013\267\123\344\245\053
+\335\316\275\034\072\172\303\367\023\217\046\124\234\026\153\153
+\257\373\330\226\261\140\232\110\340\045\042\044\171\064\316\016
+\046\000\013\116\253\375\213\316\202\327\057\010\160\150\301\250
+\012\371\164\117\007\253\244\371\342\203\176\047\163\164\076\270
+\371\070\102\374\245\250\133\110\043\263\353\343\045\262\200\256
+\226\324\012\234\302\170\232\306\150\030\256\067\142\067\136\121
+\165\250\130\143\300\121\356\100\170\176\250\257\032\240\341\260
+\170\235\120\214\173\347\263\374\216\043\260\333\145\000\160\204
+\001\010\000\024\156\124\206\232\272\314\371\067\020\366\340\336
+\204\055\235\244\205\067\323\207\343\025\320\301\027\220\176\031
+\041\152\022\251\166\375\022\002\351\117\041\136\027\002\003\001
+\000\001\243\141\060\137\060\017\006\003\125\035\023\001\001\377
+\004\005\060\003\001\001\377\060\114\006\003\125\035\040\004\105
+\060\103\060\101\006\013\140\206\110\001\206\373\173\207\007\001
+\013\060\062\060\060\006\010\053\006\001\005\005\007\002\001\026
+\044\150\164\164\160\072\057\057\167\167\167\056\167\145\154\154
+\163\146\141\162\147\157\056\143\157\155\057\143\145\162\164\160
+\157\154\151\143\171\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\322\047\335\234\012\167\053
+\273\042\362\002\265\112\112\221\371\321\055\276\344\273\032\150
+\357\016\244\000\351\356\347\357\356\366\371\345\164\244\302\330
+\122\130\304\164\373\316\153\265\073\051\171\030\132\357\233\355
+\037\153\066\356\110\045\045\024\266\126\242\020\350\356\247\177
+\320\077\243\320\303\135\046\356\007\314\303\301\044\041\207\036
+\337\052\022\123\157\101\026\347\355\256\224\372\214\162\372\023
+\107\360\074\176\256\175\021\072\023\354\355\372\157\162\144\173
+\235\175\177\046\375\172\373\045\255\352\076\051\177\114\343\000
+\127\062\260\263\351\355\123\027\331\213\262\024\016\060\350\345
+\325\023\306\144\257\304\000\325\330\130\044\374\365\217\354\361
+\307\175\245\333\017\047\321\306\362\100\210\346\037\366\141\250
+\364\102\310\271\067\323\251\276\054\126\170\302\162\233\131\135
+\065\100\212\350\116\143\032\266\351\040\152\121\342\316\244\220
+\337\166\160\231\134\160\103\115\267\266\247\031\144\116\222\267
+\305\221\074\177\110\026\145\173\026\375\313\374\373\331\325\326
+\117\041\145\073\112\177\107\243\373
+END
+
+# Trust for Certificate "Wells Fargo Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Wells Fargo Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\223\346\253\042\003\003\265\043\050\334\332\126\236\272\344\321
+\321\314\373\145
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\040\013\112\172\210\247\251\102\206\212\137\164\126\173\210\005
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\024\060\022\006\003\125\004\012\023\013\127\145\154\154\163
+\040\106\141\162\147\157\061\054\060\052\006\003\125\004\013\023
+\043\127\145\154\154\163\040\106\141\162\147\157\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171\061\057\060\055\006\003\125\004\003\023\046\127
+\145\154\154\163\040\106\141\162\147\157\040\122\157\157\164\040
+\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150
+\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\004\071\344\227\236
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Swisscom Root CA 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Swisscom Root CA 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\143\150\061
+\021\060\017\006\003\125\004\012\023\010\123\167\151\163\163\143
+\157\155\061\045\060\043\006\003\125\004\013\023\034\104\151\147
+\151\164\141\154\040\103\145\162\164\151\146\151\143\141\164\145
+\040\123\145\162\166\151\143\145\163\061\033\060\031\006\003\125
+\004\003\023\022\123\167\151\163\163\143\157\155\040\122\157\157
+\164\040\103\101\040\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\143\150\061
+\021\060\017\006\003\125\004\012\023\010\123\167\151\163\163\143
+\157\155\061\045\060\043\006\003\125\004\013\023\034\104\151\147
+\151\164\141\154\040\103\145\162\164\151\146\151\143\141\164\145
+\040\123\145\162\166\151\143\145\163\061\033\060\031\006\003\125
+\004\003\023\022\123\167\151\163\163\143\157\155\040\122\157\157
+\164\040\103\101\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\134\013\205\134\013\347\131\101\337\127\314\077\177\235
+\250\066
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\331\060\202\003\301\240\003\002\001\002\002\020\134
+\013\205\134\013\347\131\101\337\127\314\077\177\235\250\066\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\144
+\061\013\060\011\006\003\125\004\006\023\002\143\150\061\021\060
+\017\006\003\125\004\012\023\010\123\167\151\163\163\143\157\155
+\061\045\060\043\006\003\125\004\013\023\034\104\151\147\151\164
+\141\154\040\103\145\162\164\151\146\151\143\141\164\145\040\123
+\145\162\166\151\143\145\163\061\033\060\031\006\003\125\004\003
+\023\022\123\167\151\163\163\143\157\155\040\122\157\157\164\040
+\103\101\040\061\060\036\027\015\060\065\060\070\061\070\061\062
+\060\066\062\060\132\027\015\062\065\060\070\061\070\062\062\060
+\066\062\060\132\060\144\061\013\060\011\006\003\125\004\006\023
+\002\143\150\061\021\060\017\006\003\125\004\012\023\010\123\167
+\151\163\163\143\157\155\061\045\060\043\006\003\125\004\013\023
+\034\104\151\147\151\164\141\154\040\103\145\162\164\151\146\151
+\143\141\164\145\040\123\145\162\166\151\143\145\163\061\033\060
+\031\006\003\125\004\003\023\022\123\167\151\163\163\143\157\155
+\040\122\157\157\164\040\103\101\040\061\060\202\002\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002
+\017\000\060\202\002\012\002\202\002\001\000\320\271\260\250\014
+\331\273\077\041\370\033\325\063\223\200\026\145\040\165\262\075
+\233\140\155\106\310\214\061\157\027\303\372\232\154\126\355\074
+\305\221\127\303\315\253\226\111\220\052\031\113\036\243\155\127
+\335\361\053\142\050\165\105\136\252\326\133\372\013\045\330\241
+\026\371\034\304\056\346\225\052\147\314\320\051\156\074\205\064
+\070\141\111\261\000\237\326\072\161\137\115\155\316\137\271\251
+\344\211\177\152\122\372\312\233\362\334\251\371\235\231\107\077
+\116\051\137\264\246\215\135\173\013\231\021\003\003\376\347\333
+\333\243\377\035\245\315\220\036\001\037\065\260\177\000\333\220
+\157\306\176\173\321\356\172\172\247\252\014\127\157\244\155\305
+\023\073\260\245\331\355\062\034\264\136\147\213\124\334\163\207
+\345\323\027\174\146\120\162\135\324\032\130\301\331\317\330\211
+\002\157\247\111\264\066\135\320\244\336\007\054\266\165\267\050
+\221\326\227\276\050\365\230\036\352\133\046\311\275\260\227\163
+\332\256\221\046\353\150\301\371\071\025\326\147\113\012\155\117
+\313\317\260\344\102\161\214\123\171\347\356\341\333\035\240\156
+\035\214\032\167\065\134\026\036\053\123\037\064\213\321\154\374
+\362\147\007\172\365\255\355\326\232\253\241\261\113\341\314\067
+\137\375\177\315\115\256\270\037\234\103\371\052\130\125\103\105
+\274\226\315\160\016\374\311\343\146\272\116\215\073\201\313\025
+\144\173\271\224\350\135\063\122\205\161\056\117\216\242\006\021
+\121\311\343\313\241\156\061\010\144\014\302\322\074\365\066\350
+\327\320\016\170\043\040\221\311\044\052\145\051\133\042\367\041
+\316\203\136\244\363\336\113\323\150\217\106\165\134\203\011\156
+\051\153\304\160\214\365\235\327\040\057\377\106\322\053\070\302
+\057\165\034\075\176\332\245\357\036\140\205\151\102\323\314\370
+\143\376\036\103\071\205\246\266\143\101\020\263\163\036\274\323
+\372\312\175\026\107\342\247\325\320\243\212\012\010\226\142\126
+\156\064\333\331\002\271\060\165\343\004\322\347\217\302\260\021
+\100\012\254\325\161\002\142\213\061\276\335\306\043\130\061\102
+\103\055\164\371\306\236\246\212\017\351\376\277\203\346\103\127
+\044\272\357\106\064\252\327\022\001\070\355\002\003\001\000\001
+\243\201\206\060\201\203\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\206\060\035\006\003\125\035\041\004\026\060
+\024\060\022\006\007\140\205\164\001\123\000\001\006\007\140\205
+\164\001\123\000\001\060\022\006\003\125\035\023\001\001\377\004
+\010\060\006\001\001\377\002\001\007\060\037\006\003\125\035\043
+\004\030\060\026\200\024\003\045\057\336\157\202\001\072\134\054
+\334\053\241\151\265\147\324\214\323\375\060\035\006\003\125\035
+\016\004\026\004\024\003\045\057\336\157\202\001\072\134\054\334
+\053\241\151\265\147\324\214\323\375\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\202\002\001\000\065\020\313
+\354\246\004\015\015\017\315\300\333\253\250\362\210\227\014\337
+\223\057\115\174\100\126\061\172\353\244\017\140\315\172\363\276
+\303\047\216\003\076\244\335\022\357\176\036\164\006\074\077\061
+\362\034\173\221\061\041\264\360\320\154\227\324\351\227\262\044
+\126\036\126\303\065\275\210\005\017\133\020\032\144\341\307\202
+\060\371\062\255\236\120\054\347\170\005\320\061\261\132\230\212
+\165\116\220\134\152\024\052\340\122\107\202\140\346\036\332\201
+\261\373\024\013\132\361\237\322\225\272\076\320\033\326\025\035
+\243\276\206\325\333\017\300\111\144\273\056\120\031\113\322\044
+\370\335\036\007\126\320\070\240\225\160\040\166\214\327\335\036
+\336\237\161\304\043\357\203\023\134\243\044\025\115\051\100\074
+\152\304\251\330\267\246\104\245\015\364\340\235\167\036\100\160
+\046\374\332\331\066\344\171\344\265\077\274\233\145\276\273\021
+\226\317\333\306\050\071\072\010\316\107\133\123\132\305\231\376
+\135\251\335\357\114\324\306\245\255\002\346\214\007\022\036\157
+\003\321\157\240\243\363\051\275\022\307\120\242\260\177\210\251
+\231\167\232\261\300\245\071\056\134\174\151\342\054\260\352\067
+\152\244\341\132\341\365\120\345\203\357\245\273\052\210\347\214
+\333\375\155\136\227\031\250\176\146\165\153\161\352\277\261\307
+\157\240\364\216\244\354\064\121\133\214\046\003\160\241\167\325
+\001\022\127\000\065\333\043\336\016\212\050\231\375\261\020\157
+\113\377\070\055\140\116\054\234\353\147\265\255\111\356\113\037
+\254\257\373\015\220\132\146\140\160\135\252\315\170\324\044\356
+\310\101\240\223\001\222\234\152\236\374\271\044\305\263\025\202
+\176\276\256\225\053\353\261\300\332\343\001\140\013\136\151\254
+\204\126\141\276\161\027\376\035\023\017\376\306\207\105\351\376
+\062\240\032\015\023\244\224\125\161\245\026\213\272\312\211\260
+\262\307\374\217\330\124\265\223\142\235\316\317\131\373\075\030
+\316\052\313\065\025\202\135\377\124\042\133\161\122\373\267\311
+\376\140\233\000\101\144\360\252\052\354\266\102\103\316\211\146
+\201\310\213\237\071\124\003\045\323\026\065\216\204\320\137\372
+\060\032\365\232\154\364\016\123\371\072\133\321\034
+END
+
+# Trust for Certificate "Swisscom Root CA 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Swisscom Root CA 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\137\072\374\012\213\144\366\206\147\064\164\337\176\251\242\376
+\371\372\172\121
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\370\070\174\167\210\337\054\026\150\056\302\342\122\113\270\371
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\144\061\013\060\011\006\003\125\004\006\023\002\143\150\061
+\021\060\017\006\003\125\004\012\023\010\123\167\151\163\163\143
+\157\155\061\045\060\043\006\003\125\004\013\023\034\104\151\147
+\151\164\141\154\040\103\145\162\164\151\146\151\143\141\164\145
+\040\123\145\162\166\151\143\145\163\061\033\060\031\006\003\125
+\004\003\023\022\123\167\151\163\163\143\157\155\040\122\157\157
+\164\040\103\101\040\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\134\013\205\134\013\347\131\101\337\127\314\077\177\235
+\250\066
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DigiCert Assured ID Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert Assured ID Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151
+\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040
+\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151
+\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\347\340\345\027\330\106\376\217\345\140\374\033\360
+\060\071
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\267\060\202\002\237\240\003\002\001\002\002\020\014
+\347\340\345\027\330\106\376\217\345\140\374\033\360\060\071\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\145
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060
+\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164
+\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167
+\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061
+\044\060\042\006\003\125\004\003\023\033\104\151\147\151\103\145
+\162\164\040\101\163\163\165\162\145\144\040\111\104\040\122\157
+\157\164\040\103\101\060\036\027\015\060\066\061\061\061\060\060
+\060\060\060\060\060\132\027\015\063\061\061\061\061\060\060\060
+\060\060\060\060\132\060\145\061\013\060\011\006\003\125\004\006
+\023\002\125\123\061\025\060\023\006\003\125\004\012\023\014\104
+\151\147\151\103\145\162\164\040\111\156\143\061\031\060\027\006
+\003\125\004\013\023\020\167\167\167\056\144\151\147\151\143\145
+\162\164\056\143\157\155\061\044\060\042\006\003\125\004\003\023
+\033\104\151\147\151\103\145\162\164\040\101\163\163\165\162\145
+\144\040\111\104\040\122\157\157\164\040\103\101\060\202\001\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\001\017\000\060\202\001\012\002\202\001\001\000\255\016\025
+\316\344\103\200\134\261\207\363\267\140\371\161\022\245\256\334
+\046\224\210\252\364\316\365\040\071\050\130\140\014\370\200\332
+\251\025\225\062\141\074\265\261\050\204\212\212\334\237\012\014
+\203\027\172\217\220\254\212\347\171\123\134\061\204\052\366\017
+\230\062\066\166\314\336\335\074\250\242\357\152\373\041\362\122
+\141\337\237\040\327\037\342\261\331\376\030\144\322\022\133\137
+\371\130\030\065\274\107\315\241\066\371\153\177\324\260\070\076
+\301\033\303\214\063\331\330\057\030\376\050\017\263\247\203\326
+\303\156\104\300\141\065\226\026\376\131\234\213\166\155\327\361
+\242\113\015\053\377\013\162\332\236\140\320\216\220\065\306\170
+\125\207\040\241\317\345\155\012\310\111\174\061\230\063\154\042
+\351\207\320\062\132\242\272\023\202\021\355\071\027\235\231\072
+\162\241\346\372\244\331\325\027\061\165\256\205\175\042\256\077
+\001\106\206\366\050\171\310\261\332\344\127\027\304\176\034\016
+\260\264\222\246\126\263\275\262\227\355\252\247\360\267\305\250
+\077\225\026\320\377\241\226\353\010\137\030\167\117\002\003\001
+\000\001\243\143\060\141\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377
+\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026
+\004\024\105\353\242\257\364\222\313\202\061\055\121\213\247\247
+\041\235\363\155\310\017\060\037\006\003\125\035\043\004\030\060
+\026\200\024\105\353\242\257\364\222\313\202\061\055\121\213\247
+\247\041\235\363\155\310\017\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\003\202\001\001\000\242\016\274\337\342
+\355\360\343\162\163\172\144\224\277\367\162\146\330\062\344\102
+\165\142\256\207\353\362\325\331\336\126\263\237\314\316\024\050
+\271\015\227\140\134\022\114\130\344\323\075\203\111\105\130\227
+\065\151\032\250\107\352\126\306\171\253\022\330\147\201\204\337
+\177\011\074\224\346\270\046\054\040\275\075\263\050\211\367\137
+\377\042\342\227\204\037\351\145\357\207\340\337\301\147\111\263
+\135\353\262\011\052\353\046\355\170\276\175\077\053\363\267\046
+\065\155\137\211\001\266\111\133\237\001\005\233\253\075\045\301
+\314\266\177\302\361\157\206\306\372\144\150\353\201\055\224\353
+\102\267\372\214\036\335\142\361\276\120\147\267\154\275\363\361
+\037\153\014\066\007\026\177\067\174\251\133\155\172\361\022\106
+\140\203\327\047\004\276\113\316\227\276\303\147\052\150\021\337
+\200\347\014\063\146\277\023\015\024\156\363\177\037\143\020\036
+\372\215\033\045\155\154\217\245\267\141\001\261\322\243\046\241
+\020\161\235\255\342\303\371\303\231\121\267\053\007\010\316\056
+\346\120\262\247\372\012\105\057\242\360\362
+END
+
+# Trust for Certificate "DigiCert Assured ID Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert Assured ID Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\005\143\270\143\015\142\327\132\273\310\253\036\113\337\265\250
+\231\262\115\103
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\207\316\013\173\052\016\111\000\341\130\161\233\067\250\223\162
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151
+\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040
+\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\347\340\345\027\330\106\376\217\345\140\374\033\360
+\060\071
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DigiCert Global Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert Global Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151
+\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164
+\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151
+\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164
+\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\010\073\340\126\220\102\106\261\241\165\152\311\131\221
+\307\112
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\257\060\202\002\227\240\003\002\001\002\002\020\010
+\073\340\126\220\102\106\261\241\165\152\311\131\221\307\112\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\141
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060
+\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164
+\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167
+\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061
+\040\060\036\006\003\125\004\003\023\027\104\151\147\151\103\145
+\162\164\040\107\154\157\142\141\154\040\122\157\157\164\040\103
+\101\060\036\027\015\060\066\061\061\061\060\060\060\060\060\060
+\060\132\027\015\063\061\061\061\061\060\060\060\060\060\060\060
+\132\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103
+\145\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013
+\023\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143
+\157\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147
+\151\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157
+\164\040\103\101\060\202\001\042\060\015\006\011\052\206\110\206
+\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012
+\002\202\001\001\000\342\073\341\021\162\336\250\244\323\243\127
+\252\120\242\217\013\167\220\311\242\245\356\022\316\226\133\001
+\011\040\314\001\223\247\116\060\267\123\367\103\304\151\000\127
+\235\342\215\042\335\207\006\100\000\201\011\316\316\033\203\277
+\337\315\073\161\106\342\326\146\307\005\263\166\047\026\217\173
+\236\036\225\175\356\267\110\243\010\332\326\257\172\014\071\006
+\145\177\112\135\037\274\027\370\253\276\356\050\327\164\177\172
+\170\231\131\205\150\156\134\043\062\113\277\116\300\350\132\155
+\343\160\277\167\020\277\374\001\366\205\331\250\104\020\130\062
+\251\165\030\325\321\242\276\107\342\047\152\364\232\063\370\111
+\010\140\213\324\137\264\072\204\277\241\252\112\114\175\076\317
+\117\137\154\166\136\240\113\067\221\236\334\042\346\155\316\024
+\032\216\152\313\376\315\263\024\144\027\307\133\051\236\062\277
+\362\356\372\323\013\102\324\253\267\101\062\332\014\324\357\370
+\201\325\273\215\130\077\265\033\350\111\050\242\160\332\061\004
+\335\367\262\026\362\114\012\116\007\250\355\112\075\136\265\177
+\243\220\303\257\047\002\003\001\000\001\243\143\060\141\060\016
+\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\017
+\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060
+\035\006\003\125\035\016\004\026\004\024\003\336\120\065\126\321
+\114\273\146\360\243\342\033\033\303\227\262\075\321\125\060\037
+\006\003\125\035\043\004\030\060\026\200\024\003\336\120\065\126
+\321\114\273\146\360\243\342\033\033\303\227\262\075\321\125\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202
+\001\001\000\313\234\067\252\110\023\022\012\372\335\104\234\117
+\122\260\364\337\256\004\365\171\171\010\243\044\030\374\113\053
+\204\300\055\271\325\307\376\364\301\037\130\313\270\155\234\172
+\164\347\230\051\253\021\265\343\160\240\241\315\114\210\231\223
+\214\221\160\342\253\017\034\276\223\251\377\143\325\344\007\140
+\323\243\277\235\133\011\361\325\216\343\123\364\216\143\372\077
+\247\333\264\146\337\142\146\326\321\156\101\215\362\055\265\352
+\167\112\237\235\130\342\053\131\300\100\043\355\055\050\202\105
+\076\171\124\222\046\230\340\200\110\250\067\357\360\326\171\140
+\026\336\254\350\016\315\156\254\104\027\070\057\111\332\341\105
+\076\052\271\066\123\317\072\120\006\367\056\350\304\127\111\154
+\141\041\030\325\004\255\170\074\054\072\200\153\247\353\257\025
+\024\351\330\211\301\271\070\154\342\221\154\212\377\144\271\167
+\045\127\060\300\033\044\243\341\334\351\337\107\174\265\264\044
+\010\005\060\354\055\275\013\277\105\277\120\271\251\363\353\230
+\001\022\255\310\210\306\230\064\137\215\012\074\306\351\325\225
+\225\155\336
+END
+
+# Trust for Certificate "DigiCert Global Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert Global Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\250\230\135\072\145\345\345\304\262\327\326\155\100\306\335\057
+\261\234\124\066
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\171\344\251\204\015\175\072\226\327\300\117\342\103\114\211\056
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151
+\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164
+\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\010\073\340\126\220\102\106\261\241\165\152\311\131\221
+\307\112
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DigiCert High Assurance EV Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert High Assurance EV Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151
+\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141
+\156\143\145\040\105\126\040\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151
+\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141
+\156\143\145\040\105\126\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\002\254\134\046\152\013\100\233\217\013\171\362\256\106
+\045\167
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\305\060\202\002\255\240\003\002\001\002\002\020\002
+\254\134\046\152\013\100\233\217\013\171\362\256\106\045\167\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\154
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060
+\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164
+\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167
+\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061
+\053\060\051\006\003\125\004\003\023\042\104\151\147\151\103\145
+\162\164\040\110\151\147\150\040\101\163\163\165\162\141\156\143
+\145\040\105\126\040\122\157\157\164\040\103\101\060\036\027\015
+\060\066\061\061\061\060\060\060\060\060\060\060\132\027\015\063
+\061\061\061\061\060\060\060\060\060\060\060\132\060\154\061\013
+\060\011\006\003\125\004\006\023\002\125\123\061\025\060\023\006
+\003\125\004\012\023\014\104\151\147\151\103\145\162\164\040\111
+\156\143\061\031\060\027\006\003\125\004\013\023\020\167\167\167
+\056\144\151\147\151\143\145\162\164\056\143\157\155\061\053\060
+\051\006\003\125\004\003\023\042\104\151\147\151\103\145\162\164
+\040\110\151\147\150\040\101\163\163\165\162\141\156\143\145\040
+\105\126\040\122\157\157\164\040\103\101\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\306\314\345\163\346
+\373\324\273\345\055\055\062\246\337\345\201\077\311\315\045\111
+\266\161\052\303\325\224\064\147\242\012\034\260\137\151\246\100
+\261\304\267\262\217\320\230\244\251\101\131\072\323\334\224\326
+\074\333\164\070\244\112\314\115\045\202\367\112\245\123\022\070
+\356\363\111\155\161\221\176\143\266\253\246\137\303\244\204\370
+\117\142\121\276\370\305\354\333\070\222\343\006\345\010\221\014
+\304\050\101\125\373\313\132\211\025\176\161\350\065\277\115\162
+\011\075\276\072\070\120\133\167\061\033\215\263\307\044\105\232
+\247\254\155\000\024\132\004\267\272\023\353\121\012\230\101\101
+\042\116\145\141\207\201\101\120\246\171\134\211\336\031\112\127
+\325\056\346\135\034\123\054\176\230\315\032\006\026\244\150\163
+\320\064\004\023\134\241\161\323\132\174\125\333\136\144\341\067
+\207\060\126\004\345\021\264\051\200\022\361\171\071\210\242\002
+\021\174\047\146\267\210\267\170\362\312\012\250\070\253\012\144
+\302\277\146\135\225\204\301\241\045\036\207\135\032\120\013\040
+\022\314\101\273\156\013\121\070\270\113\313\002\003\001\000\001
+\243\143\060\141\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024
+\261\076\303\151\003\370\277\107\001\324\230\046\032\010\002\357
+\143\144\053\303\060\037\006\003\125\035\043\004\030\060\026\200
+\024\261\076\303\151\003\370\277\107\001\324\230\046\032\010\002
+\357\143\144\053\303\060\015\006\011\052\206\110\206\367\015\001
+\001\005\005\000\003\202\001\001\000\034\032\006\227\334\327\234
+\237\074\210\146\006\010\127\041\333\041\107\370\052\147\252\277
+\030\062\166\100\020\127\301\212\363\172\331\021\145\216\065\372
+\236\374\105\265\236\331\114\061\113\270\221\350\103\054\216\263
+\170\316\333\343\123\171\161\326\345\041\224\001\332\125\207\232
+\044\144\366\212\146\314\336\234\067\315\250\064\261\151\233\043
+\310\236\170\042\053\160\103\343\125\107\061\141\031\357\130\305
+\205\057\116\060\366\240\061\026\043\310\347\342\145\026\063\313
+\277\032\033\240\075\370\312\136\213\061\213\140\010\211\055\014
+\006\134\122\267\304\371\012\230\321\025\137\237\022\276\174\066
+\143\070\275\104\244\177\344\046\053\012\304\227\151\015\351\214
+\342\300\020\127\270\310\166\022\221\125\362\110\151\330\274\052
+\002\133\017\104\324\040\061\333\364\272\160\046\135\220\140\236
+\274\113\027\011\057\264\313\036\103\150\311\007\047\301\322\134
+\367\352\041\271\150\022\234\074\234\277\236\374\200\134\233\143
+\315\354\107\252\045\047\147\240\067\363\000\202\175\124\327\251
+\370\351\056\023\243\167\350\037\112
+END
+
+# Trust for Certificate "DigiCert High Assurance EV Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiCert High Assurance EV Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\137\267\356\006\063\342\131\333\255\014\114\232\346\323\217\032
+\141\307\334\045
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\324\164\336\127\134\071\262\323\234\205\203\305\300\145\111\212
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145
+\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023
+\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157
+\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151
+\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141
+\156\143\145\040\105\126\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\002\254\134\046\152\013\100\233\217\013\171\362\256\106
+\045\167
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Certplus Class 2 Primary CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certplus Class 2 Primary CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\075\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\021\060\017\006\003\125\004\012\023\010\103\145\162\164\160\154
+\165\163\061\033\060\031\006\003\125\004\003\023\022\103\154\141
+\163\163\040\062\040\120\162\151\155\141\162\171\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\075\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\021\060\017\006\003\125\004\012\023\010\103\145\162\164\160\154
+\165\163\061\033\060\031\006\003\125\004\003\023\022\103\154\141
+\163\163\040\062\040\120\162\151\155\141\162\171\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\205\275\113\363\330\332\343\151\366\224\327\137\303
+\245\104\043
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\222\060\202\002\172\240\003\002\001\002\002\021\000
+\205\275\113\363\330\332\343\151\366\224\327\137\303\245\104\043
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\075\061\013\060\011\006\003\125\004\006\023\002\106\122\061\021
+\060\017\006\003\125\004\012\023\010\103\145\162\164\160\154\165
+\163\061\033\060\031\006\003\125\004\003\023\022\103\154\141\163
+\163\040\062\040\120\162\151\155\141\162\171\040\103\101\060\036
+\027\015\071\071\060\067\060\067\061\067\060\065\060\060\132\027
+\015\061\071\060\067\060\066\062\063\065\071\065\071\132\060\075
+\061\013\060\011\006\003\125\004\006\023\002\106\122\061\021\060
+\017\006\003\125\004\012\023\010\103\145\162\164\160\154\165\163
+\061\033\060\031\006\003\125\004\003\023\022\103\154\141\163\163
+\040\062\040\120\162\151\155\141\162\171\040\103\101\060\202\001
+\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
+\003\202\001\017\000\060\202\001\012\002\202\001\001\000\334\120
+\226\320\022\370\065\322\010\170\172\266\122\160\375\157\356\317
+\271\021\313\135\167\341\354\351\176\004\215\326\314\157\163\103
+\127\140\254\063\012\104\354\003\137\034\200\044\221\345\250\221
+\126\022\202\367\340\053\364\333\256\141\056\211\020\215\153\154
+\272\263\002\275\325\066\305\110\067\043\342\360\132\067\122\063
+\027\022\342\321\140\115\276\057\101\021\343\366\027\045\014\213
+\221\300\033\231\173\231\126\015\257\356\322\274\107\127\343\171
+\111\173\064\211\047\044\204\336\261\354\351\130\116\376\116\337
+\132\276\101\255\254\010\305\030\016\357\322\123\356\154\320\235
+\022\001\023\215\334\200\142\367\225\251\104\210\112\161\116\140
+\125\236\333\043\031\171\126\007\014\077\143\013\134\260\342\276
+\176\025\374\224\063\130\101\070\164\304\341\217\213\337\046\254
+\037\265\213\073\267\103\131\153\260\044\246\155\220\213\304\162
+\352\135\063\230\267\313\336\136\173\357\224\361\033\076\312\311
+\041\301\305\230\002\252\242\366\133\167\233\365\176\226\125\064
+\034\147\151\300\361\102\343\107\254\374\050\034\146\125\002\003
+\001\000\001\243\201\214\060\201\211\060\017\006\003\125\035\023
+\004\010\060\006\001\001\377\002\001\012\060\013\006\003\125\035
+\017\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026
+\004\024\343\163\055\337\313\016\050\014\336\335\263\244\312\171
+\270\216\273\350\060\211\060\021\006\011\140\206\110\001\206\370
+\102\001\001\004\004\003\002\001\006\060\067\006\003\125\035\037
+\004\060\060\056\060\054\240\052\240\050\206\046\150\164\164\160
+\072\057\057\167\167\167\056\143\145\162\164\160\154\165\163\056
+\143\157\155\057\103\122\114\057\143\154\141\163\163\062\056\143
+\162\154\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\001\001\000\247\124\317\210\104\031\313\337\324\177
+\000\337\126\063\142\265\367\121\001\220\353\303\077\321\210\104
+\351\044\135\357\347\024\275\040\267\232\074\000\376\155\237\333
+\220\334\327\364\142\326\213\160\135\347\345\004\110\251\150\174
+\311\361\102\363\154\177\305\172\174\035\121\210\272\322\012\076
+\047\135\336\055\121\116\323\023\144\151\344\056\343\323\347\233
+\011\231\246\340\225\233\316\032\327\177\276\074\316\122\263\021
+\025\301\017\027\315\003\273\234\045\025\272\242\166\211\374\006
+\361\030\320\223\113\016\174\202\267\245\364\366\137\376\355\100
+\246\235\204\164\071\271\334\036\205\026\332\051\033\206\043\000
+\311\273\211\176\156\200\210\036\057\024\264\003\044\250\062\157
+\003\232\107\054\060\276\126\306\247\102\002\160\033\352\100\330
+\272\005\003\160\007\244\226\377\375\110\063\012\341\334\245\201
+\220\233\115\335\175\347\347\262\315\134\310\152\225\370\245\366
+\215\304\135\170\010\276\173\006\326\111\317\031\066\120\043\056
+\010\346\236\005\115\107\030\325\026\351\261\326\266\020\325\273
+\227\277\242\216\264\124
+END
+
+# Trust for Certificate "Certplus Class 2 Primary CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certplus Class 2 Primary CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\164\040\164\101\162\234\335\222\354\171\061\330\043\020\215\302
+\201\222\342\273
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\210\054\214\122\270\242\074\363\367\273\003\352\256\254\102\013
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\075\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\021\060\017\006\003\125\004\012\023\010\103\145\162\164\160\154
+\165\163\061\033\060\031\006\003\125\004\003\023\022\103\154\141
+\163\163\040\062\040\120\162\151\155\141\162\171\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\205\275\113\363\330\332\343\151\366\224\327\137\303
+\245\104\043
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DST Root CA X3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DST Root CA X3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\077\061\044\060\042\006\003\125\004\012\023\033\104\151\147
+\151\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124
+\162\165\163\164\040\103\157\056\061\027\060\025\006\003\125\004
+\003\023\016\104\123\124\040\122\157\157\164\040\103\101\040\130
+\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\077\061\044\060\042\006\003\125\004\012\023\033\104\151\147
+\151\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124
+\162\165\163\164\040\103\157\056\061\027\060\025\006\003\125\004
+\003\023\016\104\123\124\040\122\157\157\164\040\103\101\040\130
+\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\257\260\200\326\243\047\272\211\060\071\206\056\370
+\100\153
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\112\060\202\002\062\240\003\002\001\002\002\020\104
+\257\260\200\326\243\047\272\211\060\071\206\056\370\100\153\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\077
+\061\044\060\042\006\003\125\004\012\023\033\104\151\147\151\164
+\141\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165
+\163\164\040\103\157\056\061\027\060\025\006\003\125\004\003\023
+\016\104\123\124\040\122\157\157\164\040\103\101\040\130\063\060
+\036\027\015\060\060\060\071\063\060\062\061\061\062\061\071\132
+\027\015\062\061\060\071\063\060\061\064\060\061\061\065\132\060
+\077\061\044\060\042\006\003\125\004\012\023\033\104\151\147\151
+\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124\162
+\165\163\164\040\103\157\056\061\027\060\025\006\003\125\004\003
+\023\016\104\123\124\040\122\157\157\164\040\103\101\040\130\063
+\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001
+\000\337\257\351\227\120\010\203\127\264\314\142\145\366\220\202
+\354\307\323\054\153\060\312\133\354\331\303\175\307\100\301\030
+\024\213\340\350\063\166\111\052\343\077\041\111\223\254\116\016
+\257\076\110\313\145\356\374\323\041\017\145\322\052\331\062\217
+\214\345\367\167\260\022\173\265\225\300\211\243\251\272\355\163
+\056\172\014\006\062\203\242\176\212\024\060\315\021\240\341\052
+\070\271\171\012\061\375\120\275\200\145\337\267\121\143\203\310
+\342\210\141\352\113\141\201\354\122\153\271\242\342\113\032\050
+\237\110\243\236\014\332\011\216\076\027\056\036\335\040\337\133
+\306\052\212\253\056\275\160\255\305\013\032\045\220\164\162\305
+\173\152\253\064\326\060\211\377\345\150\023\173\124\013\310\326
+\256\354\132\234\222\036\075\144\263\214\306\337\277\311\101\160
+\354\026\162\325\046\354\070\125\071\103\320\374\375\030\134\100
+\361\227\353\325\232\233\215\035\272\332\045\271\306\330\337\301
+\025\002\072\253\332\156\361\076\056\365\134\010\234\074\326\203
+\151\344\020\233\031\052\266\051\127\343\345\075\233\237\360\002
+\135\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
+\035\016\004\026\004\024\304\247\261\244\173\054\161\372\333\341
+\113\220\165\377\304\025\140\205\211\020\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\243\032
+\054\233\027\000\134\251\036\356\050\146\067\072\277\203\307\077
+\113\303\011\240\225\040\135\343\331\131\104\322\076\015\076\275
+\212\113\240\164\037\316\020\202\234\164\032\035\176\230\032\335
+\313\023\113\263\040\104\344\221\351\314\374\175\245\333\152\345
+\376\346\375\340\116\335\267\000\072\265\160\111\257\362\345\353
+\002\361\321\002\213\031\313\224\072\136\110\304\030\036\130\031
+\137\036\002\132\360\014\361\261\255\251\334\131\206\213\156\351
+\221\365\206\312\372\271\146\063\252\131\133\316\342\247\026\163
+\107\313\053\314\231\260\067\110\317\343\126\113\365\317\017\014
+\162\062\207\306\360\104\273\123\162\155\103\365\046\110\232\122
+\147\267\130\253\376\147\166\161\170\333\015\242\126\024\023\071
+\044\061\205\242\250\002\132\060\107\341\335\120\007\274\002\011
+\220\000\353\144\143\140\233\026\274\210\311\022\346\322\175\221
+\213\371\075\062\215\145\264\351\174\261\127\166\352\305\266\050
+\071\277\025\145\034\310\366\167\226\152\012\215\167\013\330\221
+\013\004\216\007\333\051\266\012\356\235\202\065\065\020
+END
+
+# Trust for Certificate "DST Root CA X3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DST Root CA X3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\332\311\002\117\124\330\366\337\224\223\137\261\163\046\070\312
+\152\327\174\023
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\101\003\122\334\017\367\120\033\026\360\002\216\272\157\105\305
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\077\061\044\060\042\006\003\125\004\012\023\033\104\151\147
+\151\164\141\154\040\123\151\147\156\141\164\165\162\145\040\124
+\162\165\163\164\040\103\157\056\061\027\060\025\006\003\125\004
+\003\023\016\104\123\124\040\122\157\157\164\040\103\101\040\130
+\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\104\257\260\200\326\243\047\272\211\060\071\206\056\370
+\100\153
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DST ACES CA X6"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DST ACES CA X6"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\133\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\061\021\060\017\006\003\125\004\013\023\010\104\123\124\040
+\101\103\105\123\061\027\060\025\006\003\125\004\003\023\016\104
+\123\124\040\101\103\105\123\040\103\101\040\130\066
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\133\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\061\021\060\017\006\003\125\004\013\023\010\104\123\124\040
+\101\103\105\123\061\027\060\025\006\003\125\004\003\023\016\104
+\123\124\040\101\103\105\123\040\103\101\040\130\066
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\015\136\231\012\326\235\267\170\354\330\007\126\073\206
+\025\331
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\011\060\202\002\361\240\003\002\001\002\002\020\015
+\136\231\012\326\235\267\170\354\330\007\126\073\206\025\331\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\133
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\040\060
+\036\006\003\125\004\012\023\027\104\151\147\151\164\141\154\040
+\123\151\147\156\141\164\165\162\145\040\124\162\165\163\164\061
+\021\060\017\006\003\125\004\013\023\010\104\123\124\040\101\103
+\105\123\061\027\060\025\006\003\125\004\003\023\016\104\123\124
+\040\101\103\105\123\040\103\101\040\130\066\060\036\027\015\060
+\063\061\061\062\060\062\061\061\071\065\070\132\027\015\061\067
+\061\061\062\060\062\061\061\071\065\070\132\060\133\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\040\060\036\006\003
+\125\004\012\023\027\104\151\147\151\164\141\154\040\123\151\147
+\156\141\164\165\162\145\040\124\162\165\163\164\061\021\060\017
+\006\003\125\004\013\023\010\104\123\124\040\101\103\105\123\061
+\027\060\025\006\003\125\004\003\023\016\104\123\124\040\101\103
+\105\123\040\103\101\040\130\066\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\271\075\365\054\311\224\334
+\165\212\225\135\143\350\204\167\166\146\271\131\221\134\106\335
+\222\076\237\371\016\003\264\075\141\222\275\043\046\265\143\356
+\222\322\236\326\074\310\015\220\137\144\201\261\250\010\015\114
+\330\371\323\005\050\122\264\001\045\305\225\034\014\176\076\020
+\204\165\317\301\031\221\143\317\350\250\221\210\271\103\122\273
+\200\261\125\211\213\061\372\320\267\166\276\101\075\060\232\244
+\042\045\027\163\350\036\342\323\254\052\275\133\070\041\325\052
+\113\327\125\175\343\072\125\275\327\155\153\002\127\153\346\107
+\174\010\310\202\272\336\247\207\075\241\155\270\060\126\302\263
+\002\201\137\055\365\342\232\060\030\050\270\146\323\313\001\226
+\157\352\212\105\125\326\340\235\377\147\053\027\002\246\116\032
+\152\021\013\176\267\173\347\230\326\214\166\157\301\073\333\120
+\223\176\345\320\216\037\067\270\275\272\306\237\154\351\174\063
+\362\062\074\046\107\372\047\044\002\311\176\035\133\210\102\023
+\152\065\174\175\065\351\056\146\221\162\223\325\062\046\304\164
+\365\123\243\263\135\232\366\011\313\002\003\001\000\001\243\201
+\310\060\201\305\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\306\060\037\006\003\125\035\021\004\030\060\026
+\201\024\160\153\151\055\157\160\163\100\164\162\165\163\164\144
+\163\164\056\143\157\155\060\142\006\003\125\035\040\004\133\060
+\131\060\127\006\012\140\206\110\001\145\003\002\001\001\001\060
+\111\060\107\006\010\053\006\001\005\005\007\002\001\026\073\150
+\164\164\160\072\057\057\167\167\167\056\164\162\165\163\164\144
+\163\164\056\143\157\155\057\143\145\162\164\151\146\151\143\141
+\164\145\163\057\160\157\154\151\143\171\057\101\103\105\123\055
+\151\156\144\145\170\056\150\164\155\154\060\035\006\003\125\035
+\016\004\026\004\024\011\162\006\116\030\103\017\345\326\314\303
+\152\213\061\173\170\217\250\203\270\060\015\006\011\052\206\110
+\206\367\015\001\001\005\005\000\003\202\001\001\000\243\330\216
+\326\262\333\316\005\347\062\315\001\323\004\003\345\166\344\126
+\053\234\231\220\350\010\060\154\337\175\075\356\345\277\265\044
+\100\204\111\341\321\050\256\304\302\072\123\060\210\361\365\167
+\156\121\312\372\377\231\257\044\137\033\240\375\362\254\204\312
+\337\251\360\137\004\056\255\026\277\041\227\020\201\075\343\377
+\207\215\062\334\224\345\107\212\136\152\023\311\224\225\075\322
+\356\310\064\225\320\200\324\255\062\010\200\124\074\340\275\122
+\123\327\122\174\262\151\077\177\172\317\152\164\312\372\004\052
+\234\114\132\006\245\351\040\255\105\146\017\151\361\335\277\351
+\343\062\213\372\340\301\206\115\162\074\056\330\223\170\012\052
+\370\330\322\047\075\031\211\137\132\173\212\073\314\014\332\121
+\256\307\013\367\053\260\067\005\354\274\127\043\342\070\322\233
+\150\363\126\022\210\117\102\174\270\061\304\265\333\344\310\041
+\064\351\110\021\065\356\372\307\222\127\305\237\064\344\307\366
+\367\016\013\114\234\150\170\173\161\061\307\353\036\340\147\101
+\363\267\240\247\315\345\172\063\066\152\372\232\053
+END
+
+# Trust for Certificate "DST ACES CA X6"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DST ACES CA X6"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\100\124\332\157\034\077\100\164\254\355\017\354\315\333\171\321
+\123\373\220\035
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\041\330\114\202\053\231\011\063\242\353\024\044\215\216\137\350
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\133\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\104\151\147\151\164\141
+\154\040\123\151\147\156\141\164\165\162\145\040\124\162\165\163
+\164\061\021\060\017\006\003\125\004\013\023\010\104\123\124\040
+\101\103\105\123\061\027\060\025\006\003\125\004\003\023\016\104
+\123\124\040\101\103\105\123\040\103\101\040\130\066
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\015\136\231\012\326\235\267\170\354\330\007\126\073\206
+\025\331
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TURKTRUST Certificate Services Provider Root 1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TURKTRUST Certificate Services Provider Root 1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\267\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\014\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\116\113\101
+\122\101\061\126\060\124\006\003\125\004\012\014\115\050\143\051
+\040\062\060\060\065\040\124\303\234\122\113\124\122\125\123\124
+\040\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151
+\155\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303
+\274\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164
+\154\145\162\151\040\101\056\305\236\056
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\267\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\014\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\116\113\101
+\122\101\061\126\060\124\006\003\125\004\012\014\115\050\143\051
+\040\062\060\060\065\040\124\303\234\122\113\124\122\125\123\124
+\040\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151
+\155\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303
+\274\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164
+\154\145\162\151\040\101\056\305\236\056
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\373\060\202\002\343\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\267\061\077\060\075\006\003\125\004\003\014\066\124\303\234
+\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157\156
+\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151\172
+\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304\261
+\163\304\261\061\013\060\011\006\003\125\004\006\014\002\124\122
+\061\017\060\015\006\003\125\004\007\014\006\101\116\113\101\122
+\101\061\126\060\124\006\003\125\004\012\014\115\050\143\051\040
+\062\060\060\065\040\124\303\234\122\113\124\122\125\123\124\040
+\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151\155
+\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303\274
+\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164\154
+\145\162\151\040\101\056\305\236\056\060\036\027\015\060\065\060
+\065\061\063\061\060\062\067\061\067\132\027\015\061\065\060\063
+\062\062\061\060\062\067\061\067\132\060\201\267\061\077\060\075
+\006\003\125\004\003\014\066\124\303\234\122\113\124\122\125\123
+\124\040\105\154\145\153\164\162\157\156\151\153\040\123\145\162
+\164\151\146\151\153\141\040\110\151\172\155\145\164\040\123\141
+\304\237\154\141\171\304\261\143\304\261\163\304\261\061\013\060
+\011\006\003\125\004\006\014\002\124\122\061\017\060\015\006\003
+\125\004\007\014\006\101\116\113\101\122\101\061\126\060\124\006
+\003\125\004\012\014\115\050\143\051\040\062\060\060\065\040\124
+\303\234\122\113\124\122\125\123\124\040\102\151\154\147\151\040
+\304\260\154\145\164\151\305\237\151\155\040\166\145\040\102\151
+\154\151\305\237\151\155\040\107\303\274\166\145\156\154\151\304
+\237\151\040\110\151\172\155\145\164\154\145\162\151\040\101\056
+\305\236\056\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\312\122\005\326\143\003\330\034\137\335\322\173
+\135\362\014\140\141\133\153\073\164\053\170\015\175\105\275\042
+\164\350\214\003\301\306\021\052\075\225\274\251\224\260\273\221
+\227\310\151\174\204\305\264\221\154\154\023\152\244\125\255\244
+\205\350\225\176\263\000\257\000\302\005\030\365\160\235\066\213
+\256\313\344\033\201\177\223\210\373\152\125\273\175\205\222\316
+\272\130\237\333\062\305\275\135\357\042\112\057\101\007\176\111
+\141\263\206\354\116\246\101\156\204\274\003\354\365\073\034\310
+\037\302\356\250\356\352\022\112\215\024\317\363\012\340\120\071
+\371\010\065\370\021\131\255\347\042\352\113\312\024\006\336\102
+\272\262\231\363\055\124\210\020\006\352\341\032\076\075\147\037
+\373\316\373\174\202\350\021\135\112\301\271\024\352\124\331\146
+\233\174\211\175\004\232\142\311\351\122\074\236\234\357\322\365
+\046\344\346\345\030\174\213\156\337\154\314\170\133\117\162\262
+\313\134\077\214\005\215\321\114\214\255\222\307\341\170\177\145
+\154\111\006\120\054\236\062\302\327\112\306\165\212\131\116\165
+\157\107\136\301\002\003\001\000\001\243\020\060\016\060\014\006
+\003\125\035\023\004\005\060\003\001\001\377\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\025
+\365\125\377\067\226\200\131\041\244\374\241\025\114\040\366\324
+\137\332\003\044\374\317\220\032\364\041\012\232\356\072\261\152
+\357\357\370\140\321\114\066\146\105\035\363\146\002\164\004\173
+\222\060\250\336\012\166\017\357\225\156\275\311\067\346\032\015
+\254\211\110\133\314\203\066\302\365\106\134\131\202\126\264\325
+\376\043\264\330\124\034\104\253\304\247\345\024\316\074\101\141
+\174\103\346\315\304\201\011\213\044\373\124\045\326\026\250\226
+\014\147\007\157\263\120\107\343\034\044\050\335\052\230\244\141
+\376\333\352\022\067\274\001\032\064\205\275\156\117\347\221\162
+\007\104\205\036\130\312\124\104\335\367\254\271\313\211\041\162
+\333\217\300\151\051\227\052\243\256\030\043\227\034\101\052\213
+\174\052\301\174\220\350\251\050\300\323\221\306\255\050\207\100
+\150\265\377\354\247\322\323\070\030\234\323\175\151\135\360\306
+\245\036\044\033\243\107\374\151\007\150\347\344\232\264\355\017
+\241\207\207\002\316\207\322\110\116\341\274\377\313\361\162\222
+\104\144\003\045\352\336\133\156\237\311\362\116\254\335\307
+END
+
+# Trust for Certificate "TURKTRUST Certificate Services Provider Root 1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TURKTRUST Certificate Services Provider Root 1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\171\230\243\010\341\115\145\205\346\302\036\025\072\161\237\272
+\132\323\112\331
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\361\152\042\030\311\315\337\316\202\035\035\267\170\134\251\245
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\267\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\014\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\116\113\101
+\122\101\061\126\060\124\006\003\125\004\012\014\115\050\143\051
+\040\062\060\060\065\040\124\303\234\122\113\124\122\125\123\124
+\040\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151
+\155\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303
+\274\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164
+\154\145\162\151\040\101\056\305\236\056
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TURKTRUST Certificate Services Provider Root 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TURKTRUST Certificate Services Provider Root 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\276\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\023\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141
+\162\141\061\135\060\133\006\003\125\004\012\014\124\124\303\234
+\122\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260
+\154\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151
+\305\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151
+\040\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236
+\056\040\050\143\051\040\113\141\163\304\261\155\040\062\060\060
+\065
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\276\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\023\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141
+\162\141\061\135\060\133\006\003\125\004\012\014\124\124\303\234
+\122\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260
+\154\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151
+\305\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151
+\040\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236
+\056\040\050\143\051\040\113\141\163\304\261\155\040\062\060\060
+\065
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\074\060\202\003\044\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\276\061\077\060\075\006\003\125\004\003\014\066\124\303\234
+\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157\156
+\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151\172
+\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304\261
+\163\304\261\061\013\060\011\006\003\125\004\006\023\002\124\122
+\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162
+\141\061\135\060\133\006\003\125\004\012\014\124\124\303\234\122
+\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154
+\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305
+\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040
+\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056
+\040\050\143\051\040\113\141\163\304\261\155\040\062\060\060\065
+\060\036\027\015\060\065\061\061\060\067\061\060\060\067\065\067
+\132\027\015\061\065\060\071\061\066\061\060\060\067\065\067\132
+\060\201\276\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\023\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141
+\162\141\061\135\060\133\006\003\125\004\012\014\124\124\303\234
+\122\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260
+\154\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151
+\305\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151
+\040\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236
+\056\040\050\143\051\040\113\141\163\304\261\155\040\062\060\060
+\065\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001
+\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001
+\001\000\251\066\176\303\221\103\114\303\031\230\010\310\307\130
+\173\117\026\214\245\316\111\001\037\163\016\254\165\023\246\372
+\236\054\040\336\330\220\016\012\321\151\322\047\373\252\167\237
+\047\122\045\342\313\135\330\330\203\120\027\175\212\265\202\077
+\004\216\264\325\360\111\247\144\267\036\056\137\040\234\120\165
+\117\257\341\265\101\024\364\230\222\210\307\345\345\144\107\141
+\107\171\375\300\121\361\301\231\347\334\316\152\373\257\265\001
+\060\334\106\034\357\212\354\225\357\334\377\257\020\034\353\235
+\330\260\252\152\205\030\015\027\311\076\277\361\233\320\011\211
+\102\375\240\102\264\235\211\121\125\051\317\033\160\274\204\124
+\255\301\023\037\230\364\056\166\140\213\135\077\232\255\312\014
+\277\247\126\133\217\167\270\325\236\171\111\222\077\340\361\227
+\044\172\154\233\027\017\155\357\123\230\221\053\344\017\276\131
+\171\007\170\273\227\225\364\237\151\324\130\207\012\251\343\314
+\266\130\031\237\046\041\261\304\131\215\262\101\165\300\255\151
+\316\234\000\010\362\066\377\076\360\241\017\032\254\024\375\246
+\140\017\002\003\001\000\001\243\103\060\101\060\035\006\003\125
+\035\016\004\026\004\024\331\067\263\116\005\375\331\317\237\022
+\026\256\266\211\057\353\045\072\210\034\060\017\006\003\125\035
+\017\001\001\377\004\005\003\003\007\006\000\060\017\006\003\125
+\035\023\001\001\377\004\005\060\003\001\001\377\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\162\140\226\267\311\334\330\051\136\043\205\137\262\263\055\166
+\373\210\327\027\376\173\155\105\270\366\205\154\237\042\374\052
+\020\042\354\252\271\060\366\253\130\326\071\020\061\231\051\000
+\275\211\146\101\373\164\336\221\301\030\013\237\265\141\313\235
+\072\276\365\250\224\243\042\125\156\027\111\377\322\051\361\070
+\046\135\357\245\252\072\371\161\173\346\332\130\035\323\164\302
+\001\372\076\151\130\137\255\313\150\276\024\056\233\154\300\266
+\334\240\046\372\167\032\342\044\332\032\067\340\147\255\321\163
+\203\015\245\032\035\156\022\222\176\204\142\000\027\275\274\045
+\030\127\362\327\251\157\131\210\274\064\267\056\205\170\235\226
+\334\024\303\054\212\122\233\226\214\122\146\075\206\026\213\107
+\270\121\011\214\352\175\315\210\162\263\140\063\261\360\012\104
+\357\017\365\011\067\210\044\016\054\153\040\072\242\372\021\362
+\100\065\234\104\150\143\073\254\063\157\143\274\054\273\362\322
+\313\166\175\175\210\330\035\310\005\035\156\274\224\251\146\214
+\167\161\307\372\221\372\057\121\236\351\071\122\266\347\004\102
+END
+
+# Trust for Certificate "TURKTRUST Certificate Services Provider Root 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TURKTRUST Certificate Services Provider Root 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\264\065\324\341\021\235\034\146\220\247\111\353\263\224\275\143
+\173\247\202\267
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\067\245\156\324\261\045\204\227\267\375\126\025\172\371\242\000
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\276\061\077\060\075\006\003\125\004\003\014\066\124\303
+\234\122\113\124\122\125\123\124\040\105\154\145\153\164\162\157
+\156\151\153\040\123\145\162\164\151\146\151\153\141\040\110\151
+\172\155\145\164\040\123\141\304\237\154\141\171\304\261\143\304
+\261\163\304\261\061\013\060\011\006\003\125\004\006\023\002\124
+\122\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141
+\162\141\061\135\060\133\006\003\125\004\012\014\124\124\303\234
+\122\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260
+\154\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151
+\305\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151
+\040\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236
+\056\040\050\143\051\040\113\141\163\304\261\155\040\062\060\060
+\065
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "SwissSign Platinum CA - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Platinum CA - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023
+\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151
+\156\165\155\040\103\101\040\055\040\107\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023
+\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151
+\156\165\155\040\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\116\262\000\147\014\003\135\117
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\301\060\202\003\251\240\003\002\001\002\002\010\116
+\262\000\147\014\003\135\117\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\060\111\061\013\060\011\006\003\125\004
+\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023\014
+\123\167\151\163\163\123\151\147\156\040\101\107\061\043\060\041
+\006\003\125\004\003\023\032\123\167\151\163\163\123\151\147\156
+\040\120\154\141\164\151\156\165\155\040\103\101\040\055\040\107
+\062\060\036\027\015\060\066\061\060\062\065\060\070\063\066\060
+\060\132\027\015\063\066\061\060\062\065\060\070\063\066\060\060
+\132\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110
+\061\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163
+\123\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003
+\023\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164
+\151\156\165\155\040\103\101\040\055\040\107\062\060\202\002\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\002\017\000\060\202\002\012\002\202\002\001\000\312\337\242
+\002\342\332\370\374\007\026\261\336\140\252\336\226\134\144\037
+\307\057\176\317\147\372\104\102\326\166\143\225\256\353\257\162
+\040\212\105\107\206\142\170\206\326\040\071\046\364\256\243\375
+\043\347\245\234\265\042\041\031\267\067\223\042\300\120\234\202
+\173\324\325\004\104\134\313\264\302\237\222\276\044\330\173\147
+\042\342\151\137\345\005\170\324\207\331\161\160\063\045\123\264
+\207\073\051\220\050\066\232\125\104\060\150\244\203\227\177\015
+\036\234\166\377\025\235\140\227\000\215\212\205\003\354\200\276
+\352\054\156\020\121\222\314\176\325\243\063\330\326\111\336\130
+\052\257\366\026\353\113\173\220\062\227\271\272\235\130\361\370
+\127\111\004\036\242\135\006\160\335\161\333\371\335\213\232\033
+\214\317\075\243\115\316\313\174\366\273\234\240\372\011\316\043
+\142\262\351\015\037\342\162\050\217\237\254\150\040\175\157\073
+\250\205\061\011\177\013\307\350\145\351\343\170\016\011\147\060
+\213\064\202\373\135\340\314\235\201\155\142\356\010\036\004\054
+\116\233\354\376\251\117\137\375\151\170\357\011\037\241\264\277
+\372\363\357\220\036\114\005\213\036\352\172\221\172\303\327\345
+\373\060\274\154\033\020\130\230\367\032\137\320\051\062\003\023
+\106\115\141\152\205\114\122\164\057\006\037\173\021\342\204\227
+\306\231\363\155\177\327\147\203\176\023\150\330\161\050\132\330
+\316\335\350\020\024\232\376\155\043\207\156\216\132\160\074\325
+\215\011\000\247\252\274\260\061\067\155\310\204\024\036\133\275
+\105\143\040\153\113\164\214\275\333\072\016\301\317\132\026\217
+\245\230\362\166\211\262\023\022\073\013\167\167\254\273\345\074
+\051\112\222\162\312\141\032\053\136\114\342\203\164\167\372\065
+\110\172\205\115\215\232\123\304\337\170\312\227\221\110\053\105
+\053\001\367\034\032\242\355\030\272\012\275\203\372\157\274\215
+\127\223\073\324\324\246\316\036\361\240\261\316\253\375\053\050
+\232\117\033\327\303\162\333\244\304\277\135\114\365\335\173\226
+\151\356\150\200\346\347\230\272\066\267\376\156\355\053\275\040
+\370\145\031\332\125\011\176\045\334\376\141\142\162\371\176\030
+\002\357\143\264\320\373\257\345\073\143\214\147\217\002\003\001
+\000\001\243\201\254\060\201\251\060\016\006\003\125\035\017\001
+\001\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001
+\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016
+\004\026\004\024\120\257\314\007\207\025\107\157\070\305\264\145
+\321\336\225\252\351\337\234\314\060\037\006\003\125\035\043\004
+\030\060\026\200\024\120\257\314\007\207\025\107\157\070\305\264
+\145\321\336\225\252\351\337\234\314\060\106\006\003\125\035\040
+\004\077\060\075\060\073\006\011\140\205\164\001\131\001\001\001
+\001\060\056\060\054\006\010\053\006\001\005\005\007\002\001\026
+\040\150\164\164\160\072\057\057\162\145\160\157\163\151\164\157
+\162\171\056\163\167\151\163\163\163\151\147\156\056\143\157\155
+\057\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\002\001\000\010\205\246\365\026\014\374\104\032\301\143
+\340\371\125\106\010\374\160\034\102\050\226\216\267\305\301\101
+\165\116\011\161\171\345\155\226\312\113\245\210\140\320\060\164
+\270\312\010\334\264\060\236\100\007\026\153\145\225\167\001\256
+\244\267\065\013\201\332\161\025\251\164\027\070\173\130\312\371
+\057\373\300\145\166\215\133\001\271\175\336\202\075\144\270\276
+\024\164\243\012\124\323\054\225\030\027\065\365\121\153\077\217
+\242\226\141\071\170\153\113\345\246\240\370\123\337\121\020\223
+\142\347\200\057\342\321\340\274\216\066\106\167\063\354\270\373
+\216\232\054\211\115\061\021\017\046\236\004\273\267\004\215\013
+\362\271\374\132\235\073\026\267\057\310\230\253\376\212\120\131
+\056\243\073\374\051\135\213\301\113\311\342\212\023\035\261\277
+\273\102\035\122\335\116\330\024\136\020\306\061\007\357\161\047
+\367\033\071\011\334\202\352\213\263\225\206\136\375\365\332\135
+\061\246\340\061\266\224\346\104\111\164\305\026\345\367\037\003
+\141\050\305\310\313\022\240\102\113\371\153\210\010\215\264\062
+\030\363\165\237\304\177\000\117\005\225\234\243\027\002\303\263
+\123\233\252\040\071\051\053\146\372\235\257\136\263\222\322\265
+\246\341\032\371\055\101\151\201\024\264\264\265\355\211\075\316
+\373\251\235\065\102\104\261\034\024\163\201\317\052\001\065\232
+\061\325\055\217\155\204\337\200\115\127\343\077\305\204\165\332
+\211\306\060\273\353\217\313\042\010\240\256\252\361\003\154\072
+\113\115\011\245\016\162\306\126\153\041\102\116\043\045\024\150
+\256\166\012\174\014\007\160\144\371\232\057\366\005\071\046\306
+\014\217\031\177\103\136\156\364\133\025\057\333\141\135\346\147
+\057\077\010\224\371\140\264\230\061\332\164\361\204\223\161\115
+\137\373\140\130\321\373\304\301\155\211\242\273\040\037\235\161
+\221\313\062\233\023\075\076\175\222\122\065\254\222\224\242\323
+\030\302\174\307\352\257\166\005\026\335\147\047\302\176\034\007
+\042\041\363\100\012\033\064\007\104\023\302\204\152\216\337\031
+\132\277\177\353\035\342\032\070\321\134\257\107\222\153\200\265
+\060\245\311\215\330\253\061\201\037\337\302\146\067\323\223\251
+\205\206\171\145\322
+END
+
+# Trust for Certificate "SwissSign Platinum CA - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Platinum CA - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\126\340\372\300\073\217\030\043\125\030\345\323\021\312\350\302
+\103\061\253\146
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\311\230\047\167\050\036\075\016\025\074\204\000\270\205\003\346
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023
+\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151
+\156\165\155\040\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\116\262\000\147\014\003\135\117
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "SwissSign Gold CA - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Gold CA - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023
+\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040
+\103\101\040\055\040\107\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023
+\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040
+\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\011\000\273\100\034\103\365\136\117\260
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\272\060\202\003\242\240\003\002\001\002\002\011\000
+\273\100\034\103\365\136\117\260\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\060\105\061\013\060\011\006\003\125
+\004\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023
+\014\123\167\151\163\163\123\151\147\156\040\101\107\061\037\060
+\035\006\003\125\004\003\023\026\123\167\151\163\163\123\151\147
+\156\040\107\157\154\144\040\103\101\040\055\040\107\062\060\036
+\027\015\060\066\061\060\062\065\060\070\063\060\063\065\132\027
+\015\063\066\061\060\062\065\060\070\063\060\063\065\132\060\105
+\061\013\060\011\006\003\125\004\006\023\002\103\110\061\025\060
+\023\006\003\125\004\012\023\014\123\167\151\163\163\123\151\147
+\156\040\101\107\061\037\060\035\006\003\125\004\003\023\026\123
+\167\151\163\163\123\151\147\156\040\107\157\154\144\040\103\101
+\040\055\040\107\062\060\202\002\042\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002
+\012\002\202\002\001\000\257\344\356\176\213\044\016\022\156\251
+\120\055\026\104\073\222\222\134\312\270\135\204\222\102\023\052
+\274\145\127\202\100\076\127\044\315\120\213\045\052\267\157\374
+\357\242\320\300\037\002\044\112\023\226\217\043\023\346\050\130
+\000\243\107\307\006\247\204\043\053\273\275\226\053\177\125\314
+\213\301\127\037\016\142\145\017\335\075\126\212\163\332\256\176
+\155\272\201\034\176\102\214\040\065\331\103\115\204\372\204\333
+\122\054\363\016\047\167\013\153\277\021\057\162\170\237\056\330
+\076\346\030\067\132\052\162\371\332\142\220\222\225\312\037\234
+\351\263\074\053\313\363\001\023\277\132\317\301\265\012\140\275
+\335\265\231\144\123\270\240\226\263\157\342\046\167\221\214\340
+\142\020\002\237\064\017\244\325\222\063\121\336\276\215\272\204
+\172\140\074\152\333\237\053\354\336\336\001\077\156\115\345\120
+\206\313\264\257\355\104\100\305\312\132\214\332\322\053\174\250
+\356\276\246\345\012\252\016\245\337\005\122\267\125\307\042\135
+\062\152\227\227\143\023\333\311\333\171\066\173\205\072\112\305
+\122\211\371\044\347\235\167\251\202\377\125\034\245\161\151\053
+\321\002\044\362\263\046\324\153\332\004\125\345\301\012\307\155
+\060\067\220\052\344\236\024\063\136\026\027\125\305\133\265\313
+\064\211\222\361\235\046\217\241\007\324\306\262\170\120\333\014
+\014\013\174\013\214\101\327\271\351\335\214\210\367\243\115\262
+\062\314\330\027\332\315\267\316\146\235\324\375\136\377\275\227
+\076\051\165\347\176\247\142\130\257\045\064\245\101\307\075\274
+\015\120\312\003\003\017\010\132\037\225\163\170\142\277\257\162
+\024\151\016\245\345\003\016\170\216\046\050\102\360\007\013\142
+\040\020\147\071\106\372\251\003\314\004\070\172\146\357\040\203
+\265\214\112\126\216\221\000\374\216\134\202\336\210\240\303\342
+\150\156\175\215\357\074\335\145\364\135\254\121\357\044\200\256
+\252\126\227\157\371\255\175\332\141\077\230\167\074\245\221\266
+\034\214\046\332\145\242\011\155\301\342\124\343\271\312\114\114
+\200\217\167\173\140\232\036\337\266\362\110\036\016\272\116\124
+\155\230\340\341\242\032\242\167\120\317\304\143\222\354\107\031
+\235\353\346\153\316\301\002\003\001\000\001\243\201\254\060\201
+\251\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\035\006\003\125\035\016\004\026\004\024\133\045\173
+\226\244\145\121\176\270\071\363\300\170\146\136\350\072\347\360
+\356\060\037\006\003\125\035\043\004\030\060\026\200\024\133\045
+\173\226\244\145\121\176\270\071\363\300\170\146\136\350\072\347
+\360\356\060\106\006\003\125\035\040\004\077\060\075\060\073\006
+\011\140\205\164\001\131\001\002\001\001\060\056\060\054\006\010
+\053\006\001\005\005\007\002\001\026\040\150\164\164\160\072\057
+\057\162\145\160\157\163\151\164\157\162\171\056\163\167\151\163
+\163\163\151\147\156\056\143\157\155\057\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\002\001\000\047\272
+\343\224\174\361\256\300\336\027\346\345\330\325\365\124\260\203
+\364\273\315\136\005\173\117\237\165\146\257\074\350\126\176\374
+\162\170\070\003\331\053\142\033\000\271\370\351\140\315\314\316
+\121\212\307\120\061\156\341\112\176\030\057\151\131\266\075\144
+\201\053\343\203\204\346\042\207\216\175\340\356\002\231\141\270
+\036\364\270\053\210\022\026\204\302\061\223\070\226\061\246\271
+\073\123\077\303\044\223\126\133\151\222\354\305\301\273\070\000
+\343\354\027\251\270\334\307\174\001\203\237\062\107\272\122\042
+\064\035\062\172\011\126\247\174\045\066\251\075\113\332\300\202
+\157\012\273\022\310\207\113\047\021\371\036\055\307\223\077\236
+\333\137\046\153\122\331\056\212\361\024\306\104\215\025\251\267
+\277\275\336\246\032\356\256\055\373\110\167\027\376\273\354\257
+\030\365\052\121\360\071\204\227\225\154\156\033\303\053\304\164
+\140\171\045\260\012\047\337\337\136\322\071\317\105\175\102\113
+\337\263\054\036\305\306\135\312\125\072\240\234\151\232\217\332
+\357\262\260\074\237\207\154\022\053\145\160\025\122\061\032\044
+\317\157\061\043\120\037\214\117\217\043\303\164\101\143\034\125
+\250\024\335\076\340\121\120\317\361\033\060\126\016\222\260\202
+\205\330\203\313\042\144\274\055\270\045\325\124\242\270\006\352
+\255\222\244\044\240\301\206\265\112\023\152\107\317\056\013\126
+\225\124\313\316\232\333\152\264\246\262\333\101\010\206\047\167
+\367\152\240\102\154\013\070\316\327\165\120\062\222\302\337\053
+\060\042\110\320\325\101\070\045\135\244\351\135\237\306\224\165
+\320\105\375\060\227\103\217\220\253\012\307\206\163\140\112\151
+\055\336\245\170\327\006\332\152\236\113\076\167\072\040\023\042
+\001\320\277\150\236\143\140\153\065\115\013\155\272\241\075\300
+\223\340\177\043\263\125\255\162\045\116\106\371\322\026\357\260
+\144\301\001\236\351\312\240\152\230\016\317\330\140\362\057\111
+\270\344\102\341\070\065\026\364\310\156\117\367\201\126\350\272
+\243\276\043\257\256\375\157\003\340\002\073\060\166\372\033\155
+\101\317\001\261\351\270\311\146\364\333\046\363\072\244\164\362
+\111\044\133\311\260\320\127\301\372\076\172\341\227\311
+END
+
+# Trust for Certificate "SwissSign Gold CA - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Gold CA - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\330\305\070\212\267\060\033\033\156\324\172\346\105\045\072\157
+\237\032\047\141
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\044\167\331\250\221\321\073\372\210\055\302\377\370\315\063\223
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023
+\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040
+\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\011\000\273\100\034\103\365\136\117\260
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "SwissSign Silver CA - G2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Silver CA - G2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023
+\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145
+\162\040\103\101\040\055\040\107\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023
+\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145
+\162\040\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\117\033\324\057\124\273\057\113
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\275\060\202\003\245\240\003\002\001\002\002\010\117
+\033\324\057\124\273\057\113\060\015\006\011\052\206\110\206\367
+\015\001\001\005\005\000\060\107\061\013\060\011\006\003\125\004
+\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023\014
+\123\167\151\163\163\123\151\147\156\040\101\107\061\041\060\037
+\006\003\125\004\003\023\030\123\167\151\163\163\123\151\147\156
+\040\123\151\154\166\145\162\040\103\101\040\055\040\107\062\060
+\036\027\015\060\066\061\060\062\065\060\070\063\062\064\066\132
+\027\015\063\066\061\060\062\065\060\070\063\062\064\066\132\060
+\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061\025
+\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123\151
+\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023\030
+\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145\162
+\040\103\101\040\055\040\107\062\060\202\002\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000
+\060\202\002\012\002\202\002\001\000\304\361\207\177\323\170\061
+\367\070\311\370\303\231\103\274\307\367\274\067\347\116\161\272
+\113\217\245\163\035\134\156\230\256\003\127\256\070\067\103\057
+\027\075\037\310\316\150\020\301\170\256\031\003\053\020\372\054
+\171\203\366\350\271\150\271\125\362\004\104\247\071\371\374\004
+\213\036\361\242\115\047\371\141\173\272\267\345\242\023\266\353
+\141\076\320\154\321\346\373\372\136\355\035\264\236\240\065\133
+\241\222\313\360\111\222\376\205\012\005\076\346\331\013\342\117
+\273\334\225\067\374\221\351\062\065\042\321\037\072\116\047\205
+\235\260\025\224\062\332\141\015\107\115\140\102\256\222\107\350
+\203\132\120\130\351\212\213\271\135\241\334\335\231\112\037\066
+\147\273\110\344\203\266\067\353\110\072\257\017\147\217\027\007
+\350\004\312\357\152\061\207\324\300\266\371\224\161\173\147\144
+\270\266\221\112\102\173\145\056\060\152\014\365\220\356\225\346
+\362\315\202\354\331\241\112\354\366\262\113\345\105\205\346\155
+\170\223\004\056\234\202\155\066\251\304\061\144\037\206\203\013
+\052\364\065\012\170\311\125\317\101\260\107\351\060\237\231\276
+\141\250\006\204\271\050\172\137\070\331\033\251\070\260\203\177
+\163\301\303\073\110\052\202\017\041\233\270\314\250\065\303\204
+\033\203\263\076\276\244\225\151\001\072\211\000\170\004\331\311
+\364\231\031\253\126\176\133\213\206\071\025\221\244\020\054\011
+\062\200\140\263\223\300\052\266\030\013\235\176\215\111\362\020
+\112\177\371\325\106\057\031\222\243\231\247\046\254\273\214\074
+\346\016\274\107\007\334\163\121\361\160\144\057\010\371\264\107
+\035\060\154\104\352\051\067\205\222\150\146\274\203\070\376\173
+\071\056\323\120\360\037\373\136\140\266\251\246\372\047\101\361
+\233\030\162\362\365\204\164\112\311\147\304\124\256\110\144\337
+\214\321\156\260\035\341\007\217\010\036\231\234\161\351\114\330
+\245\367\107\022\037\164\321\121\236\206\363\302\242\043\100\013
+\163\333\113\246\347\163\006\214\301\240\351\301\131\254\106\372
+\346\057\370\317\161\234\106\155\271\304\025\215\070\171\003\105
+\110\357\304\135\327\010\356\207\071\042\206\262\015\017\130\103
+\367\161\251\110\056\375\352\326\037\002\003\001\000\001\243\201
+\254\060\201\251\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024
+\027\240\315\301\344\101\266\072\133\073\313\105\235\275\034\302
+\230\372\206\130\060\037\006\003\125\035\043\004\030\060\026\200
+\024\027\240\315\301\344\101\266\072\133\073\313\105\235\275\034
+\302\230\372\206\130\060\106\006\003\125\035\040\004\077\060\075
+\060\073\006\011\140\205\164\001\131\001\003\001\001\060\056\060
+\054\006\010\053\006\001\005\005\007\002\001\026\040\150\164\164
+\160\072\057\057\162\145\160\157\163\151\164\157\162\171\056\163
+\167\151\163\163\163\151\147\156\056\143\157\155\057\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002\001
+\000\163\306\201\340\047\322\055\017\340\225\060\342\232\101\177
+\120\054\137\137\142\141\251\206\152\151\030\014\164\111\326\135
+\204\352\101\122\030\157\130\255\120\126\040\152\306\275\050\151
+\130\221\334\221\021\065\251\072\035\274\032\245\140\236\330\037
+\177\105\221\151\331\176\273\170\162\301\006\017\052\316\217\205
+\160\141\254\240\315\013\270\071\051\126\204\062\116\206\273\075
+\304\052\331\327\037\162\356\376\121\241\042\101\261\161\002\143
+\032\202\260\142\253\136\127\022\037\337\313\335\165\240\300\135
+\171\220\214\033\340\120\346\336\061\376\230\173\160\137\245\220
+\330\255\370\002\266\157\323\140\335\100\113\042\305\075\255\072
+\172\237\032\032\107\221\171\063\272\202\334\062\151\003\226\156
+\037\113\360\161\376\343\147\162\240\261\277\134\213\344\372\231
+\042\307\204\271\033\215\043\227\077\355\045\340\317\145\273\365
+\141\004\357\335\036\262\132\101\042\132\241\237\135\054\350\133
+\311\155\251\014\014\170\252\140\306\126\217\001\132\014\150\274
+\151\031\171\304\037\176\227\005\277\305\351\044\121\136\324\325
+\113\123\355\331\043\132\066\003\145\243\301\003\255\101\060\363
+\106\033\205\220\257\145\265\325\261\344\026\133\170\165\035\227
+\172\155\131\251\052\217\173\336\303\207\211\020\231\111\163\170
+\310\075\275\121\065\164\052\325\361\176\151\033\052\273\073\275
+\045\270\232\132\075\162\141\220\146\207\356\014\326\115\324\021
+\164\013\152\376\013\003\374\243\125\127\211\376\112\313\256\133
+\027\005\310\362\215\043\061\123\070\322\055\152\077\202\271\215
+\010\152\367\136\101\164\156\303\021\176\007\254\051\140\221\077
+\070\312\127\020\015\275\060\057\307\245\346\101\240\332\256\005
+\207\232\240\244\145\154\114\011\014\211\272\270\323\271\300\223
+\212\060\372\215\345\232\153\025\001\116\147\252\332\142\126\076
+\204\010\146\322\304\066\175\247\076\020\374\210\340\324\200\345
+\000\275\252\363\116\006\243\172\152\371\142\162\343\011\117\353
+\233\016\001\043\361\237\273\174\334\334\154\021\227\045\262\362
+\264\143\024\322\006\052\147\214\203\365\316\352\007\330\232\152
+\036\354\344\012\273\052\114\353\011\140\071\316\312\142\330\056
+\156
+END
+
+# Trust for Certificate "SwissSign Silver CA - G2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SwissSign Silver CA - G2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\233\252\345\237\126\356\041\313\103\132\276\045\223\337\247\360
+\100\321\035\313
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\340\006\241\311\175\317\311\374\015\300\126\165\226\330\142\023
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061
+\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123
+\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023
+\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145
+\162\040\103\101\040\055\040\107\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\010\117\033\324\057\124\273\057\113
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "GeoTrust Primary Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Primary Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\130\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\061\060\057\006\003\125\004\003
+\023\050\107\145\157\124\162\165\163\164\040\120\162\151\155\141
+\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\130\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\061\060\057\006\003\125\004\003
+\023\050\107\145\157\124\162\165\163\164\040\120\162\151\155\141
+\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\030\254\265\152\375\151\266\025\072\143\154\257\332\372
+\304\241
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\174\060\202\002\144\240\003\002\001\002\002\020\030
+\254\265\152\375\151\266\025\072\143\154\257\332\372\304\241\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\130
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\026\060
+\024\006\003\125\004\012\023\015\107\145\157\124\162\165\163\164
+\040\111\156\143\056\061\061\060\057\006\003\125\004\003\023\050
+\107\145\157\124\162\165\163\164\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\060\036\027\015\060\066\061\061
+\062\067\060\060\060\060\060\060\132\027\015\063\066\060\067\061
+\066\062\063\065\071\065\071\132\060\130\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\026\060\024\006\003\125\004\012
+\023\015\107\145\157\124\162\165\163\164\040\111\156\143\056\061
+\061\060\057\006\003\125\004\003\023\050\107\145\157\124\162\165
+\163\164\040\120\162\151\155\141\162\171\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\276\270\025\173\377\324\174\175\147\255\203\144\173
+\310\102\123\055\337\366\204\010\040\141\326\001\131\152\234\104
+\021\257\357\166\375\225\176\316\141\060\273\172\203\137\002\275
+\001\146\312\356\025\215\157\241\060\234\275\241\205\236\224\072
+\363\126\210\000\061\317\330\356\152\226\002\331\355\003\214\373
+\165\155\347\352\270\125\026\005\026\232\364\340\136\261\210\300
+\144\205\134\025\115\210\307\267\272\340\165\351\255\005\075\235
+\307\211\110\340\273\050\310\003\341\060\223\144\136\122\300\131
+\160\042\065\127\210\212\361\225\012\203\327\274\061\163\001\064
+\355\357\106\161\340\153\002\250\065\162\153\227\233\146\340\313
+\034\171\137\330\032\004\150\036\107\002\346\235\140\342\066\227
+\001\337\316\065\222\337\276\147\307\155\167\131\073\217\235\326
+\220\025\224\274\102\064\020\301\071\371\261\047\076\176\326\212
+\165\305\262\257\226\323\242\336\233\344\230\276\175\341\351\201
+\255\266\157\374\327\016\332\340\064\260\015\032\167\347\343\010
+\230\357\130\372\234\204\267\066\257\302\337\254\322\364\020\006
+\160\161\065\002\003\001\000\001\243\102\060\100\060\017\006\003
+\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006
+\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006
+\003\125\035\016\004\026\004\024\054\325\120\101\227\025\213\360
+\217\066\141\133\112\373\153\331\231\311\063\222\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\132\160\177\054\335\267\064\117\365\206\121\251\046\276\113\270
+\252\361\161\015\334\141\307\240\352\064\036\172\167\017\004\065
+\350\047\217\154\220\277\221\026\044\106\076\112\116\316\053\026
+\325\013\122\035\374\037\147\242\002\105\061\117\316\363\372\003
+\247\171\235\123\152\331\332\143\072\370\200\327\323\231\341\245
+\341\276\324\125\161\230\065\072\276\223\352\256\255\102\262\220
+\157\340\374\041\115\065\143\063\211\111\326\233\116\312\307\347
+\116\011\000\367\332\307\357\231\142\231\167\266\225\042\136\212
+\240\253\364\270\170\230\312\070\031\231\311\162\236\170\315\113
+\254\257\031\240\163\022\055\374\302\101\272\201\221\332\026\132
+\061\267\371\264\161\200\022\110\231\162\163\132\131\123\301\143
+\122\063\355\247\311\322\071\002\160\372\340\261\102\146\051\252
+\233\121\355\060\124\042\024\137\331\253\035\301\344\224\360\370
+\365\053\367\352\312\170\106\326\270\221\375\246\015\053\032\024
+\001\076\200\360\102\240\225\007\136\155\315\314\113\244\105\215
+\253\022\350\263\336\132\345\240\174\350\017\042\035\132\351\131
+END
+
+# Trust for Certificate "GeoTrust Primary Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "GeoTrust Primary Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\062\074\021\216\033\367\270\266\122\124\342\342\020\015\326\002
+\220\067\360\226
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\002\046\303\001\136\010\060\067\103\251\320\175\317\067\346\277
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\130\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\026\060\024\006\003\125\004\012\023\015\107\145\157\124\162\165
+\163\164\040\111\156\143\056\061\061\060\057\006\003\125\004\003
+\023\050\107\145\157\124\162\165\163\164\040\120\162\151\155\141
+\162\171\040\103\145\162\164\151\146\151\143\141\164\151\157\156
+\040\101\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\030\254\265\152\375\151\266\025\072\143\154\257\332\372
+\304\241
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "thawte Primary Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "thawte Primary Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\025\060\023\006\003\125\004\012\023\014\164\150\141\167\164
+\145\054\040\111\156\143\056\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\070\060\066\006\003\125\004\013\023\057\050\143\051\040
+\062\060\060\066\040\164\150\141\167\164\145\054\040\111\156\143
+\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151\172
+\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035\006
+\003\125\004\003\023\026\164\150\141\167\164\145\040\120\162\151
+\155\141\162\171\040\122\157\157\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\025\060\023\006\003\125\004\012\023\014\164\150\141\167\164
+\145\054\040\111\156\143\056\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\070\060\066\006\003\125\004\013\023\057\050\143\051\040
+\062\060\060\066\040\164\150\141\167\164\145\054\040\111\156\143
+\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151\172
+\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035\006
+\003\125\004\003\023\026\164\150\141\167\164\145\040\120\162\151
+\155\141\162\171\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\064\116\325\127\040\325\355\354\111\364\057\316\067\333
+\053\155
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\040\060\202\003\010\240\003\002\001\002\002\020\064
+\116\325\127\040\325\355\354\111\364\057\316\067\333\053\155\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\251\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025
+\060\023\006\003\125\004\012\023\014\164\150\141\167\164\145\054
+\040\111\156\143\056\061\050\060\046\006\003\125\004\013\023\037
+\103\145\162\164\151\146\151\143\141\164\151\157\156\040\123\145
+\162\166\151\143\145\163\040\104\151\166\151\163\151\157\156\061
+\070\060\066\006\003\125\004\013\023\057\050\143\051\040\062\060
+\060\066\040\164\150\141\167\164\145\054\040\111\156\143\056\040
+\055\040\106\157\162\040\141\165\164\150\157\162\151\172\145\144
+\040\165\163\145\040\157\156\154\171\061\037\060\035\006\003\125
+\004\003\023\026\164\150\141\167\164\145\040\120\162\151\155\141
+\162\171\040\122\157\157\164\040\103\101\060\036\027\015\060\066
+\061\061\061\067\060\060\060\060\060\060\132\027\015\063\066\060
+\067\061\066\062\063\065\071\065\071\132\060\201\251\061\013\060
+\011\006\003\125\004\006\023\002\125\123\061\025\060\023\006\003
+\125\004\012\023\014\164\150\141\167\164\145\054\040\111\156\143
+\056\061\050\060\046\006\003\125\004\013\023\037\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143
+\145\163\040\104\151\166\151\163\151\157\156\061\070\060\066\006
+\003\125\004\013\023\057\050\143\051\040\062\060\060\066\040\164
+\150\141\167\164\145\054\040\111\156\143\056\040\055\040\106\157
+\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163\145
+\040\157\156\154\171\061\037\060\035\006\003\125\004\003\023\026
+\164\150\141\167\164\145\040\120\162\151\155\141\162\171\040\122
+\157\157\164\040\103\101\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\254\240\360\373\200\131\324\234\307
+\244\317\235\241\131\163\011\020\105\014\015\054\156\150\361\154
+\133\110\150\111\131\067\374\013\063\031\302\167\177\314\020\055
+\225\064\034\346\353\115\011\247\034\322\270\311\227\066\002\267
+\211\324\044\137\006\300\314\104\224\224\215\002\142\157\353\132
+\335\021\215\050\232\134\204\220\020\172\015\275\164\146\057\152
+\070\240\342\325\124\104\353\035\007\237\007\272\157\356\351\375
+\116\013\051\365\076\204\240\001\361\234\253\370\034\176\211\244
+\350\241\330\161\145\015\243\121\173\356\274\322\042\140\015\271
+\133\235\337\272\374\121\133\013\257\230\262\351\056\351\004\350
+\142\207\336\053\310\327\116\301\114\144\036\335\317\207\130\272
+\112\117\312\150\007\035\034\235\112\306\325\057\221\314\174\161
+\162\034\305\300\147\353\062\375\311\222\134\224\332\205\300\233
+\277\123\175\053\011\364\214\235\221\037\227\152\122\313\336\011
+\066\244\167\330\173\207\120\104\325\076\156\051\151\373\071\111
+\046\036\011\245\200\173\100\055\353\350\047\205\311\376\141\375
+\176\346\174\227\035\325\235\002\003\001\000\001\243\102\060\100
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\035\006\003\125\035\016\004\026\004\024\173\133\105\317
+\257\316\313\172\375\061\222\032\152\266\363\106\353\127\110\120
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003
+\202\001\001\000\171\021\300\113\263\221\266\374\360\351\147\324
+\015\156\105\276\125\350\223\322\316\003\077\355\332\045\260\035
+\127\313\036\072\166\240\114\354\120\166\350\144\162\014\244\251
+\361\270\213\326\326\207\204\273\062\345\101\021\300\167\331\263
+\140\235\353\033\325\321\156\104\104\251\246\001\354\125\142\035
+\167\270\134\216\110\111\174\234\073\127\021\254\255\163\067\216
+\057\170\134\220\150\107\331\140\140\346\374\007\075\042\040\027
+\304\367\026\351\304\330\162\371\310\163\174\337\026\057\025\251
+\076\375\152\047\266\241\353\132\272\230\037\325\343\115\144\012
+\235\023\310\141\272\365\071\034\207\272\270\275\173\042\177\366
+\376\254\100\171\345\254\020\157\075\217\033\171\166\213\304\067
+\263\041\030\204\345\066\000\353\143\040\231\271\351\376\063\004
+\273\101\310\301\002\371\104\143\040\236\201\316\102\323\326\077
+\054\166\323\143\234\131\335\217\246\341\016\240\056\101\367\056
+\225\107\317\274\375\063\363\366\013\141\176\176\221\053\201\107
+\302\047\060\356\247\020\135\067\217\134\071\053\344\004\360\173
+\215\126\214\150
+END
+
+# Trust for Certificate "thawte Primary Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "thawte Primary Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\221\306\326\356\076\212\310\143\204\345\110\302\231\051\134\165
+\154\201\173\201
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\214\312\334\013\042\316\365\276\162\254\101\032\021\250\330\022
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\251\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\025\060\023\006\003\125\004\012\023\014\164\150\141\167\164
+\145\054\040\111\156\143\056\061\050\060\046\006\003\125\004\013
+\023\037\103\145\162\164\151\146\151\143\141\164\151\157\156\040
+\123\145\162\166\151\143\145\163\040\104\151\166\151\163\151\157
+\156\061\070\060\066\006\003\125\004\013\023\057\050\143\051\040
+\062\060\060\066\040\164\150\141\167\164\145\054\040\111\156\143
+\056\040\055\040\106\157\162\040\141\165\164\150\157\162\151\172
+\145\144\040\165\163\145\040\157\156\154\171\061\037\060\035\006
+\003\125\004\003\023\026\164\150\141\167\164\145\040\120\162\151
+\155\141\162\171\040\122\157\157\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\064\116\325\127\040\325\355\354\111\364\057\316\067\333
+\053\155
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "VeriSign Class 3 Public Primary Certification Authority - G5"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "VeriSign Class 3 Public Primary Certification Authority - G5"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\062\060\060\066\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\065
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\062\060\060\066\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\065
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\030\332\321\236\046\175\350\273\112\041\130\315\314\153
+\073\112
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\323\060\202\003\273\240\003\002\001\002\002\020\030
+\332\321\236\046\175\350\273\112\041\130\315\314\153\073\112\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\312\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027
+\060\025\006\003\125\004\012\023\016\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\061\037\060\035\006\003\125\004\013
+\023\026\126\145\162\151\123\151\147\156\040\124\162\165\163\164
+\040\116\145\164\167\157\162\153\061\072\060\070\006\003\125\004
+\013\023\061\050\143\051\040\062\060\060\066\040\126\145\162\151
+\123\151\147\156\054\040\111\156\143\056\040\055\040\106\157\162
+\040\141\165\164\150\157\162\151\172\145\144\040\165\163\145\040
+\157\156\154\171\061\105\060\103\006\003\125\004\003\023\074\126
+\145\162\151\123\151\147\156\040\103\154\141\163\163\040\063\040
+\120\165\142\154\151\143\040\120\162\151\155\141\162\171\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\040\055\040\107\065\060\036\027\015\060
+\066\061\061\060\070\060\060\060\060\060\060\132\027\015\063\066
+\060\067\061\066\062\063\065\071\065\071\132\060\201\312\061\013
+\060\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006
+\003\125\004\012\023\016\126\145\162\151\123\151\147\156\054\040
+\111\156\143\056\061\037\060\035\006\003\125\004\013\023\026\126
+\145\162\151\123\151\147\156\040\124\162\165\163\164\040\116\145
+\164\167\157\162\153\061\072\060\070\006\003\125\004\013\023\061
+\050\143\051\040\062\060\060\066\040\126\145\162\151\123\151\147
+\156\054\040\111\156\143\056\040\055\040\106\157\162\040\141\165
+\164\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154
+\171\061\105\060\103\006\003\125\004\003\023\074\126\145\162\151
+\123\151\147\156\040\103\154\141\163\163\040\063\040\120\165\142
+\154\151\143\040\120\162\151\155\141\162\171\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\040\055\040\107\065\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\257\044\010\010\051\172\065
+\236\140\014\252\347\113\073\116\334\174\274\074\105\034\273\053
+\340\376\051\002\371\127\010\243\144\205\025\047\365\361\255\310
+\061\211\135\042\350\052\252\246\102\263\217\370\271\125\267\261
+\267\113\263\376\217\176\007\127\354\357\103\333\146\142\025\141
+\317\140\015\244\330\336\370\340\303\142\010\075\124\023\353\111
+\312\131\124\205\046\345\053\217\033\237\353\365\241\221\302\063
+\111\330\103\143\152\122\113\322\217\350\160\121\115\321\211\151
+\173\307\160\366\263\334\022\164\333\173\135\113\126\323\226\277
+\025\167\241\260\364\242\045\362\257\034\222\147\030\345\364\006
+\004\357\220\271\344\000\344\335\072\265\031\377\002\272\364\074
+\356\340\213\353\067\213\354\364\327\254\362\366\360\075\257\335
+\165\221\063\031\035\034\100\313\164\044\031\041\223\331\024\376
+\254\052\122\307\217\325\004\111\344\215\143\107\210\074\151\203
+\313\376\107\275\053\176\117\305\225\256\016\235\324\321\103\300
+\147\163\343\024\010\176\345\077\237\163\270\063\012\317\135\077
+\064\207\226\212\356\123\350\045\025\002\003\001\000\001\243\201
+\262\060\201\257\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\006\060\155\006\010\053\006\001\005\005\007\001
+\014\004\141\060\137\241\135\240\133\060\131\060\127\060\125\026
+\011\151\155\141\147\145\057\147\151\146\060\041\060\037\060\007
+\006\005\053\016\003\002\032\004\024\217\345\323\032\206\254\215
+\216\153\303\317\200\152\324\110\030\054\173\031\056\060\045\026
+\043\150\164\164\160\072\057\057\154\157\147\157\056\166\145\162
+\151\163\151\147\156\056\143\157\155\057\166\163\154\157\147\157
+\056\147\151\146\060\035\006\003\125\035\016\004\026\004\024\177
+\323\145\247\302\335\354\273\360\060\011\363\103\071\372\002\257
+\063\061\063\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\202\001\001\000\223\044\112\060\137\142\317\330\032
+\230\057\075\352\334\231\055\275\167\366\245\171\042\070\354\304
+\247\240\170\022\255\142\016\105\160\144\305\347\227\146\055\230
+\011\176\137\257\326\314\050\145\362\001\252\010\032\107\336\371
+\371\174\222\132\010\151\040\015\331\076\155\156\074\015\156\330
+\346\006\221\100\030\271\370\301\355\337\333\101\252\340\226\040
+\311\315\144\025\070\201\311\224\356\242\204\051\013\023\157\216
+\333\014\335\045\002\333\244\213\031\104\322\101\172\005\151\112
+\130\117\140\312\176\202\152\013\002\252\045\027\071\265\333\177
+\347\204\145\052\225\212\275\206\336\136\201\026\203\055\020\314
+\336\375\250\202\052\155\050\037\015\013\304\345\347\032\046\031
+\341\364\021\157\020\265\225\374\347\102\005\062\333\316\235\121
+\136\050\266\236\205\323\133\357\245\175\105\100\162\216\267\016
+\153\016\006\373\063\065\110\161\270\235\047\213\304\145\137\015
+\206\166\234\104\172\366\225\134\366\135\062\010\063\244\124\266
+\030\077\150\134\362\102\112\205\070\124\203\137\321\350\054\362
+\254\021\326\250\355\143\152
+END
+
+# Trust for Certificate "VeriSign Class 3 Public Primary Certification Authority - G5"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "VeriSign Class 3 Public Primary Certification Authority - G5"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\116\266\325\170\111\233\034\317\137\130\036\255\126\276\075\233
+\147\104\245\345
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\313\027\344\061\147\076\342\011\376\105\127\223\363\012\372\034
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\312\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\027\060\025\006\003\125\004\012\023\016\126\145\162\151\123
+\151\147\156\054\040\111\156\143\056\061\037\060\035\006\003\125
+\004\013\023\026\126\145\162\151\123\151\147\156\040\124\162\165
+\163\164\040\116\145\164\167\157\162\153\061\072\060\070\006\003
+\125\004\013\023\061\050\143\051\040\062\060\060\066\040\126\145
+\162\151\123\151\147\156\054\040\111\156\143\056\040\055\040\106
+\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163
+\145\040\157\156\154\171\061\105\060\103\006\003\125\004\003\023
+\074\126\145\162\151\123\151\147\156\040\103\154\141\163\163\040
+\063\040\120\165\142\154\151\143\040\120\162\151\155\141\162\171
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171\040\055\040\107\065
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\030\332\321\236\046\175\350\273\112\041\130\315\314\153
+\073\112
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "SecureTrust CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SecureTrust CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165
+\162\145\124\162\165\163\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165
+\162\145\124\162\165\163\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\360\216\134\010\026\245\255\102\177\360\353\047\030
+\131\320
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\270\060\202\002\240\240\003\002\001\002\002\020\014
+\360\216\134\010\026\245\255\102\177\360\353\047\030\131\320\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\110
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\040\060
+\036\006\003\125\004\012\023\027\123\145\143\165\162\145\124\162
+\165\163\164\040\103\157\162\160\157\162\141\164\151\157\156\061
+\027\060\025\006\003\125\004\003\023\016\123\145\143\165\162\145
+\124\162\165\163\164\040\103\101\060\036\027\015\060\066\061\061
+\060\067\061\071\063\061\061\070\132\027\015\062\071\061\062\063
+\061\061\071\064\060\065\065\132\060\110\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\040\060\036\006\003\125\004\012
+\023\027\123\145\143\165\162\145\124\162\165\163\164\040\103\157
+\162\160\157\162\141\164\151\157\156\061\027\060\025\006\003\125
+\004\003\023\016\123\145\143\165\162\145\124\162\165\163\164\040
+\103\101\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\253\244\201\345\225\315\365\366\024\216\302\117\312
+\324\342\170\225\130\234\101\341\015\231\100\044\027\071\221\063
+\146\351\276\341\203\257\142\134\211\321\374\044\133\141\263\340
+\021\021\101\034\035\156\360\270\273\370\336\247\201\272\246\110
+\306\237\035\275\276\216\251\101\076\270\224\355\051\032\324\216
+\322\003\035\003\357\155\015\147\034\127\327\006\255\312\310\365
+\376\016\257\146\045\110\004\226\013\135\243\272\026\303\010\117
+\321\106\370\024\134\362\310\136\001\231\155\375\210\314\206\250
+\301\157\061\102\154\122\076\150\313\363\031\064\337\273\207\030
+\126\200\046\304\320\334\300\157\337\336\240\302\221\026\240\144
+\021\113\104\274\036\366\347\372\143\336\146\254\166\244\161\243
+\354\066\224\150\172\167\244\261\347\016\057\201\172\342\265\162
+\206\357\242\153\213\360\017\333\323\131\077\272\162\274\104\044
+\234\343\163\263\367\257\127\057\102\046\235\251\164\272\000\122
+\362\113\315\123\174\107\013\066\205\016\146\251\010\227\026\064
+\127\301\146\367\200\343\355\160\124\307\223\340\056\050\025\131
+\207\272\273\002\003\001\000\001\243\201\235\060\201\232\060\023
+\006\011\053\006\001\004\001\202\067\024\002\004\006\036\004\000
+\103\000\101\060\013\006\003\125\035\017\004\004\003\002\001\206
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\035\006\003\125\035\016\004\026\004\024\102\062\266\026
+\372\004\375\376\135\113\172\303\375\367\114\100\035\132\103\257
+\060\064\006\003\125\035\037\004\055\060\053\060\051\240\047\240
+\045\206\043\150\164\164\160\072\057\057\143\162\154\056\163\145
+\143\165\162\145\164\162\165\163\164\056\143\157\155\057\123\124
+\103\101\056\143\162\154\060\020\006\011\053\006\001\004\001\202
+\067\025\001\004\003\002\001\000\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\060\355\117\112
+\341\130\072\122\162\133\265\246\243\145\030\246\273\121\073\167
+\351\235\352\323\237\134\340\105\145\173\015\312\133\342\160\120
+\262\224\005\024\256\111\307\215\101\007\022\163\224\176\014\043
+\041\375\274\020\177\140\020\132\162\365\230\016\254\354\271\177
+\335\172\157\135\323\034\364\377\210\005\151\102\251\005\161\310
+\267\254\046\350\056\264\214\152\377\161\334\270\261\337\231\274
+\174\041\124\053\344\130\242\273\127\051\256\236\251\243\031\046
+\017\231\056\010\260\357\375\151\317\231\032\011\215\343\247\237
+\053\311\066\064\173\044\263\170\114\225\027\244\006\046\036\266
+\144\122\066\137\140\147\331\234\305\005\164\013\347\147\043\322
+\010\374\210\351\256\213\177\341\060\364\067\176\375\306\062\332
+\055\236\104\060\060\154\356\007\336\322\064\374\322\377\100\366
+\113\364\146\106\006\124\246\362\062\012\143\046\060\153\233\321
+\334\213\107\272\341\271\325\142\320\242\240\364\147\005\170\051
+\143\032\157\004\326\370\306\114\243\232\261\067\264\215\345\050
+\113\035\236\054\302\270\150\274\355\002\356\061
+END
+
+# Trust for Certificate "SecureTrust CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "SecureTrust CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\207\202\306\303\004\065\073\317\322\226\222\322\131\076\175\104
+\331\064\377\021
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\334\062\303\247\155\045\127\307\150\011\235\352\055\251\242\321
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165
+\162\145\124\162\165\163\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\360\216\134\010\026\245\255\102\177\360\353\047\030
+\131\320
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Secure Global CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Secure Global CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165
+\162\145\040\107\154\157\142\141\154\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165
+\162\145\040\107\154\157\142\141\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\007\126\042\244\350\324\212\211\115\364\023\310\360\370
+\352\245
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\274\060\202\002\244\240\003\002\001\002\002\020\007
+\126\042\244\350\324\212\211\115\364\023\310\360\370\352\245\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\112
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\040\060
+\036\006\003\125\004\012\023\027\123\145\143\165\162\145\124\162
+\165\163\164\040\103\157\162\160\157\162\141\164\151\157\156\061
+\031\060\027\006\003\125\004\003\023\020\123\145\143\165\162\145
+\040\107\154\157\142\141\154\040\103\101\060\036\027\015\060\066
+\061\061\060\067\061\071\064\062\062\070\132\027\015\062\071\061
+\062\063\061\061\071\065\062\060\066\132\060\112\061\013\060\011
+\006\003\125\004\006\023\002\125\123\061\040\060\036\006\003\125
+\004\012\023\027\123\145\143\165\162\145\124\162\165\163\164\040
+\103\157\162\160\157\162\141\164\151\157\156\061\031\060\027\006
+\003\125\004\003\023\020\123\145\143\165\162\145\040\107\154\157
+\142\141\154\040\103\101\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\257\065\056\330\254\154\125\151\006
+\161\345\023\150\044\263\117\330\314\041\107\370\361\140\070\211
+\211\003\351\275\352\136\106\123\011\334\134\365\132\350\367\105
+\052\002\353\061\141\327\051\063\114\316\307\174\012\067\176\017
+\272\062\230\341\035\227\257\217\307\334\311\070\226\363\333\032
+\374\121\355\150\306\320\156\244\174\044\321\256\102\310\226\120
+\143\056\340\376\165\376\230\247\137\111\056\225\343\071\063\144
+\216\036\244\137\220\322\147\074\262\331\376\101\271\125\247\011
+\216\162\005\036\213\335\104\205\202\102\320\111\300\035\140\360
+\321\027\054\225\353\366\245\301\222\243\305\302\247\010\140\015
+\140\004\020\226\171\236\026\064\346\251\266\372\045\105\071\310
+\036\145\371\223\365\252\361\122\334\231\230\075\245\206\032\014
+\065\063\372\113\245\004\006\025\034\061\200\357\252\030\153\302
+\173\327\332\316\371\063\040\325\365\275\152\063\055\201\004\373
+\260\134\324\234\243\342\134\035\343\251\102\165\136\173\324\167
+\357\071\124\272\311\012\030\033\022\231\111\057\210\113\375\120
+\142\321\163\347\217\172\103\002\003\001\000\001\243\201\235\060
+\201\232\060\023\006\011\053\006\001\004\001\202\067\024\002\004
+\006\036\004\000\103\000\101\060\013\006\003\125\035\017\004\004
+\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004\005
+\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024
+\257\104\004\302\101\176\110\203\333\116\071\002\354\354\204\172
+\346\316\311\244\060\064\006\003\125\035\037\004\055\060\053\060
+\051\240\047\240\045\206\043\150\164\164\160\072\057\057\143\162
+\154\056\163\145\143\165\162\145\164\162\165\163\164\056\143\157
+\155\057\123\107\103\101\056\143\162\154\060\020\006\011\053\006
+\001\004\001\202\067\025\001\004\003\002\001\000\060\015\006\011
+\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000
+\143\032\010\100\175\244\136\123\015\167\330\172\256\037\015\013
+\121\026\003\357\030\174\310\343\257\152\130\223\024\140\221\262
+\204\334\210\116\276\071\212\072\363\346\202\211\135\001\067\263
+\253\044\244\025\016\222\065\132\112\104\136\116\127\372\165\316
+\037\110\316\146\364\074\100\046\222\230\154\033\356\044\106\014
+\027\263\122\245\333\245\221\221\317\067\323\157\347\047\010\072
+\116\031\037\072\247\130\134\027\317\171\077\213\344\247\323\046
+\043\235\046\017\130\151\374\107\176\262\320\215\213\223\277\051
+\117\103\151\164\166\147\113\317\007\214\346\002\367\265\341\264
+\103\265\113\055\024\237\371\334\046\015\277\246\107\164\006\330
+\210\321\072\051\060\204\316\322\071\200\142\033\250\307\127\111
+\274\152\125\121\147\025\112\276\065\007\344\325\165\230\067\171
+\060\024\333\051\235\154\305\151\314\107\125\242\060\367\314\134
+\177\302\303\230\034\153\116\026\200\353\172\170\145\105\242\000
+\032\257\014\015\125\144\064\110\270\222\271\361\264\120\051\362
+\117\043\037\332\154\254\037\104\341\335\043\170\121\133\307\026
+END
+
+# Trust for Certificate "Secure Global CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Secure Global CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\072\104\163\132\345\201\220\037\044\206\141\106\036\073\234\304
+\137\365\072\033
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\317\364\047\015\324\355\334\145\026\111\155\075\332\277\156\336
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145
+\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157
+\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165
+\162\145\040\107\154\157\142\141\154\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\007\126\042\244\350\324\212\211\115\364\023\310\360\370
+\352\245
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "COMODO Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "COMODO Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006
+\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006
+\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\116\201\055\212\202\145\340\013\002\356\076\065\002\106
+\345\075
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\035\060\202\003\005\240\003\002\001\002\002\020\116
+\201\055\212\202\145\340\013\002\356\076\065\002\106\345\075\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\201\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033
+\060\031\006\003\125\004\010\023\022\107\162\145\141\164\145\162
+\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006
+\003\125\004\007\023\007\123\141\154\146\157\162\144\061\032\060
+\030\006\003\125\004\012\023\021\103\117\115\117\104\117\040\103
+\101\040\114\151\155\151\164\145\144\061\047\060\045\006\003\125
+\004\003\023\036\103\117\115\117\104\117\040\103\145\162\164\151
+\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151
+\164\171\060\036\027\015\060\066\061\062\060\061\060\060\060\060
+\060\060\132\027\015\062\071\061\062\063\061\062\063\065\071\065
+\071\132\060\201\201\061\013\060\011\006\003\125\004\006\023\002
+\107\102\061\033\060\031\006\003\125\004\010\023\022\107\162\145
+\141\164\145\162\040\115\141\156\143\150\145\163\164\145\162\061
+\020\060\016\006\003\125\004\007\023\007\123\141\154\146\157\162
+\144\061\032\060\030\006\003\125\004\012\023\021\103\117\115\117
+\104\117\040\103\101\040\114\151\155\151\164\145\144\061\047\060
+\045\006\003\125\004\003\023\036\103\117\115\117\104\117\040\103
+\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164
+\150\157\162\151\164\171\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\320\100\213\213\162\343\221\033\367
+\121\301\033\124\004\230\323\251\277\301\346\212\135\073\207\373
+\273\210\316\015\343\057\077\006\226\360\242\051\120\231\256\333
+\073\241\127\260\164\121\161\315\355\102\221\115\101\376\251\310
+\330\152\206\167\104\273\131\146\227\120\136\264\324\054\160\104
+\317\332\067\225\102\151\074\060\304\161\263\122\360\041\115\241
+\330\272\071\174\034\236\243\044\235\362\203\026\230\252\026\174
+\103\233\025\133\267\256\064\221\376\324\142\046\030\106\232\077
+\353\301\371\361\220\127\353\254\172\015\213\333\162\060\152\146
+\325\340\106\243\160\334\150\331\377\004\110\211\167\336\265\351
+\373\147\155\101\351\274\071\275\062\331\142\002\361\261\250\075
+\156\067\234\342\057\342\323\242\046\213\306\270\125\103\210\341
+\043\076\245\322\044\071\152\107\253\000\324\241\263\251\045\376
+\015\077\247\035\272\323\121\301\013\244\332\254\070\357\125\120
+\044\005\145\106\223\064\117\055\215\255\306\324\041\031\322\216
+\312\005\141\161\007\163\107\345\212\031\022\275\004\115\316\116
+\234\245\110\254\273\046\367\002\003\001\000\001\243\201\216\060
+\201\213\060\035\006\003\125\035\016\004\026\004\024\013\130\345
+\213\306\114\025\067\244\100\251\060\251\041\276\107\066\132\126
+\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\111\006\003\125\035\037\004\102\060\100\060\076\240
+\074\240\072\206\070\150\164\164\160\072\057\057\143\162\154\056
+\143\157\155\157\144\157\143\141\056\143\157\155\057\103\117\115
+\117\104\117\103\145\162\164\151\146\151\143\141\164\151\157\156
+\101\165\164\150\157\162\151\164\171\056\143\162\154\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001
+\000\076\230\236\233\366\033\351\327\071\267\170\256\035\162\030
+\111\323\207\344\103\202\353\077\311\252\365\250\265\357\125\174
+\041\122\145\371\325\015\341\154\364\076\214\223\163\221\056\002
+\304\116\007\161\157\300\217\070\141\010\250\036\201\012\300\057
+\040\057\101\213\221\334\110\105\274\361\306\336\272\166\153\063
+\310\000\055\061\106\114\355\347\235\317\210\224\377\063\300\126
+\350\044\206\046\270\330\070\070\337\052\153\335\022\314\307\077
+\107\027\114\242\302\006\226\011\326\333\376\077\074\106\101\337
+\130\342\126\017\074\073\301\034\223\065\331\070\122\254\356\310
+\354\056\060\116\224\065\264\044\037\113\170\151\332\362\002\070
+\314\225\122\223\360\160\045\131\234\040\147\304\356\371\213\127
+\141\364\222\166\175\077\204\215\125\267\350\345\254\325\361\365
+\031\126\246\132\373\220\034\257\223\353\345\034\324\147\227\135
+\004\016\276\013\203\246\027\203\271\060\022\240\305\063\025\005
+\271\015\373\307\005\166\343\330\112\215\374\064\027\243\306\041
+\050\276\060\105\061\036\307\170\276\130\141\070\254\073\342\001
+\145
+END
+
+# Trust for Certificate "COMODO Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "COMODO Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\146\061\277\236\367\117\236\266\311\325\246\014\272\152\276\321
+\367\275\357\173
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\134\110\334\367\102\162\354\126\224\155\034\314\161\065\200\165
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006
+\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162
+\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\116\201\055\212\202\145\340\013\002\356\076\065\002\106
+\345\075
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "DigiNotar Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiNotar Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157
+\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151
+\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061
+\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021
+\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156
+\154
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157
+\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151
+\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061
+\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021
+\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156
+\154
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\166\332\234\221\014\116\054\236\376\025\320\130\223
+\074\114
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\005\212\060\202\003\162\240\003\002\001\002\002\020\014
+\166\332\234\221\014\116\054\236\376\025\320\130\223\074\114\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\137
+\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022\060
+\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164\141
+\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147\151
+\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040\060
+\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156
+\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154\060
+\036\027\015\060\067\060\065\061\066\061\067\061\071\063\066\132
+\027\015\062\065\060\063\063\061\061\070\061\071\062\061\132\060
+\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022
+\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164
+\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147
+\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040
+\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151
+\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154
+\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001
+\000\254\260\130\301\000\275\330\041\010\013\053\232\376\156\126
+\060\005\237\033\167\220\020\101\134\303\015\207\021\167\216\201
+\361\312\174\351\214\152\355\070\164\065\273\332\337\371\273\300
+\011\067\264\226\163\201\175\063\032\230\071\367\223\157\225\177
+\075\271\261\165\207\272\121\110\350\213\160\076\225\004\305\330
+\266\303\026\331\210\260\261\207\035\160\332\206\264\017\024\213
+\172\317\020\321\164\066\242\022\173\167\206\112\171\346\173\337
+\002\021\150\245\116\206\256\064\130\233\044\023\170\126\042\045
+\036\001\213\113\121\161\373\202\314\131\226\151\210\132\150\123
+\305\271\015\002\067\313\113\274\146\112\220\176\052\013\005\007
+\355\026\137\125\220\165\330\106\311\033\203\342\010\276\361\043
+\314\231\035\326\052\017\203\040\025\130\047\202\056\372\342\042
+\302\111\261\271\001\201\152\235\155\235\100\167\150\166\116\041
+\052\155\204\100\205\116\166\231\174\202\363\363\267\002\131\324
+\046\001\033\216\337\255\123\006\321\256\030\335\342\262\072\313
+\327\210\070\216\254\133\051\271\031\323\230\371\030\003\317\110
+\202\206\146\013\033\151\017\311\353\070\210\172\046\032\005\114
+\222\327\044\324\226\362\254\122\055\243\107\325\122\366\077\376
+\316\204\006\160\246\252\076\242\362\266\126\064\030\127\242\344
+\201\155\347\312\360\152\323\307\221\153\002\203\101\174\025\357
+\153\232\144\136\343\320\074\345\261\353\173\135\206\373\313\346
+\167\111\315\243\145\334\367\271\234\270\344\013\137\223\317\314
+\060\032\062\034\316\034\143\225\245\371\352\341\164\213\236\351
+\053\251\060\173\240\030\037\016\030\013\345\133\251\323\321\154
+\036\007\147\217\221\113\251\212\274\322\146\252\223\001\210\262
+\221\372\061\134\325\246\301\122\010\011\315\012\143\242\323\042
+\246\350\241\331\071\006\227\365\156\215\002\220\214\024\173\077
+\200\315\033\234\272\304\130\162\043\257\266\126\237\306\172\102
+\063\051\007\077\202\311\346\037\005\015\315\114\050\066\213\323
+\310\076\034\306\210\357\136\356\211\144\351\035\353\332\211\176
+\062\246\151\321\335\314\210\237\321\320\311\146\041\334\006\147
+\305\224\172\232\155\142\114\175\314\340\144\200\262\236\107\216
+\243\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
+\035\016\004\026\004\024\210\150\277\340\216\065\304\073\070\153
+\142\367\050\073\204\201\310\014\327\115\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\002\001\000\073\002
+\215\313\074\060\350\156\240\255\362\163\263\137\236\045\023\004
+\005\323\366\343\213\273\013\171\316\123\336\344\226\305\321\257
+\163\274\325\303\320\100\125\174\100\177\315\033\137\011\325\362
+\174\237\150\035\273\135\316\172\071\302\214\326\230\173\305\203
+\125\250\325\175\100\312\340\036\367\211\136\143\135\241\023\302
+\135\212\266\212\174\000\363\043\303\355\205\137\161\166\360\150
+\143\252\105\041\071\110\141\170\066\334\361\103\223\324\045\307
+\362\200\145\341\123\002\165\121\374\172\072\357\067\253\204\050
+\127\014\330\324\324\231\126\154\343\242\376\131\204\264\061\350
+\063\370\144\224\224\121\227\253\071\305\113\355\332\335\200\013
+\157\174\051\015\304\216\212\162\015\347\123\024\262\140\101\075
+\204\221\061\150\075\047\104\333\345\336\364\372\143\105\310\114
+\076\230\365\077\101\272\116\313\067\015\272\146\230\361\335\313
+\237\134\367\124\066\202\153\054\274\023\141\227\102\370\170\273
+\314\310\242\237\312\360\150\275\153\035\262\337\215\157\007\235
+\332\216\147\307\107\036\312\271\277\052\102\221\267\143\123\146
+\361\102\243\341\364\132\115\130\153\265\344\244\063\255\134\160
+\035\334\340\362\353\163\024\221\232\003\301\352\000\145\274\007
+\374\317\022\021\042\054\256\240\275\072\340\242\052\330\131\351
+\051\323\030\065\244\254\021\137\031\265\265\033\377\042\112\134
+\306\172\344\027\357\040\251\247\364\077\255\212\247\232\004\045
+\235\016\312\067\346\120\375\214\102\051\004\232\354\271\317\113
+\162\275\342\010\066\257\043\057\142\345\312\001\323\160\333\174
+\202\043\054\026\061\014\306\066\007\220\172\261\037\147\130\304
+\073\130\131\211\260\214\214\120\263\330\206\313\150\243\304\012
+\347\151\113\040\316\301\036\126\113\225\251\043\150\330\060\330
+\303\353\260\125\121\315\345\375\053\270\365\273\021\237\123\124
+\366\064\031\214\171\011\066\312\141\027\045\027\013\202\230\163
+\014\167\164\303\325\015\307\250\022\114\307\247\124\161\107\056
+\054\032\175\311\343\053\073\110\336\047\204\247\143\066\263\175
+\217\240\144\071\044\015\075\173\207\257\146\134\164\033\113\163
+\262\345\214\360\206\231\270\345\305\337\204\301\267\353
+END
+
+# Trust for Certificate "DigiNotar Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "DigiNotar Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\300\140\355\104\313\330\201\275\016\370\154\013\242\207\335\317
+\201\147\107\214
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\172\171\124\115\007\222\073\133\377\101\360\016\307\071\242\230
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061
+\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157
+\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151
+\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061
+\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021
+\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156
+\154
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\014\166\332\234\221\014\116\054\236\376\025\320\130\223
+\074\114
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Network Solutions Certificate Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Network Solutions Certificate Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162
+\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056
+\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164
+\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103
+\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162
+\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056
+\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164
+\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103
+\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\127\313\063\157\302\134\026\346\107\026\027\343\220\061
+\150\340
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\346\060\202\002\316\240\003\002\001\002\002\020\127
+\313\063\157\302\134\026\346\107\026\027\343\220\061\150\340\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\142
+\061\013\060\011\006\003\125\004\006\023\002\125\123\061\041\060
+\037\006\003\125\004\012\023\030\116\145\164\167\157\162\153\040
+\123\157\154\165\164\151\157\156\163\040\114\056\114\056\103\056
+\061\060\060\056\006\003\125\004\003\023\047\116\145\164\167\157
+\162\153\040\123\157\154\165\164\151\157\156\163\040\103\145\162
+\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151
+\164\171\060\036\027\015\060\066\061\062\060\061\060\060\060\060
+\060\060\132\027\015\062\071\061\062\063\061\062\063\065\071\065
+\071\132\060\142\061\013\060\011\006\003\125\004\006\023\002\125
+\123\061\041\060\037\006\003\125\004\012\023\030\116\145\164\167
+\157\162\153\040\123\157\154\165\164\151\157\156\163\040\114\056
+\114\056\103\056\061\060\060\056\006\003\125\004\003\023\047\116
+\145\164\167\157\162\153\040\123\157\154\165\164\151\157\156\163
+\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164
+\150\157\162\151\164\171\060\202\001\042\060\015\006\011\052\206
+\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202
+\001\012\002\202\001\001\000\344\274\176\222\060\155\306\330\216
+\053\013\274\106\316\340\047\226\336\336\371\372\022\323\074\063
+\163\263\004\057\274\161\214\345\237\266\042\140\076\137\135\316
+\011\377\202\014\033\232\121\120\032\046\211\335\325\141\135\031
+\334\022\017\055\012\242\103\135\027\320\064\222\040\352\163\317
+\070\054\006\046\011\172\162\367\372\120\062\370\302\223\323\151
+\242\043\316\101\261\314\344\325\037\066\321\212\072\370\214\143
+\342\024\131\151\355\015\323\177\153\350\270\003\345\117\152\345
+\230\143\151\110\005\276\056\377\063\266\351\227\131\151\370\147
+\031\256\223\141\226\104\025\323\162\260\077\274\152\175\354\110
+\177\215\303\253\252\161\053\123\151\101\123\064\265\260\271\305
+\006\012\304\260\105\365\101\135\156\211\105\173\075\073\046\214
+\164\302\345\322\321\175\262\021\324\373\130\062\042\232\200\311
+\334\375\014\351\177\136\003\227\316\073\000\024\207\047\160\070
+\251\216\156\263\047\166\230\121\340\005\343\041\253\032\325\205
+\042\074\051\265\232\026\305\200\250\364\273\153\060\217\057\106
+\002\242\261\014\042\340\323\002\003\001\000\001\243\201\227\060
+\201\224\060\035\006\003\125\035\016\004\026\004\024\041\060\311
+\373\000\327\116\230\332\207\252\052\320\247\056\261\100\061\247
+\114\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001
+\001\377\060\122\006\003\125\035\037\004\113\060\111\060\107\240
+\105\240\103\206\101\150\164\164\160\072\057\057\143\162\154\056
+\156\145\164\163\157\154\163\163\154\056\143\157\155\057\116\145
+\164\167\157\162\153\123\157\154\165\164\151\157\156\163\103\145
+\162\164\151\146\151\143\141\164\145\101\165\164\150\157\162\151
+\164\171\056\143\162\154\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\001\001\000\273\256\113\347\267\127
+\353\177\252\055\267\163\107\205\152\301\344\245\035\344\347\074
+\351\364\131\145\167\265\172\133\132\215\045\066\340\172\227\056
+\070\300\127\140\203\230\006\203\237\271\166\172\156\120\340\272
+\210\054\374\105\314\030\260\231\225\121\016\354\035\270\210\377
+\207\120\034\202\302\343\340\062\200\277\240\013\107\310\303\061
+\357\231\147\062\200\117\027\041\171\014\151\134\336\136\064\256
+\002\265\046\352\120\337\177\030\145\054\311\362\143\341\251\007
+\376\174\161\037\153\063\044\152\036\005\367\005\150\300\152\022
+\313\056\136\141\313\256\050\323\176\302\264\146\221\046\137\074
+\056\044\137\313\130\017\353\050\354\257\021\226\363\334\173\157
+\300\247\210\362\123\167\263\140\136\256\256\050\332\065\054\157
+\064\105\323\046\341\336\354\133\117\047\153\026\174\275\104\004
+\030\202\263\211\171\027\020\161\075\172\242\026\116\365\001\315
+\244\154\145\150\241\111\166\134\103\311\330\274\066\147\154\245
+\224\265\324\314\271\275\152\065\126\041\336\330\303\353\373\313
+\244\140\114\260\125\240\240\173\127\262
+END
+
+# Trust for Certificate "Network Solutions Certificate Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Network Solutions Certificate Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\164\370\243\303\357\347\263\220\006\113\203\220\074\041\144\140
+\040\345\337\316
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\323\363\246\026\300\372\153\035\131\261\055\226\115\016\021\056
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162
+\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056
+\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164
+\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103
+\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157
+\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\127\313\063\157\302\134\026\346\107\026\027\343\220\061
+\150\340
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "WellsSecure Public Root Certificate Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "WellsSecure Public Root Certificate Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\040\060\036\006\003\125\004\012\014\027\127\145\154\154\163
+\040\106\141\162\147\157\040\127\145\154\154\163\123\145\143\165
+\162\145\061\034\060\032\006\003\125\004\013\014\023\127\145\154
+\154\163\040\106\141\162\147\157\040\102\141\156\153\040\116\101
+\061\066\060\064\006\003\125\004\003\014\055\127\145\154\154\163
+\123\145\143\165\162\145\040\120\165\142\154\151\143\040\122\157
+\157\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\040\060\036\006\003\125\004\012\014\027\127\145\154\154\163
+\040\106\141\162\147\157\040\127\145\154\154\163\123\145\143\165
+\162\145\061\034\060\032\006\003\125\004\013\014\023\127\145\154
+\154\163\040\106\141\162\147\157\040\102\141\156\153\040\116\101
+\061\066\060\064\006\003\125\004\003\014\055\127\145\154\154\163
+\123\145\143\165\162\145\040\120\165\142\154\151\143\040\122\157
+\157\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\275\060\202\003\245\240\003\002\001\002\002\001\001
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\201\205\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\040\060\036\006\003\125\004\012\014\027\127\145\154\154\163\040
+\106\141\162\147\157\040\127\145\154\154\163\123\145\143\165\162
+\145\061\034\060\032\006\003\125\004\013\014\023\127\145\154\154
+\163\040\106\141\162\147\157\040\102\141\156\153\040\116\101\061
+\066\060\064\006\003\125\004\003\014\055\127\145\154\154\163\123
+\145\143\165\162\145\040\120\165\142\154\151\143\040\122\157\157
+\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165
+\164\150\157\162\151\164\171\060\036\027\015\060\067\061\062\061
+\063\061\067\060\067\065\064\132\027\015\062\062\061\062\061\064
+\060\060\060\067\065\064\132\060\201\205\061\013\060\011\006\003
+\125\004\006\023\002\125\123\061\040\060\036\006\003\125\004\012
+\014\027\127\145\154\154\163\040\106\141\162\147\157\040\127\145
+\154\154\163\123\145\143\165\162\145\061\034\060\032\006\003\125
+\004\013\014\023\127\145\154\154\163\040\106\141\162\147\157\040
+\102\141\156\153\040\116\101\061\066\060\064\006\003\125\004\003
+\014\055\127\145\154\154\163\123\145\143\165\162\145\040\120\165
+\142\154\151\143\040\122\157\157\164\040\103\145\162\164\151\146
+\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171\060
+\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001
+\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000
+\356\157\264\275\171\342\217\010\041\236\070\004\101\045\357\253
+\133\034\123\222\254\155\236\335\302\304\056\105\224\003\065\210
+\147\164\127\343\337\214\270\247\166\217\073\367\250\304\333\051
+\143\016\221\150\066\212\227\216\212\161\150\011\007\344\350\324
+\016\117\370\326\053\114\244\026\371\357\103\230\217\263\236\122
+\337\155\221\071\217\070\275\167\213\103\143\353\267\223\374\060
+\114\034\001\223\266\023\373\367\241\037\277\045\341\164\067\054
+\036\244\136\074\150\370\113\277\015\271\036\056\066\350\251\344
+\247\370\017\313\202\165\174\065\055\042\326\302\277\013\363\264
+\374\154\225\141\036\127\327\004\201\062\203\122\171\346\203\143
+\317\267\313\143\213\021\342\275\136\353\366\215\355\225\162\050
+\264\254\022\142\351\112\063\346\203\062\256\005\165\225\275\204
+\225\333\052\134\233\216\056\014\270\201\053\101\346\070\126\237
+\111\233\154\166\372\212\135\367\001\171\201\174\301\203\100\005
+\376\161\375\014\077\314\116\140\011\016\145\107\020\057\001\300
+\005\077\217\370\263\101\357\132\102\176\131\357\322\227\014\145
+\002\003\001\000\001\243\202\001\064\060\202\001\060\060\017\006
+\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\071
+\006\003\125\035\037\004\062\060\060\060\056\240\054\240\052\206
+\050\150\164\164\160\072\057\057\143\162\154\056\160\153\151\056
+\167\145\154\154\163\146\141\162\147\157\056\143\157\155\057\167
+\163\160\162\143\141\056\143\162\154\060\016\006\003\125\035\017
+\001\001\377\004\004\003\002\001\306\060\035\006\003\125\035\016
+\004\026\004\024\046\225\031\020\331\350\241\227\221\377\334\031
+\331\265\004\076\322\163\012\152\060\201\262\006\003\125\035\043
+\004\201\252\060\201\247\200\024\046\225\031\020\331\350\241\227
+\221\377\334\031\331\265\004\076\322\163\012\152\241\201\213\244
+\201\210\060\201\205\061\013\060\011\006\003\125\004\006\023\002
+\125\123\061\040\060\036\006\003\125\004\012\014\027\127\145\154
+\154\163\040\106\141\162\147\157\040\127\145\154\154\163\123\145
+\143\165\162\145\061\034\060\032\006\003\125\004\013\014\023\127
+\145\154\154\163\040\106\141\162\147\157\040\102\141\156\153\040
+\116\101\061\066\060\064\006\003\125\004\003\014\055\127\145\154
+\154\163\123\145\143\165\162\145\040\120\165\142\154\151\143\040
+\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\145
+\040\101\165\164\150\157\162\151\164\171\202\001\001\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001
+\000\271\025\261\104\221\314\043\310\053\115\167\343\370\232\173
+\047\015\315\162\273\231\000\312\174\146\031\120\306\325\230\355
+\253\277\003\132\345\115\345\036\310\117\161\227\206\325\343\035
+\375\220\311\074\165\167\127\172\175\370\336\364\324\325\367\225
+\346\164\156\035\074\256\174\235\333\002\003\005\054\161\113\045
+\076\007\343\136\232\365\146\027\051\210\032\070\237\317\252\101
+\003\204\227\153\223\070\172\312\060\104\033\044\104\063\320\344
+\321\334\050\070\364\023\103\065\065\051\143\250\174\242\265\255
+\070\244\355\255\375\306\232\037\377\227\163\376\373\263\065\247
+\223\206\306\166\221\000\346\254\121\026\304\047\062\134\333\163
+\332\245\223\127\216\076\155\065\046\010\131\325\347\104\327\166
+\040\143\347\254\023\147\303\155\261\160\106\174\325\226\021\075
+\211\157\135\250\241\353\215\012\332\303\035\063\154\243\352\147
+\031\232\231\177\113\075\203\121\052\035\312\057\206\014\242\176
+\020\055\053\324\026\225\013\007\252\056\024\222\111\267\051\157
+\330\155\061\175\365\374\241\020\007\207\316\057\131\334\076\130
+\333
+END
+
+# Trust for Certificate "WellsSecure Public Root Certificate Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "WellsSecure Public Root Certificate Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\347\264\366\235\141\354\220\151\333\176\220\247\100\032\074\364
+\175\117\350\356
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\025\254\245\302\222\055\171\274\350\177\313\147\355\002\317\066
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\125\123
+\061\040\060\036\006\003\125\004\012\014\027\127\145\154\154\163
+\040\106\141\162\147\157\040\127\145\154\154\163\123\145\143\165
+\162\145\061\034\060\032\006\003\125\004\013\014\023\127\145\154
+\154\163\040\106\141\162\147\157\040\102\141\156\153\040\116\101
+\061\066\060\064\006\003\125\004\003\014\055\127\145\154\154\163
+\123\145\143\165\162\145\040\120\165\142\154\151\143\040\122\157
+\157\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\001
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "COMODO ECC Certification Authority"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "COMODO ECC Certification Authority"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006
+\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006
+\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\037\107\257\252\142\000\160\120\124\114\001\236\233\143
+\231\052
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\211\060\202\002\017\240\003\002\001\002\002\020\037
+\107\257\252\142\000\160\120\124\114\001\236\233\143\231\052\060
+\012\006\010\052\206\110\316\075\004\003\003\060\201\205\061\013
+\060\011\006\003\125\004\006\023\002\107\102\061\033\060\031\006
+\003\125\004\010\023\022\107\162\145\141\164\145\162\040\115\141
+\156\143\150\145\163\164\145\162\061\020\060\016\006\003\125\004
+\007\023\007\123\141\154\146\157\162\144\061\032\060\030\006\003
+\125\004\012\023\021\103\117\115\117\104\117\040\103\101\040\114
+\151\155\151\164\145\144\061\053\060\051\006\003\125\004\003\023
+\042\103\117\115\117\104\117\040\105\103\103\040\103\145\162\164
+\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162
+\151\164\171\060\036\027\015\060\070\060\063\060\066\060\060\060
+\060\060\060\132\027\015\063\070\060\061\061\070\062\063\065\071
+\065\071\132\060\201\205\061\013\060\011\006\003\125\004\006\023
+\002\107\102\061\033\060\031\006\003\125\004\010\023\022\107\162
+\145\141\164\145\162\040\115\141\156\143\150\145\163\164\145\162
+\061\020\060\016\006\003\125\004\007\023\007\123\141\154\146\157
+\162\144\061\032\060\030\006\003\125\004\012\023\021\103\117\115
+\117\104\117\040\103\101\040\114\151\155\151\164\145\144\061\053
+\060\051\006\003\125\004\003\023\042\103\117\115\117\104\117\040
+\105\103\103\040\103\145\162\164\151\146\151\143\141\164\151\157
+\156\040\101\165\164\150\157\162\151\164\171\060\166\060\020\006
+\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003
+\142\000\004\003\107\173\057\165\311\202\025\205\373\165\344\221
+\026\324\253\142\231\365\076\122\013\006\316\101\000\177\227\341
+\012\044\074\035\001\004\356\075\322\215\011\227\014\340\165\344
+\372\373\167\212\052\365\003\140\113\066\213\026\043\026\255\011
+\161\364\112\364\050\120\264\376\210\034\156\077\154\057\057\011
+\131\133\245\133\013\063\231\342\303\075\211\371\152\054\357\262
+\323\006\351\243\102\060\100\060\035\006\003\125\035\016\004\026
+\004\024\165\161\247\031\110\031\274\235\235\352\101\107\337\224
+\304\110\167\231\323\171\060\016\006\003\125\035\017\001\001\377
+\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377
+\004\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075
+\004\003\003\003\150\000\060\145\002\061\000\357\003\133\172\254
+\267\170\012\162\267\210\337\377\265\106\024\011\012\372\240\346
+\175\010\306\032\207\275\030\250\163\275\046\312\140\014\235\316
+\231\237\317\134\017\060\341\276\024\061\352\002\060\024\364\223
+\074\111\247\063\172\220\106\107\263\143\175\023\233\116\267\157
+\030\067\200\123\376\335\040\340\065\232\066\321\307\001\271\346
+\334\335\363\377\035\054\072\026\127\331\222\071\326
+END
+
+# Trust for Certificate "COMODO ECC Certification Authority"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "COMODO ECC Certification Authority"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\237\164\116\237\053\115\272\354\017\061\054\120\266\126\073\216
+\055\223\303\021
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\174\142\377\164\235\061\123\136\150\112\325\170\252\036\277\043
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102
+\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164
+\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060
+\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061
+\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117
+\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006
+\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103
+\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101
+\165\164\150\157\162\151\164\171
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\037\107\257\252\142\000\160\120\124\114\001\236\233\143
+\231\052
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "MD5 Collisions Forged Rogue CA 25c3"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "MD5 Collisions Forged Rogue CA 25c3"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\074\061\072\060\070\006\003\125\004\003\023\061\115\104\065
+\040\103\157\154\154\151\163\151\157\156\163\040\111\156\143\056
+\040\050\150\164\164\160\072\057\057\167\167\167\056\160\150\162
+\145\145\144\157\155\056\157\162\147\057\155\144\065\051
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060
+\053\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102
+\165\163\151\156\145\163\163\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\102
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\062\060\202\003\233\240\003\002\001\002\002\001\102
+\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
+\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061\034
+\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141\170
+\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060\053
+\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040\123
+\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102\165
+\163\151\156\145\163\163\040\103\101\055\061\060\036\027\015\060
+\064\060\067\063\061\060\060\060\060\060\061\132\027\015\060\064
+\060\071\060\062\060\060\060\060\060\061\132\060\074\061\072\060
+\070\006\003\125\004\003\023\061\115\104\065\040\103\157\154\154
+\151\163\151\157\156\163\040\111\156\143\056\040\050\150\164\164
+\160\072\057\057\167\167\167\056\160\150\162\145\145\144\157\155
+\056\157\162\147\057\155\144\065\051\060\201\237\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\201\215\000\060
+\201\211\002\201\201\000\272\246\131\311\054\050\326\052\260\370
+\355\237\106\244\244\067\356\016\031\150\131\321\263\003\231\121
+\326\026\232\136\067\153\025\340\016\113\365\204\144\370\243\333
+\101\157\065\325\233\025\037\333\304\070\122\160\201\227\136\217
+\240\265\367\176\071\360\062\254\036\255\104\322\263\372\110\303
+\316\221\233\354\364\234\174\341\132\365\310\067\153\232\203\336
+\347\312\040\227\061\102\163\025\221\150\364\210\257\371\050\050
+\305\351\017\163\260\027\113\023\114\231\165\320\104\346\176\010
+\154\032\362\117\033\101\002\003\001\000\001\243\202\002\044\060
+\202\002\040\060\013\006\003\125\035\017\004\004\003\002\001\306
+\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001
+\377\060\035\006\003\125\035\016\004\026\004\024\247\004\140\037
+\253\162\103\010\305\177\010\220\125\126\034\326\316\346\070\353
+\060\037\006\003\125\035\043\004\030\060\026\200\024\276\250\240
+\164\162\120\153\104\267\311\043\330\373\250\377\263\127\153\150
+\154\060\202\001\276\006\011\140\206\110\001\206\370\102\001\015
+\004\202\001\257\026\202\001\253\063\000\000\000\047\136\071\340
+\211\141\017\116\243\305\105\013\066\273\001\321\123\252\303\010
+\217\157\370\117\076\207\207\104\021\334\140\340\337\222\125\371
+\270\163\033\124\223\305\237\320\106\304\140\266\065\142\315\271
+\257\034\250\151\032\311\133\074\226\067\300\355\147\357\273\376
+\300\213\234\120\057\051\275\203\042\236\216\010\372\254\023\160
+\242\130\177\142\142\212\021\367\211\366\337\266\147\131\163\026
+\373\143\026\212\264\221\070\316\056\365\266\276\114\244\224\111
+\344\145\021\012\102\025\311\301\060\342\151\325\105\175\245\046
+\273\271\141\354\142\144\360\071\341\347\274\150\330\120\121\236
+\035\140\323\321\243\247\012\370\003\040\241\160\001\027\221\066
+\117\002\160\061\206\203\335\367\017\330\007\035\021\263\023\004
+\245\334\360\256\120\261\050\016\143\151\052\014\202\157\217\107
+\063\337\154\242\006\222\361\117\105\276\331\060\066\243\053\214
+\326\167\256\065\143\177\116\114\232\223\110\066\331\237\002\003
+\001\000\001\243\201\275\060\201\272\060\016\006\003\125\035\017
+\001\001\377\004\004\003\002\004\360\060\035\006\003\125\035\016
+\004\026\004\024\315\246\203\372\245\140\067\367\226\067\027\051
+\336\101\170\361\207\211\125\347\060\073\006\003\125\035\037\004
+\064\060\062\060\060\240\056\240\054\206\052\150\164\164\160\072
+\057\057\143\162\154\056\147\145\157\164\162\165\163\164\056\143
+\157\155\057\143\162\154\163\057\147\154\157\142\141\154\143\141
+\061\056\143\162\154\060\037\006\003\125\035\043\004\030\060\026
+\200\024\276\250\240\164\162\120\153\104\267\311\043\330\373\250
+\377\263\127\153\150\154\060\035\006\003\125\035\045\004\026\060
+\024\006\010\053\006\001\005\005\007\003\001\006\010\053\006\001
+\005\005\007\003\002\060\014\006\003\125\035\023\001\001\377\004
+\002\060\000\060\015\006\011\052\206\110\206\367\015\001\001\004
+\005\000\003\201\201\000\247\041\002\215\321\016\242\200\167\045
+\375\103\140\025\217\354\357\220\107\324\204\102\025\046\021\034
+\315\302\074\020\051\251\266\337\253\127\165\221\332\345\053\263
+\220\105\034\060\143\126\077\212\331\120\372\355\130\154\300\145
+\254\146\127\336\034\306\166\073\365\000\016\216\105\316\177\114
+\220\354\053\306\315\263\264\217\142\320\376\267\305\046\162\104
+\355\366\230\133\256\313\321\225\365\332\010\276\150\106\261\165
+\310\354\035\217\036\172\224\361\252\123\170\242\105\256\124\352
+\321\236\164\310\166\147
+END
+
+# Trust for Certificate "MD5 Collisions Forged Rogue CA 25c3"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "MD5 Collisions Forged Rogue CA 25c3"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\144\043\023\176\134\123\326\112\246\144\205\355\066\124\365\253
+\005\132\213\212
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\026\172\023\025\271\027\071\243\361\005\152\346\076\331\072\070
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061
+\034\060\032\006\003\125\004\012\023\023\105\161\165\151\146\141
+\170\040\123\145\143\165\162\145\040\111\156\143\056\061\055\060
+\053\006\003\125\004\003\023\044\105\161\165\151\146\141\170\040
+\123\145\143\165\162\145\040\107\154\157\142\141\154\040\145\102
+\165\163\151\156\145\163\163\040\103\101\055\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\102
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_UNTRUSTED
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_UNTRUSTED
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_UNTRUSTED
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "IGC/A"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IGC/A"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\106\122
+\061\017\060\015\006\003\125\004\010\023\006\106\162\141\156\143
+\145\061\016\060\014\006\003\125\004\007\023\005\120\141\162\151
+\163\061\020\060\016\006\003\125\004\012\023\007\120\115\057\123
+\107\104\116\061\016\060\014\006\003\125\004\013\023\005\104\103
+\123\123\111\061\016\060\014\006\003\125\004\003\023\005\111\107
+\103\057\101\061\043\060\041\006\011\052\206\110\206\367\015\001
+\011\001\026\024\151\147\143\141\100\163\147\144\156\056\160\155
+\056\147\157\165\166\056\146\162
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\106\122
+\061\017\060\015\006\003\125\004\010\023\006\106\162\141\156\143
+\145\061\016\060\014\006\003\125\004\007\023\005\120\141\162\151
+\163\061\020\060\016\006\003\125\004\012\023\007\120\115\057\123
+\107\104\116\061\016\060\014\006\003\125\004\013\023\005\104\103
+\123\123\111\061\016\060\014\006\003\125\004\003\023\005\111\107
+\103\057\101\061\043\060\041\006\011\052\206\110\206\367\015\001
+\011\001\026\024\151\147\143\141\100\163\147\144\156\056\160\155
+\056\147\157\165\166\056\146\162
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\005\071\021\105\020\224
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\002\060\202\002\352\240\003\002\001\002\002\005\071
+\021\105\020\224\060\015\006\011\052\206\110\206\367\015\001\001
+\005\005\000\060\201\205\061\013\060\011\006\003\125\004\006\023
+\002\106\122\061\017\060\015\006\003\125\004\010\023\006\106\162
+\141\156\143\145\061\016\060\014\006\003\125\004\007\023\005\120
+\141\162\151\163\061\020\060\016\006\003\125\004\012\023\007\120
+\115\057\123\107\104\116\061\016\060\014\006\003\125\004\013\023
+\005\104\103\123\123\111\061\016\060\014\006\003\125\004\003\023
+\005\111\107\103\057\101\061\043\060\041\006\011\052\206\110\206
+\367\015\001\011\001\026\024\151\147\143\141\100\163\147\144\156
+\056\160\155\056\147\157\165\166\056\146\162\060\036\027\015\060
+\062\061\062\061\063\061\064\062\071\062\063\132\027\015\062\060
+\061\060\061\067\061\064\062\071\062\062\132\060\201\205\061\013
+\060\011\006\003\125\004\006\023\002\106\122\061\017\060\015\006
+\003\125\004\010\023\006\106\162\141\156\143\145\061\016\060\014
+\006\003\125\004\007\023\005\120\141\162\151\163\061\020\060\016
+\006\003\125\004\012\023\007\120\115\057\123\107\104\116\061\016
+\060\014\006\003\125\004\013\023\005\104\103\123\123\111\061\016
+\060\014\006\003\125\004\003\023\005\111\107\103\057\101\061\043
+\060\041\006\011\052\206\110\206\367\015\001\011\001\026\024\151
+\147\143\141\100\163\147\144\156\056\160\155\056\147\157\165\166
+\056\146\162\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\262\037\321\320\142\305\063\073\300\004\206\210
+\263\334\370\210\367\375\337\103\337\172\215\232\111\134\366\116
+\252\314\034\271\241\353\047\211\362\106\351\073\112\161\325\035
+\216\055\317\346\255\253\143\120\307\124\013\156\022\311\220\066
+\306\330\057\332\221\252\150\305\162\376\027\012\262\027\176\171
+\265\062\210\160\312\160\300\226\112\216\344\125\315\035\047\224
+\277\316\162\052\354\134\371\163\040\376\275\367\056\211\147\270
+\273\107\163\022\367\321\065\151\072\362\012\271\256\377\106\102
+\106\242\277\241\205\032\371\277\344\377\111\205\367\243\160\206
+\062\034\135\237\140\367\251\255\245\377\317\321\064\371\175\133
+\027\306\334\326\016\050\153\302\335\361\365\063\150\235\116\374
+\207\174\066\022\326\243\200\350\103\015\125\141\224\352\144\067
+\107\352\167\312\320\262\130\005\303\135\176\261\250\106\220\061
+\126\316\160\052\226\262\060\270\167\346\171\300\275\051\073\375
+\224\167\114\275\040\315\101\045\340\056\307\033\273\356\244\004
+\101\322\135\255\022\152\212\233\107\373\311\335\106\100\341\235
+\074\063\320\265\002\003\001\000\001\243\167\060\165\060\017\006
+\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\013
+\006\003\125\035\017\004\004\003\002\001\106\060\025\006\003\125
+\035\040\004\016\060\014\060\012\006\010\052\201\172\001\171\001
+\001\001\060\035\006\003\125\035\016\004\026\004\024\243\005\057
+\030\140\120\302\211\012\335\053\041\117\377\216\116\250\060\061
+\066\060\037\006\003\125\035\043\004\030\060\026\200\024\243\005
+\057\030\140\120\302\211\012\335\053\041\117\377\216\116\250\060
+\061\066\060\015\006\011\052\206\110\206\367\015\001\001\005\005
+\000\003\202\001\001\000\005\334\046\330\372\167\025\104\150\374
+\057\146\072\164\340\135\344\051\377\006\007\023\204\112\253\317
+\155\240\037\121\224\370\111\313\164\066\024\274\025\335\333\211
+\057\335\217\240\135\174\365\022\353\237\236\070\244\107\314\263
+\226\331\276\234\045\253\003\176\063\017\225\201\015\375\026\340
+\210\276\067\360\154\135\320\061\233\062\053\135\027\145\223\230
+\140\274\156\217\261\250\074\036\331\034\363\251\046\102\371\144
+\035\302\347\222\366\364\036\132\252\031\122\135\257\350\242\367
+\140\240\366\215\360\211\365\156\340\012\005\001\225\311\213\040
+\012\272\132\374\232\054\074\275\303\267\311\135\170\045\005\077
+\126\024\233\014\332\373\072\110\376\227\151\136\312\020\206\367
+\116\226\004\010\115\354\260\276\135\334\073\216\117\301\375\232
+\066\064\232\114\124\176\027\003\110\225\010\021\034\007\157\205
+\010\176\135\115\304\235\333\373\256\316\262\321\263\270\203\154
+\035\262\263\171\361\330\160\231\176\360\023\002\316\136\335\121
+\323\337\066\201\241\033\170\057\161\263\361\131\114\106\030\050
+\253\205\322\140\126\132
+END
+
+# Trust for Certificate "IGC/A"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "IGC/A"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\140\326\211\164\265\302\145\236\212\017\301\210\174\210\322\106
+\151\033\030\054
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\014\177\335\152\364\052\271\310\233\275\040\176\251\333\134\067
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\205\061\013\060\011\006\003\125\004\006\023\002\106\122
+\061\017\060\015\006\003\125\004\010\023\006\106\162\141\156\143
+\145\061\016\060\014\006\003\125\004\007\023\005\120\141\162\151
+\163\061\020\060\016\006\003\125\004\012\023\007\120\115\057\123
+\107\104\116\061\016\060\014\006\003\125\004\013\023\005\104\103
+\123\123\111\061\016\060\014\006\003\125\004\003\023\005\111\107
+\103\057\101\061\043\060\041\006\011\052\206\110\206\367\015\001
+\011\001\026\024\151\147\143\141\100\163\147\144\156\056\160\155
+\056\147\157\165\166\056\146\162
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\005\071\021\105\020\224
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Security Communication EV RootCA1"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Security Communication EV RootCA1"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\140\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040
+\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117
+\056\054\114\124\104\056\061\052\060\050\006\003\125\004\013\023
+\041\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156
+\151\143\141\164\151\157\156\040\105\126\040\122\157\157\164\103
+\101\061
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\140\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040
+\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117
+\056\054\114\124\104\056\061\052\060\050\006\003\125\004\013\023
+\041\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156
+\151\143\141\164\151\157\156\040\105\126\040\122\157\157\164\103
+\101\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\175\060\202\002\145\240\003\002\001\002\002\001\000
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\140\061\013\060\011\006\003\125\004\006\023\002\112\120\061\045
+\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040\124
+\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117\056
+\054\114\124\104\056\061\052\060\050\006\003\125\004\013\023\041
+\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156\151
+\143\141\164\151\157\156\040\105\126\040\122\157\157\164\103\101
+\061\060\036\027\015\060\067\060\066\060\066\060\062\061\062\063
+\062\132\027\015\063\067\060\066\060\066\060\062\061\062\063\062
+\132\060\140\061\013\060\011\006\003\125\004\006\023\002\112\120
+\061\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115
+\040\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103
+\117\056\054\114\124\104\056\061\052\060\050\006\003\125\004\013
+\023\041\123\145\143\165\162\151\164\171\040\103\157\155\155\165
+\156\151\143\141\164\151\157\156\040\105\126\040\122\157\157\164
+\103\101\061\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\274\177\354\127\233\044\340\376\234\272\102\171
+\251\210\212\372\200\340\365\007\051\103\352\216\012\064\066\215
+\034\372\247\265\071\170\377\227\165\367\057\344\252\153\004\204
+\104\312\246\342\150\216\375\125\120\142\017\244\161\016\316\007
+\070\055\102\205\120\255\074\226\157\213\325\242\016\317\336\111
+\211\075\326\144\056\070\345\036\154\265\127\212\236\357\110\016
+\315\172\151\026\207\104\265\220\344\006\235\256\241\004\227\130
+\171\357\040\112\202\153\214\042\277\354\037\017\351\204\161\355
+\361\016\344\270\030\023\314\126\066\135\321\232\036\121\153\071
+\156\140\166\210\064\013\363\263\321\260\235\312\141\342\144\035
+\301\106\007\270\143\335\036\063\145\263\216\011\125\122\075\265
+\275\377\007\353\255\141\125\030\054\251\151\230\112\252\100\305
+\063\024\145\164\000\371\221\336\257\003\110\305\100\124\334\017
+\204\220\150\040\305\222\226\334\056\345\002\105\252\300\137\124
+\370\155\352\111\317\135\154\113\257\357\232\302\126\134\306\065
+\126\102\152\060\137\302\253\366\342\075\077\263\311\021\217\061
+\114\327\237\111\002\003\001\000\001\243\102\060\100\060\035\006
+\003\125\035\016\004\026\004\024\065\112\365\115\257\077\327\202
+\070\254\253\161\145\027\165\214\235\125\223\346\060\016\006\003
+\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003
+\125\035\023\001\001\377\004\005\060\003\001\001\377\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001
+\000\250\207\351\354\370\100\147\135\303\301\146\307\100\113\227
+\374\207\023\220\132\304\357\240\312\137\213\267\247\267\361\326
+\265\144\267\212\263\270\033\314\332\373\254\146\210\101\316\350
+\374\344\333\036\210\246\355\047\120\033\002\060\044\106\171\376
+\004\207\160\227\100\163\321\300\301\127\031\232\151\245\047\231
+\253\235\142\204\366\121\301\054\311\043\025\330\050\267\253\045
+\023\265\106\341\206\002\377\046\214\304\210\222\035\126\376\031
+\147\362\125\344\200\243\153\234\253\167\341\121\161\015\040\333
+\020\232\333\275\166\171\007\167\231\050\255\232\136\332\261\117
+\104\054\065\216\245\226\307\375\203\360\130\306\171\326\230\174
+\250\215\376\206\076\007\026\222\341\173\347\035\354\063\166\176
+\102\056\112\205\371\221\211\150\204\003\201\245\233\232\276\343
+\067\305\124\253\126\073\030\055\101\244\014\370\102\333\231\240
+\340\162\157\273\135\341\026\117\123\012\144\371\116\364\277\116
+\124\275\170\154\210\352\277\234\023\044\302\160\151\242\177\017
+\310\074\255\010\311\260\230\100\243\052\347\210\203\355\167\217
+\164
+END
+
+# Trust for Certificate "Security Communication EV RootCA1"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Security Communication EV RootCA1"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\376\270\304\062\334\371\166\232\316\256\075\330\220\217\375\050
+\206\145\144\175
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\042\055\246\001\352\174\012\367\360\154\126\103\077\167\166\323
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\140\061\013\060\011\006\003\125\004\006\023\002\112\120\061
+\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040
+\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117
+\056\054\114\124\104\056\061\052\060\050\006\003\125\004\013\023
+\041\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156
+\151\143\141\164\151\157\156\040\105\126\040\122\157\157\164\103
+\101\061
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\000
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "OISTE WISeKey Global Root GA CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "OISTE WISeKey Global Root GA CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110
+\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113
+\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160
+\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061
+\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040
+\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162
+\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111
+\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142
+\141\154\040\122\157\157\164\040\107\101\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110
+\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113
+\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160
+\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061
+\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040
+\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162
+\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111
+\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142
+\141\154\040\122\157\157\164\040\107\101\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\101\075\162\307\364\153\037\201\103\175\361\322\050\124
+\337\232
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\361\060\202\002\331\240\003\002\001\002\002\020\101
+\075\162\307\364\153\037\201\103\175\361\322\050\124\337\232\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\212\061\013\060\011\006\003\125\004\006\023\002\103\110\061\020
+\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145\171
+\061\033\060\031\006\003\125\004\013\023\022\103\157\160\171\162
+\151\147\150\164\040\050\143\051\040\062\060\060\065\061\042\060
+\040\006\003\125\004\013\023\031\117\111\123\124\105\040\106\157
+\165\156\144\141\164\151\157\156\040\105\156\144\157\162\163\145
+\144\061\050\060\046\006\003\125\004\003\023\037\117\111\123\124
+\105\040\127\111\123\145\113\145\171\040\107\154\157\142\141\154
+\040\122\157\157\164\040\107\101\040\103\101\060\036\027\015\060
+\065\061\062\061\061\061\066\060\063\064\064\132\027\015\063\067
+\061\062\061\061\061\066\060\071\065\061\132\060\201\212\061\013
+\060\011\006\003\125\004\006\023\002\103\110\061\020\060\016\006
+\003\125\004\012\023\007\127\111\123\145\113\145\171\061\033\060
+\031\006\003\125\004\013\023\022\103\157\160\171\162\151\147\150
+\164\040\050\143\051\040\062\060\060\065\061\042\060\040\006\003
+\125\004\013\023\031\117\111\123\124\105\040\106\157\165\156\144
+\141\164\151\157\156\040\105\156\144\157\162\163\145\144\061\050
+\060\046\006\003\125\004\003\023\037\117\111\123\124\105\040\127
+\111\123\145\113\145\171\040\107\154\157\142\141\154\040\122\157
+\157\164\040\107\101\040\103\101\060\202\001\042\060\015\006\011
+\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000
+\060\202\001\012\002\202\001\001\000\313\117\263\000\233\075\066
+\335\371\321\111\152\153\020\111\037\354\330\053\262\306\370\062
+\201\051\103\225\114\232\031\043\041\025\105\336\343\310\034\121
+\125\133\256\223\350\067\377\053\153\351\324\352\276\052\335\250
+\121\053\327\146\303\141\134\140\002\310\365\316\162\173\073\270
+\362\116\145\010\232\315\244\152\031\301\001\273\163\246\327\366
+\303\335\315\274\244\213\265\231\141\270\001\242\243\324\115\324
+\005\075\221\255\370\264\010\161\144\257\160\361\034\153\176\366
+\303\167\235\044\163\173\344\014\214\341\331\066\341\231\213\005
+\231\013\355\105\061\011\312\302\000\333\367\162\240\226\252\225
+\207\320\216\307\266\141\163\015\166\146\214\334\033\264\143\242
+\237\177\223\023\060\361\241\047\333\331\377\054\125\210\221\240
+\340\117\007\260\050\126\214\030\033\227\104\216\211\335\340\027
+\156\347\052\357\217\071\012\061\204\202\330\100\024\111\056\172
+\101\344\247\376\343\144\314\301\131\161\113\054\041\247\133\175
+\340\035\321\056\201\233\303\330\150\367\275\226\033\254\160\261
+\026\024\013\333\140\271\046\001\005\002\003\001\000\001\243\121
+\060\117\060\013\006\003\125\035\017\004\004\003\002\001\206\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\035\006\003\125\035\016\004\026\004\024\263\003\176\256\066
+\274\260\171\321\334\224\046\266\021\276\041\262\151\206\224\060
+\020\006\011\053\006\001\004\001\202\067\025\001\004\003\002\001
+\000\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\113\241\377\013\207\156\263\371\301\103\261
+\110\363\050\300\035\056\311\011\101\372\224\000\034\244\244\253
+\111\117\217\075\036\357\115\157\275\274\244\366\362\046\060\311
+\020\312\035\210\373\164\031\037\205\105\275\260\154\121\371\066
+\176\333\365\114\062\072\101\117\133\107\317\350\013\055\266\304
+\031\235\164\305\107\306\073\152\017\254\024\333\074\364\163\234
+\251\005\337\000\334\164\170\372\370\065\140\131\002\023\030\174
+\274\373\115\260\040\155\103\273\140\060\172\147\063\134\305\231
+\321\370\055\071\122\163\373\214\252\227\045\134\162\331\010\036
+\253\116\074\343\201\061\237\003\246\373\300\376\051\210\125\332
+\204\325\120\003\266\342\204\243\246\066\252\021\072\001\341\030
+\113\326\104\150\263\075\371\123\164\204\263\106\221\106\226\000
+\267\200\054\266\341\343\020\342\333\242\347\050\217\001\226\142
+\026\076\000\343\034\245\066\201\030\242\114\122\166\300\021\243
+\156\346\035\272\343\132\276\066\123\305\076\165\217\206\151\051
+\130\123\265\234\273\157\237\134\305\030\354\335\057\341\230\311
+\374\276\337\012\015
+END
+
+# Trust for Certificate "OISTE WISeKey Global Root GA CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "OISTE WISeKey Global Root GA CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\131\042\241\341\132\352\026\065\041\370\230\071\152\106\106\260
+\104\033\017\251
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\274\154\121\063\247\351\323\146\143\124\025\162\033\041\222\223
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110
+\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113
+\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160
+\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061
+\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040
+\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162
+\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111
+\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142
+\141\154\040\122\157\157\164\040\107\101\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\101\075\162\307\364\153\037\201\103\175\361\322\050\124
+\337\232
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "S-TRUST Authentication and Encryption Root CA 2005 PN"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "S-TRUST Authentication and Encryption Root CA 2005 PN"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\040\060\036\006\003\125\004\010\023\027\102\141\144\145\156
+\055\127\165\145\162\164\164\145\155\142\145\162\147\040\050\102
+\127\051\061\022\060\020\006\003\125\004\007\023\011\123\164\165
+\164\164\147\141\162\164\061\051\060\047\006\003\125\004\012\023
+\040\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153
+\141\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142
+\110\061\076\060\074\006\003\125\004\003\023\065\123\055\124\122
+\125\123\124\040\101\165\164\150\145\156\164\151\143\141\164\151
+\157\156\040\141\156\144\040\105\156\143\162\171\160\164\151\157
+\156\040\122\157\157\164\040\103\101\040\062\060\060\065\072\120
+\116
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\040\060\036\006\003\125\004\010\023\027\102\141\144\145\156
+\055\127\165\145\162\164\164\145\155\142\145\162\147\040\050\102
+\127\051\061\022\060\020\006\003\125\004\007\023\011\123\164\165
+\164\164\147\141\162\164\061\051\060\047\006\003\125\004\012\023
+\040\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153
+\141\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142
+\110\061\076\060\074\006\003\125\004\003\023\065\123\055\124\122
+\125\123\124\040\101\165\164\150\145\156\164\151\143\141\164\151
+\157\156\040\141\156\144\040\105\156\143\162\171\160\164\151\157
+\156\040\122\157\157\164\040\103\101\040\062\060\060\065\072\120
+\116
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\067\031\030\346\123\124\174\032\265\270\313\131\132\333
+\065\267
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\173\060\202\003\143\240\003\002\001\002\002\020\067
+\031\030\346\123\124\174\032\265\270\313\131\132\333\065\267\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201
+\256\061\013\060\011\006\003\125\004\006\023\002\104\105\061\040
+\060\036\006\003\125\004\010\023\027\102\141\144\145\156\055\127
+\165\145\162\164\164\145\155\142\145\162\147\040\050\102\127\051
+\061\022\060\020\006\003\125\004\007\023\011\123\164\165\164\164
+\147\141\162\164\061\051\060\047\006\003\125\004\012\023\040\104
+\145\165\164\163\143\150\145\162\040\123\160\141\162\153\141\163
+\163\145\156\040\126\145\162\154\141\147\040\107\155\142\110\061
+\076\060\074\006\003\125\004\003\023\065\123\055\124\122\125\123
+\124\040\101\165\164\150\145\156\164\151\143\141\164\151\157\156
+\040\141\156\144\040\105\156\143\162\171\160\164\151\157\156\040
+\122\157\157\164\040\103\101\040\062\060\060\065\072\120\116\060
+\036\027\015\060\065\060\066\062\062\060\060\060\060\060\060\132
+\027\015\063\060\060\066\062\061\062\063\065\071\065\071\132\060
+\201\256\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\040\060\036\006\003\125\004\010\023\027\102\141\144\145\156\055
+\127\165\145\162\164\164\145\155\142\145\162\147\040\050\102\127
+\051\061\022\060\020\006\003\125\004\007\023\011\123\164\165\164
+\164\147\141\162\164\061\051\060\047\006\003\125\004\012\023\040
+\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153\141
+\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142\110
+\061\076\060\074\006\003\125\004\003\023\065\123\055\124\122\125
+\123\124\040\101\165\164\150\145\156\164\151\143\141\164\151\157
+\156\040\141\156\144\040\105\156\143\162\171\160\164\151\157\156
+\040\122\157\157\164\040\103\101\040\062\060\060\065\072\120\116
+\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001
+\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001
+\000\331\265\112\301\323\063\352\323\106\263\321\342\114\322\365
+\266\203\320\157\325\030\351\223\257\047\216\023\315\265\045\066
+\120\064\022\144\051\241\125\341\072\140\223\236\050\311\343\363
+\233\341\004\260\043\277\225\212\216\133\033\101\177\132\303\350
+\115\114\325\044\026\076\207\110\324\047\256\346\367\123\035\273
+\014\000\357\076\141\161\255\277\072\172\130\037\224\075\134\201
+\325\325\157\337\270\233\322\365\345\313\203\162\222\302\123\262
+\202\002\353\255\255\137\026\055\222\123\166\361\211\266\054\365
+\301\057\340\247\112\157\240\060\152\062\353\232\164\003\150\170
+\023\235\312\057\233\013\035\276\317\165\015\046\227\233\307\365
+\136\012\237\170\337\263\274\354\232\272\357\125\217\033\232\246
+\007\143\051\027\131\142\011\052\171\007\167\245\340\321\027\151
+\351\133\335\366\220\253\342\230\012\000\321\045\155\236\327\205
+\207\057\222\361\321\166\203\117\013\072\131\067\050\057\063\247
+\027\120\326\040\013\012\364\046\371\237\070\347\055\244\270\233
+\211\215\255\255\311\152\175\211\027\273\366\177\200\203\172\346
+\355\002\003\001\000\001\243\201\222\060\201\217\060\022\006\003
+\125\035\023\001\001\377\004\010\060\006\001\001\377\002\001\000
+\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006
+\060\051\006\003\125\035\021\004\042\060\040\244\036\060\034\061
+\032\060\030\006\003\125\004\003\023\021\123\124\122\157\156\154
+\151\156\145\061\055\062\060\064\070\055\065\060\035\006\003\125
+\035\016\004\026\004\024\017\312\036\134\171\340\242\363\051\266
+\322\205\263\013\112\265\145\354\153\122\060\037\006\003\125\035
+\043\004\030\060\026\200\024\017\312\036\134\171\340\242\363\051
+\266\322\205\263\013\112\265\145\354\153\122\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\257
+\001\360\355\031\074\050\350\115\134\273\245\143\034\210\063\003
+\247\000\207\244\037\040\253\326\034\343\006\037\227\176\124\275
+\267\321\262\311\325\332\200\354\027\327\212\365\173\302\000\366
+\351\021\157\204\240\132\045\061\342\211\371\244\000\077\061\150
+\056\325\075\350\156\346\325\035\074\077\262\275\237\167\353\235
+\323\214\272\300\327\266\115\354\123\234\017\004\156\352\065\147
+\127\343\012\145\173\220\072\341\117\076\303\000\222\172\273\005
+\211\163\214\313\246\115\300\373\366\002\326\260\007\243\003\302
+\047\100\237\014\344\205\202\055\257\232\102\035\320\307\215\370
+\100\356\235\006\127\034\331\242\330\200\024\376\341\143\055\062
+\207\325\224\122\226\072\106\306\161\226\075\367\230\016\262\221
+\252\217\332\364\116\044\000\071\125\350\255\027\271\323\064\053
+\112\251\100\314\027\052\125\145\101\164\102\176\365\300\257\310
+\223\255\362\030\133\075\211\014\333\107\071\044\370\340\114\362
+\037\260\075\012\312\005\116\211\041\032\343\052\231\254\374\177
+\241\361\017\033\037\075\236\004\203\335\226\331\035\072\224
+END
+
+# Trust for Certificate "S-TRUST Authentication and Encryption Root CA 2005 PN"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "S-TRUST Authentication and Encryption Root CA 2005 PN"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\276\265\251\225\164\153\236\337\163\213\126\346\337\103\172\167
+\276\020\153\201
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\004\113\375\311\154\332\052\062\205\174\131\204\141\106\212\144
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\201\256\061\013\060\011\006\003\125\004\006\023\002\104\105
+\061\040\060\036\006\003\125\004\010\023\027\102\141\144\145\156
+\055\127\165\145\162\164\164\145\155\142\145\162\147\040\050\102
+\127\051\061\022\060\020\006\003\125\004\007\023\011\123\164\165
+\164\164\147\141\162\164\061\051\060\047\006\003\125\004\012\023
+\040\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153
+\141\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142
+\110\061\076\060\074\006\003\125\004\003\023\065\123\055\124\122
+\125\123\124\040\101\165\164\150\145\156\164\151\143\141\164\151
+\157\156\040\141\156\144\040\105\156\143\162\171\160\164\151\157
+\156\040\122\157\157\164\040\103\101\040\062\060\060\065\072\120
+\116
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\067\031\030\346\123\124\174\032\265\270\313\131\132\333
+\065\267
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Microsec e-Szigno Root CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Microsec e-Szigno Root CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\162\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\023\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\024\060\022\006\003
+\125\004\013\023\013\145\055\123\172\151\147\156\157\040\103\101
+\061\042\060\040\006\003\125\004\003\023\031\115\151\143\162\157
+\163\145\143\040\145\055\123\172\151\147\156\157\040\122\157\157
+\164\040\103\101
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\162\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\023\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\024\060\022\006\003
+\125\004\013\023\013\145\055\123\172\151\147\156\157\040\103\101
+\061\042\060\040\006\003\125\004\003\023\031\115\151\143\162\157
+\163\145\143\040\145\055\123\172\151\147\156\157\040\122\157\157
+\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\314\270\347\277\116\051\032\375\242\334\146\245\034
+\054\017\021
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\007\250\060\202\006\220\240\003\002\001\002\002\021\000
+\314\270\347\277\116\051\032\375\242\334\146\245\034\054\017\021
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\162\061\013\060\011\006\003\125\004\006\023\002\110\125\061\021
+\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145\163
+\164\061\026\060\024\006\003\125\004\012\023\015\115\151\143\162
+\157\163\145\143\040\114\164\144\056\061\024\060\022\006\003\125
+\004\013\023\013\145\055\123\172\151\147\156\157\040\103\101\061
+\042\060\040\006\003\125\004\003\023\031\115\151\143\162\157\163
+\145\143\040\145\055\123\172\151\147\156\157\040\122\157\157\164
+\040\103\101\060\036\027\015\060\065\060\064\060\066\061\062\062
+\070\064\064\132\027\015\061\067\060\064\060\066\061\062\062\070
+\064\064\132\060\162\061\013\060\011\006\003\125\004\006\023\002
+\110\125\061\021\060\017\006\003\125\004\007\023\010\102\165\144
+\141\160\145\163\164\061\026\060\024\006\003\125\004\012\023\015
+\115\151\143\162\157\163\145\143\040\114\164\144\056\061\024\060
+\022\006\003\125\004\013\023\013\145\055\123\172\151\147\156\157
+\040\103\101\061\042\060\040\006\003\125\004\003\023\031\115\151
+\143\162\157\163\145\143\040\145\055\123\172\151\147\156\157\040
+\122\157\157\164\040\103\101\060\202\001\042\060\015\006\011\052
+\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060
+\202\001\012\002\202\001\001\000\355\310\000\325\201\173\315\070
+\000\107\314\333\204\301\041\151\054\164\220\014\041\331\123\207
+\355\076\103\104\123\257\253\370\200\233\074\170\215\324\215\256
+\270\357\323\021\334\201\346\317\073\226\214\326\157\025\306\167
+\176\241\057\340\137\222\266\047\327\166\232\035\103\074\352\331
+\354\057\356\071\363\152\147\113\213\202\317\042\370\145\125\376
+\054\313\057\175\110\172\075\165\371\252\240\047\273\170\302\006
+\312\121\302\176\146\113\257\315\242\247\115\002\202\077\202\254
+\205\306\341\017\220\107\231\224\012\161\162\223\052\311\246\300
+\276\074\126\114\163\222\047\361\153\265\365\375\374\060\005\140
+\222\306\353\226\176\001\221\302\151\261\036\035\173\123\105\270
+\334\101\037\311\213\161\326\124\024\343\213\124\170\077\276\364
+\142\073\133\365\243\354\325\222\164\342\164\060\357\001\333\341
+\324\253\231\233\052\153\370\275\246\034\206\043\102\137\354\111
+\336\232\213\133\364\162\072\100\305\111\076\245\276\216\252\161
+\353\154\372\365\032\344\152\375\173\175\125\100\357\130\156\346
+\331\325\274\044\253\301\357\267\002\003\001\000\001\243\202\004
+\067\060\202\004\063\060\147\006\010\053\006\001\005\005\007\001
+\001\004\133\060\131\060\050\006\010\053\006\001\005\005\007\060
+\001\206\034\150\164\164\160\163\072\057\057\162\143\141\056\145
+\055\163\172\151\147\156\157\056\150\165\057\157\143\163\160\060
+\055\006\010\053\006\001\005\005\007\060\002\206\041\150\164\164
+\160\072\057\057\167\167\167\056\145\055\163\172\151\147\156\157
+\056\150\165\057\122\157\157\164\103\101\056\143\162\164\060\017
+\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060
+\202\001\163\006\003\125\035\040\004\202\001\152\060\202\001\146
+\060\202\001\142\006\014\053\006\001\004\001\201\250\030\002\001
+\001\001\060\202\001\120\060\050\006\010\053\006\001\005\005\007
+\002\001\026\034\150\164\164\160\072\057\057\167\167\167\056\145
+\055\163\172\151\147\156\157\056\150\165\057\123\132\123\132\057
+\060\202\001\042\006\010\053\006\001\005\005\007\002\002\060\202
+\001\024\036\202\001\020\000\101\000\040\000\164\000\141\000\156
+\000\372\000\163\000\355\000\164\000\166\000\341\000\156\000\171
+\000\040\000\351\000\162\000\164\000\145\000\154\000\155\000\145
+\000\172\000\351\000\163\000\351\000\150\000\145\000\172\000\040
+\000\351\000\163\000\040\000\145\000\154\000\146\000\157\000\147
+\000\141\000\144\000\341\000\163\000\341\000\150\000\157\000\172
+\000\040\000\141\000\040\000\123\000\172\000\157\000\154\000\147
+\000\341\000\154\000\164\000\141\000\164\000\363\000\040\000\123
+\000\172\000\157\000\154\000\147\000\341\000\154\000\164\000\141
+\000\164\000\341\000\163\000\151\000\040\000\123\000\172\000\141
+\000\142\000\341\000\154\000\171\000\172\000\141\000\164\000\141
+\000\040\000\163\000\172\000\145\000\162\000\151\000\156\000\164
+\000\040\000\153\000\145\000\154\000\154\000\040\000\145\000\154
+\000\152\000\341\000\162\000\156\000\151\000\072\000\040\000\150
+\000\164\000\164\000\160\000\072\000\057\000\057\000\167\000\167
+\000\167\000\056\000\145\000\055\000\163\000\172\000\151\000\147
+\000\156\000\157\000\056\000\150\000\165\000\057\000\123\000\132
+\000\123\000\132\000\057\060\201\310\006\003\125\035\037\004\201
+\300\060\201\275\060\201\272\240\201\267\240\201\264\206\041\150
+\164\164\160\072\057\057\167\167\167\056\145\055\163\172\151\147
+\156\157\056\150\165\057\122\157\157\164\103\101\056\143\162\154
+\206\201\216\154\144\141\160\072\057\057\154\144\141\160\056\145
+\055\163\172\151\147\156\157\056\150\165\057\103\116\075\115\151
+\143\162\157\163\145\143\045\062\060\145\055\123\172\151\147\156
+\157\045\062\060\122\157\157\164\045\062\060\103\101\054\117\125
+\075\145\055\123\172\151\147\156\157\045\062\060\103\101\054\117
+\075\115\151\143\162\157\163\145\143\045\062\060\114\164\144\056
+\054\114\075\102\165\144\141\160\145\163\164\054\103\075\110\125
+\077\143\145\162\164\151\146\151\143\141\164\145\122\145\166\157
+\143\141\164\151\157\156\114\151\163\164\073\142\151\156\141\162
+\171\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001
+\006\060\201\226\006\003\125\035\021\004\201\216\060\201\213\201
+\020\151\156\146\157\100\145\055\163\172\151\147\156\157\056\150
+\165\244\167\060\165\061\043\060\041\006\003\125\004\003\014\032
+\115\151\143\162\157\163\145\143\040\145\055\123\172\151\147\156
+\303\263\040\122\157\157\164\040\103\101\061\026\060\024\006\003
+\125\004\013\014\015\145\055\123\172\151\147\156\303\263\040\110
+\123\132\061\026\060\024\006\003\125\004\012\023\015\115\151\143
+\162\157\163\145\143\040\113\146\164\056\061\021\060\017\006\003
+\125\004\007\023\010\102\165\144\141\160\145\163\164\061\013\060
+\011\006\003\125\004\006\023\002\110\125\060\201\254\006\003\125
+\035\043\004\201\244\060\201\241\200\024\307\240\111\165\026\141
+\204\333\061\113\204\322\361\067\100\220\357\116\334\367\241\166
+\244\164\060\162\061\013\060\011\006\003\125\004\006\023\002\110
+\125\061\021\060\017\006\003\125\004\007\023\010\102\165\144\141
+\160\145\163\164\061\026\060\024\006\003\125\004\012\023\015\115
+\151\143\162\157\163\145\143\040\114\164\144\056\061\024\060\022
+\006\003\125\004\013\023\013\145\055\123\172\151\147\156\157\040
+\103\101\061\042\060\040\006\003\125\004\003\023\031\115\151\143
+\162\157\163\145\143\040\145\055\123\172\151\147\156\157\040\122
+\157\157\164\040\103\101\202\021\000\314\270\347\277\116\051\032
+\375\242\334\146\245\034\054\017\021\060\035\006\003\125\035\016
+\004\026\004\024\307\240\111\165\026\141\204\333\061\113\204\322
+\361\067\100\220\357\116\334\367\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\323\023\234\146
+\143\131\056\312\134\160\014\374\203\274\125\261\364\216\007\154
+\146\047\316\301\073\040\251\034\273\106\124\160\356\132\314\240
+\167\352\150\104\047\353\362\051\335\167\251\325\373\343\324\247
+\004\304\225\270\013\341\104\150\140\007\103\060\061\102\141\345
+\356\331\345\044\325\033\337\341\112\033\252\237\307\137\370\172
+\021\352\023\223\000\312\212\130\261\356\355\016\115\264\327\250
+\066\046\174\340\072\301\325\127\202\361\165\266\375\211\137\332
+\363\250\070\237\065\006\010\316\042\225\276\315\325\374\276\133
+\336\171\153\334\172\251\145\146\276\261\045\132\137\355\176\323
+\254\106\155\114\364\062\207\264\040\004\340\154\170\260\167\321
+\205\106\113\246\022\267\165\350\112\311\126\154\327\222\253\235
+\365\111\070\322\117\123\343\125\220\021\333\230\226\306\111\362
+\076\364\237\033\340\367\210\334\045\142\231\104\330\163\277\077
+\060\363\014\067\076\324\302\050\200\163\261\001\267\235\132\226
+\024\001\113\251\021\235\051\152\056\320\135\201\300\317\262\040
+\103\307\003\340\067\116\135\012\334\131\040\045
+END
+
+# Trust for Certificate "Microsec e-Szigno Root CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Microsec e-Szigno Root CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\043\210\311\323\161\314\236\226\075\377\175\074\247\316\374\326
+\045\354\031\015
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\360\226\266\057\305\020\325\147\216\203\045\062\350\136\056\345
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\162\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\023\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\023\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\024\060\022\006\003
+\125\004\013\023\013\145\055\123\172\151\147\156\157\040\103\101
+\061\042\060\040\006\003\125\004\003\023\031\115\151\143\162\157
+\163\145\143\040\145\055\123\172\151\147\156\157\040\122\157\157
+\164\040\103\101
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\314\270\347\277\116\051\032\375\242\334\146\245\034
+\054\017\021
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Certigna"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certigna"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157
+\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145
+\162\164\151\147\156\141
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157
+\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145
+\162\164\151\147\156\141
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\011\000\376\334\343\001\017\311\110\377
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\250\060\202\002\220\240\003\002\001\002\002\011\000
+\376\334\343\001\017\311\110\377\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\060\064\061\013\060\011\006\003\125
+\004\006\023\002\106\122\061\022\060\020\006\003\125\004\012\014
+\011\104\150\151\155\171\157\164\151\163\061\021\060\017\006\003
+\125\004\003\014\010\103\145\162\164\151\147\156\141\060\036\027
+\015\060\067\060\066\062\071\061\065\061\063\060\065\132\027\015
+\062\067\060\066\062\071\061\065\061\063\060\065\132\060\064\061
+\013\060\011\006\003\125\004\006\023\002\106\122\061\022\060\020
+\006\003\125\004\012\014\011\104\150\151\155\171\157\164\151\163
+\061\021\060\017\006\003\125\004\003\014\010\103\145\162\164\151
+\147\156\141\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\310\150\361\311\326\326\263\064\165\046\202\036
+\354\264\276\352\134\341\046\355\021\107\141\341\242\174\026\170
+\100\041\344\140\236\132\310\143\341\304\261\226\222\377\030\155
+\151\043\341\053\142\367\335\342\066\057\221\007\271\110\317\016
+\354\171\266\054\347\064\113\160\010\045\243\074\207\033\031\362
+\201\007\017\070\220\031\323\021\376\206\264\362\321\136\036\036
+\226\315\200\154\316\073\061\223\266\362\240\320\251\225\022\175
+\245\232\314\153\310\204\126\212\063\251\347\042\025\123\026\360
+\314\027\354\127\137\351\242\012\230\011\336\343\137\234\157\334
+\110\343\205\013\025\132\246\272\237\254\110\343\011\262\367\364
+\062\336\136\064\276\034\170\135\102\133\316\016\042\217\115\220
+\327\175\062\030\263\013\054\152\277\216\077\024\021\211\040\016
+\167\024\265\075\224\010\207\367\045\036\325\262\140\000\354\157
+\052\050\045\156\052\076\030\143\027\045\077\076\104\040\026\366
+\046\310\045\256\005\112\264\347\143\054\363\214\026\123\176\134
+\373\021\032\010\301\106\142\237\042\270\361\302\215\151\334\372
+\072\130\006\337\002\003\001\000\001\243\201\274\060\201\271\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\035\006\003\125\035\016\004\026\004\024\032\355\376\101\071
+\220\264\044\131\276\001\362\122\325\105\366\132\071\334\021\060
+\144\006\003\125\035\043\004\135\060\133\200\024\032\355\376\101
+\071\220\264\044\131\276\001\362\122\325\105\366\132\071\334\021
+\241\070\244\066\060\064\061\013\060\011\006\003\125\004\006\023
+\002\106\122\061\022\060\020\006\003\125\004\012\014\011\104\150
+\151\155\171\157\164\151\163\061\021\060\017\006\003\125\004\003
+\014\010\103\145\162\164\151\147\156\141\202\011\000\376\334\343
+\001\017\311\110\377\060\016\006\003\125\035\017\001\001\377\004
+\004\003\002\001\006\060\021\006\011\140\206\110\001\206\370\102
+\001\001\004\004\003\002\000\007\060\015\006\011\052\206\110\206
+\367\015\001\001\005\005\000\003\202\001\001\000\205\003\036\222
+\161\366\102\257\341\243\141\236\353\363\300\017\362\245\324\332
+\225\346\326\276\150\066\075\176\156\037\114\212\357\321\017\041
+\155\136\245\122\143\316\022\370\357\052\332\157\353\067\376\023
+\002\307\313\073\076\042\153\332\141\056\177\324\162\075\335\060
+\341\036\114\100\031\214\017\327\234\321\203\060\173\230\131\334
+\175\306\271\014\051\114\241\063\242\353\147\072\145\204\323\226
+\342\355\166\105\160\217\265\053\336\371\043\326\111\156\074\024
+\265\306\237\065\036\120\320\301\217\152\160\104\002\142\313\256
+\035\150\101\247\252\127\350\123\252\007\322\006\366\325\024\006
+\013\221\003\165\054\154\162\265\141\225\232\015\213\271\015\347
+\365\337\124\315\336\346\330\326\011\010\227\143\345\301\056\260
+\267\104\046\300\046\300\257\125\060\236\073\325\066\052\031\004
+\364\134\036\377\317\054\267\377\320\375\207\100\021\325\021\043
+\273\110\300\041\251\244\050\055\375\025\370\260\116\053\364\060
+\133\041\374\021\221\064\276\101\357\173\235\227\165\377\227\225
+\300\226\130\057\352\273\106\327\273\344\331\056
+END
+
+# Trust for Certificate "Certigna"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Certigna"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\261\056\023\143\105\206\244\157\032\262\140\150\067\130\055\304
+\254\375\224\227
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\253\127\246\133\175\102\202\031\265\330\130\046\050\136\375\377
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061
+\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157
+\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145
+\162\164\151\147\156\141
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\011\000\376\334\343\001\017\311\110\377
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "AC Ra+¡z Certic+ímara S.A."
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AC Ra+¡z Certic+ímara S.A."
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\103\117\061
+\107\060\105\006\003\125\004\012\014\076\123\157\143\151\145\144
+\141\144\040\103\141\155\145\162\141\154\040\144\145\040\103\145
+\162\164\151\146\151\143\141\143\151\303\263\156\040\104\151\147
+\151\164\141\154\040\055\040\103\145\162\164\151\143\303\241\155
+\141\162\141\040\123\056\101\056\061\043\060\041\006\003\125\004
+\003\014\032\101\103\040\122\141\303\255\172\040\103\145\162\164
+\151\143\303\241\155\141\162\141\040\123\056\101\056
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\103\117\061
+\107\060\105\006\003\125\004\012\014\076\123\157\143\151\145\144
+\141\144\040\103\141\155\145\162\141\154\040\144\145\040\103\145
+\162\164\151\146\151\143\141\143\151\303\263\156\040\104\151\147
+\151\164\141\154\040\055\040\103\145\162\164\151\143\303\241\155
+\141\162\141\040\123\056\101\056\061\043\060\041\006\003\125\004
+\003\014\032\101\103\040\122\141\303\255\172\040\103\145\162\164
+\151\143\303\241\155\141\162\141\040\123\056\101\056
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\017\007\176\122\223\173\340\025\343\127\360\151\214\313\354
+\014
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\006\146\060\202\004\116\240\003\002\001\002\002\017\007
+\176\122\223\173\340\025\343\127\360\151\214\313\354\014\060\015
+\006\011\052\206\110\206\367\015\001\001\005\005\000\060\173\061
+\013\060\011\006\003\125\004\006\023\002\103\117\061\107\060\105
+\006\003\125\004\012\014\076\123\157\143\151\145\144\141\144\040
+\103\141\155\145\162\141\154\040\144\145\040\103\145\162\164\151
+\146\151\143\141\143\151\303\263\156\040\104\151\147\151\164\141
+\154\040\055\040\103\145\162\164\151\143\303\241\155\141\162\141
+\040\123\056\101\056\061\043\060\041\006\003\125\004\003\014\032
+\101\103\040\122\141\303\255\172\040\103\145\162\164\151\143\303
+\241\155\141\162\141\040\123\056\101\056\060\036\027\015\060\066
+\061\061\062\067\062\060\064\066\062\071\132\027\015\063\060\060
+\064\060\062\062\061\064\062\060\062\132\060\173\061\013\060\011
+\006\003\125\004\006\023\002\103\117\061\107\060\105\006\003\125
+\004\012\014\076\123\157\143\151\145\144\141\144\040\103\141\155
+\145\162\141\154\040\144\145\040\103\145\162\164\151\146\151\143
+\141\143\151\303\263\156\040\104\151\147\151\164\141\154\040\055
+\040\103\145\162\164\151\143\303\241\155\141\162\141\040\123\056
+\101\056\061\043\060\041\006\003\125\004\003\014\032\101\103\040
+\122\141\303\255\172\040\103\145\162\164\151\143\303\241\155\141
+\162\141\040\123\056\101\056\060\202\002\042\060\015\006\011\052
+\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060
+\202\002\012\002\202\002\001\000\253\153\211\243\123\314\110\043
+\010\373\303\317\121\226\010\056\270\010\172\155\074\220\027\206
+\251\351\355\056\023\064\107\262\320\160\334\311\074\320\215\312
+\356\113\027\253\320\205\260\247\043\004\313\250\242\374\345\165
+\333\100\312\142\211\217\120\236\001\075\046\133\030\204\034\313
+\174\067\267\175\354\323\177\163\031\260\152\262\330\210\212\055
+\105\164\250\367\263\270\300\324\332\315\042\211\164\115\132\025
+\071\163\030\164\117\265\353\231\247\301\036\210\264\302\223\220
+\143\227\363\247\247\022\262\011\042\007\063\331\221\315\016\234
+\037\016\040\307\356\273\063\215\217\302\322\130\247\137\375\145
+\067\342\210\302\330\217\206\165\136\371\055\247\207\063\362\170
+\067\057\213\274\035\206\067\071\261\224\362\330\274\112\234\203
+\030\132\006\374\363\324\324\272\214\025\011\045\360\371\266\215
+\004\176\027\022\063\153\127\110\114\117\333\046\036\353\314\220
+\347\213\371\150\174\160\017\243\052\320\072\070\337\067\227\342
+\133\336\200\141\323\200\330\221\203\102\132\114\004\211\150\021
+\074\254\137\150\200\101\314\140\102\316\015\132\052\014\017\233
+\060\300\246\360\206\333\253\111\327\227\155\110\213\371\003\300
+\122\147\233\022\367\302\362\056\230\145\102\331\326\232\343\320
+\031\061\014\255\207\325\127\002\172\060\350\206\046\373\217\043
+\212\124\207\344\277\074\356\353\303\165\110\137\036\071\157\201
+\142\154\305\055\304\027\124\031\267\067\215\234\067\221\310\366
+\013\325\352\143\157\203\254\070\302\363\077\336\232\373\341\043
+\141\360\310\046\313\066\310\241\363\060\217\244\243\242\241\335
+\123\263\336\360\232\062\037\203\221\171\060\301\251\037\123\233
+\123\242\025\123\077\335\235\263\020\073\110\175\211\017\374\355
+\003\365\373\045\144\165\016\027\031\015\217\000\026\147\171\172
+\100\374\055\131\007\331\220\372\232\255\075\334\200\212\346\134
+\065\242\147\114\021\153\261\370\200\144\000\055\157\042\141\305
+\254\113\046\345\132\020\202\233\244\203\173\064\367\236\211\221
+\040\227\216\267\102\307\146\303\320\351\244\326\365\040\215\304
+\303\225\254\104\012\235\133\163\074\046\075\057\112\276\247\311
+\247\020\036\373\237\120\151\363\002\003\001\000\001\243\201\346
+\060\201\343\060\017\006\003\125\035\023\001\001\377\004\005\060
+\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004
+\003\002\001\006\060\035\006\003\125\035\016\004\026\004\024\321
+\011\320\351\327\316\171\164\124\371\072\060\263\364\155\054\003
+\003\033\150\060\201\240\006\003\125\035\040\004\201\230\060\201
+\225\060\201\222\006\004\125\035\040\000\060\201\211\060\053\006
+\010\053\006\001\005\005\007\002\001\026\037\150\164\164\160\072
+\057\057\167\167\167\056\143\145\162\164\151\143\141\155\141\162
+\141\056\143\157\155\057\144\160\143\057\060\132\006\010\053\006
+\001\005\005\007\002\002\060\116\032\114\114\151\155\151\164\141
+\143\151\157\156\145\163\040\144\145\040\147\141\162\141\156\164
+\355\141\163\040\144\145\040\145\163\164\145\040\143\145\162\164
+\151\146\151\143\141\144\157\040\163\145\040\160\165\145\144\145
+\156\040\145\156\143\157\156\164\162\141\162\040\145\156\040\154
+\141\040\104\120\103\056\060\015\006\011\052\206\110\206\367\015
+\001\001\005\005\000\003\202\002\001\000\134\224\265\270\105\221
+\115\216\141\037\003\050\017\123\174\346\244\131\251\263\212\172
+\305\260\377\010\174\054\243\161\034\041\023\147\241\225\022\100
+\065\203\203\217\164\333\063\134\360\111\166\012\201\122\335\111
+\324\232\062\063\357\233\247\313\165\345\172\313\227\022\220\134
+\272\173\305\233\337\273\071\043\310\377\230\316\012\115\042\001
+\110\007\176\212\300\325\040\102\224\104\357\277\167\242\211\147
+\110\033\100\003\005\241\211\354\317\142\343\075\045\166\146\277
+\046\267\273\042\276\157\377\071\127\164\272\172\311\001\225\301
+\225\121\350\253\054\370\261\206\040\351\077\313\065\133\322\027
+\351\052\376\203\023\027\100\356\210\142\145\133\325\073\140\351
+\173\074\270\311\325\177\066\002\045\252\150\302\061\025\267\060
+\145\353\177\035\110\171\261\317\071\342\102\200\026\323\365\223
+\043\374\114\227\311\132\067\154\174\042\330\112\315\322\216\066
+\203\071\221\220\020\310\361\311\065\176\077\270\323\201\306\040
+\144\032\266\120\302\041\244\170\334\320\057\073\144\223\164\360
+\226\220\361\357\373\011\132\064\100\226\360\066\022\301\243\164
+\214\223\176\101\336\167\213\354\206\331\322\017\077\055\321\314
+\100\242\211\146\110\036\040\263\234\043\131\163\251\104\163\274
+\044\171\220\126\067\263\306\051\176\243\017\361\051\071\357\176
+\134\050\062\160\065\254\332\270\310\165\146\374\233\114\071\107
+\216\033\157\233\115\002\124\042\063\357\141\272\236\051\204\357
+\116\113\063\107\166\227\152\313\176\137\375\025\246\236\102\103
+\133\146\132\212\210\015\367\026\271\077\121\145\053\146\152\213
+\321\070\122\242\326\106\021\372\374\232\034\164\236\217\227\013
+\002\117\144\306\365\150\323\113\055\377\244\067\036\213\077\277
+\104\276\141\106\241\204\075\010\047\114\201\040\167\211\010\352
+\147\100\136\154\010\121\137\064\132\214\226\150\315\327\367\211
+\302\034\323\062\000\257\122\313\323\140\133\052\072\107\176\153
+\060\063\241\142\051\177\112\271\341\055\347\024\043\016\016\030
+\107\341\171\374\025\125\320\261\374\045\161\143\165\063\034\043
+\053\257\134\331\355\107\167\140\016\073\017\036\322\300\334\144
+\005\211\374\170\326\134\054\046\103\251
+END
+
+# Trust for Certificate "AC Ra+¡z Certic+ímara S.A."
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "AC Ra+¡z Certic+ímara S.A."
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\313\241\305\370\260\343\136\270\271\105\022\323\371\064\242\351
+\006\020\323\066
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\223\052\076\366\375\043\151\015\161\040\324\053\107\231\053\246
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\173\061\013\060\011\006\003\125\004\006\023\002\103\117\061
+\107\060\105\006\003\125\004\012\014\076\123\157\143\151\145\144
+\141\144\040\103\141\155\145\162\141\154\040\144\145\040\103\145
+\162\164\151\146\151\143\141\143\151\303\263\156\040\104\151\147
+\151\164\141\154\040\055\040\103\145\162\164\151\143\303\241\155
+\141\162\141\040\123\056\101\056\061\043\060\041\006\003\125\004
+\003\014\032\101\103\040\122\141\303\255\172\040\103\145\162\164
+\151\143\303\241\155\141\162\141\040\123\056\101\056
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\017\007\176\122\223\173\340\025\343\127\360\151\214\313\354
+\014
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TC TrustCenter Class 2 CA II"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Class 2 CA II"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\062\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\062\040\103\101\040\111\111
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\062\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\062\040\103\101\040\111\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\056\152\000\001\000\002\037\327\122\041\054\021\134\073
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\252\060\202\003\222\240\003\002\001\002\002\016\056
+\152\000\001\000\002\037\327\122\041\054\021\134\073\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\060\166\061\013
+\060\011\006\003\125\004\006\023\002\104\105\061\034\060\032\006
+\003\125\004\012\023\023\124\103\040\124\162\165\163\164\103\145
+\156\164\145\162\040\107\155\142\110\061\042\060\040\006\003\125
+\004\013\023\031\124\103\040\124\162\165\163\164\103\145\156\164
+\145\162\040\103\154\141\163\163\040\062\040\103\101\061\045\060
+\043\006\003\125\004\003\023\034\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\062\040\103
+\101\040\111\111\060\036\027\015\060\066\060\061\061\062\061\064
+\063\070\064\063\132\027\015\062\065\061\062\063\061\062\062\065
+\071\065\071\132\060\166\061\013\060\011\006\003\125\004\006\023
+\002\104\105\061\034\060\032\006\003\125\004\012\023\023\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\107\155\142
+\110\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\062\040\103\101\061\045\060\043\006\003\125\004\003\023\034
+\124\103\040\124\162\165\163\164\103\145\156\164\145\162\040\103
+\154\141\163\163\040\062\040\103\101\040\111\111\060\202\001\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\001\017\000\060\202\001\012\002\202\001\001\000\253\200\207
+\233\216\360\303\174\207\327\350\044\202\021\263\074\335\103\142
+\356\370\303\105\332\350\341\240\137\321\052\262\352\223\150\337
+\264\310\326\103\351\304\165\131\177\374\341\035\370\061\160\043
+\033\210\236\047\271\173\375\072\322\311\251\351\024\057\220\276
+\003\122\301\111\315\366\375\344\010\146\013\127\212\242\102\240
+\270\325\177\151\134\220\062\262\227\015\312\112\334\106\076\002
+\125\211\123\343\032\132\313\066\306\007\126\367\214\317\021\364
+\114\273\060\160\004\225\245\366\071\214\375\163\201\010\175\211
+\136\062\036\042\251\042\105\113\260\146\056\060\314\237\145\375
+\374\313\201\251\361\340\073\257\243\206\321\211\352\304\105\171
+\120\135\256\351\041\164\222\115\213\131\202\217\224\343\351\112
+\361\347\111\260\024\343\365\142\313\325\162\275\037\271\322\237
+\240\315\250\372\001\310\331\015\337\332\374\107\235\263\310\124
+\337\111\112\361\041\251\376\030\116\356\110\324\031\273\357\175
+\344\342\235\313\133\266\156\377\343\315\132\347\164\202\005\272
+\200\045\070\313\344\151\236\257\101\252\032\204\365\002\003\001
+\000\001\243\202\001\064\060\202\001\060\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
+\035\016\004\026\004\024\343\253\124\114\200\241\333\126\103\267
+\221\112\313\363\202\172\023\134\010\253\060\201\355\006\003\125
+\035\037\004\201\345\060\201\342\060\201\337\240\201\334\240\201
+\331\206\065\150\164\164\160\072\057\057\167\167\167\056\164\162
+\165\163\164\143\145\156\164\145\162\056\144\145\057\143\162\154
+\057\166\062\057\164\143\137\143\154\141\163\163\137\062\137\143
+\141\137\111\111\056\143\162\154\206\201\237\154\144\141\160\072
+\057\057\167\167\167\056\164\162\165\163\164\143\145\156\164\145
+\162\056\144\145\057\103\116\075\124\103\045\062\060\124\162\165
+\163\164\103\145\156\164\145\162\045\062\060\103\154\141\163\163
+\045\062\060\062\045\062\060\103\101\045\062\060\111\111\054\117
+\075\124\103\045\062\060\124\162\165\163\164\103\145\156\164\145
+\162\045\062\060\107\155\142\110\054\117\125\075\162\157\157\164
+\143\145\162\164\163\054\104\103\075\164\162\165\163\164\143\145
+\156\164\145\162\054\104\103\075\144\145\077\143\145\162\164\151
+\146\151\143\141\164\145\122\145\166\157\143\141\164\151\157\156
+\114\151\163\164\077\142\141\163\145\077\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\214\327
+\337\176\356\033\200\020\263\203\365\333\021\352\153\113\250\222
+\030\331\367\007\071\365\054\276\006\165\172\150\123\025\034\352
+\112\355\136\374\043\262\023\240\323\011\377\366\366\056\153\101
+\161\171\315\342\155\375\256\131\153\205\035\270\116\042\232\355
+\146\071\156\113\224\346\125\374\013\033\213\167\301\123\023\146
+\211\331\050\326\213\363\105\112\143\267\375\173\013\141\135\270
+\155\276\303\334\133\171\322\355\206\345\242\115\276\136\164\174
+\152\355\026\070\037\177\130\201\132\032\353\062\210\055\262\363
+\071\167\200\257\136\266\141\165\051\333\043\115\210\312\120\050
+\313\205\322\323\020\242\131\156\323\223\124\000\172\242\106\225
+\206\005\234\251\031\230\345\061\162\014\000\342\147\331\100\340
+\044\063\173\157\054\271\134\253\145\235\054\254\166\352\065\231
+\365\227\271\017\044\354\307\166\041\050\145\256\127\350\007\210
+\165\112\126\240\322\005\072\244\346\215\222\210\054\363\362\341
+\301\306\141\333\101\305\307\233\367\016\032\121\105\302\141\153
+\334\144\047\027\214\132\267\332\164\050\315\227\344\275
+END
+
+# Trust for Certificate "TC TrustCenter Class 2 CA II"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Class 2 CA II"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\256\120\203\355\174\364\134\274\217\141\306\041\376\150\135\171
+\102\041\025\156
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\316\170\063\134\131\170\001\156\030\352\271\066\240\271\056\043
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\062\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\062\040\103\101\040\111\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\056\152\000\001\000\002\037\327\122\041\054\021\134\073
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TC TrustCenter Class 3 CA II"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\063\040\103\101\040\111\111
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\063\040\103\101\040\111\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\004\252\060\202\003\222\240\003\002\001\002\002\016\112
+\107\000\001\000\002\345\240\135\326\077\000\121\277\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\060\166\061\013
+\060\011\006\003\125\004\006\023\002\104\105\061\034\060\032\006
+\003\125\004\012\023\023\124\103\040\124\162\165\163\164\103\145
+\156\164\145\162\040\107\155\142\110\061\042\060\040\006\003\125
+\004\013\023\031\124\103\040\124\162\165\163\164\103\145\156\164
+\145\162\040\103\154\141\163\163\040\063\040\103\101\061\045\060
+\043\006\003\125\004\003\023\034\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
+\101\040\111\111\060\036\027\015\060\066\060\061\061\062\061\064
+\064\061\065\067\132\027\015\062\065\061\062\063\061\062\062\065
+\071\065\071\132\060\166\061\013\060\011\006\003\125\004\006\023
+\002\104\105\061\034\060\032\006\003\125\004\012\023\023\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\107\155\142
+\110\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\063\040\103\101\061\045\060\043\006\003\125\004\003\023\034
+\124\103\040\124\162\165\163\164\103\145\156\164\145\162\040\103
+\154\141\163\163\040\063\040\103\101\040\111\111\060\202\001\042
+\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
+\202\001\017\000\060\202\001\012\002\202\001\001\000\264\340\273
+\121\273\071\134\213\004\305\114\171\034\043\206\061\020\143\103
+\125\047\077\306\105\307\244\075\354\011\015\032\036\040\302\126
+\036\336\033\067\007\060\042\057\157\361\006\361\253\255\326\310
+\253\141\243\057\103\304\260\262\055\374\303\226\151\173\176\212
+\344\314\300\071\022\220\102\140\311\314\065\150\356\332\137\220
+\126\137\315\034\115\133\130\111\353\016\001\117\144\372\054\074
+\211\130\330\057\056\342\260\150\351\042\073\165\211\326\104\032
+\145\362\033\227\046\035\050\155\254\350\275\131\035\053\044\366
+\326\204\003\146\210\044\000\170\140\361\370\253\376\002\262\153
+\373\042\373\065\346\026\321\255\366\056\022\344\372\065\152\345
+\031\271\135\333\073\036\032\373\323\377\025\024\010\330\011\152
+\272\105\235\024\171\140\175\257\100\212\007\163\263\223\226\323
+\164\064\215\072\067\051\336\134\354\365\356\056\061\302\040\334
+\276\361\117\177\043\122\331\133\342\144\331\234\252\007\010\265
+\105\275\321\320\061\301\253\124\237\251\322\303\142\140\003\361
+\273\071\112\222\112\075\012\271\235\305\240\376\067\002\003\001
+\000\001\243\202\001\064\060\202\001\060\060\017\006\003\125\035
+\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
+\035\016\004\026\004\024\324\242\374\237\263\303\330\003\323\127
+\134\007\244\320\044\247\300\362\000\324\060\201\355\006\003\125
+\035\037\004\201\345\060\201\342\060\201\337\240\201\334\240\201
+\331\206\065\150\164\164\160\072\057\057\167\167\167\056\164\162
+\165\163\164\143\145\156\164\145\162\056\144\145\057\143\162\154
+\057\166\062\057\164\143\137\143\154\141\163\163\137\063\137\143
+\141\137\111\111\056\143\162\154\206\201\237\154\144\141\160\072
+\057\057\167\167\167\056\164\162\165\163\164\143\145\156\164\145
+\162\056\144\145\057\103\116\075\124\103\045\062\060\124\162\165
+\163\164\103\145\156\164\145\162\045\062\060\103\154\141\163\163
+\045\062\060\063\045\062\060\103\101\045\062\060\111\111\054\117
+\075\124\103\045\062\060\124\162\165\163\164\103\145\156\164\145
+\162\045\062\060\107\155\142\110\054\117\125\075\162\157\157\164
+\143\145\162\164\163\054\104\103\075\164\162\165\163\164\143\145
+\156\164\145\162\054\104\103\075\144\145\077\143\145\162\164\151
+\146\151\143\141\164\145\122\145\166\157\143\141\164\151\157\156
+\114\151\163\164\077\142\141\163\145\077\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\003\202\001\001\000\066\140
+\344\160\367\006\040\103\331\043\032\102\362\370\243\262\271\115
+\212\264\363\302\232\125\061\174\304\073\147\232\264\337\115\016
+\212\223\112\027\213\033\215\312\211\341\317\072\036\254\035\361
+\234\062\264\216\131\166\242\101\205\045\067\240\023\320\365\174
+\116\325\352\226\342\156\162\301\273\052\376\154\156\370\221\230
+\106\374\311\033\127\133\352\310\032\073\077\260\121\230\074\007
+\332\054\131\001\332\213\104\350\341\164\375\247\150\335\124\272
+\203\106\354\310\106\265\370\257\227\300\073\011\034\217\316\162
+\226\075\063\126\160\274\226\313\330\325\175\040\232\203\237\032
+\334\071\361\305\162\243\021\003\375\073\102\122\051\333\350\001
+\367\233\136\214\326\215\206\116\031\372\274\034\276\305\041\245
+\207\236\170\056\066\333\011\161\243\162\064\370\154\343\006\011
+\362\136\126\245\323\335\230\372\324\346\006\364\360\266\040\143
+\113\352\051\275\252\202\146\036\373\201\252\247\067\255\023\030
+\346\222\303\201\301\063\273\210\036\241\347\342\264\275\061\154
+\016\121\075\157\373\226\126\200\342\066\027\321\334\344
+END
+
+# Trust for Certificate "TC TrustCenter Class 3 CA II"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\200\045\357\364\156\160\310\324\162\044\145\204\376\100\073\212
+\215\152\333\365
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\126\137\252\200\141\022\027\366\147\041\346\053\155\141\126\216
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
+\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
+\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
+\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
+\040\063\040\103\101\040\111\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "TC TrustCenter Universal CA I"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Universal CA I"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\171\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\044\060
+\042\006\003\125\004\013\023\033\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\125\156\151\166\145\162\163\141\154
+\040\103\101\061\046\060\044\006\003\125\004\003\023\035\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\125\156\151
+\166\145\162\163\141\154\040\103\101\040\111
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\171\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\044\060
+\042\006\003\125\004\013\023\033\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\125\156\151\166\145\162\163\141\154
+\040\103\101\061\046\060\044\006\003\125\004\003\023\035\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\125\156\151
+\166\145\162\163\141\154\040\103\101\040\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\035\242\000\001\000\002\354\267\140\200\170\215\266\006
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\335\060\202\002\305\240\003\002\001\002\002\016\035
+\242\000\001\000\002\354\267\140\200\170\215\266\006\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\060\171\061\013
+\060\011\006\003\125\004\006\023\002\104\105\061\034\060\032\006
+\003\125\004\012\023\023\124\103\040\124\162\165\163\164\103\145
+\156\164\145\162\040\107\155\142\110\061\044\060\042\006\003\125
+\004\013\023\033\124\103\040\124\162\165\163\164\103\145\156\164
+\145\162\040\125\156\151\166\145\162\163\141\154\040\103\101\061
+\046\060\044\006\003\125\004\003\023\035\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\125\156\151\166\145\162\163
+\141\154\040\103\101\040\111\060\036\027\015\060\066\060\063\062
+\062\061\065\065\064\062\070\132\027\015\062\065\061\062\063\061
+\062\062\065\071\065\071\132\060\171\061\013\060\011\006\003\125
+\004\006\023\002\104\105\061\034\060\032\006\003\125\004\012\023
+\023\124\103\040\124\162\165\163\164\103\145\156\164\145\162\040
+\107\155\142\110\061\044\060\042\006\003\125\004\013\023\033\124
+\103\040\124\162\165\163\164\103\145\156\164\145\162\040\125\156
+\151\166\145\162\163\141\154\040\103\101\061\046\060\044\006\003
+\125\004\003\023\035\124\103\040\124\162\165\163\164\103\145\156
+\164\145\162\040\125\156\151\166\145\162\163\141\154\040\103\101
+\040\111\060\202\001\042\060\015\006\011\052\206\110\206\367\015
+\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202
+\001\001\000\244\167\043\226\104\257\220\364\061\247\020\364\046
+\207\234\363\070\331\017\136\336\317\101\350\061\255\306\164\221
+\044\226\170\036\011\240\233\232\225\112\112\365\142\174\002\250
+\312\254\373\132\004\166\071\336\137\361\371\263\277\363\003\130
+\125\322\252\267\343\004\042\321\370\224\332\042\010\000\215\323
+\174\046\135\314\167\171\347\054\170\071\250\046\163\016\242\135
+\045\151\205\117\125\016\232\357\306\271\104\341\127\075\337\037
+\124\042\345\157\145\252\063\204\072\363\316\172\276\125\227\256
+\215\022\017\024\063\342\120\160\303\111\207\023\274\121\336\327
+\230\022\132\357\072\203\063\222\006\165\213\222\174\022\150\173
+\160\152\017\265\233\266\167\133\110\131\235\344\357\132\255\363
+\301\236\324\327\105\116\312\126\064\041\274\076\027\133\157\167
+\014\110\001\103\051\260\335\077\226\156\346\225\252\014\300\040
+\266\375\076\066\047\234\343\134\317\116\201\334\031\273\221\220
+\175\354\346\227\004\036\223\314\042\111\327\227\206\266\023\012
+\074\103\043\167\176\360\334\346\315\044\037\073\203\233\064\072
+\203\064\343\002\003\001\000\001\243\143\060\141\060\037\006\003
+\125\035\043\004\030\060\026\200\024\222\244\165\054\244\236\276
+\201\104\353\171\374\212\305\225\245\353\020\165\163\060\017\006
+\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016
+\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\035
+\006\003\125\035\016\004\026\004\024\222\244\165\054\244\236\276
+\201\104\353\171\374\212\305\225\245\353\020\165\163\060\015\006
+\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001
+\000\050\322\340\206\325\346\370\173\360\227\334\042\153\073\225
+\024\126\017\021\060\245\232\117\072\260\072\340\006\313\145\365
+\355\306\227\047\376\045\362\127\346\136\225\214\076\144\140\025
+\132\177\057\015\001\305\261\140\375\105\065\317\360\262\277\006
+\331\357\132\276\263\142\041\264\327\253\065\174\123\076\246\047
+\361\241\055\332\032\043\235\314\335\354\074\055\236\047\064\135
+\017\302\066\171\274\311\112\142\055\355\153\331\175\101\103\174
+\266\252\312\355\141\261\067\202\025\011\032\212\026\060\330\354
+\311\326\107\162\170\113\020\106\024\216\137\016\257\354\307\057
+\253\020\327\266\361\156\354\206\262\302\350\015\222\163\334\242
+\364\017\072\277\141\043\020\211\234\110\100\156\160\000\263\323
+\272\067\104\130\021\172\002\152\210\360\067\064\360\031\351\254
+\324\145\163\366\151\214\144\224\072\171\205\051\260\026\053\014
+\202\077\006\234\307\375\020\053\236\017\054\266\236\343\025\277
+\331\066\034\272\045\032\122\075\032\354\042\014\034\340\244\242
+\075\360\350\071\317\201\300\173\355\135\037\157\305\320\013\327
+\230
+END
+
+# Trust for Certificate "TC TrustCenter Universal CA I"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "TC TrustCenter Universal CA I"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\153\057\064\255\211\130\276\142\375\260\153\134\316\273\235\331
+\117\116\071\363
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\105\341\245\162\305\251\066\144\100\236\365\344\130\204\147\214
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\171\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
+\163\164\103\145\156\164\145\162\040\107\155\142\110\061\044\060
+\042\006\003\125\004\013\023\033\124\103\040\124\162\165\163\164
+\103\145\156\164\145\162\040\125\156\151\166\145\162\163\141\154
+\040\103\101\061\046\060\044\006\003\125\004\003\023\035\124\103
+\040\124\162\165\163\164\103\145\156\164\145\162\040\125\156\151
+\166\145\162\163\141\154\040\103\101\040\111
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\016\035\242\000\001\000\002\354\267\140\200\170\215\266\006
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Deutsche Telekom Root CA 2"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Deutsche Telekom Root CA 2"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\161\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\104\145\165\164\163\143
+\150\145\040\124\145\154\145\153\157\155\040\101\107\061\037\060
+\035\006\003\125\004\013\023\026\124\055\124\145\154\145\123\145
+\143\040\124\162\165\163\164\040\103\145\156\164\145\162\061\043
+\060\041\006\003\125\004\003\023\032\104\145\165\164\163\143\150
+\145\040\124\145\154\145\153\157\155\040\122\157\157\164\040\103
+\101\040\062
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\161\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\104\145\165\164\163\143
+\150\145\040\124\145\154\145\153\157\155\040\101\107\061\037\060
+\035\006\003\125\004\013\023\026\124\055\124\145\154\145\123\145
+\143\040\124\162\165\163\164\040\103\145\156\164\145\162\061\043
+\060\041\006\003\125\004\003\023\032\104\145\165\164\163\143\150
+\145\040\124\145\154\145\153\157\155\040\122\157\157\164\040\103
+\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\046
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\237\060\202\002\207\240\003\002\001\002\002\001\046
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\161\061\013\060\011\006\003\125\004\006\023\002\104\105\061\034
+\060\032\006\003\125\004\012\023\023\104\145\165\164\163\143\150
+\145\040\124\145\154\145\153\157\155\040\101\107\061\037\060\035
+\006\003\125\004\013\023\026\124\055\124\145\154\145\123\145\143
+\040\124\162\165\163\164\040\103\145\156\164\145\162\061\043\060
+\041\006\003\125\004\003\023\032\104\145\165\164\163\143\150\145
+\040\124\145\154\145\153\157\155\040\122\157\157\164\040\103\101
+\040\062\060\036\027\015\071\071\060\067\060\071\061\062\061\061
+\060\060\132\027\015\061\071\060\067\060\071\062\063\065\071\060
+\060\132\060\161\061\013\060\011\006\003\125\004\006\023\002\104
+\105\061\034\060\032\006\003\125\004\012\023\023\104\145\165\164
+\163\143\150\145\040\124\145\154\145\153\157\155\040\101\107\061
+\037\060\035\006\003\125\004\013\023\026\124\055\124\145\154\145
+\123\145\143\040\124\162\165\163\164\040\103\145\156\164\145\162
+\061\043\060\041\006\003\125\004\003\023\032\104\145\165\164\163
+\143\150\145\040\124\145\154\145\153\157\155\040\122\157\157\164
+\040\103\101\040\062\060\202\001\042\060\015\006\011\052\206\110
+\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001
+\012\002\202\001\001\000\253\013\243\065\340\213\051\024\261\024
+\205\257\074\020\344\071\157\065\135\112\256\335\352\141\215\225
+\111\364\157\144\243\032\140\146\244\251\100\042\204\331\324\245
+\345\170\223\016\150\001\255\271\115\134\072\316\323\270\250\102
+\100\337\317\243\272\202\131\152\222\033\254\034\232\332\010\053
+\045\047\371\151\043\107\361\340\353\054\172\233\365\023\002\320
+\176\064\174\302\236\074\000\131\253\365\332\014\365\062\074\053
+\254\120\332\326\303\336\203\224\312\250\014\231\062\016\010\110
+\126\133\152\373\332\341\130\130\001\111\137\162\101\074\025\006
+\001\216\135\255\252\270\223\264\315\236\353\247\350\152\055\122
+\064\333\072\357\134\165\121\332\333\363\061\371\356\161\230\062
+\304\124\025\104\014\371\233\125\355\255\337\030\010\240\243\206
+\212\111\356\123\005\217\031\114\325\336\130\171\233\322\152\034
+\102\253\305\325\247\317\150\017\226\344\341\141\230\166\141\310
+\221\174\326\076\000\342\221\120\207\341\235\012\346\255\227\322
+\035\306\072\175\313\274\332\003\064\325\216\133\001\365\152\007
+\267\026\266\156\112\177\002\003\001\000\001\243\102\060\100\060
+\035\006\003\125\035\016\004\026\004\024\061\303\171\033\272\365
+\123\327\027\340\211\172\055\027\154\012\263\053\235\063\060\017
+\006\003\125\035\023\004\010\060\006\001\001\377\002\001\005\060
+\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202
+\001\001\000\224\144\131\255\071\144\347\051\353\023\376\132\303
+\213\023\127\310\004\044\360\164\167\300\140\343\147\373\351\211
+\246\203\277\226\202\174\156\324\303\075\357\236\200\156\273\051
+\264\230\172\261\073\124\353\071\027\107\176\032\216\013\374\037
+\061\131\061\004\262\316\027\363\054\307\142\066\125\342\042\330
+\211\125\264\230\110\252\144\372\326\034\066\330\104\170\132\132
+\043\072\127\227\365\172\060\117\256\237\152\114\113\053\216\240
+\003\343\076\340\251\324\322\173\322\263\250\342\162\074\255\236
+\377\200\131\344\233\105\264\366\073\260\315\071\031\230\062\345
+\352\041\141\220\344\061\041\216\064\261\367\057\065\112\205\020
+\332\347\212\067\041\276\131\143\340\362\205\210\061\123\324\124
+\024\205\160\171\364\056\006\167\047\165\057\037\270\212\371\376
+\305\272\330\066\344\203\354\347\145\267\277\143\132\363\106\257
+\201\224\067\324\101\214\326\043\326\036\317\365\150\033\104\143
+\242\132\272\247\065\131\241\345\160\005\233\016\043\127\231\224
+\012\155\272\071\143\050\206\222\363\030\204\330\373\321\317\005
+\126\144\127
+END
+
+# Trust for Certificate "Deutsche Telekom Root CA 2"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Deutsche Telekom Root CA 2"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\205\244\010\300\234\031\076\135\121\130\175\315\326\023\060\375
+\214\336\067\277
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\164\001\112\221\261\010\304\130\316\107\315\360\335\021\123\010
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\161\061\013\060\011\006\003\125\004\006\023\002\104\105\061
+\034\060\032\006\003\125\004\012\023\023\104\145\165\164\163\143
+\150\145\040\124\145\154\145\153\157\155\040\101\107\061\037\060
+\035\006\003\125\004\013\023\026\124\055\124\145\154\145\123\145
+\143\040\124\162\165\163\164\040\103\145\156\164\145\162\061\043
+\060\041\006\003\125\004\003\023\032\104\145\165\164\163\143\150
+\145\040\124\145\154\145\153\157\155\040\122\157\157\164\040\103
+\101\040\062
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\001\046
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ComSign CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ComSign CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\064\061\023\060\021\006\003\125\004\003\023\012\103\157\155
+\123\151\147\156\040\103\101\061\020\060\016\006\003\125\004\012
+\023\007\103\157\155\123\151\147\156\061\013\060\011\006\003\125
+\004\006\023\002\111\114
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\064\061\023\060\021\006\003\125\004\003\023\012\103\157\155
+\123\151\147\156\040\103\101\061\020\060\016\006\003\125\004\012
+\023\007\103\157\155\123\151\147\156\061\013\060\011\006\003\125
+\004\006\023\002\111\114
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\024\023\226\203\024\125\214\352\173\143\345\374\064\207
+\167\104
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\223\060\202\002\173\240\003\002\001\002\002\020\024
+\023\226\203\024\125\214\352\173\143\345\374\064\207\167\104\060
+\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\064
+\061\023\060\021\006\003\125\004\003\023\012\103\157\155\123\151
+\147\156\040\103\101\061\020\060\016\006\003\125\004\012\023\007
+\103\157\155\123\151\147\156\061\013\060\011\006\003\125\004\006
+\023\002\111\114\060\036\027\015\060\064\060\063\062\064\061\061
+\063\062\061\070\132\027\015\062\071\060\063\061\071\061\065\060
+\062\061\070\132\060\064\061\023\060\021\006\003\125\004\003\023
+\012\103\157\155\123\151\147\156\040\103\101\061\020\060\016\006
+\003\125\004\012\023\007\103\157\155\123\151\147\156\061\013\060
+\011\006\003\125\004\006\023\002\111\114\060\202\001\042\060\015
+\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001
+\017\000\060\202\001\012\002\202\001\001\000\360\344\124\151\053
+\323\307\217\152\104\344\176\130\047\370\013\320\344\224\022\212
+\361\033\070\070\057\037\061\234\006\324\054\247\336\013\052\256
+\032\240\343\236\152\277\237\074\307\156\242\371\213\144\154\072
+\255\205\125\121\124\245\070\125\270\253\203\004\362\077\144\066
+\367\300\215\103\103\152\146\321\367\027\052\325\357\066\372\060
+\020\102\327\123\315\371\372\063\163\114\263\351\204\040\212\326
+\101\047\065\344\070\372\224\233\270\172\344\171\037\063\373\033
+\330\041\011\050\174\115\030\151\136\144\212\172\031\223\312\176
+\354\363\162\347\067\007\130\131\050\254\102\371\305\377\315\077
+\347\245\372\070\261\320\014\307\331\122\032\123\326\201\314\102
+\172\065\133\355\113\072\172\366\265\216\314\377\017\174\344\140
+\066\207\057\255\360\241\045\175\377\322\113\021\210\160\124\246
+\101\250\147\123\122\102\136\344\064\236\344\276\243\354\252\142
+\135\335\303\114\246\202\101\344\063\013\254\311\063\017\144\202
+\127\052\375\014\255\066\341\014\256\113\305\357\073\231\331\043
+\263\133\135\264\127\354\164\160\014\052\117\002\003\001\000\001
+\243\201\240\060\201\235\060\014\006\003\125\035\023\004\005\060
+\003\001\001\377\060\075\006\003\125\035\037\004\066\060\064\060
+\062\240\060\240\056\206\054\150\164\164\160\072\057\057\146\145
+\144\151\162\056\143\157\155\163\151\147\156\056\143\157\056\151
+\154\057\143\162\154\057\103\157\155\123\151\147\156\103\101\056
+\143\162\154\060\016\006\003\125\035\017\001\001\377\004\004\003
+\002\001\206\060\037\006\003\125\035\043\004\030\060\026\200\024
+\113\001\233\076\126\032\145\066\166\313\173\227\252\222\005\356
+\062\347\050\061\060\035\006\003\125\035\016\004\026\004\024\113
+\001\233\076\126\032\145\066\166\313\173\227\252\222\005\356\062
+\347\050\061\060\015\006\011\052\206\110\206\367\015\001\001\005
+\005\000\003\202\001\001\000\320\331\245\176\376\051\140\105\235
+\176\203\317\156\274\107\156\365\032\236\124\166\102\161\264\074
+\130\077\055\100\045\102\366\201\234\361\211\020\310\016\252\170
+\117\070\011\127\260\074\300\010\374\065\216\361\110\121\215\014
+\161\164\272\204\304\327\162\233\204\174\070\116\144\006\047\052
+\341\247\265\354\010\231\264\012\015\324\205\163\310\022\341\065
+\355\361\005\061\035\163\231\014\353\226\312\335\323\346\205\252
+\360\212\373\165\301\362\011\074\145\145\144\363\114\330\255\313
+\210\151\363\344\203\267\014\275\027\132\226\027\312\133\377\255
+\273\034\351\055\204\200\330\041\276\205\122\331\324\164\271\151
+\205\272\115\355\050\062\353\371\141\112\344\304\066\036\031\334
+\157\204\021\037\225\365\203\050\030\250\063\222\103\047\335\135
+\023\004\105\117\207\325\106\315\075\250\272\360\363\270\126\044
+\105\353\067\307\341\166\117\162\071\030\337\176\164\162\307\163
+\055\071\352\140\346\255\021\242\126\207\173\303\150\232\376\370
+\214\160\250\337\145\062\364\244\100\214\241\302\104\003\016\224
+\000\147\240\161\000\202\110
+END
+
+# Trust for Certificate "ComSign CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ComSign CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\341\244\133\024\032\041\332\032\171\364\032\102\251\141\326\151
+\315\006\064\301
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\315\364\071\363\265\030\120\327\076\244\305\221\240\076\041\113
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\064\061\023\060\021\006\003\125\004\003\023\012\103\157\155
+\123\151\147\156\040\103\101\061\020\060\016\006\003\125\004\012
+\023\007\103\157\155\123\151\147\156\061\013\060\011\006\003\125
+\004\006\023\002\111\114
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\020\024\023\226\203\024\125\214\352\173\143\345\374\064\207
+\167\104
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "ComSign Secured CA"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ComSign Secured CA"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\074\061\033\060\031\006\003\125\004\003\023\022\103\157\155
+\123\151\147\156\040\123\145\143\165\162\145\144\040\103\101\061
+\020\060\016\006\003\125\004\012\023\007\103\157\155\123\151\147
+\156\061\013\060\011\006\003\125\004\006\023\002\111\114
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\074\061\033\060\031\006\003\125\004\003\023\022\103\157\155
+\123\151\147\156\040\123\145\143\165\162\145\144\040\103\101\061
+\020\060\016\006\003\125\004\012\023\007\103\157\155\123\151\147
+\156\061\013\060\011\006\003\125\004\006\023\002\111\114
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\307\050\107\011\263\270\154\105\214\035\372\044\365
+\066\116\351
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\253\060\202\002\223\240\003\002\001\002\002\021\000
+\307\050\107\011\263\270\154\105\214\035\372\044\365\066\116\351
+\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060
+\074\061\033\060\031\006\003\125\004\003\023\022\103\157\155\123
+\151\147\156\040\123\145\143\165\162\145\144\040\103\101\061\020
+\060\016\006\003\125\004\012\023\007\103\157\155\123\151\147\156
+\061\013\060\011\006\003\125\004\006\023\002\111\114\060\036\027
+\015\060\064\060\063\062\064\061\061\063\067\062\060\132\027\015
+\062\071\060\063\061\066\061\065\060\064\065\066\132\060\074\061
+\033\060\031\006\003\125\004\003\023\022\103\157\155\123\151\147
+\156\040\123\145\143\165\162\145\144\040\103\101\061\020\060\016
+\006\003\125\004\012\023\007\103\157\155\123\151\147\156\061\013
+\060\011\006\003\125\004\006\023\002\111\114\060\202\001\042\060
+\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202
+\001\017\000\060\202\001\012\002\202\001\001\000\306\265\150\137
+\035\224\025\303\244\010\125\055\343\240\127\172\357\351\164\052
+\273\271\174\127\111\032\021\136\117\051\207\014\110\326\152\347
+\217\324\176\127\044\271\006\211\344\034\074\352\254\343\332\041
+\200\163\041\012\357\171\230\154\037\010\377\241\120\175\362\230
+\033\311\124\157\076\245\050\354\041\004\017\105\273\007\075\241
+\300\372\052\230\035\116\006\223\373\365\210\073\253\137\313\026
+\277\346\363\236\112\207\355\031\352\302\237\103\344\361\201\245
+\177\020\117\076\321\112\142\255\123\033\313\203\377\007\145\245
+\222\055\146\251\133\270\132\364\035\264\041\221\112\027\173\236
+\062\376\126\044\071\262\124\204\103\365\204\302\330\274\101\220
+\314\235\326\150\332\351\202\120\251\073\150\317\265\135\002\224
+\140\026\261\103\331\103\135\335\135\207\156\352\273\263\311\153
+\366\003\224\011\160\336\026\021\172\053\350\166\217\111\020\230
+\167\271\143\134\213\063\227\165\366\013\214\262\253\133\336\164
+\040\045\077\343\363\021\371\207\150\206\065\161\303\035\214\055
+\353\345\032\254\017\163\325\202\131\100\200\323\002\003\001\000
+\001\243\201\247\060\201\244\060\014\006\003\125\035\023\004\005
+\060\003\001\001\377\060\104\006\003\125\035\037\004\075\060\073
+\060\071\240\067\240\065\206\063\150\164\164\160\072\057\057\146
+\145\144\151\162\056\143\157\155\163\151\147\156\056\143\157\056
+\151\154\057\143\162\154\057\103\157\155\123\151\147\156\123\145
+\143\165\162\145\144\103\101\056\143\162\154\060\016\006\003\125
+\035\017\001\001\377\004\004\003\002\001\206\060\037\006\003\125
+\035\043\004\030\060\026\200\024\301\113\355\160\266\367\076\174
+\000\073\000\217\307\076\016\105\237\036\135\354\060\035\006\003
+\125\035\016\004\026\004\024\301\113\355\160\266\367\076\174\000
+\073\000\217\307\076\016\105\237\036\135\354\060\015\006\011\052
+\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\026
+\317\356\222\023\120\253\173\024\236\063\266\102\040\152\324\025
+\275\011\253\374\162\350\357\107\172\220\254\121\301\144\116\351
+\210\275\103\105\201\343\146\043\077\022\206\115\031\344\005\260
+\346\067\302\215\332\006\050\311\017\211\244\123\251\165\077\260
+\226\373\253\114\063\125\371\170\046\106\157\033\066\230\373\102
+\166\301\202\271\216\336\373\105\371\143\033\142\073\071\006\312
+\167\172\250\074\011\317\154\066\075\017\012\105\113\151\026\032
+\105\175\063\003\145\371\122\161\220\046\225\254\114\014\365\213
+\223\077\314\165\164\205\230\272\377\142\172\115\037\211\376\256
+\275\224\000\231\277\021\245\334\340\171\305\026\013\175\002\141
+\035\352\205\371\002\025\117\347\132\211\116\024\157\343\067\113
+\205\365\301\074\141\340\375\005\101\262\222\177\303\035\240\320
+\256\122\144\140\153\030\306\046\234\330\365\144\344\066\032\142
+\237\212\017\076\377\155\116\031\126\116\040\221\154\237\064\063
+\072\064\127\120\072\157\201\136\006\306\365\076\174\116\216\053
+\316\145\006\056\135\322\052\123\164\136\323\156\047\236\217
+END
+
+# Trust for Certificate "ComSign Secured CA"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "ComSign Secured CA"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\371\315\016\054\332\166\044\301\217\275\360\360\253\266\105\270
+\367\376\325\172
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\100\001\045\006\215\041\103\152\016\103\000\234\347\103\363\325
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\074\061\033\060\031\006\003\125\004\003\023\022\103\157\155
+\123\151\147\156\040\123\145\143\165\162\145\144\040\103\101\061
+\020\060\016\006\003\125\004\012\023\007\103\157\155\123\151\147
+\156\061\013\060\011\006\003\125\004\006\023\002\111\114
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\021\000\307\050\107\011\263\270\154\105\214\035\372\044\365
+\066\116\351
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "Cybertrust Global Root"
+#
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Cybertrust Global Root"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\073\061\030\060\026\006\003\125\004\012\023\017\103\171\142
+\145\162\164\162\165\163\164\054\040\111\156\143\061\037\060\035
+\006\003\125\004\003\023\026\103\171\142\145\162\164\162\165\163
+\164\040\107\154\157\142\141\154\040\122\157\157\164
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\073\061\030\060\026\006\003\125\004\012\023\017\103\171\142
+\145\162\164\162\165\163\164\054\040\111\156\143\061\037\060\035
+\006\003\125\004\003\023\026\103\171\142\145\162\164\162\165\163
+\164\040\107\154\157\142\141\154\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\017\205\252\055\110
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\003\241\060\202\002\211\240\003\002\001\002\002\013\004
+\000\000\000\000\001\017\205\252\055\110\060\015\006\011\052\206
+\110\206\367\015\001\001\005\005\000\060\073\061\030\060\026\006
+\003\125\004\012\023\017\103\171\142\145\162\164\162\165\163\164
+\054\040\111\156\143\061\037\060\035\006\003\125\004\003\023\026
+\103\171\142\145\162\164\162\165\163\164\040\107\154\157\142\141
+\154\040\122\157\157\164\060\036\027\015\060\066\061\062\061\065
+\060\070\060\060\060\060\132\027\015\062\061\061\062\061\065\060
+\070\060\060\060\060\132\060\073\061\030\060\026\006\003\125\004
+\012\023\017\103\171\142\145\162\164\162\165\163\164\054\040\111
+\156\143\061\037\060\035\006\003\125\004\003\023\026\103\171\142
+\145\162\164\162\165\163\164\040\107\154\157\142\141\154\040\122
+\157\157\164\060\202\001\042\060\015\006\011\052\206\110\206\367
+\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002
+\202\001\001\000\370\310\274\275\024\120\146\023\377\360\323\171
+\354\043\362\267\032\307\216\205\361\022\163\246\031\252\020\333
+\234\242\145\164\132\167\076\121\175\126\366\334\043\266\324\355
+\137\130\261\067\115\325\111\016\156\365\152\207\326\322\214\322
+\047\306\342\377\066\237\230\145\240\023\116\306\052\144\233\325
+\220\022\317\024\006\364\073\343\324\050\276\350\016\370\253\116
+\110\224\155\216\225\061\020\134\355\242\055\275\325\072\155\262
+\034\273\140\300\106\113\001\365\111\256\176\106\212\320\164\215
+\241\014\002\316\356\374\347\217\270\153\146\363\177\104\000\277
+\146\045\024\053\335\020\060\035\007\226\077\115\366\153\270\217
+\267\173\014\245\070\353\336\107\333\325\135\071\374\210\247\363
+\327\052\164\361\350\132\242\073\237\120\272\246\214\105\065\302
+\120\145\225\334\143\202\357\335\277\167\115\234\142\311\143\163
+\026\320\051\017\111\251\110\360\263\252\267\154\305\247\060\071
+\100\135\256\304\342\135\046\123\360\316\034\043\010\141\250\224
+\031\272\004\142\100\354\037\070\160\167\022\006\161\247\060\030
+\135\045\047\245\002\003\001\000\001\243\201\245\060\201\242\060
+\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060
+\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377
+\060\035\006\003\125\035\016\004\026\004\024\266\010\173\015\172
+\314\254\040\114\206\126\062\136\317\253\156\205\055\160\127\060
+\077\006\003\125\035\037\004\070\060\066\060\064\240\062\240\060
+\206\056\150\164\164\160\072\057\057\167\167\167\062\056\160\165
+\142\154\151\143\055\164\162\165\163\164\056\143\157\155\057\143
+\162\154\057\143\164\057\143\164\162\157\157\164\056\143\162\154
+\060\037\006\003\125\035\043\004\030\060\026\200\024\266\010\173
+\015\172\314\254\040\114\206\126\062\136\317\253\156\205\055\160
+\127\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000
+\003\202\001\001\000\126\357\012\043\240\124\116\225\227\311\370
+\211\332\105\301\324\243\000\045\364\037\023\253\267\243\205\130
+\151\302\060\255\330\025\212\055\343\311\315\201\132\370\163\043
+\132\247\174\005\363\375\042\073\016\321\006\304\333\066\114\163
+\004\216\345\260\042\344\305\363\056\245\331\043\343\270\116\112
+\040\247\156\002\044\237\042\140\147\173\213\035\162\011\305\061
+\134\351\171\237\200\107\075\255\241\013\007\024\075\107\377\003
+\151\032\014\013\104\347\143\045\247\177\262\311\270\166\204\355
+\043\366\175\007\253\105\176\323\337\263\277\351\212\266\315\250
+\242\147\053\122\325\267\145\360\071\114\143\240\221\171\223\122
+\017\124\335\203\273\237\321\217\247\123\163\303\313\377\060\354
+\174\004\270\330\104\037\223\137\161\011\042\267\156\076\352\034
+\003\116\235\032\040\141\373\201\067\354\136\374\012\105\253\327
+\347\027\125\320\240\352\140\233\246\366\343\214\133\051\302\006
+\140\024\235\055\227\114\251\223\025\235\141\304\001\137\110\326
+\130\275\126\061\022\116\021\310\041\340\263\021\221\145\333\264
+\246\210\070\316\125
+END
+
+# Trust for Certificate "Cybertrust Global Root"
+CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "Cybertrust Global Root"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\137\103\345\261\277\370\170\214\254\034\307\312\112\232\306\042
+\053\314\064\306
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\162\344\112\207\343\151\100\200\167\352\274\343\364\377\360\341
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\073\061\030\060\026\006\003\125\004\012\023\017\103\171\142
+\145\162\164\162\165\163\164\054\040\111\156\143\061\037\060\035
+\006\003\125\004\003\023\026\103\171\142\145\162\164\162\165\163
+\164\040\107\154\157\142\141\154\040\122\157\157\164
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\013\004\000\000\000\000\001\017\205\252\055\110
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUST_UNKNOWN
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
diff --git a/.mutt/certs/certificates b/.mutt/certs/certificates
new file mode 100644
index 0000000..ea8dd5d
--- /dev/null
+++ b/.mutt/certs/certificates
@@ -0,0 +1,41 @@
+#H localhost 51FD 224B 0E9C DF59 0033 6809 2C7C F688
+-----BEGIN CERTIFICATE-----
+MIIBmTCCAQICCQD1NfXi+5HEtTANBgkqhkiG9w0BAQUFADARMQ8wDQYDVQQDEwZs
+YW1iZGEwHhcNMDkwNjAxMTExMjA0WhcNMTkwNTMwMTExMjA0WjARMQ8wDQYDVQQD
+EwZsYW1iZGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPBnAQE2dnXr0I13
+cpjv/WqJgkJqdlxt02DfjkPe85uGyJQZKf5nUVZF2t6U2jrdEY16i26hdK8PjfZA
+HMrKfdQGmUgSV1BdGz5koqnhTAUmshnyZ1aYQ+I19LgM8MP7U8YjvAnb94SvN9Qt
+J8hfXawURqsDzpcbJviwFikgPxd/AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAZ9xe
+vKVkBcdnKHrD8zXqOL15uNIDdq3JgNVg0rKZu+zbyH9ywgqr38JcEg56P9hg/Vgm
+m7QrA62AF4q8S0N/vEAMpbqwiVQOUriLATHiw8+/zBG+ZYHMRtPDsZFblgDj26+e
+pqwLAT+/0JPFsBmazWzZLfCrH/2JQgkh+TM8vyE=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIE8jCCA9qgAwIBAgIEOGPp/DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
+RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
+bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
+IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0wOTEyMTAyMDQzNTRaFw0xOTEy
+MTAyMTEzNTRaMIGxMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5j
+LjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L3JwYSBpcyBpbmNvcnBvcmF0ZWQg
+YnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwOSBFbnRydXN0LCBJbmMuMS4w
+LAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFDMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6MtPJ7eBdoTwhGNnY7jf8dL
+flqfs/9iq3PIKGu6EGSChxPNVxj/KM7A5g4GkVApg9Hywyrb2NtOBMwA64u2lty8
+qvpSdwTB2xnkrpz9PIsD7028GgNl+cGxP3KG8jiqGa4QiHgo2nXDPQKCApy5wWV3
+diRMmPdtMTj72/7bNwJ2oRiXpszeIAlJNiRpQvbkN2LxWW2pPO00nKOO29w61/cK
+b+8u2NWTWnrtCElo4kHjWpDBhlX8UUOd4LLEZ7TLMjEl8FSfS9Fv29Td/K9ebHiQ
+ld7KOki5eTybGdZ1BaD5iNfB6KUJ5BoV3IcjqrJ1jGMlh9j4PabCzGb/pWZoVQID
+AQABo4IBCzCCAQcwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wMwYI
+KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l
+dDAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmVudHJ1c3QubmV0LzIwNDhj
+YS5jcmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93
+d3cuZW50cnVzdC5uZXQvcnBhMB0GA1UdDgQWBBQe8auJBvhJDwEzd+4Ueu4ZfJMo
+TTAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDANBgkqhkiG9w0BAQUF
+AAOCAQEAB/ZfgoR/gEDHkDRGQiQDzi+ruoOeJXMN7awFacaH7aNc8lfBsUl2mk3y
+P93kDv4LPrmY2TKVHTL0Ae6cyMjlP+BTdmL83attPZSQ8sCzPJgnNl4olyL8G0DT
+Kw2ttVdt3w/jS+9zAhBl+hvQrDHV4w/oujIwg+5K0L/fIpB6vuw6G8RJBB3xroB3
+PEII26c7KKaAAQPmOaPr34BZG/MsvtxyRHmgbAelbU1EjkJoypR8Lja6hZ7NqsRe
+PFS+/i/qaZ0cHimbltjI/lGQ8SSmkAaz8Cmi/3gud1xFIdlEADHzvjJP9QoyDfz8
+uhZ2VrLWSJLyi6Y+t6xcaeoLP2ZFuQ==
+-----END CERTIFICATE-----
diff --git a/.mutt/certs/f73e89fd.0 b/.mutt/certs/f73e89fd.0
new file mode 120000
index 0000000..68a3447
--- /dev/null
+++ b/.mutt/certs/f73e89fd.0
@@ -0,0 +1 @@
+ca-bundle.crt \ No newline at end of file
diff --git a/.mutt/certs/get_gmail_cert b/.mutt/certs/get_gmail_cert
new file mode 100644
index 0000000..4ed4d86
--- /dev/null
+++ b/.mutt/certs/get_gmail_cert
@@ -0,0 +1 @@
+openssl s_client -connect gmail.com:443 -verify 3 -CAfile Equifax_Secure_CA.pem -state
diff --git a/.mutt/certs/mk-ca-bundle.pl b/.mutt/certs/mk-ca-bundle.pl
new file mode 100644
index 0000000..6850236
--- /dev/null
+++ b/.mutt/certs/mk-ca-bundle.pl
@@ -0,0 +1,187 @@
+#!/usr/bin/perl -w
+# ***************************************************************************
+# * _ _ ____ _
+# * Project ___| | | | _ \| |
+# * / __| | | | |_) | |
+# * | (__| |_| | _ <| |___
+# * \___|\___/|_| \_\_____|
+# *
+# * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+# *
+# * This software is licensed as described in the file COPYING, which
+# * you should have received as part of this distribution. The terms
+# * are also available at http://curl.haxx.se/docs/copyright.html.
+# *
+# * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# * copies of the Software, and permit persons to whom the Software is
+# * furnished to do so, under the terms of the COPYING file.
+# *
+# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# * KIND, either express or implied.
+# *
+# * $Id: mk-ca-bundle.pl,v 1.10 2008/02/15 00:41:54 gknauf Exp $
+# ***************************************************************************
+# This Perl script creates a fresh ca-bundle.crt file for use with libcurl.
+# It downloads certdata.txt from Mozilla's source tree (see URL below),
+# then parses certdata.txt and extracts CA Root Certificates into PEM format.
+# These are then processed with the OpenSSL commandline tool to produce the
+# final ca-bundle.crt file.
+# The script is based on the parse-certs script written by Roland Krikava.
+# This Perl script works on almost any platform since its only external
+# dependency is the OpenSSL commandline tool for optional text listing.
+# Hacked by Guenter Knauf.
+#
+use Getopt::Std;
+use MIME::Base64;
+use LWP::UserAgent;
+use strict;
+use vars qw($opt_b $opt_h $opt_i $opt_l $opt_n $opt_q $opt_t $opt_u $opt_v);
+
+my $url = 'http://lxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1';
+# If the OpenSSL commandline is not in search path you can configure it here!
+my $openssl = 'openssl';
+
+my $version = $1 if ('$Revision: 1.10 $' =~ /\s(\d+\.\d+)\s/);
+
+getopts('bhilnqtuv');
+
+if ($opt_i) {
+ print ("=" x 78 . "\n");
+ print "Script Version : $version\n";
+ print "Perl Version : $]\n";
+ print "Operating System Name : $^O\n";
+ print "Getopt::Std.pm Version : ${Getopt::Std::VERSION}\n";
+ print "MIME::Base64.pm Version : ${MIME::Base64::VERSION}\n";
+ print "LWP::UserAgent.pm Version : ${LWP::UserAgent::VERSION}\n";
+ print "LWP.pm Version : ${LWP::VERSION}\n";
+ print ("=" x 78 . "\n");
+}
+
+$0 =~ s/\\/\//g;
+$0 = substr($0, rindex($0, '/') + 1);
+if ($opt_h) {
+ printf("Usage:\t%s [-b] [-i] [-l] [-n] [-q] [-t] [-u] [-v] [<outputfile>]\n", $0);
+ print "\t-b\tbackup an existing version of ca-bundle.crt\n";
+ print "\t-i\tprint version info about used modules\n";
+ print "\t-l\tprint license info about certdata.txt\n";
+ print "\t-n\tno download of certdata.txt (to use existing)\n";
+ print "\t-q\tbe really quiet (no progress output at all)\n";
+ print "\t-t\tinclude plain text listing of certificates\n";
+ print "\t-u\tunlink (remove) certdata.txt after processing\n";
+ print "\t-v\tbe verbose and print out processed CAs\n";
+ exit;
+}
+
+my $crt = $ARGV[0] || 'ca-bundle.crt';
+my $txt = substr($url, rindex($url, '/') + 1);
+$txt =~ s/\?.*//;
+
+if (!$opt_n || !-e $txt) {
+ print "Downloading '$txt' ...\n" if (!$opt_q);
+ my $ua = new LWP::UserAgent(agent => "$0/$version");
+ my $req = new HTTP::Request('GET', $url);
+ my $res = $ua->request($req);
+ if ($res->is_success) {
+ open(TXT,">$txt") or die "Couldn't open $txt: $!";
+ print TXT $res->content . "\n";
+ close(TXT) or die "Couldn't close $txt: $!";
+ } else {
+ die $res->status_line;
+ }
+}
+
+if ($opt_b && -e $crt) {
+ my $bk = 1;
+ while (-e "$crt.~${bk}~") {
+ $bk++;
+ }
+ rename $crt, "$crt.~${bk}~";
+}
+
+my $format = $opt_t ? "plain text and " : "";
+my $currentdate = scalar gmtime() . " UTC";
+open(CRT,">$crt") or die "Couldn't open $crt: $!";
+print CRT <<EOT;
+##
+## $crt -- Bundle of CA Root Certificates
+##
+## Converted at: ${currentdate}
+##
+## This is a bundle of X.509 certificates of public Certificate Authorities
+## (CA). These were automatically extracted from Mozilla's root certificates
+## file (certdata.txt). This file can be found in the mozilla source tree:
+## '/mozilla/security/nss/lib/ckfw/builtins/certdata.txt'
+##
+## It contains the certificates in ${format}PEM format and therefore
+## can be directly used with curl / libcurl / php_curl, or with
+## an Apache+mod_ssl webserver for SSL client authentication.
+## Just configure this file as the SSLCACertificateFile.
+##
+
+EOT
+
+close(CRT) or die "Couldn't close $crt: $!";
+
+print "Processing '$txt' ...\n" if (!$opt_q);
+my $caname;
+my $certnum = 0;
+open(TXT,"$txt") or die "Couldn't open $txt: $!";
+while (<TXT>) {
+ if (/\*\*\*\*\* BEGIN LICENSE BLOCK \*\*\*\*\*/) {
+ open(CRT, ">>$crt") or die "Couldn't open $crt: $!";
+ print CRT;
+ print if ($opt_l);
+ while (<TXT>) {
+ print CRT;
+ print if ($opt_l);
+ last if (/\*\*\*\*\* END LICENSE BLOCK \*\*\*\*\*/);
+ }
+ close(CRT) or die "Couldn't close $crt: $!";
+ }
+ next if /^#|^\s*$/;
+ chomp;
+ if (/^CVS_ID\s+\"(.*)\"/) {
+ open(CRT, ">>$crt") or die "Couldn't open $crt: $!";
+ print CRT "# $1\n";
+ close(CRT) or die "Couldn't close $crt: $!";
+ }
+ if (/^CKA_LABEL\s+[A-Z0-9]+\s+\"(.*)\"/) {
+ $caname = $1;
+ }
+ if (/^CKA_VALUE MULTILINE_OCTAL/) {
+ my $data;
+ while (<TXT>) {
+ last if (/^END/);
+ chomp;
+ my @octets = split(/\\/);
+ shift @octets;
+ for (@octets) {
+ $data .= chr(oct);
+ }
+ }
+ my $pem = "-----BEGIN CERTIFICATE-----\n"
+ . MIME::Base64::encode($data)
+ . "-----END CERTIFICATE-----\n";
+ open(CRT, ">>$crt") or die "Couldn't open $crt: $!";
+ print CRT "\n$caname\n";
+ print CRT ("=" x length($caname) . "\n");
+ if (!$opt_t) {
+ print CRT $pem;
+ }
+ close(CRT) or die "Couldn't close $crt: $!";
+ if ($opt_t) {
+ open(TMP, "|$openssl x509 -md5 -fingerprint -text -inform PEM >> $crt") or die "Couldn't open openssl pipe: $!";
+ print TMP $pem;
+ close(TMP) or die "Couldn't close openssl pipe: $!";
+ }
+ print "Parsing: $caname\n" if ($opt_v);
+ $certnum ++;
+ }
+}
+close(TXT) or die "Couldn't close $txt: $!";
+unlink $txt if ($opt_u);
+print "Done ($certnum CA certs processed).\n" if (!$opt_q);
+
+exit;
+
+
diff --git a/.mutt/color.rc b/.mutt/color.rc
new file mode 100644
index 0000000..59ef101
--- /dev/null
+++ b/.mutt/color.rc
@@ -0,0 +1,127 @@
+# Score coloring
+# We put this first since we want it overridden if required by the colors
+# below.
+
+color index brightwhite default "~n -100"
+color index yellow default "~n -25"
+color index magenta default "~n -10"
+color index brightblack default "~n -5"
+
+# Message colors
+color attachment brightblack default
+color error brightred default
+color hdrdefault brightyellow default
+color indicator brightyellow red
+color markers brightcyan default
+color message brightcyan default
+color normal default default
+color quoted magenta default
+color search default green
+color signature red default
+color status white blue
+color tilde magenta default
+color tree magenta default
+color sidebar_new yellow default
+
+# Pretty Colors
+color status white blue
+color index green default ~N # new
+color index cyan default ~O # old
+color index red default ~D # deleted
+color index brightmagenta default ~T # tagged
+color index brightyellow default ~F # flagged
+color header green default "^Subject:"
+color header yellow default "^Date:"
+color header yellow default "^To:"
+color header yellow default "^Cc:"
+color header yellow default "^Bcc:"
+color header yellow default "^From:"
+color header red default "^X-.*:"
+color header brightwhite default '^X-Label:'
+
+# LP colors
+color index red blue "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Wishlist\\;"
+color index red white "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Undecided\\;"
+color index red black "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Low\\;"
+color index red green "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Medium\\;"
+color index red brightyellow "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=High\\;"
+color index red brightred "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Critical\\;"
+color index red white "~hX-Launchpad-Bug:.*status\\=Incomplete\\;.*importance\\=Unknown\\;"
+
+color index yellow blue "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Wishlist\\;"
+color index yellow white "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Undecided\\;"
+color index yellow black "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Low\\;"
+color index yellow green "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Medium\\;"
+color index yellow brightyellow "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=High\\;"
+color index yellow brightred "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Critical\\;"
+color index yellow white "~hX-Launchpad-Bug:.*status\\=Triaged\\;.*importance\\=Unknown\\;"
+
+color index brightblue blue "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Wishlist\\;"
+color index brightblue white "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Undecided\\;"
+color index brightblue black "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Low\\;"
+color index brightblue green "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Medium\\;"
+color index brightblue brightyellow "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=High\\;"
+color index brightblue brightred "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Critical\\;"
+color index brightblue white "~hX-Launchpad-Bug:.*status\\=Confirmed\\;.*importance\\=Unknown\\;"
+
+color index brightgreen blue "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Wishlist\\;"
+color index brightgreen white "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Undecided\\;"
+color index brightgreen black "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Low\\;"
+color index brightgreen green "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Medium\\;"
+color index brightgreen brightyellow "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=High\\;"
+color index brightgreen brightred "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Critical\\;"
+color index brightgreen white "~hX-Launchpad-Bug:.*status\\=Fix\\ Released\\;.*importance\\=Unknown\\;"
+
+color index green blue "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Wishlist\\;"
+color index green white "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Undecided\\;"
+color index green black "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Low\\;"
+color index green black "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Medium\\;"
+color index green brightyellow "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=High\\;"
+color index green brightred "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Critical\\;"
+color index green white "~hX-Launchpad-Bug:.*status\\=Fix\\ Commited\\;.*importance\\=Unknown\\;"
+
+color index cyan blue "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Wishlist\\;"
+color index cyan white "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Undecided\\;"
+color index cyan black "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Low\\;"
+color index cyan green "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Medium\\;"
+color index cyan brightyellow "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=High\\;"
+color index cyan brightred "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Critical\\;"
+color index cyan white "~hX-Launchpad-Bug:.*status\\=In\\ Progress\\;.*importance\\=Unknown\\;"
+
+
+color index default blue "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Wishlist\\;"
+color index brightwhite white "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Undecided\\;"
+color index default black "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Low\\;"
+color index default green "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Medium\\;"
+color index default brightyellow "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=High\\;"
+color index default brightred "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Critical\\;"
+color index brightwhite white "~hX-Launchpad-Bug:.*status\\=Won\'t\\ Fix\\;.*importance\\=Unknown\\;"
+
+color index default blue "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Wishlist\\;"
+color index brightwhite white "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Undecided\\;"
+color index default black "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Low\\;"
+color index default green "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Medium\\;"
+color index default brightyellow "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=High\\;"
+color index default brightred "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Critical\\;"
+color index brightwhite white "~hX-Launchpad-Bug:.*status\\=Invalid\\;.*importance\\=Unknown\\;"
+
+
+color index yellow default "~hX-Launchpad-Bug:.*status\\=New\\;"
+color index magenta default "~b\This\\ bug\\ has\\ been\\ marked\\ a\\ duplicate\\ of\\ bug"
+
+# Various smilies and the like
+color body brightwhite default "<[Gg]>" # <g>
+color body brightwhite default "<[Bb][Gg]>" # <bg>
+color body brightwhite default " [;:]-*[})>{(<|]" # :-) etc...
+# *bold*
+color body brightblue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+# _underline_
+color body brightblue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/ (Sometimes gets directory names)
+color body brightblue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Border lines.
+color body blue default "( *[-+=#*~_]){6,}"
diff --git a/.mutt/mailboxes.rc b/.mutt/mailboxes.rc
new file mode 100644
index 0000000..a962738
--- /dev/null
+++ b/.mutt/mailboxes.rc
@@ -0,0 +1 @@
+mailboxes "+ACTION" "+Bagpipes" "+CCF" "+Debian" "+Debian.archive" "+Debian.dBugs" "+Debian.debian-devel-french" "+Debian.debian-mentors" "+Debian.debian-python" "+Debian.debian-qt-kde" "+Debian.mentors" "+Debian.pkg-kde-talk" "+Debian.pkg-multimedia-commits" "+Debian.pkg-multimedia-maintainers" "+Debian.python-apps-team" "+Driving school" "+Family" "+Family.Dad" "+Friends" "+Friends.Emer" "+HOL" "+High IQ" "+IMSLP" "+INBOX" "+Jamendo" "+KDE.kde-francophone" "+KDE Mail" "+KLUG" "+Queens" "+Slashdot" "+UDS" "+Ubuntu" "+Ubuntu.REVU" "+Ubuntu.UDS" "+Ubuntu.archive" "+Ubuntu.kuBugs" "+Ubuntu.kuDevel" "+Ubuntu.kuWebBugs" "+Ubuntu.kuWebmaster" "+Ubuntu.launchpadUsers" "+Ubuntu.uBugs" "+Ubuntu.uCanada" "+Ubuntu.uClassroom" "+Ubuntu.uDevelAnnounce" "+Ubuntu.uDoc" "+Ubuntu.uMisc" "+Ubuntu.uWeb" "+Ubuntu.uWebBugs" "+Ubuntu.uWebML" "+[Google Mail].Bin" "+[Google Mail].Drafts" "+[Google Mail].Sent Mail" "+[Google Mail].Spam" "+[Google Mail].Starred" "+cacert" "+computers" "+fail2ban" "+gppg" "+linkedin" "+logcheck" "+lwn" "+psipog" "+sbuild" "+school"
diff --git a/.mutt/mailinglists.rc b/.mutt/mailinglists.rc
new file mode 100644
index 0000000..2e77b6c
--- /dev/null
+++ b/.mutt/mailinglists.rc
@@ -0,0 +1,63 @@
+lists kubuntu-devel.lists.ubuntu.com
+lists kubuntu-bugs.lists.ubuntu.com
+lists kubuntu-users.lists.ubuntu.com
+lists ubuntu-website.lists.canonical.com
+lists ubuntu-devel-announce.lists.ubuntu.com
+lists launchpad-users.lists.launchpad.net
+lists launchpad-users.lists.canonical.com
+lists ubuntu-ca.lists.ubuntu.com
+lists ubuntu-doc.lists.ubuntu.com
+lists ubuntu-classroom.lists.ubuntu.com
+lists ubuntu.*.lists.ubuntu.com
+lists debian-python.lists.debian.org
+lists debian-qt-kde.lists.debian.org
+lists debian-mentors.lists.debian.org
+lists debian-devel-fr.lists.debian.org
+lists python-apps-team.lists.debian.org
+lists pkg-kde-talk.lists.debian.org
+lists pkg-multimedia-commits.lists.alioth.debian.org
+lists pkg-multimedia-maintainers.lists.alioth.debian.org
+lists kde-francophone.kde.org
+lists oevolve.googlegroups.com
+lists oactivists.googlegroups.com
+lists oproducers.googlegroups.com
+lists ogeeks.googlegroups.com
+
+subscribe kubuntu-devel.lists.ubuntu.com
+alias kubuntu-devel kubuntu-devel@lists.ubuntu.com
+subscribe kubuntu-bugs.lists.ubuntu.com
+alias kubuntu-bugs kubuntu-bugs@lists.ubuntu.com
+subscribe ubuntu-website.lists.canonical.com
+alias ubuntu-website ubuntu-website@lists.canonical.com
+subscribe ubuntu-devel-announce.lists.ubuntu.com
+subscribe launchpad-users.lists.launchpad.net
+subscribe launchpad-users.lists.canonical.com
+alias launchpad-users launchpad-users@lists.launchpad.net
+subscribe ubuntu-ca.lists.ubuntu.com
+alias ubuntu-ca ubuntu-ca@lists.ubuntu.com
+subscribe ubuntu-classroom.lists.ubuntu.com
+subscribe debian-python.lists.debian.org
+alias debian-python debian-python@lists.debian.org
+subscribe debian-qt-kde.lists.debian.org
+alias debian-qt-kde debian-qt-kde@lists.debian.org
+subscribe debian-mentors.lists.debian.org
+alias debian-mentors debian-mentors@lists.debian.org
+subscribe debian-devel-fr.lists.debian.org
+alias debian-devel-fr debian-devel-fr@lists.debian.org
+subscribe python-apps-team.lists.debian.org
+alias python-apps-team python-apps-team@lists.debian.org
+subscribe pkg-kde-talk.lists.debian.org
+alias pkg-kde-talk pkg-kde-talk@lists.debian.org
+subscribe pkg-multimedia-commits.lists.alioth.debian.org
+subscribe pkg-multimedia-maintainers.lists.alioth.debian.org
+alias pkg-multimedia-maintainers pkg-multimedia-maintainers@lists.alioth.debian.org
+subscribe kde-francophone.kde.org
+alias kde-francophone kde-francophone@kde.org
+subscribe oevolve.googlegroups.com
+alias oevolve oevolve@googlegroups.com
+subscribe oactivists.googlegroups.com
+alias oactivists oactivists@googlegroups.com
+subscribe oproducers.googlegroups.com
+alias oproducers oproducers@googlegroups.com
+subscribe ogeeks.googlegroups.com
+alias ogeeks ogeeks@googlegroups.com
diff --git a/.mutt/savehooks.rc b/.mutt/savehooks.rc
new file mode 100644
index 0000000..7356054
--- /dev/null
+++ b/.mutt/savehooks.rc
@@ -0,0 +1,16 @@
+# Friends
+save-hook 8bns@queensu\\.ca =Friends.8bns
+
+# Bagpipes
+save-hook info@brownbagpipesupply\\.com =Bagpipes
+save-hook .*ppbso.* =Bagpipes
+
+# Newsletters
+save-hook vfr-no-reply@aynrand\\.org =VfR
+save-hook '~s "Parallel & Unconventional Computation Group Meeting"' =Queens
+
+# SAIL
+save-hook (ahmed|bram|mei)@cs\\.queensu\\.ca =Queens.SAIL
+
+# Catch-all
+save-hook .*@.*queensu\\.ca =Queens
diff --git a/.mutt/score.rc b/.mutt/score.rc
new file mode 100644
index 0000000..6cdceb4
--- /dev/null
+++ b/.mutt/score.rc
@@ -0,0 +1,24 @@
+uncolor index *
+unscore *
+source ~/.mutt/color.rc
+# Set directly to me
+score "~p" 8
+# from me
+score "~P" 8
+# I replied to
+score "~Q" 10
+# GPG signed
+score "~g" 4
+# GPG encrypted
+score "~G" 4
+# Flagged
+score "~F" 5
+# Known ML
+score "~l" 2
+# Add a point to messages less than 80,000 bytes
+score "~z 0-80000" 1
+# From EG
+score "~f MUTT_20_SCORE" 20
+score "~f MUTT_10_SCORE" 10
+# Unread
+score "~U" 2
diff --git a/.muttrc b/.muttrc
new file mode 100644
index 0000000..ec744b5
--- /dev/null
+++ b/.muttrc
@@ -0,0 +1,150 @@
+set realname = 'Ryan Kavanagh' # default: ''
+set reverse_name
+alternates "ryanakca@gmail\.com|ryanakca@kubuntu\.org|ryanakca@ubuntu\.com|9rak@queensu\.ca|ryan\.kavanagh@queensu\.ca"
+
+set crypt_autosign = yes # default: no
+set crypt_replysign = yes # default: no
+set crypt_replysignencrypted = yes # default: no
+
+set editor="/usr/bin/vim"
+
+set pager_context = 1
+
+set send_charset="utf-8"
+
+set imap_check_subscribed = yes # default: no
+#set imap_list_subscribed = yes # default: no
+
+# Don't continue to next email when reaching end of current
+set pager_stop = yes
+
+set timeout=15
+set mail_check=60
+
+set pgp_decode_command="gpg --no-verbose --batch --output - %f"
+set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
+set pgp_decrypt_command="gpg --no-verbose --batch --output - %f"
+set pgp_sign_command="gpg --no-verbose --batch --output - --armor --detach-sign --textmode %?a?-u %a? %f"
+set pgp_clearsign_command="gpg --no-verbose --batch --output - --armor --textmode --clearsign %?a?-u %a? %f"
+set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x4A11C97A -- -r %r -- %f"
+set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x4A11C97A -- -r %r -- %f"
+set pgp_import_command="gpg --no-verbose --import -v %f"
+set pgp_export_command="gpg --no-verbose --export --armor %r"
+set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
+set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
+set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
+set pgp_autosign=yes
+set pgp_sign_as=0x4A11C97A
+set pgp_replyencrypt=yes
+set pgp_timeout=1800
+set pgp_good_sign="^gpg: Good signature from"
+set pgp_use_gpg_agent = yes
+
+set move = no
+
+set header_cache="~/.mutt/cache/headers"
+set message_cachedir="~/.mutt/cache/bodies"
+
+set edit_headers = yes
+
+#set arrow_cursor
+#noop pager G
+bind index G imap-fetch-mail
+bind index ( next-unread-mailbox
+bind index * next-unread
+
+macro index .n "<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>~R<enter>" "Catchup all new messages"
+
+# This shows up in a nice message box at the top of e-mails for MS Outlook users
+my_hdr X-message-flag: Please do NOT send HTML e-mail or MS Word attachments - use plain text instead
+my_hdr X-GPG-ID: 0x4A11C97A
+my_hdr X-GPG-Fingerprint: 4E46 9519 ED67 7734 268F BD95 8F7B F8FC 4A11 C97A
+
+set sort=threads
+set sort_aux=date
+set move=no
+set mark_old=no
+ignore * # ignore all headers except for ...
+unignore Date: From: To: CC: Bcc: Subject:
+hdr_order Subject: Date: From: To: CC: Bcc:
+# MessageNo Mo Day (To if sent by me, from if sent to me) List [Flags] [Score] Subject
+set index_format="%4C %{%b %d} %-20.20F %-15.15B [%Z] [%-2.2N] %s" # custom index format
+
+set mark_old=yes
+
+set query_command = "abook --mutt-query '%s'"
+macro generic,index,pager \ca "<shell-escape>abook<return>" "launch abook"
+macro index,pager A "<pipe-message>abook --add-email-quiet<return>"
+
+# set up the sidebar, default not visible
+set sidebar_width=30
+set sidebar_visible=yes
+set sidebar_delim=' '
+# which # mailboxes to list in the sidebar
+# mailboxes =inbox =ml
+# color of folders with new mail
+
+# ctrl-n, ctrl-p to select next, prev folder #
+# ctrl-o to open selected folder
+bind index,pager \CP sidebar-prev
+bind index,pager \CN sidebar-next
+bind index,pager \CO sidebar-open
+
+# Remap bounce-message function to "B"
+bind index B bounce-message
+
+macro index b '<enter-command>toggle sidebar_visible<enter><refresh>'
+macro pager b '<enter-command>toggle sidebar_visible<enter><redraw-screen>'
+
+macro index \cb |urlscan\n
+macro pager \cb |urlscan\n
+macro index I 'c=INBOX<enter>'
+macro index x 'c=QueensU.INBOX<enter>'
+#:source ~/.muttrc<enter>'
+
+bind editor <space> noop
+
+unignore X-Label:
+
+set mbox_type=Maildir
+
+source ~/.mutt/alias.rc
+source ~/.mutt/mailinglists.rc
+source ~/.mutt/score.rc
+source ~/.mutt/color.rc
+source ~/.mutt/accounts.rc
+source ~/.mutt/savehooks.rc
+
+set folder='imap://localhost'
+set spoolfile='=INBOX'
+
+#set folder="/home/ryan/.maildb/GMAIL/"
+#set spoolfile='/home/ryan/.maildb/GMAIL/INBOX'
+#mailboxes ! + `sed -e 's/\(.*\)$/"+.\1"/g' .maildb/GMAIL/subscriptions | tr '\n' ' '`
+#mailboxes ! + `\
+#for file in ~/.maildb/GMAIL/.*; do \
+#box=$(basename "$file"); \
+#if [ ! "$box" = '.' -a ! "$box" = '..' -a ! "$box" = '.customflags' \
+# -a ! "$box" = '.subscriptions' ]; then \
+# echo -n "\"+$box\" "; \
+#fi; \
+#done`
+
+set tmpdir='~/.mutt/tmp'
+
+macro index <F8> \
+ "<enter-command>unset wait_key<enter><shell-escape>~/bin/mutt-notmuch --prompt search<enter><change-folder-readonly>~/.cache/mutt_results<enter>" \
+ "search mail (using notmuch)"
+macro index <F9> \
+ "<enter-command>unset wait_key<enter><pipe-message>~/bin/mutt-notmuch thread<enter><change-folder-readonly>~/.cache/mutt_results<enter><enter-command>set wait_key<enter>" \
+ "search and reconstruct owning thread (using notmuch)"
+
+macro index \e,k "<enter-command> set sendmail='/usr/bin/msmtp'<enter>\
+ <enter-command>set from = 'Ryan Kavanagh <ryanakca@kubuntu.org>'<enter>\
+ <enter-command>set envelope_from_address = 'Ryan Kavanagh <ryanakca@kubuntu.org>'<enter>\
+ <enter-command>set use_from = yes<enter>\
+ <enter-command>set use_envelope_from = 'yes'<enter>\
+ <enter-command>my_hdr From: ryanakca@kubuntu.org<enter>\
+ <enter-command>my_hdr Reply-To: ryanakca@kubuntu.org<enter>\
+ <enter-command>my_hdr Return-Path: ryanakca@kubuntu.org<enter>"
+macro index \e,u "<enter-command> set sendmail='/usr/bin/msmtp -a ubuntu'<enter><enter-command>set from = 'Ryan Kavanagh <ryanakca@ubuntu.com>'<enter><enter-command>set envelope_from_address = 'Ryan Kavanagh <ryanakca@ubuntu.com>'<enter><enter-command>set use_from = yes<enter><enter-command>set use_envelope_from = 'yes'<enter><enter-command>my_hdr From: ryanakca@ubuntu.com<enter><enter-command>my_hdr Reply-To: ryanakca@ubuntu.com<enter><enter-command>my_hdr Return-Path: ryanakca@ubuntu.com<enter>"
diff --git a/.netrc b/.netrc
new file mode 100644
index 0000000..2dddb7a
--- /dev/null
+++ b/.netrc
@@ -0,0 +1 @@
+machine localhost login ryan password LOCAL_PASS
diff --git a/.notmuch-config b/.notmuch-config
new file mode 100644
index 0000000..b24015d
--- /dev/null
+++ b/.notmuch-config
@@ -0,0 +1,68 @@
+# .notmuch-config - Configuration file for the notmuch mail system
+#
+# For more information about notmuch, see http://notmuchmail.org
+
+# Database configuration
+#
+# The only value supported here is 'path' which should be the top-level
+# directory where your mail currently exists and to where mail will be
+# delivered in the future. Files should be individual email messages.
+# Notmuch will store its database within a sub-directory of the path
+# configured here named ".notmuch".
+#
+[database]
+path=/home/ryan/.maildb/GMAIL/
+
+# User configuration
+#
+# Here is where you can let notmuch know how you would like to be
+# addressed. Valid settings are
+#
+# name Your full name.
+# primary_email Your primary email address.
+# other_email A list (separated by ';') of other email addresses
+# at which you receive email.
+#
+# Notmuch will use the various email addresses configured here when
+# formatting replies. It will avoid including your own addresses in the
+# recipient list of replies, and will set the From address based on the
+# address to which the original email was addressed.
+#
+[user]
+name=Ryan Kavanagh
+primary_email=ryanakca@kubuntu.org
+other_email=ryanakca@gmail.com;9rak@queensu.ca;ryan.kavanagh@queensu.ca;ryan@ryanak.ca;ryanakca-guest@users.alioth.debian.org;ryanakca@ubuntu.com;
+
+# Configuration for "notmuch new"
+#
+# The following options are supported here:
+#
+# tags A list (separated by ';') of the tags that will be
+# added to all messages incorporated by "notmuch new".
+#
+[new]
+tags=unread;
+
+# Maildir compatibility configuration
+#
+# The following option is supported here:
+#
+# synchronize_flags Valid values are true and false.
+#
+# If true, then the following maildir flags (in message filenames)
+# will be syncrhonized with the corresponding notmuch tags:
+#
+# Flag Tag
+# ---- -------
+# D draft
+# F flagged
+# P passed
+# R replied
+# S unread (added when 'S' flag is not present)
+#
+# The "notmuch new" command will notice flag changes in filenames
+# and update tags, while the "notmuch tag" and "notmuch restore"
+# commands will notice tag changes and update flags in filenames
+#
+[maildir]
+synchronize_flags=true
diff --git a/.offlineimaprc b/.offlineimaprc
new file mode 100644
index 0000000..b9eed51
--- /dev/null
+++ b/.offlineimaprc
@@ -0,0 +1,87 @@
+# Sample minimal config file. Copy this to ~/.offlineimaprc and edit to
+# suit to get started fast.
+
+[general]
+metadata = ~/.offlineimap
+accounts = QueensU, GMAIL
+pythonfile=~/.offlineimap.py
+# EIMEAR
+maxsyncaccounts = 2
+
+#### GMAIL Account Settings
+[Account GMAIL]
+localrepository = LocalGmail
+remoterepository = RemoteGmail
+autorefresh = 20
+quick = 10
+presynchook = imapfilter -c /home/ryan/.imapfilter/config.lua
+postsynchook = imapfilter -c /home/ryan/.imapfilter/config.lua && /home/ryan/bin/run-mailcheck && notmuch new
+foldersort = mycmp
+
+[Repository LocalGmail]
+#type = Maildir
+#localfolders = ~/.maildb/GMAIL
+#restoreatime = no
+type = IMAP
+remotehost = localhost
+remoteuser = ryan
+remotepass = LOCAL_PASS
+
+[Repository RemoteGmail]
+foldersort = lambda x, y: cmp(x, y)
+type = Gmail
+remoteuser = ryanakca@gmail.com
+remotepass = GMAIL_PASS
+spamfolder = [Google Mail]/Spam
+trashfolder = [Google Mail]/Bin
+realdelete = no
+folderfilter = lambda foldername: foldername not in ['[Google Mail]/All Mail']
+#folderfilter = lambda foldername: foldername in ['INBOX']
+
+##### QueensU mail
+[Account QueensU]
+localrepository = LocalGmail
+remoterepository = RemoteQueensU
+autorefresh = 20
+quick = 10
+# presynchook = imapfilter
+foldersort = lamba x, y: cmp(x, y)
+postsynchook = /home/ryan/bin/run-mailcheck
+
+[Repository RemoteQueensU]
+nametrans = lambda foldername: 'QueensU.' + foldername
+foldersort = lambda x, y: cmp(y, x)
+type = IMAP
+remoteuser = 9rak
+remotehost = mail.queensu.ca
+remotepass = QUEENSU_PASS
+
+[Account EIMEAR]
+localrepository = LocalEimear
+remoterepository = RemoteEimear
+foldersort = lambda x, y: cmp(x, y)
+
+[Repository LocalEimear]
+type = IMAP
+remotehost = localhost
+remoteuser = ryan
+remotepass = LOCAL_PASS
+
+[Repository RemoteEimear]
+foldersort = lambda x, y: cmp(x, y)
+type = IMAP
+remotehost = ryanak.ca
+remoteuser = ryan
+remotepass = LOCAL_PASS
+ssl = yes
+
+[mbnames]
+enabled = no
+filename = .muttrc.mailboxes
+header = "mailboxes "
+peritem = "+%(foldername)s"
+sep = " "
+footer = "\n"
+
+[ui.Curses.Blinkenlights]
+statuschar = %
diff --git a/.quiltrc-dpkg b/.quiltrc-dpkg
new file mode 100644
index 0000000..1207660
--- /dev/null
+++ b/.quiltrc-dpkg
@@ -0,0 +1,11 @@
+d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
+if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
+ # if in Debian packaging tree with unset $QUILT_PATCHES
+ QUILT_PATCHES="debian/patches"
+ QUILT_PATCH_OPTS="--reject-format=unified"
+ QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
+ QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
+ QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33: â†
+ diff_ctx=35:diff_cctx=33"
+ if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
+fi
diff --git a/.screenlayout/epsilon-SAIL.sh b/.screenlayout/epsilon-SAIL.sh
new file mode 100755
index 0000000..85426bc
--- /dev/null
+++ b/.screenlayout/epsilon-SAIL.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+xrandr --output LVDS1 --mode 1024x600 --pos 0x1200 --rotate normal --output VGA1 --mode 1920x1200 --pos 0x0 --rotate normal
diff --git a/.screenlayout/epsilon-home.sh b/.screenlayout/epsilon-home.sh
new file mode 100755
index 0000000..10f16a0
--- /dev/null
+++ b/.screenlayout/epsilon-home.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+xrandr --output LVDS1 --mode 1024x600 --pos 0x0 --rotate normal --output VGA1 --mode 1920x1080 --pos 1024x0 --rotate normal
diff --git a/.screenrc b/.screenrc
new file mode 100644
index 0000000..fac0c72
--- /dev/null
+++ b/.screenrc
@@ -0,0 +1,14 @@
+defutf8 on
+shell /bin/zsh
+encoding UTF-8
+vbell on
+defnonblock 5
+
+startup_message off
+
+hardstatus alwayslastline
+hardstatus string "%{=}%{g}[%{B}%D %d/%m%{W}%c:%s%{g}][%= %{w}%?%-Lw%?%{r}(%{W}%n*%f %t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{+b r}%H%{-b r}%{W}:%l%{g}]"
+#hardstatus string "%{=}%{g}[%{B}%D %d/%m%{W}%c:%s%{g}][%= %{w}%?%-Lw%?%{b}(%{C}%n%{W}*%f %t%?(%u)%?%{b})%{w}%?%+Lw%?%?%= %{g}][%{b}%H%{-s w}:%{W}%l%{g}]"
+
+shelltitle '$ |zsh'
+idle 3600 detach
diff --git a/.signature b/.signature
new file mode 100644
index 0000000..cf989cb
--- /dev/null
+++ b/.signature
@@ -0,0 +1,2 @@
+|_)|_/ Ryan Kavanagh | GnuPG key
+| \| \ http://ryanak.ca/ | 4A11C97A
diff --git a/.vim/README.csupport b/.vim/README.csupport
new file mode 100644
index 0000000..27ca4a9
--- /dev/null
+++ b/.vim/README.csupport
@@ -0,0 +1,188 @@
+README for c.vim (Version 5.0.5) / November 21 2007
+
+ * DESCRIPTION
+ * INSTALLATION
+ * RELEASE NOTES
+ * FILES
+ * ADDITIONAL TIPS
+ * CREDITS
+
+=======================================================================================
+ DESCRIPTION
+=======================================================================================
+C/C++-IDE for Vim/gVim. It is written to considerably speed up writing code in
+a consistent style. This is done by inserting complete statements, idioms,
+code snippets, templates, and comments. Syntax checking, compiling, running a
+program, running indent or code checkers can be done with a keystroke. There
+are many additional hints and options which can improve speed and comfort when
+writing C/C++. See the help file csupport.txt for more information.
+
+=======================================================================================
+ INSTALLATION
+=======================================================================================
+The subdirectories in the zip archive cvim.zip mirror the directory structure
+which is needed below the local installation directory $HOME/.vim/ for LINUX/UNIX
+($VIM/vimfiles/ for Windows; find the value of $VIM with ":echo $VIM" from inside Vim).
+
+(0) Save the template files in '$HOME/.vim/c-support/templates/Templates' if
+ you have changed any of them.
+
+(1) Copy the zip archive cvim.zip to $HOME/.vim and run
+
+ unzip cvim.zip
+
+ If you have already an older version of cvim and you have modified the template
+ files you may want to save your templates first or copy the files from the
+ archive by hand.
+
+(2) Loading of plugin files must be enabled. If not use
+
+ :filetype plugin on
+
+ This is the minimal content of the file '$HOME/.vimrc'. Create one if there
+ is none.
+
+(3) Set at least some personal details in the file '$HOME/.vim/c-support/templates/Templates'
+ (file '$VIM\/c-support/templates/Templates' under Windows).
+ Here is the minimal personalization (my settings as an example, of course):
+
+ |AUTHOR| = Dr. Fritz Mehner
+ |AUTHORREF| = mn
+ |EMAIL| = mehner@fh-swf.de
+ |COMPANY| = FH Südwestfalen, Iserlohn
+ |COPYRIGHT| = Copyright (c) |YEAR|, |AUTHOR|
+
+ (Read more about the template system in the plugin documentation)
+
+(4) Consider additional settings in the file '$HOME/.vimrc'.
+ The files customization.vimrc and customization.gvimrc are replacements or
+ extensions for your .vimrc and .gvimrc ( _vimrc and _gvimrc under Windows).
+ You may want to use parts of them. The files are documented.
+
+There are a lot of features and options which can be used and influenced:
+
+ * use of template files and tags
+ * surround marked blocks with statements
+ * using and managing personal code snippets
+ * generate/remove multiline comments
+ * picking up prototypes
+ * C/C++ dictionaries for keyword completion
+ * (re)moving the root menu
+
+Restart gVim/Vim generate the help tags
+
+ :helptags ~/.vim/doc
+
+and look at csupport help with
+
+ :help csupport
+
+or use the 'help' entry in the root menu of this plug-in.
+
+ +-----------------------------------------------+
+ | +-------------------------------------------+ |
+ | | ** PLEASE READ THE DOCUMENTATION ** | |
+ | | Actions differ for different modes! | |
+ | +-------------------------------------------+ |
+ +-----------------------------------------------+
+
+Any problems ? See the TROUBLESHOOTING section at the end of the help file
+'doc/csupport.txt'.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.5
+=======================================================================================
++ Bugfix: on a few systems doubling of path components in the run command (F9).
+ Skip this upgrade if you do not have this problem.
+
+ OLDER RELEASE NOTES : see file 'ChangeLog'
+=======================================================================================
+
+=======================================================================================
+ FILES
+=======================================================================================
+
+README.csupport This file.
+
+doc/csupport.txt The help file for the local on-line help.
+
+ftplugin/c.vim A file type plug-in. Define hotkeys, creates a local
+ dictionary for each C/C++ file.
+
+plugin/c.vim The C/C++ plug-in for GVIM.
+
+c-support/scripts/wrapper.sh The wrapper script for the use of an xterm.
+c-support/templates/* C-style and C++-style template files (see csupport.txt).
+
+
+c-support/wordlists/c-c++-keywords.list All C and C++ keywords (already in word.list).
+c-support/wordlists/k+r.list K&R-Book: Words from the table of content.
+ They appear frequently in comments.
+c-support/wordlists/stl_index.list STL: method and type names.
+
+
+----------------------- -------------------------------------------------------------
+ The following files and extensions are for convenience only.
+ c.vim will work without them.
+ -------------------------------------------------------------
+c-support/doc/c-hotkeys.pdf Hotkey reference card.
+c-support/doc/ChangeLog The change log.
+
+rc/customization.ctags Additional settings I use in .ctags to enable navigation
+ through makefiles ans qmake files with the plug-in taglist.vim.
+
+rc/costumization.gvimrc Additional settings I use in .gvimrc :
+ hot keys, mouse settings, ...
+ The file is commented. Append it to your .gvimrc if you like.
+
+rc/costumization.indent.pro Additional settings I use in .indent.pro :
+ See the indent manual.
+
+rc/costumization.vimrc Additional settings I use in .vimrc : incremental search,
+ tabstop, hot keys, font, use of dictionaries, ...
+ The file is commented. Append it to your .vimrc if you like.
+
+=======================================================================================
+ ADDITIONAL TIPS
+=======================================================================================
+
+(1) gVim. Toggle 'insert mode' <--> 'normal mode' with the right mouse button
+ (see mapping in file costumization.gvimrc).
+
+(2) gVim. Use tear off menus.
+
+(3) Try 'Focus under mouse' as window behavior (No mouse click when the mouse pointer
+ is back from the menu entry).
+
+(4) Use Emulate3Buttons "on" (X11) even for a 3-button mouse. Pressing left and right
+ button at the same time without moving your fingers is faster then moving a finger
+ to the middle button (often a wheel).
+
+=======================================================================================
+ CREDITS
+=======================================================================================
+
+ Some ideas are taken from the following documents:
+
+ 1. Recommended C Style and Coding Standards (Indian Hill Style Guide)
+ www.doc.ic.ac.uk/lab/secondyear/cstyle/cstyle.html
+ 2. Programming in C++, Ellemtel Telecommunication Systems Laboratories
+ www.it.bton.ac.uk/burks/burks/language/cpp/cppstyle/ellhome.htm
+ 3. C++ Coding Standard, Todd Hoff
+ www.possibility.com/Cpp/CppCodingStandard.html
+
+ The splint error format is taken from the file splint.vim (Vim standard distribution).
+
+------------------
+
+ ... finally
+
+ Johann Wolfgang von Goethe (1749-1832), the greatest of the German poets,
+ about LINUX, Vim/gVim and other great tools (Ok, almost.) :
+
+ Ein Mann, der recht zu wirken denkt, Who on efficient work is bent,
+ Muß auf das beste Werkzeug halten. Must choose the fittest instrument.
+
+ Faust, Teil 1, Vorspiel auf dem Theater Faust, Part 1, Prologue for the Theatre
+
+=======================================================================================
diff --git a/.vim/autoload/haskellmode.vim b/.vim/autoload/haskellmode.vim
new file mode 100644
index 0000000..ce20a67
--- /dev/null
+++ b/.vim/autoload/haskellmode.vim
@@ -0,0 +1,155 @@
+"
+" utility functions for haskellmode plugins
+"
+" (Claus Reinke; last modified: 23/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+
+
+" find start/extent of name/symbol under cursor;
+" return start, symbolic flag, qualifier, unqualified id
+" (this is used in both haskell_doc.vim and in GHC.vim)
+function! haskellmode#GetNameSymbol(line,col,off)
+ let name = "[a-zA-Z0-9_']"
+ let symbol = "[-!#$%&\*\+/<=>\?@\\^|~:.]"
+ "let [line] = getbufline(a:buf,a:lnum)
+ let line = a:line
+
+ " find the beginning of unqualified id or qualified id component
+ let start = (a:col - 1) + a:off
+ if line[start] =~ name
+ let pattern = name
+ elseif line[start] =~ symbol
+ let pattern = symbol
+ else
+ return []
+ endif
+ while start > 0 && line[start - 1] =~ pattern
+ let start -= 1
+ endwhile
+ let id = matchstr(line[start :],pattern.'*')
+ " call confirm(id)
+
+ " expand id to left and right, to get full id
+ let idPos = id[0] == '.' ? start+2 : start+1
+ let posA = match(line,'\<\(\([A-Z]'.name.'*\.\)\+\)\%'.idPos.'c')
+ let start = posA>-1 ? posA+1 : idPos
+ let posB = matchend(line,'\%'.idPos.'c\(\([A-Z]'.name.'*\.\)*\)\('.name.'\+\|'.symbol.'\+\)')
+ let end = posB>-1 ? posB : idPos
+
+ " special case: symbolic ids starting with .
+ if id[0]=='.' && posA==-1
+ let start = idPos-1
+ let end = posB==-1 ? start : end
+ endif
+
+ " classify full id and split into qualifier and unqualified id
+ let fullid = line[ (start>1 ? start-1 : 0) : (end-1) ]
+ let symbolic = fullid[-1:-1] =~ symbol " might also be incomplete qualified id ending in .
+ let qualPos = matchend(fullid, '\([A-Z]'.name.'*\.\)\+')
+ let qualifier = qualPos>-1 ? fullid[ 0 : (qualPos-2) ] : ''
+ let unqualId = qualPos>-1 ? fullid[ qualPos : -1 ] : fullid
+ " call confirm(start.'/'.end.'['.symbolic.']:'.qualifier.' '.unqualId)
+
+ return [start,symbolic,qualifier,unqualId]
+endfunction
+
+function! haskellmode#GatherImports()
+ let imports={0:{},1:{}}
+ let i=1
+ while i<=line('$')
+ let res = haskellmode#GatherImport(i)
+ if !empty(res)
+ let [i,import] = res
+ let prefixPat = '^import\s*\(qualified\)\?\s\+'
+ let modulePat = '\([A-Z][a-zA-Z0-9_''.]*\)'
+ let asPat = '\(\s\+as\s\+'.modulePat.'\)\?'
+ let hidingPat = '\(\s\+hiding\s*\((.*)\)\)\?'
+ let listPat = '\(\s*\((.*)\)\)\?'
+ let importPat = prefixPat.modulePat.asPat.hidingPat.listPat ".'\s*$'
+
+ let ml = matchlist(import,importPat)
+ if ml!=[]
+ let [_,qualified,module,_,as,_,hiding,_,explicit;x] = ml
+ let what = as=='' ? module : as
+ let hidings = split(hiding[1:-2],',')
+ let explicits = split(explicit[1:-2],',')
+ let empty = {'lines':[],'hiding':hidings,'explicit':[],'modules':[]}
+ let entry = has_key(imports[1],what) ? imports[1][what] : deepcopy(empty)
+ let imports[1][what] = haskellmode#MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ if !(qualified=='qualified')
+ let imports[0][what] = haskellmode#MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ endif
+ else
+ echoerr "haskellmode#GatherImports doesn't understand: ".import
+ endif
+ endif
+ let i+=1
+ endwhile
+ if !has_key(imports[1],'Prelude')
+ let imports[0]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ let imports[1]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ endif
+ return imports
+endfunction
+
+function! haskellmode#ListElem(list,elem)
+ for e in a:list | if e==a:elem | return 1 | endif | endfor
+ return 0
+endfunction
+
+function! haskellmode#ListIntersect(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)!=-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! haskellmode#ListUnion(list1,list2)
+ let l = []
+ for e in a:list2 | if index(a:list1,e)==-1 | let l += [e] | endif | endfor
+ return a:list1 + l
+endfunction
+
+function! haskellmode#ListWithout(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)==-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! haskellmode#MergeImport(entry,line,hiding,explicit,module)
+ let lines = a:entry['lines'] + [ a:line ]
+ let hiding = a:explicit==[] ? haskellmode#ListIntersect(a:entry['hiding'], a:hiding)
+ \ : haskellmode#ListWithout(a:entry['hiding'],a:explicit)
+ let explicit = haskellmode#ListUnion(a:entry['explicit'], a:explicit)
+ let modules = haskellmode#ListUnion(a:entry['modules'], [ a:module ])
+ return {'lines':lines,'hiding':hiding,'explicit':explicit,'modules':modules}
+endfunction
+
+" collect lines belonging to a single import statement;
+" return number of last line and collected import statement
+" (assume opening parenthesis, if any, is on the first line)
+function! haskellmode#GatherImport(lineno)
+ let lineno = a:lineno
+ let import = getline(lineno)
+ if !(import=~'^import\s') | return [] | endif
+ let open = strlen(substitute(import,'[^(]','','g'))
+ let close = strlen(substitute(import,'[^)]','','g'))
+ while open!=close
+ let lineno += 1
+ let linecont = getline(lineno)
+ let open += strlen(substitute(linecont,'[^(]','','g'))
+ let close += strlen(substitute(linecont,'[^)]','','g'))
+ let import .= linecont
+ endwhile
+ return [lineno,import]
+endfunction
+
+function! haskellmode#UrlEncode(string)
+ let pat = '\([^[:alnum:]]\)'
+ let code = '\=printf("%%%02X",char2nr(submatch(1)))'
+ let url = substitute(a:string,pat,code,'g')
+ return url
+endfunction
+
diff --git a/.vim/autoload/pythoncomplete.vim b/.vim/autoload/pythoncomplete.vim
new file mode 120000
index 0000000..2b8df41
--- /dev/null
+++ b/.vim/autoload/pythoncomplete.vim
@@ -0,0 +1 @@
+../ftplugin/pythoncomplete.vim \ No newline at end of file
diff --git a/.vim/c-support/codesnippets/Makefile b/.vim/c-support/codesnippets/Makefile
new file mode 100644
index 0000000..2208944
--- /dev/null
+++ b/.vim/c-support/codesnippets/Makefile
@@ -0,0 +1,178 @@
+#=======================================================================================
+#
+# Filename: Makefile
+# Description:
+#
+# Usage: make (generate executable )
+# make clean (remove objects, executable, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Version: 1.0
+# Created:
+# Revision: ---
+#
+# Author:
+# Company:
+# Email:
+#
+# Notes: C extension : c
+# C++ extensions : cc cpp C
+# C and C++ sources can be mixed.
+# Prerequisites are generated automatically; makedepend is not
+# needed (see documentation for GNU make Version 3.80, July 2002,
+# section 4.13). The utility sed is used.
+#
+#============================================== makefile template version 1.6 ==========
+
+# ------------ name of the executable ------------------------------------------------
+EXECUTABLE = main
+
+# ------------ list of all source files ----------------------------------------------
+SOURCES = main.c
+
+# ------------ compiler --------------------------------------------------------------
+CC = gcc
+CXX = g++
+
+# ------------ compiler flags --------------------------------------------------------
+CFLAGS = -Wall -O0 -g # Do not optimize. Produce debugging information.
+
+# ------------ linker-Flags ----------------------------------------------------------
+LFLAGS = -g
+
+# ------------ additional system include directories ---------------------------------
+GLOBAL_INC_DIR =
+
+# ------------ private include directories -------------------------------------------
+LOCAL_INC_DIR = $(HOME)/include
+
+# ------------ system libraries (e.g. -lm ) -----------------------------------------
+SYS_LIBS = -lm
+
+# ------------ additional system library directories ---------------------------------
+GLOBAL_LIB_DIR =
+
+# ------------ additional system libraries -------------------------------------------
+GLOBAL_LIBS =
+
+# ------------ private library directories -------------------------------------------
+LOCAL_LIB_DIR = $(HOME)/lib
+
+# ------------ private libraries (e.g. libxyz.a ) -----------------------------------
+LOCAL_LIBS =
+
+# ------------ archive generation -----------------------------------------------------
+TARBALL_EXCLUDE = *.{o,gz,zip}
+ZIP_EXCLUDE = *.{o,gz,zip}
+
+# ------------ run executable out of this Makefile (yes/no) -------------------------
+# ------------ cmd line parameters for this executable -------------------------------
+EXE_START = no
+EXE_CMDLINE =
+
+#=======================================================================================
+# The following statements usually need not to be changed
+#=======================================================================================
+
+C_SOURCES = $(filter %.c, $(SOURCES))
+CPP_SOURCES = $(filter-out %.c, $(SOURCES))
+ALL_INC_DIR = $(addprefix -I, $(LOCAL_INC_DIR) $(GLOBAL_INC_DIR))
+ALL_LIB_DIR = $(addprefix -L, $(LOCAL_LIB_DIR) $(GLOBAL_LIB_DIR))
+GLOBAL_LIBSS = $(addprefix $(GLOBAL_LIB_DIR)/, $(GLOBAL_LIBS))
+LOCAL_LIBSS = $(addprefix $(LOCAL_LIB_DIR)/, $(LOCAL_LIBS))
+ALL_CFLAGS = $(CFLAGS) $(ALL_INC_DIR)
+ALL_LFLAGS = $(LFLAGS) $(ALL_LIB_DIR)
+BASENAMES = $(basename $(SOURCES))
+
+# ------------ generate the names of the object files --------------------------------
+OBJECTS = $(addsuffix .o,$(BASENAMES))
+
+# ------------ generate the names of the hidden prerequisite files -------------------
+PREREQUISITES = $(addprefix .,$(addsuffix .d,$(BASENAMES)))
+
+# ------------ make the executable ---------------------------------------------------
+$(EXECUTABLE): $(OBJECTS)
+ifeq ($(strip $(CPP_SOURCES)),)
+ $(CC) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+else
+ $(CXX) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+endif
+ifeq ($(EXE_START),yes)
+ ./$(EXECUTABLE) $(EXE_CMDLINE)
+endif
+
+# ------------ include the automatically generated prerequisites ---------------------
+# ------------ if target is not clean, tarball or zip ---------------------
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),tarball)
+ifneq ($(MAKECMDGOALS),zip)
+include $(PREREQUISITES)
+endif
+endif
+endif
+
+# ------------ make the objects ------------------------------------------------------
+%.o: %.c
+ $(CC) -c $(ALL_CFLAGS) $<
+
+%.o: %.cc
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.cpp
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.C
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+# ------------ make the prerequisites ------------------------------------------------
+#
+.%.d: %.c
+ @$(make-prerequisite-c)
+
+.%.d: %.cc
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.cpp
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.C
+ @$(make-prerequisite-cplusplus)
+
+# canned command sequences
+# echoing of the sed command is suppressed by the leading @
+
+define make-prerequisite-c
+ @$(CC) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+define make-prerequisite-cplusplus
+ @$(CXX) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+# ------------ remove generated files ------------------------------------------------
+# ------------ remove hidden backup files --------------------------------------------
+clean:
+ rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES) *~
+
+# ------------ tarball generation ------------------------------------------------------
+tarball:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+# ------------ zip ---------------------------------------------------------------------
+zip:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+# ======================================================================================
+# vim: set tabstop=2: set shiftwidth=2:
diff --git a/.vim/c-support/codesnippets/Makefile.multi-target.template b/.vim/c-support/codesnippets/Makefile.multi-target.template
new file mode 100644
index 0000000..75da8dd
--- /dev/null
+++ b/.vim/c-support/codesnippets/Makefile.multi-target.template
@@ -0,0 +1,70 @@
+#===============================================================================
+#
+# File: Makefile
+# Description:
+#
+# Usage: make (generate executable(s) )
+# make clean (remove objects, executables, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Author: Dr.-Ing. Fritz Mehner
+# Email: mehner@mfh-iserlohn.de
+# Created:
+#
+#===============================================================================
+
+
+CC = gcc
+CCP = g++
+CFLAGS = -c -g -Wall
+LFLAGS = -g
+SYS_LIBS = -lm
+TARBALL_EXCLUDE = "*.{o,gz,zip}"
+ZIP_EXCLUDE = *.o *.gz *.zip
+
+TARGETS = target_1 target_2
+
+#---------- targets --------------------------------------
+all: $(TARGETS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) $*.c
+
+%.o: %.cc
+ $(CCP) $(CFLAGS) $*.cc
+
+#---------- target 1 -------------------------------------
+# C target
+target_1: target_1.o
+ $(CC) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+#---------- target 2 -------------------------------------
+# C++ target
+target_2: target_2.o
+ $(CCP) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+
+#---------- target 3 -------------------------------------
+
+
+
+#---------- tarball --------------------------------------
+tarball:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+#---------- zip ------------------------------------------
+zip:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+#---------- clear up -------------------------------------
+clean:
+ rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES)
+
diff --git a/.vim/c-support/codesnippets/calloc_double_matrix.c b/.vim/c-support/codesnippets/calloc_double_matrix.c
new file mode 100644
index 0000000..ec71658
--- /dev/null
+++ b/.vim/c-support/codesnippets/calloc_double_matrix.c
@@ -0,0 +1,36 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_double_matrix
+ * Description: Allocate a dynamic double-matrix of size rows*columns;
+ * return a pointer.
+ * =====================================================================================
+ */
+ double**
+calloc_double_matrix ( int rows, int columns )
+{
+ int i;
+ double **m;
+ m = calloc ( rows, sizeof(double*) ); /* allocate pointer array */
+ assert( m != NULL); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(double) );/* allocate data array */
+ assert(*m != NULL); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_double_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_matrix_double
+ * Description: Free a dynamic double-matrix.
+ * =====================================================================================
+ */
+ void
+free_double_matrix ( double **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_double_matrix ---------- */
+
diff --git a/.vim/c-support/codesnippets/calloc_int_matrix.c b/.vim/c-support/codesnippets/calloc_int_matrix.c
new file mode 100644
index 0000000..e21215b
--- /dev/null
+++ b/.vim/c-support/codesnippets/calloc_int_matrix.c
@@ -0,0 +1,35 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_int_matrix
+ * Description: Allocate a dynamic int-matrix of size rows*columns; return a pointer.
+ * =====================================================================================
+ */
+int**
+calloc_int_matrix ( int rows, int columns )
+{
+ int i;
+ int **m;
+ m = calloc ( rows, sizeof(int*) ); /* allocate pointer array */
+ assert( m != NULL ); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(int) ); /* allocate data array */
+ assert(*m != NULL ); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_int_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_int_matrix
+ * Description: Free a dynamic int-matrix.
+ * =====================================================================================
+ */
+void
+free_int_matrix ( int **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_int_matrix ---------- */
+
diff --git a/.vim/c-support/codesnippets/main.c b/.vim/c-support/codesnippets/main.c
new file mode 100644
index 0000000..770f5d5
--- /dev/null
+++ b/.vim/c-support/codesnippets/main.c
@@ -0,0 +1,20 @@
+#include <errno.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: main
+ * Description: main function
+ * =====================================================================================
+ */
+ int
+main ( int argc, char *argv[] )
+{
+ printf ("\nProgram %s\n\n", argv[0] );
+
+ return EXIT_SUCCESS;
+} /* ---------- end of function main ---------- */
+
diff --git a/.vim/c-support/codesnippets/main.cc b/.vim/c-support/codesnippets/main.cc
new file mode 100644
index 0000000..d87f891
--- /dev/null
+++ b/.vim/c-support/codesnippets/main.cc
@@ -0,0 +1,18 @@
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+
+using namespace std;
+
+// === FUNCTION ======================================================================
+// Name: main
+// Description: main function
+// =====================================================================================
+ int
+main ( int argc, char *argv[] )
+{
+ cout << "\nProgram " << argv[0] << endl << endl;
+
+ return EXIT_SUCCESS;
+} // ---------- end of function main ----------
+
diff --git a/.vim/c-support/codesnippets/print_double_array.c.noindent b/.vim/c-support/codesnippets/print_double_array.c.noindent
new file mode 100644
index 0000000..6ced53a
--- /dev/null
+++ b/.vim/c-support/codesnippets/print_double_array.c.noindent
@@ -0,0 +1,30 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_double_array
+ * Description: Print a double-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * double matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_double_array ( double array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d : ", i );
+ printf (" %8.2f", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_double_array ---------- */
+
diff --git a/.vim/c-support/codesnippets/print_int_array.c.noindent b/.vim/c-support/codesnippets/print_int_array.c.noindent
new file mode 100644
index 0000000..02d53c0
--- /dev/null
+++ b/.vim/c-support/codesnippets/print_int_array.c.noindent
@@ -0,0 +1,30 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_int_array
+ * Description: Print an int-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * int matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_int_array ( int array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d : ", i );
+ printf (" %6d", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_int_array ---------- */
+
diff --git a/.vim/c-support/doc/ChangeLog b/.vim/c-support/doc/ChangeLog
new file mode 100644
index 0000000..d0d4fd4
--- /dev/null
+++ b/.vim/c-support/doc/ChangeLog
@@ -0,0 +1,304 @@
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.4
+=======================================================================================
++ Format for the macros |DATE|, |TIME|, and |YEAR| can be defined by the user.
++ Help text improved.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.3
+=======================================================================================
++ Code snippets can now be used in the console mode (Vim without GUI).
++ Bugfix: Possible conflict with 'indent' removed when inserting templates.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.2
+=======================================================================================
++ Bugfix: Prototype picker did not alway delete no longer used prototypes.
++ Bugfix: Prototype picker removed template specializations from parameter lists.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.1
+=======================================================================================
++ Bugfix: autocmd setting can influence autocmd settings of OTHER plugins.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0
+=======================================================================================
++ Completely new template system. Now every menu item is user definable.
++ Changes to allow a system-wide installation.
++ A few hotkeys added and renamed.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.6.1
+=======================================================================================
++ New global variable to control the filetype of *.h header files (default is now 'cpp').
++ Bugfix: properly resetting 'compiler' after using make, splint, and CodeCheck.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.6
+=======================================================================================
++ New insert mode mappings (comments, statements, preprocessing, idioms, C++).
++ Some mappings renamed (easier to remember).
++ New tag (basename of a file reduced to characters allowed in names).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.5
+=======================================================================================
++ New menu item and hotkey for the (re)alignement of end-of-line comments.
++ Hotkey \cn removed. Only one menu item for end-of-line comments left.
++ Changed hotkeys: \ce -> \cl and \cl -> \cs .
++ Three new tags (giving the basename of a file) for writing template files.
++ Prototype picker handles template methods.
++ Bugfix: splint works now under Windows.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.4
+=======================================================================================
++ Plugin directories rearranged.
++ main- and for-idiom have a visual mode now.
++ Four new commands (command line) to control the comment style.
++ Comment style (C/C++) can automatically follow the filetype.
++ Bugfix: empty new file after removing the header template can't be closed.
++ Bugfix : Tools entry missing when root menu not shown from the start.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.3
+=======================================================================================
++ CodeCheck (TM) integrated (source code analysing tool).
++ New key mappings for preprocessor statements.
++ New preprocessor menu.
++ Bugfix: indent under Windows.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.2.1
+=======================================================================================
++ Bugfix: change needed for some menu names after patch 7.0.054 .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.2
+=======================================================================================
++ Setting the starting column for trailing comments improved.
++ Small bug in block uncommenting fixed.
++ Mac OS X : circumvent a Vim bug which caused a crash when loading plugin version 4.1.
++ File syntax/c.vim removed (but see help in csupport.txt).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.1
+=======================================================================================
++ A complete switch statement can be made from a list of labels.
++ Additional cases can be made from a list of labels.
++ Small bug in line end commenting fixed.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.0
+=======================================================================================
+
++ Kernighan & Ritchie style for block statements can be enabled.
++ Changes to make it compatible with Vim 7.
++ Set C/C++ file type for source files which should not be preprocessed (*.i, *.ii).
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.11
+=======================================================================================
+
++ Hotkeys and an accompanying reference card added.
++ Preparation for syntax based folding.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.10
+=======================================================================================
+
++ Remove "#if 0 ... #endif" from the inside.
++ Change C comments to C++ comments and vice versa.
++ try..catch / catch / catch(...) now can be set surround a marked area.
++ Prototype picking improved (for C++).
++ A hardcopy shows the localized date and time in the header line.
++ New help menu entry in the main menu of this plugin (shows the plugin documentation).
++ Switch between corresponding source and header files with <S-F2> if the plugin a.vim
+ is present.
++ Plugin can be used with autocompletion for (, [, and { .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.9.1
+=======================================================================================
+
++ Doubling of file header for new c- and h-files under Windows fixed (Thanks to
+ Fabricio C A Oliveira).
++ Tiny bug in the file open idioms fixed.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.9
+=======================================================================================
+
++ Formatter 'indent' integrated.
++ Bugfix in the automatic header insertion.
++ Assert idiom added.
++ #if 0 ... #endif statement for blocking out code added.
++ Minor stylistic improvements in some idioms.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8.2
+=======================================================================================
+
++ Screen update problem solved: color inversion under FC4 (Thanks to Bernie Barton).
++ RTTI menu : additional v-mode.
++ Statement menu and C++ menu rearranged.
++ Include guard : name generation improved.
++ File header templates will be included for additional file extensions (cp, cxx, c++, ...).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8.1
+=======================================================================================
+
++ More C++ output manipulators, manipulator insertion more intuitive.
++ Output into buffer: cursor goes to top of file.
++ Makefile template improved (code snippet).
++ Some internal improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8
+=======================================================================================
+
++ Windows support. Most features are now available under Windows.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7.2
+=======================================================================================
+
++ Run buffer through splint (A tool for statically checking C programs; see
+ http://www.splint.org). An error window will be opened; quickfix commands can be used.
++ Set buffer related command line arguments for splint.
++ Line end comments start in a fixed column (can be set from the menu).
++ Spaces in path names and file names are now possible.
++ Template files and snippet files are no longer kept in the list of alternate files.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7.1
+=======================================================================================
+
++ Bug fixed (command line arguments not passed to the executable).
++ File extension for executables can be set.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7
+=======================================================================================
+
++ Running a program:
+ (1) Run program from the gVim command line.
+ (2) Run program and direct the output into a window with name "C-Output".
+ This buffer and its content will disappear when closing the window.
+ The buffer is reused when still open.
+ (3) Run program in an xterm (adjustable).
++ Command line arguments are now buffer related (each buffer can have its own arguments).
++ Code snippets can be protected from being indented during insertion.
++ Picked up prototypes will be deleted after insertion.
++ A code snippet with the file name extension "ni" or "noindent" will not be
+ indented on insertion.
++ for- and calloc-/malloc-idioms improved.
++ Bug fixed (word list handling).
+
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.6
+=======================================================================================
+
++ Installation simplified.
++ for-loop-idiom asks for control variable, initial value, ...
++ malloc-idiom asks for pointer variable and size.
++ Toggling the comment style works correct again.
++ Empty error windows will be closed.
++ Prototype picker removes trailing parts of the function body if marked.
++ The dialog windows (GUI) have been replaced by more flexible command line inputs.
++ The undocumented and unnecessary hot key F12 has been removed.
++ Extension to ctags + taglist shows makefile targets and qmake targets.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.5
+=======================================================================================
+
++ Aligned line end comments for consecutive lines.
++ Improved prototype picker removes comments.
++ Picked up prototypes can be shown.
++ Uncomment more than one block at once.
++ 3 new idioms.
++ Help file improved .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.4
+=======================================================================================
+
++ Two new global variables: C_Dictionary_File, C_MenuHeader .
++ The preprocessor statements #if... and the function idiom include marked
+ lines when invoked in visual mode.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.3
+=======================================================================================
+
++ The C/C++ root menu can be disabled.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.2
+=======================================================================================
+
++ Only one C/C++ entry in the gVim root menu.
++ All hotkeys are only defined for C/C++ files (file type plugin added).
++ The following constructs are now read as templates from files:
+ class, class using new,
+ template class, template class using new,
+ error class
++ Install script added.
++ Customization improved.
++ Documentation improved (help file added).
++ Bug fix (template file handling)
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.1
+=======================================================================================
+
++ When the comment style "C" is active the menu entry "Comments.code->comment"
+ turns a marked region in one multiline C-comment.
++ The menu entry "Comments.comment->code" turns marked multiline C-comment
+ back into code.
++ A marked region can be surrounded by a for-, if, if-else, while-, do-while-statement
+ (with indentation).
++ The menu entry "Snippets.make prototype" makes a C- or C++-prototype from
+ the current line or marked region and puts it in an internal buffer.
++ The menu entry "Snippets.add prototype" also makes a C- or C++-prototype from
+ the current line or a marked region and adds it to the internal buffer.
++ The menu entry "Snippets.put prototype" inserts all gathered prototypes
+ below the current line.
++ Tag substitution rewritten (Some characters in a substitution text for a tag
+ prevented the tag from being substituted).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.0
+=======================================================================================
+
++ C-style comments AND C++-style comments are supported now.
++ The menu entry 'Comments->Comment style ..' switches the styles (toggle).
++ Block comments are now read as templates or skeletons from files:
+ Frame Block, Function Description, Method Description,
+ Class Description, H+file header, C/C++-file header
++ These templates can contain tags like |FILENAME|, |AUTHOR| etc. which are replaced
+ after reading (KDevelop templates can be used without any change).
++ indentation: multiline inserts and code snippets will be indented after insertion.
++ Most menu entries are now also active in normal mode.
++ new menu items:
+ includes for the C99 header,
+ includes for the standard C++ header,
+ includes for the C++ version of the Standard C Library header,
+ multiline C comment
+ vim modeline
++ Reading the templates is done in one function which can be called in an autocmd.
++ Code cleanup: register z no longer used. Most function calls are silent now.
+
+
diff --git a/.vim/c-support/doc/c-hotkeys.pdf b/.vim/c-support/doc/c-hotkeys.pdf
new file mode 100644
index 0000000..07a6c7c
--- /dev/null
+++ b/.vim/c-support/doc/c-hotkeys.pdf
Binary files differ
diff --git a/.vim/c-support/rc/customization.ctags b/.vim/c-support/rc/customization.ctags
new file mode 100644
index 0000000..75ccd5a
--- /dev/null
+++ b/.vim/c-support/rc/customization.ctags
@@ -0,0 +1,7 @@
+
+--regex-make=/^([^:# \t]+)[ \t]*[:]{1,2}/\1/t,targets/
+
+--langdef=qmake
+--langmap=qmake:+.pro
+--regex-qmake=/^([[:upper:]_]+)/\1/t,SystemVariables/
+
diff --git a/.vim/c-support/rc/customization.gvimrc b/.vim/c-support/rc/customization.gvimrc
new file mode 100644
index 0000000..ff3d690
--- /dev/null
+++ b/.vim/c-support/rc/customization.gvimrc
@@ -0,0 +1,44 @@
+"
+"===============================================================================
+"========== example gvimrc from the distribution ==============================
+"===============================================================================
+"
+runtime gvimrc_example.vim
+"
+"
+"===============================================================================
+"========== CUSTOMIZATION (gvimrc) ===========================================
+"===============================================================================
+"
+"-------------------------------------------------------------------------------
+" Moving cursor to other windows
+"
+" shift down : change window focus to lower one (cyclic)
+" shift up : change window focus to upper one (cyclic)
+" shift left : change window focus to one on left
+" shift right : change window focus to one on right
+"-------------------------------------------------------------------------------
+"
+nmap <s-down> <c-w>w
+nmap <s-up> <c-w>W
+nmap <s-left> <c-w>h
+nmap <s-right> <c-w>l
+"
+"
+"-------------------------------------------------------------------------------
+" some additional hot keys
+"-------------------------------------------------------------------------------
+" S-F3 - call gvim file browser
+"-------------------------------------------------------------------------------
+"
+ map <silent> <s-F3> :silent browse confirm e<CR>
+imap <silent> <s-F3> <Esc>:silent browse confirm e<CR>
+"
+"
+"-------------------------------------------------------------------------------
+" toggle insert mode <--> 'normal mode with the <RightMouse>-key
+"-------------------------------------------------------------------------------
+"
+nmap <RightMouse> <Insert>
+imap <RightMouse> <ESC>
+"
diff --git a/.vim/c-support/rc/customization.indent.pro b/.vim/c-support/rc/customization.indent.pro
new file mode 100644
index 0000000..95f6081
--- /dev/null
+++ b/.vim/c-support/rc/customization.indent.pro
@@ -0,0 +1,8 @@
+--blank-lines-after-procedures
+--brace-indent0
+--comment-indentation49
+--declaration-comment-column49
+--declaration-indentation10
+--space-after-parentheses
+--swallow-optional-blank-lines
+--tab-size2
diff --git a/.vim/c-support/rc/customization.vimrc b/.vim/c-support/rc/customization.vimrc
new file mode 100644
index 0000000..f9ab5a7
--- /dev/null
+++ b/.vim/c-support/rc/customization.vimrc
@@ -0,0 +1,149 @@
+"
+"===============================================================================
+"========== load example vimrc from the distribution =========================
+"===============================================================================
+"
+runtime vimrc_example.vim
+"
+filetype plugin on
+"
+"===============================================================================
+"========== CUSTOMIZATION (vimrc) ============================================
+"===============================================================================
+"
+" Platform specific items:
+" - central backup directory (has to be created)
+" - default dictionary
+" Uncomment your choice.
+if has("win16") || has("win32") || has("win64") ||
+ \ has("win95") || has("win32unix")
+ "
+" runtime mswin.vim
+" set backupdir =$VIM\vimfiles\backupdir
+" set dictionary=$VIM\vimfiles\wordlists/german.list
+else
+" set backupdir =$HOME/.vim.backupdir
+" set dictionary=$HOME/.vim/wordlists/german.list
+endif
+"
+" Using a backupdir under UNIX/Linux: you may want to include a line similar to
+" find $HOME/.vim.backupdir -name "*" -type f -mtime +60 -exec rm -f {} \;
+" in one of your shell startup files (e.g. $HOME/.profile)
+"
+"-------------------------------------------------------------------------------
+" Use of dictionaries
+"-------------------------------------------------------------------------------
+"
+set complete+=k " scan the files given with the 'dictionary' option
+"
+"-------------------------------------------------------------------------------
+" Various settings
+"-------------------------------------------------------------------------------
+"
+set autoread " read open files again when changed outside Vim
+set autowrite " write a modified buffer on each :next , ...
+set browsedir =current " which directory to use for the file browser
+set incsearch " use incremental search
+set nowrap " do not wrap lines
+set shiftwidth =2 " number of spaces to use for each step of indent
+set tabstop =2 " number of spaces that a <Tab> in the file counts for
+set visualbell " visual bell instead of beeping
+"
+"
+"-------------------------------------------------------------------------------
+" some additional hot keys
+"-------------------------------------------------------------------------------
+" F2 - write file without confirmation
+" F3 - call file explorer Ex
+" F4 - show tag under curser in the preview window (tagfile must exist!)
+" F5 - open quickfix error window
+" F6 - close quickfix error window
+" F7 - display previous error
+" F8 - display next error
+" S-Tab - Fast switching between buffers (see below)
+" C-q - Leave the editor with Ctrl-q (see below)
+"-------------------------------------------------------------------------------
+"
+map <silent> <F2> :write<CR>
+map <silent> <F3> :Explore<CR>
+nmap <silent> <F4> :exe ":ptag ".expand("<cword>")<CR>
+map <silent> <F5> :copen<CR>
+map <silent> <F6> :cclose<CR>
+map <silent> <F7> :cp<CR>
+map <silent> <F8> :cn<CR>
+"
+imap <silent> <F2> <Esc>:write<CR>
+imap <silent> <F3> <Esc>:Explore<CR>
+imap <silent> <F4> <Esc>:exe ":ptag ".expand("<cword>")<CR>
+imap <silent> <F5> <Esc>:copen<CR>
+imap <silent> <F6> <Esc>:cclose<CR>
+imap <silent> <F7> <Esc>:cp<CR>
+imap <silent> <F8> <Esc>:cn<CR>
+"
+"-------------------------------------------------------------------------------
+" Fast switching between buffers
+" The current buffer will be saved before switching to the next one.
+" Choose :bprevious or :bnext
+"-------------------------------------------------------------------------------
+"
+ map <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+imap <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+"
+"-------------------------------------------------------------------------------
+" Leave the editor with Ctrl-q : Write all changed buffers and exit Vim
+"-------------------------------------------------------------------------------
+nmap <C-q> :wqa<CR>
+"
+"-------------------------------------------------------------------------------
+" autocomplete parenthesis, brackets and braces
+"-------------------------------------------------------------------------------
+inoremap ( ()<Left>
+inoremap [ []<Left>
+inoremap { {}<Left>
+"
+vnoremap ( s()<Esc>P<Right>%
+vnoremap [ s[]<Esc>P<Right>%
+vnoremap { s{}<Esc>P<Right>%
+"
+"-------------------------------------------------------------------------------
+" Change the working directory to the directory containing the current file
+"-------------------------------------------------------------------------------
+if has("autocmd")
+ autocmd BufEnter * :lchdir %:p:h
+endif " has("autocmd")
+"
+"-------------------------------------------------------------------------------
+" Filename completion
+"
+" wildmenu : command-line completion operates in an enhanced mode
+" wildignore : A file that matches with one of these
+" patterns is ignored when completing file or directory names.
+"-------------------------------------------------------------------------------
+"
+set wildmenu
+set wildignore=*.bak,*.o,*.e,*~
+"
+"-------------------------------------------------------------------------------
+" print options (pc = percentage of the media size)
+"-------------------------------------------------------------------------------
+set printoptions=left:8pc,right:3pc
+"
+"-------------------------------------------------------------------------------
+" taglist.vim : toggle the taglist window
+" taglist.vim : define the title texts for make
+" taglist.vim : define the title texts for qmake
+"-------------------------------------------------------------------------------
+ noremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+inoremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+
+let tlist_make_settings = 'make;m:makros;t:targets'
+
+let tlist_qmake_settings = 'qmake;t:SystemVariables'
+
+if has("autocmd")
+ " ---------- qmake : set filetype for *.pro ----------
+ autocmd BufNewFile,BufRead *.pro set filetype=qmake
+endif " has("autocmd")
+
diff --git a/.vim/c-support/scripts/wrapper.sh b/.vim/c-support/scripts/wrapper.sh
new file mode 100644
index 0000000..55d9961
--- /dev/null
+++ b/.vim/c-support/scripts/wrapper.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#===============================================================================
+# FILE: wrapper.sh
+# USAGE: ./wrapper.sh executable [cmd-line-args]
+# DESCRIPTION: Wraps the execution of a programm or script.
+# Use with xterm: xterm -e wrapper.sh executable cmd-line-args
+# This script is used by several plugins:
+# bash-support.vim, c.vim and perl-support.vim
+# OPTIONS: ---
+# REQUIREMENTS: which(1) - shows the full path of (shell) commands.
+# BUGS: ---
+# NOTES: ---
+# AUTHOR: Dr.-Ing. Fritz Mehner (Mn), mehner@fh-swf.de
+# COMPANY: Fachhochschule Südwestfalen, Iserlohn
+# CREATED: 23.11.2004 18:04:01 CET
+# REVISION: $Id: wrapper.sh,v 1.3 2007/10/03 09:06:09 mehner Exp $
+#===============================================================================
+
+command=${@} # the complete command line
+executable=${1} # name of the executable; may be quoted
+
+fullname=$(which $executable)
+[ $? -eq 0 ] && executable=$fullname
+
+if [ ${#} -ge 1 ] && [ -x "$executable" ]
+then
+ shift
+ "$executable" ${@}
+ echo -e "> \"${command}\" returned ${?}"
+else
+ echo -e "\n !! file \"${executable}\" does not exist or is not executable !!"
+fi
+echo -e " ... press return key ... "
+read dummy
diff --git a/.vim/c-support/syntax/c.vim b/.vim/c-support/syntax/c.vim
new file mode 100644
index 0000000..395e0d9
--- /dev/null
+++ b/.vim/c-support/syntax/c.vim
@@ -0,0 +1,21 @@
+"===================================================================================
+"
+" FILE: c.vim
+" DESCRIPTION: syntax file
+" enable syntax based folding
+" part of the c-support plugin
+"
+" AUTHOR: Dr.-Ing. Fritz Mehner
+" EMAIL: mehner@fh-swf.de
+" COMPANY: FH Südwestfalen, Iserlohn
+" VERSION: 1.0
+" CREATED: 11.03.2006
+" REVISION: ---
+"===================================================================================
+"
+" fold C blocks
+"
+syn region cBlock start="{" end="}" transparent fold
+set foldmethod=syntax
+set foldlevel=999
+
diff --git a/.vim/c-support/templates/Templates b/.vim/c-support/templates/Templates
new file mode 100644
index 0000000..9aa86fc
--- /dev/null
+++ b/.vim/c-support/templates/Templates
@@ -0,0 +1,26 @@
+$
+$ =============================================================
+$ ========== USER MACROS ======================================
+$ =============================================================
+$
+|AUTHOR| = Ryan Kavanagh
+|AUTHORREF| = ryanakca
+|EMAIL| = ryanakca@kubuntu.org
+|COPYRIGHT| = Copyright (c) 2008 Ryan Kavanagh
+|LICENSE| = GNU GPL v2
+$
+$ =============================================================
+$ ========== FILE INCLUDES ====================================
+$ =============================================================
+$
+|includefile| = c.comments.template
+|includefile| = c.cpp.template
+|includefile| = c.idioms.template
+|includefile| = c.preprocessor.template
+|includefile| = c.statements.template
+
+$|includefile| = cpp.comments.template
+$|includefile| = cpp.cpp.template
+$|includefile| = cpp.idioms.template
+$|includefile| = cpp.preprocessor.template
+$|includefile| = cpp.statements.template
diff --git a/.vim/c-support/templates/c.comments.template b/.vim/c-support/templates/c.comments.template
new file mode 100644
index 0000000..8080968
--- /dev/null
+++ b/.vim/c-support/templates/c.comments.template
@@ -0,0 +1,147 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.end-of-line-comment == append ==
+/* <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.frame ==
+/*--------------------------------------------------------------------------
+ * <CURSOR>
+ *------------------------------------------------------------------------*/
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.function ==
+/*
+ * === FUNCTION ==========================================================
+ * Name: |?FUNCTION_NAME|
+ * Description: <CURSOR>
+ * =========================================================================
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.method ==
+/*
+ *--------------------------------------------------------------------------
+ * Class: |?CLASSNAME|
+ * Method: |?METHODNAME|
+ * Description: <CURSOR>
+ *--------------------------------------------------------------------------
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.class ==
+/*
+ * =========================================================================
+ * Class: |?CLASSNAME|
+ * Description: <CURSOR>
+ * =========================================================================
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description == start ==
+/*
+ * =========================================================================
+ *
+ * Filename: |FILENAME|
+ *
+ * Description: <CURSOR>
+ *
+ * Version: 1.0
+ * Created: |DATE| |TIME|
+ * Revision: none
+ * Compiler: gcc
+ *
+ * Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+ * License: |LICENSE|
+ *
+ * =========================================================================
+ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-bug == append ==
+ /* :BUG:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-compiler == append ==
+ /* :COMPILER:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-todo == append ==
+ /* :TODO:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-tricky == append ==
+ /* :TRICKY:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-warning == append ==
+ /* :WARNING:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-workaround == append ==
+ /* :WORKAROUND:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-keyword == append ==
+ /* :|?KEYWORD:u|:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-header-includes ==
+/* ##### HEADER FILE INCLUDES ################################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-macros ==
+/* ##### MACROS - LOCAL TO THIS SOURCE FILE ################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-typedefs ==
+/* ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE ######################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-data-types ==
+/* ##### DATA TYPES - LOCAL TO THIS SOURCE FILE ############################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-defs ==
+/* ##### CLASS DEFINITIONS - LOCAL TO THIS SOURCE FILE ######################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-local-variables ==
+/* ##### VARIABLES - LOCAL TO THIS SOURCE FILE ################################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-prototypes ==
+/* ##### PROTOTYPES - LOCAL TO THIS SOURCE FILE ############################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-exported ==
+/* ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ############################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-local ==
+/* ##### FUNCTION DEFINITIONS - LOCAL TO THIS SOURCE FILE ##################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-exported ==
+/* ##### CLASS IMPLEMENTATIONS - EXPORTED CLASSES ############################# */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-local ==
+/* ##### CLASS IMPLEMENTATIONS - LOCAL CLASSES ################################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-header-includes ==
+/* ##### HEADER FILE INCLUDES ################################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-macros ==
+/* ##### EXPORTED MACROS ######################################################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-typedefs ==
+/* ##### EXPORTED TYPE DEFINITIONS ############################################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-data-types ==
+/* ##### EXPORTED DATA TYPES #################################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-class-defs ==
+/* ##### EXPORTED CLASS DEFINITIONS ############################################# */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-variables ==
+/* ##### EXPORTED VARIABLES ##################################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-function-declarations ==
+/* ##### EXPORTED FUNCTION DECLARATIONS ######################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.cpp.template b/.vim/c-support/templates/c.cpp.template
new file mode 100644
index 0000000..ce15421
--- /dev/null
+++ b/.vim/c-support/templates/c.cpp.template
@@ -0,0 +1,353 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.method-implementation ==
+<CURSOR>void
+|?CLASSNAME|::|?METHODNAME| ( )
+{
+ return ;
+} /* ----- end of method |CLASSNAME|::|?METHODNAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class ==
+/*
+ * =====================================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * =====================================================================================
+ */
+class |CLASSNAME|
+{
+ public:
+ /* ==================== LIFECYCLE ======================================= */
+ |CLASSNAME| (); /* constructor */
+
+ /* ==================== OPERATORS ======================================= */
+
+ /* ==================== OPERATIONS ======================================= */
+
+ /* ==================== ACCESS ======================================= */
+
+ /* ==================== INQUIRY ======================================= */
+
+ /* ==================== DATA MEMBERS ======================================= */
+ protected:
+
+ private:
+
+}; /* ----- end of class |CLASSNAME| ----- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *--------------------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ()
+{
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new ==
+/*
+ * =====================================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * =====================================================================================
+ */
+class |CLASSNAME|
+{
+ public:
+
+ /* ==================== LIFECYCLE ======================================= */
+ |CLASSNAME| (); /* constructor */
+ |CLASSNAME| ( const |CLASSNAME| &other ); /* copy constructor */
+ ~|CLASSNAME| (); /* destructor */
+
+ /* ==================== OPERATORS ======================================= */
+ const |CLASSNAME|& operator = ( const |CLASSNAME| &other ); /* assignment operator */
+
+ /* ==================== OPERATIONS ======================================= */
+
+ /* ==================== ACCESS ======================================= */
+
+ /* ==================== INQUIRY ======================================= */
+
+ /* ==================== DATA MEMBERS ======================================= */
+ protected:
+
+ private:
+
+}; /* ----- end of class |CLASSNAME| ----- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *--------------------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ()
+{
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) ----- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: copy constructor
+ *--------------------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (copy constructor) ----- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: ~|CLASSNAME|
+ * Description: destructor
+ *--------------------------------------------------------------------------------------
+ */
+|CLASSNAME|::~|CLASSNAME| ()
+{
+} /* ----- end of method |CLASSNAME|::~|CLASSNAME| (destructor) ----- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: operator =
+ * Description: assignment operator
+ *--------------------------------------------------------------------------------------
+ */
+const |CLASSNAME|&
+|CLASSNAME|::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} /* ----- end of method |CLASSNAME|::operator = (assignment operator) ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.error-class ==
+/*
+ * =====================================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * =====================================================================================
+ */
+class |CLASSNAME|
+{
+ public: |CLASSNAME| ( char *msg ):message(msg) { }
+ virtual ~|CLASSNAME| ( ) { }
+ virtual const char* what ( ) const throw ( ) { return message; }
+ protected: char *message;
+}; /* ----- end of class |CLASSNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-method-implementation ==
+template < class T >
+void<CURSOR> |?CLASSNAME|<T>::|?METHODNAME| ( )
+{
+ return ;
+} /* ----- end of method |CLASSNAME|<T>::|METHODNAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class ==
+/*
+ * =====================================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * =====================================================================================
+ */
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ /* ==================== LIFECYCLE ======================================= */
+ |CLASSNAME| (); /* constructor */
+
+ /* ==================== OPERATORS ======================================= */
+
+ /* ==================== OPERATIONS ======================================= */
+
+ /* ==================== ACCESS ======================================= */
+
+ /* ==================== INQUIRY ======================================= */
+
+ /* ==================== DATA MEMBERS ======================================= */
+ protected:
+
+ private:
+
+}; /* ---------- end of template class |CLASSNAME| ---------- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description:
+ *--------------------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME| < T >::|CLASSNAME| ()
+{
+} /* ---------- end of constructor of template class |CLASSNAME| ---------- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new ==
+/*
+ * =====================================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * =====================================================================================
+ */
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ /* ==================== LIFECYCLE ======================================= */
+ |CLASSNAME| (); /* constructor */
+ |CLASSNAME| (const |CLASSNAME| &other); /* copy constructor */
+ ~|CLASSNAME| (); /* destructor */
+
+ /* ==================== OPERATORS ======================================= */
+ const |CLASSNAME|& operator = ( const |CLASSNAME| &other ); /* assignment operator */
+
+ /* ==================== OPERATIONS ======================================= */
+
+ /* ==================== ACCESS ======================================= */
+
+ /* ==================== INQUIRY ======================================= */
+
+ /* ==================== DATA MEMBERS ======================================= */
+ protected:
+
+ private:
+
+}; /* ---------- end of template class |CLASSNAME| ---------- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *--------------------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::|CLASSNAME| ()
+{
+} /* ---------- end of constructor of template class |CLASSNAME| ---------- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: copy constructor
+ *--------------------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} /* ---------- end of copy constructor of template class |CLASSNAME| ---------- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: ~|CLASSNAME|
+ * Description: destructor
+ *--------------------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::~|CLASSNAME| ()
+{
+} /* ---------- end of destructor of template class |CLASSNAME| ---------- */
+
+/*
+ *--------------------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: operator =
+ * Description: assignment operator
+ *--------------------------------------------------------------------------------------
+ */
+template < class T >
+const |CLASSNAME|< T >& |CLASSNAME|< T >::operator = ( const |CLASSNAME| &other )
+{
+ return *this;
+} /* ---------- end of assignment operator of template class |CLASSNAME| ---------- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-function ==
+template <class T>
+<CURSOR>void |?TEMPALTE_FUNCTION_NAME| ( T param )
+{
+ return ;
+} /* ----- end of template function |?TEMPALTE_FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-in ==
+ostream &
+operator << ( ostream & os, const |?CLASSNAME| & obj )
+{
+ os << obj.<CURSOR> ;
+ return os;
+} /* ----- end of function operator << ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-out ==
+istream &
+operator >> ( istream & is, |?CLASSNAME| & obj )
+{
+ is >> obj.<CURSOR> ;
+ return is;
+} /* ----- end of function operator >> ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.try-catch ==
+try {<CURSOR>
+<SPLIT>}
+catch ( const &ExceptObj ) { /* handle exception: */
+}
+catch (...) { /* handle exception: unspezified */
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch ==
+catch ( <CURSOR>const &ExceptObj ) { /* handle exception: */
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch-points ==
+catch (...) { /* handle exception: */
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.extern ==
+extern "C" {<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-input-file ==
+char *ifs_file_name = "<CURSOR>"; /* input file name */
+ifstream ifs; /* create ifstream object */
+
+ifs.open (ifs_file_name); /* open ifstream */
+if (!ifs) {
+ cerr << "\nERROR : failed to open input file " << ifs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+
+
+ifs.close (); /* close ifstream */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-output-file ==
+char *ofs_file_name = "<CURSOR>"; /* output file name */
+ofstream ofs; /* create ofstream object */
+
+ofs.open (ofs_file_name); /* open ofstream */
+if (!ofs) {
+ cerr << "\nERROR : failed to open output file " << ofs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+
+
+ofs.close (); /* close ofstream */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.namespace ==
+namespace |?NAMESPACE|
+{<CURSOR>
+<SPLIT>} /* ----- end of |NAMESPACE| name ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.idioms.template b/.vim/c-support/templates/c.idioms.template
new file mode 100644
index 0000000..09bc0b7
--- /dev/null
+++ b/.vim/c-support/templates/c.idioms.template
@@ -0,0 +1,98 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function ==
+void<CURSOR>
+|?FUNCTION_NAME| ( )
+{
+<SPLIT> return ;
+} /* ----- end of function |FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function-static ==
+static void<CURSOR>
+|?FUNCTION_NAME| ( )
+{
+<SPLIT> return ;
+} /* ----- end of static function |FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.main ==
+int
+main ( int argc, char *argv[] )
+{<CURSOR>
+<SPLIT> return EXIT_SUCCESS;
+} /* ---------- end of function main ---------- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.enum ==
+enum |?ENUM_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of enum |ENUM_NAME| ---------- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.struct ==
+struct |?STRUCT_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of struct |STRUCT_NAME| ---------- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.union ==
+union |?UNION_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of union |UNION_NAME| ---------- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.calloc ==
+|?POINTER| = (<CURSOR>TYPE*)calloc ( (size_t)(COUNT), sizeof(TYPE) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.malloc ==
+|?POINTER| = (<CURSOR>TYPE*)malloc ( sizeof(TYPE) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-input-file ==
+FILE *|?FILEPOINTER|; /* input-file pointer */
+char *|FILEPOINTER|_file_name = "<CURSOR>"; /* input-file name */
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "r" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+
+if( fclose(|FILEPOINTER|) == EOF ) { /* close input file */
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-output-file ==
+FILE *|?FILEPOINTER|; /* output-file pointer */
+char *|FILEPOINTER|_file_name = "<CURSOR>"; /* output-file name */
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "w" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+
+if( fclose(|FILEPOINTER|) == EOF ) { /* close output file */
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fprintf ==
+fprintf ( |?FILEPOINTER|, "<CURSOR>\n", );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fscanf ==
+fscanf ( |?FILEPOINTER|, "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.preprocessor.template b/.vim/c-support/templates/c.preprocessor.template
new file mode 100644
index 0000000..3ec674a
--- /dev/null
+++ b/.vim/c-support/templates/c.preprocessor.template
@@ -0,0 +1,34 @@
+$-------------------------------------------------------------------------
+== preprocessor.define ==
+#define <CURSOR> /* */
+$-------------------------------------------------------------------------
+== preprocessor.undefine ==
+#undef <CURSOR> /* */
+$-------------------------------------------------------------------------
+== preprocessor.if-else-endif ==
+#if |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifdef-else-endif ==
+#ifdef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-else-endif ==
+#ifndef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-def-endif ==
+#ifndef |?BASENAME:L|_INC
+#define |BASENAME|_INC
+<CURSOR><SPLIT>
+#endif /* ----- #ifndef |BASENAME|_INC ----- */
+$-------------------------------------------------------------------------
diff --git a/.vim/c-support/templates/c.statements.template b/.vim/c-support/templates/c.statements.template
new file mode 100644
index 0000000..966ae3a
--- /dev/null
+++ b/.vim/c-support/templates/c.statements.template
@@ -0,0 +1,62 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.do-while ==
+do {
+<SPLIT>} while ( <CURSOR> ); /* ----- end do-while ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for ==
+for ( <CURSOR>; ; )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for-block ==
+for ( <CURSOR>; ; ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if ==
+if ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block ==
+if ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-else ==
+if ( <CURSOR> )
+<SPLIT>else
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block-else ==
+if ( <CURSOR> ) {
+<SPLIT>} else {
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while ==
+while ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while-block ==
+while ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.switch ==
+switch ( <CURSOR> ) {
+ case :
+ <SPLIT>break;
+
+ case :
+ break;
+
+ case :
+ break;
+
+ case :
+ break;
+
+ default:
+ break;
+} /* ----- end switch ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.case ==
+case <CURSOR>:
+break;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.block ==
+{<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.comments.template b/.vim/c-support/templates/cpp.comments.template
new file mode 100644
index 0000000..9929eab
--- /dev/null
+++ b/.vim/c-support/templates/cpp.comments.template
@@ -0,0 +1,139 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.end-of-line-comment == append ==
+// <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.frame ==
+//----------------------------------------------------------------------
+// <CURSOR>
+//----------------------------------------------------------------------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.function ==
+// === FUNCTION ===========================================================
+// Name: |?FUNCTION_NAME|
+// Description: <CURSOR>
+// ==========================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.method ==
+//---------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |?METHODNAME|
+// Description: <CURSOR>
+//---------------------------------------------------------------------------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.class ==
+// ==========================================================================
+// Class: |?CLASSNAME|
+// Description: <CURSOR>
+// ==========================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description == start ==
+// ==========================================================================
+//
+// Filename: |FILENAME|
+//
+// Description: <CURSOR>
+//
+// Version: 1.0
+// Created: |DATE| |TIME|
+// Revision: none
+// Compiler: g++
+//
+// Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+// License: |LICENSE|
+//
+// ==========================================================================
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-bug == append ==
+ // :BUG:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-compiler == append ==
+ // :COMPILER:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-todo == append ==
+ // :TODO:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-tricky == append ==
+ // :TRICKY:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-warning == append ==
+ // :WARNING:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-workaround == append ==
+ // :WORKAROUND:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-keyword == append ==
+ // :|?KEYWORD:u|:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-header-includes ==
+// ##### HEADER FILE INCLUDES ###################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-macros ==
+// ##### MACROS - LOCAL TO THIS SOURCE FILE ###################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-typedefs ==
+// ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE #########################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-data-types ==
+// ##### DATA TYPES - LOCAL TO THIS SOURCE FILE ###############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-defs ==
+// ##### CLASS DEFINITIONS - LOCAL TO THIS SOURCE FILE ########################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-local-variables ==
+// ##### VARIABLES - LOCAL TO THIS SOURCE FILE ################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-prototypes ==
+// ##### PROTOTYPES - LOCAL TO THIS SOURCE FILE ###############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-exported ==
+// ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-local ==
+// ##### FUNCTION DEFINITIONS - LOCAL TO THIS SOURCE FILE #####################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-exported ==
+// ##### CLASS IMPLEMENTATIONS - EXPORTED CLASSES #############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-local ==
+// ##### CLASS IMPLEMENTATIONS - LOCAL CLASSES ################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-header-includes ==
+// ##### HEADER FILE INCLUDES ###################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-macros ==
+// ##### EXPORTED MACROS ########################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-typedefs ==
+// ##### EXPORTED TYPE DEFINITIONS ##############################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-data-types ==
+// ##### EXPORTED DATA TYPES ####################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-class-defs ==
+// ##### EXPORTED CLASS DEFINITIONS #############################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-variables ==
+// ##### EXPORTED VARIABLES #####################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-function-declarations ==
+// ##### EXPORTED FUNCTION DECLARATIONS #########################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.cpp.template b/.vim/c-support/templates/cpp.cpp.template
new file mode 100644
index 0000000..7773989
--- /dev/null
+++ b/.vim/c-support/templates/cpp.cpp.template
@@ -0,0 +1,329 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.method-implementation ==
+<CURSOR>void
+|?CLASSNAME|::|?METHODNAME| ( )
+{
+ return ;
+} // ----- end of method |CLASSNAME|::|METHODNAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+
+ // ==================== OPERATORS =======================================
+
+ // ==================== OPERATIONS =======================================
+
+ // ==================== ACCESS =======================================
+
+ // ==================== INQUIRY =======================================
+
+ // ==================== DATA MEMBERS =======================================
+ protected:
+
+ private:
+
+}; // ----- end of class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ()
+{
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+ |CLASSNAME| ( const |CLASSNAME| &other ); // copy constructor
+ ~|CLASSNAME| (); // destructor
+
+ // ==================== OPERATORS =======================================
+ const |CLASSNAME|& operator = ( const |CLASSNAME| &other ); // assignment operator
+
+ // ==================== OPERATIONS =======================================
+
+ // ==================== ACCESS =======================================
+
+ // ==================== INQUIRY =======================================
+
+ // ==================== DATA MEMBERS =======================================
+ protected:
+
+ private:
+
+}; // ----- end of class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ()
+{
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: copy constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (copy constructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: ~|CLASSNAME|
+// Description: destructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::~|CLASSNAME| ()
+{
+} // ----- end of method |CLASSNAME|::~|CLASSNAME| (destructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: operator =
+// Description: assignment operator
+//--------------------------------------------------------------------------------------
+const |CLASSNAME|&
+|CLASSNAME|::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} // ----- end of method |CLASSNAME|::operator = (assignment operator) -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.error-class ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public: |CLASSNAME| ( char *msg ):message(msg) { }
+ virtual ~|CLASSNAME| ( ) { }
+ virtual const char* what ( ) const throw ( ) { return message; }
+ protected: char *message;
+}; // ---------- end of class |CLASSNAME| ----------
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-method-implementation ==
+template < class T >
+void<CURSOR> |?CLASSNAME|<T>::|?METHODNAME| ( )
+{
+ return ;
+} // ----- end of method |CLASSNAME|<T>::|METHODNAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+
+ // ==================== OPERATORS =======================================
+
+ // ==================== OPERATIONS =======================================
+
+ // ==================== ACCESS =======================================
+
+ // ==================== INQUIRY =======================================
+
+ // ==================== DATA MEMBERS =======================================
+ protected:
+
+ private:
+
+}; // ----- end of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME| <T>:: |CLASSNAME| ()
+{
+} // ----- end of constructor of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+ |CLASSNAME| ( const |CLASSNAME| &other ); // copy constructor
+ ~|CLASSNAME| (); // destructor
+
+ // ==================== OPERATORS =======================================
+
+ const |CLASSNAME|& operator = ( const |CLASSNAME| &other ); // assignment operator
+
+ // ==================== OPERATIONS =======================================
+
+ // ==================== ACCESS =======================================
+
+ // ==================== INQUIRY =======================================
+
+ // ==================== DATA MEMBERS =======================================
+ protected:
+
+ private:
+
+}; // ----- end of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::|CLASSNAME| ()
+{
+} // ----- end of constructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: copy constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} // ----- end of copy constructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: ~|CLASSNAME|
+// Description: destructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::~|CLASSNAME| ()
+{
+} // ----- end of destructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: operator =
+// Description: assignment operator
+//--------------------------------------------------------------------------------------
+template < class T >
+const |CLASSNAME|<T>& |CLASSNAME|<T>::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} // ----- end of assignment operator of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-function ==
+template <class T>
+<CURSOR>void |?TEMPALTE_FUNCTION_NAME| ( T param )
+{
+ return ;
+} // ----- end of template function |?TEMPALTE_FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-in ==
+ostream &
+operator << ( ostream & os, const |?CLASSNAME| & obj )
+{
+ os << obj.<CURSOR> ;
+ return os;
+} // ----- end of function operator << -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-out ==
+istream &
+operator >> ( istream & is, |?CLASSNAME| & obj )
+{
+ is >> obj.<CURSOR> ;
+ return is;
+} // ----- end of function operator >> -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.try-catch ==
+try {<CURSOR>
+<SPLIT>}
+catch ( const &ExceptObj ) { // handle exception:
+}
+catch (...) { // handle exception: unspezified
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch ==
+catch ( <CURSOR>const &ExceptObj ) { // handle exception:
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch-points ==
+catch (...) { // handle exception:
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.extern ==
+extern "C" {<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-input-file ==
+char *ifs_file_name = "<CURSOR>"; // input file name
+ifstream ifs; // create ifstream object
+
+ifs.open (ifs_file_name); // open ifstream
+if (!ifs) {
+ cerr << "\nERROR : failed to open input file " << ifs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+
+
+ifs.close (); // close ifstream
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-output-file ==
+char *ofs_file_name = "<CURSOR>"; // output file name
+ofstream ofs; // create ofstream object
+
+ofs.open (ofs_file_name); // open ofstream
+if (!ofs) {
+ cerr << "\nERROR : failed to open output file " << ofs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+
+
+ofs.close (); // close ofstream
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.namespace ==
+namespace |?NAMESPACE|
+{<CURSOR>
+<SPLIT>} // ----- end of |NAMESPACE| name -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.idioms.template b/.vim/c-support/templates/cpp.idioms.template
new file mode 100644
index 0000000..febc375
--- /dev/null
+++ b/.vim/c-support/templates/cpp.idioms.template
@@ -0,0 +1,98 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function ==
+void<CURSOR>
+|?FUNCTION_NAME| ( )
+{
+<SPLIT> return ;
+} // ----- end of function |FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function-static ==
+static void<CURSOR>
+|?FUNCTION_NAME| ( )
+{
+<SPLIT> return ;
+} // ----- end of static function |FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.main ==
+int
+main ( int argc, char *argv[] )
+{<CURSOR>
+<SPLIT> return EXIT_SUCCESS;
+} // ---------- end of function main ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.enum ==
+enum |?ENUM_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of enum |ENUM_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.struct ==
+struct |?STRUCT_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of struct |STRUCT_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.union ==
+union |?UNION_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of union |UNION_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.calloc ==
+|?POINTER| = (<CURSOR>TYPE*)calloc ( (size_t)(COUNT), sizeof(TYPE) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.malloc ==
+|?POINTER| = (<CURSOR>TYPE*)malloc ( sizeof(TYPE) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-input-file ==
+FILE *|?FILEPOINTER|; // input-file pointer
+char *|FILEPOINTER|_file_name = "<CURSOR>"; // input-file name
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "r" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+
+if( fclose(|FILEPOINTER|) == EOF ) { // close input file
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-output-file ==
+FILE *|?FILEPOINTER|; // output-file pointer
+char *|FILEPOINTER|_file_name = "<CURSOR>"; // output-file name
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "w" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+
+if( fclose(|FILEPOINTER|) == EOF ) { // close output file
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fprintf ==
+fprintf ( |?FILEPOINTER|, "<CURSOR>\n", );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fscanf ==
+fscanf ( |?FILEPOINTER|, "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.preprocessor.template b/.vim/c-support/templates/cpp.preprocessor.template
new file mode 100644
index 0000000..dbf8abb
--- /dev/null
+++ b/.vim/c-support/templates/cpp.preprocessor.template
@@ -0,0 +1,34 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.define ==
+#define <CURSOR> //
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.undefine ==
+#undef <CURSOR> //
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.if-else-endif ==
+#if |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+
+#endif // ----- not |CONDITION| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.ifdef-else-endif ==
+#ifdef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+
+#endif // ----- not |CONDITION| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.ifndef-else-endif ==
+#ifndef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+
+#endif // ----- not |CONDITION| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== preprocessor.ifndef-def-endif ==
+#ifndef |?BASENAME:L|_INC
+#define |BASENAME|_INC
+<CURSOR><SPLIT>
+#endif // ----- #ifndef |BASENAME|_INC -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.statements.template b/.vim/c-support/templates/cpp.statements.template
new file mode 100644
index 0000000..8018334
--- /dev/null
+++ b/.vim/c-support/templates/cpp.statements.template
@@ -0,0 +1,62 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.do-while ==
+do {
+<SPLIT>} while ( <CURSOR> ); // ----- end do-while -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for ==
+for ( <CURSOR>; ; )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for-block ==
+for ( <CURSOR>; ; ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if ==
+if ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block ==
+if ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-else ==
+if ( <CURSOR> )
+<SPLIT>else
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block-else ==
+if ( <CURSOR> ) {
+<SPLIT>} else {
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while ==
+while ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while-block ==
+while ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.switch ==
+switch ( <CURSOR> ) {
+ case :
+ <SPLIT>break;
+
+ case :
+ break;
+
+ case :
+ break;
+
+ case :
+ break;
+
+ default:
+ break;
+} // ----- end switch -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.case ==
+case <CURSOR>:
+break;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.block ==
+{<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/wordlists/c-c++-keywords.list b/.vim/c-support/wordlists/c-c++-keywords.list
new file mode 100644
index 0000000..5a97dd6
--- /dev/null
+++ b/.vim/c-support/wordlists/c-c++-keywords.list
@@ -0,0 +1,209 @@
+adjustfield
+basefield
+boolalpha
+floatfield
+internal
+scientific
+setbase
+setiosflags
+setprecision
+showbase
+showpoint
+showpos
+uppercase
+
+auto
+break
+case
+char
+const
+continue
+default
+double
+else
+enum
+extern
+float
+goto
+inline
+long
+register
+restrict
+return
+short
+signed
+sizeof
+static
+struct
+switch
+typedef
+union
+unsigned
+void
+volatile
+while
+_Bool
+_Complex
+_Imaginary
+EXIT_FAILURE
+EXIT_SUCCESS
+
+bool
+catch
+class
+const_cast
+delete
+dynamic_cast
+explicit
+export
+false
+friend
+mutable
+namespace
+operator
+private
+protected
+public
+reinterpret_cast
+static_cast
+template
+this
+throw
+true
+typeid
+typename
+using
+virtual
+wchar_t
+
+and_eq
+bitand
+bitor
+compl
+not_eq
+or_eq
+xor_eq
+
+define
+defined
+elif
+endif
+error
+ifdef
+ifndef
+include
+pragma
+undef
+
+exception
+bad_alloc
+bad_exception
+bad_cast
+bad_typeid
+ios_base::failure
+logic_error
+domain_error
+invalid_argument
+length_error
+out_of_range
+runtime_error
+range_error
+overflow_error
+underflow_error
+uncaught_exception
+
+__DATE__
+__FILE__
+__LINE__
+__STDC__
+__STDC_HOSTED__
+__STDC_IEC_559__
+__STDC_IEC_559_COMPLEX__
+__STDC_ISO_10646__
+__STDC_VERSION__
+__TIME__
+__func__
+__cplusplus
+
+__BORLANDC__
+__CYGWIN__
+__CYGWIN32__
+__GNUC__
+__WIN32__
+__WINDOWS__
+
+assert
+ctype
+errno
+float
+limits
+locale
+math
+setjmp
+signal
+stdarg
+stddef
+stdio
+stdlib
+string
+time
+
+complex
+fenv
+inttypes
+iso646
+stdbool
+stdint
+tgmath
+wchar
+wctype
+
+algorithm
+bitset
+complex
+deque
+exception
+fstream
+functional
+iomanip
+ios
+iosfwd
+iostream
+istream
+iterator
+limits
+list
+locale
+
+map
+memory
+new
+numeric
+ostream
+queue
+set
+sstream
+stack
+stdexcept
+streambuf
+string
+typeinfo
+utility
+valarray
+vector
+
+cassert
+cctype
+cerrno
+cfloat
+climits
+clocale
+cmath
+csetjmp
+csignal
+cstdarg
+cstddef
+cstdio
+cstdlib
+cstring
+ctime
diff --git a/.vim/c-support/wordlists/k+r.list b/.vim/c-support/wordlists/k+r.list
new file mode 100644
index 0000000..805756a
--- /dev/null
+++ b/.vim/c-support/wordlists/k+r.list
@@ -0,0 +1,108 @@
+address
+allocator
+allocation
+argument
+arithmetic
+array
+assignement
+bitwise
+block
+character
+command
+condition
+conditional
+constant
+conversion
+declaration
+decrement
+defined
+definition
+descriptor
+description
+dimension
+evaluation
+expression
+external
+format
+formatted
+function
+global
+handling
+identifier
+implementation
+increment
+initialization
+input
+interface
+label
+lexical
+local
+logical
+lookup
+loop
+lvalue
+miscellaneous
+notation
+numerical
+operator
+operation
+output
+pointer
+precedence
+preprocessor
+preprocessing
+program
+random
+recursion
+recursive
+reference
+referential
+relational
+scope
+standard
+statement
+string
+structure
+system
+undefined
+variable
+
+abstract
+algorithm
+alignment
+application
+assignment
+asynchronous
+binary
+buffer
+component
+constructor
+container
+destructor
+difference
+enumeration
+exception
+floating-point
+horizontal
+inheritance
+instantiation
+integer
+internal
+invariant
+iterator
+localization
+overflow
+overload
+override
+overwrite
+polymorphic
+portability
+position
+postcondition
+precision
+precondition
+prototype
+subscript
+underflow
+vertical
+whitespace
diff --git a/.vim/c-support/wordlists/stl_index.list b/.vim/c-support/wordlists/stl_index.list
new file mode 100644
index 0000000..b5d98a3
--- /dev/null
+++ b/.vim/c-support/wordlists/stl_index.list
@@ -0,0 +1,202 @@
+accumulate
+adjacent_difference
+adjacent_find
+advance
+append
+assign
+auto_ptr
+back
+back_inserter
+basic_string
+bidirectional_iterator
+bidirectional_iterator_tag
+binary_compose
+binary_function
+binary_negate
+binary_search
+bind1st
+bind2nd
+bit_vector
+bitset
+capacity
+char_producer
+char_traits
+char_type
+compare
+construct
+copy
+copy_backward
+copy_n
+count
+count_if
+deque
+destroy
+distance
+distance_type
+divides
+equal
+equal_range
+equal_to
+erase
+fill
+fill_n
+find
+find_end
+find_first_not_of
+find_first_of
+find_if
+find_last_not_of
+find_last_of
+for_each
+forward_iterator
+forward_iterator_tag
+front
+front_inserter
+generate
+generate_n
+get_temporary_buffer
+greater
+greater_equal
+hash
+hash_map
+hash_multimap
+hash_multiset
+hash_set
+identity
+includes
+inner_product
+inplace_merge
+input_iterator
+input_iterator_tag
+insert
+insert_iterator
+inserter
+int_type
+iota
+is_heap
+is_sorted
+istream_iterator
+istream_type
+istreambuf_iterator
+iter_swap
+iterator_category
+iterator_traits
+less
+less_equal
+lexicographical_compare
+lexicographical_compare_3way
+list
+logical_and
+logical_not
+logical_or
+lower_bound
+make_heap
+make_pair
+map
+max
+max_element
+mem_fun1_ref_t
+mem_fun1_t
+mem_fun_ref_t
+mem_fun_t
+merge
+min
+min_element
+minus
+mismatch
+modulus
+multimap
+multiplies
+multiset
+negate
+next_permutation
+not_equal_to
+nth_element
+operator
+ostream_iterator
+ostreambuf_iterator
+output_iterator
+output_iterator_tag
+pair
+partial_sort
+partial_sort_copy
+partial_sum
+partition
+plus
+pointer_to_binary_function
+pointer_to_unary_function
+pop_back
+pop_front
+pop_heap
+power
+prev_permutation
+priority_queue
+project1st
+project2nd
+ptr_fun
+push_back
+push_front
+push_heap
+queue
+random_access_iterator
+random_access_iterator_tag
+random_sample
+random_sample_n
+random_shuffle
+raw_storage_iterator
+release
+remove
+remove_copy
+remove_copy_if
+remove_if
+replace
+replace_copy
+replace_copy_if
+replace_if
+reset
+resize
+return_temporary_buffer
+reverse
+reverse_bidirectional_iterator
+reverse_copy
+reverse_iterator
+rfind
+rope
+rotate
+rotate_copy
+search
+search_n
+select1st
+select2nd
+sequence_buffer
+set
+set_difference
+set_intersection
+set_symmetric_difference
+set_union
+slist
+sort
+sort_heap
+stable_partition
+stable_sort
+stack
+streambuf_type
+substr
+subtractive_rng
+swap
+swap_ranges
+temporary_buffer
+transform
+unary_compose
+unary_function
+unary_negate
+uninitialized_copy
+uninitialized_copy_n
+uninitialized_fill
+uninitialized_fill_n
+unique
+unique_copy
+upper_bound
+value_comp
+value_type
+vector
diff --git a/.vim/colors/adam.vim b/.vim/colors/adam.vim
new file mode 100644
index 0000000..748ca7f
--- /dev/null
+++ b/.vim/colors/adam.vim
@@ -0,0 +1,48 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+"
+" Based on an original vim color file by
+" Ron Aaron <ron@mossbayeng.com> (2001 Jul 28)
+"
+" Maintainer: Adam Krouskop
+" Last Change: 2003 Jul 3
+
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "adam"
+hi Normal guifg=#008844 guibg=#002244
+hi NonText guifg=brown
+hi comment guifg=#D80033
+hi constant guifg=#CCCCCC
+hi identifier guifg=#0033FF gui=NONE
+hi statement guifg=white gui=NONE
+hi preproc guifg=#009999
+hi type guifg=#0033FF gui=NONE
+hi special guifg=#FFFF00 gui=NONE
+hi ErrorMsg guifg=Black guibg=Red
+hi WarningMsg guifg=Black guibg=Green
+hi Error guibg=Red
+hi Todo guifg=Black guibg=orange
+hi Cursor guibg=#ffffff guifg=#cac2ff
+hi Search guibg=#103F5F gui=bold
+hi IncSearch gui=bold guibg=#285f7f
+hi LineNr guifg=darkgrey
+hi title guifg=darkgrey
+hi StatusLineNC gui=NONE guifg=lightblue guibg=darkblue
+hi StatusLine gui=bold guifg=cyan guibg=blue
+hi label guifg=gold2
+hi operator guifg=orange
+hi clear Visual
+hi Visual term=reverse cterm=reverse gui=reverse
+hi DiffChange guibg=darkgreen
+hi DiffText guibg=olivedrab
+hi DiffAdd guibg=slateblue
+hi DiffDelete guibg=coral
+hi Folded guibg=gray30
+hi FoldColumn guibg=gray30 guifg=white
+hi cIf0 guifg=gray
diff --git a/.vim/colors/adaryn.vim b/.vim/colors/adaryn.vim
new file mode 100644
index 0000000..1b17f22
--- /dev/null
+++ b/.vim/colors/adaryn.vim
@@ -0,0 +1,72 @@
+" Vim color file
+" Maintainer: Glenn T. Norton <gtnorton@adaryn.com>
+" Last Change: 2003-04-11
+
+" adaryn - A color scheme named after my daughter, Adaryn. (A-da-rin)
+" I like deep, sharp colors and this scheme is inspired by
+" Bohdan Vlasyuk's darkblue.
+" The cterm background is black since the dark blue was just too light.
+" Also the cterm colors are very close to an old Borland C++ color setup.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "adaryn"
+
+hi Normal guifg=#fffff0 guibg=#00003F ctermfg=white ctermbg=Black
+hi ErrorMsg guifg=#ffffff guibg=#287eff ctermfg=white ctermbg=red
+hi Visual guifg=#8080ff guibg=fg gui=reverse ctermfg=blue ctermbg=fg cterm=reverse
+
+hi VisualNOS guifg=#8080ff guibg=fg gui=reverse,underline ctermfg=lightblue ctermbg=fg cterm=reverse,underline
+
+hi Todo guifg=#d14a14 guibg=#1248d1 ctermfg=red ctermbg=darkblue
+
+hi Search guifg=#90fff0 guibg=#2050d0 ctermfg=white ctermbg=darkblue cterm=underline term=underline
+
+hi IncSearch guifg=#b0ffff guibg=#2050d0 ctermfg=darkblue ctermbg=gray
+
+hi SpecialKey guifg=cyan ctermfg=darkcyan
+hi Directory guifg=cyan ctermfg=cyan
+hi Title guifg=#BDD094 gui=none ctermfg=magenta cterm=bold
+hi WarningMsg guifg=red ctermfg=red
+hi WildMenu guifg=yellow guibg=black ctermfg=yellow ctermbg=black cterm=none term=none
+hi ModeMsg guifg=#22cce2 ctermfg=lightblue
+hi MoreMsg ctermfg=darkgreen ctermfg=darkgreen
+hi Question guifg=green gui=none ctermfg=green cterm=none
+hi NonText guifg=#0030ff ctermfg=darkblue
+
+hi StatusLine guifg=blue guibg=darkgray gui=none ctermfg=blue ctermbg=gray term=none cterm=none
+
+hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+
+hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+
+hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+
+hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+
+hi LineNr guifg=#90f020 ctermfg=green cterm=none
+
+hi DiffAdd guibg=darkblue ctermbg=darkblue term=none cterm=none
+hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
+hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
+
+hi Cursor guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
+hi lCursor guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
+
+
+hi Comment guifg=yellow ctermfg=Yellow
+hi Constant ctermfg=green guifg=green cterm=none
+hi Special ctermfg=White guifg=#FFFFFF cterm=none gui=none
+hi Identifier ctermfg=DarkRed guifg=#BDD094 cterm=none
+hi Statement ctermfg=LightCyan cterm=none guifg=#A9A900 gui=none
+hi PreProc ctermfg=DarkRed guifg=#ffffff gui=none cterm=none
+hi type ctermfg=LightCyan guifg=LightBlue gui=none cterm=none
+hi Underlined cterm=underline term=underline
+hi Ignore guifg=bg ctermfg=bg
+
+
diff --git a/.vim/colors/adrian.vim b/.vim/colors/adrian.vim
new file mode 100644
index 0000000..ba830cd
--- /dev/null
+++ b/.vim/colors/adrian.vim
@@ -0,0 +1,97 @@
+" Vim colorscheme file
+" Maintainer: Adrian Nagle <vim@naglenet.org>
+" Last Change: 2001-09-25 07:48:15 Mountain Daylight Time
+" URL: http://www.naglenet.org/vim/syntax/adrian.vim
+" MAIN URL: http://www.naglenet.org/vim
+
+" This is my custom syntax file to override the defaults provided with Vim.
+" This file should be located in $HOME/vimfiles/colors.
+
+" This file should automatically be sourced by $RUNTIMEPATH.
+
+" NOTE(S):
+" *(1)
+" The color definitions assumes and is intended for a black or dark
+" background.
+
+" *(2)
+" This file is specifically in Unix style EOL format so that I can simply
+" copy this file between Windows and Unix systems. VIM can source files in
+" with the UNIX EOL format (only <NL> instead of <CR><NR> for DOS) in any
+" operating system if the 'fileformats' is not empty and there is no <CR>
+" just before the <NL> on the first line. See ':help :source_crnl' and
+" ':help fileformats'.
+"
+" *(3)
+" Move this file to adrian.vim for vim6.0aw.
+"
+
+
+
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "adrian"
+
+" Normal is for the normal (unhighlighted) text and background.
+" NonText is below the last line (~ lines).
+highlight Normal guibg=Black guifg=Green
+highlight Cursor guibg=Grey70 guifg=White
+highlight NonText guibg=Grey80
+highlight StatusLine gui=bold guibg=DarkGrey guifg=Orange
+highlight StatusLineNC guibg=DarkGrey guifg=Orange
+
+highlight Comment term=bold ctermfg=LightGrey guifg=#d1ddff
+highlight Constant term=underline ctermfg=White guifg=#ffa0a0
+"highlight Number term=underline ctermfg=Yellow guifg=Yellow
+highlight Identifier term=underline ctermfg=Cyan guifg=#40ffff
+highlight Statement term=bold ctermfg=Yellow gui=bold guifg=#ffff60
+highlight PreProc term=underline ctermfg=Blue guifg=#ff4500
+highlight Type term=underline ctermfg=DarkGrey gui=bold guifg=#7d96ff
+highlight Special term=bold ctermfg=Magenta guifg=Orange
+highlight Ignore ctermfg=black guifg=bg
+highlight Error ctermfg=White ctermbg=Red guifg=White guibg=Red
+highlight Todo ctermfg=Blue ctermbg=Yellow guifg=Blue guibg=Yellow
+
+" Change the highlight of search matches (for use with :set hls).
+highlight Search ctermfg=Black ctermbg=Yellow guifg=Black guibg=Yellow
+
+" Change the highlight of visual highlight.
+highlight Visual cterm=NONE ctermfg=Black ctermbg=LightGrey gui=NONE guifg=Black guibg=Grey70
+
+highlight Float ctermfg=Blue guifg=#88AAEE
+highlight Exception ctermfg=Red ctermbg=White guifg=Red guibg=White
+highlight Typedef ctermfg=White ctermbg=Blue gui=bold guifg=White guibg=Blue
+highlight SpecialChar ctermfg=Black ctermbg=White guifg=Black guibg=White
+highlight Delimiter ctermfg=White ctermbg=Black guifg=White guibg=Black
+highlight SpecialComment ctermfg=Black ctermbg=Green guifg=Black guibg=Green
+
+" Common groups that link to default highlighting.
+" You can specify other highlighting easily.
+highlight link String Constant
+highlight link Character Constant
+highlight link Number Constant
+highlight link Boolean Statement
+"highlight link Float Number
+highlight link Function Identifier
+highlight link Conditional Type
+highlight link Repeat Type
+highlight link Label Type
+highlight link Operator Type
+highlight link Keyword Type
+"highlight link Exception Type
+highlight link Include PreProc
+highlight link Define PreProc
+highlight link Macro PreProc
+highlight link PreCondit PreProc
+highlight link StorageClass Type
+highlight link Structure Type
+"highlight link Typedef Type
+"highlight link SpecialChar Special
+highlight link Tag Special
+"highlight link Delimiter Special
+"highlight link SpecialComment Special
+highlight link Debug Special
+
diff --git a/.vim/colors/af.vim b/.vim/colors/af.vim
new file mode 100644
index 0000000..d85e7d3
--- /dev/null
+++ b/.vim/colors/af.vim
@@ -0,0 +1,99 @@
+" Vim color file
+" Maintainer: Stanislav Lechev [AngelFire] <af@mis.bg>
+" Last Change: 2004/03/31
+" URL: http://af.mis.bg/vim/af.vim
+" ICQ: 2924004
+" Info: based on desert and a little bit of gothic
+" Version: 1.1
+
+set background=dark
+if version > 580
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="af"
+
+hi User1 guibg=darkblue guifg=yellow
+hi User2 guibg=darkblue guifg=lightblue
+hi User3 guibg=darkblue guifg=red
+hi User4 guibg=darkblue guifg=cyan
+hi User5 guibg=darkblue guifg=lightgreen
+set statusline=%<%1*===\ %5*%f%1*%(\ ===\ %4*%h%1*%)%(\ ===\ %4*%m%1*%)%(\ ===\ %4*%r%1*%)\ ===%====\ %2*%b(0x%B)%1*\ ===\ %3*%l,%c%V%1*\ ===\ %5*%P%1*\ ===%0* laststatus=2
+
+
+hi Normal guifg=#dfdfdf guibg=#000000
+"hi Normal guifg=#87dee0 guibg=#000000
+"hi Normal guifg=#98fb98 guibg=#000000
+hi Cursor guibg=khaki guifg=slategrey
+hi Comment guifg=#808080
+"hi Identifier guifg=#98FB98
+hi Identifier guifg=#87def0
+hi Constant guifg=#FF99FF
+"hi String guifg=#87cee0
+hi String guifg=lightred
+hi Character guifg=#87cee0
+hi Statement guifg=khaki
+hi PreProc guifg=red
+"hi Type guifg=#a0a0ff gui=none
+hi Type guifg=lightgreen gui=none
+hi Todo guifg=orangered guibg=yellow2
+hi Special guifg=Orange
+hi Visual guifg=SkyBlue guibg=grey60 gui=none
+hi IncSearch guifg=#ffff60 guibg=#0000ff gui=none
+hi Search guifg=khaki guibg=slategrey gui=none
+hi Ignore guifg=grey40
+
+hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
+hi Folded guibg=grey30 guifg=gold
+hi FoldColumn guibg=grey30 guifg=tan
+hi ModeMsg guifg=goldenrod
+hi MoreMsg guifg=SeaGreen
+hi NonText guifg=LightBlue guibg=#000000
+hi Question guifg=springgreen
+hi SpecialKey guifg=yellowgreen
+hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
+hi Title guifg=indianred
+hi WarningMsg guifg=salmon
+
+
+" these are from desert ... i didn't change it
+" color terminal definitions
+hi SpecialKey ctermfg=darkgreen
+hi NonText cterm=bold ctermfg=darkblue
+hi Directory ctermfg=darkcyan
+hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
+hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
+hi Search cterm=NONE ctermfg=grey ctermbg=blue
+hi MoreMsg ctermfg=darkgreen
+hi ModeMsg cterm=NONE ctermfg=brown
+hi LineNr ctermfg=3
+hi Question ctermfg=green
+hi StatusLine cterm=bold,reverse
+hi StatusLineNC cterm=reverse
+hi VertSplit cterm=reverse
+hi Title ctermfg=5
+hi Visual cterm=reverse
+hi VisualNOS cterm=bold,underline
+hi WarningMsg ctermfg=1
+hi WildMenu ctermfg=0 ctermbg=3
+hi Folded ctermfg=darkgrey ctermbg=NONE
+hi FoldColumn ctermfg=darkgrey ctermbg=NONE
+hi DiffAdd ctermbg=4
+hi DiffChange ctermbg=5
+hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
+hi DiffText cterm=bold ctermbg=1
+hi Comment ctermfg=darkcyan
+hi Constant ctermfg=brown
+hi Special ctermfg=5
+hi Identifier ctermfg=6
+hi Statement ctermfg=3
+hi PreProc ctermfg=5
+hi Type ctermfg=2
+hi Underlined cterm=underline ctermfg=5
+hi Ignore cterm=bold ctermfg=7
+hi Error cterm=bold ctermfg=7 ctermbg=1
+
+
+"vim: sw=4
diff --git a/.vim/colors/aiseered.vim b/.vim/colors/aiseered.vim
new file mode 100644
index 0000000..7e71108
--- /dev/null
+++ b/.vim/colors/aiseered.vim
@@ -0,0 +1,37 @@
+" gVim color file for working with files in GDL/VCG format.
+" Works nice in conjunction with gdl.vim
+" (see www.vim.org or www.aisee.com)
+" Works fine for C/C++, too.
+
+" Author : Alexander A. Evstyugov-Babaev <alex@absint.com>
+" Version: 0.2 for gVim/Linux,
+" tested with gVim 6.3.25 under Ubuntu Linux (Warty)
+" by Jo Vermeulen <jo@lumumba.luc.ac.be>
+" Date : January 25th 2005
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name="aiseered"
+
+hi Normal guifg=lightred guibg=#600000
+hi Cursor guifg=bg guibg=fg
+hi ErrorMsg guibg=red ctermfg=1
+hi Search term=reverse ctermfg=darkred ctermbg=lightred guibg=lightred guifg=#060000
+
+hi Comment guifg=#ffffff
+hi Constant guifg=#88ddee
+hi String guifg=#ffcc88
+hi Character guifg=#ffaa00
+hi Number guifg=#88ddee
+hi Identifier guifg=#cfcfcf
+hi Statement guifg=#eeff99 gui=bold
+hi PreProc guifg=firebrick1 gui=italic
+hi Type guifg=#88ffaa gui=none
+hi Special guifg=#ffaa00
+hi SpecialChar guifg=#ffaa00
+hi StorageClass guifg=#ddaacc
+hi Error guifg=red guibg=white
diff --git a/.vim/colors/aqua.vim b/.vim/colors/aqua.vim
new file mode 100644
index 0000000..483b6ac
--- /dev/null
+++ b/.vim/colors/aqua.vim
@@ -0,0 +1,44 @@
+" Vim color file
+" Maintainer: tranquility@portugalmail.pt
+" Last Change: 6 Apr 2002
+
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="aqua"
+
+hi Normal guibg=steelblue guifg=linen
+hi Cursor guibg=lightblue3 guifg=black gui=bold
+hi VertSplit guifg=white guibg=navyblue gui=none
+hi Folded guibg=darkblue guifg=white
+hi FoldColumn guibg=lightgray guifg=navyblue
+hi ModeMsg guifg=black guibg=steelblue1
+hi MoreMsg guifg=black guibg=steelblue1
+hi NonText guifg=white guibg=steelblue4 gui=none
+hi Question guifg=snow
+hi Search guibg=#FFFFFF guifg=midnightblue gui=bold
+hi SpecialKey guifg=navyblue
+hi StatusLine guibg=skyblue3 guifg=black gui=none
+hi StatusLineNC guibg=skyblue1 guifg=black gui=none
+hi Title guifg=bisque3
+hi Subtitle guifg=black
+hi Visual guifg=white guibg=royalblue4 gui=none
+hi WarningMsg guifg=salmon4 guibg=gray60 gui=bold
+hi Comment guifg=lightskyblue
+hi Constant guifg=turquoise gui=bold
+hi Identifier guifg=lightcyan
+hi Statement guifg=royalblue4
+hi PreProc guifg=black gui=bold
+hi Type guifg=lightgreen
+hi Special guifg=navajowhite
+hi Ignore guifg=grey29
+hi Todo guibg=black guifg=white
+hi WildMenu guibg=aquamarine
diff --git a/.vim/colors/astronaut.vim b/.vim/colors/astronaut.vim
new file mode 100644
index 0000000..ae1dbf2
--- /dev/null
+++ b/.vim/colors/astronaut.vim
@@ -0,0 +1,160 @@
+" astronaut.vim: a colorscheme
+" Maintainer: Charles E. Campbell, Jr. <charles.e.campbell.1@gsfc.nasa.gov>
+" Date: Sep 01, 2004
+" Version: 6 NOT RELEASED
+"
+" Usage:
+" Put into your <.vimrc> file:
+" color astronaut
+"
+" Optional Modifiers:
+" let g:astronaut_bold=1 : term, cterm, and gui receive bold modifier
+" let g:astronaut_dark=1 : dark colors used (otherwise some terminals
+" make everything bold, which can be all one
+" color)
+" let g:astronaut_underline=1 : assume that underlining works on your terminal
+" let g:astronaut_italic=1 : allows italic to be used in gui
+" Examples:
+" iris : let astronaut_dark=1
+" Linux xterm: no modifiers needed
+"
+" GetLatestVimScripts: 122 1 :AutoInstall: astronaut.vim
+
+set background=dark
+hi clear
+if exists( "syntax_on" )
+ syntax reset
+endif
+let g:colors_name = "astronaut"
+let g:loaded_astronaut = "v6"
+
+" ---------------------------------------------------------------------
+" Default option values
+if !exists("g:astronaut_bold")
+ " on some machines, notably SGIs, a bold qualifier means everything is
+ " one color (SGIs: yellow)
+ let g:astronaut_bold= 0
+endif
+if !exists("g:astronaut_dark")
+ " this option, if true, means darkcolor (ex. darkred, darkmagenta, etc)
+ " is understood and wanted
+ let g:astronaut_dark= 0
+endif
+if !exists("g:astronaut_underline")
+ let g:astronaut_underline= 1
+endif
+if !exists("g:astronaut_italic")
+ let g:astronaut_italic= 0
+endif
+
+" ---------------------------------------------------------------------
+" Settings based on options
+if g:astronaut_bold != 0
+ let s:usebold=",bold"
+else
+ let s:usebold=""
+endif
+
+if g:astronaut_italic != 0
+ " only affects Alt* in gvim
+ let s:useitalic= ",italic"
+else
+ let s:useitalic= ""
+endif
+
+if g:astronaut_dark != 0
+ let s:black = "black"
+ let s:red = "darkred"
+ let s:green = "darkgreen"
+ let s:yellow = "darkyellow"
+ let s:blue = "darkblue"
+ let s:magenta = "darkmagenta"
+ let s:cyan = "darkcyan"
+ let s:white = "white"
+else
+ let s:black = "black"
+ let s:red = "red"
+ let s:green = "green"
+ let s:yellow = "yellow"
+ let s:blue = "blue"
+ let s:magenta = "magenta"
+ let s:cyan = "cyan"
+ let s:white = "white"
+endif
+
+if g:astronaut_underline != 0
+ let s:underline= ",underline"
+ let s:ulbg = ""
+else
+ let s:underline= "none"
+ if exists("g:astronaut_dark")
+ let s:ulbg = "ctermbg=darkmagenta guibg=magenta4"
+ else
+ let s:ulbg = "ctermbg=magenta guibg=magenta"
+ endif
+endif
+
+" ---------------------------------------------------------------------
+exe "hi Blue start= stop= ctermfg=".s:blue." guifg=blue guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Comment start= stop= ctermfg=".s:white." guifg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Conceal ctermfg=".s:blue." ctermbg=".s:black." guifg=Blue guibg=Black term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Constant start= stop= ctermfg=".s:yellow." guifg=yellow guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Cursor guifg=blue guibg=green term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Cyan start= stop= ctermfg=".s:cyan." guifg=cyan guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Debug start= stop= ctermfg=".s:red." guifg=magenta guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Delimiter start= stop= ctermfg=".s:white." guifg=white guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi DiffAdd ctermfg=".s:white." ctermbg=".s:magenta." guifg=White guibg=Magenta term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi DiffChange ctermfg=".s:black." ctermbg=".s:green." guifg=Black guibg=Green term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi DiffDelete ctermfg=".s:white." ctermbg=".s:blue." guifg=White guibg=Blue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi DiffText ctermfg=".s:white." ctermbg=".s:red." guifg=White guibg=Red term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Directory start= stop= ctermfg=".s:white." guifg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Error start= stop= ctermfg=".s:white." ctermbg=".s:red." guifg=white guibg=red term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi ErrorMsg ctermfg=".s:white." ctermbg=".s:red." guifg=White guibg=Red term=standout".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi FoldColumn start= stop= ctermfg=".s:cyan." ctermbg=".s:black." guifg=Cyan guibg=Brown term=standout".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Folded start= stop= ctermfg=".s:magenta." ctermbg=".s:black." guifg=magenta guibg=black term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Function start= stop= ctermfg=".s:cyan." guifg=cyan guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Green start= stop= ctermfg=".s:green." guifg=green guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Identifier start= stop= ctermfg=".s:magenta." guifg=magenta guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Ignore ctermfg=".s:black ." guifg=bg term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi IncSearch start= stop= ctermfg=".s:black ." ctermbg=".s:green." guifg=black guibg=green term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi LineNr ctermfg=".s:yellow." ".s:ulbg." guifg=Yellow term=none".s:underline.s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Magenta start= stop= ctermfg=".s:magenta." guifg=magenta guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Menu guifg=black guibg=gray75 term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi ModeMsg ctermfg=".s:green." guifg=SeaGreen term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi MoreMsg ctermfg=".s:green." guifg=SeaGreen term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi NonText ctermfg=".s:blue." guifg=Blue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Normal start= stop= ctermfg=".s:green." guifg=green guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi PreProc start= stop= ctermfg=".s:white." ctermbg=".s:blue." guifg=white guibg=blue3 term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Question start= stop= ctermfg=".s:yellow." guifg=yellow term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Red start= stop= ctermfg=".s:red." guifg=red guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Scrollbar guifg=gray80 guibg=gray70 term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Search start= stop= ctermfg=".s:yellow." ctermbg=".s:blue." guifg=yellow guibg=blue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Special start= stop= ctermfg=".s:green." ctermbg=".s:blue." guifg=green guibg=blue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi SpecialKey start= stop= ctermfg=".s:black." ctermbg=".s:magenta." guifg=black guibg=magenta term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Statement start= stop= ctermfg=".s:cyan." guifg=cyan guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi StatusLine start= stop= ctermfg=".s:black." ctermbg=".s:cyan." guifg=black guibg=cyan term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi StatusLineNC start= stop= ctermfg=".s:black." ctermbg=".s:green." guifg=black guibg=green term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi String start= stop= ctermfg=".s:yellow." guifg=yellow guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Subtitle start= stop= ctermfg=".s:magenta." guifg=magenta guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Tags start= stop= ctermfg=".s:yellow." ctermbg=".s:blue." guifg=yellow guibg=blue3 term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Title start= stop= ctermfg=".s:white." guifg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Todo start= stop= ctermfg=".s:white." ctermbg=".s:magenta." guifg=white guibg=magenta term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Type start= stop= ctermfg=".s:green." ".s:ulbg." guifg=seagreen1 term=none".s:underline.s:usebold." cterm=none".s:usebold.s:underline." gui=none".s:usebold.s:underline
+exe "hi Underlined ctermfg=".s:green." ".s:ulbg." guifg=green term=none".s:underline.s:usebold." cterm=none".s:usebold.s:underline." gui=none".s:usebold.s:underline
+exe "hi Unique start= stop= ctermfg=".s:blue." ctermbg=".s:white." guifg=blue3 guibg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi AltUnique start= stop= ctermfg=".s:magenta." ctermbg=".s:white." guifg=magenta guibg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi AltAltUnique start= stop= ctermfg=".s:black." ctermbg=".s:white." guifg=black guibg=white term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi VertSplit start= stop= ctermfg=".s:black." ctermbg=".s:green." guifg=black guibg=green term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Visual start= stop= ctermfg=black ctermbg=green guifg=Grey guibg=fg term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi VisualNOS ".s:ulbg." term=none".s:underline.s:usebold." cterm=none".s:usebold.s:underline." gui=none".s:usebold.s:underline
+exe "hi WarningMsg start= stop= ctermfg=".s:black." ctermbg=".s:yellow." guifg=black guibg=yellow term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi White start= stop= ctermfg=".s:white." guifg=white guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi WildMenu ctermfg=".s:black." ctermbg=".s:yellow." guifg=Black guibg=Yellow term=standout".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi Yellow start= stop= ctermfg=".s:yellow." guifg=yellow guibg=navyblue term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi lCursor guifg=bg guibg=fg term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold
+exe "hi AltConstant start= stop= ctermfg=".s:yellow." ctermbg=".s:black." guifg=yellow guibg=black term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold.s:useitalic
+exe "hi AltFunction start= stop= ctermfg=".s:green." ctermbg=".s:black." guifg=green guibg=black term=none".s:usebold." cterm=none".s:usebold." gui=none".s:usebold.s:useitalic
+exe "hi AltType start= stop= ctermfg=".s:green." ctermbg=".s:black." guifg=seagreen1 guibg=black term=none".s:underline.s:usebold." cterm=none".s:usebold.s:underline." gui=none".s:usebold.s:underline.s:useitalic
+exe "hi User1 ctermfg=".s:white." ctermbg=".s:blue." guifg=white guibg=blue"
+exe "hi User2 ctermfg=".s:yellow." ctermbg=".s:blue." guifg=yellow guibg=blue"
+" vim: nowrap
diff --git a/.vim/colors/asu1dark.vim b/.vim/colors/asu1dark.vim
new file mode 100644
index 0000000..ce5f90f
--- /dev/null
+++ b/.vim/colors/asu1dark.vim
@@ -0,0 +1,59 @@
+" Vim color file
+" Maintainer: A. Sinan Unur
+" Last Change: 2001/10/04
+
+" Dark color scheme
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="asu1dark"
+
+" Console Color Scheme
+hi Normal term=NONE cterm=NONE ctermfg=LightGray ctermbg=Black
+hi NonText term=NONE cterm=NONE ctermfg=Brown ctermbg=Black
+hi Function term=NONE cterm=NONE ctermfg=DarkCyan ctermbg=Black
+hi Statement term=BOLD cterm=BOLD ctermfg=DarkBlue ctermbg=Black
+hi Special term=NONE cterm=NONE ctermfg=DarkGreen ctermbg=Black
+hi SpecialChar term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black
+hi Constant term=NONE cterm=NONE ctermfg=Blue ctermbg=Black
+hi Comment term=NONE cterm=NONE ctermfg=DarkGray ctermbg=Black
+hi Preproc term=NONE cterm=NONE ctermfg=DarkGreen ctermbg=Black
+hi Type term=NONE cterm=NONE ctermfg=DarkMagenta ctermbg=Black
+hi Identifier term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black
+hi StatusLine term=BOLD cterm=NONE ctermfg=Yellow ctermbg=DarkBlue
+hi StatusLineNC term=NONE cterm=NONE ctermfg=Black ctermbg=Gray
+hi Visual term=NONE cterm=NONE ctermfg=White ctermbg=DarkCyan
+hi Search term=NONE cterm=NONE ctermbg=Yellow ctermfg=DarkBlue
+hi VertSplit term=NONE cterm=NONE ctermfg=Black ctermbg=Gray
+hi Directory term=NONE cterm=NONE ctermfg=Green ctermbg=Black
+hi WarningMsg term=NONE cterm=NONE ctermfg=Blue ctermbg=Yellow
+hi Error term=NONE cterm=NONE ctermfg=DarkRed ctermbg=Gray
+hi Cursor ctermfg=Black ctermbg=Cyan
+hi LineNr term=NONE cterm=NONE ctermfg=Red ctermbg=Black
+
+" GUI Color Scheme
+hi Normal gui=NONE guifg=White guibg=#110022
+hi NonText gui=NONE guifg=#ff9999 guibg=#444444
+hi Function gui=NONE guifg=#7788ff guibg=#110022
+hi Statement gui=BOLD guifg=Yellow guibg=#110022
+hi Special gui=NONE guifg=Cyan guibg=#110022
+hi Constant gui=NONE guifg=#ff9900 guibg=#110022
+hi Comment gui=NONE guifg=#99cc99 guibg=#110022
+hi Preproc gui=NONE guifg=#33ff66 guibg=#110022
+hi Type gui=NONE guifg=#ff5577 guibg=#110022
+hi Identifier gui=NONE guifg=Cyan guibg=#110022
+hi StatusLine gui=BOLD guifg=White guibg=#336600
+hi StatusLineNC gui=NONE guifg=Black guibg=#cccccc
+hi Visual gui=NONE guifg=White guibg=#00aa33
+hi Search gui=BOLD guibg=Yellow guifg=DarkBlue
+hi VertSplit gui=NONE guifg=White guibg=#666666
+hi Directory gui=NONE guifg=Green guibg=#110022
+hi WarningMsg gui=STANDOUT guifg=#0000cc guibg=Yellow
+hi Error gui=NONE guifg=White guibg=Red
+hi Cursor guifg=White guibg=#00ff33
+hi LineNr gui=NONE guifg=#cccccc guibg=#334444
+hi ModeMsg gui=NONE guifg=Blue guibg=White
+hi Question gui=NONE guifg=#66ff99 guibg=#110022
diff --git a/.vim/colors/automation.vim b/.vim/colors/automation.vim
new file mode 100644
index 0000000..b449145
--- /dev/null
+++ b/.vim/colors/automation.vim
@@ -0,0 +1,59 @@
+" Vim color file (automation.vim)
+" Maintainer: Ken McConnell <nacer@yahoo.com>
+" Last Change: 2004 Jan 15
+"
+" This color scheme uses a light grey background. It was created to simulate
+" the look of an IDE. It is named after the MFP Automation Team at HP Boise.
+"
+
+" First remove all existing highlighting.
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "automation"
+
+hi Normal ctermbg=Black ctermfg=LightGrey guifg=Black guibg=Grey96
+
+" Groups used in the 'highlight' and 'guicursor' options default value.
+hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
+hi IncSearch term=reverse cterm=bold gui=bold
+hi ModeMsg term=bold cterm=bold gui=bold
+hi StatusLine term=bold cterm=bold gui=bold
+hi StatusLineNC term=bold cterm=bold gui=bold
+hi VertSplit term=bold cterm=bold gui=bold
+hi Visual term=bold cterm=bold gui=bold guifg=Grey guibg=fg
+hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
+hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
+hi Cursor guibg=Black guifg=Black
+hi lCursor guibg=Cyan guifg=Black
+hi Directory term=bold ctermfg=LightCyan guifg=DarkBlue
+hi LineNr term=underline ctermfg=DarkGrey guifg=DarkGrey guibg=LightGrey
+hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen
+hi NonText term=bold ctermfg=LightBlue gui=bold guifg=DarkGreen guibg=grey80
+hi Question term=standout ctermfg=LightGreen gui=bold guifg=Green
+hi Search term=reverse ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
+hi SpecialKey term=bold ctermfg=DarkBlue guifg=DarkBlue
+hi Title term=bold ctermfg=LightMagenta gui=bold guifg=DarkBlue
+hi WarningMsg term=standout ctermfg=LightRed guifg=Red
+hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
+hi Folded term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
+hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
+hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue
+hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta
+hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan
+hi Comment guifg=Blue guibg=Grey90 ctermfg=DarkGreen
+hi String guifg=DarkGreen ctermfg=DarkGreen
+hi Statement guifg=DarkBlue ctermfg=Blue
+hi Label gui=bold guifg=DarkBlue
+" Groups for syntax highlighting
+hi Constant term=underline ctermfg=DarkBlue guifg=DarkBlue guibg=Grey96
+hi Special term=bold ctermfg=LightRed guifg=DarkBlue guibg=Grey96
+if &t_Co > 8
+ hi Statement term=bold cterm=bold ctermfg=DarkBlue guifg=DarkBlue
+endif
+hi Ignore ctermfg=LightGrey guifg=grey90
+
+" vim: sw=2
diff --git a/.vim/colors/autumn.vim b/.vim/colors/autumn.vim
new file mode 100644
index 0000000..f269b35
--- /dev/null
+++ b/.vim/colors/autumn.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/14 Mon 16:41.
+" version: 1.0
+" This color scheme uses a light background.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "autumn"
+
+hi Normal guifg=#404040 guibg=#fff4e8
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#404040 guibg=#e0e040
+hi Search gui=NONE guifg=#544060 guibg=#f0c0ff
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi WarningMsg gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi ModeMsg gui=NONE guifg=#d06000 guibg=NONE
+hi MoreMsg gui=NONE guifg=#0090a0 guibg=NONE
+hi Question gui=NONE guifg=#8000ff guibg=NONE
+
+" Split area
+hi StatusLine gui=BOLD guifg=#f8f8f8 guibg=#904838
+hi StatusLineNC gui=BOLD guifg=#c0b0a0 guibg=#904838
+hi VertSplit gui=NONE guifg=#f8f8f8 guibg=#904838
+hi WildMenu gui=BOLD guifg=#f8f8f8 guibg=#ff3030
+
+" Diff
+hi DiffText gui=NONE guifg=#2850a0 guibg=#c0d0f0
+hi DiffChange gui=NONE guifg=#208040 guibg=#c0f0d0
+hi DiffDelete gui=NONE guifg=#ff2020 guibg=#eaf2b0
+hi DiffAdd gui=NONE guifg=#ff2020 guibg=#eaf2b0
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#0080f0
+hi lCursor gui=NONE guifg=#ffffff guibg=#8040ff
+hi CursorIM gui=NONE guifg=#ffffff guibg=#8040ff
+
+" Fold
+hi Folded gui=NONE guifg=#804030 guibg=#ffc0a0
+hi FoldColumn gui=NONE guifg=#a05040 guibg=#f8d8c4
+
+" Other
+hi Directory gui=NONE guifg=#7050ff guibg=NONE
+hi LineNr gui=NONE guifg=#e0b090 guibg=NONE
+hi NonText gui=BOLD guifg=#a05040 guibg=#ffe4d4
+hi SpecialKey gui=NONE guifg=#0080ff guibg=NONE
+hi Title gui=BOLD guifg=fg guibg=NONE
+hi Visual gui=NONE guifg=#804020 guibg=#ffc0a0
+" hi VisualNOS gui=NONE guifg=#604040 guibg=#e8dddd
+
+" Syntax group
+hi Comment gui=NONE guifg=#ff5050 guibg=NONE
+hi Constant gui=NONE guifg=#00884c guibg=NONE
+hi Error gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi Identifier gui=NONE guifg=#b07800 guibg=NONE
+hi Ignore gui=NONE guifg=bg guibg=NONE
+hi PreProc gui=NONE guifg=#0090a0 guibg=NONE
+hi Special gui=NONE guifg=#8040f0 guibg=NONE
+hi Statement gui=BOLD guifg=#80a030 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#0080f0 guibg=NONE
+hi Type gui=BOLD guifg=#b06c58 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=blue guibg=NONE
diff --git a/.vim/colors/autumn2.vim b/.vim/colors/autumn2.vim
new file mode 100644
index 0000000..f269b35
--- /dev/null
+++ b/.vim/colors/autumn2.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/14 Mon 16:41.
+" version: 1.0
+" This color scheme uses a light background.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "autumn"
+
+hi Normal guifg=#404040 guibg=#fff4e8
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#404040 guibg=#e0e040
+hi Search gui=NONE guifg=#544060 guibg=#f0c0ff
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi WarningMsg gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi ModeMsg gui=NONE guifg=#d06000 guibg=NONE
+hi MoreMsg gui=NONE guifg=#0090a0 guibg=NONE
+hi Question gui=NONE guifg=#8000ff guibg=NONE
+
+" Split area
+hi StatusLine gui=BOLD guifg=#f8f8f8 guibg=#904838
+hi StatusLineNC gui=BOLD guifg=#c0b0a0 guibg=#904838
+hi VertSplit gui=NONE guifg=#f8f8f8 guibg=#904838
+hi WildMenu gui=BOLD guifg=#f8f8f8 guibg=#ff3030
+
+" Diff
+hi DiffText gui=NONE guifg=#2850a0 guibg=#c0d0f0
+hi DiffChange gui=NONE guifg=#208040 guibg=#c0f0d0
+hi DiffDelete gui=NONE guifg=#ff2020 guibg=#eaf2b0
+hi DiffAdd gui=NONE guifg=#ff2020 guibg=#eaf2b0
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#0080f0
+hi lCursor gui=NONE guifg=#ffffff guibg=#8040ff
+hi CursorIM gui=NONE guifg=#ffffff guibg=#8040ff
+
+" Fold
+hi Folded gui=NONE guifg=#804030 guibg=#ffc0a0
+hi FoldColumn gui=NONE guifg=#a05040 guibg=#f8d8c4
+
+" Other
+hi Directory gui=NONE guifg=#7050ff guibg=NONE
+hi LineNr gui=NONE guifg=#e0b090 guibg=NONE
+hi NonText gui=BOLD guifg=#a05040 guibg=#ffe4d4
+hi SpecialKey gui=NONE guifg=#0080ff guibg=NONE
+hi Title gui=BOLD guifg=fg guibg=NONE
+hi Visual gui=NONE guifg=#804020 guibg=#ffc0a0
+" hi VisualNOS gui=NONE guifg=#604040 guibg=#e8dddd
+
+" Syntax group
+hi Comment gui=NONE guifg=#ff5050 guibg=NONE
+hi Constant gui=NONE guifg=#00884c guibg=NONE
+hi Error gui=BOLD guifg=#f8f8f8 guibg=#4040ff
+hi Identifier gui=NONE guifg=#b07800 guibg=NONE
+hi Ignore gui=NONE guifg=bg guibg=NONE
+hi PreProc gui=NONE guifg=#0090a0 guibg=NONE
+hi Special gui=NONE guifg=#8040f0 guibg=NONE
+hi Statement gui=BOLD guifg=#80a030 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#0080f0 guibg=NONE
+hi Type gui=BOLD guifg=#b06c58 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=blue guibg=NONE
diff --git a/.vim/colors/autumnleaf.vim b/.vim/colors/autumnleaf.vim
new file mode 100644
index 0000000..f7af59f
--- /dev/null
+++ b/.vim/colors/autumnleaf.vim
@@ -0,0 +1,154 @@
+" Vim color file
+" Maintainer: Anders Korte
+" Last Change: 17 Oct 2004
+
+" AutumnLeaf color scheme 1.0
+
+set background=light
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name="AutumnLeaf"
+
+
+" Colors for the User Interface.
+
+hi Cursor guibg=#aa7733 guifg=#ffeebb gui=bold
+hi Normal guibg=#fffdfa guifg=black gui=none
+hi NonText guibg=#eafaea guifg=#000099 gui=bold
+hi Visual guibg=#fff8cc guifg=black gui=none
+" hi VisualNOS
+
+hi Linenr guibg=bg guifg=#999999 gui=none
+
+" Uncomment these if you use Diff...??
+" hi DiffText guibg=#cc0000 guifg=white gui=none
+" hi DiffAdd guibg=#0000cc guifg=white gui=none
+" hi DiffChange guibg=#990099 guifg=white gui=none
+" hi DiffDelete guibg=#888888 guifg=#333333 gui=none
+
+hi Directory guibg=bg guifg=#337700 gui=none
+
+hi IncSearch guibg=#c8e8ff guifg=black gui=none
+hi Search guibg=#c8e8ff guifg=black gui=none
+hi SpecialKey guibg=bg guifg=fg gui=none
+hi Titled guibg=bg guifg=fg gui=none
+
+hi ErrorMsg guibg=bg guifg=#cc0000 gui=bold
+hi ModeMsg guibg=bg guifg=#003399 gui=none
+hi link MoreMsg ModeMsg
+hi link Question ModeMsg
+hi WarningMsg guibg=bg guifg=#cc0000 gui=bold
+
+hi StatusLine guibg=#ffeebb guifg=black gui=bold
+hi StatusLineNC guibg=#aa8866 guifg=#f8e8cc gui=none
+hi VertSplit guibg=#aa8866 guifg=#ffe0bb gui=none
+
+" hi Folded
+" hi FoldColumn
+" hi SignColumn
+
+
+" Colors for Syntax Highlighting.
+
+hi Comment guibg=#ddeedd guifg=#002200 gui=none
+
+hi Constant guibg=bg guifg=#003399 gui=bold
+hi String guibg=bg guifg=#003399 gui=italic
+hi Character guibg=bg guifg=#003399 gui=italic
+hi Number guibg=bg guifg=#003399 gui=bold
+hi Boolean guibg=bg guifg=#003399 gui=bold
+hi Float guibg=bg guifg=#003399 gui=bold
+
+hi Identifier guibg=bg guifg=#003399 gui=none
+hi Function guibg=bg guifg=#0055aa gui=bold
+hi Statement guibg=bg guifg=#003399 gui=none
+
+hi Conditional guibg=bg guifg=#aa7733 gui=bold
+hi Repeat guibg=bg guifg=#aa5544 gui=bold
+hi link Label Conditional
+hi Operator guibg=bg guifg=#aa7733 gui=bold
+hi link Keyword Statement
+hi Exception guibg=bg guifg=#228877 gui=bold
+
+hi PreProc guibg=bg guifg=#aa7733 gui=bold
+hi Include guibg=bg guifg=#558811 gui=bold
+hi link Define Include
+hi link Macro Include
+hi link PreCondit Include
+
+hi Type guibg=bg guifg=#007700 gui=bold
+hi link StorageClass Type
+hi link Structure Type
+hi Typedef guibg=bg guifg=#009900 gui=italic
+
+hi Special guibg=bg guifg=fg gui=none
+hi SpecialChar guibg=bg guifg=fg gui=bold
+hi Tag guibg=bg guifg=#003399 gui=bold
+hi link Delimiter Special
+hi SpecialComment guibg=#dddddd guifg=#aa0000 gui=none
+hi link Debug Special
+
+hi Underlined guibg=bg guifg=blue gui=underline
+
+hi Title guibg=bg guifg=fg gui=bold
+hi Ignore guibg=bg guifg=#999999 gui=none
+hi Error guibg=red guifg=white gui=none
+hi Todo guibg=bg guifg=#aa0000 gui=none
+
+
+
+" The same in cterm colors.
+hi Cursor ctermbg=6 ctermfg=14
+hi Normal ctermbg=15 ctermfg=0
+hi NonText ctermbg=10 ctermfg=1
+hi Visual ctermbg=14 ctermfg=0
+" hi VisualNOS
+hi Linenr ctermbg=bg ctermfg=7
+" hi DiffText ctermbg=4 ctermfg=15
+" hi DiffAdd ctermbg=1 ctermfg=15
+" hi DiffChange ctermbg=5 ctermfg=15
+" hi DiffDelete ctermbg=7 ctermfg=8
+hi Directory ctermbg=bg ctermfg=2
+hi IncSearch ctermbg=9 ctermfg=0
+hi Search ctermbg=9 ctermfg=0
+hi SpecialKey ctermbg=bg ctermfg=fg
+hi Titled ctermbg=bg ctermfg=fg
+hi ErrorMsg ctermbg=bg ctermfg=12
+hi ModeMsg ctermbg=bg ctermfg=9
+hi WarningMsg ctermbg=bg ctermfg=12
+hi StatusLine ctermbg=14 ctermfg=0
+hi StatusLineNC ctermbg=6 ctermfg=14
+hi VertSplit ctermbg=6 ctermfg=14
+" hi Folded
+" hi FoldColumn
+" hi SignColumn
+hi Comment ctermbg=10 ctermfg=2
+hi Constant ctermbg=bg ctermfg=9
+hi String ctermbg=bg ctermfg=9 cterm=italic
+hi Character ctermbg=bg ctermfg=9 cterm=italic
+hi Number ctermbg=bg ctermfg=9 cterm=bold
+hi Boolean ctermbg=bg ctermfg=9 cterm=bold
+hi Float ctermbg=bg ctermfg=9 cterm=bold
+hi Function ctermbg=bg ctermfg=9 cterm=bold
+hi Statement ctermbg=bg ctermfg=9 cterm=bold
+hi Conditional ctermbg=bg ctermfg=6 cterm=bold
+hi Repeat ctermbg=bg ctermfg=6 cterm=bold
+hi Operator ctermbg=bg ctermfg=6 cterm=bold
+hi Exception ctermbg=bg ctermfg=2 cterm=bold
+hi PreProc ctermbg=bg ctermfg=6
+hi Include ctermbg=bg ctermfg=2 cterm=bold
+hi Type ctermbg=bg ctermfg=2 cterm=bold
+hi Typedef ctermbg=bg ctermfg=2 cterm=italic
+hi Special ctermbg=bg ctermfg=fg cterm=bold
+hi Tag ctermbg=bg ctermfg=9 cterm=bold
+hi SpecialComment ctermbg=7 ctermfg=4
+hi Underlined ctermbg=bg ctermfg=9 cterm=underline
+hi Title ctermbg=bg ctermfg=fg cterm=bold
+hi Ignore ctermbg=bg ctermfg=7
+hi Error ctermbg=12 ctermfg=15
+hi Todo ctermbg=bg ctermfg=15
diff --git a/.vim/colors/billw.vim b/.vim/colors/billw.vim
new file mode 100644
index 0000000..740642f
--- /dev/null
+++ b/.vim/colors/billw.vim
@@ -0,0 +1,99 @@
+" vim: set tw=0 sw=4 sts=4 et:
+
+" Vim color file
+" Maintainer: Datila Carvalho <datila@saci.homeip.net>
+" Last Change: November, 3, 2003
+" Version: 0.1
+
+" This is a VIM's version of the emacs color theme
+" _Billw_ created by Bill White.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "billw"
+
+
+""" Colors
+
+" GUI colors
+hi Cursor guifg=fg guibg=cornsilk
+hi CursorIM guifg=NONE guibg=cornsilk
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg gui=bold guifg=White guibg=Red
+"hi VertSplit
+"hi Folded
+"hi FoldColumn
+"hi IncSearch
+"hi LineNr
+hi ModeMsg gui=bold
+"hi MoreMsg
+"hi NonText
+hi Normal guibg=black guifg=cornsilk
+"hi Question
+hi Search gui=bold guifg=Black guibg=cornsilk
+"hi SpecialKey
+hi StatusLine guifg=orange1
+hi StatusLineNC guifg=yellow4
+"hi Title
+hi Visual guifg=gray35 guibg=fg
+hi VisualNOS gui=bold guifg=black guibg=fg
+hi WarningMsg guifg=White guibg=Tomato
+"hi WildMenu
+
+" Colors for syntax highlighting
+hi Comment guifg=gold
+
+hi Constant guifg=mediumspringgreen
+ hi String guifg=orange
+ hi Character guifg=orange
+ hi Number guifg=mediumspringgreen
+ hi Boolean guifg=mediumspringgreen
+ hi Float guifg=mediumspringgreen
+
+hi Identifier guifg=yellow
+ hi Function guifg=mediumspringgreen
+
+hi Statement gui=bold guifg=cyan1
+ hi Conditional gui=bold guifg=cyan1
+ hi Repeat gui=bold guifg=cyan1
+ hi Label guifg=cyan1
+ hi Operator guifg=cyan1
+ "hi Keyword
+ "hi Exception
+
+hi PreProc guifg=LightSteelBlue
+ hi Include guifg=LightSteelBlue
+ hi Define guifg=LightSteelBlue
+ hi Macro guifg=LightSteelBlue
+ hi PreCondit guifg=LightSteelBlue
+
+hi Type guifg=yellow
+ hi StorageClass guifg=cyan1
+ hi Structure gui=bold guifg=cyan1
+ hi Typedef guifg=cyan1
+
+"hi Special
+ ""Underline Character
+ "hi SpecialChar gui=underline
+ "hi Tag gui=bold,underline
+ ""Statement
+ "hi Delimiter gui=bold
+ ""Bold comment (in Java at least)
+ "hi SpecialComment gui=bold
+ "hi Debug gui=bold
+
+hi Underlined gui=underline
+
+hi Ignore guifg=bg
+
+hi Error gui=bold guifg=White guibg=Red
+
+"hi Todo
diff --git a/.vim/colors/biogoo.vim b/.vim/colors/biogoo.vim
new file mode 100644
index 0000000..cec72b1
--- /dev/null
+++ b/.vim/colors/biogoo.vim
@@ -0,0 +1,85 @@
+" Vim color File
+" Name: biogoo
+" Maintainer: Benjamin Esham <bdesham@iname.com>
+" Last Change: 2004-02-03
+" Version: 1.2
+"
+" A fairly simple gray-background scheme. Feedback is greatly appreciated!
+"
+" Installation:
+" Copy to ~/.vim/colors; do :color biogoo
+"
+" Customization Options:
+" Use a 'normal' cursor color:
+" let g:biogoo_normal_cursor = 1
+"
+" Props:
+" Jani Nurminen's zenburn.vim as an example file.
+" Scott and Matt for feature suggestions.
+"
+" Version History:
+" 1.2: added `SpellErrors' group for use with vimspell.
+" 1.1: added `IncSearch' group for improved visibility in incremental searches.
+" 1.0: minor tweaks
+" 0.95: initial release
+"
+" TODO: Possibly add some more groups -- please email me if I've left any out.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "biogoo"
+
+hi Comment guifg=#0000c3
+hi Constant guifg=#0000ff
+hi Delimiter guifg=#00007f
+hi DiffAdd guifg=#007f00 guibg=#e5e5e5
+hi DiffChange guifg=#00007f guibg=#e5e5e5
+hi DiffDelete guifg=#7f0000 guibg=#e5e5e5
+hi DiffText guifg=#ee0000 guibg=#e5e5e5
+hi Directory guifg=#b85d00
+hi Error guifg=#d6d6d6 guibg=#7f0000
+hi ErrorMsg guifg=#ffffff guibg=#ff0000 gui=bold
+hi Float guifg=#b85d00
+hi FoldColumn guifg=#00007f guibg=#e5e5e5
+hi Folded guifg=#00007f guibg=#e5e5e5
+hi Function guifg=#7f0000
+hi Identifier guifg=#004000
+hi Include guifg=#295498 gui=bold
+hi IncSearch guifg=#ffffff guibg=#0000ff gui=bold
+hi LineNr guifg=#303030 guibg=#e5e5e5 gui=underline
+hi Keyword guifg=#00007f
+hi Macro guifg=#295498
+hi ModeMsg guifg=#00007f
+hi MoreMsg guifg=#00007f
+hi NonText guifg=#007f00
+hi Normal guifg=#000000 guibg=#d6d6d6
+hi Number guifg=#b85d00
+hi Operator guifg=#00007f
+hi PreCondit guifg=#295498 gui=bold
+hi PreProc guifg=#0c3b6b gui=bold
+hi Question guifg=#00007f
+hi Search guibg=#ffff00
+hi Special guifg=#007f00
+hi SpecialKey guifg=#00007f
+hi SpellErrors guifg=#7f0000 gui=underline
+hi Statement guifg=#00007f gui=none
+hi StatusLine guifg=#00007f guibg=#ffffff
+hi StatusLineNC guifg=#676767 guibg=#ffffff
+hi String guifg=#d10000
+hi Title guifg=#404040 gui=bold
+hi Todo guifg=#00007f guibg=#e5e5e5 gui=underline
+hi Type guifg=#540054 gui=bold
+hi Underlined guifg=#b85d00
+hi VertSplit guifg=#676767 guibg=#ffffff
+hi Visual guifg=#7f7f7f guibg=#ffffff
+hi VisualNOS guifg=#007f00 guibg=#e5e5e5
+hi WarningMsg guifg=#500000
+hi WildMenu guifg=#540054
+
+if !exists("g:biogoo_normal_cursor")
+ " use a gray-on-blue cursor
+ hi Cursor guifg=#ffffff guibg=#00007f
+endif
diff --git a/.vim/colors/black_angus.vim b/.vim/colors/black_angus.vim
new file mode 100644
index 0000000..145b639
--- /dev/null
+++ b/.vim/colors/black_angus.vim
@@ -0,0 +1,115 @@
+" Vim color file
+" Maintainer: Angus Salkeld
+" Last Change: 14 September 2004
+" Version: 1.0
+" mainly green on black
+
+set background=dark
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "black_angus"
+
+" GUI
+" -----------------------------------------------------------------------
+highlight Normal guifg=Grey80 guibg=Black
+highlight Search guifg=brown gui=reverse
+highlight Visual guifg=Grey25 gui=bold
+highlight Cursor guifg=Yellow guibg=DarkGreen gui=bold
+highlight DiffAdd guibg=#000080 gui=NONE
+highlight DiffChange guibg=#800080 gui=NONE
+highlight DiffDelete guifg=#80c0e0 guibg=#404040 gui=NONE
+highlight DiffText guifg=Black guibg=#c0e080 gui=NONE
+
+" Console
+" -----------------------------------------------------------------------
+highlight Normal ctermfg=LightGrey ctermbg=Black
+highlight Search ctermfg=Brown cterm=reverse
+highlight Visual cterm=reverse
+highlight Cursor ctermfg=Yellow ctermbg=Green cterm=bold
+
+" both
+" -----------------------------------------------------------------------
+highlight StatusLine guifg=LightGreen guibg=#003300 gui=none ctermfg=LightGreen ctermbg=DarkGreen term=none
+highlight VertSplit guifg=LightGreen guibg=#003300 gui=none ctermfg=LightGreen ctermbg=DarkGreen term=none
+highlight Folded guifg=#aaDDaa guibg=#333333 gui=none ctermfg=LightGray ctermbg=DarkGray term=none
+highlight FoldColumn guifg=LightGreen guibg=#003300 gui=none ctermfg=LightGreen ctermbg=DarkGreen term=none
+highlight SignColumn guifg=LightGreen guibg=#003300 gui=none ctermfg=LightGreen ctermbg=DarkGreen term=none
+highlight WildMenu guifg=LightGreen guibg=#003300 gui=none ctermfg=LightGreen ctermbg=DarkGreen term=none
+
+highlight LineNr guifg=DarkGreen guibg=Black gui=none ctermfg=DarkGreen ctermbg=Black term=none
+highlight Directory guifg=LightGreen ctermfg=LightGreen
+highlight Comment guifg=DarkGrey ctermfg=DarkGray
+
+highlight Special guifg=Orange ctermfg=Brown
+highlight Title guifg=Orange ctermfg=Brown
+highlight Tag guifg=DarkRed ctermfg=DarkRed
+highlight link Delimiter Special
+highlight link SpecialChar Special
+highlight link SpecialComment Special
+highlight link SpecialKey Special
+highlight link NonText Special
+
+highlight Error guifg=White guibg=DarkRed gui=none ctermfg=White ctermbg=DarkRed cterm=none
+highlight Debug guifg=White guibg=DarkGreen gui=none ctermfg=White ctermbg=DarkRed cterm=none
+highlight ErrorMsg guifg=White guibg=DarkBlue gui=none ctermfg=White ctermbg=DarkRed cterm=none
+highlight WarningMsg guifg=White guibg=DarkBlue gui=none ctermfg=White ctermbg=DarkBlue cterm=none
+highlight Todo guifg=White guibg=DarkYellow gui=none ctermfg=White ctermbg=DarkBlue cterm=none
+highlight link cCommentStartError WarningMsg
+highlight link cCommentError Debug
+
+" Preprocesor
+highlight PreCondit guifg=Cyan3 ctermfg=Cyan
+highlight PreProc guifg=Magenta ctermfg=Magenta
+highlight Include guifg=DarkCyan ctermfg=DarkCyan
+highlight ifdefIfOut guifg=DarkGray ctermfg=DarkGray
+highlight link Macro Include
+highlight link Define Include
+
+" lang
+highlight Function guifg=#AAEEAA gui=none ctermfg=LightGreen
+highlight Identifier guifg=#bbccbb gui=none ctermfg=Grey
+highlight Statement guifg=LightGreen gui=underline ctermfg=LightGreen
+highlight Operator guifg=Yellow gui=none ctermfg=Yellow
+highlight Conditional guifg=lightslateblue gui=none ctermfg=LightBlue
+
+highlight link Exception Statement
+highlight link Label Statement
+highlight link Repeat Conditional
+
+highlight link Keyword Label
+
+highlight Constant guifg=LightGreen ctermfg=LightGreen gui=none
+highlight link Character Constant
+highlight link Number Constant
+highlight link Boolean Constant
+highlight link String Constant
+highlight link Float Constant
+
+highlight Type guifg=DarkGreen ctermfg=DarkGreen gui=none
+highlight link StorageClass Type
+highlight link Structure Type
+highlight link Typedef Type
+
+" ------------------------------------------------------------------------------
+" Common groups that link to other highlighting definitions.
+highlight link Search IncSearch
+highlight link Question Statement
+highlight link VisualNOS Visual
+" ------------------------------------------------------------------------------
+
+" only for vim 5
+if has("unix")
+ if v:version<600
+ highlight Normal ctermfg=Grey ctermbg=Black cterm=NONE guifg=Grey80 guibg=Black gui=NONE
+ highlight Search ctermfg=Black ctermbg=Red cterm=bold guifg=Black guibg=Red gui=bold
+ highlight Visual ctermfg=Black ctermbg=yellow cterm=bold guifg=Grey25 gui=bold
+ highlight Special ctermfg=LightBlue cterm=NONE guifg=LightBlue
+ highlight Comment ctermfg=Cyan cterm=NONE guifg=LightBlue
+ endif
+endif
+
+
+
diff --git a/.vim/colors/blackbeauty.vim b/.vim/colors/blackbeauty.vim
new file mode 100644
index 0000000..a824ea3
--- /dev/null
+++ b/.vim/colors/blackbeauty.vim
@@ -0,0 +1,66 @@
+" Vim color file
+" Maintainer: Surya
+" Last Change: 12/23/2003 10:32:41 .
+" version: 1.0
+" This color scheme uses a dark background.
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "koehler"
+hi Normal guifg=white guibg=black
+hi Scrollbar guibg=darkgray guifg=darkgray
+hi Menu guifg=black guibg=gray
+hi SpecialKey term=bold cterm=bold ctermfg=darkred guifg=Blue
+hi NonText term=bold cterm=bold ctermfg=darkred gui=bold guifg=Blue
+hi Directory term=bold cterm=bold ctermfg=brown guifg=Blue
+hi ErrorMsg term=standout cterm=bold ctermfg=grey ctermbg=blue gui=bold guifg=White guibg=brown
+hi Search term=reverse ctermfg=white ctermbg=red gui=bold guifg=#000000 guibg=Magenta
+hi MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=SeaGreen
+hi ModeMsg term=bold cterm=bold gui=bold guifg=White guibg=Blue
+hi LineNr term=underline cterm=bold ctermfg=darkcyan guibg=brown guifg=white
+hi Question term=standout cterm=bold ctermfg=darkgreen gui=bold guifg=Green
+hi StatusLine term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guibg=white guifg=brown
+hi StatusLineNC term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue
+hi Title term=bold cterm=bold ctermfg=darkmagenta gui=bold guifg=Magenta
+hi Visual term=reverse cterm=reverse gui=reverse
+hi WarningMsg term=standout cterm=bold ctermfg=darkblue gui=bold guifg=cyan guibg=Black
+hi Cursor guifg=bg guibg=cyan
+hi Comment term=bold cterm=bold ctermfg=cyan guifg=#80a0ff
+hi Constant term=underline cterm=bold ctermfg=magenta guifg=#ffa0a0
+hi String term=underline cterm=bold ctermfg=magenta gui=bold guifg=brown guibg=darkgray
+hi Number term=underline cterm=bold ctermfg=magenta guifg=#00ffff
+hi Special term=bold gui=bold cterm=bold ctermfg=red guifg=Orange
+hi Identifier term=underline ctermfg=brown guifg=#40ffff
+hi Statement term=bold cterm=bold ctermfg=yellow gui=bold guifg=#ffff60
+hi PreProc term=underline ctermfg=darkblue guifg=#ff80ff
+hi Type term=underline cterm=bold ctermfg=lightgreen gui=bold guifg=#60ff60
+hi Error gui=bold guifg=Yellow guibg=Black
+hi Todo term=standout ctermfg=black ctermbg=darkcyan guifg=Blue guibg=Yellow
+"hi VertSplit guifg=#00FFFF guibg=#000000 gui=bold
+hi link IncSearch Visual
+hi link Character Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+
diff --git a/.vim/colors/blackdust.vim b/.vim/colors/blackdust.vim
new file mode 100644
index 0000000..0eb20a7
--- /dev/null
+++ b/.vim/colors/blackdust.vim
@@ -0,0 +1,62 @@
+set background=dark
+hi clear
+
+hi Boolean guifg=#dca3a3 gui=bold
+hi Character guifg=#dca3a3 gui=bold
+hi Comment guifg=#7f7f7f
+hi Condtional guifg=#8fffff
+hi Constant guifg=#dca3a3 gui=bold
+hi Cursor guifg=#000000 guibg=#aeaeae
+hi Debug guifg=#dca3a3 gui=bold
+hi Define guifg=#ffcfaf gui=bold
+hi Delimiter guifg=#8f8f8f
+hi DiffAdd guibg=#613c46
+hi DiffChange guibg=#333333
+hi DiffDelete guifg=#333333 guibg=#464646 gui=none
+hi DiffText guifg=#ffffff guibg=#1f1f1f gui=bold
+hi Directory guifg=#ffffff gui=bold
+hi Error guifg=#000000 guibg=#00ffff
+hi ErrorMsg guifg=#000000 guibg=#00c0cf
+hi Exception guifg=#8fffff gui=underline
+hi Float guifg=#9c93b3
+hi FoldColumn guifg=#dca3a3 guibg=#464646
+hi Folded guifg=#dca3a3 guibg=#333333
+hi Function guifg=#ffff8f
+hi Identifier guifg=#ffffff
+hi Include guifg=#ffcfaf gui=bold
+hi IncSearch guifg=#000000 guibg=#c15c66
+hi Keyword guifg=#ffffff gui=bold
+hi Label guifg=#8fffff gui=underline
+hi LineNr guifg=#7f7f7f guibg=#464646
+hi Macro guifg=#ffcfaf gui=bold
+hi ModeMsg guifg=#dca3a3 gui=bold
+hi MoreMsg guifg=#ffffff gui=bold
+hi NonText guifg=#1f1f1f
+hi Normal guifg=#cccccc guibg=#3f3f3f
+hi Number guifg=#aca0a3
+hi Operator guifg=#ffffff
+hi PreCondit guifg=#dfaf8f gui=bold
+hi PreProc guifg=#ffcfaf gui=bold
+hi Question guifg=#ffffff gui=bold
+hi Repeat guifg=#8fffff gui=underline
+hi Search guifg=#000000 guibg=#c15c66
+hi SpecialChar guifg=#dca3a3 gui=bold
+hi SpecialComment guifg=#dca3a3 gui=bold
+hi Special guifg=#7f7f7f
+hi SpecialKey guifg=#7e7e7e
+hi Statement guifg=#8fffff
+hi StatusLine guifg=#333333 guibg=#f18c96
+hi StatusLineNC guifg=#333333 guibg=#cccccc
+hi StorageClass guifg=#ffffff gui=bold
+hi String guifg=#cc9393
+hi Structure guifg=#ffffff gui=bold,underline
+hi Tag guifg=#dca3a3 gui=bold
+hi Title guifg=#ffffff guibg=#333333 gui=bold
+hi Todo guifg=#ffffff guibg=#000000 gui=bold
+hi Typedef guifg=#ffffff gui=bold,underline
+hi Type guifg=#ffffff gui=bold
+hi VertSplit guifg=#333333 guibg=#cccccc
+hi Visual guifg=#333333 guibg=#f18c96 gui=reverse
+hi VisualNOS guifg=#333333 guibg=#f18c96 gui=bold,underline
+hi WarningMsg guifg=#ffffff guibg=#333333 gui=bold
+hi WildMenu guifg=#000000 guibg=#dca3a3
diff --git a/.vim/colors/blacksea.vim b/.vim/colors/blacksea.vim
new file mode 100644
index 0000000..5cd38a3
--- /dev/null
+++ b/.vim/colors/blacksea.vim
@@ -0,0 +1,32 @@
+" Vim color file
+" Maintainer: Gerald S. Williams
+" Last Change: 2003 Mar 20
+
+" This is a dark version/opposite of "seashell". The cterm version of this is
+" very similar to "evening".
+"
+" Only values that differ from defaults are specified.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "BlackSea"
+
+hi Normal guibg=Black guifg=seashell ctermfg=White
+hi NonText guifg=LavenderBlush ctermfg=LightMagenta
+hi DiffDelete guibg=DarkRed guifg=Black ctermbg=DarkRed ctermfg=White
+hi DiffAdd guibg=DarkGreen ctermbg=DarkGreen ctermfg=White
+hi DiffChange guibg=Gray30 ctermbg=DarkCyan ctermfg=White
+hi DiffText gui=NONE guibg=DarkCyan ctermbg=DarkCyan ctermfg=Yellow
+hi Comment guifg=LightBlue
+hi Constant guifg=DeepPink
+hi PreProc guifg=Magenta ctermfg=Magenta
+hi StatusLine guibg=#1f001f guifg=DarkSeaGreen cterm=NONE ctermfg=White ctermbg=DarkGreen
+hi StatusLineNC guifg=Gray
+hi VertSplit guifg=Gray
+hi Type gui=NONE
+hi Identifier guifg=Cyan
+hi Statement guifg=brown3 ctermfg=DarkRed
+hi Search guibg=Gold3 ctermfg=White
diff --git a/.vim/colors/blue.vim b/.vim/colors/blue.vim
new file mode 100644
index 0000000..220700f
--- /dev/null
+++ b/.vim/colors/blue.vim
@@ -0,0 +1,41 @@
+" Vim color file
+" Maintainer: TaQ <taq@taq.cjb.net>
+" Last Change: 10 October 2001 - 0.2
+" URL: http://taq.cjb.net
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark " or light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="blue"
+
+hi Normal ctermfg=Gray ctermbg=Black guifg=#CCCCCC guibg=#000040
+hi NonText ctermfg=Gray ctermbg=Black guifg=#0050EE guibg=#000040
+
+hi Statement ctermfg=White ctermbg=Black guifg=#007FFF guibg=#000040 gui=BOLD
+hi Comment ctermfg=Blue ctermbg=Black guifg=#00A0FF guibg=#000090 gui=NONE
+hi Constant ctermfg=White ctermbg=Black guifg=#0050EE guibg=#000040 gui=NONE
+hi Identifier ctermfg=Cyan ctermbg=Black guifg=#FFFFFF guibg=#000040 gui=NONE
+hi Type ctermfg=Cyan ctermbg=Black guifg=#5050FF guibg=#000040 gui=NONE
+hi Folded ctermfg=White ctermbg=Blue guifg=#00A0FF guibg=#000050 gui=BOLD
+hi Special ctermfg=Blue ctermbg=Black guifg=#00A0FF guibg=#000090 gui=NONE
+hi PreProc ctermfg=Blue ctermbg=Black guifg=#00FF00 guibg=#000040 gui=BOLD
+hi Scrollbar ctermfg=Blue ctermbg=Black guifg=#00C0FF guibg=#000040
+hi Cursor ctermfg=white ctermbg=Black guifg=#FFFFFF guibg=#5050FF
+hi ErrorMsg ctermfg=white ctermbg=Red guifg=#FFFFFF guibg=#FF0000
+hi WarningMsg ctermfg=Black ctermbg=Yellow guifg=#000000 guibg=#FFFF00
+hi VertSplit ctermfg=White ctermbg=Blue guifg=#000090 guibg=#000090
+hi Directory ctermfg=Cyan ctermbg=DarkBlue guifg=#00A0F0 guibg=#000040
+hi Visual ctermfg=Black ctermbg=Cyan guifg=#5050FF guibg=#FFFFFF
+hi Title ctermfg=White ctermbg=Blue guifg=#FFFFFF guibg=#0050EE gui=NONE
+
+hi StatusLine term=bold cterm=bold ctermfg=White ctermbg=Blue gui=bold guifg=#FFFFFF guibg=#0050EE
+hi StatusLineNC term=bold cterm=bold ctermfg=Gray ctermbg=Blue gui=bold guifg=#AAAAAA guibg=#000090
+hi LineNr term=bold cterm=bold ctermfg=White ctermbg=DarkBlue gui=bold guifg=#00A0FF guibg=#000050
+
diff --git a/.vim/colors/bluegreen.vim b/.vim/colors/bluegreen.vim
new file mode 100644
index 0000000..0b23dcd
--- /dev/null
+++ b/.vim/colors/bluegreen.vim
@@ -0,0 +1,52 @@
+
+
+" Vim color file
+" Maintainer:
+" Last Change:
+" URL:
+
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="mine"
+
+hi Normal guifg=White guibg=#061A3E
+
+" highlight groups
+hi Cursor guibg=#D74141 guifg=#e3e3e3
+hi VertSplit guibg=#C0FFFF guifg=#075554 gui=none
+hi Folded guibg=#FFC0C0 guifg=black
+hi FoldColumn guibg=#800080 guifg=tan
+"hi IncSearch cterm=none ctermbg=blue ctermfg=grey guifg=slategrey guibg=khaki
+hi ModeMsg guifg=#404040 guibg=#C0C0C0
+hi MoreMsg guifg=darkturquoise guibg=#188F90
+hi NonText guibg=#334C75 guifg=#9FADC5
+hi Question guifg=#F4BB7E
+hi Search guibg=fg guifg=bg
+hi SpecialKey guifg=#BF9261
+hi StatusLine guibg=#004443 guifg=#c0ffff gui=none
+hi StatusLineNC guibg=#067C7B guifg=#004443 gui=bold
+hi Title guifg=#8DB8C3
+hi Visual gui=bold guifg=black guibg=#C0FFC0
+hi WarningMsg guifg=#F60000 gui=underline
+
+" syntax highlighting groups
+hi Comment guifg=#DABEA2
+hi Constant guifg=#72A5E4 gui=bold
+hi Identifier guifg=#ADCBF1
+hi Statement guifg=#7E75B5
+hi PreProc guifg=#14F07C
+hi Type guifg=#A9EE8A
+hi Special guifg=#EEBABA
+hi Ignore guifg=grey60
+hi Todo guibg=#9C8C84 guifg=#244C0A
+
+"vim: ts=4
diff --git a/.vim/colors/blugrine.vim b/.vim/colors/blugrine.vim
new file mode 100644
index 0000000..6ba6330
--- /dev/null
+++ b/.vim/colors/blugrine.vim
@@ -0,0 +1,42 @@
+" author Helder Correia < helder (dot) correia (at) netcabo (dot) pt>
+" version 2004.0
+" based on bluegreen colorscheme by Joao Estevao
+" feel free to modify / redistribute this file
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="blugrine"
+
+hi Normal guifg=White guibg=#000000
+
+" highlight groups
+hi Cursor guibg=#D74141 guifg=#e3e3e3
+hi VertSplit guibg=#C0FFFF guifg=#075554 gui=none
+hi Folded guibg=#FFC0C0 guifg=black
+hi FoldColumn guibg=#800080 guifg=tan
+hi ModeMsg guifg=#404040 guibg=#C0C0C0
+hi MoreMsg guifg=darkturquoise guibg=#188F90
+hi NonText guibg=#334C75 guifg=#9FADC5
+hi Question guifg=#F4BB7E
+hi Search guibg=fg guifg=bg
+hi SpecialKey guifg=#BF9261
+hi StatusLine guibg=#004443 guifg=#c0ffff gui=none
+hi StatusLineNC guibg=#067C7B guifg=#004443 gui=bold
+hi Title guifg=#8DB8C3
+hi Visual gui=bold guifg=black guibg=#C0FFC0
+hi WarningMsg guifg=#F60000 gui=underline
+
+" syntax highlighting groups
+hi Comment guifg=#DABEA2
+hi Constant guifg=#72A5E4 gui=bold
+hi Identifier guifg=#ADCBF1
+hi Statement guifg=#7E75B5
+hi PreProc guifg=#14F07C
+hi Type guifg=#A9EE8A
+hi Special guifg=#EEBABA
+hi Ignore guifg=grey60
+hi Todo guibg=#9C8C84 guifg=#244C0A
+
diff --git a/.vim/colors/bmichaelsen.vim b/.vim/colors/bmichaelsen.vim
new file mode 100644
index 0000000..b63f65c
--- /dev/null
+++ b/.vim/colors/bmichaelsen.vim
@@ -0,0 +1,55 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+" Maintainer: Björn Michaelsen <bmichaelsen@gmx.de>
+" based on: Zellner maintained by Ron Aaron <ronaharon@yahoo.com>
+" Last Change: 2003 Sep 09
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "bmichaelsen"
+
+hi Comment term=bold ctermfg=Red guifg=Red
+hi Normal guifg=black guibg=#dee2ee
+hi Constant term=underline ctermfg=Magenta guifg=Magenta
+hi Special term=bold ctermfg=Magenta guifg=Magenta
+hi Identifier term=underline ctermfg=Blue guifg=Blue
+hi Statement term=bold ctermfg=DarkRed gui=NONE guifg=Brown
+hi PreProc term=underline ctermfg=Magenta guifg=Purple
+hi Type term=underline ctermfg=Blue gui=NONE guifg=Blue
+hi Visual term=reverse ctermfg=Yellow ctermbg=Red gui=NONE guifg=Black guibg=#5a5d6a
+hi Search term=reverse ctermfg=Black ctermbg=Cyan gui=NONE guifg=Black guibg=Cyan
+hi Tag term=bold ctermfg=DarkGreen guifg=DarkGreen
+hi Error term=reverse ctermfg=15 ctermbg=9 guibg=Red guifg=White
+hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=#5a5d6a
+hi StatusLine term=bold,reverse cterm=NONE ctermfg=Yellow ctermbg=DarkGray gui=NONE guifg=Black guibg=#a4b2c5
+hi! link MoreMsg Comment
+hi! link ErrorMsg Visual
+hi! link WarningMsg ErrorMsg
+hi! link Question Comment
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
diff --git a/.vim/colors/bog.vim b/.vim/colors/bog.vim
new file mode 100644
index 0000000..542262d
--- /dev/null
+++ b/.vim/colors/bog.vim
@@ -0,0 +1,87 @@
+" Vim color file
+" Maintainer: [smeagol] <webmaster@quantumz.net>
+" Last Change:
+" URL:
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+" your pick:
+set background=light " or light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="bog"
+
+hi Normal guifg=#3a3a3d guibg=white ctermfg=darkgrey ctermbg=white
+
+" OR
+
+" highlight clear Normal
+" set background&
+" highlight clear
+" if &background == "light"
+" highlight Error ...
+" ...
+" else
+" highlight Error ...
+" ...
+" endif
+
+" A good way to see what your colorscheme does is to follow this procedure:
+" :w
+" :so %
+"
+" Then to see what the current setting is use the highlight command.
+" For example,
+" :hi Cursor
+" gives
+" Cursor xxx guifg=bg guibg=fg
+
+" Uncomment and complete the commands you want to change from the default.
+
+hi Cursor guifg=#04ae6c guibg=#0056a0 ctermfg=darkgreen ctermbg=darkblue
+"hi CursorIM
+hi Directory guifg=green ctermfg=green
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg guibg=#004a8a guifg=white ctermfg=white ctermbg=darkblue
+hi VertSplit guibg=#04ae6c guifg=#0056a0
+hi Folded guibg=#0a62c4 guifg=#60abff ctermfg=lightgrey ctermbg=blue
+hi FoldColumn guibg=#0a62c4 guifg=#60abff ctermfg=lightgrey ctermbg=blue
+hi IncSearch guifg=white guibg=#ffdc34 ctermfg=white ctermbg=lightred gui=underline
+hi LineNr guifg=#3669e8 guibg=white ctermfg=lightblue ctermbg=white
+hi ModeMsg guifg=orange guibg=white ctermfg=lightred ctermbg=white
+hi MoreMsg guifg=orange guibg=white ctermfg=lightred ctermbg=white
+hi NonText gui=bold
+hi Question guifg=white guibg=orange ctermfg=white ctermbg=lightred
+hi Search guifg=white guibg=#ffdc34 ctermfg=white ctermbg=lightred gui=underline
+"hi SpecialKey
+hi StatusLine guifg=#04ae6c guibg=white ctermfg=darkgreen ctermbg=white
+hi StatusLineNC guifg=#04ae6c guibg=white ctermfg=darkgreen ctermbg=white
+hi Title guifg=#02233f gui=bold
+hi Visual guifg=darkblue guibg=white ctermfg=darkblue ctermbg=white
+"hi VisualNOS
+hi WarningMsg guifg=white guibg=orange ctermfg=white ctermbg=lightblue
+hi WildMenu guifg=#75dc34 guibg=white ctermfg=lightgreen ctermbg=white
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=orange guibg=white ctermbg=white ctermfg=blue
+hi Constant guifg=#5b8f8d guibg=white ctermfg=grey ctermbg=white
+hi Identifier guifg=#aad2ff guibg=white ctermfg=grey ctermbg=white
+hi Statement guifg=#808283 guibg=white ctermfg=lightgrey ctermbg=white
+hi PreProc guifg=#023a6a gui=bold guibg=white ctermfg=darkblue ctermbg=white
+hi Type guifg=#0e9152 guibg=white ctermfg=darkgreen ctermbg=white
+hi Special guifg=white guibg=skyblue ctermfg=white ctermbg=blue
+hi Underlined guifg=#00d0e8 ctermbg=blue
+hi Ignore guifg=black guibg=white ctermfg=black ctermbg=white
+"hi Error
+hi Todo guibg=lightblue guifg=white ctermbg=lightblue ctermfg=white
diff --git a/.vim/colors/borland.vim b/.vim/colors/borland.vim
new file mode 100644
index 0000000..c39c101
--- /dev/null
+++ b/.vim/colors/borland.vim
@@ -0,0 +1,60 @@
+" Vim color file
+" Maintainer: Yegappan Lakshmanan
+" Last Change: 2001 Sep 9
+
+" Color settings similar to that used in Borland IDE's.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="borland"
+
+hi Normal term=NONE cterm=NONE ctermfg=Yellow ctermbg=DarkBlue
+hi Normal gui=NONE guifg=Yellow guibg=DarkBlue
+hi NonText term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi NonText gui=NONE guifg=White guibg=DarkBlue
+
+hi Statement term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi Statement gui=NONE guifg=White guibg=DarkBlue
+hi Special term=NONE cterm=NONE ctermfg=Cyan ctermbg=DarkBlue
+hi Special gui=NONE guifg=Cyan guibg=DarkBlue
+hi Constant term=NONE cterm=NONE ctermfg=Magenta ctermbg=DarkBlue
+hi Constant gui=NONE guifg=Magenta guibg=DarkBlue
+hi Comment term=NONE cterm=NONE ctermfg=Gray ctermbg=DarkBlue
+hi Comment gui=NONE guifg=Gray guibg=DarkBlue
+hi Preproc term=NONE cterm=NONE ctermfg=Green ctermbg=DarkBlue
+hi Preproc gui=NONE guifg=Green guibg=DarkBlue
+hi Type term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi Type gui=NONE guifg=White guibg=DarkBlue
+hi Identifier term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi Identifier gui=NONE guifg=White guibg=DarkBlue
+
+hi StatusLine term=bold cterm=bold ctermfg=Black ctermbg=White
+hi StatusLine gui=bold guifg=Black guibg=White
+
+hi StatusLineNC term=NONE cterm=NONE ctermfg=Black ctermbg=White
+hi StatusLineNC gui=NONE guifg=Black guibg=White
+
+hi Visual term=NONE cterm=NONE ctermfg=Black ctermbg=DarkCyan
+hi Visual gui=NONE guifg=Black guibg=DarkCyan
+
+hi Search term=NONE cterm=NONE ctermbg=Gray
+hi Search gui=NONE guibg=Gray
+
+hi VertSplit term=NONE cterm=NONE ctermfg=Black ctermbg=White
+hi VertSplit gui=NONE guifg=Black guibg=White
+
+hi Directory term=NONE cterm=NONE ctermfg=Green ctermbg=DarkBlue
+hi Directory gui=NONE guifg=Green guibg=DarkBlue
+
+hi WarningMsg term=standout cterm=NONE ctermfg=Red ctermbg=DarkBlue
+hi WarningMsg gui=standout guifg=Red guibg=DarkBlue
+
+hi Error term=NONE cterm=NONE ctermfg=White ctermbg=Red
+hi Error gui=NONE guifg=White guibg=Red
+
+hi Cursor ctermfg=Black ctermbg=Yellow
+hi Cursor guifg=Black guibg=Yellow
+
diff --git a/.vim/colors/breeze.vim b/.vim/colors/breeze.vim
new file mode 100644
index 0000000..21cf417
--- /dev/null
+++ b/.vim/colors/breeze.vim
@@ -0,0 +1,70 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/30 Wed 00:08.
+" version: 1.0
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "breeze"
+
+hi Normal guifg=#ffffff guibg=#005c70
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#60ffff guibg=#6060ff
+hi Search gui=NONE guifg=#ffffff guibg=#6060ff
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi WarningMsg gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi ModeMsg gui=NONE guifg=#60ffff guibg=NONE
+hi MoreMsg gui=NONE guifg=#ffc0ff guibg=NONE
+hi Question gui=NONE guifg=#ffff60 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#d0d0e0
+hi StatusLineNC gui=NONE guifg=#606080 guibg=#d0d0e0
+hi VertSplit gui=NONE guifg=#606080 guibg=#d0d0e0
+hi WildMenu gui=NONE guifg=#000000 guibg=#00c8f0
+
+" Diff
+hi DiffText gui=UNDERLINE guifg=#ffff00 guibg=#000000
+hi DiffChange gui=NONE guifg=#ffffff guibg=#000000
+hi DiffDelete gui=NONE guifg=#60ff60 guibg=#000000
+hi DiffAdd gui=NONE guifg=#60ff60 guibg=#000000
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#d86020
+hi lCursor gui=NONE guifg=#ffffff guibg=#e000b0
+hi CursorIM gui=NONE guifg=#ffffff guibg=#e000b0
+
+" Fold
+hi Folded gui=NONE guifg=#ffffff guibg=#0088c0
+" hi Folded gui=NONE guifg=#ffffff guibg=#2080d0
+hi FoldColumn gui=NONE guifg=#60e0e0 guibg=#006c7f
+
+" Other
+hi Directory gui=NONE guifg=#00e0ff guibg=NONE
+hi LineNr gui=NONE guifg=#60a8bc guibg=NONE
+hi NonText gui=BOLD guifg=#00c0c0 guibg=#006276
+hi SpecialKey gui=NONE guifg=#e0a0ff guibg=NONE
+hi Title gui=BOLD guifg=#ffffff guibg=NONE
+hi Visual gui=NONE guifg=#ffffff guibg=#6060d0
+" hi VisualNOS gui=NONE guifg=#ffffff guibg=#6060d0
+
+" Syntax group
+hi Comment gui=NONE guifg=#c8d0d0 guibg=NONE
+hi Constant gui=NONE guifg=#60ffff guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi Identifier gui=NONE guifg=#cacaff guibg=NONE
+hi Ignore gui=NONE guifg=#006074 guibg=NONE
+hi PreProc gui=NONE guifg=#ffc0ff guibg=NONE
+hi Special gui=NONE guifg=#ffd074 guibg=NONE
+hi Statement gui=NONE guifg=#ffff80 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#ffb0b0 guibg=NONE
+hi Type gui=NONE guifg=#80ffa0 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=#ffffff guibg=NONE
diff --git a/.vim/colors/brookstream.vim b/.vim/colors/brookstream.vim
new file mode 100644
index 0000000..ee907c6
--- /dev/null
+++ b/.vim/colors/brookstream.vim
@@ -0,0 +1,83 @@
+"--------------------------------------------------------------------
+" Name Of File: brookstream.vim.
+" Description: Gvim colorscheme, works best with version 6.1 GUI .
+" Maintainer: Peter Bäckström.
+" Creator: Peter Bäckström.
+" URL: http://www.brookstream.org (Swedish).
+" Credits: Inspiration from the darkdot scheme.
+" Last Change: Friday, April 13, 2003.
+" Installation: Drop this file in your $VIMRUNTIME/colors/ directory.
+"--------------------------------------------------------------------
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="brookstream"
+
+"--------------------------------------------------------------------
+
+hi Normal gui=none guibg=#000000 guifg=#bbbbbb
+hi Cursor guibg=#44ff44 guifg=#000000
+hi Directory guifg=#44ffff
+hi DiffAdd guibg=#080808 guifg=#ffff00
+hi DiffDelete guibg=#080808 guifg=#444444
+hi DiffChange guibg=#080808 guifg=#ffffff
+hi DiffText guibg=#080808 guifg=#bb0000
+hi ErrorMsg guibg=#880000 guifg=#ffffff
+hi Folded guifg=#000088
+hi IncSearch guibg=#000000 guifg=#bbcccc
+hi LineNr guibg=#050505 guifg=#4682b4
+hi ModeMsg guifg=#ffffff
+hi MoreMsg guifg=#44ff44
+hi NonText guifg=#4444ff
+hi Question guifg=#ffff00
+hi SpecialKey guifg=#4444ff
+hi StatusLine gui=none guibg=#2f4f4f guifg=#ffffff
+hi StatusLineNC gui=none guibg=#bbbbbb guifg=#000000
+hi Title guifg=#ffffff
+hi Visual gui=none guibg=#bbbbbb guifg=#000000
+hi WarningMsg guifg=#ffff00
+
+" syntax highlighting groups ----------------------------------------
+
+hi Comment guifg=#696969
+hi Constant guifg=#00aaaa
+hi Identifier guifg=#00e5ee
+hi Statement guifg=#00ffff
+hi PreProc guifg=#8470ff
+hi Type guifg=#ffffff
+hi Special gui=none guifg=#87cefa
+hi Underlined gui=bold guifg=#4444ff
+hi Ignore guifg=#444444
+hi Error guibg=#000000 guifg=#bb0000
+hi Todo guibg=#aa0006 guifg=#fff300
+hi Operator gui=none guifg=#00bfff
+hi Function guifg=#1e90ff
+hi String gui=None guifg=#4682b4
+hi Boolean guifg=#9bcd9b
+
+"hi link Character Constant
+"hi link Number Constant
+"hi link Boolean Constant
+"hi link Float Number
+"hi link Conditional Statement
+"hi link Label Statement
+"hi link Keyword Statement
+"hi link Exception Statement
+"hi link Repeat Statement
+"hi link Include PreProc
+"hi link Define PreProc
+"hi link Macro PreProc
+"hi link PreCondit PreProc
+"hi link StorageClass Type
+"hi link Structure Type
+"hi link Typedef Type
+"hi link Tag Special
+"hi link Delimiter Special
+"hi link SpecialComment Special
+"hi link Debug Special
+"hi link FoldColumn Folded
+
+"- end of colorscheme -----------------------------------------------
diff --git a/.vim/colors/brown.vim b/.vim/colors/brown.vim
new file mode 100644
index 0000000..aecfe4e
--- /dev/null
+++ b/.vim/colors/brown.vim
@@ -0,0 +1,32 @@
+hi comment guifg=#fef8ff ctermfg=red
+hi constant guifg=#aa712f ctermfg=white
+hi cursor guibg=#5e3807 guifg=#deb887
+hi diffadd ctermbg=green ctermfg=black
+hi diffchange ctermbg=green ctermfg=white
+hi diffdelete ctermbg=none ctermfg=darkyellow
+hi difftext ctermbg=black ctermfg=green
+hi directory guifg=#3e1807 ctermfg=green
+hi error guibg=#cc3807 guifg=#deb887
+hi errormsg guifg=#cc3807 guibg=#f9d7a6
+hi identifier guifg=#5e3807 ctermfg=green
+hi incsearch guifg=#f9d7a6 guibg=#8e6837
+hi modemsg guifg=#793807 ctermbg=none ctermfg=cyan gui=none
+hi moremsg guifg=#793807 gui=none
+hi nontext guifg=#ffffff ctermfg=darkgrey
+hi normal guibg=#deb887 guifg=#846037
+hi preproc guifg=#7e6f27 ctermfg=white
+hi question guifg=#793807 gui=none
+hi scrollbar guibg=#deb887 guifg=#ae8857
+hi search guifg=#f9d7a6 ctermbg=cyan ctermfg=yellow guibg=#8e6837
+hi special guifg=#000000 ctermfg=yellow
+hi specialkey guifg=#ffffff ctermfg=white
+hi statement guifg=#7e5827 ctermfg=cyan
+hi statusline guibg=#fee8b7 ctermbg=black ctermfg=darkgreen guifg=#793807 gui=none
+hi statuslinenc guibg=#ae8857 ctermbg=black ctermfg=darkcyan guifg=#deb887 gui=none
+hi title guifg=#793807 ctermfg=darkgreen gui=none
+hi todo guibg=#995827 guifg=#fed8a7
+hi type guifg=#7e5827 ctermfg=yellow gui=none
+hi vertsplit guibg=#ae8857 ctermbg=green ctermfg=black guifg=#ae8857 gui=none
+hi visual guifg=#f9d7a6 guibg=#8e6837 ctermbg=black ctermfg=darkcyan
+hi warningmsg guifg=#cc3807
+hi wildmenu guifg=#f9d7a6 guibg=#8e6837
diff --git a/.vim/colors/buttercream.vim b/.vim/colors/buttercream.vim
new file mode 100644
index 0000000..30fb10d
--- /dev/null
+++ b/.vim/colors/buttercream.vim
@@ -0,0 +1,59 @@
+" Vim color file
+" vim: tw=0 ts=8 sw=4
+" Scriptname: buttercream
+" Maintainer: Håkan Wikström <hakan@wikstrom.st>
+" Version: 1.0 (initial release)
+" Last Change: 20040126
+" As of now only gui is supported
+" Based on the theme fog theme by Thomas R. Kimpton <tomk@emcity.net>
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = "buttercream"
+
+" Highlight Foreground Background Extras
+
+hi Normal guifg=#213a58 guibg=#f3edbb
+hi NonText guifg=LightBlue guibg=#f4df8b gui=bold
+hi Comment guifg=#2f8e99
+hi Constant guifg=#7070a0
+hi Statement guifg=DarkGreen gui=bold
+hi identifier guifg=DarkGreen
+hi preproc guifg=#408040
+hi type guifg=DarkBlue
+hi label guifg=#c06000
+hi operator guifg=DarkGreen gui=bold
+hi StorageClass guifg=#a02060 gui=bold
+hi Number guifg=Blue
+hi Special guifg=#aa8822
+hi Cursor guifg=LightGrey guibg=#880088
+hi lCursor guifg=Black guibg=Cyan
+hi ErrorMsg guifg=White guibg=DarkRed
+hi DiffText guibg=DarkRed gui=bold
+hi Directory guifg=DarkGrey gui=underline
+hi LineNr guifg=#ccaa22
+hi MoreMsg guifg=SeaGreen gui=bold
+hi Question guifg=DarkGreen gui=bold
+hi Search guifg=Black guibg=#887722
+hi SpecialKey guifg=Blue
+hi SpecialChar guifg=DarkGrey gui=bold
+hi Title guifg=DarkMagenta gui=underline
+hi WarningMsg guifg=DarkBlue guibg=#9999cc
+hi WildMenu guifg=Black guibg=Yellow gui=underline
+hi Folded guifg=DarkBlue guibg=LightGrey
+hi FoldColumn guifg=DarkBLue guibg=Grey
+hi DiffAdd guibg=DarkBlue
+hi DiffChange guibg=DarkMagenta
+hi DiffDelete guifg=Blue guibg=DarkCyan gui=bold
+hi Ignore guifg=grey90
+hi IncSearch gui=reverse
+hi ModeMsg gui=bold
+hi StatusLine gui=reverse,bold
+hi StatusLineNC gui=reverse
+hi VertSplit gui=reverse
+hi Visual guifg=LightGrey gui=reverse
+hi VisualNOS gui=underline,bold
+hi Todo guibg=#ccaa22 gui=bold,underline
diff --git a/.vim/colors/bw.vim b/.vim/colors/bw.vim
new file mode 100644
index 0000000..4c97e57
--- /dev/null
+++ b/.vim/colors/bw.vim
@@ -0,0 +1,55 @@
+" Vim color file
+" Maintainer: Hans Fugal <hans@fugal.net>
+" Last Change: 5 Oct 2001
+" URL: http://fugal.net/vim/colors/bw.vim
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+"
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="bw"
+
+hi SpecialKey cterm=bold ctermfg=NONE
+hi NonText cterm=bold ctermfg=NONE
+hi Directory cterm=bold ctermfg=NONE
+hi ErrorMsg cterm=standout ctermfg=NONE
+hi IncSearch cterm=reverse ctermfg=NONE
+hi Search cterm=reverse ctermfg=NONE
+hi MoreMsg cterm=bold ctermfg=NONE
+hi ModeMsg cterm=bold ctermfg=NONE
+hi LineNr cterm=underline ctermfg=NONE
+hi Question cterm=standout ctermfg=NONE
+hi StatusLine cterm=bold,reverse ctermfg=NONE
+hi StatusLineNC cterm=reverse ctermfg=NONE
+hi VertSplit cterm=reverse ctermfg=NONE
+hi Title cterm=bold ctermfg=NONE
+hi Visual cterm=reverse ctermfg=NONE
+hi VisualNOS cterm=bold,underline ctermfg=NONE
+hi WarningMsg cterm=standout ctermfg=NONE
+hi WildMenu cterm=standout ctermfg=NONE
+hi Folded cterm=standout ctermfg=NONE
+hi FoldColumn cterm=standout ctermfg=NONE
+hi DiffAdd cterm=bold ctermfg=NONE
+hi DiffChange cterm=bold ctermfg=NONE
+hi DiffDelete cterm=bold ctermfg=NONE
+hi DiffText cterm=reverse ctermfg=NONE
+hi Comment cterm=bold ctermfg=NONE
+hi Constant cterm=underline ctermfg=NONE
+hi Special cterm=bold ctermfg=NONE
+hi Identifier cterm=underline ctermfg=NONE
+hi Statement cterm=bold ctermfg=NONE
+hi PreProc cterm=underline ctermfg=NONE
+hi Type cterm=underline ctermfg=NONE
+hi Underlined cterm=underline ctermfg=NONE
+hi Ignore cterm=bold ctermfg=NONE
+hi Error cterm=reverse ctermfg=NONE
+hi Todo cterm=standout ctermfg=NONE
diff --git a/.vim/colors/c.vim b/.vim/colors/c.vim
new file mode 100644
index 0000000..6109c22
--- /dev/null
+++ b/.vim/colors/c.vim
@@ -0,0 +1,32 @@
+" Vim Syntax Highlighting File
+"
+" Language: C
+"
+" Extra: This is to copy the vi clone elvis on its
+" syntax highlighting.
+"
+" Maintainer: Dean Jones<dean@cleancode.org>
+"
+" Comment: This works well with the default c.vim
+" that comes with vim6.x. It basically
+" overrides the very bright colors it uses
+" and uses simple white for highlighting
+" key words and types in the C language.
+" If you're using Eterm, uncomment the
+" Normal line specified below.
+
+hi clear
+
+" Eterm users, uncomment the line below
+" hi Normal ctermfg=grey
+
+hi PreProc ctermfg=white
+hi Type ctermfg=white
+hi Statement ctermfg=white
+hi Comment ctermfg=grey
+hi Constant cterm=NONE ctermfg=NONE
+hi Number cterm=NONE ctermfg=NONE
+hi String cterm=NONE ctermfg=NONE
+hi Special cterm=NONE ctermfg=NONE
+
+" EOF for Dean's Elvis like highlighting
diff --git a/.vim/colors/camo.vim b/.vim/colors/camo.vim
new file mode 100644
index 0000000..059af42
--- /dev/null
+++ b/.vim/colors/camo.vim
@@ -0,0 +1,76 @@
+" Vim color file
+" Maintainer: Tim Aldrich <aldy0169@yahoo.com>
+" Last Change: 19 January 2002
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="camo"
+hi Normal guifg=bisque guibg=grey15
+hi Cursor guifg=snow guibg=bisque3
+hi CursorIM guifg=OliveDrab4 guibg=bisque
+hi Directory guifg=OliveDrab4 guibg=grey15
+hi DiffAdd guifg=DarkOliveGreen1 guibg=grey15
+hi DiffChange guifg=PaleGreen guibg=grey15
+hi DiffDelete guifg=red guibg=grey15
+hi DiffText guifg=grey15 guibg=red
+hi ErrorMsg guifg=snow guibg=red
+hi VertSplit guifg=bisque4 guibg=DarkOliveGreen1
+hi Folded guifg=DarkOliveGreen2 guibg=grey30
+hi FoldColumn guifg=DarkOliveGreen2 guibg=grey30
+hi IncSearch guifg=bisque guibg=red
+hi LineNr guifg=OliveDrab4 guibg=grey15
+hi ModeMsg guifg=khaki3 guibg=grey15
+hi MoreMsg guifg=khaki3 guibg=grey15
+hi NonText guifg=DarkSalmon guibg=grey10
+hi Question guifg=IndianRed guibg=grey10
+hi Search guifg=DarkSalmon guibg=grey15
+hi SpecialKey guifg=yellow guibg=grey15
+hi StatusLine guifg=bisque4 guibg=DarkOliveGreen1
+hi StatusLineNC guifg=bisque4 guibg=DarkOliveGreen3
+hi Title guifg=IndianRed guibg=grey15
+hi Visual guifg=OliveDrab4 guibg=bisque1
+hi WarningMsg guifg=bisque guibg=red
+hi WildMenu guifg=LightBlue guibg=DarkViolet
+
+
+"Syntax hilight groups
+
+hi Comment guifg=tan
+hi Constant guifg=khaki
+hi String guifg=moccasin
+hi Character guifg=chocolate
+hi Number guifg=chocolate
+hi Boolean guifg=OliveDrab3
+hi Float guifg=chocolate
+hi Identifier guifg=khaki4
+hi Function guifg=OliveDrab4
+hi Statement guifg=khaki
+hi Conditional guifg=khaki
+hi Repeat guifg=khaki
+hi Label guifg=khaki
+hi Operator guifg=DarkKhaki
+hi Keyword guifg=DarkKhaki
+hi Exception guifg=khaki
+hi PreProc guifg=khaki4
+hi Include guifg=khaki4
+hi Define guifg=khaki1
+hi Macro guifg=khaki2
+hi PreCondit guifg=khaki3
+hi Type guifg=khaki3
+hi StorageClass guifg=tan
+hi Structure guifg=DarkGoldenrod
+hi Typedef guifg=khaki3
+hi Special guifg=IndianRed
+hi SpecialChar guifg=DarkGoldenrod
+hi Tag guifg=DarkKhaki
+hi Delimiter guifg=DarkGoldenrod
+hi SpecialComment guifg=cornsilk
+hi Debug guifg=brown
+hi Underlined guifg=IndianRed
+hi Ignore guifg=grey30
+hi Error guifg=bisque guibg=red
+hi Todo guifg=red guibg=bisque
+
diff --git a/.vim/colors/campfire.vim b/.vim/colors/campfire.vim
new file mode 100644
index 0000000..b77c3fc
--- /dev/null
+++ b/.vim/colors/campfire.vim
@@ -0,0 +1,57 @@
+" Vim color file
+" Maintainer: Alexander Timmermans <alexandertimmermans@orange.nl>
+" Last Change: 28 september 2006
+
+set bg=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "campfire"
+
+hi Normal guifg=#c0c0c0 guibg=#000040 ctermfg=gray ctermbg=black
+hi ErrorMsg guifg=#ffffff guibg=#287eff ctermfg=white ctermbg=lightblue
+hi Visual guifg=#8080ff guibg=fg gui=reverse ctermfg=lightblue ctermbg=fg cterm=reverse
+hi VisualNOS guifg=#8080ff guibg=fg gui=reverse,underline ctermfg=lightblue ctermbg=fg cterm=reverse,underline
+hi Todo guifg=#d14a14 guibg=#1248d1 ctermfg=red ctermbg=darkblue
+hi Search guifg=#90fff0 guibg=#2050d0 ctermfg=white ctermbg=darkblue cterm=underline term=underline
+hi IncSearch guifg=#b0ffff guibg=#2050d0 ctermfg=darkblue ctermbg=gray
+
+hi SpecialKey guifg=cyan ctermfg=darkcyan
+hi Directory guifg=cyan ctermfg=cyan
+hi Title guifg=magenta gui=none ctermfg=magenta cterm=bold
+hi WarningMsg guifg=red ctermfg=red
+hi WildMenu guifg=yellow guibg=black ctermfg=yellow ctermbg=black cterm=none term=none
+hi ModeMsg guifg=#22cce2 ctermfg=lightblue
+hi MoreMsg ctermfg=darkgreen ctermfg=darkgreen
+hi Question guifg=green gui=none ctermfg=green cterm=none
+hi NonText guifg=#0030ff ctermfg=darkblue
+
+hi StatusLine guifg=blue guibg=darkgray gui=none ctermfg=blue ctermbg=gray term=none cterm=none
+hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+
+hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi LineNr guifg=#90f020 ctermfg=green cterm=none
+
+hi DiffAdd guibg=darkblue ctermbg=darkblue term=none cterm=none
+hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
+hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
+
+hi lCursor guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
+
+
+hi Comment guifg=#80a0ff ctermfg=darkred
+hi Constant ctermfg=magenta guifg=#ffa0a0 cterm=none
+hi Special ctermfg=brown guifg=Orange cterm=none gui=none
+hi Identifier ctermfg=cyan guifg=seagreen1 cterm=none
+hi Statement ctermfg=yellow cterm=none guifg=#ffff60 gui=none
+hi PreProc ctermfg=magenta guifg=gold gui=none cterm=none
+hi type ctermfg=green guifg=seagreen1 gui=none cterm=none
+hi Underlined cterm=underline term=underline
+hi Ignore guifg=bg ctermfg=bg
+hi String term=NONE cterm=NONE gui=NONE start=^[[m^[[33m stop=^[[m^[[32m ctermfg=3 guifg=LightGrey
+hi Constant term=NONE cterm=NONE gui=NONE start=^[[m^[[33m stop=^[[m^[[32m ctermfg=3 guifg=LightGrey
diff --git a/.vim/colors/candy.vim b/.vim/colors/candy.vim
new file mode 100644
index 0000000..545ff7c
--- /dev/null
+++ b/.vim/colors/candy.vim
@@ -0,0 +1,78 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/04/28 Sun 19:35.
+" version: 1.0
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "candy"
+
+hi Normal guifg=#f0f0f8 guibg=#000000
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#80ffff guibg=#0060c0
+hi Search gui=NONE guifg=#f0f0f8 guibg=#0060c0
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffa0ff guibg=NONE
+hi WarningMsg gui=BOLD guifg=#ffa0ff guibg=NONE
+hi ModeMsg gui=BOLD guifg=#40f0d0 guibg=NONE
+hi MoreMsg gui=BOLD guifg=#00ffff guibg=#008070
+hi Question gui=BOLD guifg=#e8e800 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#c8c8d8
+hi StatusLineNC gui=NONE guifg=#707080 guibg=#c8c8d8
+hi VertSplit gui=NONE guifg=#606080 guibg=#c8c8d8
+hi WildMenu gui=NONE guifg=#000000 guibg=#a0a0ff
+
+" Diff
+hi DiffText gui=NONE guifg=#ff78f0 guibg=#a02860
+hi DiffChange gui=NONE guifg=#e03870 guibg=#601830
+hi DiffDelete gui=NONE guifg=#a0d0ff guibg=#0020a0
+hi DiffAdd gui=NONE guifg=#a0d0ff guibg=#0020a0
+
+" Cursor
+hi Cursor gui=NONE guifg=#00ffff guibg=#008070
+hi lCursor gui=NONE guifg=#ffffff guibg=#8800ff
+hi CursorIM gui=NONE guifg=#ffffff guibg=#8800ff
+
+" Fold
+hi Folded gui=NONE guifg=#40f0f0 guibg=#005080
+hi FoldColumn gui=NONE guifg=#40c0ff guibg=#00305c
+
+" Other
+hi Directory gui=NONE guifg=#40f0d0 guibg=NONE
+hi LineNr gui=NONE guifg=#9090a0 guibg=NONE
+hi NonText gui=BOLD guifg=#4080ff guibg=NONE
+hi SpecialKey gui=BOLD guifg=#8080ff guibg=NONE
+hi Title gui=BOLD guifg=#f0f0f8 guibg=NONE
+hi Visual gui=NONE guifg=#e0e0f0 guibg=#707080
+
+" Syntax group
+hi Comment gui=NONE guifg=#c0c0d0 guibg=NONE
+hi Constant gui=NONE guifg=#90d0ff guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#ff0088
+hi Identifier gui=NONE guifg=#40f0f0 guibg=NONE
+hi Ignore gui=NONE guifg=#000000 guibg=NONE
+hi PreProc gui=NONE guifg=#40f0a0 guibg=NONE
+hi Special gui=NONE guifg=#e0e080 guibg=NONE
+hi Statement gui=NONE guifg=#ffa0ff guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#ffa0a0 guibg=NONE
+hi Type gui=NONE guifg=#ffc864 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=#f0f0f8 guibg=NONE
+
+" HTML
+hi htmlLink gui=UNDERLINE
+hi htmlBold gui=BOLD
+hi htmlBoldItalic gui=BOLD,ITALIC
+hi htmlBoldUnderline gui=BOLD,UNDERLINE
+hi htmlBoldUnderlineItalic gui=BOLD,UNDERLINE,ITALIC
+hi htmlItalic gui=ITALIC
+hi htmlUnderline gui=UNDERLINE
+hi htmlUnderlineItalic gui=UNDERLINE,ITALIC
diff --git a/.vim/colors/caramel.vim b/.vim/colors/caramel.vim
new file mode 100644
index 0000000..81f6fd5
--- /dev/null
+++ b/.vim/colors/caramel.vim
@@ -0,0 +1,67 @@
+" Vim color file
+" Maintainer : Brian Gant
+" Email : gantbd@muohio.edu
+" Last Change : 2/15/03
+" Version : 0.1
+"
+" TODO : add colors for diff and other non-implemented
+" stuff
+"
+" LICENCE (heh) : Emailware. Basically it means use it,
+" abuse it, change it, love it, leave it, whatever! I
+" do however make the simple request that if you use the
+" scheme, drop me an email and let me know what you think
+" about it, especially if you modify it! I don't use
+" the non-implemented features on a regular enough basis
+" to get a feel for how they flesh out.
+"
+" Designed for use with COBOL, but looks pretty good with
+" Perl, PHP, and C/C++ too (at least I think so).
+"
+" Brian
+"
+" ---------------------------------------------------------
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="caramel"
+
+" ---------------------------------------------------------
+
+hi Normal guifg=#dca454 guibg=#5c5094
+
+" ---------------------------------------------------------
+
+hi Cursor guifg=#303030 guibg=#dca454
+hi CursorIM guifg=#303030 guibg=#dca454
+hi ErrorMsg guifg=#b4a8a8 guibg=bg
+hi IncSearch guifg=#e0d070 guibg=#303030
+hi LineNr guifg=#b4a8a8 guibg=#39325d
+hi ModeMsg guifg=#b4a8a8 guibg=bg
+hi MoreMsg guifg=#b4a8a8 guibg=bg
+hi NonText guifg=#b4a8a8 guibg=#39325d
+hi Question guifg=#b4a8a8 guibg=bg
+hi Search guifg=#303030 guibg=#e0d070
+hi StatusLine guifg=#e0d070 guibg=#303030
+hi StatusLineNC guifg=#dca454 guibg=#303030
+hi Title guifg=#b4a8a8 guibg=#39325d
+hi Visual guifg=#b4a8a8 guibg=#303030
+hi VisualNOS guifg=#b4a8a8 guibg=#303030
+hi WarningMsg guifg=#b4a8a8 guibg=#39325d
+
+" ---------------------------------------------------------
+
+hi Comment guifg=#b4a8a8 guibg=bg
+hi Constant guifg=#9cd464 guibg=bg
+hi Identifier guifg=#e8c47c guibg=bg
+hi Statement guifg=#8088bc guibg=bg
+hi PreProc guifg=#e0d070 guibg=bg
+hi Type guifg=#e0d070 guibg=bg
+hi Special guifg=#e0d070 guibg=bg
+hi Underlined guifg=#9cd464 guibg=bg
+hi Ignore guifg=fg guibg=bg
+hi Error guifg=#cc74a8 guibg=#9cd464
+hi Todo guifg=bg guibg=#e0d070
diff --git a/.vim/colors/chela_light.vim b/.vim/colors/chela_light.vim
new file mode 100644
index 0000000..3fd8d95
--- /dev/null
+++ b/.vim/colors/chela_light.vim
@@ -0,0 +1,89 @@
+" Vim color file
+"
+" Maintainer: Stefan Karlsson <stefan.74@comhem.se>
+" Last Change: 29 September 2004
+"
+
+set background=light
+
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name="chela_light"
+
+
+"= Syntax Groups =============================================
+
+hi comment guibg=#fafafa guifg=#339900 gui=none
+
+hi constant guibg=#fafafa guifg=#dd3333 gui=none
+hi specialchar guibg=#fafafa guifg=#ff3333 gui=underline
+
+hi identifier guibg=#fafafa guifg=#3333ff gui=none
+
+hi statement guibg=#fafafa guifg=#3333ff gui=none
+hi label guibg=#fafafa guifg=#3333ff gui=none
+
+hi preproc guibg=#fafafa guifg=#3333ff gui=none
+hi include guibg=#fafafa guifg=#3333ff gui=none
+hi precondit guibg=#fafafa guifg=#cc00cc gui=none
+
+hi type guibg=#fafafa guifg=#3333ff gui=none
+
+hi special guibg=#fafafa guifg=#cc00cc gui=none
+
+hi error guibg=#ff3333 guifg=#ffffff gui=none
+
+hi todo guibg=#339933 guifg=#ffffff gui=none
+
+
+"= General Groups ============================================
+
+hi cursor guibg=#000000 guifg=#ffffff gui=none
+
+hi directory guibg=#fafafa guifg=#3333ff gui=none
+
+hi diffadd guibg=#66ff66 guifg=#000000 gui=none
+hi diffdelete guibg=#ff6666 guifg=#ff6666 gui=none
+hi diffchange guibg=#ffff00 guifg=#cccc99 gui=none
+hi difftext guibg=#ffff00 guifg=#000000 gui=none
+
+hi errormsg guibg=#ff3333 guifg=#ffffff gui=none
+
+hi vertsplit guibg=#3333ff guifg=#3333ff gui=none
+
+hi folded guibg=#eeeeee guifg=#3333ff gui=none
+hi foldcolumn guibg=#eeeeee guifg=#999999 gui=none
+
+hi linenr guibg=#fafafa guifg=#bbbbbb gui=none
+
+hi modemsg guibg=#fafafa guifg=#999999 gui=none
+
+hi moremsg guibg=#339900 guifg=#ffffff gui=none
+hi question guibg=#339900 guifg=#ffffff gui=none
+
+hi nontext guibg=#fafafa guifg=#999999 gui=none
+
+hi normal guibg=#fafafa guifg=#000000 gui=none
+
+hi search guibg=#ffff00 guifg=#000000 gui=none
+hi incsearch guibg=#ffbb00 guifg=#000000 gui=none
+
+hi specialkey guibg=#fafafa guifg=#cc00cc gui=none
+
+hi statusline guibg=#3333ff guifg=#ffffff gui=none
+hi statuslinenc guibg=#3333ff guifg=#999999 gui=none
+
+hi title guibg=#fafafa guifg=#6666ff gui=none
+
+hi visual guibg=#bbbbbb guifg=#333333 gui=none
+
+hi warningmsg guibg=#fafafa guifg=#ff0000 gui=none
+
+hi wildmenu guibg=#339900 guifg=#ffffff gui=none
+
+
+" [eof]
+
diff --git a/.vim/colors/chocolateliquor.vim b/.vim/colors/chocolateliquor.vim
new file mode 100644
index 0000000..c71bdf3
--- /dev/null
+++ b/.vim/colors/chocolateliquor.vim
@@ -0,0 +1,34 @@
+" Vim color file
+" Maintainer: Gerald S. Williams
+" Last Change: 2003 Apr 17
+
+" This started as a dark version (perhaps opposite is a better term) of
+" PapayaWhip, but took on a life of its own. Easy on the eyes, but still
+" has good contrast. Not bad on a color terminal, either (of course, on
+" my color terms, Black == #3f1f1f and White == PapayaWhip :-P ).
+"
+" Only values that differ from defaults are specified.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "ChocolateLiquor"
+
+hi Normal guibg=#3f1f1f guifg=PapayaWhip ctermfg=White
+hi NonText guibg=#1f0f0f guifg=Brown2 ctermfg=Brown
+hi LineNr guibg=#1f0f0f guifg=Brown2
+hi DiffDelete guibg=DarkRed guifg=White ctermbg=DarkRed ctermfg=White
+hi DiffAdd guibg=DarkGreen guifg=White ctermbg=DarkGreen ctermfg=White
+hi DiffText gui=NONE guibg=DarkCyan guifg=Yellow ctermbg=DarkCyan ctermfg=Yellow
+hi DiffChange guibg=DarkCyan guifg=White ctermbg=DarkCyan ctermfg=White
+hi Constant ctermfg=Red
+hi Comment guifg=LightBlue3
+hi PreProc guifg=Plum ctermfg=Magenta
+hi StatusLine guibg=White guifg=Sienna4 cterm=NONE ctermfg=Gray ctermbg=Brown
+hi StatusLineNC gui=NONE guifg=Black guibg=Gray ctermbg=Black ctermfg=Gray
+hi VertSplit guifg=Gray
+hi Search guibg=Gold3 ctermfg=White
+hi Type gui=NONE guifg=DarkSeaGreen2
+hi Statement gui=NONE guifg=Gold3
diff --git a/.vim/colors/cleanphp.vim b/.vim/colors/cleanphp.vim
new file mode 100644
index 0000000..c0af691
--- /dev/null
+++ b/.vim/colors/cleanphp.vim
@@ -0,0 +1,81 @@
+" Vim color file
+" Maintainer: Billy McIntosh <billymcintosh@ntlworld.com>
+" Last Change: June 24, 2003
+" Licence: Public Domain
+
+" This package offers a eye-catching color scheme for PHP syntax
+
+" First remove all existing highlighting.
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "cleanphp"
+
+hi Normal guifg=#008000 guibg=#d3e4f8
+
+hi ErrorMsg guibg=#d3e4f8 guifg=Red
+hi IncSearch gui=reverse
+hi ModeMsg gui=bold
+hi StatusLine gui=reverse,bold
+hi StatusLineNC gui=reverse
+hi VertSplit gui=reverse
+hi Visual gui=reverse guifg=#c0c0c0 guibg=fg
+hi VisualNOS gui=underline,bold
+hi DiffText gui=bold guibg=Red
+hi Cursor guibg=Black guifg=NONE
+hi lCursor guibg=Black guifg=NONE
+hi Directory guifg=#ff8040
+hi LineNr guifg=#008000
+hi MoreMsg gui=bold guifg=SeaGreen
+hi NonText gui=bold guifg=#ff8040 guibg=#d3e4f8
+hi Question gui=bold guifg=Black
+hi Search guibg=#008000 guifg=NONE
+hi SpecialKey guifg=#ff8040
+hi Title gui=bold guifg=Magenta
+hi WarningMsg guifg=Red
+hi WildMenu guibg=Cyan guifg=#d3e4f8
+hi Folded guibg=White guifg=Darkblue
+hi FoldColumn guibg=#c0c0c0 guifg=Darkblue
+hi DiffAdd guibg=Lightblue
+hi DiffChange guibg=LightMagenta
+hi DiffDelete gui=bold guifg=#ff8040 guibg=LightCyan
+
+hi Comment guifg=#ff8040 guibg=#d3e4f8
+hi Constant guifg=#BB0000 guibg=#d3e4f8
+hi PreProc guifg=#008080 guibg=#d3e4f8
+hi Statement gui=NONE guifg=#008000 guibg=#d3e4f8
+hi Special guifg=#008080 guibg=#d3e4f8
+hi Ignore guifg=#c0c0c0
+hi Identifier guifg=#000080 guibg=#d3e4f8
+hi Type guifg=#00BB00 guibg=#d3e4f8
+
+hi link IncSearch Visual
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+
+" vim: sw=2 \ No newline at end of file
diff --git a/.vim/colors/coffee.vim b/.vim/colors/coffee.vim
new file mode 100644
index 0000000..284fb01
--- /dev/null
+++ b/.vim/colors/coffee.vim
@@ -0,0 +1,60 @@
+" Vim color file
+" Maintainer: David Lazar <david#c7.campus.utcluj.ro>
+" Last Change: Fri Jan 31 01:08:13 UTC 2003
+" Version: 1.0
+" URL: http://c7.campus.utcluj.ro/~david/coffee.vim
+"
+" This colorscheme script was created using Hans Fugal's colorscheme template
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="coffee"
+
+hi Normal gui=none guibg= #514c44 guifg=#b0a594
+
+hi Cursor gui=none guibg=#ffffff guifg=bg
+hi link CursorIM Cursor
+hi Directory guifg=#ffffff
+hi DiffAdd guibg=#9e9485 guifg=bg
+hi DiffDelete guibg=#2e2b26 guifg=fg
+hi DiffChange guibg=#70695e guifg=fg
+hi DiffText guibg=#70695e guifg=#880000
+hi ErrorMsg guibg=#880000 guifg=#ffffff
+hi Folded guifg=#88c0c7
+hi FoldColumn guifg=#88c0c7
+hi IncSearch guifg=#fff0d6 guibg=#000000
+hi LineNr guibg=#000000 guifg=#ffff21
+hi ModeMsg guifg=#ffffff
+hi MoreMsg guifg=#00ff00
+hi NonText guifg=#61616d
+hi Question guifg=#ffff00
+hi link Search IncSearch
+hi SpecialKey guifg=#ffffff
+hi StatusLine guibg=#000000 guifg=#deefff
+hi StatusLineNC guibg=#395956 guifg=#a4b1bd
+hi VertSplit guibg=#395956 guifg=#a4b1bd
+hi Title guifg=#ffffff
+hi Visual guifg=#fff0d6 guibg=#000000
+hi VisualNOS guifg=#dddddd guibg=bg
+hi WarningMsg guifg=#ffff00
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=#1a1813
+hi Constant guifg=#cefece
+hi Identifier guifg=#cc7c3d
+hi Statement guifg=#effec5
+hi PreProc guifg=#85ff85
+hi Type guifg=#c6feeb
+hi Special guifg=#eeffee
+hi Underlined gui=underline guifg=#ffffff
+hi Ignore guifg=fg
+hi Error guibg=bg guifg=#ff4c4a
+hi Todo guibg=#aa0006 guifg=#fff300
+
diff --git a/.vim/colors/colorer.vim b/.vim/colors/colorer.vim
new file mode 100644
index 0000000..30e1277
--- /dev/null
+++ b/.vim/colors/colorer.vim
@@ -0,0 +1,79 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+" Maintainer: Sergey V. Beduev <shaman@interdon.net>
+" Last Change: Sun Mar 28 11:19:38 EEST 2004
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "colorer"
+
+hi Normal ctermfg=Gray guifg=DarkGray guibg=black
+hi Visual ctermfg=DarkCyan guibg=black guifg=DarkCyan
+hi Comment ctermfg=Brown guifg=#B46918 gui=NONE
+hi PerlPOD ctermfg=Brown guifg=#B86A18 gui=NONE
+hi Constant ctermfg=White guifg=White gui=NONE
+hi Charachter ctermfg=Yellow guifg=Yellow gui=NONE
+hi String ctermfg=Yellow guifg=Yellow gui=NONE
+hi Number ctermfg=White guifg=White gui=NONE
+hi Boolean ctermfg=Cyan guifg=DarkGray gui=NONE
+hi Special ctermfg=DarkMagenta guifg=Red gui=NONE
+hi Define ctermfg=LightMagenta guifg=Magenta gui=NONE
+hi Identifier ctermfg=Green guifg=Green gui=NONE
+hi Exception ctermfg=White guifg=White gui=NONE
+hi Statement ctermfg=White guifg=White gui=NONE
+hi Label ctermfg=White guifg=White gui=NONE
+hi Keyword ctermfg=White guifg=White gui=NONE
+hi PreProc ctermfg=Green guifg=Green gui=NONE
+hi Type ctermfg=LightGreen guifg=Green gui=NONE
+hi Function ctermfg=White guifg=White gui=NONE
+hi Repeat ctermfg=White guifg=White gui=NONE
+hi Operator ctermfg=White guifg=White gui=NONE
+hi Ignore ctermfg=black guifg=bg
+hi Folded ctermbg=LightBlue ctermfg=Gray guibg=DarkBlue guifg=DarkGray gui=NONE
+hi Error term=reverse ctermbg=Red ctermfg=White guibg=darkRed guifg=White gui=NONE
+hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Black guibg=#AD5500 gui=NONE
+hi Done term=standout ctermbg=Gray ctermfg=White guifg=White guibg=Gray gui=NONE
+
+hi SpellErrors ctermfg=DarkRed guifg=Black gui=NONE
+
+hi MailQ ctermfg=darkcyan guibg=black gui=NONE
+hi MailQu ctermfg=darkgreen guibg=black gui=NONE
+hi MyDiffNew ctermfg=magenta guifg=red gui=NONE
+hi MyDiffCommLine ctermfg=white ctermbg=red guifg=white guibg=darkred gui=NONE
+hi MyDiffRemoved ctermfg=LightRed guifg=red gui=NONE
+hi MyDiffSubName ctermfg=DarkCyan guifg=Cyan gui=NONE
+hi MyDiffNormal ctermbg=White ctermfg=black guibg=White guifg=black gui=NONE
+hi MoreMsg gui=NONE
+hi ModeMsg gui=NONE
+hi Title gui=NONE
+hi NonText gui=NONE
+hi DiffDelete gui=NONE
+hi DiffText gui=NONE
+hi StatusLine guifg=black guibg=gray gui=NONE
+hi Question gui=NONE
+" Common groups that link to default highlighting.
+" You can specify other highlighting easily.
+"hi link String Constant
+"hi link Character Constant
+"hi link Number Constant
+"hi link Boolean Constant
+hi link Float Number
+hi link Conditional Repeat
+hi link Include PreProc
+hi link Structure Define
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Normal
+hi link SpecialComment Special
+hi link Debug Special
+
diff --git a/.vim/colors/cool.vim b/.vim/colors/cool.vim
new file mode 100644
index 0000000..a7593d9
--- /dev/null
+++ b/.vim/colors/cool.vim
@@ -0,0 +1,82 @@
+" Vim color file
+" Maintainer: Gergely Kontra <kgergely@mcl.hu>
+" Last Change: 2002. 07. 03.
+" Based on scite colors.
+" I've changed my mind, and inverted the colors.
+" After an hour, this is the result.
+" Not resembles to scite's colors :-]
+" I'm a bit red-blind, so if you have suggestions, don't hesitate :)
+" ^^^^^^^^^ Sorry, I cannot speak English well, just want to say,
+" that in some rare cases I cannot distinguish between some colors
+" (I've just realized it, when I see some special tests)
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+"colorscheme default
+let g:colors_name = "cool"
+
+
+" GUI
+"highlight Normal guifg=#77BBFF guibg=#304060
+highlight Normal guifg=#77BBFF guibg=#102040
+highlight Normal ctermfg=LightBlue ctermbg=Black
+
+highlight Comment guifg=#EEEEEE guibg=#393939
+highlight Comment ctermfg=white ctermbg=DarkGrey
+
+highlight Constant gui=underline
+highlight Constant ctermfg=LightBlue cterm=bold,underline
+
+highlight Cursor guifg=#999999 guibg=#FFFFFF
+
+highlight Define guifg=#FFFF80 guibg=#000099 gui=bold
+highlight Define ctermfg=Yellow ctermbg=DarkBlue cterm=bold
+
+highlight Delimiter guifg=#FFFFFF guibg=#221F22 gui=bold
+
+highlight FoldColumn guifg=#FFFFFF guibg=#222222
+highlight FoldColumn ctermfg=White ctermbg=DarkGrey cterm=reverse
+
+highlight Folded guifg=#000000 guibg=#999999
+highlight Folded ctermfg=DarkGrey ctermbg=Black cterm=reverse
+
+highlight Function guifg=#dddddd guibg=#000099 gui=bold
+highlight Function ctermfg=White ctermbg=DarkBlue cterm=bold
+
+highlight IncSearch guifg=#000000 guibg=#ffffff gui=bold,underline
+
+highlight LineNr guifg=#FFFFFF guibg=#444444
+
+highlight Number guifg=#dddddd gui=bold
+highlight Number ctermfg=LightCyan
+
+highlight PreProc guibg=#000000 guifg=#77bbff gui=bold
+
+highlight Search guifg=#ffffff guibg=#335577
+highlight Search ctermfg=White ctermbg=Cyan cterm=reverse
+
+highlight Special guifg=#ccaa55 guibg=#102040 gui=none
+highlight Special ctermfg=Brown ctermbg=Black cterm=bold
+
+highlight Statement guifg=#FF8080 gui=bold
+highlight Statement ctermfg=Magenta cterm=bold
+
+highlight StatusLine guifg=#FFFFFF guibg=#553333
+highlight StatusLine ctermfg=white ctermbg=DarkRed
+
+highlight StatusLineNC guifg=#AA8888 guibg=#000000
+highlight StatusLineNC ctermfg=red ctermbg=black
+
+highlight String guifg=#99ffaa guibg=#000000
+highlight String ctermfg=White
+
+highlight Subtitle guifg=#FFFFFF guibg=#994444 gui=bold,underline
+
+highlight Type guifg=#FFFFFF gui=NONE
+highlight Type guifg=white gui=NONE
+
+highlight Visual guibg=#112233 guifg=#6688AA
+highlight Visual ctermbg=DarkBlue ctermfg=LightBlue
diff --git a/.vim/colors/dante.vim b/.vim/colors/dante.vim
new file mode 100644
index 0000000..f584889
--- /dev/null
+++ b/.vim/colors/dante.vim
@@ -0,0 +1,83 @@
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" File: "/home/caciano/.vim/dante.vim"
+" Created: "Thu, 23 May 2002 00:12:20 -0300 (caciano)"
+" Updated: "Sat, 24 Aug 2002 14:04:21 -0300 (caciano)"
+" Copyright (C) 2002, Caciano Machado <caciano@inf.ufrgs.br>
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" Colorscheme Option:
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+hi clear
+if exists("syntax on")
+ syntax reset
+endif
+let g:colors_name = "dante"
+
+" General colors
+hi Normal ctermfg=gray guifg=peachpuff3 guibg=black
+hi Directory term=bold ctermfg=blue guifg=royalblue
+hi ErrorMsg term=standout ctermfg=white ctermbg=red guifg=white guibg=red3
+hi NonText term=bold ctermfg=darkgray guibg=gray3 guifg=gray20
+hi SpecialKey term=bold ctermfg=darkgray guifg=gray30
+hi LineNr term=underline ctermfg=darkgray guifg=ivory4 guibg=gray4
+hi IncSearch term=reverse cterm=reverse gui=reverse,bold guifg=darkgoldenrod2
+hi Search term=reverse ctermfg=black ctermbg=yellow guifg=gray10 guibg=gold2
+hi Visual term=bold,reverse cterm=bold,reverse ctermfg=gray ctermbg=black gui=bold,reverse guifg=gray40 guibg=black
+hi VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline
+hi MoreMsg term=bold ctermfg=green gui=bold guifg=olivedrab1
+hi ModeMsg term=bold cterm=bold gui=bold
+hi Question term=standout ctermfg=green gui=bold guifg=olivedrab1
+hi WarningMsg term=standout ctermfg=red gui=bold guifg=red3
+hi WildMenu term=standout ctermfg=black ctermbg=yellow guifg=black guibg=gold2
+hi Folded term=standout ctermfg=blue ctermbg=white guifg=royalblue1 guibg=white
+hi FoldColumn term=standout ctermfg=blue ctermbg=white guifg=royalblue3 guibg=white
+hi DiffAdd term=bold ctermbg=blue guibg=royalblue2
+hi DiffChange term=bold ctermbg=darkmagenta guibg=maroon
+hi DiffDelete term=bold cterm=bold ctermfg=lightblue ctermbg=cyan gui=bold guifg=lightblue guibg=cyan4
+hi DiffText term=reverse cterm=bold ctermbg=red gui=bold guibg=red3
+hi Cursor guifg=bg guibg=fg
+hi lCursor guifg=bg guibg=fg
+hi StatusLine term=reverse cterm=reverse gui=reverse guifg=gray60
+hi StatusLineNC term=reverse cterm=reverse gui=reverse guifg=gray40
+hi VertSplit term=reverse cterm=reverse gui=bold,reverse guifg=gray40
+hi Title term=bold ctermfg=magenta gui=bold guifg=aquamarine
+
+" syntax hi colors
+hi Comment term=bold ctermfg=darkcyan guifg=cyan4
+hi PreProc term=underline ctermfg=darkblue guifg=dodgerblue4
+hi Constant term=underline ctermfg=darkred guifg=firebrick3
+hi Type term=underline ctermfg=darkgreen gui=none guifg=chartreuse3
+hi Statement term=bold ctermfg=darkyellow gui=none guifg=gold3
+hi Identifier term=underline ctermfg=darkgreen guifg=darkolivegreen4
+hi Ignore term=bold ctermfg=darkgray guifg=gray45
+hi Special term=underline ctermfg=brown guifg=sienna
+hi Error term=reverse ctermfg=gray ctermbg=red guifg=gray guibg=red3
+hi Todo term=standout ctermfg=black ctermbg=yellow gui=bold guifg=gray10 guibg=yellow4
+hi Underlined term=underline cterm=underline ctermfg=darkblue gui=underline guifg=slateblue
+hi Number term=underline ctermfg=darkred guifg=red2
+" syntax hi links
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Number Constant
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Operator Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
diff --git a/.vim/colors/darkblack.vim b/.vim/colors/darkblack.vim
new file mode 100644
index 0000000..5dcd263
--- /dev/null
+++ b/.vim/colors/darkblack.vim
@@ -0,0 +1,60 @@
+" Vim color file
+" Maintainer: Matthew Jimenez <mjimenez@ersnet.net>
+" Last Change: 2005 Feb 25
+
+" darkblack -- an alteration to the darkblue colorscheme by Bohdan Vlasyuk <bohdan@vstu.edu.ua>
+
+
+set bg=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "darkblack"
+
+hi Normal guifg=lightgrey guibg=black ctermfg=lightgray ctermbg=black
+hi ErrorMsg guifg=white guibg=lightblue ctermfg=white ctermbg=lightblue
+hi Visual guifg=lightblue guibg=fg gui=reverse ctermfg=lightblue ctermbg=fg cterm=reverse
+hi VisualNOS guifg=lightblue guibg=fg gui=reverse,underline ctermfg=lightblue ctermbg=fg cterm=reverse,underline
+hi Todo guifg=red guibg=black ctermfg=red ctermbg=black
+hi Search guifg=white guibg=black ctermfg=white ctermbg=black cterm=underline term=underline
+hi IncSearch guifg=black guibg=gray ctermfg=black ctermbg=gray
+
+hi SpecialKey guifg=cyan ctermfg=darkcyan
+hi Directory guifg=cyan ctermfg=cyan
+hi Title guifg=magenta gui=none ctermfg=magenta cterm=bold
+hi WarningMsg guifg=red ctermfg=red
+hi WildMenu guifg=yellow guibg=black ctermfg=yellow ctermbg=black cterm=none term=none
+hi ModeMsg guifg=lightblue ctermfg=lightblue
+hi MoreMsg ctermfg=darkgreen ctermfg=darkgreen
+hi Question guifg=green gui=none ctermfg=green cterm=none
+hi NonText guifg=lightcyan ctermfg=lightcyan
+
+hi StatusLine guifg=lightblue guibg=darkgray gui=none ctermfg=lightblue ctermbg=gray term=none cterm=none
+hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
+
+hi Folded guifg=darkgrey guibg=black ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi FoldColumn guifg=darkgrey guibg=black ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi LineNr guifg=green ctermfg=green cterm=none
+
+hi DiffAdd guibg=black ctermbg=black term=none cterm=none
+hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete ctermfg=lightblue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
+hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
+
+hi Cursor guifg=bg guibg=lightgrey ctermfg=bg ctermbg=lightgrey
+hi lCursor guifg=bg guibg=darkgreen ctermfg=bg ctermbg=darkgreen
+
+
+hi Comment guifg=lightblue ctermfg=lightblue
+hi Constant ctermfg=magenta guifg=magenta cterm=none
+hi Special ctermfg=brown guifg=Orange cterm=none gui=none
+hi Identifier ctermfg=cyan guifg=cyan cterm=none
+hi Statement ctermfg=yellow cterm=none guifg=yellow gui=none
+hi PreProc ctermfg=magenta guifg=magenta gui=none cterm=none
+hi type ctermfg=green guifg=green gui=none cterm=none
+hi Underlined cterm=underline term=underline
+hi Ignore guifg=bg ctermfg=bg
+
diff --git a/.vim/colors/darkblue2.vim b/.vim/colors/darkblue2.vim
new file mode 100644
index 0000000..e31483b
--- /dev/null
+++ b/.vim/colors/darkblue2.vim
@@ -0,0 +1,99 @@
+" Vim color file
+" Maintainer: Datila Carvalho <datila@saci.homeip.net>
+" Last Change: November, 3, 2003
+" Version: 0.1
+
+" This is a VIM's version of the emacs color theme
+" _Dark Blue2_ created by Chris McMahan.
+
+""" Init stuff
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "darkblue2"
+
+
+""" Colors
+
+" GUI colors
+hi Cursor guifg=#233b5a guibg=Yellow
+hi CursorIM guifg=NONE guibg=Yellow
+hi Directory gui=bold guifg=cyan
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+hi DiffText guibg=grey50
+hi ErrorMsg gui=bold guifg=White guibg=gray85
+hi VertSplit gui=bold guifg=NONE guibg=gray80
+"hi Folded
+"hi FoldColumn
+"hi IncSearch
+"hi LineNr
+hi ModeMsg gui=bold
+"hi MoreMsg
+"hi NonText
+hi Normal guibg=#233b5a guifg=#fff8dc
+"hi Question
+hi Search gui=bold guifg=#233b5a guibg=lightgoldenrod
+"hi SpecialKey
+hi StatusLine guifg=aquamarine
+hi StatusLineNC guifg=steelblue3
+"hi Title
+hi Visual guifg=steelblue guibg=fg
+hi VisualNOS gui=bold guifg=steelblue guibg=fg
+hi WarningMsg guifg=White guibg=Tomato
+"hi WildMenu
+
+" Colors for syntax highlighting
+hi Comment gui=italic guifg=mediumaquamarine
+
+hi Constant gui=bold guifg=lightgoldenrod1
+ hi String guifg=aquamarine
+ hi Character guifg=aquamarine
+ hi Number gui=bold guifg=lightgoldenrod1
+ hi Boolean gui=bold guifg=lightgoldenrod1
+ hi Float gui=bold guifg=lightgoldenrod1
+
+hi Identifier gui=bold guifg=palegreen
+ hi Function guifg=lightskyblue
+
+hi Statement gui=bold guifg=cyan
+ hi Conditional gui=bold guifg=cyan
+ hi Repeat gui=bold guifg=cyan
+ hi Label guifg=cyan
+ hi Operator guifg=cyan
+ "hi Keyword
+ "hi Exception
+
+hi PreProc guifg=lightsteelblue
+ hi Include gui=bold guifg=lightsteelblue
+ hi Define guifg=lightsteelblue
+ hi Macro guifg=lightsteelblue
+ hi PreCondit guifg=lightsteelblue
+
+hi Type gui=bold guifg=palegreen
+ hi StorageClass gui=bold guifg=lightgoldenrod1
+ hi Structure gui=bold guifg=lightgoldenrod1
+ hi Typedef gui=bold guifg=lightgoldenrod1
+
+"hi Special
+ ""Underline Character
+ "hi SpecialChar
+ "hi Tag
+ ""Statement
+ "hi Delimiter
+ ""Bold comment (in Java at least)
+ "hi SpecialComment
+ "hi Debug
+
+hi Underlined gui=underline
+
+hi Ignore guifg=bg
+
+hi Error gui=bold guifg=White guibg=Red
+
+"hi Todo
diff --git a/.vim/colors/darkdot.vim b/.vim/colors/darkdot.vim
new file mode 100644
index 0000000..0275896
--- /dev/null
+++ b/.vim/colors/darkdot.vim
@@ -0,0 +1,80 @@
+" Vim color file
+" Maintainer: David Lazar <david#c7.campus.utcluj.ro>
+" Last Change: Thu May 20 16:27:13 EEST 2004
+" Version: 2.2
+" URL: http://www.c7obs.net/~david/stuff/darkdot.vim
+"
+" This colorscheme script was created using Hans Fugal's colorscheme template
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="darkdot"
+
+hi Normal cterm=none gui=none guibg=#101020 guifg=#a8aaaa
+hi Cursor cterm=none guibg=#44ff44 guifg=#000000
+hi link CursorIM Cursor
+hi Directory ctermfg=cyan guifg=#44ffff
+hi DiffAdd ctermbg=blue ctermfg=yellow guibg=#080888 guifg=#ffff00
+hi DiffDelete ctermbg=black ctermfg=darkgray guibg=#080808 guifg=#444444
+hi DiffChange ctermbg=black guibg=#080808 guifg=#ffffff
+hi DiffText ctermbg=black ctermfg=darkred guibg=#080808 guifg=#bb0000
+hi ErrorMsg ctermbg=darkred ctermfg=white guibg=#880000 guifg=#ffffff
+hi Folded ctermbg=black ctermfg=darkblue guibg=black guifg=#000088
+hi link FoldColumn Folded
+hi IncSearch ctermbg=black ctermfg=gray guibg=#000000 guifg=#bbcccc
+hi LineNr ctermfg=yellow guibg=#404040 guifg=#ffff00
+hi ModeMsg ctermfg=white guifg=#ffffff
+hi MoreMsg ctermfg=green guifg=#44ff44
+hi NonText ctermfg=blue guifg=#4444ff
+hi Question ctermfg=yellow guifg=#ffff00
+hi Search ctermbg=NONE ctermfg=green guibg=NONE guifg=green
+hi SpecialKey ctermfg=blue guifg=#4444ff
+hi StatusLine cterm=none ctermbg=darkcyan ctermfg=white gui=none guibg=#00aaaa guifg=#ffffff
+hi StatusLineNC cterm=none ctermbg=gray ctermfg=black gui=none guibg=#bbbbbb guifg=#000000
+hi link VertSplit StatusLineNC
+hi Title ctermfg=white guifg=#ffffff
+hi Visual cterm=none ctermbg=gray ctermfg=black gui=none guibg=#bbbbbb guifg=#000000
+hi link VisualNOS Visual
+hi WarningMsg ctermfg=yellow guifg=#ffff00
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment ctermfg=blue guifg=#4444ff
+hi Constant ctermfg=darkcyan guifg=#00aaaa
+hi Identifier ctermfg=white guifg=#ffffff
+hi Statement ctermfg=cyan guifg=#44ffff
+hi PreProc ctermfg=darkcyan guifg=#00aaaa
+hi Type ctermfg=white guifg=#ffffff
+hi Special ctermfg=blue cterm=bold guifg=#6666ff gui=bold
+hi Underlined ctermfg=blue guifg=#4444ff
+hi Ignore ctermfg=darkgray guifg=#444444
+hi Error ctermbg=black ctermfg=darkred guibg=#000000 guifg=#bb0000
+hi Todo ctermbg=darkred ctermfg=yellow guibg=#aa0006 guifg=#fff300
+
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Conditional Statement
+hi link Label Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Repeat Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+hi link FoldColumn Folded
diff --git a/.vim/colors/darkocean.vim b/.vim/colors/darkocean.vim
new file mode 100644
index 0000000..99d2ed3
--- /dev/null
+++ b/.vim/colors/darkocean.vim
@@ -0,0 +1,52 @@
+" Name Of File: darkocean.vim
+" Description: Gvim colorscheme, works best with version 6.0.
+" Maintainer: Naveen Chandra R <ncr AT iitbombay DOT org>
+" Last Change: Thursday, August 15, 2002
+" Installation: Drop this file in your $VIMRUNTIME/colors/ directory
+" or manually source this file using ':so darkocean.vim'.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="darkocean"
+
+hi Cursor gui=None guibg=#add8e6 guifg=#000000
+hi CursorIM gui=None guibg=#add8e6 guifg=#000000
+hi Directory gui=None guibg=bg guifg=#20b2aa
+hi DiffAdd gui=Bold guibg=#7e354d guifg=fg
+hi DiffChange gui=Bold guibg=#103040 guifg=#cc3300
+hi DiffDelete gui=Bold,Reverse guibg=#7e354d guifg=fg
+hi DiffText gui=Bold guibg=#d74141 guifg=fg
+hi ErrorMsg gui=None guibg=#b22222 guifg=#ffffe0
+hi VertSplit gui=None guibg=#999999 guifg=#000000
+hi Folded gui=Bold guibg=#003366 guifg=#999999
+hi FoldColumn gui=Bold guibg=#305070 guifg=#b0d0e0
+hi IncSearch gui=Bold guibg=#8db6cd guifg=fg
+hi LineNr gui=Bold guibg=#0f0f0f guifg=#8db6cd
+hi MoreMsg gui=Bold guibg=bg guifg=#bf9261
+hi ModeMsg gui=Bold guibg=bg guifg=#4682b4
+hi NonText gui=None guibg=#0f0f0f guifg=#87cefa
+hi Normal gui=None guibg=#000000 guifg=#e0ffff
+hi Question gui=Bold guibg=bg guifg=#f4bb7e
+hi Search gui=Bold guibg=#607b8b guifg=#000000
+hi SpecialKey gui=None guibg=bg guifg=#63b8ff
+hi StatusLine gui=Bold guibg=#8db6cd guifg=#000000
+hi StatusLineNC gui=None guibg=#607b8b guifg=#1a1a1a
+hi Title gui=Bold guibg=bg guifg=#5cacee
+hi Visual gui=Reverse guibg=#ffffff guifg=#36648b
+hi VisualNOS gui=Bold,Underline guibg=#4682b4 guifg=fg
+hi WarningMsg gui=Bold guibg=bg guifg=#b22222
+hi WildMenu gui=Bold guibg=#607b8b guifg=#000000
+hi Comment gui=None guibg=#102520 guifg=#8db6cd
+hi Constant gui=None guibg=bg guifg=#c34a2c
+hi Identifier gui=None guibg=bg guifg=#009acd
+hi Statement gui=None guibg=bg guifg=#72a5ee
+hi PreProc gui=None guibg=bg guifg=#c12869
+hi Include gui=None guibg=bg guifg=#ccccff
+hi Type gui=None guibg=bg guifg=#3b9c9c
+hi Error gui=None guibg=#b22222 guifg=#ffffe0
+hi Todo gui=None guibg=#507080 guifg=#3bcccc
+hi Ignore gui=None guibg=bg guifg=#777777
+hi TagName gui=None guibg=#660000 guifg=#a7a7a7
diff --git a/.vim/colors/darkslategray.vim b/.vim/colors/darkslategray.vim
new file mode 100644
index 0000000..b36aef0
--- /dev/null
+++ b/.vim/colors/darkslategray.vim
@@ -0,0 +1,117 @@
+" vim: set tw=0 sw=4 sts=4 et:
+
+" Vim color file
+" Maintainer: Tuomas Susi <tsusi@cc.hut.fi>
+" Last Change: 2004 October 05
+" Version: 1.7
+
+" Emacs in RedHat Linux used to have (still does?) a kind of 'Wheat on
+" DarkSlateGray' color scheme by default. This color scheme is created in the
+" same spirit.
+"
+" Darkslategray is intended to be nice to your eyes (low contrast) and to take
+" advantage of syntax hilighting as much as possible.
+"
+" This color scheme is for the GUI only, I'm happy with default console colors.
+" Needs at least vim 6.0.
+
+
+" Init stuff
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "darkslategray"
+
+
+" GUI colors
+
+hi Cursor guifg=fg guibg=#da70d6
+hi CursorIM guifg=NONE guibg=#ff83fa
+hi Directory guifg=#e0ffff
+hi DiffAdd guibg=#528b8b
+hi DiffChange guibg=#8b636c
+hi DiffDelete gui=bold guifg=fg guibg=#000000
+hi DiffText gui=bold guibg=#6959cd
+hi ErrorMsg gui=bold guifg=#ffffff guibg=#ff0000
+hi VertSplit gui=bold guifg=#bdb76b guibg=#000000
+hi Folded guifg=#000000 guibg=#bdb76b
+hi FoldColumn guifg=#000000 guibg=#bdb76b
+hi SignColumn gui=bold guifg=#bdb76b guibg=#20b2aa
+hi IncSearch gui=bold guifg=#000000 guibg=#ffffff
+hi LineNr gui=bold guifg=#bdb76b guibg=#528b8b
+hi ModeMsg gui=bold
+hi MoreMsg gui=bold guifg=#20b2aa
+hi NonText gui=bold guifg=#ffffff
+hi Normal guibg=#2f4f4f guifg=#f5deb3
+hi Question gui=bold guifg=#ff6347
+hi Search gui=bold guifg=#000000 guibg=#ffd700
+hi SpecialKey guifg=#00ffff
+hi StatusLine gui=bold guifg=#f0e68c guibg=#000000
+hi StatusLineNC guibg=#bdb76b guifg=#404040
+hi Title gui=bold guifg=#ff6347
+hi Visual guifg=#000000 guibg=fg
+hi VisualNOS gui=bold guifg=#000000 guibg=fg
+hi WarningMsg guifg=#ffffff guibg=#ff6347
+hi WildMenu gui=bold guifg=#000000 guibg=#ffff00
+
+
+" I use GTK and don't wanna change these
+"hi Menu foobar
+"hi Scrollbar foobar
+"hi Tooltip foobar
+
+
+" Colors for syntax highlighting
+hi Comment guifg=#da70d6
+
+hi Constant guifg=#cdcd00
+ hi String guifg=#7fffd4
+ hi Character guifg=#7fffd4
+ hi Number guifg=#ff6347
+ hi Boolean guifg=#cdcd00
+ hi Float guifg=#ff6347
+
+hi Identifier guifg=#afeeee
+ hi Function guifg=#ffffff
+
+hi Statement gui=bold guifg=#4682b4
+ hi Conditional gui=bold guifg=#4682b4
+ hi Repeat gui=bold guifg=#4682b4
+ hi Label gui=bold guifg=#4682b4
+ hi Operator gui=bold guifg=#4682b4
+ hi Keyword gui=bold guifg=#4682b4
+ hi Exception gui=bold guifg=#4682b4
+
+hi PreProc guifg=#cdcd00
+ hi Include guifg=#ffff00
+ hi Define guifg=#cdcd00
+ hi Macro guifg=#cdcd00
+ hi PreCondit guifg=#cdcd00
+
+hi Type gui=bold guifg=#98fb98
+ hi StorageClass guifg=#00ff00
+ hi Structure guifg=#20b2aa
+ hi Typedef guifg=#00ff7f
+
+hi Special guifg=#ff6347
+ "Underline Character
+ hi SpecialChar gui=underline guifg=#7fffd4
+ hi Tag guifg=#ff6347
+ "Statement
+ hi Delimiter gui=bold guifg=#b0c4de
+ "Bold comment (in Java at least)
+ hi SpecialComment gui=bold guifg=#da70d6
+ hi Debug gui=bold guifg=#ff0000
+
+hi Underlined gui=underline
+
+hi Ignore guifg=bg
+
+hi Error gui=bold guifg=#ffffff guibg=#ff0000
+
+hi Todo gui=bold guifg=#000000 guibg=#ff83fa
+
diff --git a/.vim/colors/dawn.vim b/.vim/colors/dawn.vim
new file mode 100644
index 0000000..5c65ca3
--- /dev/null
+++ b/.vim/colors/dawn.vim
@@ -0,0 +1,65 @@
+" Vim color file
+" Maintainer: Ajit J. Thakkar (ajit AT unb DOT ca)
+" Last Change: 2003 July 23
+" Version: 1.2
+" URL: http://www.unb.ca/chem/ajit/vim.htm
+
+" This GUI-only color scheme has a light grey background, and is a softer
+" variant of the default and morning color schemes.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "dawn"
+
+hi Normal guifg=Black guibg=grey90
+"hi Normal guifg=Black guibg=grey80
+
+" Groups used in the 'highlight' and 'guicursor' options default value.
+hi ErrorMsg gui=NONE guifg=Red guibg=Linen
+hi IncSearch gui=NONE guifg=fg guibg=LightGreen
+hi ModeMsg gui=bold guifg=fg guibg=bg
+hi StatusLine gui=NONE guifg=DarkBlue guibg=grey70
+hi StatusLineNC gui=NONE guifg=grey90 guibg=grey70
+hi VertSplit gui=NONE guifg=grey70 guibg=grey70
+hi Visual gui=reverse guifg=Grey guibg=fg
+hi VisualNOS gui=underline,bold guifg=fg guibg=bg
+hi DiffText gui=bold guifg=Blue guibg=LightYellow
+hi Cursor guifg=NONE guibg=Green
+hi lCursor guifg=NONE guibg=Cyan
+hi Directory guifg=Blue guibg=bg
+hi LineNr guifg=Brown guibg=bg
+hi MoreMsg gui=bold guifg=SeaGreen guibg=bg
+hi NonText gui=bold guifg=Blue guibg=grey80
+hi Question gui=bold guifg=SeaGreen guibg=bg
+hi Search guifg=fg guibg=PeachPuff
+hi SpecialKey guifg=Blue guibg=bg
+hi Title gui=bold guifg=Magenta guibg=bg
+hi WarningMsg guifg=Red guibg=bg
+hi WildMenu guifg=fg guibg=PeachPuff
+hi Folded guifg=Grey40 guibg=bg " guifg=DarkBlue guibg=LightGrey
+hi FoldColumn guifg=DarkBlue guibg=Grey
+hi DiffAdd gui=bold guifg=Blue guibg=LightCyan
+hi DiffChange gui=bold guifg=fg guibg=MistyRose2
+hi DiffDelete gui=NONE guifg=LightBlue guibg=LightCyan
+
+" Colors for syntax highlighting
+hi Constant gui=NONE guifg=azure4 guibg=bg
+"hi Constant gui=NONE guifg=DeepSkyBlue4 guibg=bg
+hi String gui=NONE guifg=DarkOliveGreen4 guibg=bg
+hi Special gui=bold guifg=Cyan4 guibg=bg
+hi Statement gui=NONE guifg=SlateBlue4 guibg=bg
+hi Operator gui=NONE guifg=Purple guibg=bg
+hi Ignore gui=NONE guifg=bg guibg=bg
+hi ToDo gui=NONE guifg=DeepPink1 guibg=bg
+hi Error gui=NONE guifg=Red guibg=Linen
+hi Comment gui=NONE guifg=RoyalBlue guibg=NONE
+hi Identifier gui=NONE guifg=SteelBlue4 guibg=NONE
+hi PreProc gui=NONE guifg=Magenta4 guibg=NONE
+hi Type gui=NONE guifg=Brown guibg=NONE
+hi Underlined gui=underline guifg=SlateBlue guibg=bg
+
+" vim: sw=2
diff --git a/.vim/colors/delek.vim b/.vim/colors/delek.vim
new file mode 100644
index 0000000..32e4536
--- /dev/null
+++ b/.vim/colors/delek.vim
@@ -0,0 +1,57 @@
+" Vim color file
+" Maintainer: David Schweikert <dws@ee.ethz.ch>
+" Last Change: 2001 Mai 14
+
+" First remove all existing highlighting.
+hi clear
+
+let colors_name = "delek"
+
+hi Normal guifg=Black guibg=white
+
+" Groups used in the 'highlight' and 'guicursor' options default value.
+hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
+hi IncSearch term=reverse cterm=reverse gui=reverse
+hi ModeMsg term=bold cterm=bold gui=bold
+hi VertSplit term=reverse cterm=reverse gui=reverse
+hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
+hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
+hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
+hi Cursor guibg=Green guifg=NONE
+hi lCursor guibg=Cyan guifg=NONE
+hi Directory term=bold ctermfg=DarkBlue guifg=Blue
+hi LineNr term=underline ctermfg=Brown guifg=Brown
+hi MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen
+hi Question term=standout ctermfg=DarkGreen gui=bold guifg=SeaGreen
+hi Search term=reverse ctermbg=Yellow ctermfg=NONE guibg=Yellow guifg=NONE
+hi SpecialKey term=bold ctermfg=DarkBlue guifg=Blue
+hi Title term=bold ctermfg=DarkMagenta gui=bold guifg=Magenta
+hi WarningMsg term=standout ctermfg=DarkRed guifg=Red
+hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
+hi Folded term=standout ctermbg=Grey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
+hi FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
+hi DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue
+hi DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta
+hi DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
+
+hi StatusLine cterm=bold ctermbg=blue ctermfg=yellow guibg=gold guifg=blue
+hi StatusLineNC cterm=bold ctermbg=blue ctermfg=black guibg=gold guifg=blue
+hi NonText term=bold ctermfg=Blue gui=bold guifg=gray guibg=white
+hi Cursor guibg=fg guifg=bg
+
+" syntax highlighting
+hi PreProc term=underline cterm=NONE ctermfg=darkmagenta gui=NONE guifg=magenta3
+hi Identifier term=underline cterm=NONE ctermfg=darkcyan gui=NONE guifg=cyan4
+hi Comment term=NONE cterm=NONE ctermfg=darkred gui=NONE guifg=red2
+hi Constant term=underline cterm=NONE ctermfg=darkgreen gui=NONE guifg=green3
+hi Special term=bold cterm=NONE ctermfg=lightred gui=NONE guifg=deeppink
+hi Statement term=bold cterm=bold ctermfg=blue gui=bold guifg=blue
+hi Type term=underline cterm=NONE ctermfg=blue gui=bold guifg=blue
+
+if exists("syntax_on")
+ let syntax_cmd = "enable"
+ runtime syntax/syncolor.vim
+ unlet syntax_cmd
+endif
+
+" vim: sw=2
diff --git a/.vim/colors/denim.vim b/.vim/colors/denim.vim
new file mode 100644
index 0000000..c41af9f
--- /dev/null
+++ b/.vim/colors/denim.vim
@@ -0,0 +1,141 @@
+" Maintainer: Tim Aldrich <aldy0169@yahoo.com>
+" Last Change: 19 November 2001
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="denim"
+" GUI colors {{{
+hi Normal guifg=#FFFFFF guibg=#000038
+hi Cursor guifg=#000038 guibg=#FFFFFF
+hi CursorIM guifg=#6699CC guibg=#99CCCC
+hi Directory guifg=#33CCFF guibg=#6699CC
+hi DiffAdd guifg=#FFFFCC guibg=#000038
+hi DiffChange guifg=#FF9900 guibg=#000038
+hi DiffDelete guifg=#999999 guibg=#000038
+hi DiffText guifg=#FFFFFF guibg=#000038
+hi ErrorMsg guifg=#FFFFFF guibg=#FF0000
+hi VertSplit guifg=#FFFFFF guibg=#000038
+hi Folded guifg=#999999 guibg=#003366
+hi FoldColumn guifg=#0000EE guibg=#6699CC
+hi IncSearch guifg=#FFFF00 guibg=#000038
+hi LineNr guifg=#FFFFEE guibg=#000038
+hi ModeMsg guifg=#FFFFFF guibg=#000038
+hi MoreMsg guifg=#FFFFFF guibg=#000038
+hi NonText guifg=#FFFFFF guibg=#00003D
+hi Question guifg=#FFFFFF guibg=#0000EE
+hi Search guifg=#993300 guibg=#6699CC
+hi SpecialKey guifg=#FFFF00 guibg=#000038
+hi StatusLine guifg=#FFFFFF guibg=#000038
+hi StatusLineNC guifg=#CCCCCC guibg=#000038
+hi Title guifg=#FFFFFF guibg=#FF9900
+hi Visual guifg=#003366 guibg=#6699FF
+hi WarningMsg guifg=#FF0000 guibg=#FFFFFF
+hi WildMenu guifg=#000038 guibg=#999999
+" }}}
+
+" cterm colors {{{
+hi Normal ctermfg=white ctermbg=darkblue
+hi Cursor ctermfg=darkblue ctermbg=white
+hi CursorIM ctermfg=lightcyan ctermbg=lightcyan
+hi Directory ctermfg=lightblue ctermbg=lightcyan
+hi DiffAdd ctermfg=LightYellow ctermbg=darkblue
+hi DiffChange ctermfg=darkred ctermbg=darkblue
+hi DiffDelete ctermfg=grey ctermbg=darkblue
+hi DiffText ctermfg=white ctermbg=darkblue
+hi ErrorMsg ctermfg=red ctermbg=lightcyan
+hi VertSplit ctermfg=white ctermbg=darkblue
+hi Folded ctermfg=grey ctermbg=darkblue
+hi FoldColumn ctermfg=darkred ctermbg=lightcyan
+hi IncSearch ctermfg=yellow ctermbg=darkblue
+hi LineNr ctermfg=lightyellow ctermbg=darkblue
+hi ModeMsg ctermfg=white ctermbg=darkblue
+hi MoreMsg ctermfg=white ctermbg=darkblue
+hi NonText ctermfg=white ctermbg=lightblue
+hi Question ctermfg=white ctermbg=darkblue
+hi Search ctermfg=darkred ctermbg=lightcyan
+hi SpecialKey ctermfg=yellow ctermbg=darkblue
+hi StatusLine ctermfg=white ctermbg=darkblue
+hi StatusLineNC ctermfg=lightgrey ctermbg=darkblue
+hi Title ctermfg=white ctermbg=yellow
+hi Visual ctermfg=lightblue ctermbg=cyan
+hi WarningMsg ctermfg=red ctermbg=white
+hi WildMenu ctermfg=darkblue ctermbg=grey
+" }}}
+
+" GUI hilight groups {{{
+
+hi Comment guifg=#999999
+hi Constant guifg=#33FF33
+hi String guifg=#CCCC99
+hi Character guifg=#33FF33
+hi Number guifg=#33FF33
+hi Boolean guifg=#33FF33
+hi Float guifg=#33FF33
+hi Identifier guifg=#33FFFF
+hi Function guifg=#33FFFF
+hi Statement guifg=#FFFFCC
+hi Conditional guifg=#FFFFCC
+hi Repeat guifg=#FFFFCC
+hi Label guifg=#33FF99
+hi Operator guifg=#FFFF00
+hi Keyword guifg=#FFFF00
+hi Exception guifg=#FFFFAA
+hi PreProc guifg=#66CCFF
+hi Include guifg=#66CCFF
+hi Define guifg=#66CCFF
+hi Macro guifg=#66CCFF
+hi PreCondit guifg=#66CCFF
+hi Type guifg=#33FF99
+hi StorageClass guifg=#33FF99
+hi Structure guifg=#33FF99
+hi Typedef guifg=#33FF99
+hi Special guifg=#00FF00
+hi SpecialChar guifg=#00FF00
+hi Tag guifg=#CCCCFF
+hi Delimiter guifg=#CCCCFF
+hi SpecialComment guifg=#FFFFCC
+hi Debug guifg=#CC3300
+hi Ignore guifg=#0066AA
+hi Error guifg=#FF0000 guibg=#FFFFFF
+hi Todo guifg=#999999 guibg=#FFFFFF
+" }}}
+
+" cterm hilight groups {{{
+hi Comment ctermfg=grey
+hi Constant ctermfg=lightgreen
+hi String ctermfg=brown
+hi Character ctermfg=lightgreen
+hi Number ctermfg=lightgreen
+hi Boolean ctermfg=lightgreen
+hi Float ctermfg=lightgreen
+hi Identifier ctermfg=lightcyan
+hi Function ctermfg=lightcyan
+hi Statement ctermfg=lightyellow
+hi Conditional ctermfg=lightyellow
+hi Repeat ctermfg=lightyellow
+hi Label ctermfg=lightcyan
+hi Operator ctermfg=yellow
+hi Keyword ctermfg=yellow
+hi Exception ctermfg=yellow
+hi PreProc ctermfg=darkcyan
+hi Include ctermfg=darkcyan
+hi Define ctermfg=darkcyan
+hi Macro ctermfg=darkcyan
+hi PreCondit ctermfg=darkcyan
+hi Type ctermfg=lightcyan
+hi StorageClass ctermfg=lightcyan
+hi Structure ctermfg=lightcyan
+hi Typedef ctermfg=lightcyan
+hi Special ctermfg=green
+hi SpecialChar ctermfg=green
+hi Tag ctermfg=brown
+hi Delimiter ctermfg=brown
+hi SpecialComment ctermfg=lightyellow
+hi Debug ctermfg=magenta
+hi Ignore ctermfg=lightblue
+hi Error ctermfg=red ctermbg=white
+hi Todo ctermfg=grey ctermbg=white
+" }}}
diff --git a/.vim/colors/desert.vim b/.vim/colors/desert.vim
new file mode 100644
index 0000000..e43c61b
--- /dev/null
+++ b/.vim/colors/desert.vim
@@ -0,0 +1,105 @@
+" Vim color file
+" Maintainer: Hans Fugal <hans@fugal.net>
+" Last Change: $Date: 2003/06/02 19:28:15 $
+" URL: http://hans.fugal.net/vim/colors/desert.vim
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="desert"
+
+hi Normal guifg=White guibg=grey20
+
+" highlight groups
+hi Cursor guibg=khaki guifg=slategrey
+"hi CursorIM
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+"hi ErrorMsg
+hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
+hi Folded guibg=grey30 guifg=gold
+hi FoldColumn guibg=grey30 guifg=tan
+hi IncSearch guifg=slategrey guibg=khaki
+"hi LineNr
+hi ModeMsg guifg=goldenrod
+hi MoreMsg guifg=SeaGreen
+hi NonText guifg=LightBlue guibg=grey30
+hi Question guifg=springgreen
+hi Search guibg=peru guifg=wheat
+hi SpecialKey guifg=yellowgreen
+hi StatusLine guibg=#c2bfa5 guifg=black gui=none
+hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
+hi Title guifg=indianred
+hi Visual gui=none guifg=khaki guibg=olivedrab
+"hi VisualNOS
+hi WarningMsg guifg=salmon
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=SkyBlue
+hi Constant guifg=#ffa0a0
+hi Identifier guifg=palegreen
+hi Statement guifg=khaki
+hi PreProc guifg=indianred
+hi Type guifg=darkkhaki
+hi Special guifg=navajowhite
+"hi Underlined
+hi Ignore guifg=grey40
+"hi Error
+hi Todo guifg=orangered guibg=yellow2
+
+" color terminal definitions
+hi SpecialKey ctermfg=darkgreen
+hi NonText cterm=bold ctermfg=darkblue
+hi Directory ctermfg=darkcyan
+hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
+hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
+hi Search cterm=NONE ctermfg=grey ctermbg=blue
+hi MoreMsg ctermfg=darkgreen
+hi ModeMsg cterm=NONE ctermfg=brown
+hi LineNr ctermfg=3
+hi Question ctermfg=green
+hi StatusLine cterm=bold,reverse
+hi StatusLineNC cterm=reverse
+hi VertSplit cterm=reverse
+hi Title ctermfg=5
+hi Visual cterm=reverse
+hi VisualNOS cterm=bold,underline
+hi WarningMsg ctermfg=1
+hi WildMenu ctermfg=0 ctermbg=3
+hi Folded ctermfg=darkgrey ctermbg=NONE
+hi FoldColumn ctermfg=darkgrey ctermbg=NONE
+hi DiffAdd ctermbg=4
+hi DiffChange ctermbg=5
+hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
+hi DiffText cterm=bold ctermbg=1
+hi Comment ctermfg=darkcyan
+hi Constant ctermfg=brown
+hi Special ctermfg=5
+hi Identifier ctermfg=6
+hi Statement ctermfg=3
+hi PreProc ctermfg=5
+hi Type ctermfg=2
+hi Underlined cterm=underline ctermfg=5
+hi Ignore ctermfg=darkgrey
+hi Error cterm=bold ctermfg=7 ctermbg=1
+
+
+"vim: sw=4
diff --git a/.vim/colors/dusk.vim b/.vim/colors/dusk.vim
new file mode 100644
index 0000000..fc7c8a5
--- /dev/null
+++ b/.vim/colors/dusk.vim
@@ -0,0 +1,64 @@
+" Vim color file
+" Maintainer: Ajit J. Thakkar (ajit AT unb DOT ca)
+" Last Change: 2003 Sep. 02
+" Version: 1.0
+" URL: http://www.unb.ca/chem/ajit/vim.htm
+
+" This GUI-only color scheme has a blue-black background
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "dusk"
+
+hi Normal guifg=ivory guibg=#1f3048
+
+" Groups used in the 'highlight' and 'guicursor' options default value.
+hi ErrorMsg gui=NONE guifg=Red guibg=Linen
+hi IncSearch gui=NONE guibg=LightGreen guifg=Black
+hi ModeMsg gui=NONE guifg=fg guibg=bg
+hi StatusLine gui=NONE guifg=DarkBlue guibg=Grey
+hi StatusLineNC gui=NONE guifg=Grey50 guibg=Grey
+hi VertSplit gui=NONE guifg=Grey guibg=Grey
+hi Visual gui=reverse guifg=fg guibg=LightSkyBlue4
+hi VisualNOS gui=underline guifg=fg guibg=bg
+hi DiffText gui=NONE guifg=Yellow guibg=LightSkyBlue4
+hi Cursor guibg=Green guifg=Black
+hi lCursor guibg=Cyan guifg=Black
+hi Directory guifg=LightGreen guibg=bg
+hi LineNr guifg=MistyRose3 guibg=bg
+hi MoreMsg gui=NONE guifg=SeaGreen guibg=bg
+hi NonText gui=NONE guifg=Cyan4 guibg=#102848
+hi Question gui=NONE guifg=LimeGreen guibg=bg
+hi Search gui=NONE guifg=SkyBlue4 guibg=Bisque
+hi SpecialKey guifg=Cyan guibg=bg
+hi Title gui=NONE guifg=Yellow2 guibg=bg
+hi WarningMsg guifg=Tomato3 guibg=Linen
+hi WildMenu gui=NONE guifg=SkyBlue4 guibg=Bisque
+hi Folded guifg=MistyRose2 guibg=bg
+hi FoldColumn guifg=DarkBlue guibg=Grey
+hi DiffAdd gui=NONE guifg=Blue guibg=LightCyan
+hi DiffChange gui=NONE guifg=white guibg=LightCyan4
+hi DiffDelete gui=NONE guifg=LightBlue guibg=LightCyan
+
+" Colors for syntax highlighting
+hi Constant gui=NONE guifg=MistyRose3 guibg=bg
+hi String gui=NONE guifg=LightBlue3 guibg=bg
+hi Special gui=NONE guifg=GoldenRod guibg=bg
+hi Statement gui=NONE guifg=khaki guibg=bg
+"hi Statement gui=NONE guifg=#d7cd7b guibg=bg
+hi Operator gui=NONE guifg=Chartreuse guibg=bg
+hi Ignore gui=NONE guifg=bg guibg=bg
+hi ToDo gui=NONE guifg=DodgerBlue guibg=bg
+hi Error gui=NONE guifg=Red guibg=Linen
+hi Comment gui=NONE guifg=SlateGrey guibg=bg
+hi Comment gui=NONE guifg=Lavender guibg=bg
+hi Identifier gui=NONE guifg=BlanchedAlmond guibg=bg
+hi PreProc gui=NONE guifg=#ffa0a0 guibg=bg
+hi Type gui=NONE guifg=NavajoWhite guibg=bg
+hi Underlined gui=underline guifg=fg guibg=bg
+
+" vim: sw=2
diff --git a/.vim/colors/earth.vim b/.vim/colors/earth.vim
new file mode 100644
index 0000000..306529b
--- /dev/null
+++ b/.vim/colors/earth.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Shrinath
+" Last Change: 2004/09/13 Mon 12:50.
+" version: 0.2
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "earth"
+
+hi Normal guifg=#000000 guibg=#99CC99
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#60ffff guibg=#6060ff
+hi Search gui=NONE guifg=#ffffff guibg=#6060ff
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi WarningMsg gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi ModeMsg gui=NONE guifg=#60ffff guibg=NONE
+hi MoreMsg gui=NONE guifg=#ffc0ff guibg=NONE
+hi Question gui=NONE guifg=#ffff60 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#d0d0e0
+hi StatusLineNC gui=NONE guifg=#606080 guibg=#d0d0e0
+hi VertSplit gui=NONE guifg=#606080 guibg=#d0d0e0
+hi WildMenu gui=NONE guifg=#000000 guibg=#00c8f0
+
+" Diff
+hi DiffText gui=UNDERLINE guifg=#ffff00 guibg=#000000
+hi DiffChange gui=NONE guifg=#ffffff guibg=#000000
+hi DiffDelete gui=NONE guifg=#60ff60 guibg=#000000
+hi DiffAdd gui=NONE guifg=#60ff60 guibg=#000000
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#d86020
+hi lCursor gui=NONE guifg=#ffffff guibg=#e000b0
+hi CursorIM gui=NONE guifg=#ffffff guibg=#e000b0
+
+" Fold
+hi Folded gui=NONE guifg=#ffffff guibg=#0088c0
+" hi Folded gui=NONE guifg=#ffffff guibg=#2080d0
+hi FoldColumn gui=NONE guifg=#60e0e0 guibg=#006c7f
+
+" Other
+hi Directory gui=NONE guifg=#00e0ff guibg=NONE
+hi LineNr gui=BOLD guifg=#669966 guibg=NONE
+hi NonText gui=BOLD guifg=#00c0c0 guibg=#9999CC
+hi SpecialKey gui=NONE guifg=#e0a0ff guibg=NONE
+hi Title gui=BOLD guifg=#003300 guibg=NONE
+hi Visual gui=NONE guifg=#000000 guibg=#6060d0
+
+" Syntax group
+hi Comment gui=NONE guifg=#996666 guibg=NONE
+hi Constant gui=NONE guifg=#990066 guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#ff40a0
+hi Identifier gui=NONE guifg=#669966 guibg=NONE
+hi Ignore gui=NONE guifg=#993300 guibg=NONE
+hi PreProc gui=NONE guifg=#009900 guibg=NONE
+hi Special gui=NONE guifg=#FF0000 guibg=NONE
+hi Statement gui=NONE guifg=#CC9900 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#993300 guibg=NONE
+hi Type gui=NONE guifg=#993300 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=#663300 guibg=NONE
+
diff --git a/.vim/colors/edo_sea.vim b/.vim/colors/edo_sea.vim
new file mode 100644
index 0000000..f03300a
--- /dev/null
+++ b/.vim/colors/edo_sea.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/30 Wed 00:01.
+" version: 1.0
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "Edo_sea"
+
+hi Normal guifg=#f0f0f8 guibg=#303060
+
+" Search
+hi IncSearch gui=UNDERLINE,BOLD guifg=#f0f0f0 guibg=#c030f0
+hi Search gui=BOLD guifg=#f0e0f0 guibg=#b020f0
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#f0f0f0 guibg=#f000a0
+hi WarningMsg gui=BOLD guifg=#f0f0f0 guibg=#f000a0
+hi ModeMsg gui=BOLD guifg=#00e0f0 guibg=NONE
+hi MoreMsg gui=BOLD guifg=#00f0f0 guibg=#6060f0
+hi Question gui=BOLD guifg=#00f0d0 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#d0d0e0
+hi StatusLineNC gui=NONE guifg=#606080 guibg=#d0d0e0
+hi VertSplit gui=NONE guifg=#606080 guibg=#d0d0e0
+hi WildMenu gui=NONE guifg=#000000 guibg=#f090f0
+
+" Diff
+hi DiffText gui=UNDERLINE guifg=#f0f000 guibg=#000000
+hi DiffChange gui=NONE guifg=#f0f0f0 guibg=#000000
+hi DiffDelete gui=NONE guifg=#60f060 guibg=#000000
+hi DiffAdd gui=NONE guifg=#60f060 guibg=#000000
+
+" Cursor
+hi Cursor gui=NONE guifg=#f0f0f0 guibg=#d86020
+hi lCursor gui=NONE guifg=#f0f0f0 guibg=#e000b0
+hi CursorIM gui=NONE guifg=#f0f0f0 guibg=#e000b0
+
+" Fold
+hi Folded gui=NONE guifg=#f0f0f0 guibg=#0080a0
+hi FoldColumn gui=NONE guifg=#9090f0 guibg=#3c3c88
+
+" Other
+hi Directory gui=NONE guifg=#00f0f0 guibg=NONE
+hi LineNr gui=NONE guifg=#7070e8 guibg=NONE
+hi NonText gui=BOLD guifg=#8080f0 guibg=NONE
+hi SpecialKey gui=BOLD guifg=#60c0f0 guibg=NONE
+hi Title gui=BOLD guifg=#f0f0f8 guibg=NONE
+hi Visual gui=NONE guifg=#f0f0f0 guibg=#6060f0
+" hi VisualNOS gui=NONE guifg=#f0f0f0 guibg=#6060f0
+
+" Syntax group
+hi Comment gui=NONE guifg=#b0b0b8 guibg=#343478
+hi Constant gui=NONE guifg=#50f0d0 guibg=NONE
+hi Error gui=NONE guifg=#f0f0f0 guibg=#c03030
+hi Identifier gui=NONE guifg=#d0c0f0 guibg=NONE
+hi Ignore gui=NONE guifg=#303070 guibg=NONE
+hi PreProc gui=NONE guifg=#f0b0f0 guibg=NONE
+hi Special gui=NONE guifg=#d0f050 guibg=NONE
+hi Statement gui=NONE guifg=#f0d050 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#f070e0 guibg=NONE
+hi Type gui=NONE guifg=#40f080 guibg=NONE
+hi Underlined gui=UNDERLINE,BOLD guifg=#f0f0f8 guibg=NONE
diff --git a/.vim/colors/emacs.vim b/.vim/colors/emacs.vim
new file mode 100644
index 0000000..21f22f7
--- /dev/null
+++ b/.vim/colors/emacs.vim
@@ -0,0 +1,63 @@
+" Vim color file
+" Maintainer: Michael Piefel <piefel@informatik.hu-berlin.de>
+" Last Change: 2001 Aug 16
+" Licence: Public Domain
+
+" This color scheme uses a White background. It's based on Bram's
+" morning theme, but doesn't try to work for non-GUI editing.
+"
+" It's supposed to look like the Emacs standard colors, at least
+" for C. But Emacs has different categories, so it's not very good.
+
+" First remove all existing highlighting.
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "emacs"
+
+hi Normal guifg=Black guibg=White
+
+" Groups used in the 'highlight' and 'guicursor' options default value.
+hi ErrorMsg guibg=Red guifg=White
+hi IncSearch gui=reverse
+hi ModeMsg gui=bold
+hi StatusLine gui=reverse,bold
+hi StatusLineNC gui=reverse
+hi VertSplit gui=reverse
+hi Visual gui=reverse guifg=Grey guibg=fg
+hi VisualNOS gui=underline,bold
+hi DiffText gui=bold guibg=Red
+hi Cursor guibg=Black guifg=NONE
+hi lCursor guibg=Cyan guifg=NONE
+hi Directory guifg=Blue
+hi LineNr guifg=Brown
+hi MoreMsg gui=bold guifg=SeaGreen
+hi NonText gui=bold guifg=Blue guibg=grey90
+hi Question gui=bold guifg=SeaGreen
+hi Search guibg=Yellow guifg=NONE
+hi SpecialKey guifg=Blue
+hi Title gui=bold guifg=Magenta
+hi WarningMsg guifg=Red
+hi WildMenu guibg=Yellow guifg=Black
+hi Folded guibg=White guifg=DarkBlue
+hi FoldColumn guibg=Grey guifg=DarkBlue
+hi DiffAdd guibg=LightBlue
+hi DiffChange guibg=LightMagenta
+hi DiffDelete gui=bold guifg=Blue guibg=LightCyan
+
+" Colors for syntax highlighting
+hi Comment guifg=#AC2020 guibg=White
+hi Constant guifg=#C28F8F guibg=White
+hi PreProc guifg=#D569D5 guibg=White
+hi Statement gui=NONE guifg=#9C20EE guibg=White
+hi Type guifg=#9C20EE guibg=White
+hi Special guifg=SlateBlue guibg=White
+hi Ignore guifg=White
+
+" Some specials (override hilinks)
+
+
+" vim: sw=2
diff --git a/.vim/colors/fine_blue.vim b/.vim/colors/fine_blue.vim
new file mode 100644
index 0000000..89c280c
--- /dev/null
+++ b/.vim/colors/fine_blue.vim
@@ -0,0 +1,71 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/30 Wed 00:12.
+" version: 1.7
+" This color scheme uses a light background.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "fine_blue"
+
+hi Normal guifg=#404048 guibg=#f8f8f8
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#404054 guibg=#40ffff
+hi Search gui=NONE guifg=#404054 guibg=#ffffa0
+
+" Messages
+hi ErrorMsg gui=NONE guifg=#ff0070 guibg=#ffe0f4
+hi WarningMsg gui=NONE guifg=#ff0070 guibg=#ffe0f4
+hi ModeMsg gui=NONE guifg=#0070ff guibg=NONE
+hi MoreMsg gui=NONE guifg=#a800ff guibg=NONE
+hi Question gui=NONE guifg=#008050 guibg=NONE
+
+" Split area
+hi StatusLine gui=BOLD guifg=#f8f8f8 guibg=#404054
+hi StatusLineNC gui=NONE guifg=#b8b8c0 guibg=#404054
+hi VertSplit gui=NONE guifg=#f8f8f8 guibg=#404054
+hi WildMenu gui=BOLD guifg=#f8f8f8 guibg=#00aacc
+
+" Diff
+hi DiffText gui=NONE guifg=#4040ff guibg=#c0c0ff
+hi DiffChange gui=NONE guifg=#5050ff guibg=#e0e0ff
+hi DiffDelete gui=NONE guifg=#4040ff guibg=#c8f2ea
+hi DiffAdd gui=NONE guifg=#4040ff guibg=#c8f2ea
+
+" Cursor
+hi Cursor gui=NONE guifg=#0000ff guibg=#00e0ff
+hi lCursor gui=NONE guifg=#f8f8f8 guibg=#8000ff
+hi CursorIM gui=NONE guifg=#f8f8f8 guibg=#8000ff
+
+" Fold
+hi Folded gui=NONE guifg=#7820ff guibg=#e0d8ff
+hi FoldColumn gui=NONE guifg=#aa60ff guibg=#f0f0f4
+" hi Folded gui=NONE guifg=#58587c guibg=#e0e0e8
+" hi FoldColumn gui=NONE guifg=#9090b0 guibg=#f0f0f4
+
+" Other
+hi Directory gui=NONE guifg=#0070b8 guibg=NONE
+hi LineNr gui=NONE guifg=#a0a0b0 guibg=NONE
+hi NonText gui=BOLD guifg=#4000ff guibg=#ececf0
+hi SpecialKey gui=NONE guifg=#d87000 guibg=NONE
+hi Title gui=NONE guifg=#004060 guibg=#c8f0f8
+hi Visual gui=NONE guifg=#404060 guibg=#dddde8
+" hi VisualNOS gui=NONE guifg=#404060 guibg=#dddde8
+
+" Syntax group
+hi Comment gui=NONE guifg=#ff00c0 guibg=NONE
+hi Constant gui=NONE guifg=#2020ff guibg=#e8e8ff
+hi Error gui=BOLD guifg=#ffffff guibg=#ff4080
+hi Identifier gui=NONE guifg=#c800ff guibg=NONE
+hi Ignore gui=NONE guifg=#f8f8f8 guibg=NONE
+hi PreProc gui=NONE guifg=#0070e6 guibg=NONE
+hi Special gui=NONE guifg=#005858 guibg=#ccf7ee
+hi Statement gui=NONE guifg=#008858 guibg=NONE
+hi Todo gui=NONE guifg=#ff0070 guibg=#ffe0f4
+hi Type gui=NONE guifg=#7040ff guibg=NONE
+hi Underlined gui=UNDERLINE guifg=#0000ff guibg=NONE
diff --git a/.vim/colors/fnaqevan.vim b/.vim/colors/fnaqevan.vim
new file mode 100644
index 0000000..d936cee
--- /dev/null
+++ b/.vim/colors/fnaqevan.vim
@@ -0,0 +1,67 @@
+" Vim color file
+" Maintainer: Rafal Sulejman <rms@poczta.onet.pl>
+" Last Change: 2002.06.18
+"
+" This color scheme uses a black (dark) background.
+
+" First remove all existing highlighting.
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "fnaqevan"
+
+hi Normal guibg=#000000 guifg=#C0C0C0 gui=NONE
+
+" Main colors
+hi Constant guibg=#000000 guifg=#00B8E0 gui=NONE
+hi Identifier guibg=#000000 guifg=#FFA850 gui=NONE
+hi Special guibg=#000000 guifg=#B899C8 gui=NONE
+hi Statement guibg=#000000 guifg=#EEE840 gui=NONE
+hi Preproc guibg=#000000 guifg=#00B098 gui=NONE
+hi Type guibg=#000000 guifg=#40D040 gui=NONE
+
+" Secondary colors
+hi Comment guibg=#000000 guifg=#006699 gui=NONE
+hi Visual guibg=#005900 guifg=#40C940 gui=NONE
+hi VisualNOS guibg=#005900 guifg=#40C940 gui=NONE
+hi Search guibg=#707000 guifg=#FFFF00 gui=NONE
+hi IncSearch guibg=#D05000 guifg=#FFE000 gui=NONE
+
+" Special colors
+hi WarningMsg guibg=#707000 guifg=#FFFF00 gui=NONE
+hi MoreMsg guibg=#000070 guifg=#00B8E0 gui=NONE
+hi ErrorMsg guibg=#CC0000 guifg=#FFEE00 gui=NONE
+hi ModeMsg guibg=#000000 guifg=#E8E8E8 gui=NONE
+hi WildMenu guibg=#5f5f5f guifg=#FFEE60 gui=NONE
+hi StatusLine guibg=#1f1f1f guifg=#F0F0F0 gui=NONE
+hi StatusLineNC guibg=#0f0f0f guifg=#eaea3a gui=NONE
+hi VertSplit guibg=#1f1f1f guifg=#F0F0F0 gui=NONE
+hi Error guibg=#EE0000 guifg=#FFDD60 gui=NONE
+hi Todo guibg=#EEE000 guifg=#000000 gui=NONE
+hi Title guibg=#000000 guifg=#ffffff gui=NONE
+hi Question guibg=#005900 guifg=#40E840 gui=NONE
+hi LineNr guibg=#000000 guifg=#F0B0E0 gui=NONE
+hi Directory guibg=#000000 guifg=#D0D0D0 gui=NONE
+hi NonText guibg=#000000 guifg=#FFDDAA gui=NONE
+hi SpecialKey guibg=#000000 guifg=#FFFFFF gui=NONE
+
+" Diff colors
+hi DiffAdd guibg=#505050 guifg=#D0D0D0 gui=NONE
+hi DiffChange guibg=#505050 guifg=#D0D0D0 gui=NONE
+hi DiffDelete guibg=#505050 guifg=#D0D0D0 gui=NONE
+hi DiffText guibg=#707070 guifg=#F0F0F0 gui=NONE
+
+" Folding colors
+hi Folded guibg=#703070 guifg=#DDB8DD gui=NONE
+hi FoldColumn guibg=#C4153B guifg=#F0F0F0 gui=NONE
+
+" Cursor colors
+hi Cursor guibg=#FFFFFF guifg=#000000 gui=NONE
+hi icursor guibg=#FFEE00 guifg=#000000 gui=NONE
+hi ncursor guibg=#FFFFFF guifg=#000000 gui=NONE
+hi rcursor guibg=#00CCFF guifg=#000000 gui=NONE
+hi lcursor guibg=#40D040 guifg=#000000 gui=NONE
+
diff --git a/.vim/colors/fog.vim b/.vim/colors/fog.vim
new file mode 100644
index 0000000..ab263ab
--- /dev/null
+++ b/.vim/colors/fog.vim
@@ -0,0 +1,170 @@
+" Vim color file
+" vim: tw=0 ts=4 sw=4
+" Maintainer: Thomas R. Kimpton <tomk@emcity.net>
+" Last Change: 2001 Nov 8
+" This color scheme is meant for the person that spends hours
+" and hours and hours and... in vim and wants some contrast to
+" help pick things out in the files they edit, but doesn't want
+" **C**O**N**T**R**A**S**T**!
+
+set background=light
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "fog"
+
+hi Normal ctermbg=White ctermfg=Black
+" 660066 = darkish purple
+hi Normal guifg=#660066 guibg=grey80
+
+hi NonText term=bold
+hi NonText ctermfg=LightBlue
+hi NonText gui=bold guifg=LightBlue guibg=grey80
+
+hi Comment ctermfg=DarkGrey ctermbg=White
+" 444499 = darkish blue grey
+hi Comment guifg=#444499
+
+hi Constant term=underline
+hi Constant ctermfg=Magenta
+hi Constant guifg=#7070a0
+
+hi Statement term=bold
+hi Statement cterm=bold ctermfg=DarkGreen ctermbg=White
+hi Statement guifg=DarkGreen gui=bold
+
+hi identifier ctermfg=DarkGreen
+hi identifier guifg=DarkGreen
+
+hi preproc ctermfg=DarkGreen
+hi preproc guifg=#408040
+
+hi type ctermfg=DarkBlue
+hi type guifg=DarkBlue
+
+hi label ctermfg=yellow
+hi label guifg=#c06000
+
+hi operator ctermfg=darkYellow
+hi operator guifg=DarkGreen gui=bold
+
+hi StorageClass ctermfg=DarkRed ctermbg=White
+hi StorageClass guifg=#a02060 gui=bold
+
+hi Number ctermfg=Blue ctermbg=White
+hi Number guifg=Blue
+
+hi Special term=bold
+hi Special ctermfg=LightRed
+hi Special guifg=#aa8822
+
+hi Cursor ctermbg=DarkMagenta
+hi Cursor guibg=#880088 guifg=LightGrey
+
+hi lCursor guibg=Cyan guifg=Black
+
+hi ErrorMsg term=standout
+hi ErrorMsg ctermbg=DarkRed ctermfg=White
+hi ErrorMsg guibg=DarkRed guifg=White
+
+hi DiffText term=reverse
+hi DiffText cterm=bold ctermbg=DarkRed
+hi DiffText gui=bold guibg=DarkRed
+
+hi Directory term=bold
+hi Directory ctermfg=LightRed
+hi Directory guifg=Red gui=underline
+
+hi LineNr term=underline
+hi LineNr ctermfg=Yellow
+hi LineNr guifg=#ccaa22
+
+hi MoreMsg term=bold
+hi MoreMsg ctermfg=LightGreen
+hi MoreMsg gui=bold guifg=SeaGreen
+
+hi Question term=standout
+hi Question ctermfg=LightGreen
+hi Question gui=bold guifg=DarkGreen
+
+hi Search term=reverse
+hi Search ctermbg=DarkYellow ctermfg=Black
+hi Search guibg=#887722 guifg=Black
+
+hi SpecialKey term=bold
+hi SpecialKey ctermfg=LightBlue
+hi SpecialKey guifg=Blue
+
+hi SpecialChar ctermfg=DarkGrey ctermbg=White
+hi SpecialChar guifg=DarkGrey gui=bold
+
+hi Title term=bold
+hi Title ctermfg=LightMagenta
+hi Title gui=underline guifg=DarkMagenta
+
+hi WarningMsg term=standout
+hi WarningMsg ctermfg=LightRed
+hi WarningMsg guifg=DarkBlue guibg=#9999cc
+
+hi WildMenu term=standout
+hi WildMenu ctermbg=Yellow ctermfg=Black
+hi WildMenu guibg=Yellow guifg=Black gui=underline
+
+hi Folded term=standout
+hi Folded ctermbg=LightGrey ctermfg=DarkBlue
+hi Folded guibg=LightGrey guifg=DarkBlue
+
+hi FoldColumn term=standout
+hi FoldColumn ctermbg=LightGrey ctermfg=DarkBlue
+hi FoldColumn guibg=Grey guifg=DarkBlue
+
+hi DiffAdd term=bold
+hi DiffAdd ctermbg=DarkBlue
+hi DiffAdd guibg=DarkBlue
+
+hi DiffChange term=bold
+hi DiffChange ctermbg=DarkMagenta
+hi DiffChange guibg=DarkMagenta
+
+hi DiffDelete term=bold
+hi DiffDelete ctermfg=Blue ctermbg=DarkCyan
+hi DiffDelete gui=bold guifg=Blue guibg=DarkCyan
+
+hi Ignore ctermfg=LightGrey
+hi Ignore guifg=grey90
+
+hi IncSearch term=reverse
+hi IncSearch cterm=reverse
+hi IncSearch gui=reverse
+
+hi ModeMsg term=bold
+hi ModeMsg cterm=bold
+hi ModeMsg gui=bold
+
+hi StatusLine term=reverse,bold
+hi StatusLine cterm=reverse,bold
+hi StatusLine gui=reverse,bold
+
+hi StatusLineNC term=reverse
+hi StatusLineNC cterm=reverse
+hi StatusLineNC gui=reverse
+
+hi VertSplit term=reverse
+hi VertSplit cterm=reverse
+hi VertSplit gui=reverse
+
+hi Visual term=reverse
+hi Visual cterm=reverse
+hi Visual gui=reverse guifg=DarkGrey guibg=fg
+
+hi VisualNOS term=underline,bold
+hi VisualNOS cterm=underline,bold
+hi VisualNOS gui=underline,bold
+
+hi Todo gui=reverse
+
+" vim: sw=2
diff --git a/.vim/colors/fruit.vim b/.vim/colors/fruit.vim
new file mode 100644
index 0000000..624b90f
--- /dev/null
+++ b/.vim/colors/fruit.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/08/28 Wed 00:28.
+" version: 1.3
+" This color scheme uses a light background.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "fruit"
+
+hi Normal guifg=#404040 guibg=#f8f8f8
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#404040 guibg=#40ffff
+hi Search gui=NONE guifg=#404040 guibg=#ffff60
+
+" Messages
+hi ErrorMsg gui=NONE guifg=#ff0000 guibg=#ffe4e4
+hi WarningMsg gui=NONE guifg=#ff0000 guibg=#ffe4e4
+hi ModeMsg gui=NONE guifg=#ff4080 guibg=NONE
+hi MoreMsg gui=NONE guifg=#009070 guibg=NONE
+hi Question gui=NONE guifg=#f030d0 guibg=NONE
+
+" Split area
+hi StatusLine gui=BOLD guifg=#f8f8f8 guibg=#404040
+hi StatusLineNC gui=NONE guifg=#a4a4a4 guibg=#404040
+hi VertSplit gui=NONE guifg=#f8f8f8 guibg=#404040
+hi WildMenu gui=BOLD guifg=#f8f8f8 guibg=#ff4080
+
+" Diff
+hi DiffText gui=NONE guifg=#e04040 guibg=#ffd8d8
+hi DiffChange gui=NONE guifg=#408040 guibg=#d0f0d0
+hi DiffDelete gui=NONE guifg=#4848ff guibg=#ffd0ff
+hi DiffAdd gui=NONE guifg=#4848ff guibg=#ffd0ff
+
+" Cursor
+hi Cursor gui=NONE guifg=#0000ff guibg=#00e0ff
+hi lCursor gui=NONE guifg=#f8f8f8 guibg=#8000ff
+hi CursorIM gui=NONE guifg=#f8f8f8 guibg=#8000ff
+
+" Fold
+hi Folded gui=NONE guifg=#20605c guibg=#b8e8dc
+hi FoldColumn gui=NONE guifg=#40a098 guibg=#f0f0f0
+
+" Other
+hi Directory gui=NONE guifg=#0070b8 guibg=NONE
+hi LineNr gui=NONE guifg=#acacac guibg=NONE
+hi NonText gui=BOLD guifg=#00a0c0 guibg=#ececec
+hi SpecialKey gui=NONE guifg=#4040ff guibg=NONE
+hi Title gui=NONE guifg=#0050a0 guibg=#c0e8ff
+hi Visual gui=NONE guifg=#484848 guibg=#e0e0e0
+" hi VisualNOS gui=NONE guifg=#484848 guibg=#e0e0e0
+
+" Syntax group
+hi Comment gui=NONE guifg=#ff4080 guibg=NONE
+hi Constant gui=NONE guifg=#8016ff guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#ff4080
+hi Identifier gui=NONE guifg=#008888 guibg=NONE
+hi Ignore gui=NONE guifg=#f8f8f8 guibg=NONE
+hi PreProc gui=NONE guifg=#e06800 guibg=NONE
+hi Special gui=NONE guifg=#4a9400 guibg=NONE
+hi Statement gui=NONE guifg=#f030d0 guibg=NONE
+hi Todo gui=UNDERLINE guifg=#ff0070 guibg=#ffe0f4
+hi Type gui=NONE guifg=#0070e6 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=fg guibg=NONE
diff --git a/.vim/colors/gobo.vim b/.vim/colors/gobo.vim
new file mode 100644
index 0000000..13a8cf5
--- /dev/null
+++ b/.vim/colors/gobo.vim
@@ -0,0 +1,27 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+"
+" Created using ColorSchemeCreator
+" by Otávio Corrêa Cordeiro (cordeiro@exatas.unisinos.br) (2004 July)
+"
+" Maintainer: Otávio Corrêa Cordeiro
+" Last Change: 2004 July
+
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "ColorSchemeCreator"
+hi Normal guifg=#111111 guibg=#FFFFFF
+hi comment guifg=#33CC99 gui=italic
+hi constant guifg=#CC0099 gui=bold
+hi statement guifg=#3399FF gui=bold
+hi preproc guifg=#0066FF
+hi type guifg=#6600CC gui=bold
+hi special guifg=#6600CC
+hi operator guifg=#CC0099
+hi clear Visual
+hi Visual term=reverse cterm=reverse gui=reverse
diff --git a/.vim/colors/golden.vim b/.vim/colors/golden.vim
new file mode 100644
index 0000000..8cceaf7
--- /dev/null
+++ b/.vim/colors/golden.vim
@@ -0,0 +1,70 @@
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+"
+" Creator: Ryan Phillips <ryan@trolocsis.com>
+" Credits: This color scheme originated from the idea of
+" Jeffrey Bakker, the creator of webcpp (http://webcpp.sourceforge.net/).
+" URL: http://www.trolocsis.com/vim/golden.vim
+"
+
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "golden"
+hi Normal ctermfg=yellow guifg=#ddbb00 guibg=black
+hi Scrollbar ctermfg=Yellow guifg=#ddbb00 guibg=black
+hi Menu ctermfg=darkyellow guifg=#ffddaa guibg=black
+hi SpecialKey ctermfg=yellow term=bold cterm=bold guifg=#ffddaa
+hi NonText ctermfg=LightBlue term=bold cterm=bold gui=bold guifg=#DBCA98
+hi Directory ctermfg=DarkYellow term=bold cterm=bold guifg=#ffddaa
+hi ErrorMsg term=standout cterm=bold ctermfg=White ctermbg=Red guifg=White guibg=Red
+hi Search term=reverse ctermfg=white ctermbg=red guifg=white guibg=Red
+hi MoreMsg term=bold cterm=bold ctermfg=Yellow gui=bold guifg=#ddbb00
+hi ModeMsg term=bold ctermfg=DarkYellow cterm=bold gui=bold guifg=Black guibg=#ddbb00
+hi LineNr term=underline ctermfg=Brown cterm=bold guifg=#978345
+hi Question term=standout cterm=bold ctermfg=Brown gui=bold guifg=#ffddaa
+hi StatusLine term=bold,reverse cterm=bold ctermfg=Black ctermbg=DarkGrey gui=bold guifg=#978345 guibg=#2E2E2E
+hi StatusLineNC term=reverse ctermfg=white ctermbg=black guifg=grey guibg=#3E3E3E
+hi Title term=bold cterm=bold ctermfg=brown gui=bold guifg=#DBCA98
+hi Visual term=reverse cterm=reverse gui=reverse
+hi WarningMsg term=standout cterm=bold ctermfg=darkblue guifg=Red
+hi Cursor guifg=bg guibg=#FF5E06 ctermbg=Brown
+hi Comment term=bold cterm=bold ctermfg=brown guifg=#978345
+hi Constant term=underline cterm=bold ctermfg=red guifg=Red
+hi Special term=bold cterm=bold ctermfg=red guifg=Orange
+hi Identifier term=underline ctermfg=lightgray guifg=#DBCA98
+hi Statement term=bold cterm=bold ctermfg=lightgreen gui=bold guifg=#ffff60
+hi PreProc term=underline ctermfg=brown guifg=#ffddaa
+hi Type term=underline cterm=bold ctermfg=lightgreen gui=bold guifg=#FFE13F
+hi Error term=reverse ctermfg=darkcyan ctermbg=black guifg=Red guibg=Black
+hi Todo term=standout ctermfg=black ctermbg=yellow guifg=#FFE13F guibg=#2E2E2E
+hi VertSplit guifg=#2E2E2E guibg=#978345 ctermfg=black ctermbg=darkgrey
+hi Folded guifg=orange guibg=#2E2E2E ctermfg=yellow
+
+hi link IncSearch Visual
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
diff --git a/.vim/colors/gor.vim b/.vim/colors/gor.vim
new file mode 100644
index 0000000..b0584a1
--- /dev/null
+++ b/.vim/colors/gor.vim
@@ -0,0 +1,47 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+" Maintainer: Jokes
+" Last Change:
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "gor"
+hi Normal guifg=white guibg=#005856
+hi NonText guifg=white guibg=#005856
+hi comment guifg=darkgrey
+hi constant guifg=orange
+hi identifier guifg=orange gui=NONE
+hi statement guifg=cyan gui=NONE
+"hi preproc guifg=#6063CD
+hi preproc guifg=cyan
+hi type guifg=green gui=NONE
+hi special guifg=yellow
+hi ErrorMsg guifg=Black guibg=Red
+hi WarningMsg guifg=Black guibg=Green
+hi Error guibg=Red
+hi Todo guifg=Black guibg=orange
+hi Cursor guibg=#ffffff guifg=#004f50
+"hi Cursor guibg=#603070 guifg=#0000ff
+hi Folded guifg=#999999 guibg=#006336
+hi Search guibg=orange
+hi IncSearch gui=NONE guibg=orange
+hi LineNr guifg=grey
+hi title guifg=grey
+"hi StatusLineNC gui=NONE guifg=lightblue guibg=darkblue
+hi StatusLineNC gui=NONE guibg=red
+hi StatusLine guifg=black guibg=darkgreen
+hi label guifg=gold2
+hi operator guifg=orange
+hi clear Visual
+hi Visual guibg=orange guifg=#00932D
+hi DiffChange guibg=darkgreen
+hi DiffText guibg=olivedrab
+hi DiffAdd guibg=slateblue
+hi DiffDelete guibg=coral
+hi Folded guibg=gray30
+hi FoldColumn guibg=gray30 guifg=white
+hi cIf0 guifg=gray
diff --git a/.vim/colors/gothic.vim b/.vim/colors/gothic.vim
new file mode 100644
index 0000000..a637914
--- /dev/null
+++ b/.vim/colors/gothic.vim
@@ -0,0 +1,42 @@
+" Vim color file
+" Maintainer: Stefano deFlorian - \Goth\ <stefano@junglebit.net>
+" Last Change: 2003 Dec 9
+" Light - Dark :-)
+" optimized for TFT panels
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+"colorscheme default
+let g:colors_name = "gothic"
+
+" hardcoded colors :
+
+" GUI
+highlight Normal guifg=#efefef guibg=#000000
+highlight Cursor guifg=#000000 guibg=#efefef gui=NONE
+highlight Search guifg=#ffff60 guibg=#0000ff gui=NONE
+highlight Visual guifg=Grey25 gui=NONE
+highlight Special guifg=Orange
+highlight Comment guifg=#3030ff
+highlight StatusLine guifg=blue guibg=white
+highlight Statement guifg=#ffff60 gui=NONE
+highlight PreProc guifg=#a0e0a0
+highlight Identifier guifg=#00ffff
+highlight Constant guifg=#a0a0a0
+highlight Type guifg=#a0a0ff gui=NONE
+
+" Console
+highlight Normal ctermfg=LightGrey ctermbg=Black
+highlight Cursor ctermfg=Black ctermbg=LightGrey cterm=NONE
+highlight Search ctermfg=Yellow ctermbg=Blue cterm=NONE
+highlight Visual cterm=reverse
+highlight Special ctermfg=Brown
+highlight Comment ctermfg=Blue
+highlight StatusLine ctermfg=blue ctermbg=white
+highlight Identifier ctermfg=Cyan
+highlight Statement ctermfg=Yellow cterm=NONE
+highlight Constant ctermfg=Grey cterm=NONE
+highlight Type ctermfg=LightBlue cterm=NONE
diff --git a/.vim/colors/greyblue.vim b/.vim/colors/greyblue.vim
new file mode 100644
index 0000000..1b3c233
--- /dev/null
+++ b/.vim/colors/greyblue.vim
@@ -0,0 +1,75 @@
+" Vim color file
+"
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "greyblue"
+
+hi Normal ctermfg=NONE ctermbg=NONE gui=NONE guifg=#b7af9f guibg=#090909
+
+" Search
+hi IncSearch ctermfg=NONE ctermbg=NONE gui=NONE guifg=#7800ff guibg=#e0d8ff
+hi Search ctermfg=NONE ctermbg=NONE gui=NONE guifg=#7800ff guibg=#e0d8ff
+
+" Messages
+hi ErrorMsg ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=NONE
+hi WarningMsg ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=NONE
+hi ModeMsg ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=NONE
+hi MoreMsg ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=NONE
+hi Question ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=NONE
+
+" Split area
+hi StatusLine ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#070707 guibg=#cfcfbf
+hi StatusLineNC ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#5f5f4f guibg=#cfcfbf
+hi VertSplit ctermfg=NONE ctermbg=NONE gui=NONE guifg=#070707 guibg=#cfcfbf
+hi WildMenu ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#070707 guibg=#ff5533
+
+" Diff
+hi DiffText ctermfg=NONE ctermbg=NONE gui=NONE guifg=#07cfef guibg=#00151f
+hi DiffChange ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ff97ff guibg=#2f002f
+hi DiffDelete ctermfg=NONE ctermbg=NONE gui=NONE guifg=#dfdf00 guibg=#370d15
+hi DiffAdd ctermfg=NONE ctermbg=NONE gui=NONE guifg=#dfdf00 guibg=#370d15
+
+" Cursor
+hi Cursor ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffff00 guibg=#7fff00
+hi lCursor ctermfg=NONE ctermbg=NONE gui=NONE guifg=#070707 guibg=#7fff00
+hi CursorIM ctermfg=NONE ctermbg=NONE gui=NONE guifg=#070707 guibg=#7fff00
+
+" Fold
+hi Folded ctermfg=NONE ctermbg=NONE gui=NONE guifg=#87ff00 guibg=#1f2700
+hi FoldColumn ctermfg=NONE ctermbg=NONE gui=NONE guifg=#559f00 guibg=#0f0f0b
+
+" Other
+hi Directory ctermfg=NONE ctermbg=NONE gui=NONE guifg=#aaaaba guibg=NONE
+hi LineNr ctermfg=NONE ctermbg=NONE gui=NONE guifg=#7f7f5f guibg=NONE
+hi NonText ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#211d1a guibg=#211d1a
+hi SpecialKey ctermfg=NONE ctermbg=NONE gui=NONE guifg=#378fff guibg=NONE
+hi Title ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffbf9f guibg=#370f07
+hi Visual ctermfg=NONE ctermbg=NONE gui=reverse guifg=#a5a5a5 guibg=#353535
+
+" Syntax group
+hi Comment ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#555565 guibg=NONE
+hi Constant ctermfg=NONE ctermbg=NONE gui=NONE guifg=#d1bfb1 guibg=#151515
+hi Error ctermfg=NONE ctermbg=NONE gui=NONE guifg=#00ffff guibg=NONE
+hi Identifier ctermfg=NONE ctermbg=NONE gui=NONE guifg=#aaaaba guibg=NONE
+hi Ignore ctermfg=NONE ctermbg=NONE gui=NONE guifg=NONE guibg=NONE
+hi PreProc ctermfg=NONE ctermbg=NONE gui=NONE guifg=NONE guibg=NONE
+hi Special ctermfg=NONE ctermbg=NONE gui=NONE guifg=#aa1565 guibg=NONE
+hi Statement ctermfg=NONE ctermbg=NONE gui=bold guifg=#d1bfb1 guibg=NONE
+hi Todo ctermfg=NONE ctermbg=NONE gui=NONE guifg=NONE guibg=NONE
+hi Type ctermfg=NONE ctermbg=NONE gui=BOLD guifg=#d1bfb1 guibg=NONE
+hi Underlined ctermfg=NONE ctermbg=NONE gui=UNDERLINE guifg=NONE guibg=NONE
+
+" HTML
+hi htmlLink gui=UNDERLINE guifg=#ffff00 guibg=NONE
+hi htmlBold gui=BOLD
+hi htmlBoldItalic gui=BOLD,ITALIC
+hi htmlBoldUnderline gui=BOLD,UNDERLINE
+hi htmlBoldUnderlineItalic gui=BOLD,UNDERLINE,ITALIC
+hi htmlItalic gui=ITALIC
+hi htmlUnderline gui=UNDERLINE
+hi htmlUnderlineItalic gui=UNDERLINE,ITALIC
diff --git a/.vim/colors/hhazure.vim b/.vim/colors/hhazure.vim
new file mode 100644
index 0000000..9dfed35
--- /dev/null
+++ b/.vim/colors/hhazure.vim
@@ -0,0 +1,83 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi VertSplit gui=underline guifg=bg guibg=#051525
+hi StatusLine gui=underline guifg=fg guibg=#051525
+hi StatusLineNC gui=underline guifg=#2c3c45 guibg=#051525
+hi LineNr gui=underline guifg=#54657d guibg=#051525
+hi Folded gui=none guifg=#54657d guibg=bg
+hi FoldColumn gui=none guifg=#54657d guibg=bg
+" title
+hi Title gui=underline guifg=fg guibg=#34455d
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#329858
+hi Question gui=underline guifg=bg guibg=#329858
+
+hi Normal gui=none guifg=#7990a4 guibg=#152535
+hi NonText gui=underline guifg=#1d2d30
+hi NonText guibg=#1d2d30
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#99ccb5
+hi Cursor gui=underline guifg=bg guibg=#99ccb5
+hi IncSearch gui=underline guifg=bg guibg=#99ccb5
+hi CursorIM gui=underline guifg=fg guibg=#006188
+hi Search gui=underline guifg=bg guibg=#33669a
+hi Visual gui=underline guifg=bg guibg=#667888
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#8cdd66
+hi WarningMsg gui=underline guifg=bg guibg=#66cc6a
+hi ModeMsg gui=underline guifg=bg guibg=#339599
+
+
+" inner {{{1
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#66cc6a
+hi Error gui=underline guifg=fg guibg=#884422
+hi Special gui=none guifg=#66bbb6 guibg=bg
+hi SpecialKey gui=none guifg=#6695cc guibg=bg
+hi Identifier gui=none guifg=#69be97 guibg=bg
+hi Constant gui=none guifg=#22887b guibg=bg
+hi Statement gui=none guifg=#74aa66 guibg=bg
+hi Comment gui=none guifg=#006188 guibg=bg
+hi Underlined gui=underline guifg=#826699 guibg=bg
+hi Directory gui=none guifg=#447760 guibg=bg
+hi PreProc gui=none guifg=#557767 guibg=bg
+hi Type gui=none guifg=#429999 guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#99ffd0
+hi DiffChange gui=underline guifg=bg guibg=#55aa83
+hi DiffDelete gui=none guifg=bg guibg=#22a5aa
+hi DiffAdd gui=underline guifg=bg guibg=#2ccc22
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#6696aa guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#74aa66
+hi htmlBoldUnderline gui=underline guifg=#74aa66 guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#44ccc0
+hi htmlUnderlineItalic gui=underline guifg=#44ccc0 guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#33aa40
+hi htmlBoldUnderlineItalic gui=underline guifg=#33aa40 guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdblue.vim b/.vim/colors/hhdblue.vim
new file mode 100644
index 0000000..ebea8ba
--- /dev/null
+++ b/.vim/colors/hhdblue.vim
@@ -0,0 +1,233 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:08.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkblue guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkblue ctermbg=black
+hi Folded gui=NONE guifg=blue guibg=black
+hi Folded cterm=NONE ctermfg=blue ctermbg=black
+hi FoldColumn gui=NONE guifg=blue guibg=black
+hi FoldColumn cterm=NONE ctermfg=blue ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=blue
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=blue
+hi LineNr gui=UNDERLINE guifg=black guibg=lightblue
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi VertSplit gui=NONE guifg=darkblue guibg=darkblue
+hi VertSplit cterm=NONE ctermfg=darkblue ctermbg=darkblue
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkblue
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkblue
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=blue
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=blue
+hi Question gui=UNDERLINE guifg=black guibg=blue
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=blue
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdblue", "linenr", "light")
+call s:SetOpt("cterm", "hhdblue", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightblue
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkblue
+else
+ hi LineNr gui=NONE guifg=lightblue guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkblue
+else
+ hi LineNr cterm=NONE ctermfg=lightblue ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdblue", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdblue", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkblue guibg=black
+else
+ hi NonText gui=NONE guifg=darkblue guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkblue ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkblue ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkblue
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdcyan.vim b/.vim/colors/hhdcyan.vim
new file mode 100644
index 0000000..be41f2f
--- /dev/null
+++ b/.vim/colors/hhdcyan.vim
@@ -0,0 +1,233 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:10.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkcyan guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkcyan ctermbg=black
+hi Folded gui=NONE guifg=darkcyan guibg=black
+hi Folded cterm=NONE ctermfg=darkcyan ctermbg=black
+hi FoldColumn gui=NONE guifg=darkcyan guibg=black
+hi FoldColumn cterm=NONE ctermfg=darkcyan ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkcyan
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=darkcyan
+hi LineNr gui=UNDERLINE guifg=black guibg=lightcyan
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightcyan
+hi VertSplit gui=NONE guifg=darkcyan guibg=darkcyan
+hi VertSplit cterm=NONE ctermfg=darkcyan ctermbg=darkcyan
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkcyan
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkcyan
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkcyan
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkcyan
+hi Question gui=UNDERLINE guifg=black guibg=darkcyan
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkcyan
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdcyan", "linenr", "light")
+call s:SetOpt("cterm", "hhdcyan", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightcyan
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkcyan
+else
+ hi LineNr gui=NONE guifg=lightcyan guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightcyan
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkcyan
+else
+ hi LineNr cterm=NONE ctermfg=lightcyan ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdcyan", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdcyan", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkcyan guibg=black
+else
+ hi NonText gui=NONE guifg=darkcyan guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkcyan ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkcyan ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkcyan
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdgray.vim b/.vim/colors/hhdgray.vim
new file mode 100644
index 0000000..39249fc
--- /dev/null
+++ b/.vim/colors/hhdgray.vim
@@ -0,0 +1,233 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:11.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkgray guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkgray ctermbg=black
+hi Folded gui=NONE guifg=darkgray guibg=black
+hi Folded cterm=NONE ctermfg=darkgray ctermbg=black
+hi FoldColumn gui=NONE guifg=darkgray guibg=black
+hi FoldColumn cterm=NONE ctermfg=darkgray ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkgray
+hi StatusLineNC cterm=UNDERLINE ctermfg=black ctermbg=darkgray
+hi LineNr gui=UNDERLINE guifg=black guibg=lightgray
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi VertSplit gui=NONE guifg=darkgray guibg=darkgray
+hi VertSplit cterm=NONE ctermfg=darkgray ctermbg=darkgray
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkgray
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkgray
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkgray
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkgray
+hi Question gui=UNDERLINE guifg=black guibg=darkgray
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkgray
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdgray", "linenr", "light")
+call s:SetOpt("cterm", "hhdgray", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightgray
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkgray
+else
+ hi LineNr gui=NONE guifg=lightgray guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkgray
+else
+ hi LineNr cterm=NONE ctermfg=lightgray ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdgray", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdgray", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkgray guibg=black
+else
+ hi NonText gui=NONE guifg=darkgray guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkgray ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkgray ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkgray
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdgreen.vim b/.vim/colors/hhdgreen.vim
new file mode 100644
index 0000000..f64cfc1
--- /dev/null
+++ b/.vim/colors/hhdgreen.vim
@@ -0,0 +1,233 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:11.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkgreen guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkgreen ctermbg=black
+hi Folded gui=NONE guifg=darkgreen guibg=black
+hi Folded cterm=NONE ctermfg=darkgreen ctermbg=black
+hi FoldColumn gui=NONE guifg=darkgreen guibg=black
+hi FoldColumn cterm=NONE ctermfg=darkgreen ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkgreen
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=darkgreen
+hi LineNr gui=UNDERLINE guifg=black guibg=lightgreen
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi VertSplit gui=NONE guifg=darkgreen guibg=darkgreen
+hi VertSplit cterm=NONE ctermfg=darkgreen ctermbg=darkgreen
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkgreen
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkgreen
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkgreen
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkgreen
+hi Question gui=UNDERLINE guifg=black guibg=darkgreen
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkgreen
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdgreen", "linenr", "light")
+call s:SetOpt("cterm", "hhdgreen", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightgreen
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkgreen
+else
+ hi LineNr gui=NONE guifg=lightgreen guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkgreen
+else
+ hi LineNr cterm=NONE ctermfg=lightgreen ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdgreen", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdgreen", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkgreen guibg=black
+else
+ hi NonText gui=NONE guifg=darkgreen guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkgreen ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkgreen ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkgreen
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdmagenta.vim b/.vim/colors/hhdmagenta.vim
new file mode 100644
index 0000000..ef91091
--- /dev/null
+++ b/.vim/colors/hhdmagenta.vim
@@ -0,0 +1,233 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:12.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkmagenta guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkmagenta ctermbg=black
+hi Folded gui=NONE guifg=darkmagenta guibg=black
+hi Folded cterm=NONE ctermfg=darkmagenta ctermbg=black
+hi FoldColumn gui=NONE guifg=darkmagenta guibg=black
+hi FoldColumn cterm=NONE ctermfg=darkmagenta ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkmagenta
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=darkmagenta
+hi LineNr gui=UNDERLINE guifg=black guibg=lightmagenta
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightmagenta
+hi VertSplit gui=NONE guifg=darkmagenta guibg=darkmagenta
+hi VertSplit cterm=NONE ctermfg=darkmagenta ctermbg=darkmagenta
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkmagenta
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkmagenta
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkmagenta
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkmagenta
+hi Question gui=UNDERLINE guifg=black guibg=darkmagenta
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkmagenta
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdmagenta", "linenr", "light")
+call s:SetOpt("cterm", "hhdmagenta", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightmagenta
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkmagenta
+else
+ hi LineNr gui=NONE guifg=lightmagenta guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightmagenta
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkmagenta
+else
+ hi LineNr cterm=NONE ctermfg=lightmagenta ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdmagenta", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdmagenta", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkmagenta guibg=black
+else
+ hi NonText gui=NONE guifg=darkmagenta guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkmagenta ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkmagenta ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkmagenta
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdred.vim b/.vim/colors/hhdred.vim
new file mode 100644
index 0000000..a8f41a3
--- /dev/null
+++ b/.vim/colors/hhdred.vim
@@ -0,0 +1,234 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:14.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkred guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkred ctermbg=black
+hi Folded gui=NONE guifg=brown guibg=black
+hi Folded cterm=NONE ctermfg=brown ctermbg=black
+hi FoldColumn gui=NONE guifg=brown guibg=black
+hi FoldColumn cterm=NONE ctermfg=brown ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkred
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=darkred
+hi LineNr gui=UNDERLINE guifg=black guibg=lightred
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi VertSplit gui=NONE guifg=darkred guibg=darkred
+hi VertSplit cterm=NONE ctermfg=darkred ctermbg=darkred
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkred
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkred
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkred
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkred
+hi Question gui=UNDERLINE guifg=black guibg=darkred
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkred
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdred", "linenr", "light")
+call s:SetOpt("cterm", "hhdred", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightred
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkred
+else
+ hi LineNr gui=NONE guifg=lightred guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightred
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkred
+else
+ hi LineNr cterm=NONE ctermfg=lightred ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdred", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdred", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkred guibg=black
+else
+ hi NonText gui=NONE guifg=darkred guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkred ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkred ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 brown
+" 4 cyan
+" 5 darkred
+" 6 gray
+" 7 green
+" 8 lightblue
+" 9 lightcyan
+" 10 lightgray
+" 11 lightgreen
+" 12 lightmagenta
+" 13 lightred
+" 14 lightyellow
+" 15 red
+" 16 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhdyellow.vim b/.vim/colors/hhdyellow.vim
new file mode 100644
index 0000000..d8d1b33
--- /dev/null
+++ b/.vim/colors/hhdyellow.vim
@@ -0,0 +1,235 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/08 (Sat) 15:09:19.
+" Version: 1.3
+" This color scheme uses a dark background.
+
+" Options
+" format:
+" hhcs_<gui|cterm|both>_<theme|all>_<target>="value"
+" target:
+" linenr
+" "light" : underline, fg=black, bg=light<theme>
+" "dark" : underline, fg=black, bg=dark<theme>
+" "normal" : none, fg=light<theme>, bg=black
+" nontext
+" "underlined" : underline, fg=dark<theme>, bg=black
+" "normal" : none, fg=dark<theme>, bg=black
+"
+" This is original settings.
+" :let hhcs_both_all_linenr ="light"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" This is prototype settings.
+" :let hhcs_both_all_linenr ="dark"
+" :let hhcs_both_all_nontext ="underlined"
+"
+" If you don't want to eccentric feature, try this.
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+"
+" Normal, except hhdgray(gui), hhdgreen(cterm).
+" :let hhcs_both_all_linenr ="normal"
+" :let hhcs_both_all_nontext ="normal"
+" :let hhcs_gui_hhdgray_linenr ="light"
+" :let hhcs_gui_hhdgray_nontext ="underlined"
+" :let hhcs_cterm_hhdgreen_linenr ="dark"
+" :let hhcs_cterm_hhdgreen_nontext ="underlined"
+"
+" For poor cterm
+" :let hhcs_cterm_all_linenr ="normal"
+
+" Happy Hacking color scheme ((DARK)) {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi NonText gui=UNDERLINE guifg=darkyellow guibg=black
+hi NonText cterm=UNDERLINE ctermfg=darkyellow ctermbg=black
+hi Folded gui=NONE guifg=darkyellow guibg=black
+hi Folded cterm=NONE ctermfg=darkyellow ctermbg=black
+hi FoldColumn gui=NONE guifg=darkyellow guibg=black
+hi FoldColumn cterm=NONE ctermfg=darkyellow ctermbg=black
+hi StatusLineNC gui=UNDERLINE guifg=black guibg=darkyellow
+hi StatusLineNC gui=UNDERLINE ctermfg=black ctermbg=darkyellow
+hi LineNr gui=NONE guifg=lightyellow guibg=black
+hi LineNr cterm=NONE ctermfg=lightyellow ctermbg=black
+hi LineNr gui=UNDERLINE guifg=black guibg=lightyellow
+hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightyellow
+hi VertSplit gui=NONE guifg=darkyellow guibg=darkyellow
+hi VertSplit cterm=NONE ctermfg=darkyellow ctermbg=darkyellow
+" title
+hi Title gui=UNDERLINE guifg=lightgray guibg=darkyellow
+hi Title cterm=UNDERLINE ctermfg=lightgray ctermbg=darkyellow
+" message
+hi MoreMsg gui=UNDERLINE guifg=black guibg=darkyellow
+hi MoreMsg cterm=UNDERLINE ctermfg=black ctermbg=darkyellow
+hi Question gui=UNDERLINE guifg=black guibg=darkyellow
+hi Question cterm=UNDERLINE ctermfg=black ctermbg=darkyellow
+
+
+" cursor {{{1
+hi StatusLine gui=UNDERLINE guifg=black guibg=gray
+hi StatusLine cterm=UNDERLINE ctermfg=black ctermbg=gray
+hi WildMenu gui=UNDERLINE guifg=black guibg=green
+hi WildMenu cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Cursor gui=UNDERLINE guifg=black guibg=green
+hi Cursor cterm=UNDERLINE ctermfg=black ctermbg=green
+hi IncSearch gui=UNDERLINE guifg=black guibg=green
+hi IncSearch cterm=UNDERLINE ctermfg=black ctermbg=green
+hi CursorIM gui=UNDERLINE guifg=black guibg=green
+hi CursorIM cterm=UNDERLINE ctermfg=black ctermbg=green
+hi Search gui=UNDERLINE guifg=black guibg=yellow
+hi Search cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi Visual gui=UNDERLINE guifg=black guibg=gray
+hi Visual cterm=UNDERLINE ctermfg=black ctermbg=gray
+
+
+" message {{{1
+hi ErrorMsg gui=UNDERLINE guifg=black guibg=red
+hi ErrorMsg cterm=UNDERLINE ctermfg=black ctermbg=red
+hi WarningMsg gui=UNDERLINE guifg=black guibg=yellow
+hi WarningMsg cterm=UNDERLINE ctermfg=black ctermbg=yellow
+hi ModeMsg gui=UNDERLINE guifg=black guibg=green
+hi ModeMsg cterm=UNDERLINE ctermfg=black ctermbg=green
+
+
+" inner {{{1
+hi Normal gui=NONE guifg=lightgray guibg=black
+hi Normal cterm=NONE ctermfg=lightgray ctermbg=black
+hi Ignore gui=NONE guifg=black guibg=black
+hi Ignore cterm=NONE ctermfg=black ctermbg=black
+hi Todo gui=UNDERLINE guifg=black guibg=red
+hi Todo cterm=UNDERLINE ctermfg=black ctermbg=red
+hi Error gui=UNDERLINE guifg=lightgray guibg=red
+hi Error cterm=UNDERLINE ctermfg=lightgray ctermbg=red
+hi Special gui=NONE guifg=lightcyan guibg=black
+hi Special cterm=NONE ctermfg=lightcyan ctermbg=black
+hi SpecialKey gui=NONE guifg=cyan guibg=black
+hi SpecialKey cterm=NONE ctermfg=cyan ctermbg=black
+hi Identifier gui=NONE guifg=cyan guibg=black
+hi Identifier cterm=NONE ctermfg=cyan ctermbg=black
+hi Constant gui=NONE guifg=lightred guibg=black
+hi Constant cterm=NONE ctermfg=lightred ctermbg=black
+hi Statement gui=NONE guifg=lightyellow guibg=black
+hi Statement cterm=NONE ctermfg=lightyellow ctermbg=black
+hi Comment gui=NONE guifg=lightblue guibg=black
+hi Comment cterm=NONE ctermfg=lightblue ctermbg=black
+hi Underlined gui=UNDERLINE guifg=lightblue guibg=black
+hi Underlined cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi Directory gui=NONE guifg=lightgreen guibg=black
+hi Directory cterm=NONE ctermfg=lightgreen ctermbg=black
+hi PreProc gui=NONE guifg=lightmagenta guibg=black
+hi PreProc cterm=NONE ctermfg=lightmagenta ctermbg=black
+hi Type gui=NONE guifg=lightgreen guibg=black
+hi Type cterm=NONE ctermfg=lightgreen ctermbg=black
+
+
+" option {{{1
+function! s:SetOpt(term, theme, target, default)
+ let s:opt_{a:term}_{a:target}
+ \ = exists("g:hhcs_".a:term."_".a:theme."_".a:target)
+ \ ? g:hhcs_{a:term}_{a:theme}_{a:target}
+ \ : exists("g:hhcs_".a:term."_all_".a:target)
+ \ ? g:hhcs_{a:term}_all_{a:target}
+ \ : exists("g:hhcs_both_all_".a:target)
+ \ ? g:hhcs_both_all_{a:target}
+ \ : a:default
+endfunction
+
+
+" LineNr {{{2
+" light, dark, normal
+call s:SetOpt( "gui", "hhdyellow", "linenr", "light")
+call s:SetOpt("cterm", "hhdyellow", "linenr", "light")
+"echo "s:opt_gui_linenr=".s:opt_gui_linenr
+if s:opt_gui_linenr == "light"
+ hi LineNr gui=UNDERLINE guifg=black guibg=lightyellow
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr gui=UNDERLINE guifg=black guibg=darkyellow
+else
+ hi LineNr gui=NONE guifg=lightyellow guibg=black
+endif
+"echo "s:opt_cterm_linenr=".s:opt_cterm_linenr
+if s:opt_cterm_linenr == "light"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=lightyellow
+elseif s:opt_gui_linenr == "dark"
+ hi LineNr cterm=UNDERLINE ctermfg=black ctermbg=darkyellow
+else
+ hi LineNr cterm=NONE ctermfg=lightyellow ctermbg=black
+endif
+
+
+" NonText {{{2
+" underlined, normal
+call s:SetOpt( "gui", "hhdyellow", "nontext", "underlined")
+call s:SetOpt("cterm", "hhdyellow", "nontext", "underlined")
+"echo "s:opt_gui_nontext=".s:opt_gui_nontext
+if s:opt_gui_nontext == "underlined"
+ hi NonText gui=UNDERLINE guifg=darkyellow guibg=black
+else
+ hi NonText gui=NONE guifg=darkyellow guibg=black
+endif
+"echo "s:opt_cterm_nontext=".s:opt_cterm_nontext
+if s:opt_cterm_nontext == "underlined"
+ hi NonText cterm=UNDERLINE ctermfg=darkyellow ctermbg=black
+else
+ hi NonText cterm=NONE ctermfg=darkyellow ctermbg=black
+endif
+
+
+" 2}}}
+" diff {{{1
+hi DiffText gui=UNDERLINE guifg=black guibg=red
+hi DiffText cterm=UNDERLINE ctermfg=black ctermbg=red
+hi DiffChange gui=UNDERLINE guifg=black guibg=lightgray
+hi DiffChange cterm=UNDERLINE ctermfg=black ctermbg=lightgray
+hi DiffDelete gui=NONE guifg=black guibg=blue
+hi DiffDelete cterm=NONE ctermfg=black ctermbg=blue
+hi DiffAdd gui=UNDERLINE guifg=black guibg=cyan
+hi DiffAdd cterm=UNDERLINE ctermfg=black ctermbg=cyan
+
+
+" html {{{1
+hi htmlLink gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlLink cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+hi htmlBold gui=UNDERLINE guifg=black guibg=lightred
+hi htmlBold cterm=UNDERLINE ctermfg=black ctermbg=lightred
+hi htmlItalic gui=UNDERLINE guifg=black guibg=lightgreen
+hi htmlItalic cterm=UNDERLINE ctermfg=black ctermbg=lightgreen
+hi htmlBoldItalic gui=UNDERLINE guifg=black guibg=lightblue
+hi htmlBoldItalic cterm=UNDERLINE ctermfg=black ctermbg=lightblue
+hi htmlUnderline gui=UNDERLINE guifg=lightgray guibg=black
+hi htmlUnderline cterm=UNDERLINE ctermfg=lightgray ctermbg=black
+hi htmlBoldUnderline gui=UNDERLINE guifg=lightred guibg=black
+hi htmlBoldUnderline cterm=UNDERLINE ctermfg=lightred ctermbg=black
+hi htmlUnderlineItalic gui=UNDERLINE guifg=lightgreen guibg=black
+hi htmlUnderlineItalic cterm=UNDERLINE ctermfg=lightgreen ctermbg=black
+hi htmlBoldUnderlineItalic gui=UNDERLINE guifg=lightblue guibg=black
+hi htmlBoldUnderlineItalic cterm=UNDERLINE ctermfg=lightblue ctermbg=black
+
+
+" colors{{{1
+" 1 black
+" 2 blue
+" 3 cyan
+" 4 darkyellow
+" 5 gray
+" 6 green
+" 7 lightblue
+" 8 lightcyan
+" 9 lightgray
+" 10 lightgreen
+" 11 lightmagenta
+" 12 lightred
+" 13 lightyellow
+" 14 red
+" 15 yellow
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhorange.vim b/.vim/colors/hhorange.vim
new file mode 100644
index 0000000..a1de49d
--- /dev/null
+++ b/.vim/colors/hhorange.vim
@@ -0,0 +1,82 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi LineNr gui=underline guifg=#756664 guibg=#1c1200
+hi Folded gui=none guifg=#756664 guibg=bg
+hi FoldColumn gui=none guifg=#756664 guibg=bg
+" title
+hi Title gui=underline guifg=fg guibg=#553614
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#983235
+hi Question gui=underline guifg=bg guibg=#983235
+
+hi NonText gui=underline guifg=#2c2210 guibg=#2c2210
+hi VertSplit gui=underline guifg=bg guibg=#1c1200
+hi StatusLine gui=underline guifg=fg guibg=#1c1200
+hi StatusLineNC gui=underline guifg=#3c2e2c guibg=#1c1200
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#cc9069
+hi Cursor gui=underline guifg=bg guibg=#cc9069
+hi IncSearch gui=underline guifg=bg guibg=#cc9069
+hi CursorIM gui=underline guifg=fg guibg=#887900
+hi Search gui=underline guifg=bg guibg=#994113
+hi Visual gui=underline guifg=bg guibg=#886b46
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#dd66bb
+hi WarningMsg gui=underline guifg=bg guibg=#cc668b
+hi ModeMsg gui=underline guifg=bg guibg=#997433
+
+
+" inner {{{1
+hi Normal gui=none guifg=#9b8f78 guibg=#332412
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#cc668b
+hi Error gui=underline guifg=fg guibg=#413399
+hi Special gui=none guifg=#bb9466 guibg=bg
+hi SpecialKey gui=none guifg=#becc66 guibg=bg
+hi Identifier gui=none guifg=#be7569 guibg=bg
+hi Constant gui=none guifg=#885222 guibg=bg
+hi Statement gui=none guifg=#aa668f guibg=bg
+hi Comment gui=none guifg=#887900 guibg=bg
+hi Underlined gui=underline guifg=#66996d guibg=bg
+hi Directory gui=none guifg=#774b44 guibg=bg
+hi PreProc gui=none guifg=#775a55 guibg=bg
+hi Type gui=none guifg=#bb7b22 guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#ffa799
+hi DiffChange gui=underline guifg=bg guibg=#aa6155
+hi DiffDelete gui=none guifg=bg guibg=#aa7922
+hi DiffAdd gui=underline guifg=bg guibg=#cc2270
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#aaa366 guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#aa668f
+hi htmlBoldUnderline gui=underline guifg=#aa668f guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#cc8a44
+hi htmlUnderlineItalic gui=underline guifg=#cc8a44 guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#aa3355
+hi htmlBoldUnderlineItalic gui=underline guifg=#aa3355 guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhpink.vim b/.vim/colors/hhpink.vim
new file mode 100644
index 0000000..cffe418
--- /dev/null
+++ b/.vim/colors/hhpink.vim
@@ -0,0 +1,85 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi Folded gui=none guifg=#855060 guibg=bg
+hi FoldColumn gui=none guifg=#855060 guibg=bg
+hi LineNr gui=underline guifg=#855060 guibg=#200510
+hi VertSplit gui=underline guifg=bg guibg=#200510
+hi StatusLine gui=underline guifg=fg guibg=#200510
+hi StatusLineNC gui=underline guifg=#3c2c31 guibg=#200510
+hi NonText gui=underline guifg=#3c2530
+hi NonText guibg=#3c2530
+" title
+hi Title gui=underline guifg=fg guibg=#653040
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#983266
+hi Question gui=underline guifg=bg guibg=#983266
+
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#cc7990
+hi Cursor gui=underline guifg=bg guibg=#cc7990
+hi IncSearch gui=underline guifg=bg guibg=#cc7990
+hi CursorIM gui=underline guifg=fg guibg=#884830
+hi Search gui=underline guifg=bg guibg=#993356
+hi Visual gui=underline guifg=bg guibg=#885672
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#c666dd
+hi WarningMsg gui=underline guifg=bg guibg=#cc66bc
+hi ModeMsg gui=underline guifg=bg guibg=#994333
+
+
+"TODO
+
+" inner {{{1
+hi Normal gui=none guifg=#bb7899 guibg=#40202a
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#cc568c
+hi Error gui=underline guifg=fg guibg=#335699
+hi Special gui=none guifg=#bb6b66 guibg=bg
+hi SpecialKey gui=none guifg=#cca966 guibg=bg
+hi Identifier gui=none guifg=#be6986 guibg=bg
+hi Constant gui=none guifg=#882223 guibg=bg
+hi Statement gui=none guifg=#a466aa guibg=bg
+hi Comment gui=none guifg=#884830 guibg=bg
+hi Underlined gui=underline guifg=#779966 guibg=bg
+hi Directory gui=none guifg=#774455 guibg=bg
+hi PreProc gui=none guifg=#775561 guibg=bg
+hi Type gui=none guifg=#aa3222 guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#ff99bc
+hi DiffChange gui=underline guifg=bg guibg=#aa5572
+hi DiffDelete gui=none guifg=bg guibg=#aa3822
+hi DiffAdd gui=underline guifg=bg guibg=#cc22c2
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#aa8266 guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#a466aa
+hi htmlBoldUnderline gui=underline guifg=#a466aa guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#cc4944
+hi htmlUnderlineItalic gui=underline guifg=#cc4944 guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#aa338e
+hi htmlBoldUnderlineItalic gui=underline guifg=#aa338e guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhspring.vim b/.vim/colors/hhspring.vim
new file mode 100644
index 0000000..cee4174
--- /dev/null
+++ b/.vim/colors/hhspring.vim
@@ -0,0 +1,83 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi LineNr gui=underline guifg=#757164 guibg=#1c1910
+hi Folded gui=none guifg=#757164 guibg=bg
+hi FoldColumn gui=none guifg=#757164 guibg=bg
+" title
+hi Title gui=underline guifg=fg guibg=#555144
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#986c32
+hi Question gui=underline guifg=bg guibg=#986c32
+
+hi NonText gui=underline guifg=#2c2920 guibg=#2c2920
+hi VertSplit gui=underline guifg=bg guibg=#1c1910
+hi StatusLine gui=underline guifg=fg guibg=#1c1910
+hi StatusLineNC gui=underline guifg=#3c382c guibg=#1c1910
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#ccbf99
+hi Cursor gui=underline guifg=bg guibg=#ccbf99
+hi IncSearch gui=underline guifg=bg guibg=#ccbf99
+hi CursorIM gui=underline guifg=fg guibg=#458800
+hi Search gui=underline guifg=bg guibg=#997e33
+hi Visual gui=underline guifg=bg guibg=#887f66
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#dd6674
+hi WarningMsg gui=underline guifg=bg guibg=#cc7e66
+hi ModeMsg gui=underline guifg=bg guibg=#819933
+
+
+"TODO
+" inner {{{1
+hi Normal gui=none guifg=#bbae88 guibg=#332f22
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#cc7e66
+hi Error gui=underline guifg=fg guibg=#7e3399
+hi Special gui=none guifg=#afbb66 guibg=bg
+hi SpecialKey gui=none guifg=#81cc66 guibg=bg
+hi Identifier gui=none guifg=#bea869 guibg=bg
+hi Constant gui=none guifg=#818822 guibg=bg
+hi Statement gui=none guifg=#aa6667 guibg=bg
+hi Comment gui=none guifg=#458800 guibg=bg
+hi Underlined gui=underline guifg=#66998c guibg=bg
+hi Directory gui=none guifg=#776a44 guibg=bg
+hi PreProc gui=none guifg=#776e55 guibg=bg
+hi Type gui=none guifg=#9fbb22 guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#ffe499
+hi DiffChange gui=underline guifg=bg guibg=#aa9455
+hi DiffDelete gui=none guifg=bg guibg=#89aa22
+hi DiffAdd gui=underline guifg=bg guibg=#cc3a22
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#89aa66 guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#aa6667
+hi htmlBoldUnderline gui=underline guifg=#aa6667 guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#bccc44
+hi htmlUnderlineItalic gui=underline guifg=#bccc44 guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#aa5833
+hi htmlBoldUnderlineItalic gui=underline guifg=#aa5833 guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhteal.vim b/.vim/colors/hhteal.vim
new file mode 100644
index 0000000..79dbb3c
--- /dev/null
+++ b/.vim/colors/hhteal.vim
@@ -0,0 +1,83 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi LineNr gui=underline guifg=#647564 guibg=#101c10
+hi Folded gui=none guifg=#647564 guibg=bg
+hi FoldColumn gui=none guifg=#647564 guibg=bg
+" title
+hi Title gui=underline guifg=fg guibg=#445544
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#439832
+hi Question gui=underline guifg=bg guibg=#439832
+
+hi NonText gui=underline guifg=#202c20 guibg=#202c20
+hi VertSplit gui=underline guifg=bg guibg=#101c10
+hi StatusLine gui=underline guifg=fg guibg=#101c10
+hi StatusLineNC gui=underline guifg=#2c3c2c guibg=#101c10
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#99cc99
+hi Cursor gui=underline guifg=bg guibg=#99cc99
+hi IncSearch gui=underline guifg=bg guibg=#99cc99
+hi CursorIM gui=underline guifg=fg guibg=#008866
+hi Search gui=underline guifg=bg guibg=#339933
+hi Visual gui=underline guifg=bg guibg=#668866
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#ccdd66
+hi WarningMsg gui=underline guifg=bg guibg=#99cc66
+hi ModeMsg gui=underline guifg=bg guibg=#339966
+
+
+"TODO
+" inner {{{1
+hi Normal gui=none guifg=#88bb88 guibg=#223322
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#99cc66
+hi Error gui=underline guifg=fg guibg=#993333
+hi Special gui=none guifg=#66bb88 guibg=bg
+hi SpecialKey gui=none guifg=#66cccc guibg=bg
+hi Identifier gui=none guifg=#69be69 guibg=bg
+hi Constant gui=none guifg=#228844 guibg=bg
+hi Statement gui=none guifg=#99aa66 guibg=bg
+hi Comment gui=none guifg=#008866 guibg=bg
+hi Underlined gui=underline guifg=#666699 guibg=bg
+hi Directory gui=none guifg=#447744 guibg=bg
+hi PreProc gui=none guifg=#557755 guibg=bg
+hi Type gui=none guifg=#22bb66 guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#99ff99
+hi DiffChange gui=underline guifg=bg guibg=#55aa55
+hi DiffDelete gui=none guifg=bg guibg=#22aa66
+hi DiffAdd gui=underline guifg=bg guibg=#88cc22
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#66aa99 guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#99aa66
+hi htmlBoldUnderline gui=underline guifg=#99aa66 guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#44cc77
+hi htmlUnderlineItalic gui=underline guifg=#44cc77 guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#66aa33
+hi htmlBoldUnderlineItalic gui=underline guifg=#66aa33 guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/hhviolet.vim b/.vim/colors/hhviolet.vim
new file mode 100644
index 0000000..b8fbf62
--- /dev/null
+++ b/.vim/colors/hhviolet.vim
@@ -0,0 +1,83 @@
+" Vim color file {{{1
+" Maintainer: hira@users.sourceforge.jp
+" Last Change: 2003/11/29 (Sat) 13:28:25.
+" Version: 1.2
+" This color scheme uses a dark background.
+
+" Happy Hacking color scheme {{{1
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = expand("<sfile>:t:r")
+let html_my_rendering = 1
+
+
+" frame & title & message (theme) {{{1
+hi LineNr gui=underline guifg=#686475 guibg=#13101c
+hi Folded gui=none guifg=#686475 guibg=bg
+hi FoldColumn gui=none guifg=#686475 guibg=bg
+" title
+hi Title gui=underline guifg=fg guibg=#484455
+" message
+hi MoreMsg gui=underline guifg=bg guibg=#373298
+hi Question gui=underline guifg=bg guibg=#373298
+
+hi NonText gui=underline guifg=#23202c guibg=#23202c
+hi VertSplit gui=underline guifg=bg guibg=#13101c
+hi StatusLine gui=underline guifg=fg guibg=#13101c
+hi StatusLineNC gui=underline guifg=#302c3c guibg=#13101c
+
+" cursor {{{1
+hi WildMenu gui=underline guifg=bg guibg=#a499cc
+hi Cursor gui=underline guifg=bg guibg=#a499cc
+hi IncSearch gui=underline guifg=bg guibg=#a499cc
+hi CursorIM gui=underline guifg=fg guibg=#662088
+hi Search gui=underline guifg=bg guibg=#493399
+hi Visual gui=underline guifg=bg guibg=#6d6688
+
+
+" message {{{1
+hi ErrorMsg gui=underline guifg=bg guibg=#66b2dd
+hi WarningMsg gui=underline guifg=bg guibg=#6683cc
+hi ModeMsg gui=underline guifg=bg guibg=#7c3399
+
+
+"TODO
+" inner {{{1
+hi Normal gui=none guifg=#9388bb guibg=#262233
+hi Ignore gui=none guifg=bg guibg=bg
+hi Todo gui=underline guifg=bg guibg=#6683cc
+hi Error gui=underline guifg=fg guibg=#335544
+hi Special gui=none guifg=#9b66bb guibg=bg
+hi SpecialKey gui=none guifg=#cc66b6 guibg=bg
+hi Identifier gui=none guifg=#7c69be guibg=bg
+hi Constant gui=none guifg=#774499 guibg=bg
+hi Statement gui=none guifg=#668aaa guibg=bg
+hi Comment gui=none guifg=#662088 guibg=bg
+hi Underlined gui=underline guifg=#997166 guibg=bg
+hi Directory gui=none guifg=#4f4477 guibg=bg
+hi PreProc gui=none guifg=#5c5577 guibg=bg
+hi Type gui=none guifg=#7733cc guibg=bg
+
+
+" diff {{{1
+hi DiffText gui=underline guifg=bg guibg=#af99ff
+hi DiffChange gui=underline guifg=bg guibg=#6855aa
+hi DiffDelete gui=none guifg=bg guibg=#8422aa
+hi DiffAdd gui=underline guifg=bg guibg=#2263cc
+
+
+" html {{{1
+hi htmlLink gui=underline guifg=#a866aa guibg=bg
+hi htmlBold gui=underline guifg=bg guibg=#668aaa
+hi htmlBoldUnderline gui=underline guifg=#668aaa guibg=bg
+hi htmlItalic gui=underline guifg=bg guibg=#9544cc
+hi htmlUnderlineItalic gui=underline guifg=#9544cc guibg=bg
+hi htmlBoldItalic gui=underline guifg=bg guibg=#334caa
+hi htmlBoldUnderlineItalic gui=underline guifg=#334caa guibg=bg
+hi htmlUnderline gui=underline guifg=fg guibg=bg
+
+"}}}1
+" vim:set nowrap foldmethod=marker expandtab:
diff --git a/.vim/colors/ibmedit.vim b/.vim/colors/ibmedit.vim
new file mode 100644
index 0000000..4b846c6
--- /dev/null
+++ b/.vim/colors/ibmedit.vim
@@ -0,0 +1,60 @@
+" Vim color file
+" Maintainer: Maarten Slaets
+" Last Change: 2002 Aug 16
+
+" Color settings similar to that used in IBM Edit
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="ibmedit"
+
+hi Normal term=NONE cterm=NONE ctermfg=Gray ctermbg=DarkBlue
+hi Normal gui=NONE guifg=#CCCCCC guibg=DarkBlue
+hi NonText term=NONE cterm=NONE ctermfg=Gray ctermbg=DarkBlue
+hi NonText gui=NONE guifg=#CCCCCC guibg=DarkBlue
+
+hi Statement term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi Statement gui=NONE guifg=White guibg=DarkBlue
+hi Special term=NONE cterm=NONE ctermfg=White ctermbg=DarkBlue
+hi Special gui=NONE guifg=White guibg=DarkBlue
+hi Constant term=NONE cterm=NONE ctermfg=Cyan ctermbg=DarkBlue
+hi Constant gui=NONE guifg=#99CCFF guibg=DarkBlue
+hi Comment term=NONE cterm=NONE ctermfg=Blue ctermbg=DarkBlue
+hi Comment gui=NONE guifg=#6666FF guibg=DarkBlue
+hi Preproc term=NONE cterm=NONE ctermfg=Cyan ctermbg=DarkBlue
+hi Preproc gui=NONE guifg=#99CCFF guibg=DarkBlue
+hi Type term=NONE cterm=NONE ctermfg=Gray ctermbg=DarkBlue
+hi Type gui=NONE guifg=#CCCCCC guibg=DarkBlue
+hi Identifier term=NONE cterm=NONE ctermfg=Grey ctermbg=DarkBlue
+hi Identifier gui=NONE guifg=#CCCCCC guibg=DarkBlue
+
+hi StatusLine term=bold cterm=bold ctermfg=Black ctermbg=White
+hi StatusLine gui=bold guifg=Black guibg=White
+
+hi StatusLineNC term=NONE cterm=NONE ctermfg=Black ctermbg=White
+hi StatusLineNC gui=NONE guifg=Black guibg=White
+
+hi Visual term=NONE cterm=NONE ctermfg=Black ctermbg=DarkCyan
+hi Visual gui=NONE guifg=Black guibg=Gray
+
+hi Search term=NONE cterm=NONE ctermbg=Gray
+hi Search gui=NONE guibg=Gray
+
+hi VertSplit term=NONE cterm=NONE ctermfg=Black ctermbg=White
+hi VertSplit gui=NONE guifg=Black guibg=White
+
+hi Directory term=NONE cterm=NONE ctermfg=Green ctermbg=DarkBlue
+hi Directory gui=NONE guifg=Green guibg=DarkBlue
+
+hi WarningMsg term=standout cterm=NONE ctermfg=Red ctermbg=DarkBlue
+hi WarningMsg gui=standout guifg=Red guibg=DarkBlue
+
+hi Error term=NONE cterm=NONE ctermfg=White ctermbg=Red
+hi Error gui=NONE guifg=White guibg=Red
+
+hi Cursor ctermfg=Black ctermbg=Yellow
+hi Cursor guifg=Black guibg=Yellow
+
diff --git a/.vim/colors/inkpot.vim b/.vim/colors/inkpot.vim
new file mode 100644
index 0000000..e70d992
--- /dev/null
+++ b/.vim/colors/inkpot.vim
@@ -0,0 +1,138 @@
+" Vim color file
+" Name: inkpot.vim
+" Maintainer: Ciaran McCreesh <ciaranm@gentoo.org>
+" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
+" colour mode). It won't work in 8/16 colour terminals.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "inkpot"
+
+" map a urxvt cube number to an xterm-256 cube number
+fun! <SID>M(a)
+ return strpart("0135", a:a, 1) + 0
+endfun
+
+" map a urxvt colour to an xterm-256 colour
+fun! <SID>X(a)
+ if &t_Co == 88
+ return a:a
+ else
+ if a:a == 8
+ return 237
+ elseif a:a < 16
+ return a:a
+ elseif a:a > 79
+ return 232 + (3 * (a:a - 80))
+ else
+ let l:b = a:a - 16
+ let l:x = l:b % 4
+ let l:y = (l:b / 4) % 4
+ let l:z = (l:b / 16)
+ return 16 + <SID>M(l:x) + (6 * <SID>M(l:y)) + (36 * <SID>M(l:z))
+ endif
+ endif
+endfun
+
+if has("gui_running")
+ hi Normal gui=NONE guifg=#cfbfad guibg=#1e1e27
+ hi IncSearch gui=BOLD guifg=#303030 guibg=#cd8b60
+ hi Search gui=NONE guifg=#303030 guibg=#cd8b60
+ hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#ff3300
+ hi WarningMsg gui=BOLD guifg=#ffffff guibg=#ff6600
+ hi ModeMsg gui=BOLD guifg=#7e7eae guibg=NONE
+ hi MoreMsg gui=BOLD guifg=#7e7eae guibg=NONE
+ hi Question gui=BOLD guifg=#ffcd00 guibg=NONE
+ hi StatusLine gui=BOLD guifg=#b9b9b9 guibg=#3e3e5e
+ hi StatusLineNC gui=NONE guifg=#b9b9b9 guibg=#3e3e5e
+ hi VertSplit gui=NONE guifg=#b9b9b9 guibg=#3e3e5e
+ hi WildMenu gui=BOLD guifg=#ffcd00 guibg=#1e1e2e
+
+ hi DiffText gui=NONE guifg=#ffffcd guibg=#00cd00
+ hi DiffChange gui=NONE guifg=#ffffcd guibg=#008bff
+ hi DiffDelete gui=NONE guifg=#ffffcd guibg=#cd0000
+ hi DiffAdd gui=NONE guifg=#ffffcd guibg=#00cd00
+
+ hi Cursor gui=NONE guifg=#404040 guibg=#8b8bff
+ hi lCursor gui=NONE guifg=#404040 guibg=#8b8bff
+ hi CursorIM gui=NONE guifg=#404040 guibg=#8b8bff
+
+ hi Folded gui=NONE guifg=#cfcfcd guibg=#4b208f
+ hi FoldColumn gui=NONE guifg=#8b8bcd guibg=#2e2e2e
+
+ hi Directory gui=NONE guifg=#00ff8b guibg=NONE
+ hi LineNr gui=NONE guifg=#8b8bcd guibg=#2e2e2e
+ hi NonText gui=BOLD guifg=#8b8bcd guibg=NONE
+ hi SpecialKey gui=BOLD guifg=#8b00cd guibg=NONE
+ hi Title gui=BOLD guifg=#af4f4b guibg=#1e1e27
+ hi Visual gui=NONE guifg=#603030 guibg=#edab60
+
+ hi Comment gui=NONE guifg=#cd8b00 guibg=NONE
+ hi Constant gui=NONE guifg=#ffcd8b guibg=NONE
+ hi String gui=NONE guifg=#ffcd8b guibg=#404040
+ hi Error gui=NONE guifg=#ffffff guibg=#ff0000
+ hi Identifier gui=NONE guifg=#ff8bff guibg=NONE
+ hi Ignore gui=NONE guifg=#8b8bcd guibg=NONE
+ hi Number gui=NONE guifg=#506dbd guibg=NONE
+ hi PreProc gui=NONE guifg=#409090 guibg=NONE
+ hi Special gui=NONE guifg=#c080d0 guibg=NONE
+ hi Statement gui=NONE guifg=#808bed guibg=NONE
+ hi Todo gui=BOLD guifg=#303030 guibg=#c080d0
+ hi Type gui=NONE guifg=#ff8bff guibg=NONE
+ hi Underlined gui=BOLD guifg=#ffffcd guibg=NONE
+ hi TaglistTagName gui=BOLD guifg=#808bed guibg=NONE
+
+else
+ exec "hi Normal cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(80) . ""
+ exec "hi IncSearch cterm=BOLD ctermfg=" . <SID>X("80") . " ctermbg=" . <SID>X(73) . ""
+ exec "hi Search cterm=NONE ctermfg=" . <SID>X("80") . " ctermbg=" . <SID>X(73) . ""
+ exec "hi ErrorMsg cterm=BOLD ctermfg=" . <SID>X("79") . " ctermbg=" . <SID>X(64) . ""
+ exec "hi WarningMsg cterm=BOLD ctermfg=" . <SID>X("79") . " ctermbg=" . <SID>X(68) . ""
+ exec "hi ModeMsg cterm=BOLD ctermfg=" . <SID>X("39") . ""
+ exec "hi MoreMsg cterm=BOLD ctermfg=" . <SID>X("39") . ""
+ exec "hi Question cterm=BOLD ctermfg=" . <SID>X("72") . ""
+ exec "hi StatusLine cterm=BOLD ctermfg=" . <SID>X("84") . " ctermbg=" . <SID>X(81) . ""
+ exec "hi StatusLineNC cterm=NONE ctermfg=" . <SID>X("84") . " ctermbg=" . <SID>X(81) . ""
+ exec "hi VertSplit cterm=NONE ctermfg=" . <SID>X("84") . " ctermbg=" . <SID>X(82) . ""
+ exec "hi WildMenu cterm=BOLD ctermfg=" . <SID>X("72") . " ctermbg=" . <SID>X(80) . ""
+
+ exec "hi DiffText cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(24) . ""
+ exec "hi DiffChange cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(23) . ""
+ exec "hi DiffDelete cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(48) . ""
+ exec "hi DiffAdd cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(24) . ""
+
+ exec "hi Cursor cterm=NONE ctermfg=" . <SID>X("8") . " ctermbg=" . <SID>X(39) . ""
+ exec "hi lCursor cterm=NONE ctermfg=" . <SID>X("8") . " ctermbg=" . <SID>X(39) . ""
+ exec "hi CursorIM cterm=NONE ctermfg=" . <SID>X("8") . " ctermbg=" . <SID>X(39) . ""
+
+ exec "hi Folded cterm=NONE ctermfg=" . <SID>X("78") . " ctermbg=" . <SID>X(35) . ""
+ exec "hi FoldColumn cterm=NONE ctermfg=" . <SID>X("38") . " ctermbg=" . <SID>X(80) . ""
+
+ exec "hi Directory cterm=NONE ctermfg=" . <SID>X("29") . " ctermbg=NONE"
+ exec "hi LineNr cterm=NONE ctermfg=" . <SID>X("38") . " ctermbg=" . <SID>X(80) . ""
+ exec "hi NonText cterm=BOLD ctermfg=" . <SID>X("38") . " ctermbg=NONE"
+ exec "hi SpecialKey cterm=BOLD ctermfg=" . <SID>X("34") . " ctermbg=NONE"
+ exec "hi Title cterm=BOLD ctermfg=" . <SID>X("52") . " ctermbg=" . <SID>X(80) . ""
+ exec "hi Visual cterm=NONE ctermfg=" . <SID>X("80") . " ctermbg=" . <SID>X(73) . ""
+
+ exec "hi Comment cterm=NONE ctermfg=" . <SID>X("52") . " ctermbg=NONE"
+ exec "hi Constant cterm=NONE ctermfg=" . <SID>X("73") . " ctermbg=NONE"
+ exec "hi String cterm=NONE ctermfg=" . <SID>X("73") . " ctermbg=" . <SID>X(8) . ""
+ exec "hi Error cterm=NONE ctermfg=" . <SID>X("79") . " ctermbg=" . <SID>X(64) . ""
+ exec "hi Identifier cterm=NONE ctermfg=" . <SID>X("71") . " ctermbg=NONE"
+ exec "hi Ignore cterm=NONE ctermfg=" . <SID>X("38") . " ctermbg=NONE"
+ exec "hi Number cterm=NONE ctermfg=" . <SID>X("22") . " ctermbg=NONE"
+ exec "hi PreProc cterm=NONE ctermfg=" . <SID>X("10") . " ctermbg=NONE"
+ exec "hi Special cterm=NONE ctermfg=" . <SID>X("39") . " ctermbg=NONE"
+ exec "hi Statement cterm=NONE ctermfg=" . <SID>X("26") . " ctermbg=NONE"
+ exec "hi Todo cterm=BOLD ctermfg=" . <SID>X("08") . " ctermbg=" . <SID>X(39) . ""
+ exec "hi Type cterm=NONE ctermfg=" . <SID>X("71") . " ctermbg=NONE"
+ exec "hi Underlined cterm=BOLD ctermfg=" . <SID>X("78") . " ctermbg=NONE"
+ exec "hi TaglistTagName cterm=BOLD ctermfg=" . <SID>X("26") . " ctermbg=NONE"
+endif
+
+" vim: set et :
diff --git a/.vim/colors/ironman.vim b/.vim/colors/ironman.vim
new file mode 100644
index 0000000..c82ce3d
--- /dev/null
+++ b/.vim/colors/ironman.vim
@@ -0,0 +1,80 @@
+" Vim color file
+" Maintainer: Michael Boehler
+" Mail: michael@familie-boehler.de
+" Last Change: 2002-09-24
+" Version: 1.3
+" This color scheme uses a light background.
+" GUI only
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "ironman"
+
+hi Normal guifg=#333333 guibg=NONE
+
+" Search
+hi IncSearch gui=NONE guifg=#303040 guibg=#ffff00
+hi Search gui=NONE guifg=#303040 guibg=#ccff00
+
+" Messages
+hi ErrorMsg gui=NONE guifg=#FF0000 guibg=NONE
+hi WarningMsg gui=NONE guifg=#FF6600 guibg=NONE
+hi ModeMsg gui=NONE guifg=#0070ff guibg=NONE
+hi MoreMsg gui=NONE guifg=#a800ff guibg=NONE
+hi Question gui=NONE guifg=#008050 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#fffacd guibg=#DF6A6A
+hi StatusLineNC gui=NONE guifg=#fffacd guibg=#b2bbcc
+hi VertSplit gui=NONE guifg=#fffacd guibg=#b2bbcc
+hi WildMenu gui=NONE guifg=#ffffff guibg=#3399cc
+
+" Diff
+hi DiffText gui=NONE guifg=#f83010 guibg=#ffeae0
+hi DiffChange gui=NONE guifg=#006800 guibg=#d0ffd0
+hi DiffDelete gui=NONE guifg=#2020ff guibg=#c8f2ea
+hi DiffAdd gui=NONE guifg=#2020ff guibg=#c8f2ea
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#DF6A6A
+hi lCursor gui=NONE guifg=#f8f8f8 guibg=#8000ff
+hi CursorIM gui=NONE guifg=#f8f8f8 guibg=#8000ff
+
+" Fold
+hi Folded gui=NONE guifg=#3399ff guibg=#EAF5FF
+hi FoldColumn gui=NONE guifg=#3399ff guibg=#EAF5FF
+
+" Other
+hi Directory gui=NONE guifg=#0000ff guibg=NONE
+hi LineNr gui=NONE guifg=#cccccc guibg=NONE
+hi NonText gui=NONE guifg=#cccccc guibg=NONE
+hi SpecialKey gui=NONE guifg=#66cccc guibg=NONE
+hi Title gui=NONE guifg=#004060 guibg=#c8f0f8
+hi Visual gui=NONE guifg=#ffffff guibg=#6889de
+
+" Syntax group
+hi Comment gui=NONE guifg=#ff5050 guibg=#ffebeb
+hi Constant gui=NONE guifg=#333333 guibg=#ededed
+hi Error gui=BOLD guifg=#ffffff guibg=#ff4080
+hi Identifier gui=NONE guifg=#339933 guibg=NONE
+hi Ignore gui=NONE guifg=#f8f8f8 guibg=NONE
+hi PreProc gui=NONE guifg=#0070e6 guibg=NONE
+hi Special gui=NONE guifg=#0000ff guibg=#ccf7ee
+hi Statement gui=NONE guifg=#0000FF guibg=NONE
+hi Todo gui=NONE guifg=#ff0070 guibg=#ffe0f4
+hi Type gui=NONE guifg=#eb7950 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=#0000ff guibg=NONE
+
+" HTML
+hi htmlLink gui=UNDERLINE guifg=#0000ff guibg=NONE
+hi htmlBold gui=BOLD
+hi htmlBoldItalic gui=BOLD,ITALIC
+hi htmlBoldUnderline gui=BOLD,UNDERLINE
+hi htmlBoldUnderlineItalic gui=BOLD,UNDERLINE,ITALIC
+hi htmlItalic gui=ITALIC
+hi htmlUnderline gui=UNDERLINE
+hi htmlUnderlineItalic gui=UNDERLINE,ITALIC
diff --git a/.vim/colors/jhdark.vim b/.vim/colors/jhdark.vim
new file mode 100644
index 0000000..22e5494
--- /dev/null
+++ b/.vim/colors/jhdark.vim
@@ -0,0 +1,72 @@
+" Vim color file by Jörn Horstmann <joern_h@gmx.net>
+" Light background in GUI, dark background in Console
+" Last change 16.07.2004
+" TODO
+
+set bg=dark
+
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "jhdark"
+
+hi Normal guifg=#999999 guibg=#000000 gui=none ctermfg=gray ctermbg=black cterm=none
+
+hi ErrorMsg guifg=#ff0000 guibg=bg gui=none ctermfg=red ctermbg=bg cterm=none
+hi Visual guifg=bg guibg=#4444aa gui=none ctermfg=bg ctermbg=darkcyan cterm=none
+hi VisualNOS guifg=bg guibg=#4444aa gui=none ctermfg=bg ctermbg=darkcyan cterm=none
+hi Todo guifg=bg guibg=#aaaa00 gui=none ctermfg=bg ctermbg=yellow cterm=none
+"hi Todo guifg=#884400 guibg=bg gui=none ctermfg=bg ctermbg=yellow cterm=none
+hi Search guifg=bg guibg=#8888ee gui=none ctermfg=bg ctermbg=blue cterm=none
+hi IncSearch guifg=bg guibg=#8888ee gui=none ctermfg=bg ctermbg=blue cterm=none
+
+hi SpecialKey guifg=#775522 guibg=bg gui=none ctermfg=magenta ctermbg=bg cterm=none
+hi Directory guifg=#000088 guibg=bg gui=none ctermfg=blue ctermbg=bg cterm=none
+hi WarningMsg guifg=#ff0000 guibg=bg gui=none ctermfg=red ctermbg=bg cterm=none
+hi WildMenu guifg=bg guibg=#ffff00 gui=none ctermfg=bg ctermbg=yellow cterm=none
+hi ModeMsg guifg=fg guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi Title guifg=fg guibg=#cccccc gui=none ctermfg=bg ctermbg=fg cterm=none
+hi MoreMsg guifg=fg guibg=bg gui=none ctermfg=bg ctermbg=fg cterm=none
+hi Question guifg=fg guibg=bg gui=none ctermfg=bg ctermbg=fg cterm=none
+hi NonText guifg=#666666 guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+
+hi StatusLine guifg=#dddddd guibg=#000088 gui=none ctermfg=bg ctermbg=darkblue cterm=none
+hi StatusLineNC guifg=#dddddd guibg=#333333 gui=none ctermfg=bg ctermbg=darkgray cterm=none
+hi VertSplit guifg=#dddddd guibg=#333333 gui=none ctermfg=bg ctermbg=darkgray cterm=none
+
+hi Folded guifg=#bb0099 guibg=#222222 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+hi FoldColumn guifg=#bb0099 guibg=#222222 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+hi SignColumn guifg=#bb0099 guibg=#222222 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+hi LineNr guifg=#bb0099 guibg=#222222 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+
+"hi Folded guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi FoldColumn guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi SignColumn guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi LineNr guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+
+hi DiffChange guifg=bg guibg=#888800 gui=none ctermfg=bg ctermbg=brown cterm=none
+hi DiffAdd guifg=bg guibg=#000088 gui=none ctermfg=bg ctermbg=darkblue cterm=none
+hi DiffDelete guifg=bg guibg=#880000 gui=none ctermfg=bg ctermbg=darkred cterm=none
+hi DiffText guifg=fg guibg=#dd0000 gui=none ctermfg=fg ctermbg=red cterm=none
+
+hi Cursor guifg=bg guibg=fg gui=none ctermfg=bg ctermbg=fg cterm=none
+hi lCursor guifg=bg guibg=fg gui=none ctermfg=bg ctermbg=fg cterm=none
+
+hi Comment guifg=#008800 guibg=bg gui=none ctermfg=darkgreen ctermbg=bg cterm=none
+hi Operator guifg=fg guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi Constant guifg=#aa0000 guibg=bg gui=none ctermfg=darkred ctermbg=bg cterm=none
+hi Special guifg=#997700 guibg=bg gui=none ctermfg=brown ctermbg=bg cterm=none
+
+hi Identifier guifg=#dddddd guibg=bg gui=none ctermfg=white ctermbg=bg cterm=none
+
+hi Type guifg=#6666dd guibg=bg gui=none ctermfg=cyan ctermbg=bg cterm=none
+hi Statement guifg=#dddddd guibg=bg gui=none ctermfg=white ctermbg=bg cterm=none
+
+hi PreProc guifg=#008888 guibg=bg gui=none ctermfg=darkcyan ctermbg=bg cterm=none
+
+hi Error guifg=fg guibg=#ff0000 gui=none ctermfg=bg ctermbg=red cterm=none
+
+hi Ignore guifg=bg ctermfg=bg
+hi Underlined guifg=fg guibg=bg ctermfg=fg ctermbg=bg cterm=underline term=underline gui=underline
diff --git a/.vim/colors/jhlight.vim b/.vim/colors/jhlight.vim
new file mode 100644
index 0000000..753232e
--- /dev/null
+++ b/.vim/colors/jhlight.vim
@@ -0,0 +1,80 @@
+" Vim color file by Jörn Horstmann <joern_h@gmx.net>
+" Light background, works in GUI and cobnsole
+" Last change 08.09.2004
+" TODO
+
+set bg=light
+
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "jhlight"
+
+hi Normal guifg=#000000 guibg=#dddddd gui=none ctermfg=black ctermbg=grey cterm=none
+
+hi ErrorMsg guifg=#ff0000 guibg=bg gui=none ctermfg=red ctermbg=bg cterm=none
+hi Visual guifg=bg guibg=#4444aa gui=none ctermfg=bg ctermbg=darkcyan cterm=none
+hi VisualNOS guifg=bg guibg=#4444aa gui=none ctermfg=bg ctermbg=darkcyan cterm=none
+hi Todo guifg=fg guibg=#bbbb77 gui=none ctermfg=bg ctermbg=brown cterm=none
+"hi Todo guifg=#884400 guibg=bg gui=none ctermfg=bg ctermbg=yellow cterm=none
+hi Search guifg=fg guibg=#8888ee gui=none ctermfg=bg ctermbg=blue cterm=none
+hi IncSearch guifg=fg guibg=#8888ee gui=none ctermfg=bg ctermbg=blue cterm=none
+
+hi SpecialKey guifg=#553300 guibg=bg gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+hi Directory guifg=#000088 guibg=bg gui=none ctermfg=blue ctermbg=bg cterm=none
+hi WarningMsg guifg=#ff0000 guibg=bg gui=none ctermfg=red ctermbg=bg cterm=none
+hi WildMenu guifg=fg guibg=#ffff00 gui=none ctermfg=bg ctermbg=brown cterm=none
+hi ModeMsg guifg=fg guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi Title guifg=#000088 guibg=#cccccc gui=none ctermfg=fg ctermbg=bg cterm=none
+hi MoreMsg guifg=#000088 guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi Question guifg=#000088 guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi NonText guifg=#444444 guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+
+hi StatusLine guifg=#dddddd guibg=#000088 gui=none ctermfg=white ctermbg=darkblue cterm=none
+hi StatusLineNC guifg=#dddddd guibg=#333333 gui=none ctermfg=grey ctermbg=black cterm=none
+hi VertSplit guifg=#dddddd guibg=#333333 gui=none ctermfg=white ctermbg=black cterm=none
+
+hi Folded guifg=#005500 guibg=#999999 gui=none ctermfg=darkgreen ctermbg=darkgray cterm=none
+hi FoldColumn guifg=#005500 guibg=#999999 gui=none ctermfg=darkgreen ctermbg=darkgray cterm=none
+hi SignColumn guifg=#005500 guibg=#999999 gui=none ctermfg=darkgreen ctermbg=darkgray cterm=none
+hi LineNr guifg=#005500 guibg=#999999 gui=none ctermfg=darkgreen ctermbg=darkgray cterm=none
+
+"hi Folded guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi FoldColumn guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi SignColumn guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+"hi LineNr guifg=#dddddd guibg=#666666 gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+
+hi DiffChange guifg=bg guibg=#888800 gui=none ctermfg=bg ctermbg=brown cterm=none
+hi DiffAdd guifg=bg guibg=#000088 gui=none ctermfg=bg ctermbg=darkblue cterm=none
+hi DiffDelete guifg=bg guibg=#880000 gui=none ctermfg=bg ctermbg=darkred cterm=none
+hi DiffText guifg=fg guibg=#dd0000 gui=none ctermfg=fg ctermbg=red cterm=none
+
+hi Cursor guifg=bg guibg=fg gui=none ctermfg=bg ctermbg=fg cterm=none
+hi lCursor guifg=bg guibg=fg gui=none ctermfg=bg ctermbg=fg cterm=none
+
+hi Comment guifg=#005500 guibg=bg gui=none ctermfg=darkgreen ctermbg=bg cterm=none
+hi Operator guifg=fg guibg=bg gui=none ctermfg=fg ctermbg=bg cterm=none
+hi Constant guifg=#880000 guibg=bg gui=none ctermfg=darkred ctermbg=bg cterm=none
+hi Special guifg=#553300 guibg=bg gui=none ctermfg=brown ctermbg=bg cterm=none
+
+hi Identifier guifg=#000088 guibg=bg gui=none ctermfg=darkblue ctermbg=bg cterm=none
+"hi Function guifg=#000044 gui=none
+
+"hi Keyword guifg=#000088 gui=none
+
+if exists("g:jh_hi_use_bold")
+ hi Type guifg=#660044 guibg=bg gui=bold ctermfg=darkmagenta ctermbg=bg cterm=none
+ hi Statement guifg=#440066 guibg=bg gui=bold ctermfg=darkmagenta ctermbg=bg cterm=none
+else
+ hi Type guifg=#660044 guibg=bg gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+ hi Statement guifg=#440066 guibg=bg gui=none ctermfg=darkmagenta ctermbg=bg cterm=none
+endif
+
+hi PreProc guifg=#004466 guibg=bg gui=none ctermfg=darkcyan ctermbg=bg cterm=none
+
+hi Error guifg=fg guibg=#880000 gui=none ctermfg=bg ctermbg=red cterm=none
+
+hi Ignore guifg=bg ctermfg=bg
+hi Underlined guifg=fg guibg=bg ctermfg=fg ctermbg=bg cterm=underline term=underline gui=underline
diff --git a/.vim/colors/less.vim b/.vim/colors/less.vim
new file mode 100644
index 0000000..c874913
--- /dev/null
+++ b/.vim/colors/less.vim
@@ -0,0 +1,54 @@
+" vim color file
+" Maintainer: Brian Nelson <nelsonbc@gmail.com>
+" Last Change: $Revision: 1.1 $ $Date: 2003/12/15 17:25:08 $
+"
+" Less is More - A minimal color scheme.
+" Disigned to work equally well on 8 or 16 colors, terminal or gui.
+
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "less"
+
+hi Normal term=none ctermfg=7 ctermbg=0 gui=none guifg=LightGray guibg=black
+hi Directory term=bold cterm=bold ctermfg=blue guifg=Blue
+hi Search term=reverse ctermfg=white ctermbg=blue guifg=white guibg=Blue
+hi MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=DarkGreen
+hi ModeMsg term=bold cterm=bold gui=bold guifg=White guibg=Blue
+hi LineNr term=underline cterm=bold ctermfg=darkcyan guifg=DarkCyan
+hi Question term=standout cterm=bold ctermfg=darkgreen gui=bold guifg=DarkGreen
+hi Comment term=bold cterm=bold ctermfg=0 gui=none guifg=DarkGray
+hi Constant term=bold cterm=none ctermfg=7 gui=none guifg=LightGray
+hi Special term=bold cterm=none ctermfg=3 gui=none guifg=Orange
+hi Identifier term=none cterm=none ctermfg=7 gui=none guifg=LightGray
+hi PreProc term=underline cterm=bold ctermfg=7 gui=bold guifg=White
+hi Error term=reverse cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=Black guibg=Red
+hi Todo term=standout cterm=none ctermfg=0 ctermbg=7 guifg=Black guibg=White
+hi String term=none cterm=none ctermfg=3 gui=none guifg=LightYellow
+hi Function term=bold cterm=bold ctermfg=3 gui=none guifg=Yellow
+hi Statement term=bold cterm=bold ctermfg=7 gui=bold guifg=White
+hi Include term=bold cterm=bold ctermfg=4 gui=none guifg=LightBlue
+hi StorageClass term=bold cterm=bold ctermfg=5 gui=none guifg=LightMagenta
+hi Type term=none cterm=none ctermfg=7 gui=none guifg=LightGray
+hi Defined term=bold cterm=bold ctermfg=6 gui=none guifg=LightCyan
+hi link Character String
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Macro Include
+hi link PreCondit PreProc
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
diff --git a/.vim/colors/lilac.vim b/.vim/colors/lilac.vim
new file mode 100644
index 0000000..ef825fa
--- /dev/null
+++ b/.vim/colors/lilac.vim
@@ -0,0 +1,75 @@
+" GUI-only vim color file
+" Author: Christian MICHON
+" Version: 1.0
+" Last Change: 10 Oct 2002
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "lilac"
+
+hi Boolean guifg=#00f080 guibg=#503040 gui=none
+hi Character guifg=#00f080 guibg=#503040 gui=none
+hi Comment guifg=#c0c0c0 guibg=#503040 gui=underline
+hi Conditional guifg=#60d0d0 guibg=#503040 gui=bold
+hi Constant guifg=#00f080 guibg=#503040 gui=none
+hi Cursor guifg=#000000 guibg=#f0f000 gui=none
+hi Debug guifg=#b0d0f0 guibg=#503040 gui=none
+hi Define guifg=#f0f000 guibg=#503040 gui=none
+hi Delimiter guifg=#b0d0f0 guibg=#503040 gui=none
+hi DiffAdd guifg=#f0f000 guibg=#805070 gui=bold
+hi DiffChange guifg=#f0f0f0 guibg=#805070 gui=none
+hi DiffDelete guifg=#503040 guibg=#805070 gui=none
+hi DiffText guifg=#000000 guibg=#f0f000 gui=bold
+hi Directory guifg=#f0f000 guibg=#503040 gui=underline
+hi Error guifg=#000000 guibg=#b0d0f0 gui=bold
+hi ErrorMsg guifg=#000000 guibg=#b0d0f0 gui=bold
+hi Exception guifg=#60d0d0 guibg=#503040 gui=bold
+hi Float guifg=#00f080 guibg=#503040 gui=none
+hi FoldColumn guifg=#b0d0f0 guibg=#805070 gui=bold
+hi Folded guifg=#b0d0f0 guibg=#805070 gui=bold
+hi Function guifg=#f0a070 guibg=#503040 gui=none
+hi Identifier guifg=#f0a070 guibg=#503040 gui=none
+hi Ignore guifg=#503040 guibg=#503040 gui=none
+hi Include guifg=#f0f000 guibg=#503040 gui=none
+hi IncSearch guifg=#000000 guibg=#b0d0f0 gui=bold
+hi Keyword guifg=#60d0d0 guibg=#503040 gui=bold
+hi Label guifg=#60d0d0 guibg=#503040 gui=bold
+hi lCursor guifg=#f0f0f0 guibg=#503040 gui=none
+hi LineNr guifg=#c0c0c0 guibg=#805070 gui=bold
+hi Macro guifg=#f0f000 guibg=#503040 gui=none
+hi ModeMsg guifg=#f0f0f0 guibg=#503040 gui=bold
+hi MoreMsg guifg=#f070a0 guibg=#503040 gui=bold
+hi NonText guifg=#c0c0c0 guibg=#503040 gui=bold
+hi Normal guifg=#f0f0f0 guibg=#503040 gui=none
+hi Number guifg=#00f080 guibg=#503040 gui=none
+hi Operator guifg=#60d0d0 guibg=#503040 gui=bold
+hi PreCondit guifg=#f0f000 guibg=#503040 gui=none
+hi PreProc guifg=#f0f000 guibg=#503040 gui=none
+hi Question guifg=#f070a0 guibg=#503040 gui=bold
+hi Repeat guifg=#60d0d0 guibg=#503040 gui=bold
+hi Search guifg=#000000 guibg=#b0d0f0 gui=bold
+hi Special guifg=#b0d0f0 guibg=#503040 gui=none
+hi SpecialChar guifg=#b0d0f0 guibg=#503040 gui=none
+hi SpecialComment guifg=#b0d0f0 guibg=#503040 gui=none
+hi SpecialKey guifg=#f0f000 guibg=#503040 gui=none
+hi Statement guifg=#60d0d0 guibg=#503040 gui=bold
+hi StatusLine guifg=#000000 guibg=#f0f0f0 gui=bold
+hi StatusLineNC guifg=#c0c0c0 guibg=#805070 gui=bold
+hi StorageClass guifg=#f070a0 guibg=#503040 gui=bold
+hi String guifg=#00f080 guibg=#503040 gui=none
+hi Structure guifg=#f070a0 guibg=#503040 gui=bold
+hi Tag guifg=#b0d0f0 guibg=#503040 gui=none
+hi Title guifg=#00f080 guibg=#503040 gui=bold
+hi Todo guifg=#f0f000 guibg=#0000f0 gui=none
+hi Type guifg=#f070a0 guibg=#503040 gui=bold
+hi Typedef guifg=#f070a0 guibg=#503040 gui=bold
+hi Underlined guifg=#b0d0f0 guibg=#503040 gui=underline
+hi VertSplit guifg=#000000 guibg=#b0d0f0 gui=bold
+hi Visual guifg=#000000 guibg=#b0d0f0 gui=underline
+hi VisualNOS guifg=#f0f0f0 guibg=#503040 gui=underline
+hi WarningMsg guifg=#000000 guibg=#b0d0f0 gui=bold
+hi WildMenu guifg=#f0f0f0 guibg=#0000f0 gui=none
diff --git a/.vim/colors/lingodirector.vim b/.vim/colors/lingodirector.vim
new file mode 100644
index 0000000..57f2b3c
--- /dev/null
+++ b/.vim/colors/lingodirector.vim
@@ -0,0 +1,44 @@
+" Vim color file
+" Maintainer: Thomas Schmall <ts_nowhere@yahoo.com>
+" Last Change: 2004 June 16
+" Version:1.0
+" URL: http://www.oxpal.com/index.php?o=dev_vim&lan=en
+"
+" Note: you can type :set number! to activate or deactivate the line numbering, wich also
+" looks similar to Director
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="lingodirector"
+
+hi Normal guifg=black guibg=white ctermfg=Black ctermbg=white
+hi Title guifg=black guibg=white ctermfg=Black ctermbg=white gui=BOLD
+hi lCursor guibg=Cyan guifg=NONE
+
+hi LineNr guifg=white guibg=#8c9bfa
+
+
+
+" syntax highlighting groups
+hi Comment ctermfg=Red guifg=#c80000 gui=NONE
+hi Operator term=None cterm=None gui=None
+
+hi Identifier ctermfg=Green guifg=#008000 gui=NONE
+
+hi Statement ctermfg=Blue guifg=#0000c8 gui=NONE
+hi TypeDef ctermfg=Blue guifg=#0000c8 gui=NONE
+hi Type ctermfg=Blue guifg=#0000c8 gui=NONE
+hi Boolean ctermfg=Blue guifg=#0000c8 gui=NONE
+
+hi String ctermfg=Gray guifg=#808080 gui=NONE
+hi Number ctermfg=Gray guifg=#808080 gui=NONE
+hi Constant ctermfg=Gray guifg=#808080 gui=NONE
+
+hi Function ctermfg=Green guifg=#008040 gui=NONE
+hi PreProc ctermfg=Green guifg=#008040 gui=NONE
+hi Keyword ctermfg=Green guifg=#008040 gui=NONE
+
+"set number
diff --git a/.vim/colors/manxome.vim b/.vim/colors/manxome.vim
new file mode 100644
index 0000000..0db38ea
--- /dev/null
+++ b/.vim/colors/manxome.vim
@@ -0,0 +1,47 @@
+""" local syntax file - set colors on a per-machine basis:
+""" Vim color file
+""" Title: Manxome Foes Color Scheme
+""" Maintainer: Ricardo SIGNES <rjbs-vim@lists.manxome.org>
+""" This Version: R2v2 [2003-07-16]
+""" suggested vim editing options: tw=0 ts=4 sw=4
+
+"" clear and re-initialize global variables
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "manxome"
+
+"" set highlight groups
+"" you'll notice that the ctermbg is often 'none'; this is so that when
+"" console vim runs in a terminal, transparency (if any) is not broken
+
+highlight Title ctermfg=3 ctermbg=none cterm=bold guifg=#ffff00 guibg=#000000 gui=none
+highlight Directory ctermfg=4 ctermbg=none cterm=bold guifg=#0000ff guibg=#000000 gui=none
+highlight StatusLine ctermfg=7 ctermbg=4 cterm=bold guifg=#ffffff guibg=#0000ff gui=none
+highlight StatusLineNC ctermfg=0 ctermbg=4 cterm=bold guifg=#000000 guibg=#0000ff gui=none
+highlight Normal ctermfg=7 ctermbg=none cterm=none guifg=#cccccc guibg=#000000 gui=none
+highlight Search ctermfg=7 ctermbg=4 cterm=bold guifg=#ffffff guibg=#0000ff gui=none
+highlight Visual ctermfg=7 ctermbg=6 cterm=bold guifg=#ffffff guibg=#00aaaa gui=none
+
+"" set major preferred groups
+
+highlight Comment ctermfg=2 ctermbg=none cterm=bold guifg=#00ff00 guibg=#000000 gui=none
+highlight Constant ctermfg=6 ctermbg=none cterm=bold guifg=#00ffff guibg=#000000 gui=none
+highlight Identifier ctermfg=4 ctermbg=none cterm=bold guifg=#0000ee guibg=#000000 gui=none
+highlight Statement ctermfg=6 ctermbg=none cterm=none guifg=#00aaaa guibg=#000000 gui=none
+highlight PreProc ctermfg=7 ctermbg=none cterm=bold guifg=#ffffff guibg=#000000 gui=none
+highlight Type ctermfg=6 ctermbg=none cterm=none guifg=#00aaaa guibg=#000000 gui=none
+highlight Special ctermfg=7 ctermbg=none cterm=bold guifg=#ffffff guibg=#000000 gui=none
+highlight Underlined ctermfg=2 ctermbg=none cterm=none guifg=#00aa00 guibg=#000000 gui=none
+highlight Ignore ctermfg=0 ctermbg=none cterm=bold guifg=#aaaaaa guibg=#000000 gui=none
+highlight Error ctermfg=1 ctermbg=none cterm=bold guibg=#ff0000 guibg=#000000 gui=none
+highlight Todo ctermfg=3 ctermbg=none cterm=none guifg=#aaaa00 guibg=#000000 gui=none
+
+" set syntax-specific groups
+" I'd like to avoid using these, but the default settings for these two are
+" just no good. Seeing italic text in Vim is just plain wrong.
+
+highlight htmlBold ctermfg=7 ctermbg=none cterm=bold guifg=#ffffff guibg=#000000 gui=none
+highlight htmlItalic ctermfg=5 ctermbg=none cterm=bold guifg=#ff00ff guibg=#000000 gui=none
diff --git a/.vim/colors/mars.vim b/.vim/colors/mars.vim
new file mode 100644
index 0000000..408ae79
--- /dev/null
+++ b/.vim/colors/mars.vim
@@ -0,0 +1,142 @@
+" Maintainer: Tim Aldrich <aldy0169@yahoo.com>
+" Last Change: 19 November 2003
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="mars"
+" GUI colors {{{
+"hi Normal guifg=#FFFFFF guibg=#961E00
+hi Normal guifg=#FFFFFF guibg=#961E00
+hi Cursor guifg=#A0963C guibg=#FFFFFF
+hi CursorIM guifg=#6699CC guibg=#99CCCC
+hi Directory guifg=#B45000 guibg=#961E00
+hi DiffAdd guifg=#FFFFCC guibg=#961E00
+hi DiffChange guifg=#FF9900 guibg=#961E00
+hi DiffDelete guifg=#999999 guibg=#961E00
+hi DiffText guifg=#FFFFFF guibg=#961E00
+hi ErrorMsg guifg=#FFFFFF guibg=#FF0000
+hi VertSplit guifg=#FFFFFF guibg=#961E00
+hi Folded guifg=#999999 guibg=#BE1E00 gui=italic
+hi FoldColumn guifg=#CC0000 guibg=#999999
+hi IncSearch guifg=#FFFF00 guibg=#961E00
+hi LineNr guifg=#999999 guibg=#BE1E00
+hi ModeMsg guifg=#FFFFFF guibg=#961E00
+hi MoreMsg guifg=#FFFFFF guibg=#961E00
+hi NonText guifg=#FFFFFF guibg=#A0141E
+hi Question guifg=#FFFFFF guibg=#EE0000
+hi Search guifg=#A0142B guibg=#FFFF00 gui=underline
+hi SpecialKey guifg=#FFFF00 guibg=#961E00
+hi StatusLine guifg=#FFFFFF guibg=#961E00
+hi StatusLineNC guifg=#CCCCCC guibg=#961E00
+hi Title guifg=#FFFFFF guibg=#FF9900
+hi Visual guifg=#B45000 guibg=#961E00
+hi WarningMsg guifg=#FF0000 guibg=#FFFFFF
+hi WildMenu guifg=#961E00 guibg=#999999
+" }}}
+
+" cterm colors {{{
+hi Normal ctermfg=white ctermbg=darkblue
+hi Cursor ctermfg=darkblue ctermbg=white
+hi CursorIM ctermfg=lightcyan ctermbg=lightcyan
+hi Directory ctermfg=lightblue ctermbg=lightcyan
+hi DiffAdd ctermfg=LightYellow ctermbg=darkblue
+hi DiffChange ctermfg=darkred ctermbg=darkblue
+hi DiffDelete ctermfg=grey ctermbg=darkblue
+hi DiffText ctermfg=white ctermbg=darkblue
+hi ErrorMsg ctermfg=red ctermbg=lightcyan
+hi VertSplit ctermfg=white ctermbg=darkblue
+hi Folded ctermfg=grey ctermbg=darkblue
+hi FoldColumn ctermfg=darkred ctermbg=lightcyan
+hi IncSearch ctermfg=yellow ctermbg=darkblue
+hi LineNr ctermfg=lightyellow ctermbg=darkblue
+hi ModeMsg ctermfg=white ctermbg=darkblue
+hi MoreMsg ctermfg=white ctermbg=darkblue
+hi NonText ctermfg=white ctermbg=lightblue
+hi Question ctermfg=white ctermbg=darkblue
+hi Search ctermfg=darkred ctermbg=lightcyan
+hi SpecialKey ctermfg=yellow ctermbg=darkblue
+hi StatusLine ctermfg=white ctermbg=darkblue
+hi StatusLineNC ctermfg=lightgrey ctermbg=darkblue
+hi Title ctermfg=white ctermbg=yellow
+hi Visual ctermfg=lightblue ctermbg=cyan
+hi WarningMsg ctermfg=red ctermbg=white
+hi WildMenu ctermfg=darkblue ctermbg=grey
+" }}}
+
+" GUI hilight groups {{{
+
+hi Comment guifg=#999999
+hi Constant guifg=#FFFF00
+hi String guifg=#CCCC99
+hi Character guifg=#A0963C
+hi Number guifg=#A0963C
+hi Boolean guifg=#A0963C
+hi Float guifg=#A0963C
+hi Identifier guifg=#E6fA46
+hi Function guifg=#E6fA46
+hi Statement guifg=#FFFFCC
+hi Conditional guifg=#FFFFCC
+hi Repeat guifg=#FFFFCC
+hi Label guifg=#E66E46
+hi Operator guifg=#FFFF00
+hi Keyword guifg=#FFFF00
+hi Exception guifg=#FFFFAA
+hi PreProc guifg=#C8783C
+hi Include guifg=#C8783C
+hi Define guifg=#C8783C
+hi Macro guifg=#C8783C
+hi PreCondit guifg=#C8783C
+hi Type guifg=#E6641E
+hi StorageClass guifg=#E66E46
+hi Structure guifg=#E66E46
+hi Typedef guifg=#E66E46
+hi Special guifg=#00FF00
+hi SpecialChar guifg=#00FF00
+hi Tag guifg=#CCCCFF
+hi Delimiter guifg=#CCCCFF
+hi SpecialComment guifg=#FFFFCC
+hi Debug guifg=#CC3300
+hi Ignore guifg=#961E00
+hi Error guifg=#FF0000 guibg=#FFFFFF
+hi Todo guifg=#FFFF00 guibg=#961E00
+" }}}
+
+" cterm hilight groups {{{
+hi Comment ctermfg=grey
+hi Constant ctermfg=lightgreen
+hi String ctermfg=brown
+hi Character ctermfg=lightgreen
+hi Number ctermfg=lightgreen
+hi Boolean ctermfg=lightgreen
+hi Float ctermfg=lightgreen
+hi Identifier ctermfg=lightcyan
+hi Function ctermfg=lightcyan
+hi Statement ctermfg=lightyellow
+hi Conditional ctermfg=lightyellow
+hi Repeat ctermfg=lightyellow
+hi Label ctermfg=lightcyan
+hi Operator ctermfg=yellow
+hi Keyword ctermfg=yellow
+hi Exception ctermfg=yellow
+hi PreProc ctermfg=darkcyan
+hi Include ctermfg=darkcyan
+hi Define ctermfg=darkcyan
+hi Macro ctermfg=darkcyan
+hi PreCondit ctermfg=darkcyan
+hi Type ctermfg=lightcyan
+hi StorageClass ctermfg=lightcyan
+hi Structure ctermfg=lightcyan
+hi Typedef ctermfg=lightcyan
+hi Special ctermfg=green
+hi SpecialChar ctermfg=green
+hi Tag ctermfg=brown
+hi Delimiter ctermfg=brown
+hi SpecialComment ctermfg=lightyellow
+hi Debug ctermfg=magenta
+hi Ignore ctermfg=lightblue
+hi Error ctermfg=red ctermbg=white
+hi Todo ctermfg=grey ctermbg=white
+" }}}
diff --git a/.vim/colors/matrix.vim b/.vim/colors/matrix.vim
new file mode 100644
index 0000000..da5c687
--- /dev/null
+++ b/.vim/colors/matrix.vim
@@ -0,0 +1,80 @@
+" vim:set ts=8 sts=2 sw=2 tw=0:
+"
+" matrix.vim - MATRIX like colorscheme.
+"
+" Maintainer: MURAOKA Taro <koron@tka.att.ne.jp>
+" Last Change: 10-Jun-2003.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = 'matrix'
+
+" the character under the cursor
+hi Cursor guifg=#226622 guibg=#55ff55
+hi lCursor guifg=#226622 guibg=#55ff55
+" like Cursor, but used when in IME mode |CursorIM|
+hi CursorIM guifg=#226622 guibg=#55ff55
+" directory names (and other special names in listings)
+hi Directory guifg=#55ff55 guibg=#000000
+" diff mode: Added line |diff.txt|
+hi DiffAdd guifg=#55ff55 guibg=#226622 gui=none
+" diff mode: Changed line |diff.txt|
+hi DiffChange guifg=#55ff55 guibg=#226622 gui=none
+" diff mode: Deleted line |diff.txt|
+hi DiffDelete guifg=#113311 guibg=#113311 gui=none
+" diff mode: Changed text within a changed line |diff.txt|
+hi DiffText guifg=#55ff55 guibg=#339933 gui=bold
+" error messages on the command line
+hi ErrorMsg guifg=#55ff55 guibg=#339933
+" the column separating vertically split windows
+hi VertSplit guifg=#339933 guibg=#339933
+" line used for closed folds
+hi Folded guifg=#44cc44 guibg=#113311
+" 'foldcolumn'
+hi FoldColumn guifg=#44cc44 guibg=#226622
+" 'incsearch' highlighting; also used for the text replaced with
+hi IncSearch guifg=#226622 guibg=#55ff55 gui=none
+" line number for ":number" and ":#" commands, and when 'number'
+hi LineNr guifg=#44cc44 guibg=#000000
+" 'showmode' message (e.g., "-- INSERT --")
+hi ModeMsg guifg=#44cc44 guibg=#000000
+" |more-prompt|
+hi MoreMsg guifg=#44cc44 guibg=#000000
+" '~' and '@' at the end of the window, characters from
+hi NonText guifg=#44cc44 guibg=#113311
+" normal text
+hi Normal guifg=#44cc44 guibg=#000000
+" |hit-enter| prompt and yes/no questions
+hi Question guifg=#44cc44 guibg=#000000
+" Last search pattern highlighting (see 'hlsearch').
+hi Search guifg=#113311 guibg=#44cc44 gui=none
+" Meta and special keys listed with ":map", also for text used
+hi SpecialKey guifg=#44cc44 guibg=#000000
+" status line of current window
+hi StatusLine guifg=#55ff55 guibg=#339933 gui=none
+" status lines of not-current windows
+hi StatusLineNC guifg=#113311 guibg=#339933 gui=none
+" titles for output from ":set all", ":autocmd" etc.
+hi Title guifg=#55ff55 guibg=#113311 gui=bold
+" Visual mode selection
+hi Visual guifg=#55ff55 guibg=#339933 gui=none
+" Visual mode selection when vim is "Not Owning the Selection".
+hi VisualNOS guifg=#44cc44 guibg=#000000
+" warning messages
+hi WarningMsg guifg=#55ff55 guibg=#000000
+" current match in 'wildmenu' completion
+hi WildMenu guifg=#226622 guibg=#55ff55
+
+hi Comment guifg=#226622 guibg=#000000
+hi Constant guifg=#55ff55 guibg=#226622
+hi Special guifg=#44cc44 guibg=#226622
+hi Identifier guifg=#55ff55 guibg=#000000
+hi Statement guifg=#55ff55 guibg=#000000 gui=bold
+hi PreProc guifg=#339933 guibg=#000000
+hi Type guifg=#55ff55 guibg=#000000 gui=bold
+hi Underlined guifg=#55ff55 guibg=#000000 gui=underline
+hi Error guifg=#55ff55 guibg=#339933
+hi Todo guifg=#113311 guibg=#44cc44 gui=none
diff --git a/.vim/colors/metacosm.vim b/.vim/colors/metacosm.vim
new file mode 100644
index 0000000..e5eaa5f
--- /dev/null
+++ b/.vim/colors/metacosm.vim
@@ -0,0 +1,132 @@
+" Vim color file
+" Maintainer: Robert Melton ( vim at metacosm dot dhs dot org )
+" Last Change: 2004 June 19th
+
+
+" -----------------------------------------------------------------------------
+" This color scheme uses a dark grey background.
+" This theme, based on evening (with some input from Torte) is designed to
+" seperate active text (code) from background/line numbers/folds/listchars by
+" having different background colors on the non-code and the code (just
+" slightly). If you look at the screenshot below, you will get the idea.
+" All non-code(include indents) and string literals have a black background
+" while code has a very dark grey background.
+" -----------------------------------------------------------------------------
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "metacosm"
+
+
+" -----------------------------------------------------------------------------
+" Primary (hyper/selected/colored background)
+" -----------------------------------------------------------------------------
+" Search
+hi IncSearch guibg=black guifg=cyan
+hi Search guibg=black guifg=cyan
+
+" Visual
+hi Visual guibg=black guifg=yellow
+hi VisualNOS guibg=black guifg=yellow gui=underline
+
+" Borders
+hi StatusLine guibg=black guifg=white
+hi StatusLineNC guibg=grey22 guifg=grey45
+hi VertSplit guibg=black guifg=grey45
+
+" Cursors
+hi Cursor guibg=white guifg=black
+hi lCursor guibg=white guifg=black
+
+" Diff
+hi DiffText guibg=red guifg=white gui=bold
+hi DiffAdd guibg=darkblue guifg=white
+hi DiffChange guibg=darkmagenta guifg=white
+hi DiffDelete guibg=darkcyan guifg=blue gui=bold
+
+" Misc
+hi Title guifg=magenta gui=bold
+hi Question guibg=black guifg=green gui=bold
+hi Todo guibg=black guifg=cyan
+hi Error guibg=red guifg=white
+hi WildMenu guibg=cyan guifg=black
+
+
+" -----------------------------------------------------------------------------
+" Primary (active/code/text/grey background)
+" -----------------------------------------------------------------------------
+" Normal
+hi Normal guibg=grey22 guifg=white
+
+" Constants
+hi Constant guibg=grey22 guifg=#ffa0a0
+hi String guibg=grey22 guifg=#ffa0a0
+hi Character guibg=grey22 guifg=#ffa0a0
+hi Number guibg=grey22 guifg=#ffa0a0
+hi Boolean guibg=grey22 guifg=#ffa0a0
+hi Float guibg=grey22 guifg=#ffa0a0
+
+" Identifier
+hi Identifier guibg=grey22 guifg=#40ffff
+hi Function guibg=grey22 guifg=#40ffff
+
+" Statement
+hi Statement guibg=grey22 guifg=#ffff60
+hi Conditional guibg=grey22 guifg=#ffff60
+hi Repeat guibg=grey22 guifg=#ffff60
+hi Label guibg=grey22 guifg=#ffff60
+hi Operator guibg=grey22 guifg=#ffff60
+hi Keyword guibg=grey22 guifg=#ffff60
+hi Exception guibg=grey22 guifg=#ffff60
+
+" PreProc
+hi PreProc guibg=grey22 guifg=#ff80ff
+hi Include guibg=grey22 guifg=#ff80ff
+hi Define guibg=grey22 guifg=#ff80ff
+hi Macro guibg=grey22 guifg=#ff80ff
+hi PreCondit guibg=grey22 guifg=#ff80ff
+
+" Type
+hi Type guibg=grey22 guifg=#60ff60
+hi StorageClass guibg=grey22 guifg=#60ff60
+hi Structure guibg=grey22 guifg=#60ff60
+hi Typedef guibg=grey22 guifg=#60ff60
+
+" Special
+hi Special guibg=grey22 guifg=orange
+hi SpecialChar guibg=grey22 guifg=orange
+hi Tag guibg=grey22 guifg=orange
+hi Delimiter guibg=grey22 guifg=orange
+hi Debug guibg=grey22 guifg=orange
+
+" Misc
+hi Underlined guibg=grey22 guifg=#ffff60 gui=underline
+
+
+" -----------------------------------------------------------------------------
+" Secondary (inactive/black background)
+" -----------------------------------------------------------------------------
+" Comments
+hi Comment guibg=black guifg=#80a0ff
+hi SpecialComment guibg=black guifg=#80a0ff gui=underline
+
+" Messages
+hi ModeMsg guibg=black guifg=white gui=bold
+hi MoreMsg guibg=black guifg=seagreen gui=bold
+hi WarningMsg guibg=black guifg=blue gui=bold
+hi ErrorMsg guibg=black guifg=red gui=bold
+
+" Folding
+hi Folded guibg=black guifg=grey45
+hi FoldColumn guibg=black guifg=grey45
+
+" Misc
+hi Ignore guibg=black guifg=grey45
+hi NonText guibg=black guifg=grey45
+hi LineNr guibg=black guifg=grey45
+hi SpecialKey guibg=black guifg=grey45
+hi SignColumn guibg=black guifg=grey45
+hi Directory guibg=black guifg=cyan
diff --git a/.vim/colors/midnight.vim b/.vim/colors/midnight.vim
new file mode 100644
index 0000000..5fab610
--- /dev/null
+++ b/.vim/colors/midnight.vim
@@ -0,0 +1,80 @@
+" Vim color file
+" Maintainer: Michael Brailsford <brailsmt@yahoo.com>
+" Date: $Date: 2002/04/11 03:29:51 $
+" Version: $Revision: 1.4 $
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+" your pick:
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="midnight"
+
+hi Normal guifg=lightsteelblue guibg=#00006f ctermfg=14
+
+"Toggle semicolon matching at the end of lines
+nmap <silent> <leader>; :call ToggleSemicolonHighlighting()<cr>
+"{{{
+function! ToggleSemicolonHighlighting()
+ if exists("b:semicolon")
+ unlet b:semicolon
+ hi semicolon guifg=NONE gui=NONE ctermfg=NONE
+ else
+ syn match semicolon #;$#
+ hi semicolon guifg=red gui=bold ctermfg=1
+ let b:semicolon = 1
+ endif
+endfunction
+"}}}
+
+hi Cursor guifg=bg guibg=fg ctermfg=0 ctermbg=11
+"hi CursorIM
+hi Directory gui=bold
+hi DiffAdd guifg=yellow guibg=darkgreen ctermbg=0
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg guibg=red ctermfg=1
+"hi VertSplit
+hi Folded guibg=#000047 ctermbg=4 guifg=yellow ctermfg=11 gui=bold
+hi FoldColumn guibg=steelblue3 ctermbg=14 guifg=darkblue ctermfg=11 gui=bold
+"hi IncSearch
+hi LineNr guifg=yellow ctermfg=11
+hi ModeMsg guifg=yellow gui=bold
+"hi MoreMsg
+"hi NonText
+"hi Question
+hi Search guibg=yellow guifg=bg
+"hi SpecialKey
+hi StatusLine guifg=steelblue1
+hi StatusLineNC guifg=steelblue3
+"hi Title
+hi Visual guifg=fg guibg=bg
+"hi VisualNOS
+"hi WarningMsg
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=green ctermfg=10
+hi Constant guifg=lightmagenta gui=bold ctermfg=13
+hi String guifg=indianred1 ctermfg=5
+hi Character guifg=violet ctermfg=5
+hi Number guifg=turquoise1 ctermfg=5
+"hi Identifier
+hi Statement guifg=khaki1 gui=bold ctermfg=15 cterm=underline
+hi PreProc guifg=firebrick1 gui=italic ctermfg=9
+hi Type guifg=gold gui=bold ctermfg=3
+"hi Special
+"hi Underlined
+"hi Ignore
+"hi Error
+hi Todo guifg=yellow guibg=blue gui=bold
diff --git a/.vim/colors/midnight2.vim b/.vim/colors/midnight2.vim
new file mode 100644
index 0000000..da99d00
--- /dev/null
+++ b/.vim/colors/midnight2.vim
@@ -0,0 +1,86 @@
+" Vim color file
+" Maintainer: Michael Brailsford <brailsmt@yahoo.com>
+" Date: $Date: 2002/04/11 03:29:51 $
+" Version: $Revision: 1.4 $
+" Inspiration: This colorscheme was inspired by midnight.vim. It is a darker
+" version of it. With some colors tweaked.
+" Thanks: Thanks go to Hans Fugal for creating the colorscheme template.
+" Without it I would have been lost creating the original midnight.vim
+" Note: If you do not like the dark look of the colorscheme, you can
+" easily lighten things up with the following line:
+" :%s/\(\w\)3/\12/g
+" It is easily pasteable into the command line. you can also
+" change "\12" to "\11", "\1" or "\14" (if you want things even
+" darker). If you do use the "\14" replacement, then it looks
+" like your monitor in a fog bank. :)
+
+" your pick:
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="midnight2"
+
+hi Normal guifg=slategray3 guibg=#000029 ctermfg=14
+
+"Toggle semicolon matching at the end of lines
+nmap <silent> <leader>; :call ToggleSemicolonHighlighting()<cr>
+"{{{
+function! ToggleSemicolonHighlighting()
+ if exists("b:semicolon")
+ unlet b:semicolon
+ hi semicolon guifg=NONE gui=NONE ctermfg=NONE
+ else
+ syn match semicolon #;$#
+ hi semicolon guifg=red3 gui=bold ctermfg=1
+ let b:semicolon = 1
+ endif
+endfunction
+"}}}
+
+hi Cursor guifg=bg guibg=fg ctermfg=0 ctermbg=11
+"hi CursorIM
+hi Directory gui=bold
+hi DiffAdd guifg=yellow3 guibg=darkgreen ctermbg=0
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg guibg=red3 ctermfg=1
+"hi VertSplit
+hi Folded guibg=#00001a ctermbg=4 guifg=yellow3 ctermfg=11 gui=NONE
+hi FoldColumn guibg=steelblue3 ctermbg=14 guifg=navyblue ctermfg=11 gui=bold
+"hi IncSearch
+hi LineNr guifg=yellow3 ctermfg=11
+hi ModeMsg guifg=yellow3 gui=bold
+"hi MoreMsg
+"hi NonText
+"hi Question
+hi Search guibg=yellow3 guifg=bg
+"hi SpecialKey
+hi StatusLine guifg=steelblue3
+hi StatusLineNC guifg=steelblue4
+"hi Title
+hi Visual guifg=fg guibg=bg
+"hi VisualNOS
+"hi WarningMsg
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=chartreuse3 ctermfg=10
+hi Constant guifg=plum3 gui=bold ctermfg=13
+hi String guifg=indianred3 ctermfg=5
+hi Character guifg=mediumpurple3 ctermfg=5
+hi Number guifg=turquoise3 ctermfg=5
+"hi Identifier
+hi Statement guifg=khaki3 gui=bold ctermfg=15 cterm=underline
+hi PreProc guifg=firebrick3 gui=italic ctermfg=9
+hi Type guifg=gold3 gui=bold ctermfg=3
+"hi Special
+"hi Underlined
+"hi Ignore
+"hi Error
+hi Todo guifg=yellow3 guibg=blue3 gui=bold
diff --git a/.vim/colors/mod_tcsoft.vim b/.vim/colors/mod_tcsoft.vim
new file mode 100644
index 0000000..b36dab2
--- /dev/null
+++ b/.vim/colors/mod_tcsoft.vim
@@ -0,0 +1,68 @@
+"mod_tcsoft is based on the tcsoft-color scheme
+"(http://www.vim.org/scripts/script.php?script_id=641), made by Ingo Fabbri
+"<vim@tcsoft.net>
+"
+"I changed the cursor and the background-colors. Hope you like it.
+
+" Author: André Kelpe <fs111 at web dot de>
+" Last Change: Jan 13 10:33:46 CET 2005
+"
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = "mod_tcsoft"
+
+hi Normal guifg=#000000 guibg=floralwhite
+hi Ignore guifg=bg
+hi Comment guifg=#1050ff gui=italic
+hi Folded guifg=black guibg=#d1cdc5
+hi FoldColumn guifg=black guibg=#d1cdc5
+hi Constant guifg=#666666 gui=NONE "grau
+hi Special guifg=#FF0000 gui=NONE "rot
+hi Identifier guifg=#993300 gui=NONE "rostfarbig
+hi Statement guifg=#FF9900 gui=NONE "orange
+hi PreProc guifg=#009900 gui=NONE "dunkelgrün
+hi Type guifg=#FF9900 gui=bold "orange
+hi Cursor guifg=#FFFFFF guibg=#000000 "schwarz
+hi LineNr guifg=#000000 gui=NONE "schwarz
+hi StatusLine guifg=#000000 gui=reverse,bold "schwarz
+hi Title guifg=#1050ff gui=bold
+hi Todo guibg=#1050ff guifg=floralwhite gui=bold
+hi Search guifg=white guibg=#1050ff
+
+
+hi link Function PreProc
+hi link String Constant
+hi link Character Constant
+
+hi! link MoreMsg Comment
+hi! link ErrorMsg Visual
+hi! link WarningMsg ErrorMsg
+hi! link Question Comment
+
+hi link Number Special
+hi link Boolean Constant
+hi link Float Number
+
+hi link Operator Identifier
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Comment
+hi link Debug Special
diff --git a/.vim/colors/navajo-night.vim b/.vim/colors/navajo-night.vim
new file mode 100644
index 0000000..f0c27f0
--- /dev/null
+++ b/.vim/colors/navajo-night.vim
@@ -0,0 +1,119 @@
+" Vim colour file
+" Maintainer: Matthew Hawkins <matt@mh.dropbear.id.au>
+" Last Change: Mon, 22 Apr 2002 15:28:04 +1000
+" URI: http://mh.dropbear.id.au/vim/navajo-night.png
+"
+" This colour scheme uses a "navajo-black" background
+" I have added colours for the statusbar and for spell checking
+" as taken from Cream (http://cream.sf.net/)
+
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "navajo-night"
+
+" This is the list of colour changes from Navajo that
+" weren't a simple mathematical subtraction from 0xffffff
+" DarkBlue -> #ffff74
+" DarkRed -> #74ffff
+" DarkGreen -> #ff9bff
+" DarkCyan -> #ff7474
+" DarkMagenta -> #74ff74
+" DarkYellow -> #7474ff
+" DarkGray -> #565656
+" Blue -> Yellow
+" Red -> Cyan
+" Yellow -> Blue
+" Gray -> #414141
+" Brown -> #5ad5d5
+" #ff8060 -> #007f9f
+" #f6e8d0 -> #09172f
+" #edb5cd -> #124a32
+" #c0c0c0 -> #3f3f3f
+" #907050 -> #6f8faf
+" #808080 -> #7f7f7f
+" #707070 -> #8f8f8f
+" SeaGreen -> #d174a8
+" LightRed (assuming #ee9090) -> #116f6f
+" LightBlue -> #522719
+
+hi Normal ctermfg=White guifg=White guibg=#35536f
+
+hi SpecialKey term=bold ctermfg=darkblue guifg=Yellow
+hi NonText term=bold ctermfg=darkblue cterm=bold gui=bold guifg=#7f7f7f
+hi Directory term=bold ctermfg=darkblue guifg=Yellow
+hi ErrorMsg term=standout ctermfg=grey ctermbg=darkred cterm=bold gui=bold guifg=Black guibg=Cyan
+hi IncSearch term=reverse cterm=reverse gui=reverse
+hi Search term=reverse ctermbg=White ctermfg=Black cterm=reverse guibg=Black guifg=Yellow
+hi MoreMsg term=bold ctermfg=green gui=bold guifg=#d174a8
+hi ModeMsg term=bold cterm=bold gui=bold
+hi LineNr term=underline ctermfg=darkcyan ctermbg=grey guibg=#7f7f7f gui=bold guifg=White
+hi Question term=standout ctermfg=darkgreen gui=bold guifg=#d174a8
+hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold guifg=Black guibg=White
+hi StatusLineNC term=reverse cterm=reverse gui=bold guifg=#116f6f guibg=#8f8f8f
+hi VertSplit term=reverse cterm=reverse gui=bold guifg=Black guibg=#8f8f8f
+hi Title term=bold ctermfg=green gui=bold guifg=#74ff74
+"+++ Cream:
+"hi Visual term=reverse cterm=reverse gui=reverse guifg=#3f3f3f guibg=White
+"+++
+hi VisualNOS term=bold,underline cterm=bold,underline gui=reverse guifg=#414141 guibg=Black
+hi WarningMsg term=standout ctermfg=darkred gui=bold guifg=Cyan
+hi WildMenu term=standout ctermfg=White ctermbg=darkyellow guifg=White guibg=Blue
+hi Folded term=standout ctermfg=darkblue ctermbg=grey guifg=White guibg=NONE guifg=#afcfef
+hi FoldColumn term=standout ctermfg=darkblue ctermbg=grey guifg=#ffff74 guibg=#3f3f3f
+hi DiffAdd term=bold ctermbg=darkblue guibg=Black
+hi DiffChange term=bold ctermbg=darkmagenta guibg=#124a32
+hi DiffDelete term=bold ctermfg=darkblue ctermbg=blue cterm=bold gui=bold guifg=#522719 guibg=#09172f
+hi DiffText term=reverse ctermbg=darkblue cterm=bold gui=bold guibg=#007f9f
+hi Cursor gui=reverse guifg=#bfbfef guibg=Black
+hi lCursor guifg=fg guibg=bg
+hi Match term=bold,reverse ctermbg=Blue ctermfg=Yellow cterm=bold,reverse gui=bold,reverse guifg=Blue guibg=Yellow
+
+
+" Colours for syntax highlighting
+hi Comment term=bold ctermfg=darkblue guifg=#e7e77f
+hi Constant term=underline ctermfg=darkred guifg=#3fffa7
+hi Special term=bold ctermfg=darkgreen guifg=#bfbfef
+hi Identifier term=underline ctermfg=darkcyan cterm=NONE guifg=#ef9f9f
+hi Statement term=bold ctermfg=darkred cterm=bold gui=bold guifg=#5ad5d5
+hi PreProc term=underline ctermfg=darkmagenta guifg=#74ff74
+hi Type term=underline ctermfg=green gui=bold guifg=#d174a8
+hi Ignore ctermfg=grey cterm=bold guifg=bg
+
+hi Error term=reverse ctermfg=grey ctermbg=darkred cterm=bold gui=bold guifg=Black guibg=Cyan
+hi Todo term=standout ctermfg=darkblue ctermbg=Blue guifg=Yellow guibg=Blue
+
+"+++ Cream: statusbar
+" Colours for statusbar
+"hi User1 gui=bold guifg=#565656 guibg=#0c0c0c
+"hi User2 gui=bold guifg=White guibg=#0c0c0c
+"hi User3 gui=bold guifg=Yellow guibg=#0c0c0c
+"hi User4 gui=bold guifg=Cyan guibg=#0c0c0c
+highlight User1 gui=bold guifg=#999933 guibg=#45637f
+highlight User2 gui=bold guifg=#e7e77f guibg=#45637f
+highlight User3 gui=bold guifg=Black guibg=#45637f
+highlight User4 gui=bold guifg=#33cc99 guibg=#45637f
+"+++
+
+"+++ Cream: selection
+highlight Visual gui=bold guifg=Black guibg=#aacc77
+"+++
+
+"+++ Cream: bookmarks
+highlight Cream_ShowMarksHL ctermfg=blue ctermbg=lightblue cterm=bold guifg=Black guibg=#aacc77 gui=bold
+"+++
+
+"+++ Cream: spell check
+" Colour misspelt words
+"hi BadWord ctermfg=White ctermbg=darkred cterm=bold guifg=Yellow guibg=#522719 gui=bold
+" mathematically correct:
+"highlight BadWord ctermfg=black ctermbg=lightblue gui=NONE guifg=White guibg=#003333
+" adjusted:
+highlight BadWord ctermfg=black ctermbg=lightblue gui=NONE guifg=#ff9999 guibg=#003333
+"+++
+
+
diff --git a/.vim/colors/navajo.vim b/.vim/colors/navajo.vim
new file mode 100644
index 0000000..e7eebe7
--- /dev/null
+++ b/.vim/colors/navajo.vim
@@ -0,0 +1,65 @@
+" Vim color file
+" Maintainer: R. Edward Ralston <eralston@techsan.org>
+" Last Change: 2002-01-24 09:56:48
+" URI: http://eralston.tripod.com/navajo.png
+"
+" This color scheme uses a "navajo-white" background
+"
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "navajo"
+
+" looks good on Linux
+"hi Normal ctermfg=Black guifg=Black guibg=#b39674
+"hi Normal ctermfg=Black guifg=Black guibg=NavajoWhite3
+
+" slightly brighter for w32
+hi Normal ctermfg=Black guifg=Black guibg=#ba9c80
+
+hi SpecialKey term=bold ctermfg=DarkBlue guifg=Blue
+hi NonText term=bold ctermfg=DarkBlue cterm=bold gui=bold guifg=#808080
+hi Directory term=bold ctermfg=DarkBlue guifg=Blue
+hi ErrorMsg term=standout ctermfg=Gray ctermbg=DarkRed cterm=bold gui=bold guifg=White guibg=Red
+hi IncSearch term=reverse cterm=reverse gui=reverse
+hi Search term=reverse ctermbg=Black ctermfg=White cterm=reverse guibg=White
+hi MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen
+hi ModeMsg term=bold cterm=bold gui=bold
+hi LineNr term=underline ctermfg=DarkCyan ctermbg=Gray guibg=#808080 gui=bold guifg=black
+hi Question term=standout ctermfg=DarkGreen gui=bold guifg=SeaGreen
+hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold guifg=White guibg=Black
+hi StatusLineNC term=reverse cterm=reverse gui=bold guifg=LightRed guibg=#707070
+hi VertSplit term=reverse cterm=reverse gui=bold guifg=White guibg=#707070
+hi Title term=bold ctermfg=DarkMagenta gui=bold guifg=DarkMagenta
+hi Visual term=reverse cterm=reverse gui=reverse guifg=#c0c0c0 guibg=black
+hi VisualNOS term=bold,underline cterm=bold,underline gui=reverse guifg=Grey guibg=white
+hi WarningMsg term=standout ctermfg=DarkRed gui=bold guifg=Red
+hi WildMenu term=standout ctermfg=Black ctermbg=DarkYellow guifg=Black guibg=Yellow
+hi Folded term=standout ctermfg=DarkBlue ctermbg=Gray guifg=Black guibg=NONE guifg=#907050
+hi FoldColumn term=standout ctermfg=DarkBlue ctermbg=Gray guifg=DarkBlue guibg=#c0c0c0
+hi DiffAdd term=bold ctermbg=DarkBlue guibg=White
+hi DiffChange term=bold ctermbg=DarkMagenta guibg=#edb5cd
+hi DiffDelete term=bold ctermfg=DarkBlue ctermbg=6 cterm=bold gui=bold guifg=LightBlue guibg=#f6e8d0
+hi DiffText term=reverse ctermbg=DarkRed cterm=bold gui=bold guibg=#ff8060
+hi Cursor gui=reverse guifg=#404010 guibg=white
+hi lCursor guifg=bg guibg=fg
+hi Match term=bold,reverse ctermbg=Yellow ctermfg=Blue cterm=bold,reverse gui=bold,reverse guifg=yellow guibg=blue
+
+
+" Colors for syntax highlighting
+hi Comment term=bold ctermfg=DarkBlue guifg=#181880
+hi Constant term=underline ctermfg=DarkRed guifg=#c00058
+hi Special term=bold ctermfg=DarkMagenta guifg=#404010
+hi Identifier term=underline ctermfg=DarkCyan cterm=NONE guifg=#106060
+hi Statement term=bold ctermfg=DarkRed cterm=bold gui=bold guifg=Brown
+hi PreProc term=underline ctermfg=DarkMagenta guifg=DarkMagenta
+hi Type term=underline ctermfg=DarkGreen gui=bold guifg=SeaGreen
+hi Ignore ctermfg=Gray cterm=bold guifg=bg
+hi Error term=reverse ctermfg=Gray ctermbg=DarkRed cterm=bold gui=bold guifg=White guibg=Red
+hi Todo term=standout ctermfg=DarkBlue ctermbg=Yellow guifg=Blue guibg=Yellow
+
+" vim:set list et:
diff --git a/.vim/colors/nedit.vim b/.vim/colors/nedit.vim
new file mode 100644
index 0000000..652891f
--- /dev/null
+++ b/.vim/colors/nedit.vim
@@ -0,0 +1,26 @@
+" Vim color file
+" Maintainer: Vladimir Vrzic <random@bsd.org.yu>
+" Last Change: 28. june 2003.
+" URL: http://galeb.etf.bg.ac.yu/~random/pub/vim/
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="nedit"
+
+hi Normal guifg=Black guibg=grey90
+
+hi Comment gui=italic guifg=gray20 guibg=NONE
+hi Constant gui=NONE guifg=darkGreen guibg=NONE
+hi Identifier gui=bold guifg=red guibg=NONE
+hi Statement gui=bold guifg=black guibg=NONE
+hi PreProc gui=NONE guifg=RoyalBlue4 guibg=NONE
+hi Type gui=bold guifg=brown guibg=NONE
+hi Special gui=NONE guifg=darkGreen guibg=NONE
+"hi Underlined
+"hi Ignore
+"hi Error
+"hi Todo
+
diff --git a/.vim/colors/nedit2.vim b/.vim/colors/nedit2.vim
new file mode 100644
index 0000000..54811f0
--- /dev/null
+++ b/.vim/colors/nedit2.vim
@@ -0,0 +1,29 @@
+" Vim color file based on nedit by Vladimir Vrzic <random@bsd.org.yu>
+" Maintainer: KraL <kral@paranoici.org>
+" Last Change: Friday 13 february 2004.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="nedit2"
+
+hi Normal guifg=Black guibg=grey90
+
+hi Cursor guifg=white guibg=black
+hi CursorIM guifg=black guibg=black
+
+hi Comment gui=italic guifg=Purple guibg=NONE
+hi Constant gui=NONE guifg=blue guibg=NONE
+hi Identifier gui=bold guifg=red guibg=NONE
+hi Statement gui=bold guifg=black guibg=NONE
+hi PreProc gui=NONE guifg=RoyalBlue4 guibg=NONE
+hi Type gui=bold guifg=brown guibg=NONE
+hi String gui=NONE guifg=RoyalBlue guibg=NONE
+hi Special gui=bold guifg=Magenta3 guibg=NONE
+"hi Underlined
+"hi Ignore
+"hi Error gui=NONE guifg=Red guibg=Linen
+"hi Todo
+
diff --git a/.vim/colors/neon.vim b/.vim/colors/neon.vim
new file mode 100644
index 0000000..d0ba309
--- /dev/null
+++ b/.vim/colors/neon.vim
@@ -0,0 +1,70 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/25 Fri 16:23.
+" version: 1.2
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "neon"
+
+hi Normal guifg=#f0f0f0 guibg=#303030
+
+" Search
+hi IncSearch gui=UNDERLINE guifg=#80ffff guibg=#0060c0
+hi Search gui=NONE guifg=#ffffa8 guibg=#808000
+" hi Search gui=NONE guifg=#b0ffb0 guibg=#008000
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffa0ff guibg=NONE
+hi WarningMsg gui=BOLD guifg=#ffa0ff guibg=NONE
+hi ModeMsg gui=BOLD guifg=#a0d0ff guibg=NONE
+hi MoreMsg gui=BOLD guifg=#70ffc0 guibg=#8040ff
+hi Question gui=BOLD guifg=#e8e800 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#c4c4c4
+hi StatusLineNC gui=NONE guifg=#707070 guibg=#c4c4c4
+hi VertSplit gui=NONE guifg=#707070 guibg=#c4c4c4
+hi WildMenu gui=NONE guifg=#000000 guibg=#ff80c0
+
+" Diff
+hi DiffText gui=NONE guifg=#ff78f0 guibg=#a02860
+hi DiffChange gui=NONE guifg=#e03870 guibg=#601830
+hi DiffDelete gui=NONE guifg=#a0d0ff guibg=#0020a0
+hi DiffAdd gui=NONE guifg=#a0d0ff guibg=#0020a0
+
+" Cursor
+hi Cursor gui=NONE guifg=#70ffc0 guibg=#8040ff
+hi lCursor gui=NONE guifg=#ffffff guibg=#8800ff
+hi CursorIM gui=NONE guifg=#ffffff guibg=#8800ff
+
+" Fold
+hi Folded gui=NONE guifg=#40f0f0 guibg=#006090
+hi FoldColumn gui=NONE guifg=#40c0ff guibg=#404040
+
+" Other
+hi Directory gui=NONE guifg=#c8c8ff guibg=NONE
+hi LineNr gui=NONE guifg=#707070 guibg=NONE
+hi NonText gui=BOLD guifg=#d84070 guibg=#383838
+hi SpecialKey gui=BOLD guifg=#8888ff guibg=NONE
+hi Title gui=BOLD guifg=fg guibg=NONE
+hi Visual gui=NONE guifg=#b0ffb0 guibg=#008000
+hi VisualNOS gui=NONE guifg=#ffe8c8 guibg=#c06800
+
+" Syntax group
+hi Comment gui=NONE guifg=#c0c0c0 guibg=NONE
+hi Constant gui=NONE guifg=#92d4ff guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#8000ff
+hi Identifier gui=NONE guifg=#40f8f8 guibg=NONE
+hi Ignore gui=NONE guifg=bg guibg=NONE
+hi PreProc gui=NONE guifg=#ffa8ff guibg=NONE
+hi Special gui=NONE guifg=#ffc890 guibg=NONE
+hi Statement gui=NONE guifg=#dcdc78 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#ff80d0 guibg=NONE
+hi Type gui=NONE guifg=#60f0a8 guibg=NONE
+hi Underlined gui=UNDERLINE guifg=fg guibg=NONE
diff --git a/.vim/colors/night.vim b/.vim/colors/night.vim
new file mode 100644
index 0000000..8fb7f56
--- /dev/null
+++ b/.vim/colors/night.vim
@@ -0,0 +1,70 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/13 Sun 16:59.
+" version: 2.2
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "night"
+
+hi Normal guifg=#f0f0f8 guibg=#303040
+
+" Search
+hi IncSearch gui=UNDERLINE,BOLD guifg=#f0f0f8 guibg=#d000d0
+hi Search gui=BOLD guifg=#ffd0ff guibg=#c000c0
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#f00080
+hi WarningMsg gui=BOLD guifg=#ffffff guibg=#f00080
+hi ModeMsg gui=BOLD guifg=#00e0ff guibg=NONE
+hi MoreMsg gui=BOLD guifg=#00ffdd guibg=NONE
+hi Question gui=BOLD guifg=#d0d050 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#c8c8d8
+hi StatusLineNC gui=NONE guifg=#606080 guibg=#c8c8d8
+hi VertSplit gui=NONE guifg=#606080 guibg=#c8c8d8
+hi WildMenu gui=NONE guifg=#000000 guibg=#e0e078
+
+" Diff
+hi DiffText gui=NONE guifg=#ffffff guibg=#40a060
+hi DiffChange gui=NONE guifg=#ffffff guibg=#007070
+hi DiffDelete gui=NONE guifg=#ffffff guibg=#40a0c0
+hi DiffAdd gui=NONE guifg=#ffffff guibg=#40a0c0
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#d86020
+hi lCursor gui=NONE guifg=#ffffff guibg=#e000b0
+hi CursorIM gui=NONE guifg=#ffffff guibg=#e000b0
+
+" Fold
+hi Folded gui=NONE guifg=#ffffff guibg=#9060c0
+hi FoldColumn gui=NONE guifg=#c0a0ff guibg=#404052
+
+" Other
+hi Directory gui=NONE guifg=#00ffff guibg=NONE
+hi LineNr gui=NONE guifg=#787894 guibg=NONE
+hi NonText gui=BOLD guifg=#8040ff guibg=#383848
+hi SpecialKey gui=BOLD guifg=#60a0ff guibg=NONE
+hi Title gui=BOLD guifg=#f0f0f8 guibg=#9000a0
+hi Visual gui=NONE guifg=#ffffff guibg=#c08040
+" hi VisualNOS gui=NONE guifg=#ffffff guibg=#c08040
+
+" Syntax group
+hi Comment gui=NONE guifg=#e0e070 guibg=NONE
+hi Constant gui=NONE guifg=#f0f0f8 guibg=#4830a0
+hi Error gui=BOLD guifg=#ffffff guibg=#f00080
+hi Identifier gui=NONE guifg=#ffa0ff guibg=NONE
+hi Ignore gui=NONE guifg=#303040 guibg=NONE
+hi Number gui=BOLD guifg=#b8b8c8 guibg=NONE
+hi PreProc gui=NONE guifg=#40ffa0 guibg=NONE
+hi Special gui=NONE guifg=#40f8f8 guibg=#4830a0
+hi Statement gui=BOLD guifg=#00d8f8 guibg=NONE
+hi Todo gui=BOLD guifg=#00ffe0 guibg=#0080a0
+hi Type gui=BOLD guifg=#bbaaff guibg=NONE
+hi Underlined gui=UNDERLINE,BOLD guifg=#f0f0f8 guibg=NONE
diff --git a/.vim/colors/nightshimmer.vim b/.vim/colors/nightshimmer.vim
new file mode 100644
index 0000000..53dce84
--- /dev/null
+++ b/.vim/colors/nightshimmer.vim
@@ -0,0 +1,111 @@
+" Vim color file
+" Maintainer: Niklas Lindström <nlm@valtech.se>
+" Last Change: 2002-03-22
+" Version: 0.3
+" URI: http://localhost/
+
+
+""" Init
+set background=dark
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "nightshimmer"
+
+
+""""""""\ Colors \""""""""
+
+
+"""" GUI Colors
+
+highlight Cursor gui=None guibg=Green guifg=White
+highlight CursorIM gui=bold guifg=white guibg=Green1
+highlight Directory guifg=LightSeaGreen guibg=bg
+highlight DiffAdd gui=None guifg=fg guibg=DarkCyan
+highlight DiffChange gui=None guifg=fg guibg=Green4
+highlight DiffDelete gui=None guifg=fg guibg=black
+highlight DiffText gui=bold guifg=fg guibg=bg
+highlight ErrorMsg guifg=LightYellow guibg=FireBrick
+" previously 'FillColumn':
+"highlight FillColumn gui=NONE guifg=black guibg=grey60
+highlight VertSplit gui=NONE guifg=black guibg=grey60
+highlight Folded gui=bold guibg=#305060 guifg=#b0d0e0
+highlight FoldColumn gui=bold guibg=#305060 guifg=#b0d0e0
+highlight IncSearch gui=reverse guifg=fg guibg=bg
+highlight LineNr gui=bold guibg=grey6 guifg=Purple3
+highlight ModeMsg guibg=DarkGreen guifg=LightGreen
+highlight MoreMsg gui=bold guifg=SeaGreen4 guibg=bg
+if version < 600
+ " same as SpecialKey
+ highlight NonText guibg=#123A4A guifg=#3D5D6D
+else
+ " Bottom fill (use e.g. same as LineNr)
+ highlight NonText gui=None guibg=grey6 guifg=Purple
+endif
+highlight Normal gui=None guibg=#103040 guifg=honeydew2
+highlight Question gui=bold guifg=SeaGreen2 guibg=bg
+highlight Search gui=NONE guibg=Purple4 guifg=NONE
+highlight SpecialKey guibg=#123A4A guifg=#426272
+highlight StatusLine gui=bold guibg=grey88 guifg=black
+highlight StatusLineNC gui=NONE guibg=grey60 guifg=grey10
+highlight Title gui=bold guifg=MediumOrchid1 guibg=bg
+highlight Visual gui=reverse guibg=WHITE guifg=SeaGreen
+highlight VisualNOS gui=bold,underline guifg=fg guibg=bg
+highlight WarningMsg gui=bold guifg=FireBrick1 guibg=bg
+highlight WildMenu gui=bold guibg=Chartreuse guifg=Black
+
+
+"""" Syntax Colors
+
+highlight Comment gui=reverse guifg=#507080
+"highlight Comment gui=None guifg=#507080
+
+highlight Constant guifg=Cyan guibg=bg
+ "hi String gui=None guifg=Cyan guibg=bg
+ "hi Character gui=None guifg=Cyan guibg=bg
+ highlight Number gui=None guifg=Cyan guibg=bg
+ highlight Boolean gui=bold guifg=Cyan guibg=bg
+ "hi Float gui=None guifg=Cyan guibg=bg
+
+highlight Identifier guifg=orchid1
+ "hi Function gui=None guifg=orchid1 guibg=bg
+
+highlight Statement gui=NONE guifg=LightGreen
+ highlight Conditional gui=None guifg=LightGreen guibg=bg
+ highlight Repeat gui=None guifg=SeaGreen2 guibg=bg
+ "hi Label gui=None guifg=LightGreen guibg=bg
+ highlight Operator gui=None guifg=Chartreuse guibg=bg
+ highlight Keyword gui=bold guifg=LightGreen guibg=bg
+ highlight Exception gui=bold guifg=LightGreen guibg=bg
+
+highlight PreProc guifg=MediumPurple1
+ "hi Include gui=None guifg=MediumPurple1 guibg=bg
+ "hi Define gui=None guifg=MediumPurple1g guibg=bg
+ "hi Macro gui=None guifg=MediumPurple1g guibg=bg
+ "hi PreCondit gui=None guifg=MediumPurple1g guibg=bg
+
+highlight Type gui=NONE guifg=LightBlue
+ "hi StorageClass gui=None guifg=LightBlue guibg=bg
+ "hi Structure gui=None guifg=LightBlue guibg=bg
+ "hi Typedef gui=None guifg=LightBlue guibg=bg
+
+highlight Special gui=bold guifg=White
+ "hi SpecialChar gui=bold guifg=White guibg=bg
+ "hi Tag gui=bold guifg=White guibg=bg
+ "hi Delimiter gui=bold guifg=White guibg=bg
+ "hi SpecialComment gui=bold guifg=White guibg=bg
+ "hi Debug gui=bold guifg=White guibg=bg
+
+highlight Underlined gui=underline guifg=honeydew4 guibg=bg
+
+highlight Ignore guifg=#204050
+
+highlight Error guifg=LightYellow guibg=FireBrick
+
+highlight Todo guifg=Cyan guibg=#507080
+
+""" OLD COLORS
+
+
+
diff --git a/.vim/colors/nightwish.vim b/.vim/colors/nightwish.vim
new file mode 100644
index 0000000..e9bfe55
--- /dev/null
+++ b/.vim/colors/nightwish.vim
@@ -0,0 +1,59 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file, derived from colorscheme 'murphy'
+" Maintainer: Michael Muhler <muhler AT web.de>
+" Version: 1.0
+" URL: http://home.arcor.de/muhler
+" Last Change: 2003 Apr 15
+
+"help see colortest.vim
+
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "nightwish"
+
+
+hi Comment term=bold ctermfg=LightRed guifg=Orange
+hi Constant term=underline ctermfg=LightGreen guifg=White gui=NONE
+hi Directory term=bold ctermfg=LightCyan guifg=Cyan
+hi Error term=reverse ctermbg=Red ctermfg=White guibg=Red guifg=White
+hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
+hi Identifier term=underline ctermfg=LightCyan guifg=#00ffff
+hi Ignore ctermfg=black guifg=bg
+hi IncSearch term=reverse cterm=reverse gui=reverse
+hi LineNr term=underline ctermfg=Yellow guifg=Yellow
+hi ModeMsg term=bold cterm=bold gui=bold
+hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen
+hi NonText term=bold ctermfg=Blue gui=bold guifg=Blue
+hi PreProc term=underline ctermfg=LightBlue guifg=Wheat
+hi Question term=standout ctermfg=LightGreen gui=bold guifg=Cyan
+hi Search term=reverse guifg=white guibg=Blue
+hi Special term=bold ctermfg=LightRed guifg=magenta
+hi SpecialKey term=bold ctermfg=LightBlue guifg=Cyan
+hi Statement term=bold ctermfg=Yellow guifg=#ffff00 gui=NONE
+hi StatusLine term=reverse,bold cterm=reverse gui=NONE guifg=White guibg=darkblue
+hi StatusLineNC term=reverse cterm=reverse gui=NONE guifg=white guibg=#333333
+hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Pink
+hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=Yellow
+hi Type ctermfg=LightGreen guifg=grey gui=none
+hi Visual term=reverse cterm=reverse gui=NONE guifg=white guibg=darkgreen
+hi WarningMsg term=standout ctermfg=LightRed guifg=Red
+
+hi Normal ctermbg=Black ctermfg=lightgreen guibg=Black guifg=#a0a0ff
+hi Cursor guifg=bg guibg=Green
+hi String term=underline cterm=bold ctermfg=magenta guifg=#ffa0a0
+hi Repeat term=underline ctermfg=Magenta guifg=Red
+hi Delimiter term=standout ctermfg=Blue guifg=#00ff88
+hi Label term=standout ctermfg=DarkYellow guifg=DarkYellow
+hi Keyword term=standout ctermfg=Green guifg=Green
+hi Operator term=standout ctermfg=Yellow guifg=#ff5555
+hi Exception term=standout ctermfg=Magenta guifg=#ff0dd5
+hi Tag term=standout ctermfg=Green guifg=#55ff0d
+
+" missing items in murphy
+hi Scrollbar guifg=darkcyan guibg=cyan
+hi Menu guifg=black guibg=cyan
+hi link Conditional Repeat
diff --git a/.vim/colors/northsky.vim b/.vim/colors/northsky.vim
new file mode 100644
index 0000000..e705ae4
--- /dev/null
+++ b/.vim/colors/northsky.vim
@@ -0,0 +1,70 @@
+" Vim color file based on bluegreen
+" Maintainer: Sergey Khorev
+" Last Change:
+" URL:
+
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="northsky"
+
+hi Normal guifg=white guibg=#061A3E
+
+" Search
+"hi Search guibg=#A28D68 guifg=bg gui=none
+"hi Search guibg=#4668A1 guifg=bg gui=none
+hi Search guibg=#3D5B8C guifg=yellow gui=none
+hi IncSearch guifg=bg guibg=cyan gui=bold
+
+" highlight groups
+hi Cursor guibg=#D74141 guifg=#e3e3e3
+hi VertSplit guibg=#C0FFFF guifg=#075554 gui=none
+hi Folded guifg=plum1 guibg=#061A3E
+hi FoldColumn guibg=#800080 guifg=tan
+hi ModeMsg guifg=#404040 guibg=#C0C0C0
+hi MoreMsg guifg=darkturquoise guibg=#188F90
+hi NonText guibg=#334C75 guifg=#9FADC5
+hi Question guifg=#F4BB7E
+
+hi SpecialKey guifg=#BF9261
+hi StatusLine guibg=#067C7B guifg=cyan gui=none
+hi StatusLineNC guibg=#004443 guifg=DimGrey gui=none
+hi Title guifg=#8DB8C3
+"hi Visual gui=bold guifg=black guibg=#C0FFC0
+hi Visual gui=bold guifg=black guibg=#84AF84
+hi WarningMsg guifg=#F60000 gui=underline
+
+" syntax highlighting groups
+hi Comment guifg=DarkGray
+hi Constant guifg=#72A5E4 gui=bold
+hi Number guifg=chartreuse2 gui=bold
+hi Identifier guifg=#ADCBF1
+hi Statement guifg=yellow
+hi PreProc guifg=#14967C
+hi Type guifg=#FFAE66
+hi Special guifg=#EEBABA
+hi Ignore guifg=grey60
+hi Todo guibg=#9C8C84 guifg=#244C0A
+hi Label guifg=#ffc0c0
+
+" Vim defaults
+hi ErrorMsg guifg=White guibg=Red
+hi DiffAdd guibg=DarkBlue
+hi DiffChange guibg=aquamarine4
+hi DiffDelete gui=bold guifg=Yellow guibg=DarkBlue
+hi DiffText gui=bold guibg=firebrick3
+hi Directory guifg=Cyan
+hi LineNr guifg=DarkGreen
+hi WildMenu guifg=Black guibg=Yellow
+" hi lCursor guifg=bg guibg=fg
+hi lCursor guibg=SeaGreen1 guifg=NONE
+hi Underlined gui=underline guifg=#80a0ff
+hi Error guifg=White guibg=Red
diff --git a/.vim/colors/nuvola.vim b/.vim/colors/nuvola.vim
new file mode 100644
index 0000000..f9a608a
--- /dev/null
+++ b/.vim/colors/nuvola.vim
@@ -0,0 +1,107 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+" Maintainer: Dr. J. Pfefferl <johann.pfefferl@agfa.com>
+" Source: $Source: /MISC/projects/cvsroot/user/pfefferl/vim/colors/nuvola.vim,v $
+" Id: $Id: nuvola.vim,v 1.14 2003/08/11 14:03:28 pfefferl Exp $
+" Last Change: $Date: 2003/08/11 14:03:28 $
+
+" Intro {{{1
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "nuvola"
+
+" Normal {{{1
+hi Normal ctermfg=black ctermbg=NONE guifg=black guibg=#F9F5F9
+
+" Search {{{1
+hi IncSearch cterm=UNDERLINE ctermfg=Black ctermbg=brown gui=UNDERLINE guifg=Black guibg=#FFE568
+hi Search term=reverse cterm=UNDERLINE ctermfg=Black ctermbg=brown gui=NONE guifg=Black guibg=#FFE568
+
+" Messages {{{1
+hi ErrorMsg gui=BOLD guifg=#EB1513 guibg=NONE
+hi! link WarningMsg ErrorMsg
+hi ModeMsg gui=BOLD guifg=#0070ff guibg=NONE
+hi MoreMsg guibg=NONE guifg=seagreen
+hi! link Question MoreMsg
+
+" Split area {{{1
+hi StatusLine term=BOLD,reverse cterm=NONE ctermfg=Yellow ctermbg=DarkGray gui=BOLD guibg=#56A0EE guifg=white
+hi StatusLineNC gui=NONE guibg=#56A0EE guifg=#E9E9F4
+hi! link VertSplit StatusLineNC
+hi WildMenu gui=UNDERLINE guifg=#56A0EE guibg=#E9E9F4
+
+" Diff {{{1
+hi DiffText gui=NONE guifg=#f83010 guibg=#ffeae0
+hi DiffChange gui=NONE guifg=#006800 guibg=#d0ffd0
+hi DiffDelete gui=NONE guifg=#2020ff guibg=#c8f2ea
+hi! link DiffAdd DiffDelete
+
+" Cursor {{{1
+hi Cursor gui=none guifg=black guibg=orange
+"hi lCursor gui=NONE guifg=#f8f8f8 guibg=#8000ff
+hi CursorIM gui=NONE guifg=#f8f8f8 guibg=#8000ff
+
+" Fold {{{1
+hi Folded gui=NONE guibg=#B5EEB5 guifg=black
+"hi FoldColumn gui=NONE guibg=#9FD29F guifg=black
+hi! link FoldColumn Folded
+
+" Other {{{1
+hi Directory gui=NONE guifg=#0000ff guibg=NONE
+hi LineNr gui=NONE guifg=#8080a0 guibg=NONE
+hi NonText gui=BOLD guifg=#4000ff guibg=#EFEFF7
+"hi SpecialKey gui=NONE guifg=#A35B00 guibg=NONE
+hi Title gui=BOLD guifg=#1014AD guibg=NONE
+hi Visual term=reverse ctermfg=yellow ctermbg=black gui=NONE guifg=Black guibg=#BDDFFF
+hi VisualNOS term=reverse ctermfg=yellow ctermbg=black gui=UNDERLINE guifg=Black guibg=#BDDFFF
+
+" Syntax group {{{1
+hi Comment term=BOLD ctermfg=darkgray guifg=#3F6B5B
+hi Constant term=UNDERLINE ctermfg=red guifg=#B91F49
+hi Error term=REVERSE ctermfg=15 ctermbg=9 guibg=Red guifg=White
+hi Identifier term=UNDERLINE ctermfg=Blue guifg=Blue
+hi Number term=UNDERLINE ctermfg=red gui=NONE guifg=#00C226
+hi PreProc term=UNDERLINE ctermfg=darkblue guifg=#1071CE
+hi Special term=BOLD ctermfg=darkmagenta guifg=red2
+hi Statement term=BOLD ctermfg=DarkRed gui=NONE guifg=#F06F00
+hi Tag term=BOLD ctermfg=DarkGreen guifg=DarkGreen
+hi Todo term=STANDOUT ctermbg=Yellow ctermfg=blue guifg=Blue guibg=Yellow
+hi Type term=UNDERLINE ctermfg=Blue gui=NONE guifg=Blue
+hi! link String Constant
+hi! link Character Constant
+hi! link Boolean Constant
+hi! link Float Number
+hi! link Function Identifier
+hi! link Conditional Statement
+hi! link Repeat Statement
+hi! link Label Statemengreen
+hi! link Operator Statement
+hi! link Keyword Statement
+hi! link Exception Statement
+hi! link Include PreProc
+hi! link Define PreProc
+hi! link Macro PreProc
+hi! link PreCondit PreProc
+hi! link StorageClass Type
+hi! link Structure Type
+hi! link Typedef Type
+hi! link SpecialChar Special
+hi! link Delimiter Special
+hi! link SpecialComment Special
+hi! link Debug Special
+
+" HTML {{{1
+hi htmlLink gui=UNDERLINE guifg=#0000ff guibg=NONE
+hi htmlBold gui=BOLD
+hi htmlBoldItalic gui=BOLD,ITALIC
+hi htmlBoldUnderline gui=BOLD,UNDERLINE
+hi htmlBoldUnderlineItalic gui=BOLD,UNDERLINE,ITALIC
+hi htmlItalic gui=ITALIC
+hi htmlUnderline gui=UNDERLINE
+hi htmlUnderlineItalic gui=UNDERLINE,ITALIC
+
+" vim600:foldmethod=marker
diff --git a/.vim/colors/oceanblack.vim b/.vim/colors/oceanblack.vim
new file mode 100644
index 0000000..e6e6be3
--- /dev/null
+++ b/.vim/colors/oceanblack.vim
@@ -0,0 +1,115 @@
+" Vim color file
+" Maintainer: Chris Vertonghen <chris@vertonghen.org>
+" Last Change: 2003-03-25
+" Version: 0.1
+" based on Tom Regner's oceanblue.vim
+
+""" Init
+set background=dark
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "oceanblack"
+
+
+""""""""\ Colors \""""""""
+
+
+"""" GUI Colors
+
+highlight Cursor gui=None guibg=PaleTurquoise3 guifg=White
+highlight CursorIM gui=bold guifg=white guibg=PaleTurquoise3
+highlight Directory guifg=LightSeaGreen guibg=bg
+highlight DiffAdd gui=None guifg=fg guibg=DarkCyan
+highlight DiffChange gui=None guifg=fg guibg=Green4
+highlight DiffDelete gui=None guifg=fg guibg=black
+highlight DiffText gui=bold guifg=fg guibg=bg
+highlight ErrorMsg guifg=LightYellow guibg=FireBrick
+" previously 'FillColumn':
+"highlight FillColumn gui=NONE guifg=black guibg=grey60
+highlight VertSplit gui=NONE guifg=black guibg=grey60
+highlight Folded gui=bold guibg=#305060 guifg=#b0d0e0
+highlight FoldColumn gui=None guibg=#305060 guifg=#b0d0e0
+highlight IncSearch gui=reverse guifg=fg guibg=bg
+"highlight LineNr guibg=grey6 guifg=LightSkyBlue3
+highlight LineNr guibg=grey6 guifg=#777777
+highlight ModeMsg guibg=DarkGreen guifg=LightGreen
+highlight MoreMsg gui=bold guifg=SeaGreen4 guibg=bg
+if version < 600
+ " same as SpecialKey
+ highlight NonText guibg=#123A4A guifg=#3D5D6D
+else
+ " Bottom fill (use e.g. same as LineNr)
+ highlight NonText gui=None guibg=#000000 guifg=LightSkyBlue
+endif
+highlight Normal gui=None guibg=#000000 guifg=honeydew2
+highlight Question gui=bold guifg=SeaGreen2 guibg=bg
+highlight Search gui=NONE guibg=LightSkyBlue4 guifg=NONE
+highlight SpecialKey guibg=#103040 guifg=#324262
+highlight StatusLine gui=bold guibg=grey88 guifg=black
+highlight StatusLineNC gui=NONE guibg=grey60 guifg=grey10
+highlight Title gui=bold guifg=MediumOrchid1 guibg=bg
+highlight Visual gui=reverse guibg=WHITE guifg=SeaGreen
+highlight VisualNOS gui=bold,underline guifg=fg guibg=bg
+highlight WarningMsg gui=bold guifg=FireBrick1 guibg=bg
+highlight WildMenu gui=bold guibg=Chartreuse guifg=Black
+
+
+"""" Syntax Colors
+
+"highlight Comment gui=reverse guifg=#507080
+"highlight Comment gui=None guifg=#507080
+highlight Comment gui=None guifg=#7C7268
+
+highlight Constant guifg=cyan3 guibg=bg
+"hi String gui=None guifg=turquoise2 guibg=bg
+hi String gui=None guifg=#80a0ff guibg=bg
+ "hi Character gui=None guifg=Cyan guibg=bg
+ "highlight Number gui=None guifg=Cyan guibg=bg
+ highlight Number gui=None guifg=Cyan guibg=black
+ highlight Boolean gui=bold guifg=Cyan guibg=bg
+ "hi Float gui=None guifg=Cyan guibg=bg
+
+highlight Identifier guifg=LightSkyBlue3
+hi Function gui=None guifg=DarkSeaGreen3 guibg=bg
+
+highlight Statement gui=NONE guifg=LightGreen
+ highlight Conditional gui=None guifg=LightGreen guibg=bg
+ highlight Repeat gui=None guifg=SeaGreen2 guibg=bg
+ "hi Label gui=None guifg=LightGreen guibg=bg
+ highlight Operator gui=None guifg=Chartreuse guibg=bg
+ highlight Keyword gui=None guifg=LightGreen guibg=bg
+ highlight Exception gui=None guifg=LightGreen guibg=bg
+
+highlight PreProc guifg=SkyBlue1
+hi Include gui=None guifg=LightSteelBlue3 guibg=bg
+hi Define gui=None guifg=LightSteelBlue2 guibg=bg
+hi Macro gui=None guifg=LightSkyBlue3 guibg=bg
+hi PreCondit gui=None guifg=LightSkyBlue2 guibg=bg
+
+highlight Type gui=NONE guifg=LightBlue
+hi StorageClass gui=None guifg=LightBlue guibg=bg
+hi Structure gui=None guifg=LightBlue guibg=bg
+hi Typedef gui=None guifg=LightBlue guibg=bg
+
+"highlight Special gui=bold guifg=aquamarine3
+highlight Special guifg=#999999
+ "hi SpecialChar gui=bold guifg=White guibg=bg
+ "hi Tag gui=bold guifg=White guibg=bg
+ "hi Delimiter gui=bold guifg=White guibg=bg
+ "hi SpecialComment gui=bold guifg=White guibg=bg
+ "hi Debug gui=bold guifg=White guibg=bg
+
+highlight Underlined gui=underline guifg=honeydew4 guibg=bg
+
+highlight Ignore guifg=#204050
+
+highlight Error guifg=LightYellow guibg=FireBrick
+
+highlight Todo guifg=Cyan guibg=#507080
+
+""" OLD COLORS
+
+
+
diff --git a/.vim/colors/oceandeep.vim b/.vim/colors/oceandeep.vim
new file mode 100644
index 0000000..c19b2c0
--- /dev/null
+++ b/.vim/colors/oceandeep.vim
@@ -0,0 +1,111 @@
+" Vim color file
+" Maintainer: Tom Regner <regner@dievision.de>
+" Last Change: 2002-12-05
+" Version: 1.1
+" URL: http://vim.sourceforge.net/script.php?script_id=368
+
+
+""" Init
+set background=dark
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "oceandeep"
+
+
+""""""""\ Colors \""""""""
+
+
+"""" GUI Colors
+
+highlight Cursor gui=None guibg=PaleTurquoise3 guifg=White
+highlight CursorIM gui=bold guifg=white guibg=PaleTurquoise3
+highlight Directory guifg=LightSeaGreen guibg=bg
+highlight DiffAdd gui=None guifg=fg guibg=DarkCyan
+highlight DiffChange gui=None guifg=fg guibg=Green4
+highlight DiffDelete gui=None guifg=fg guibg=black
+highlight DiffText gui=bold guifg=fg guibg=bg
+highlight ErrorMsg guifg=LightYellow guibg=FireBrick
+" previously 'FillColumn':
+"highlight FillColumn gui=NONE guifg=black guibg=grey60
+highlight VertSplit gui=NONE guifg=black guibg=grey60
+highlight Folded gui=bold guibg=#305060 guifg=#b0d0e0
+highlight FoldColumn gui=bold guibg=#305060 guifg=#b0d0e0
+highlight IncSearch gui=reverse guifg=fg guibg=bg
+highlight LineNr gui=bold guibg=grey6 guifg=LightSkyBlue3
+highlight ModeMsg guibg=DarkGreen guifg=LightGreen
+highlight MoreMsg gui=bold guifg=SeaGreen4 guibg=bg
+if version < 600
+ " same as SpecialKey
+ highlight NonText guibg=#123A4A guifg=#3D5D6D
+else
+ " Bottom fill (use e.g. same as LineNr)
+ highlight NonText gui=None guibg=#103040 guifg=LightSkyBlue
+endif
+highlight Normal gui=None guibg=#103040 guifg=honeydew2
+highlight Question gui=bold guifg=SeaGreen2 guibg=bg
+highlight Search gui=NONE guibg=LightSkyBlue4 guifg=NONE
+highlight SpecialKey guibg=#103040 guifg=#324262
+highlight StatusLine gui=bold guibg=grey88 guifg=black
+highlight StatusLineNC gui=NONE guibg=grey60 guifg=grey10
+highlight Title gui=bold guifg=MediumOrchid1 guibg=bg
+highlight Visual gui=reverse guibg=WHITE guifg=SeaGreen
+highlight VisualNOS gui=bold,underline guifg=fg guibg=bg
+highlight WarningMsg gui=bold guifg=FireBrick1 guibg=bg
+highlight WildMenu gui=bold guibg=Chartreuse guifg=Black
+
+
+"""" Syntax Colors
+
+"highlight Comment gui=reverse guifg=#507080
+highlight Comment gui=None guifg=#507080
+
+highlight Constant guifg=cyan3 guibg=bg
+hi String gui=None guifg=turquoise2 guibg=bg
+ "hi Character gui=None guifg=Cyan guibg=bg
+ highlight Number gui=None guifg=Cyan guibg=bg
+ highlight Boolean gui=bold guifg=Cyan guibg=bg
+ "hi Float gui=None guifg=Cyan guibg=bg
+
+highlight Identifier guifg=LightSkyBlue3
+hi Function gui=None guifg=DarkSeaGreen3 guibg=bg
+
+highlight Statement gui=NONE guifg=LightGreen
+ highlight Conditional gui=None guifg=LightGreen guibg=bg
+ highlight Repeat gui=None guifg=SeaGreen2 guibg=bg
+ "hi Label gui=None guifg=LightGreen guibg=bg
+ highlight Operator gui=None guifg=Chartreuse guibg=bg
+ highlight Keyword gui=bold guifg=LightGreen guibg=bg
+ highlight Exception gui=bold guifg=LightGreen guibg=bg
+
+highlight PreProc guifg=SkyBlue1
+hi Include gui=None guifg=LightSteelBlue3 guibg=bg
+hi Define gui=None guifg=LightSteelBlue2 guibg=bg
+hi Macro gui=None guifg=LightSkyBlue3 guibg=bg
+hi PreCondit gui=None guifg=LightSkyBlue2 guibg=bg
+
+highlight Type gui=NONE guifg=LightBlue
+hi StorageClass gui=None guifg=LightBlue guibg=bg
+hi Structure gui=None guifg=LightBlue guibg=bg
+hi Typedef gui=None guifg=LightBlue guibg=bg
+
+highlight Special gui=bold guifg=aquamarine3
+ "hi SpecialChar gui=bold guifg=White guibg=bg
+ "hi Tag gui=bold guifg=White guibg=bg
+ "hi Delimiter gui=bold guifg=White guibg=bg
+ "hi SpecialComment gui=bold guifg=White guibg=bg
+ "hi Debug gui=bold guifg=White guibg=bg
+
+highlight Underlined gui=underline guifg=honeydew4 guibg=bg
+
+highlight Ignore guifg=#204050
+
+highlight Error guifg=LightYellow guibg=FireBrick
+
+highlight Todo guifg=Cyan guibg=#507080
+
+""" OLD COLORS
+
+
+
diff --git a/.vim/colors/oceanlight.vim b/.vim/colors/oceanlight.vim
new file mode 100644
index 0000000..08fb22e
--- /dev/null
+++ b/.vim/colors/oceanlight.vim
@@ -0,0 +1,105 @@
+" Vim color file
+" Maintainer: Håkan Wikström <hakan@wikstrom.st>
+" Last Change: 2005-01-06
+" Version: 0.1
+" URL:
+" Originally based on oceandeep by Tom Regner (Vim script #368)
+
+
+""" Init
+set background=light
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "oceanlight"
+
+
+""""""""\ Colors \""""""""
+
+
+"""" GUI Colors
+
+highlight Cursor gui=None guibg=PaleTurquoise3 guifg=White
+highlight CursorIM gui=none guifg=white guibg=PaleTurquoise3
+highlight Directory guifg=SeaGreen guibg=bg
+highlight DiffAdd gui=None guifg=SteelBlue guibg=LightGray
+highlight DiffChange gui=None guifg=fg guibg=CadetBlue
+highlight DiffDelete gui=None guifg=LightGray guibg=SteelBlue
+highlight DiffText gui=none guifg=fg guibg=bg
+highlight ErrorMsg guifg=FireBrick guibg=bg
+highlight VertSplit gui=NONE guifg=black guibg=grey60
+highlight Folded gui=none guibg=LightSteelBlue guifg=SteelBlue
+highlight FoldColumn gui=none guibg=LightSteelBLue guifg=SteelBlue
+highlight IncSearch gui=reverse guifg=fg guibg=bg
+highlight LineNr gui=none guibg=#d3d3d3 guifg=#5daf83
+highlight ModeMsg guibg=CadetBlue guifg=LightGrey
+highlight MoreMsg gui=none guifg=CadetBlue guibg=bg
+if version < 600
+ " same as SpecialKey
+ highlight NonText guibg=#d3d3d3 guifg=#3D5D6D
+else
+ " Bottom fill (use e.g. same as LineNr)
+ highlight NonText gui=None guibg=#d3d3d3 guifg=#5daf83
+endif
+highlight Normal gui=None guibg=#f5f5f5 guifg=DimGray
+highlight Question gui=none guifg=SeaGreen2 guibg=bg
+highlight Search gui=NONE guibg=SlateGray2 guifg=NONE
+highlight SpecialKey guibg=LightGray guifg=CadetBlue
+highlight StatusLine gui=none guibg=SlateGrey guifg=LightGrey
+highlight StatusLineNC gui=NONE guibg=LightGrey guifg=SlateGrey
+highlight Title gui=none guifg=MediumOrchid1 guibg=bg
+highlight Visual gui=reverse guibg=slategray4 guifg=SlateGray2
+highlight VisualNOS gui=none,underline guifg=fg guibg=bg
+highlight WarningMsg gui=none guifg=FireBrick1 guibg=bg
+highlight WildMenu gui=none guibg=Chartreuse guifg=Black
+
+
+"""" Syntax Colors
+
+"highlight Comment gui=reverse guifg=#507080
+highlight Comment gui=None guifg=LightSteelBlue
+
+highlight Constant guifg=#483d8b guibg=bg
+hi String gui=None guifg=MediumAquamarine guibg=bg
+ "hi Character gui=None guifg=Cyan guibg=bg
+ highlight Number gui=None guifg=MediumSeaGreen guibg=bg
+ highlight Boolean gui=none guifg=DarkSeaGreen guibg=bg
+ "hi Float gui=None guifg=Cyan guibg=bg
+
+highlight Identifier guifg=CornflowerBlue
+hi Function gui=None guifg=DarkSeaGreen guibg=bg
+
+highlight Statement gui=NONE guifg=SeaGreen
+ highlight Conditional gui=None guifg=#5daf83 guibg=bg
+ highlight Repeat gui=None guifg=#5daf83 guibg=bg
+ "hi Label gui=None guifg=seagreen guibg=bg
+ highlight Operator gui=None guifg=LightSlateBlue guibg=bg
+ highlight Keyword gui=none guifg=SeaGreen guibg=bg
+ highlight Exception gui=none guifg=SeaGreen guibg=bg
+
+highlight PreProc guifg=SkyBlue1
+hi Include gui=None guifg=SteelBlue guibg=bg
+hi Define gui=None guifg=LightSteelBlue2 guibg=bg
+hi Macro gui=None guifg=LightSkyBlue3 guibg=bg
+hi PreCondit gui=None guifg=LightSkyBlue2 guibg=bg
+
+highlight Type gui=NONE guifg=SteelBlue
+hi StorageClass gui=None guifg=SteelBlue guibg=bg
+hi Structure gui=None guifg=SteelBlue guibg=bg
+hi Typedef gui=None guifg=SteelBlue guibg=bg
+
+highlight Special gui=none guifg=aquamarine3
+ "hi SpecialChar gui=none guifg=White guibg=bg
+ "hi Tag gui=none guifg=White guibg=bg
+ "hi Delimiter gui=none guifg=White guibg=bg
+ "hi SpecialComment gui=none guifg=White guibg=bg
+ "hi Debug gui=none guifg=White guibg=bg
+
+highlight Underlined gui=underline guifg=honeydew4 guibg=bg
+
+highlight Ignore guifg=#204050
+
+highlight Error guifg=FireBrick gui=Bold guibg=bg
+
+highlight Todo guifg=LightSkyBlue guibg=SlateGray
diff --git a/.vim/colors/olive.vim b/.vim/colors/olive.vim
new file mode 100644
index 0000000..26dcd2c
--- /dev/null
+++ b/.vim/colors/olive.vim
@@ -0,0 +1,119 @@
+" Vim color file
+" Maintainer: Charles <cherry_avium@yahoo.com>
+" Last Change: 11 June 2004
+" URL: http://
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="olive"
+
+"=======================================================
+hi Normal guifg=#D9D9C3 guibg=#333300
+hi Cursor guifg=black guibg=white
+hi CursorIM guifg=black guibg=green
+hi Directory guifg=gold gui=underline
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg guibg=indianred
+"hi VertSplit guifg=gold
+hi Folded guifg=khaki guibg=darkolivegreen gui=underline
+hi FoldColumn guifg=khaki guibg=darkolivegreen gui=none
+hi IncSearch guifg=black guibg=khaki
+hi LineNr guifg=gray80
+hi ModeMsg guifg=greenyellow gui=bold
+hi MoreMsg guifg=greenyellow gui=bold
+"hi NonText guibg=black
+hi Question guifg=yellowgreen gui=NONE
+hi Search guifg=black guibg=khaki gui=NONE
+hi SpecialKey guifg=black guibg=darkkhaki
+hi StatusLine guifg=palegoldenrod guibg=#808000 gui=none
+hi StatusLineNC guifg=gray guibg=darkolivegreen gui=none
+hi Title guifg=gold gui=bold
+hi Visual guifg=black guibg=darkkhaki gui=NONE
+"hi VisualNOS
+hi WarningMsg guifg=palevioletred
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+
+" ============================================================
+" syntax highlighting groups
+" ============================================================
+hi Comment guifg=darkkhaki guibg=#4C4C00 gui=underline
+
+hi Constant guifg=navajowhite
+hi String guifg=greenyellow
+"hi Character
+"hi Number
+"hi Boolean
+"hi Float
+
+hi Identifier guifg=lightsteelblue
+" hi Function guibg=gray60
+
+hi Statement guifg=darkseagreen gui=bold
+"hi Conditional
+"hi Repeat
+"hi Label
+hi Operator guifg=gold
+"hi Keyword
+"hi Exception
+
+hi PreProc guifg=sandybrown gui=bold
+"hi Include
+"hi Define
+"hi Macro
+"hi PreCondit
+
+hi Type guifg=goldenrod
+"hi StorageClass
+"hi Structure
+"hi Typedef
+
+hi Special guifg=navajowhite gui=underline
+"hi SpecialChar
+"hi Tag
+"hi Delimiter
+"hi SpecialComment
+"hi Debug
+
+hi Underlined gui=underline
+
+hi Ignore guifg=black
+
+hi Error guifg=white
+
+hi Todo guifg=black guibg=gold gui=NONE
+
+" =================================================================
+" Language specific color
+" =================================================================
+
+" C / C++
+hi cIncluded guifg=yellowgreen
+
+" HTML
+hi Title guifg=palegoldenrod
+
+" VIM
+hi VimError guifg=red gui=bold
+hi VimOption guifg=gold
+
+" TeX / LaTeX
+hi texSection guifg=greenyellow
+" tex between { and }
+hi texMatcher guifg=yellowgreen gui=none
+hi texMath gui=none
+
diff --git a/.vim/colors/papayawhip.vim b/.vim/colors/papayawhip.vim
new file mode 100644
index 0000000..5f8725a
--- /dev/null
+++ b/.vim/colors/papayawhip.vim
@@ -0,0 +1,31 @@
+" Vim color file
+" Maintainer: Gerald S. Williams
+" Last Change: 2003 Apr 17
+
+" A nice light background (you guessed it, PapayaWhip) that's relatively easy
+" on the eyes yet very usable. Not nearly as "puffy" as peachpuff.
+"
+" Only values that differ from defaults are specified.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "PapayaWhip"
+
+hi Normal guifg=#3f1f1f guibg=PapayaWhip ctermbg=Gray ctermfg=Black
+hi NonText guibg=Moccasin guifg=Brown ctermfg=Brown
+hi LineNr guibg=Moccasin
+hi DiffDelete guibg=LightRed guifg=Black ctermbg=DarkRed ctermfg=White
+hi DiffAdd guibg=LightGreen ctermbg=DarkGreen ctermfg=White
+hi DiffChange guibg=LightCyan3 ctermbg=DarkCyan ctermfg=White
+hi DiffText gui=NONE guibg=Gray80 ctermbg=DarkCyan ctermfg=Yellow
+hi Comment guifg=MediumBlue
+hi Constant guifg=DeepPink
+hi PreProc guifg=DarkMagenta
+hi StatusLine guibg=White guifg=#5f3705 cterm=bold ctermbg=Brown ctermfg=White
+hi StatusLineNC gui=None guibg=Gray
+hi VertSplit gui=None guibg=Gray
+hi Identifier guifg=#005f5f
+hi Statement ctermfg=DarkRed
diff --git a/.vim/colors/potts.vim b/.vim/colors/potts.vim
new file mode 100644
index 0000000..79bc5e9
--- /dev/null
+++ b/.vim/colors/potts.vim
@@ -0,0 +1,53 @@
+" -*- vim -*-
+" FILE: "/home/dp/.vim/colors/potts2.vim" {{{
+" LAST MODIFICATION: "Fri, 08 Feb 2002 09:47:10 (dp)"
+" (C) 2001 by Douglas L. Potts, <dlpotts@spectral-sys.com>
+" $Id: potts2.vim,v 1.3 2002/02/18 20:25:27 dp Exp $ }}}
+
+set background=dark
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="potts2"
+
+highlight SpecialKey term=bold ctermfg=9 guifg=Cyan
+highlight NonText term=bold ctermfg=9 gui=bold guifg=green
+highlight Directory term=bold ctermfg=11 guifg=Cyan
+highlight ErrorMsg term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red
+highlight IncSearch term=reverse cterm=reverse gui=reverse
+highlight Search term=reverse ctermfg=15 ctermbg=12 guifg=white guibg=Red
+highlight MoreMsg term=bold ctermfg=10 gui=bold guifg=SeaGreen
+highlight ModeMsg term=bold cterm=bold gui=bold
+highlight LineNr term=underline ctermfg=14 guifg=Yellow
+highlight Question term=standout ctermfg=10 gui=bold guifg=Green
+highlight StatusLine term=bold,reverse cterm=bold,reverse gui=bold,reverse
+highlight StatusLineNC term=reverse cterm=reverse gui=reverse
+highlight VertSplit term=reverse cterm=reverse gui=reverse
+highlight Title term=bold ctermfg=13 gui=bold guifg=Magenta
+highlight Visual term=reverse cterm=reverse gui=reverse guifg=gray guibg=black
+highlight VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline
+highlight WarningMsg term=standout ctermfg=12 guifg=Red
+highlight WildMenu term=standout ctermfg=0 ctermbg=14 guifg=Black guibg=Yellow
+highlight Folded term=standout cterm=bold ctermfg=11 guifg=cyan guibg=bg
+highlight FoldColumn term=standout cterm=bold ctermfg=11 guifg=cyan guibg=bg
+highlight DiffAdd term=bold ctermfg=10 ctermbg=9 guifg=Green guibg=Black
+highlight DiffChange term=bold ctermfg=15 ctermbg=9 guifg=White guibg=Blue
+highlight DiffDelete term=bold ctermfg=13 ctermbg=11 gui=bold guifg=Magenta guibg=Black
+highlight DiffText term=reverse cterm=bold ctermfg=15 ctermbg=12 gui=bold guifg=White guibg=Red
+highlight Cursor guifg=bg guibg=fg
+highlight lCursor guifg=bg guibg=fg
+highlight Normal guifg=gray guibg=black font='6x13'
+highlight Comment term=bold ctermfg=11 guifg=#80a0ff
+highlight Constant term=underline ctermfg=13 guifg=#ffa0a0
+highlight Special term=bold ctermfg=12 guifg=Orange
+highlight Identifier term=underline cterm=bold ctermfg=11 guifg=#40ffff
+highlight Statement term=bold ctermfg=14 gui=bold guifg=#ffff60
+highlight PreProc term=underline ctermfg=9 guifg=#ff80ff
+highlight Type term=underline ctermfg=10 gui=bold guifg=#60ff60
+highlight Underlined term=underline cterm=underline ctermfg=9 gui=underline guifg=#80a0ff
+highlight Ignore ctermfg=0 guifg=bg
+highlight Error term=reverse ctermfg=15 ctermbg=12 guifg=White guibg=Red
+highlight Todo term=standout ctermfg=0 ctermbg=14 guifg=Blue guibg=Yellow
+highlight DebugBreak ctermfg=15 ctermbg=4 guifg=white guibg=darkred
+highlight DebugStop ctermfg=15 ctermbg=10 guifg=white guibg=lightgreen
diff --git a/.vim/colors/print_bw.vim b/.vim/colors/print_bw.vim
new file mode 100644
index 0000000..4be35f4
--- /dev/null
+++ b/.vim/colors/print_bw.vim
@@ -0,0 +1,65 @@
+" Vim color file
+" Maintainer: Mike Williams <mrw@eandem.co.uk>
+" Last Change: 2nd June 2003
+" Version: 1.1
+
+" Remove all existing highlighting.
+set background=light
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "print_bw"
+
+highlight Normal cterm=NONE ctermfg=black ctermbg=white gui=NONE guifg=black guibg=white
+highlight NonText ctermfg=black ctermbg=white guifg=black guibg=white
+highlight LineNr cterm=italic ctermfg=black ctermbg=white gui=italic guifg=black guibg=white
+
+" Syntax highlighting scheme
+highlight Comment cterm=italic ctermfg=black ctermbg=white gui=italic guifg=black guibg=white
+
+highlight Constant ctermfg=black ctermbg=white guifg=black guibg=white
+highlight String ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Character ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Number ctermfg=black ctermbg=white guifg=black guibg=white
+" Boolean defaults to Constant
+highlight Float ctermfg=black ctermbg=white guifg=black guibg=white
+
+highlight Identifier ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Function ctermfg=black ctermbg=white guifg=black guibg=white
+
+highlight Statement ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Conditional ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Repeat ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Label ctermfg=black ctermbg=white guifg=black guibg=white
+highlight Operator ctermfg=black ctermbg=white guifg=black guibg=white
+" Keyword defaults to Statement
+" Exception defaults to Statement
+
+highlight PreProc cterm=bold ctermfg=black ctermbg=white gui=bold guifg=black guibg=white
+" Include defaults to PreProc
+" Define defaults to PreProc
+" Macro defaults to PreProc
+" PreCondit defaults to PreProc
+
+highlight Type cterm=bold ctermfg=black ctermbg=white gui=bold guifg=black guibg=white
+" StorageClass defaults to Type
+" Structure defaults to Type
+" Typedef defaults to Type
+
+highlight Special cterm=italic ctermfg=black ctermbg=white gui=italic guifg=black guibg=white
+" SpecialChar defaults to Special
+" Tag defaults to Special
+" Delimiter defaults to Special
+highlight SpecialComment cterm=italic ctermfg=black ctermbg=white gui=italic guifg=black guibg=white
+" Debug defaults to Special
+
+highlight Todo cterm=italic,bold ctermfg=black ctermbg=white gui=italic,bold guifg=black guibg=white
+" Ideally, the bg color would be white but VIM cannot print white on black!
+highlight Error cterm=bold,reverse ctermfg=black ctermbg=grey gui=bold,reverse guifg=black guibg=grey
+
+" vim:et:ff=unix:tw=0:ts=4:sw=4
+" EOF print_bw.vim
diff --git a/.vim/colors/ps_color.vim b/.vim/colors/ps_color.vim
new file mode 100644
index 0000000..909abcf
--- /dev/null
+++ b/.vim/colors/ps_color.vim
@@ -0,0 +1,400 @@
+" Vim colour file --- PSC
+" Maintainer: Pan Shizhu <dicpan@hotmail.com>
+" Last Change: 17 November 2004
+" Version: 2.82
+" URL: http://vim.sourceforge.net/scripts/script.php?script_id=760
+"
+" Please prepend [VIM] in the title when writing e-mail to me, or it will
+" be automatically treated as spam and removed.
+"
+" See the help document for all details, the help document will be
+" installed after the script has been sourced once, do not open the
+" script when you source it for the first time.
+"
+
+" Initializations: {{{1
+"
+function! s:init_option(var, value)
+ if !exists("g:psc_".a:var)
+ execute "let s:".a:var." = ".a:value
+ else
+ let s:{a:var} = g:psc_{a:var}
+ endif
+endfunction
+command! -nargs=+ InitOpt call s:init_option(<f-args>)
+
+function! s:multi_hi(setting, ...)
+ let l:idx = a:0
+ while l:idx > 0
+ let l:hlgroup = a:{l:idx}
+ execute "highlight ".l:hlgroup." ".a:setting
+ let l:idx = l:idx - 1
+ endwhile
+endfunction
+command! -nargs=+ MultiHi call s:multi_hi(<f-args>)
+
+InitOpt style 'cool'
+InitOpt inversed_todo 0
+InitOpt use_default_for_cterm 0
+InitOpt statement_different_from_type 0
+if s:style == 'warm'
+ InitOpt fontface 'mixed'
+else
+ InitOpt fontface 'plain'
+endif
+
+if !has("gui_running")
+ call s:init_option("cterm_style", "'".s:style."'")
+
+ " Forces 'cool' style when gui is not present Since the 'warm' style for
+ " terminal isn't available now, and probably never will be.
+ if s:cterm_style=='warm' | let s:cterm_style = 'cool'
+ endif
+ if s:use_default_for_cterm==1 | let s:cterm_style = 'default'
+ elseif s:use_default_for_cterm==2 | let s:cterm_style = 'defdark'
+ endif
+endif
+
+
+InitOpt other_style 0
+
+if has("gui_running")
+ if s:style=='warm' || s:style=='default'
+ set background=light
+ elseif s:style=='cool' || s:style=='defdark'
+ set background=dark
+ else | let s:other_style = 1
+ endif
+else
+ if s:cterm_style=='cool' || s:cterm_style=='defdark'
+ set background=dark
+ elseif s:cterm_style=='default'
+ set background=light
+ else | let s:other_style = 1
+ endif
+endif
+
+
+highlight clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let s:color_name = expand("<sfile>:t:r")
+
+if s:other_style==0 | let g:colors_name = s:color_name
+ " Go from console version to gui, the color scheme should be sourced again
+ execute "autocmd TermChanged * if g:colors_name == '".s:color_name."' | "
+ \."colo ".s:color_name." | endif"
+else
+ execute "runtime colors/".s:style.".vim"
+endif
+
+" Command to go different schemes easier.
+execute "command! -nargs=1 Colo if '".s:color_name."'!=\"<args>\" | "
+ \'let g:psc_style = "<args>"| endif | colo '.s:color_name
+
+" Give control to 'reloaded' scheme if possible
+if s:style == 'reloaded'
+ finish
+endif
+
+" }}}1
+
+" Relevant Help:
+" :h highlight-groups
+" :h psc-cterm-color-table
+" :ru syntax/hitest.vim
+"
+" Hardcoded Colors Comment:
+" #aabbcc = Red aa, Green bb, Blue cc
+" we must use hard-coded colours to get more 'tender' colours
+"
+
+
+" GUI:
+"
+" I don't want to abuse folding, but here folding is used to avoid confusion.
+if s:style=='warm'
+ " Warm style for gui here {{{2
+ " LIGHT COLOR DEFINE START
+
+ highlight Normal guifg=#000000 guibg=#e0e0e0
+ highlight Search guifg=#902000 guibg=#f8f8f8
+ highlight Visual guifg=fg guibg=#a6caf0
+ highlight Cursor guifg=#f0f0f0 guibg=#008000
+ " The idea of CursorIM is pretty good, however, the feature is still buggy
+ " in the current version (Vim 6.3).
+ " The following line will be kept commented until the bug fixed.
+ "
+ " highlight CursorIM guifg=#f0f0f0 guibg=#800080
+ highlight Special guifg=#907000 guibg=bg
+ highlight Comment guifg=#505800 guibg=bg
+ highlight Number guifg=#907000 guibg=bg
+ highlight Constant guifg=#007068 guibg=bg
+ highlight StatusLine guifg=fg guibg=#a6caf0
+ highlight LineNr guifg=#686868 guibg=bg
+ highlight Question guifg=fg guibg=#d0d090
+ highlight PreProc guifg=#009030 guibg=bg
+ if s:statement_different_from_type==1
+ highlight Statement guifg=#4020a0 guibg=bg
+ else
+ highlight Statement guifg=#2060a8 guibg=bg
+ endif
+ highlight Type guifg=#0850a0 guibg=bg
+ if s:inversed_todo==1
+ highlight Todo guifg=#e0e090 guibg=#000080
+ else
+ highlight Todo guifg=#800000 guibg=#e0e090
+ endif
+ " NOTE THIS IS IN THE WARM SECTION
+ highlight Error guifg=#c03000 guibg=bg
+ highlight Identifier guifg=#a030a0 guibg=bg
+ highlight ModeMsg guifg=fg guibg=#b0b0e0
+ highlight VisualNOS guifg=fg guibg=#b0b0e0
+ highlight SpecialKey guifg=#1050a0 guibg=bg
+ highlight NonText guifg=#002090 guibg=#d0d0d0
+ highlight Directory guifg=#a030a0 guibg=bg
+ highlight ErrorMsg guifg=fg guibg=#f0b090
+ highlight MoreMsg guifg=#489000 guibg=bg
+ highlight Title guifg=#a030a0 guibg=bg
+ highlight WarningMsg guifg=#b02000 guibg=bg
+ highlight WildMenu guifg=fg guibg=#d0d090
+ highlight Folded guifg=fg guibg=#b0e0b0
+ highlight FoldColumn guifg=fg guibg=#90e090
+ highlight DiffAdd guifg=fg guibg=#b0b0e0
+ highlight DiffChange guifg=fg guibg=#e0b0e0
+ highlight DiffDelete guifg=#002090 guibg=#d0d0d0
+ highlight DiffText guifg=fg guibg=#c0e080
+ highlight SignColumn guifg=fg guibg=#90e090
+ highlight IncSearch guifg=#f0f0f0 guibg=#806060
+ highlight StatusLineNC guifg=fg guibg=#c0c0c0
+ highlight VertSplit guifg=fg guibg=#c0c0c0
+ highlight Underlined guifg=#6a5acd guibg=bg gui=underline
+ highlight Ignore guifg=bg guibg=bg
+
+ " LIGHT COLOR DEFINE END
+ " }}}2
+elseif s:style=='cool'
+ " Cool style for gui here {{{2
+ " DARK COLOR DEFINE START
+
+ highlight Normal guifg=#d0d0d0 guibg=#202020
+ highlight Comment guifg=#d0d090 guibg=bg
+ highlight Constant guifg=#80c0e0 guibg=bg
+ highlight Number guifg=#e0c060 guibg=bg
+ highlight Identifier guifg=#f0c0f0 guibg=bg
+ if s:statement_different_from_type==1
+ highlight Statement guifg=#98a8f0 guibg=bg
+ else
+ highlight Statement guifg=#c0d8f8 guibg=bg
+ endif
+ highlight PreProc guifg=#60f080 guibg=bg
+ highlight Type guifg=#b0d0f0 guibg=bg
+ highlight Special guifg=#e0c060 guibg=bg
+ highlight Error guifg=#f08060 guibg=bg
+ if s:inversed_todo==1
+ highlight Todo guifg=#d0d090 guibg=#000080
+ else
+ highlight Todo guifg=#800000 guibg=#d0d090
+ endif
+ highlight Search guifg=#e0e0e0 guibg=#800000
+ highlight Visual guifg=#000000 guibg=#a6caf0
+ highlight Cursor guifg=#000000 guibg=#00f000
+ " NOTE THIS IS IN THE COOL SECTION
+ " highlight CursorIM guifg=#000000 guibg=#f000f0
+ highlight StatusLine guifg=#000000 guibg=#a6caf0
+ highlight LineNr guifg=#b0b0b0 guibg=bg
+ highlight Question guifg=#000000 guibg=#d0d090
+ highlight ModeMsg guifg=fg guibg=#000080
+ highlight VisualNOS guifg=fg guibg=#000080
+ highlight SpecialKey guifg=#b0d0f0 guibg=bg
+ highlight NonText guifg=#6080f0 guibg=#101010
+ highlight Directory guifg=#80c0e0 guibg=bg
+ highlight ErrorMsg guifg=#d0d090 guibg=#800000
+ highlight MoreMsg guifg=#c0e080 guibg=bg
+ highlight Title guifg=#f0c0f0 guibg=bg
+ highlight WarningMsg guifg=#f08060 guibg=bg
+ highlight WildMenu guifg=#000000 guibg=#d0d090
+ highlight Folded guifg=#d0d0d0 guibg=#004000
+ highlight FoldColumn guifg=#e0e0e0 guibg=#008000
+ highlight DiffAdd guifg=fg guibg=#000080
+ highlight DiffChange guifg=fg guibg=#800080
+ highlight DiffDelete guifg=#6080f0 guibg=#202020
+ highlight DiffText guifg=#000000 guibg=#c0e080
+ highlight SignColumn guifg=#e0e0e0 guibg=#008000
+ highlight IncSearch guifg=#000000 guibg=#d0d0d0
+ highlight StatusLineNC guifg=#000000 guibg=#c0c0c0
+ highlight VertSplit guifg=#000000 guibg=#c0c0c0
+ highlight Underlined guifg=#80a0ff guibg=bg gui=underline
+ highlight Ignore guifg=#000000 guibg=bg
+
+ " DARK COLOR DEFINE END
+ " }}}2
+elseif s:style=='defdark'
+ highlight Normal guifg=#f0f0f0 guibg=#000000
+endif
+
+" Take NT gui for example, If you want to use a console font such as
+" Lucida_Console with font size larger than 14, the font looks already thick,
+" and the bold font for that will be too thick, you may not want it be bolded.
+" The following code does this.
+"
+" All of the bold font may be disabled, since continuously switching between
+" bold and plain font hurts consistency and will inevitably fatigue your eye!
+
+" Maximum 20 parameters for vim script function
+"
+MultiHi gui=NONE ModeMsg Search Cursor Special Comment Constant Number LineNr Question PreProc Statement Type Todo Error Identifier Normal
+
+MultiHi gui=NONE VisualNOS SpecialKey NonText Directory ErrorMsg MoreMsg Title WarningMsg WildMenu Folded FoldColumn DiffAdd DiffChange DiffDelete DiffText SignColumn
+
+" For reversed stuffs
+MultiHi gui=NONE IncSearch StatusLine StatusLineNC VertSplit Visual
+
+if s:style=="cool" || s:style=="warm"
+ if s:fontface=="mixed"
+ MultiHi gui=bold IncSearch StatusLine StatusLineNC VertSplit Visual
+ endif
+else
+ if s:fontface=="mixed"
+ hi StatusLine gui=bold,reverse
+ else
+ hi StatusLine gui=reverse
+ endif
+ MultiHi gui=reverse IncSearch StatusLineNC VertSplit Visual
+endif
+
+" Enable the bold style
+if s:fontface=="mixed"
+ MultiHi gui=bold Question DiffText Statement Type MoreMsg ModeMsg NonText Title VisualNOS DiffDelete
+endif
+
+
+
+
+" Color Term:
+
+" It's not quite possible to support 'cool' and 'warm' simultaneously, since
+" we cannot expect a terminal to have more than 16 color names.
+"
+
+" I assume Vim will never go to cterm mode when has("gui_running") returns 1,
+" Please enlighten me if I am wrong.
+"
+if !has('gui_running')
+ " cterm settings {{{1
+ if s:cterm_style=='cool'
+
+ highlight Normal ctermfg=LightGrey ctermbg=Black
+ highlight Search ctermfg=White ctermbg=DarkRed
+ highlight Visual ctermfg=Black ctermbg=DarkCyan
+ highlight Cursor ctermfg=Black ctermbg=Green
+ highlight Special ctermfg=Yellow ctermbg=Black
+ highlight Comment ctermfg=DarkYellow ctermbg=Black
+ highlight Constant ctermfg=Blue ctermbg=Black
+ highlight Number ctermfg=Yellow ctermbg=Black
+ highlight StatusLine ctermfg=Black ctermbg=DarkCyan
+ highlight LineNr ctermfg=DarkGrey ctermbg=Black
+ highlight Question ctermfg=Black ctermbg=DarkYellow
+ highlight PreProc ctermfg=Green ctermbg=Black
+ highlight Statement ctermfg=Cyan ctermbg=Black
+ highlight Type ctermfg=Cyan ctermbg=Black
+ if s:inversed_todo==0
+ highlight Todo ctermfg=DarkRed ctermbg=DarkYellow
+ else
+ highlight Todo ctermfg=DarkYellow ctermbg=DarkBlue
+ endif
+ highlight Error ctermfg=Red ctermbg=Black
+ highlight Identifier ctermfg=Magenta ctermbg=Black
+ highlight Folded ctermfg=White ctermbg=DarkGreen
+ highlight ModeMsg ctermfg=Grey ctermbg=DarkBlue
+ highlight VisualNOS ctermfg=Grey ctermbg=DarkBlue
+ highlight SpecialKey ctermfg=Cyan ctermbg=Black
+ highlight NonText ctermfg=Blue ctermbg=Black
+ highlight Directory ctermfg=Blue ctermbg=Black
+ highlight ErrorMsg ctermfg=DarkYellow ctermbg=DarkRed
+ highlight MoreMsg ctermfg=Green ctermbg=Black
+ highlight Title ctermfg=Magenta ctermbg=Black
+ highlight WarningMsg ctermfg=Red ctermbg=Black
+ highlight WildMenu ctermfg=Black ctermbg=DarkYellow
+ highlight FoldColumn ctermfg=White ctermbg=DarkGreen
+ highlight SignColumn ctermfg=White ctermbg=DarkGreen
+ highlight DiffText ctermfg=Black ctermbg=DarkYellow
+ highlight DiffDelete ctermfg=Blue ctermbg=Black
+
+ if &t_Co==8
+ " 8 colour terminal support, this assumes 16 colour is available through
+ " setting the 'bold' attribute, will get bright foreground colour.
+ " However, the bright background color is not available for 8-color terms.
+ "
+ " You can manually set t_Co=16 in your .vimrc to see if your terminal
+ " supports 16 colours,
+ MultiHi cterm=none DiffText Visual Cursor Comment Todo StatusLine Question DiffChange ModeMsg VisualNOS ErrorMsg WildMenu DiffAdd Folded DiffDelete Normal
+ MultiHi cterm=bold Search Special Constant Number LineNr PreProc Statement Type Error Identifier SpecialKey NonText MoreMsg Title WarningMsg FoldColumn SignColumn Directory DiffDelete
+
+ else
+ " Background > 7 is only available with 16 or more colors
+
+ " Only use the s:fontface option when there is 16-colour(or more)
+ " terminal support
+
+ MultiHi cterm=none WarningMsg Search Visual Cursor Special Comment Constant Number LineNr PreProc Todo Error Identifier Folded SpecialKey Directory ErrorMsg Normal
+ MultiHi cterm=none WildMenu FoldColumn SignColumn DiffAdd DiffChange Question StatusLine DiffText
+ MultiHi cterm=reverse IncSearch StatusLineNC VertSplit
+
+ " Well, well, bold font with color 0-7 is not possible.
+ " So, the Question, StatusLine, DiffText cannot act as expected.
+
+ call s:multi_hi("cterm=".((s:fontface=="plain") ? "none" : "bold"), "Statement", "Type", "MoreMsg", "ModeMsg", "NonText", "Title", "VisualNOS", "DiffDelete")
+
+ endif
+
+ elseif s:cterm_style=='defdark'
+ highlight Normal ctermfg=LightGrey ctermbg=Black
+ endif
+ " }}}1
+endif
+
+
+" Term:
+" For console with only 4 colours (term, not cterm), we'll use the default.
+" ...
+" The default colorscheme is good enough for terms with no more than 4 colours
+"
+
+
+" Links:
+"
+if (s:style=='cool') || (s:style == 'warm')
+ " COLOR LINKS DEFINE START
+
+ highlight link String Constant
+ " Character must be different from strings because in many languages
+ " (especially C, C++) a 'char' variable is scalar while 'string' is pointer,
+ " mistaken a 'char' for a 'string' will cause disaster!
+ highlight link Character Number
+ highlight link SpecialChar LineNr
+ highlight link Tag Identifier
+ " The following are not standard hi links,
+ " these are used by DrChip
+ highlight link Warning MoreMsg
+ highlight link Notice Constant
+ " these are used by Calendar
+ highlight link CalToday PreProc
+ " these are used by TagList
+ highlight link MyTagListTagName IncSearch
+ highlight link MyTagListTagScope Constant
+
+ " COLOR LINKS DEFINE END
+endif
+
+
+" Clean:
+"
+delcommand InitOpt
+delcommand MultiHi
+
+" vim:et:nosta:sw=2:ts=8:
+" vim600:fdm=marker:fdl=1:
diff --git a/.vim/colors/putty.vim b/.vim/colors/putty.vim
new file mode 100644
index 0000000..4c86ad5
--- /dev/null
+++ b/.vim/colors/putty.vim
@@ -0,0 +1,82 @@
+" Vim color file
+" Maintainer: Prachya Boonkwan <kaamanita@hotmail.com>
+" Last Change: April 29, 2003
+" Licence: Public Domain
+
+" This package offers a eye-catching color scheme that resembles the
+" default color scheme of Putty telnet terminal.
+
+" First remove all existing highlighting.
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "putty"
+
+hi Normal guifg=Grey guibg=Black
+
+hi ErrorMsg guibg=Red guifg=White
+hi IncSearch gui=reverse
+hi ModeMsg gui=bold
+hi StatusLine gui=reverse,bold
+hi StatusLineNC gui=reverse
+hi VertSplit gui=reverse
+hi Visual gui=reverse guifg=Grey guibg=fg
+hi VisualNOS gui=underline,bold
+hi DiffText gui=bold guibg=Red
+hi Cursor guibg=Green guifg=NONE
+hi lCursor guibg=Cyan guifg=NONE
+hi Directory guifg=Blue
+hi LineNr guifg=#BBBB00
+hi MoreMsg gui=bold guifg=SeaGreen
+hi NonText gui=bold guifg=Blue guibg=Black
+hi Question gui=bold guifg=SeaGreen
+hi Search guibg=#BBBB00 guifg=NONE
+hi SpecialKey guifg=Blue
+hi Title gui=bold guifg=Magenta
+hi WarningMsg guifg=Red
+hi WildMenu guibg=Cyan guifg=Black
+hi Folded guibg=White guifg=DarkBlue
+hi FoldColumn guibg=Grey guifg=DarkBlue
+hi DiffAdd guibg=LightBlue
+hi DiffChange guibg=LightMagenta
+hi DiffDelete gui=bold guifg=Blue guibg=LightCyan
+
+hi Comment guifg=Blue guibg=Black
+hi Constant guifg=#BB0000 guibg=Black
+hi PreProc guifg=#BB00BB guibg=Black
+hi Statement gui=NONE guifg=#BBBB00 guibg=Black
+hi Special guifg=#BB00BB guibg=Black
+hi Ignore guifg=Grey
+hi Identifier guifg=#00BBBB guibg=Black
+hi Type guifg=#00BB00 guibg=Black
+
+hi link IncSearch Visual
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+
+" vim: sw=2
diff --git a/.vim/colors/python.vim b/.vim/colors/python.vim
new file mode 100644
index 0000000..6f4a765
--- /dev/null
+++ b/.vim/colors/python.vim
@@ -0,0 +1,104 @@
+""" Init
+set background=light
+highlight clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "python"
+
+
+""""""""\ Colors \""""""""
+
+
+"""" GUI Colors
+
+highlight Cursor gui=None guibg=Palegreen3 guifg=White
+highlight CursorIM gui=bold guifg=white guibg=PaleTurquoise3
+highlight Directory guifg=LightSeaGreen guibg=bg
+highlight DiffAdd gui=None guifg=fg guibg=DarkCyan
+highlight DiffChange gui=None guifg=fg guibg=Green4
+highlight DiffDelete gui=None guifg=fg guibg=black
+highlight DiffText gui=bold guifg=fg guibg=bg
+highlight ErrorMsg guifg=LightYellow guibg=FireBrick
+" previously 'FillColumn':
+"highlight FillColumn gui=NONE guifg=black guibg=grey60
+highlight VertSplit gui=NONE guifg=black guibg=#c8d6b3
+highlight Folded gui=bold guibg=#305060 guifg=#b0d0e0
+highlight FoldColumn gui=bold guibg=#395602 guifg=#6f9b1f
+highlight IncSearch gui=reverse guifg=fg guibg=bg
+highlight LineNr gui=bold guibg=#395602 guifg=#6f9b1f
+highlight ModeMsg guibg=DarkGreen guifg=Green
+highlight MoreMsg gui=bold guifg=SeaGreen4 guibg=bg
+if version < 600
+ " same as SpecialKey
+ highlight NonText guibg=#123A4A guifg=#3D5D6D
+else
+ " Bottom fill (use e.g. same as LineNr)
+ highlight NonText gui=None guibg=bg guifg=fg
+endif
+highlight Normal gui=None guibg=#f6ffe5 guifg=black
+highlight Question gui=bold guifg=SeaGreen2 guibg=bg
+highlight Search gui=NONE guibg=LightSkyBlue4 guifg=NONE
+highlight SpecialKey guibg=#103040 guifg=#324262
+highlight StatusLine gui=bold guibg=#c8d6b3 guifg=black
+highlight StatusLineNC gui=NONE guibg=#c8d6b3 guifg=black
+highlight Title gui=bold guifg=MediumOrchid1 guibg=bg
+highlight Visual gui=reverse guibg=WHITE guifg=SeaGreen
+highlight VisualNOS gui=bold,underline guifg=fg guibg=bg
+highlight WarningMsg gui=bold guifg=FireBrick1 guibg=bg
+highlight WildMenu gui=bold guibg=Chartreuse guifg=Black
+
+
+"""" Syntax Colors
+
+"highlight Comment gui=reverse guifg=#507080
+highlight Comment gui=italic guifg=#507080
+
+highlight Constant guifg=black guibg=bg
+hi String gui=None guifg=#ccab3f guibg=bg
+ "hi Character gui=None guifg=#969248 guibg=bg
+ highlight Number gui=None guifg=#969248 guibg=bg
+ highlight Boolean gui=bold guifg=#969248 guibg=bg
+ "hi Float gui=None guifg=#969248 guibg=bg
+
+highlight Identifier guifg=#6f9b1f
+hi Function gui=None guifg=#775d05 guibg=bg
+
+highlight Statement gui=NONE guifg=#669907
+ highlight Conditional gui=None guifg=Green guibg=bg
+ highlight Repeat gui=None guifg=SeaGreen2 guibg=bg
+ "hi Label gui=None guifg=Green guibg=bg
+ highlight Operator gui=None guifg=Chartreuse guibg=bg
+ highlight Keyword gui=bold guifg=#6f9b1f guibg=bg
+ highlight Exception gui=bold guifg=Green guibg=bg
+
+highlight PreProc guifg=SkyBlue1
+hi Include gui=None guifg=#725c05 guibg=bg
+hi Define gui=None guifg=#725c05 guibg=bg
+hi Macro gui=None guifg=#486610 guibg=bg
+hi PreCondit gui=None guifg=LightSkyBlue2 guibg=bg
+
+highlight Type gui=NONE guifg=#ccab3f
+hi StorageClass gui=None guifg=#ccab3f guibg=bg
+hi Structure gui=None guifg=#ccab3f guibg=bg
+hi Typedef gui=None guifg=#ccab3f guibg=bg
+
+highlight Special gui=bold guifg=#ddb100
+ "hi SpecialChar gui=bold guifg=White guibg=bg
+ "hi Tag gui=bold guifg=White guibg=bg
+ "hi Delimiter gui=bold guifg=White guibg=bg
+ "hi SpecialComment gui=bold guifg=White guibg=bg
+ "hi Debug gui=bold guifg=White guibg=bg
+
+highlight Underlined gui=underline guifg=honeydew4 guibg=bg
+
+highlight Ignore guifg=#204050
+
+highlight Error guifg=LightYellow guibg=FireBrick
+
+highlight Todo guifg=#969248 guibg=#507080
+
+""" OLD COLORS
+
+
+
diff --git a/.vim/colors/redblack.vim b/.vim/colors/redblack.vim
new file mode 100644
index 0000000..793af52
--- /dev/null
+++ b/.vim/colors/redblack.vim
@@ -0,0 +1,62 @@
+set background=dark
+hi clear
+
+hi Normal ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Boolean ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Character ctermbg=black guibg=black ctermfg=red guifg=red
+hi Comment ctermbg=black guibg=black ctermfg=darkgrey guifg=#606060 cterm=bold
+hi Condtional ctermbg=black guibg=black ctermfg=red guifg=red
+hi Constant ctermbg=black guibg=black ctermfg=red guifg=red
+hi Cursor ctermbg=black guibg=white ctermfg=grey guifg=grey
+hi Debug ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Define ctermbg=black guibg=black ctermfg=white guifg=white
+hi Delimiter ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi DiffAdd ctermbg=NONE guibg=NONE ctermfg=NONE guifg=NONE cterm=NONE gui=NONE
+hi DiffChange ctermbg=white guibg=white ctermfg=darkgrey guifg=#606060
+hi DiffDelete ctermbg=black guibg=black ctermfg=darkgrey guifg=#606060 cterm=bold
+hi DiffText ctermbg=red guibg=red ctermfg=white guifg=white
+hi Directory ctermbg=black guibg=black ctermfg=white guifg=white
+hi Error ctermbg=red guibg=red ctermfg=white guifg=white
+hi ErrorMsg ctermbg=red guibg=red ctermfg=white guifg=white
+hi Exception ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Float ctermbg=black guibg=black ctermfg=red guifg=red cterm=NONE gui=NONE
+hi FoldColumn ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Folded ctermbg=black guibg=black ctermfg=red guifg=red
+hi Function ctermbg=black guibg=black ctermfg=white guifg=white
+hi Identifier ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Include ctermbg=black guibg=black ctermfg=white guifg=white
+hi IncSearch ctermbg=green guibg=green ctermfg=darkgrey guifg=#606060
+hi Keyword ctermbg=black guibg=black ctermfg=red guifg=red
+hi Label ctermbg=black guibg=black ctermfg=white guifg=white
+hi LineNr ctermbg=black guibg=black ctermfg=darkgrey guifg=#606060 cterm=bold
+hi Macro ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi ModeMsg ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi MoreMsg ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi NonText ctermbg=black guibg=black ctermfg=darkgrey guifg=#606060 cterm=bold
+hi Number ctermbg=black guibg=black ctermfg=red guifg=red cterm=NONE gui=NONE
+hi Operator ctermbg=black guibg=black ctermfg=white guifg=white
+hi PreCondit ctermbg=black guibg=black ctermfg=white guifg=white
+hi PreProc ctermbg=black guibg=black ctermfg=white guifg=white
+hi Question ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Repeat ctermbg=black guibg=black ctermfg=white guifg=white
+hi Search ctermbg=black guibg=black ctermfg=green guifg=green
+hi SpecialChar ctermbg=black guibg=black ctermfg=white guifg=white
+hi SpecialComment ctermbg=black guibg=black ctermfg=white guifg=white
+hi Special ctermbg=black guibg=black ctermfg=white guifg=white
+hi SpecialKey ctermbg=white guibg=white ctermfg=black guifg=black
+hi Statement ctermbg=black guibg=black ctermfg=white guifg=white
+hi StatusLine ctermbg=white guibg=white ctermfg=red guifg=red
+hi StatusLineNC ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi StorageClass ctermbg=black guibg=black ctermfg=white guifg=white
+hi String ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Structure ctermbg=black guibg=black ctermfg=white guifg=white
+hi Tag ctermbg=black guibg=black ctermfg=red guifg=red
+hi Title ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Todo ctermbg=black guibg=black ctermfg=white guifg=white
+hi Typedef ctermbg=black guibg=black ctermfg=white guifg=white
+hi Type ctermbg=black guibg=black ctermfg=white guifg=white
+hi VertSplit ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi Visual ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi VisualNOS ctermbg=black guibg=black ctermfg=grey guifg=grey
+hi WarningMsg ctermbg=black guibg=black ctermfg=red guifg=red
+hi WildMenu ctermbg=white guibg=white ctermfg=darkgrey guifg=#606060
diff --git a/.vim/colors/relaxedgreen.vim b/.vim/colors/relaxedgreen.vim
new file mode 100644
index 0000000..6cc21df
--- /dev/null
+++ b/.vim/colors/relaxedgreen.vim
@@ -0,0 +1,114 @@
+" ----------------------------------------------------------------------------------------------------------------------------------
+" Filename: relaxedgreen.vim
+" Last Modified: 14 Aug 2006 02:24:33 PM by Dave V
+" Maintainer: Dave Vehrs (dvehrs at gmail.com)
+" Copyright: 2002,2003,2004,2005,2006 Dave Vehrs
+" This script is free software; you can redistribute it and/or
+" modify it under the terms of the GNU General Public License as
+" published by the Free Software Foundation; either version 2 of
+" the License, or (at your option) any later version.
+" Description: Vim colorscheme file.
+" Install: Put this file in the users colors directory (~/.vim/colors) or
+" in the shared colors directory (/usr/shared/vim/vim<version>/colors/),
+" then load it with :colorscheme relaxedgreen
+"
+"
+" ----------------------------------------------------------------------------------------------------------------------------------
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "relaxedgreen"
+highlight Cursor term=reverse ctermfg=green ctermbg=blue guifg=#000000 guibg=#559955
+highlight CursorIM term=reverse ctermfg=black ctermbg=darkgreen guifg=#000000 guibg=#336633
+highlight CursorColumn term=none ctermbg=darkblue guibg=#333366
+highlight CursorColumn term=none ctermbg=darkblue guibg=#333366
+highlight Comment term=italic ctermfg=darkcyan ctermbg=black guifg=#00a594
+highlight Constant term=underline ctermfg=blue guifg=#0099dd
+highlight Debug term=bold ctermfg=red ctermbg=black guifg=#dc0000 guibg=#000000
+highlight DiffAdd term=reverse ctermfg=black ctermbg=cyan guifg=#000000 guibg=#007200
+highlight DiffChange term=underline cterm=reverse ctermfg=darkgreen ctermbg=black guifg=#000000 guibg=#006700
+highlight DiffDelete term=standout ctermfg=black ctermbg=cyan guifg=#000000 guibg=#007200
+highlight DiffText term=bold ctermfg=green ctermbg=black guifg=#00ac00 guibg=#000000
+highlight Directory term=underline ctermfg=green ctermbg=black guifg=#336633 guibg=#000000
+highlight Error term=reverse,bold ctermfg=black ctermbg=red guifg=#000000 guibg=#dc0000
+highlight ErrorMsg term=reverse,bold ctermfg=white ctermbg=red guifg=#ffffff guibg=#dc0000
+highlight Folded ctermfg=darkgreen ctermbg=black guifg=#20de20 guibg=#000000
+highlight FoldColumn ctermfg=darkgreen ctermbg=black guifg=#20de20 guibg=#000000
+highlight Function term=standout ctermfg=darkgreen guifg=#22bb22
+highlight Identifier term=underline ctermfg=darkcyan gui=underline guifg=#008800
+highlight Ignore ctermfg=lightgreen guifg=#33bb33
+highlight IncSearch term=reverse ctermfg=black ctermbg=darkgreen guifg=#000000 guibg=#336633
+highlight LineNr term=bold ctermfg=green guifg=#00ff00
+highlight MatchParen term=bold ctermfg=black ctermbg=green guibg=#00ff00 guifg=#000000
+highlight ModeMsg term=bold cterm=bold gui=bold
+highlight MoreMsg term=bold cterm=bold gui=bold
+highlight NonText ctermfg=darkcyan guifg=#999999
+highlight Normal ctermfg=gray ctermbg=black guifg=#aaaaaa guibg=#000000
+highlight Pmenu term=reverse ctermfg=black ctermbg=green guifg=#000000 guibg=#337733
+highlight PmenuSel term=bold ctermfg=black ctermbg=gray guifg=#000000 guibg=#999999
+highlight PmenuSbar term=reverse ctermfg=black ctermbg=green guifg=#000000 guibg=#337733
+highlight PmenuThumb term=reverse ctermfg=gray ctermbg=black guifg=#999999 guibg=#000000
+highlight PreProc term=standout ctermfg=darkgreen guifg=#22bb22
+highlight Question term=standout ctermfg=red guifg=#ff0000
+highlight Search term=reverse ctermfg=black ctermbg=darkgreen guifg=#000000 guibg=#228822
+highlight SignColumn ctermfg=darkgreen guifg=#20de20 guibg=#000000
+highlight Special term=bold ctermfg=green guifg=#00ff00
+highlight SpecialKey term=bold ctermfg=green guifg=#00ff00
+highlight SpellBad term=reverse cterm=underline ctermfg=red ctermbg=black gui=undercurl guisp=#ff0000
+highlight SpellCap term=reverse cterm=underline ctermfg=yellow ctermbg=black gui=undercurl guisp=#00ffff
+highlight SpellLocal term=reverse cterm=underline ctermfg=blue ctermbg=black gui=undercurl guisp=#0000ff
+highlight SpellRare term=reverse cterm=underline ctermfg=darkgreen ctermbg=black gui=undercurl guisp=#00ff00
+highlight Statement term=standout ctermfg=darkred guifg=#ac0000
+highlight StatusLine term=reverse ctermfg=darkgreen ctermbg=black gui=none guibg=#228822 guifg=#000000
+highlight StatusLineNC term=reverse ctermfg=darkgreen ctermbg=blue gui=none guibg=#336633 guifg=#000000
+highlight TabLine term=reverse cterm=reverse ctermfg=black ctermbg=green guibg=#222222 guifg=#228822
+highlight TabLineFill term=reverse cterm=reverse ctermfg=green ctermbg=black guibg=#222222 guifg=#226622
+highlight TabLineSel ctermfg=black ctermbg=green guibg=#228822 guifg=#222222
+highlight Title term=reverse ctermfg=black ctermbg=green guifg=#000000 guibg=#00ff00
+highlight Todo term=reverse cterm=reverse ctermfg=darkgreen ctermbg=black guibg=#336633 guifg=#000000
+highlight Type term=standout ctermfg=green guifg=#559955
+highlight Visual term=reverse cterm=reverse ctermfg=darkgreen guifg=#000000 guibg=#336633
+highlight VisualNOS term=reverse,bold cterm=reverse ctermbg=darkgreen guifg=#000000 guibg=#228822
+highlight VertSplit term=reverse ctermfg=darkgreen guifg=#336633
+highlight User1 term=standout cterm=bold ctermbg=darkgreen ctermfg=red gui=bold guibg=#228822 guifg=#FF0000
+highlight WarningMsg term=reverse ctermfg=black ctermbg=yellow guifg=#000000 guibg=#007a7a
+highlight WildMenu term=reverse ctermfg=blue ctermbg=darkgreen guifg=#000099 guibg=#00ac00
+
+" ----------------------------------------------------------------------------------------------------------------------------------
+" Common groups that link to other highlight definitions.
+
+highlight link Constant Character
+highlight link Constant Number
+highlight link Constant Boolean
+highlight link Constant String
+
+highlight link LineNr Operator
+
+highlight link Number Float
+
+highlight link PreProc Define
+highlight link PreProc Include
+highlight link PreProc Macro
+highlight link PreProc PreCondit
+
+highlight link Question Repeat
+
+highlight link Repeat Conditional
+
+highlight link Special Delimiter
+highlight link Special SpecialChar
+highlight link Special SpecialComment
+highlight link Special Tag
+
+highlight link Statement Exception
+highlight link Statement Keyword
+highlight link Statement Label
+
+highlight link Type StorageClass
+highlight link Type Structure
+highlight link Type Typedef
+
+" ----------------------------------------------------------------------------------------------------------------------------------
+" vim:tw=132:ts=4:sw=4
diff --git a/.vim/colors/reloaded.vim b/.vim/colors/reloaded.vim
new file mode 100644
index 0000000..0c0c382
--- /dev/null
+++ b/.vim/colors/reloaded.vim
@@ -0,0 +1,856 @@
+" Vim colour file: The colorscheme reloaded.
+" Maintainer: Pan Shizhu <dicpan@hotmail.com>
+" Last Change: 16 July 2004
+" URL: http://vim.sourceforge.net/scripts/script.php?script_id=760
+" Version: 0.6
+"
+" Please prepend [VIM] in the title when writing e-mail to me, or it will
+" be silently discarded.
+"
+" Description:
+"
+" See :h reloaded.txt for details
+"
+" Release Notes:
+"
+" v0.6 For default users it may be slow, Added :se lz to disable refresh
+" Changed some groups of the sample parameter
+" Use bracketed variable instead of the exe statement
+" Changed the order of most division calculation to improve accuracy
+" v0.5 Initial upload at 15 July 2004.
+"
+
+
+" minimal value of all the given numbers, maximum 20 parameters
+fu! s:min(num1,num2,...)
+ let l:min = a:num1<a:num2 ? a:num1 : a:num2
+
+ let l:idx = a:0
+ wh l:idx > 0
+ let l:var = a:{l:idx}
+ if l:var < l:min
+ let l:min = l:var
+ en
+ let l:idx = l:idx - 1
+ endw
+ retu l:min
+endf
+
+" same as above for maximal value
+fu! s:max(num1,num2,...)
+ let l:max = a:num1>a:num2 ? a:num1 : a:num2
+
+ let l:idx = a:0
+ wh l:idx > 0
+ let l:var = a:{l:idx}
+ if l:var > l:max
+ let l:max = l:var
+ en
+ let l:idx = l:idx - 1
+ endw
+ retu l:max
+endf
+
+" guard the var to be in the range between unity and base.
+" if base is omitted, treat like degrees.
+fu! s:guard(var,unity,...)
+ if a:0
+ if a:var < a:1
+ retu a:1
+ elsei a:var > a:unity
+ retu a:unity
+ en
+ retu a:var
+ en
+ if a:var < 0
+ retu a:unity + (a:var % a:unity)
+ en
+ retu a:var % a:unity
+endf
+
+" sub-function
+ " 8-bit integer to 2 digit hexadecimal
+ fu! s:to_hex(num)
+ retu '0123456789abcdef' [a:num/16%16] . '0123456789abcdef' [a:num%16]
+ endf
+
+" rgb to rgb color string
+fu! s:rgb2colors(red,green,blue)
+ retu "#".s:to_hex(a:red+0).s:to_hex(a:green+0).s:to_hex(a:blue+0)
+endf
+
+" sub-functions
+ fu! s:hue2rgb(v1, v2, hue)
+ " trim to the first period
+ let l:hue = s:guard(a:hue, 360)
+
+ if l:hue < 60
+ retu a:v1 + l:hue * (a:v2 - a:v1) / 60
+ en
+ if l:hue < 180
+ retu a:v2
+ en
+ if l:hue < 240
+ retu a:v1 + (240 - l:hue) * (a:v2 - a:v1) / 60
+ en
+ retu a:v1
+ endf
+
+" hsl to rgb color string
+fu! s:hsb2colors(hue,sat,bri)
+ " Hue: Any integer degree (modular 360)
+ " Saturation: 0 to 1023/1023
+ " Luminance: 0 to 1023/1023
+ " RGB results = 0 to 255
+
+ if a:sat == 0
+ let l:lum = a:bri / 4
+ retu s:rgb2colors(l:lum, l:lum, l:lum)
+ en
+
+ if a:bri < 512
+ let l:v2 = a:bri * ( 1023 + a:sat )
+ el
+ let l:v2 = ( a:bri + a:sat ) * 1023 - ( a:sat * a:bri )
+ en
+
+ let l:v1 = 2 * 1023 * a:bri - l:v2
+
+ let l:red = s:hue2rgb(l:v1, l:v2, a:hue + 120) / 4092
+ let l:green = s:hue2rgb(l:v1, l:v2, a:hue) / 4092
+ let l:blue = s:hue2rgb(l:v1, l:v2, a:hue - 120) / 4092
+
+ retu s:rgb2colors(l:red, l:green, l:blue)
+
+endf
+
+" rgb color number to s:rgb
+fu! s:color2rgb(color)
+ let s:red = a:color / 0x10000
+ let s:green = (a:color / 0x100) % 0x100
+ let s:blue = a:color % 0x100
+endf
+
+" rgb to s:hsl
+fu! s:rgb2hsb(red,green,blue)
+
+ let l:red = a:red * 1023 / 255
+ let l:green = a:green * 1023 / 255
+ let l:blue = a:blue * 1023 / 255
+
+ let l:min = s:min(l:red, l:green, l:blue)
+ let l:max = s:max(l:red, l:green, l:blue)
+ let l:delta = l:max - l:min
+
+ let s:bri = (l:max + l:min) / 2
+
+ if l:delta == 0
+ let s:hue = 180 " When sat = 0, hue default to 180
+ let s:sat = 0
+ el
+ if s:bri < 512
+ let s:sat = l:delta * 1023 / (l:max + l:min)
+ el
+ let s:sat = l:delta * 1023 / (2*1023 - l:max - l:min)
+ en
+
+ let l:del_r = ( (l:max-l:red) + (l:delta*3) ) * 60 / l:delta
+ let l:del_g = ( (l:max-l:green) + (l:delta*3) ) * 60 / l:delta
+ let l:del_b = ( (l:max-l:blue) + (l:delta*3) ) * 60 / l:delta
+
+ if l:red == l:max
+ let s:hue = l:del_b - l:del_g
+ elsei l:green == l:max
+ let s:hue = 120 + l:del_r - l:del_b
+ elsei l:blue == l:max
+ let s:hue = 240 + l:del_g - l:del_r
+ en
+
+ let s:hue = s:guard(s:hue, 360)
+ en
+endf
+
+" sub-functions
+ if !exists("s:loaded") | let s:hue_range = 0 | let s:hue_phase = 0 | en
+ fu! s:cast_hue(hue)
+ retu a:hue * s:hue_range / 360 - s:hue_range / 2 + s:hue_phase
+ endf
+
+ if !exists("s:loaded") | let s:sat_base = 0 | let s:sat_modify = 0 | en
+ fu! s:cast_sat(sat)
+ let l:sat = a:sat * (1024 - s:sat_base) / 1024 + s:sat_base
+ retu l:sat * s:sat_modify / 100
+ endf
+
+ if !exists("s:loaded") | let s:bri_base = 0 | let s:bri_modify = 0 | en
+ fu! s:cast_bri(bri)
+ let l:bri = a:bri * (1024 - s:bri_base) / 1024 + s:bri_base
+ retu l:bri * s:bri_modify / 100
+ endf
+
+" input hsl, do modification in HSL color space, output rgb color string
+fu! s:make_hsb(hue,sat,bri)
+
+ let l:hue = s:guard(s:cast_hue(a:hue), 360)
+ let l:sat = s:guard(s:cast_sat(a:sat), 1023, s:sat_base)
+ let l:bri = s:guard(s:cast_bri(a:bri), 1023, s:bri_base)
+
+ if s:verbose | ec "\"\tH=".l:hue."\tS=".l:sat."\tL=".l:bri | en
+ retu s:hsb2colors(l:hue, l:sat, l:bri)
+
+endf
+
+" input rgb color number, transfer to HSL, then do <sid>make_hsb
+fu! s:make_color(color)
+ cal s:color2rgb(a:color)
+ cal s:rgb2hsb(s:red, s:green, s:blue)
+ retu s:make_hsb(s:hue, s:sat, s:bri)
+endf
+
+" input color string, transfer in HSL, output rgb color string
+fu! s:parse_color(p)
+ if a:p[6] == "#"
+ let l:p = '0x'.strpart(a:p, 7, 6) + 0
+ retu strpart(a:p, 0, 6).s:make_color(l:p)
+ elsei a:p[6] == "@"
+ let l:hue = s:guard(strpart(a:p, 7, 3) + 0, 360)
+ let l:sat = s:guard(strpart(a:p, 10, 4) + 0, 1023, 0)
+ let l:bri = s:guard(strpart(a:p, 14, 4) + 0, 1023, 0)
+ retu strpart(a:p, 0, 6).s:make_hsb(l:hue, l:sat, l:bri)
+ el
+ retu a:p
+ en
+endf
+
+if !exists("s:loaded") | let s:verbose = 0 | en
+fu! s:psc_hi(group, p1, p2, ...)
+ if a:0 == 0
+ let l:p3 = "gui=NONE"
+ el
+ let l:p3 = a:1
+ en
+ let l:p1 = s:parse_color(a:p1)
+ let l:p2 = s:parse_color(a:p2)
+ if s:verbose | ec "hi ".a:group." ".l:p1." ".l:p2." ".l:p3 | en
+ exe "hi ".a:group." ".l:p1." ".l:p2." ".l:p3
+endf
+
+fu! s:multi_hi(setting, ...)
+ let l:idx = a:0
+ wh l:idx > 0
+ let l:hlgroup = a:{l:idx}
+ if s:verbose | ec "hi ".l:hlgroup." ".a:setting | en
+ exe "hi ".l:hlgroup." ".a:setting
+ let l:idx = l:idx - 1
+ endw
+endf
+
+" Transfer global variable into script variable
+fu! s:init_option(var, value)
+ if !exists("g:psc_".a:var)
+ exe "let s:".a:var." = ".a:value
+ el
+ let s:{a:var} = g:psc_{a:var}
+ en
+endf
+
+if !exists("loaded") | let s:file = expand("<sfile>") | en
+
+cal s:init_option("reload_prefix", "'".fnamemodify(s:file,":p:h")."/'")
+
+fu! s:psc_reload(...)
+
+ " Only do color for GUI
+ if !has("gui_running") | retu | en
+
+ if a:0 > 10
+ echoe "Too many parameters, ".'a:0 == '.a:0
+ retu
+ en
+
+ com! -nargs=+ InitOpt cal s:init_option(<f-args>)
+
+ if a:0 >= 6
+ " Hue = phase +- (range/2)
+ " Sat = sat * modify% then promoted from base to 1024
+ " Bri = bri * modify% then promoted from base to 1024
+
+ let s:hue_range = a:1
+ let s:sat_modify = a:2
+ let s:bri_modify = a:3
+
+ let s:hue_phase = a:4
+ let s:sat_base = a:5
+ let s:bri_base = a:6
+ el
+ InitOpt hue_range 360
+ InitOpt sat_modify 100
+ InitOpt bri_modify 100
+
+ InitOpt hue_phase 180
+ InitOpt sat_base 0
+ InitOpt bri_base 0
+ en
+
+ if a:0 >= 7
+ let s:lightbg = a:7
+ el
+ InitOpt style 'cool'
+ if s:style == 'warm'
+ InitOpt lightbg 1
+ el
+ InitOpt lightbg 0
+ en
+ en
+
+ if a:0 >= 8
+ let s:plainfont = a:8
+ el
+ InitOpt fontface 'mixed'
+ if s:fontface == 'mixed'
+ InitOpt plainfont 0
+ el
+ InitOpt plainfont 1
+ en
+ en
+
+ if a:0 >= 9
+ let s:verbose = a:9
+ el
+ InitOpt verbose 0
+ en
+
+ if a:0 == 10
+ let s:reload_filename = a:10
+ el
+ InitOpt reload_filename 'ps_color.vim'
+ en
+
+ delc InitOpt
+
+ let s:reload_filename = s:reload_prefix.s:reload_filename
+
+ if !filereadable(s:reload_filename)
+ echoe "Color data file ".s:reload_filename." not found."
+ retu
+ en
+
+ se lz
+
+ if !s:lightbg | se bg=dark | el | se bg=light | en
+
+ hi clear
+
+ if exists("syntax_on") | sy reset | en
+
+ " This is mandatory, personally I think it is a bug rather than a feature.
+ let g:colors_name = expand("<sfile>:t:r")
+
+
+ " GUI:
+ "
+ " Matrix Reloaded style for gui
+ "
+ let s:tempfile = '__Temp_Colors__'
+
+ exe "sil! 1new ".s:tempfile
+ sil! %d
+ exe "sil! 0r ".s:reload_filename
+ if s:verbose
+ ec '" Reloaded color scheme from '.s:reload_filename
+ ec '" with param ' s:hue_range s:sat_modify s:bri_modify
+ \s:hue_phase s:sat_base s:bri_base s:lightbg s:plainfont
+ ec '" '
+ en
+
+ if !s:lightbg
+ sil! 1,/^\s*" DARK COLOR DEFINE START$/d
+ sil! /^\s*" DARK COLOR DEFINE END$/,$d
+ el
+ sil! 1,/^\s*" LIGHT COLOR DEFINE START$/d
+ sil! /^\s*" LIGHT COLOR DEFINE END$/,$d
+ en
+
+ sil! 0
+ let s:nnb = 1
+ com! -nargs=+ PscHi cal s:psc_hi(<f-args>)
+ wh 1
+ let s:nnb = nextnonblank(s:nnb)
+ if !s:nnb | brea | en
+
+ let s:line = getline(s:nnb)
+
+ let s:nnb = s:nnb + 1
+
+ " Skip invalid lines
+ if s:line !~ '^\s*hi\%[ghlight]\s*.*' | con | en
+
+ exe substitute(s:line, '\<hi\%[ghlight]\>', 'PscHi', '')
+ endw
+ sil! q!
+ delc PscHi
+
+ " Enable the bold style
+ com! -nargs=+ MultiHi cal s:multi_hi(<f-args>)
+ if !s:plainfont
+ MultiHi gui=bold Question StatusLine DiffText Statement Type MoreMsg ModeMsg NonText Title VisualNOS DiffDelete
+ endif
+ delc MultiHi
+
+ " Color Term:
+ " Are you crazy?
+
+
+ " Term:
+ " Don't be silly...
+
+
+ " Links:
+ " Something sensible
+
+ exe "sil! 1new ".s:tempfile
+ sil! %d
+ exe "sil! 0r ".s:reload_filename
+
+ sil! 1,/^\s*" COLOR LINKS DEFINE START$/d
+ sil! /^\s*" COLOR LINKS DEFINE END$/,$d
+
+ sil! 0
+ let s:nnb = 1
+ wh 1
+ let s:nnb = nextnonblank(s:nnb)
+ if !s:nnb
+ brea
+ en
+ let s:line = getline(s:nnb)
+
+ let s:nnb = s:nnb + 1
+ " Skip invalid lines
+ if s:line !~ '^\s*hi\%[ghlight]\s*.*' | con | en
+
+ if s:verbose | ec s:line | en
+
+ sil! exe s:line
+ endw
+ sil! q!
+
+endf
+
+" To flag the script variables are initialized
+let s:loaded = 1
+
+com! -nargs=* Reload cal <SID>psc_reload(<f-args>)
+
+" vim:et:nosta:sw=2:ts=8:
+" HelpExtractor:
+" The document {{{2
+fu! s:extract_help()
+ se lz
+ let docdir = substitute(s:file, '\<colors[/\\].*$', 'doc', '')
+ if !isdirectory(docdir)
+ if has("win32")
+ echoe 'Please make '.docdir.' directory first'
+ unl docdir
+ return
+ elsei !has("mac")
+ exe "!mkdir ".docdir
+ en
+ en
+
+ let curfile = fnamemodify(s:file, ":t:r")
+ let docfile = substitute(fnamemodify(s:file, ":r").".txt",
+ \'\<colors\>', 'doc', '')
+ exe "silent! 1new ".docfile
+ sil! %d
+ exe "silent! 0r ".fnamemodify(s:file, ":p")
+ sil! 1,/^" HelpExtractorDoc:$/d
+ norm! GVkkd
+ cal append(line('$'), '')
+ cal append(line('$'), 'v' . 'im:tw=78:ts=8:noet:ft=help:fo+=t:norl:noet:')
+ sil! wq!
+ exe "helptags ".substitute(docfile,'^\(.*doc.\).*$','\1','e')
+
+ exe "silent! 1new ".fnamemodify(s:file, ":p")
+ 1
+ sil! /^" HelpExtractor:$/,$g/.*/d
+ sil! wq!
+
+ noh
+endf
+
+cal s:extract_help()
+fini
+
+" ---------------------------------------------------------------------
+" Put the help after the HelpExtractorDoc label...
+" HelpExtractorDoc:
+*reloaded.txt* Color Tuner and Reloader Last change: 16 July 2004
+
+
+PERSONAL COLOUR TUNER AND RELOADER *psc_reload*
+
+
+Author: Pan, Shizhu. <dicpan> at <hotmail o com> >
+ (prepend '[VIM]' in the title or your mail may be silently removed.)
+<
+==============================================================================
+CONTENTS *pcr* *pcr-contents*
+
+ 1. Contents.....................|pcr-contents|
+ 2. PCR Overview.................|pcr-overview|
+ 3. PCR Usage....................|pcr-usage|
+ 4. PCR Options..................|pcr-options|
+ 5. PCR FAQ .....................|pcr-faq|
+ 6. PCR Todo List................|pcr-todo|
+
+For release notes, please see the header of reloaded.vim
+
+==============================================================================
+PCR FEATURES OVERVIEW *pcr-features* *pcr-overview*
+
+ Features ~
+
+ . PCR is a color scheme tuner and reloader.
+ . PCR is an optional utility for ps_color as well as other schemes
+ . It tunes the whole color scheme in HSL color space.
+ . Thousands of color styles can be achieved by HSL tuning.
+ . Tuned output can be saved to create new color schemes.
+ . Can be configured to tune your own color scheme.
+ . Works under GUI only, do not affect console version.
+
+ Design Concern ~
+
+ When I'm designing the color scheme |ps_color|, I realized it is
+ extremely difficult to fine-tune the color, the whole step is not at
+ all straight forward. What is more, RGB is not quite comprehensive
+ for most average people. It would be much better if it is possible to
+ tune the color scheme in HSL color space. Many color schemes in vim
+ are actually similar, just some tune in the HSL color space.
+
+ It is very easy to understand HSL color space even if one has NO
+ previous knowledge. This may be another reason to use HSL color
+ space.
+
+ Portability ~
+
+ Before playing the game of colors, you are strongly recommended to
+ adjust your monitor to 6500k color temperature and proper gamma curve.
+ This has been described in the |ps_color.txt| at the same
+ "Portability" section. If you don't know how, just skip it.
+
+ The only portability issue, for the obvious reason, this is GUI only.
+ ;-)
+
+==============================================================================
+PSC USAGE *pcr-usage*
+
+ For the impatient ~
+
+ Make sure both ps_color.vim and reloaded.vim are in your
+ [runtimepath]/colors and type in the following command >
+
+ :colo reloaded
+<
+ in your Vim or append to your |.vimrc|. The [runtimepath] can be any
+ 'writable' directory listed in |vimfiles|, normally your $HOME/.vim in
+ Unix or $HOME/vimfiles in Windows.
+
+ Note that you don't need to remove your current :colo lines in .vimrc,
+ since the :colo reloaded does nothing on color scheme, the
+ reloaded.vim has to be a color scheme for some bizarre reason.
+
+ Note if you do not want to have ps_color.vim, go to FAQ section to see
+ how to create your own.
+
+ Experiencing ~
+
+ Normally, nothing will happen when you sourced the colorscheme
+ reloaded, this only enables the command :Reload.
+
+ The :Reload command will be available after you sourced the
+ colorscheme reloaded. If not, type :colo reloaded now.
+
+ Now try the following:
+>
+ :Reload 60 100 100 120 341 0 0 0 0
+<
+ If you do as above, you will get a greenish feeling like "Matrix
+ reloaded". You can run the Reload command in vim command line as well
+ as in .vimrc. To see what the :Reload is capable of, try the
+ following, one by one:
+>
+ :Reload 120 100 100 60 341 128
+ :Reload 120 100 100 60 341 0 1
+ :Reload 480 84 84 195 256 96 0
+ :Reload 720 71 100 360 0 0 0
+ :Reload 60 100 100 150 341 0 0
+ :Reload 240 120 100 330 341 0 1
+ :Reload 360 100 100 180 0 0 0 1
+ :Reload 360 100 100 180 0 0 1 0
+<
+ (Hint: choose a document which has as much highlight as possible to
+ see what the come scheme looks like. Vim scripts or Vim help documents
+ may be good samples.)
+
+ . The first line will give you a golden feeling, followed by
+ a reversed version.
+ . Next comes a low contrast dark-cyan-background scheme.
+ . Next comes a black background with decreased saturation.
+ . The Hue can be changed anyway. This is a cyan-green style, call it
+ "Matrix revolution"?
+ . Be hot, lets try a reddish style.
+ . The last two lines will give you the same as ps_color 'cool' and
+ 'warm' style.
+
+ Are you amazed? I guess so. And, of course all the above can be
+ further fine-tuned.
+
+ If you want to explore the mysteries inside this, see the next
+ section.
+
+==============================================================================
+PCR OPTIONS *pcr-options*
+
+ Since it is much easier and straight forward to specify command line
+ arguments, there are no need to create individual options. Here we
+ describe the 10 parameters.
+
+ Synopsis ~
+
+ :Reload h_r s_m l_m h_p s_b l_b [ lbg [ pf [ vb [ cdf ] ] ] ]
+
+ Scope ~
+
+ Hue is the dominant parameter to a color, because the human eye is
+ very sensitive to the changing of hue. Generally, the hue is
+ expressed by angle, can be 0 to 360 degrees, where 359 degree is equal
+ to -1 degree, 360 degree is equal to 0 degree, 361 degree is equal to
+ 1 degree, etc.
+
+ The human eye is less sensitive to Saturation, the Black, Grey, and
+ White has saturation=0, The pure Red, Green, and Blue has
+ saturation=max, usually, saturation is defined to be between 0 and 1.
+ But Vim is not capable of handling floating points, so I defined the
+ saturation to be between 0 and 1023.
+
+ The saturation is the amount the different color elements differs, if
+ the red, green, blue are similar, the saturation is low.
+
+ The human eye is least sensitive to Luminance, since the dynamic range
+ of human eye can be changed on the fly. The luminance, or to say
+ brightness, needs no explanation, since the meaning is quite obvious.
+
+ The Luminance is also defined to be 0 to 1023, for the same reason.
+
+ Parameter h_r and h_p ~
+
+ This refers to hue range and hue phase.
+
+ set the hue range to any positive value, the hue will be in the range
+ of hue_phase-(hue_range/2) to hue_phase-(hue_range/2)
+
+ The normal hue is from 0 to 360, let hue_range=360 and hue_phase=180
+ will have the range 0 to 360, hence the hue of original color scheme
+ will be retained.
+
+ Set the hue range to between 0 and 360 will have the hue range
+ compressed, or to say a color-filtered look. Set the hue range to
+ 0 will force all colors in the color scheme to have the same hue value
+ as hue_phase. You may not want it to be that low, since the
+ hue_range=60 will in most cases enough to give the whole color scheme
+ a color-filtered look.
+
+ Set the hue range to >360 will have the color changed without compress
+ the hue range, the behavior is not easy to describe, you need to do
+ more experiments to understand what it does.
+
+ Set the hue range to <0 is illegal.
+
+ The hue_phase is the base value the whole color scheme designed
+ around. Usually, the Hue=0 is Red, Hue=60 is Yellow, Hue=120 is
+ Green, Hue=180 is Cyan, Hue=240 is Blue, Hue=300 is Magenta, any other
+ value is between two color, for example, Hue=30 is Orange color.
+
+ It would be very interesting to see how a color scheme changes when
+ change the hue_phase.
+
+ Parameter s_m and s_b ~
+
+ This refers to saturation modify and saturation base
+
+ The saturation modify is a percent value, 100 means no modify.
+ If set to 50, all saturation will be decreased to 50%,
+ If set to 0, the screen will be black and white (greyscale),
+ If set to 200, all saturation will be increased to 200% times the
+ original value.
+
+ The saturation base is a linear value, it defines the minimum
+ saturation.
+ If set to 0, the saturation will not be modified.
+ If set to 256, the minimum saturation will be 1/4.
+ If set to 341, the minimum saturation will be 1/3.
+ If set to 512, the minimum saturation will be 1/2.
+
+ Oops, please _note_ that a too high value of saturation is not quite
+ comfortable for most people.
+
+ Parameter l_m and l_b ~
+
+ This refers to luminance modify and luminance base
+
+ The luminance modify is a percent value, 100 means no modify.
+ If set to 50, all luminance will be decreased to 50%,
+ If set to 0, the screen will be completely dark (can be possibly used
+ for boss key?)
+ If set to 200, all luminance will be increased to 200% times the
+ original value.
+
+ The luminance base is a linear value, it defines the minimum
+ luminance.
+
+ Main use of this is to tune the background for a dark background
+ colorscheme.
+ If set to 0, the background will be black.
+ If set to 128, the background will be a 1/8 dark one, the color of
+ background can be tuned by saturation_base and hue_phase.
+ If set to 1023, the screen will be completely white.
+
+ For light background, it is recommended to set luminance base to 0.
+
+
+ Parameter lbg ~
+
+ This refers to light background
+
+ when set to 1, the reloader choose a light background scheme and set
+ bg to light, otherwise, it is set to 0.
+
+ This options is optional, if omitted, it checks the value of
+ g:psc_style, if the style is 'warm', the light background is set to 1.
+
+ Parameter pf ~
+
+ This refers to plain font
+
+ Optional, set to 1 will turn all bolded font to plain font.
+ When not set, will check for g:psc_fontface, if non-exists,
+ default to 0.
+
+ Parameter vb ~
+
+ This refers to 'verbose'
+
+ When set to 1, some debug messages will be echoed when running the
+ command.
+
+ Parameter cdf ~
+
+ This refers to custom data file
+
+ The default data file is the ps_color.vim placed at the same directory
+ as reloaded.vim. You can set it to any file you want.
+
+ When present, it should be the file name of your data file.
+ For example, if your data file is ~/.vim/colors/template.vim:
+>
+ :Reload 360 100 100 180 0 0 1 0 0 template.vim
+<
+ will reload the light color scheme in template.vim
+ *pcr-custom-data*
+ Designing a data file ~
+
+ The data file can be a normal color scheme script, such as
+ ps_color.vim, You may need to know more if you want to do
+ modifications.
+
+ The ps_color.vim is fairly complicated, but only part of the file are
+ imported as data. Mainly, you only need to see how it organizes
+ statements in between "DEFINE START" and "DEFINE END" blocks.
+
+ The data file should conform to some restrictions:
+
+ . Must be in the same directory as reloaded.vim
+
+ . ALL highlight group must be defined, do not accept any default
+ value, this include the Underline and Ignore groups, this also hints
+ that both foreground and background must be defined. Use :ru
+ syntax/hitest.vim to check if all highlight groups are defined.
+
+ . Color names like "SlateBlue" should not be used, only hardcoded color
+ like #rrggbb is acceptable, the fg and bg can be used though, Since
+ fg and bg comes from the group Normal, and Normal group must be
+ defined with #rrggbb form of foreground and background.
+
+ . The following should exist in the file
+>
+ " DARK COLOR DEFINE START
+ " DARK COLOR DEFINE END
+ " LIGHT COLOR DEFINE START
+ " LIGHT COLOR DEFINE END
+ " COLOR LINKS DEFINE START
+ " COLOR LINKS DEFINE END
+<
+ the highlight statement should be placed in between START and END.
+ All statement other than the 'highlight' will be silently discarded.
+
+ You can put dark color scheme defines in dark color define section,
+ or light color scheme in light color section. It doesn't matter if
+ you have nothing in the section, since the defaults are used.
+ However, the defaults will not be tuned in the HSL color space,
+ which may be you want, and may not!
+
+ Further statements can be put in color links define section, you can
+ put any 'highlight' statements in this section since the statements
+ in this section will be execute unparsed, if you want to manually
+ change some groups in a reloaded scheme, put something there.
+
+
+==============================================================================
+PCR FAQ AND TIPS *pcr-faq*
+>
+ Q: How to make my own color to be tunable?
+<
+ A: Your own color scheme must conform to some restrictions,
+ see |pcr-custom-data| for details.
+>
+ Q: How to run reloaded.vim without having ps_color.vim?
+<
+ A: reloaded.vim is just a utility to reload colorscheme, it does not
+ contain any colors. You must have a data file, or to say
+ colorscheme, contains the 'highlight' statements like those in
+ ps_color.vim, and tell the reloaded.vim to use that file.
+ Instructions on creating custom data file is described in
+ |pcr-custom-data|.
+>
+ Q: How to export the tuned output to create new color scheme?
+<
+ A: This is still under construction, currently you can set verbose in
+ the command line parameter and capture the output, but it is not
+ working very well.
+>
+ Q: Why this should be a colorschme instead of a plugin utility?
+<
+ A: This seems to be a Vim bug (or to say 'feature' if you prefer), the
+ main function will hang up if run as a plugin and you will not be
+ able to source the colorscheme in the current Vim session, so,
+ please put reloaded.vim in ~/.vim/colors, do NOT put it in
+ ~/.vim/plugin !
+>
+ Q: Why it is impossible to browse functions in reloaded.vim with
+ taglist plugin?
+<
+ A: The old versions of exuberant ctags utility do not cope with <sid>
+ functions very well, please download and recompile the newest
+ version of exuberant ctags utility.
+
+
+==============================================================================
+PCR TODO LIST *pcr-todo*
+
+ o Fix the remaining bugs.
+ o Try to be able to parse color names
+ o Improve the output feature
+
+==============================================================================
+vim:et:nosta:sw=2:ts=8:
+}}}2 vim600:fdm=marker:fdl=1:
diff --git a/.vim/colors/revolutions.vim b/.vim/colors/revolutions.vim
new file mode 100644
index 0000000..15450c9
--- /dev/null
+++ b/.vim/colors/revolutions.vim
@@ -0,0 +1,75 @@
+" MATRIX-REVOLUTIONS colorscheme
+" Author: Christian MICHON
+" Version: 1.0
+" Last Change: 23 Jun 2004
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = 'revolutions'
+
+hi Boolean guifg=#e6fff3 guibg=#43705a gui=none
+hi Character guifg=#e6fff3 guibg=#43705a gui=none
+hi Comment guifg=#43705a guibg=#000000 gui=underline
+hi Conditional guifg=#e6fff3 guibg=#000000 gui=bold
+hi Constant guifg=#e6fff3 guibg=#43705a gui=none
+hi Cursor guifg=#43705a guibg=#e6fff3 gui=none
+hi Debug guifg=#61a181 guibg=#000000 gui=none
+hi Define guifg=#e6fff3 guibg=#000000 gui=none
+hi Delimiter guifg=#61a181 guibg=#000000 gui=none
+hi DiffAdd guifg=#e6fff3 guibg=#43705a gui=bold
+hi DiffChange guifg=#e6fff3 guibg=#43705a gui=none
+hi DiffDelete guifg=#e6fff3 guibg=#43705a gui=none
+hi DiffText guifg=#000000 guibg=#e6fff3 gui=bold
+hi Directory guifg=#e6fff3 guibg=#000000 gui=none
+hi Error guifg=#e6fff3 guibg=#61a181 gui=bold
+hi ErrorMsg guifg=#e6fff3 guibg=#61a181 gui=bold
+hi Exception guifg=#e6fff3 guibg=#000000 gui=bold
+hi Float guifg=#e6fff3 guibg=#43705a gui=none
+hi FoldColumn guifg=#9bcfb5 guibg=#43705a gui=bold
+hi Folded guifg=#9bcfb5 guibg=#43705a gui=bold
+hi Function guifg=#e6fff3 guibg=#000000 gui=none
+hi Identifier guifg=#e6fff3 guibg=#000000 gui=none
+hi Ignore guifg=#000000 guibg=#000000 gui=none
+hi Include guifg=#e6fff3 guibg=#000000 gui=none
+hi IncSearch guifg=#1d3026 guibg=#61a181 gui=bold
+hi Keyword guifg=#e6fff3 guibg=#000000 gui=bold
+hi Label guifg=#e6fff3 guibg=#000000 gui=bold
+hi lCursor guifg=#43705a guibg=#e6fff3 gui=none
+hi LineNr guifg=#9bcfb5 guibg=#000000 gui=bold
+hi Macro guifg=#e6fff3 guibg=#000000 gui=none
+hi ModeMsg guifg=#9bcfb5 guibg=#000000 gui=bold
+hi MoreMsg guifg=#9bcfb5 guibg=#000000 gui=bold
+hi NonText guifg=#9bcfb5 guibg=#1d3026 gui=bold
+hi Normal guifg=#9bcfb5 guibg=#000000 gui=none
+hi Number guifg=#e6fff3 guibg=#000000 gui=none
+hi Operator guifg=#e6fff3 guibg=#000000 gui=bold
+hi PreCondit guifg=#e6fff3 guibg=#000000 gui=none
+hi PreProc guifg=#61a181 guibg=#000000 gui=none
+hi Question guifg=#9bcfb5 guibg=#000000 gui=bold
+hi Repeat guifg=#e6fff3 guibg=#000000 gui=bold
+hi Search guifg=#1d3026 guibg=#61a181 gui=bold
+hi Special guifg=#61a181 guibg=#000000 gui=none
+hi SpecialChar guifg=#61a181 guibg=#000000 gui=none
+hi SpecialComment guifg=#61a181 guibg=#000000 gui=none
+hi SpecialKey guifg=#9bcfb5 guibg=#000000 gui=none
+hi Statement guifg=#e6fff3 guibg=#000000 gui=bold
+hi StatusLine guifg=#e6fff3 guibg=#61a181 gui=bold
+hi StatusLineNC guifg=#1d3026 guibg=#61a181 gui=bold
+hi StorageClass guifg=#f070a0 guibg=#000000 gui=bold
+hi String guifg=#e6fff3 guibg=#000000 gui=none
+hi Structure guifg=#f070a0 guibg=#000000 gui=bold
+hi Tag guifg=#61a181 guibg=#000000 gui=none
+hi Title guifg=#e6fff3 guibg=#1d3026 gui=bold
+hi Todo guifg=#1d3026 guibg=#9bcfb5 gui=none
+hi Type guifg=#e6fff3 guibg=#000000 gui=bold
+hi Typedef guifg=#f070a0 guibg=#000000 gui=bold
+hi Underlined guifg=#e6fff3 guibg=#000000 gui=underline
+hi VertSplit guifg=#61a181 guibg=#61a181 gui=none
+hi Visual guifg=#e6fff3 guibg=#61a181 gui=none
+hi VisualNOS guifg=#9bcfb5 guibg=#000000 gui=underline
+hi WarningMsg guifg=#1d3026 guibg=#61a181 gui=bold
+hi WildMenu guifg=#43705a guibg=#e6fff3 gui=none
diff --git a/.vim/colors/robinhood.vim b/.vim/colors/robinhood.vim
new file mode 100644
index 0000000..b6eb1bd
--- /dev/null
+++ b/.vim/colors/robinhood.vim
@@ -0,0 +1,99 @@
+" vim: set tw=0 sw=4 sts=4 et:
+
+" Vim color file
+" Maintainer: Datila Carvalho <datila@saci.homeip.net>
+" Last Change: November, 3, 2003
+" Version: 0.1
+
+" This is a VIM's version of the emacs color theme
+" _Robin Hood_ created by Alex Schroede.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "robinhood"
+
+
+""" Colors
+
+" GUI colors
+hi Cursor guifg=fg guibg=gray
+hi CursorIM guifg=NONE guibg=gray
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg gui=bold guifg=White guibg=Red
+"hi VertSplit
+"hi Folded
+"hi FoldColumn
+"hi IncSearch
+"hi LineNr
+"hi ModeMsg
+"hi MoreMsg
+"hi NonText
+hi Normal guibg=#304020 guifg=navajowhite
+"hi Question
+hi Search gui=bold guifg=Black guibg=gray
+"hi SpecialKey
+hi StatusLine guifg=palegreen
+hi StatusLineNC guifg=yellowgreen
+"hi Title
+hi Visual guifg=darkslategrey guibg=fg
+hi VisualNOS gui=bold guifg=Black guibg=fg
+hi WarningMsg guifg=White guibg=Tomato
+"hi WildMenu
+
+" Colors for syntax highlighting
+hi Comment guifg=lightblue
+
+hi Constant gui=bold guifg=lightcyan
+ hi String guifg=lightsalmon
+ hi Character guifg=lightsalmon
+ hi Number gui=bold guifg=lightcyan
+ hi Boolean gui=bold guifg=lightcyan
+ hi Float gui=bold guifg=lightcyan
+
+hi Identifier gui=bold guifg=palegreen
+ hi Function guifg=yellowgreen
+
+hi Statement gui=bold guifg=salmon
+ hi Conditional gui=bold guifg=salmon
+ hi Repeat gui=bold guifg=salmon
+ hi Label guifg=salmon
+ hi Operator guifg=salmon
+ "hi Keyword
+ "hi Exception
+
+hi PreProc guifg=palegreen
+ hi Include gui=bold guifg=palegreen
+ hi Define guifg=palegreen
+ hi Macro guifg=aquamarine
+ hi PreCondit guifg=palegreen
+
+hi Type gui=bold guifg=palegreen
+ hi StorageClass gui=bold guifg=aquamarine
+ hi Structure gui=bold guifg=aquamarine
+ hi Typedef gui=bold guifg=aquamarine
+
+"hi Special
+ ""Underline Character
+ "hi SpecialChar gui=underline
+ "hi Tag gui=bold,underline
+ ""Statement
+ "hi Delimiter gui=bold
+ ""Bold comment (in Java at least)
+ "hi SpecialComment gui=bold
+ "hi Debug gui=bold
+
+hi Underlined gui=underline
+
+hi Ignore guifg=bg
+
+hi Error gui=bold guifg=White guibg=Red
+
+"hi Todo
diff --git a/.vim/colors/sand.vim b/.vim/colors/sand.vim
new file mode 100644
index 0000000..cc673df
--- /dev/null
+++ b/.vim/colors/sand.vim
@@ -0,0 +1,30 @@
+" Vim color file
+" Maintainer: Tim Alexeevsky <realtim@mail.ru>
+" Last Change: 2002-03-14
+" Version: 0.5
+" URL: http://sunsite.cs.msu.su/~tim/vim/sand.vim
+"
+" Thanx to Hans Fugal for his colorscheme_template.vim
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="sand"
+
+highlight Normal guibg=cornsilk guifg=NONE
+highlight PreProc guibg=NONE guifg=Maroon4
+highlight Comment guibg=NONE guifg=SteelBlue4
+highlight Constant guibg=NONE guifg=NavajoWhite4
+highlight Special guibg=NONE guifg=SlateBlue4
+highlight Identifier guibg=NONE guifg=SeaGreen
+highlight Statement guibg=NONE guifg=bisque4
+highlight Type guibg=NONE guifg=DarkOliveGreen
+highlight Todo guibg=LightYellow3 guifg=Blue4
+highlight NonText guibg=NONE guifg=DarkGreen
+highlight LineNr guibg=NONE guifg=Brown
+highlight StatusLineNC guifg=#8090a0
+highlight StatusLine guifg=#005070
+
+"vim: tw=0 sw=3 ts=3 sts=3 et
diff --git a/.vim/colors/scite.vim b/.vim/colors/scite.vim
new file mode 100644
index 0000000..609ad98
--- /dev/null
+++ b/.vim/colors/scite.vim
@@ -0,0 +1,48 @@
+" Vim color file
+" Maintainer: Gergely Kontra <kgergely@mcl.hu>
+" Last Change: 2002. 04. 09.
+
+" I'm a bit red-blind, so if you have suggestions, don't hesitate :)
+" ^^^^^^^^^ Sorry, I cannot speak English well, just want to say,
+" that in some rare cases I cannot distinguish between some colors
+" (I've just realized it, when I see some special tests)
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+"colorscheme default
+let g:colors_name = "scite"
+
+" hardcoded colors :
+
+" GUI
+"highlight Normal guifg=#7F6F5F guibg=#eeeeee
+highlight Normal guifg=#7F6F5F guibg=#ffffff
+highlight Search guibg=#bbbbbb gui=bold
+highlight Visual guifg=#DADADA
+highlight Folded guifg=#ffffff guibg=#666666
+highlight Cursor guifg=#666666 guibg=#000000 gui=bold
+highlight Special guifg=#7F007F guibg=#eeeeff gui=bold
+highlight Comment guifg=#007F00 guibg=#eeeeee
+highlight StatusLine guifg=#000000 guibg=#aacccc
+highlight StatusLineNC guifg=#557777 guibg=#ffffff
+highlight Statement guifg=#007F7F gui=bold
+highlight Type guifg=#0000ff gui=NONE
+highlight Function guifg=#007F7F gui=bold
+highlight LineNr guifg=#000000 guibg=#bbbbbb
+highlight FoldColumn guifg=#000000 guibg=#dddddd
+highlight Define guifg=#00007F guibg=#ddddff gui=bold
+highlight Number guifg=#000000 guibg=#eeffff gui=bold
+highlight Subtitle guifg=#000000 guibg=#66bbbb gui=bold,underline
+highlight String guifg=#7F007F guibg=#ffdddd
+highlight Delimiter guifg=#000000 guibg=#dde0dd gui=bold
+highlight PreProc guifg=#0000ff guibg=#ffffff gui=bold
+highlight Constant guifg=#000000 guibg=#aaaaaa gui=underline,bold
+
+"{{{
+
+"}}}
+
+
diff --git a/.vim/colors/sea.vim b/.vim/colors/sea.vim
new file mode 100644
index 0000000..0c79c47
--- /dev/null
+++ b/.vim/colors/sea.vim
@@ -0,0 +1,69 @@
+" Vim color file
+" Maintainer: Tiza
+" Last Change: 2002/10/30 Wed 00:01.
+" version: 1.0
+" This color scheme uses a dark background.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "sea"
+
+hi Normal guifg=#f0f0f8 guibg=#343478
+
+" Search
+hi IncSearch gui=UNDERLINE,BOLD guifg=#ffffff guibg=#c030ff
+hi Search gui=BOLD guifg=#f0e0ff guibg=#b020ff
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#f000a0
+hi WarningMsg gui=BOLD guifg=#ffffff guibg=#f000a0
+hi ModeMsg gui=BOLD guifg=#00e0ff guibg=NONE
+hi MoreMsg gui=BOLD guifg=#00ffff guibg=#6060ff
+hi Question gui=BOLD guifg=#00f0d0 guibg=NONE
+
+" Split area
+hi StatusLine gui=NONE guifg=#000000 guibg=#d0d0e0
+hi StatusLineNC gui=NONE guifg=#606080 guibg=#d0d0e0
+hi VertSplit gui=NONE guifg=#606080 guibg=#d0d0e0
+hi WildMenu gui=NONE guifg=#000000 guibg=#ff90ff
+
+" Diff
+hi DiffText gui=UNDERLINE guifg=#ffff00 guibg=#000000
+hi DiffChange gui=NONE guifg=#ffffff guibg=#000000
+hi DiffDelete gui=NONE guifg=#60ff60 guibg=#000000
+hi DiffAdd gui=NONE guifg=#60ff60 guibg=#000000
+
+" Cursor
+hi Cursor gui=NONE guifg=#ffffff guibg=#d86020
+hi lCursor gui=NONE guifg=#ffffff guibg=#e000b0
+hi CursorIM gui=NONE guifg=#ffffff guibg=#e000b0
+
+" Fold
+hi Folded gui=NONE guifg=#ffffff guibg=#0080a0
+hi FoldColumn gui=NONE guifg=#9090ff guibg=#3c3c88
+
+" Other
+hi Directory gui=NONE guifg=#00ffff guibg=NONE
+hi LineNr gui=NONE guifg=#7070e8 guibg=NONE
+hi NonText gui=BOLD guifg=#8080ff guibg=#2c2c78
+hi SpecialKey gui=BOLD guifg=#60c0ff guibg=NONE
+hi Title gui=BOLD guifg=#f0f0f8 guibg=NONE
+hi Visual gui=NONE guifg=#ffffff guibg=#6060ff
+" hi VisualNOS gui=NONE guifg=#ffffff guibg=#6060ff
+
+" Syntax group
+hi Comment gui=NONE guifg=#b0b0c8 guibg=NONE
+hi Constant gui=NONE guifg=#60ffff guibg=NONE
+hi Error gui=BOLD guifg=#ffffff guibg=#f000a0
+hi Identifier gui=NONE guifg=#c0c0ff guibg=NONE
+hi Ignore gui=NONE guifg=#303080 guibg=NONE
+hi PreProc gui=NONE guifg=#ffb0ff guibg=NONE
+hi Special gui=NONE guifg=#ffd858 guibg=NONE
+hi Statement gui=NONE guifg=#f0f060 guibg=NONE
+hi Todo gui=BOLD,UNDERLINE guifg=#ff70e0 guibg=NONE
+hi Type gui=NONE guifg=#40ff80 guibg=NONE
+hi Underlined gui=UNDERLINE,BOLD guifg=#f0f0f8 guibg=NONE
diff --git a/.vim/colors/sean.vim b/.vim/colors/sean.vim
new file mode 100644
index 0000000..1aa2b1e
--- /dev/null
+++ b/.vim/colors/sean.vim
@@ -0,0 +1,83 @@
+" local syntax file - set colors on a per-machine basis:
+" vim: tw=0 ts=4 sw=4
+" Vim color file
+" Maintainer:Sean Richards
+" Last Change:Fri Aug 30 8:50 2002 NZST
+
+hi clear
+set background=dark
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "sean"
+hi Normal guifg=white guibg=black
+hi SpecialKey guifg=Blue
+hi NonText gui=bold guifg=Blue
+hi Directory guifg=Blue
+hi ErrorMsg guifg=White guibg=Red
+hi Search guifg=white guibg=Red
+hi MoreMsg gui=bold guifg=SeaGreen
+hi ModeMsg gui=bold guifg=White guibg=Blue
+hi LineNr ctermfg=Darkyellow guifg=Yellow
+hi Question gui=bold guifg=Green
+hi StatusLineNC cterm=none ctermfg=grey ctermbg=darkblue gui=NONE guifg=white guibg=darkblue
+hi StatusLine cterm=none ctermfg=white ctermbg=darkblue gui=bold guifg=white guibg=darkblue
+hi VertSplit gui=bold guifg=White guibg=darkblue
+hi Title gui=bold guifg=Magenta
+hi Visual cterm=none ctermfg=white ctermbg=darkgreen gui=NONE guifg=white guibg=darkgreen
+hi WarningMsg guifg=Red
+hi FoldColumn ctermfg=Black ctermbg=Grey guibg=DarkGrey guifg=Black
+hi Folded ctermfg=Black ctermbg=Grey guifg=Black
+hi Cursor guifg=bg guibg=Green
+hi Comment cterm=none ctermfg=darkgreen gui=italic guifg=green
+hi Constant ctermfg=darkcyan guifg=darkcyan
+hi Special ctermfg=darkyellow guifg=Orange
+hi Identifier ctermfg=cyan guifg=cyan
+hi Statement ctermfg=darkyellow gui=bold guifg=darkyellow
+hi Number ctermfg=Cyan guifg=Cyan
+hi PreProc ctermfg=darkmagenta guifg=darkmagenta
+hi String ctermfg=darkred guifg=Red
+hi Type ctermfg=darkblue guifg=blue
+hi Error ctermfg=red guifg=Red guibg=Black
+hi Todo ctermfg=blue ctermbg=yellow guifg=Blue guibg=Yellow
+hi link IncSearch Visual
+hi link String Constant
+hi link Character Constant
+hi link Number Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Function Identifier
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+hi link Operator Statement
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link Tag Special
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Special
+hi link Debug Special
+
+
+"Toggle semicolon matching at the end of lines, author unknown!
+nmap <silent> <leader>sc :call ToggleSemicolonHighlighting()<cr>
+"{{{
+function! ToggleSemicolonHighlighting()
+ if exists("b:semicolon")
+ unlet b:semicolon
+ hi semicolon guifg=NONE gui=NONE ctermfg=NONE
+ else
+ syn match semicolon #;$#
+ hi semicolon guifg=red gui=bold ctermfg=1
+ let b:semicolon = 1
+ endif
+endfunction
+"}}}
diff --git a/.vim/colors/seashell.vim b/.vim/colors/seashell.vim
new file mode 100644
index 0000000..130785d
--- /dev/null
+++ b/.vim/colors/seashell.vim
@@ -0,0 +1,32 @@
+" Vim color file
+" Maintainer: Gerald S. Williams
+" Last Change: 2003 Apr 17
+
+" This is very reminiscent of a seashell. Good contrast, yet not too hard on
+" the eyes. This is something of a cross between zellner and peachpuff, if
+" such a thing is possible...
+"
+" Only values that differ from defaults are specified.
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "seashell"
+
+hi Normal guibg=seashell ctermbg=Gray ctermfg=Black
+hi NonText guibg=LavenderBlush guifg=Gray30
+hi LineNr guibg=LavenderBlush guifg=Gray30
+hi DiffDelete guibg=LightRed guifg=Black ctermbg=DarkRed ctermfg=White
+hi DiffAdd guibg=LightGreen ctermbg=DarkGreen ctermfg=White
+hi DiffChange guibg=Gray90 ctermbg=DarkCyan ctermfg=White
+hi DiffText gui=NONE guibg=LightCyan2 ctermbg=DarkCyan ctermfg=Yellow
+hi Comment guifg=MediumBlue
+hi Constant guifg=DeepPink
+hi PreProc guifg=DarkMagenta
+hi StatusLine guibg=White guifg=DarkSeaGreen cterm=None ctermfg=White ctermbg=DarkGreen
+hi StatusLineNC gui=None guibg=Gray
+hi VertSplit gui=None guibg=Gray
+hi Identifier guifg=#006f6f
+hi Statement ctermfg=DarkRed
diff --git a/.vim/colors/sf.vim b/.vim/colors/sf.vim
new file mode 100644
index 0000000..5b3033f
--- /dev/null
+++ b/.vim/colors/sf.vim
@@ -0,0 +1,76 @@
+" GUI-only vim color file, based on colors from vim.sf.net
+" Author: Christian MICHON
+" Email: christian_michon@yahoo.fr
+" Version: 1.1
+" Last Change: 28 Jul 2004
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "sf"
+
+hi Boolean guifg=#007f00 guibg=#f0f0dd gui=none
+hi Character guifg=#007f00 guibg=#f0f0dd gui=none
+hi Comment guifg=#b0b0b0 guibg=#f0f0dd gui=underline
+hi Conditional guifg=#0000ee guibg=#f0f0dd gui=bold
+hi Constant guifg=#007f00 guibg=#f0f0dd gui=none
+hi Cursor guifg=#f0f0dd guibg=#cc0000 gui=none
+hi Debug guifg=#0000ee guibg=#f0f0dd gui=none
+hi Define guifg=#cc0000 guibg=#f0f0dd gui=none
+hi Delimiter guifg=#0000ee guibg=#f0f0dd gui=none
+hi DiffAdd guifg=#551a8b guibg=#007f00 gui=bold
+hi DiffChange guifg=#f0f0dd guibg=#007f00 gui=none
+hi DiffDelete guifg=#551a8b guibg=#007f00 gui=none
+hi DiffText guifg=#f0f0dd guibg=#551a8b gui=bold
+hi Directory guifg=#cc0000 guibg=#f0f0dd gui=underline
+hi Error guifg=#ffffff guibg=#cc0000 gui=bold
+hi ErrorMsg guifg=#ffffff guibg=#cc0000 gui=bold
+hi Exception guifg=#0000ee guibg=#f0f0dd gui=bold
+hi Float guifg=#007f00 guibg=#f0f0dd gui=none
+hi FoldColumn guifg=#f0f0dd guibg=#007f00 gui=bold
+hi Folded guifg=#f0f0dd guibg=#007f00 gui=bold
+hi Function guifg=#cc0000 guibg=#f0f0dd gui=none
+hi Identifier guifg=#cc0000 guibg=#f0f0dd gui=none
+hi Ignore guifg=#f0f0dd guibg=#f0f0dd gui=none
+hi Include guifg=#cc0000 guibg=#f0f0dd gui=none
+hi IncSearch guifg=#ffffff guibg=#38d878 gui=bold
+hi Keyword guifg=#0000ee guibg=#f0f0dd gui=bold
+hi Label guifg=#0000ee guibg=#f0f0dd gui=bold
+hi lCursor guifg=#000066 guibg=#f0f0dd gui=none
+hi LineNr guifg=#b0b0b0 guibg=#007f00 gui=bold
+hi Macro guifg=#cc0000 guibg=#f0f0dd gui=none
+hi ModeMsg guifg=#000066 guibg=#f0f0dd gui=bold
+hi MoreMsg guifg=#551a8b guibg=#f0f0dd gui=bold
+hi NonText guifg=#b0b0b0 guibg=#f0f0dd gui=bold
+hi Normal guifg=#000066 guibg=#f0f0dd gui=none
+hi Number guifg=#007f00 guibg=#f0f0dd gui=none
+hi Operator guifg=#0000ee guibg=#f0f0dd gui=bold
+hi PreCondit guifg=#cc0000 guibg=#f0f0dd gui=none
+hi PreProc guifg=#cc0000 guibg=#f0f0dd gui=none
+hi Question guifg=#551a8b guibg=#f0f0dd gui=bold
+hi Repeat guifg=#0000ee guibg=#f0f0dd gui=bold
+hi Search guifg=#ffffff guibg=#38d878 gui=bold
+hi Special guifg=#999973 guibg=#f0f0dd gui=none
+hi SpecialChar guifg=#0000ee guibg=#f0f0dd gui=none
+hi SpecialComment guifg=#0000ee guibg=#f0f0dd gui=none
+hi SpecialKey guifg=#cc0000 guibg=#f0f0dd gui=none
+hi Statement guifg=#0000ee guibg=#f0f0dd gui=bold
+hi StatusLine guifg=#f0f0dd guibg=#cc0000 gui=bold
+hi StatusLineNC guifg=#f0f0dd guibg=#000066 gui=bold
+hi StorageClass guifg=#551a8b guibg=#f0f0dd gui=bold
+hi String guifg=#007f00 guibg=#f0f0dd gui=none
+hi Structure guifg=#551a8b guibg=#f0f0dd gui=bold
+hi Tag guifg=#0000ee guibg=#f0f0dd gui=none
+hi Title guifg=#007f00 guibg=#f0f0dd gui=bold
+hi Todo guifg=#f0f0dd guibg=#0000ee gui=none
+hi Type guifg=#551a8b guibg=#f0f0dd gui=bold
+hi Typedef guifg=#551a8b guibg=#f0f0dd gui=bold
+hi Underlined guifg=#0000ee guibg=#f0f0dd gui=underline
+hi VertSplit guifg=#f0f0dd guibg=#000066 gui=bold
+hi Visual guifg=#ffffff guibg=#00009c gui=none
+hi VisualNOS guifg=#ffffff guibg=#b0b0b0 gui=none
+hi WarningMsg guifg=#ffffff guibg=#cc0000 gui=bold
+hi WildMenu guifg=#f0f0dd guibg=#0000ee gui=none
diff --git a/.vim/colors/simpleandfriendly.vim b/.vim/colors/simpleandfriendly.vim
new file mode 100644
index 0000000..6222e76
--- /dev/null
+++ b/.vim/colors/simpleandfriendly.vim
@@ -0,0 +1,56 @@
+" Vim color file
+" Maintainer: Thomas Schmall <ts_nowhere@NOSPAM_yahoo.com>
+" Last Change: 2004 Nov 20
+" URL: http://www.vim.org/scripts/script.php?script_id=792
+" Version: 1.3
+
+" This color scheme uses a light grey background.
+
+" Last Changes:
+" *line number colors changed
+
+
+" First remove all existing highlighting.
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "simpleandfriendly"
+
+"Set nice colors #DC6210
+"Cursor is Cyan when ":lmap" mappings are active
+hi lCursor guibg=Cyan guifg=NONE
+hi LineNr guifg=white guibg=#acbbff
+
+"Text below the last line is darker grey
+hi NonText guibg=grey80
+"Normal text is black background is grey
+hi Normal guifg=black guibg=grey89 ctermfg=Black ctermbg=LightGrey
+hi Comment guifg=Orange guibg=grey94 ctermfg=DarkCyan term=bold
+"Constants are not underlined but have a slightly lighter background
+hi Constant guifg=#8080a0 guibg=grey92 gui=NONE term=underline
+hi String guifg=#80a0ff guibg=grey93 gui=NONE term=underline
+hi Number guifg=#80a5ff guibg=grey91 gui=NONE ctermfg=Gray term=none
+"Words like _if_ or _else_ (Grey27)
+hi Statement guifg=#4A2B99 gui=NONE ctermfg=Blue
+
+hi Title guifg=red ctermfg=red gui=NONE term=BOLD
+"color for _NONE_ for instance:
+hi PreProc term=underline ctermfg=LightBlue guifg=#DC6210
+"color for _guifg_ for instance: (SlateBlue works here nice too)
+hi Type guifg=#008080 ctermfg=LightGreen gui=None term=underline
+hi Function guifg=#61577A term=bold
+"in lingo the defined functions. (alt: SlateBlue)
+hi Identifier guifg=Seagreen
+"hi Identifier term=underline cterm=bold ctermfg=Cyan guifg=#40ffff
+
+"hi Repeat term=underline ctermfg=White guifg=white
+"hi Ignore guifg=bg ctermfg=black
+hi Error term=reverse ctermbg=Red ctermfg=White guibg=Red guifg=White
+hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=Yellow
+"Special Characters
+hi Special guibg=grey90 guifg=Slateblue gui=UNDERLINE
+
+hi operator guifg=gray25 ctermfg=Black term=bold cterm=bold gui=bold
diff --git a/.vim/colors/taqua.vim b/.vim/colors/taqua.vim
new file mode 100644
index 0000000..947ebc9
--- /dev/null
+++ b/.vim/colors/taqua.vim
@@ -0,0 +1,85 @@
+" Vim color file
+" Maintainer: TaQ <eustaquiorangel@yahoo.com>
+" Last Change: 18 March 2003
+" URL: http://taq.cjb.net
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name="taqua"
+
+hi Normal gui=NONE guifg=#303030 guibg=#FFFFFF
+hi NonText gui=BOLD guifg=#303030 guibg=#FFFFFF
+
+" Search
+hi IncSearch gui=BOLD guifg=#008000 guibg=#CCFF00
+hi Search gui=BOLD guifg=#008000 guibg=#CCFF00
+
+" Messages
+hi ErrorMsg gui=BOLD guifg=#FFFFFF guibg=#FF0000
+hi WarningMsg gui=BOLD guifg=#008000 guibg=#CCFF00
+
+" Split area
+hi StatusLine gui=BOLD guifg=#FFFFFF guibg=#0E8ED3
+hi StatusLineNC gui=BOLD guifg=#FFFFFF guibg=#0A6799
+
+" Diff
+hi DiffText gui=BOLD guifg=#FF0000 guibg=#FFEAE0
+hi DiffChange gui=BOLD guifg=#303030 guibg=#FFFFFF
+hi DiffDelete gui=NONE guifg=#FFFFFF guibg=#FF0000
+hi DiffAdd gui=NONE guifg=#008000 guibg=#00FF00
+
+" Cursor
+hi Cursor gui=BOLD guifg=#FFFFFF guibg=#000000
+hi lCursor gui=BOLD guifg=#f8f8f8 guibg=#162CF7
+hi CursorIM gui=NONE guifg=#f8f8f8 guibg=#162CF7
+
+" Fold
+hi Folded gui=BOLD guifg=#0E8ED3 guibg=#DBF2FF
+hi FoldColumn gui=NONE guifg=#0E8ED3 guibg=#DBF2FF
+
+" Other
+hi LineNr gui=BOLD guifg=#00A0FF guibg=#DBF2FF
+hi Directory gui=BOLD guifg=#0A6799 guibg=#FFFFFF
+hi NonText gui=BOLD guifg=#009999 guibg=#FFFFFF
+hi SpecialKey gui=BOLD guifg=#2020FF guibg=#FFFFFF
+hi Title gui=BOLD guifg=#0000A0 guibg=#FFFFFF
+hi Visual gui=NONE guifg=#404060 guibg=#dddde8
+
+" Syntax group
+" purple was #8000FF
+hi Comment gui=NONE guifg=#0E8ED3 guibg=#DBF2FF
+hi Constant gui=NONE guifg=#303030 guibg=#F5F5F5
+hi Error gui=BOLD guifg=#FF0000 guibg=#FFFFFF
+hi Identifier gui=NONE guifg=#1F89E0 guibg=#FFFFFF
+hi Ignore gui=NONE guifg=#f8f8f8 guibg=#FFFFFF
+hi PreProc gui=BOLD guifg=#0BBF20 guibg=#FFFFFF
+hi Special gui=NONE guifg=#0E8ED3 guibg=#DBF2FF
+hi Statement gui=BOLD guifg=#2E9BF4 guibg=#FFFFFF
+hi Todo gui=NONE guifg=#FF0070 guibg=#FFE0F4
+hi Type gui=BOLD guifg=#0971F9 guibg=#FFFFFF
+hi Underlined gui=UNDERLINE guifg=#0000ff guibg=NONE
+
+" HTML
+hi htmlLink gui=UNDERLINE guifg=#0000ff guibg=NONE
+hi htmlBold gui=BOLD
+hi htmlBoldItalic gui=BOLD,ITALIC
+hi htmlBoldUnderline gui=BOLD,UNDERLINE
+hi htmlBoldUnderlineItalic gui=BOLD,UNDERLINE,ITALIC
+hi htmlItalic gui=ITALIC
+hi htmlUnderline gui=UNDERLINE
+hi htmlUnderlineItalic gui=UNDERLINE,ITALIC
+
+" Scrollbar
+hi Scrollbar gui=BOLD guifg=#00C0FF guibg=#FFFFFF
+hi VertSplit gui=BOLD guifg=#FFFFFF guibg=#0E8ED3
+hi Visual gui=BOLD guifg=#FFFFFF guibg=#1679F9
+
+
diff --git a/.vim/colors/tcsoft.vim b/.vim/colors/tcsoft.vim
new file mode 100644
index 0000000..072831e
--- /dev/null
+++ b/.vim/colors/tcsoft.vim
@@ -0,0 +1,62 @@
+" Vim Farben-Datei
+" Ersteller: Ingo Fabbri <vim@tcsoft.net>
+" Letzte Änderung: 2003 May 13
+
+" Mein persönliches Farbschema. Es schont die Augen, da es keine grellen Farben verwendet.
+" Am Besten geignet für PHP
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let colors_name = "TCSoft"
+
+" Farb-Einstellungen für das GUI
+hi Normal guifg=#000000 guibg=#FFFFFF "Schwarze Schrift auf weißem Hintergrund
+
+hi Ignore guifg=bg
+
+hi Comment guifg=#000099 gui=italic "dunkelblau
+hi Constant guifg=#666666 gui=NONE "grau
+hi Special guifg=#FF0000 gui=NONE "rot
+hi Identifier guifg=#993300 gui=NONE "rostfarbig
+hi Statement guifg=#FF9900 gui=NONE "orange
+hi PreProc guifg=#009900 gui=NONE "dunkelgrün
+hi Type guifg=#FF9900 gui=bold "orange
+hi Cursor guifg=#000000 gui=reverse "schwarz
+hi LineNr guifg=#000000 gui=NONE "schwarz
+hi StatusLine guifg=#000000 gui=reverse,bold "schwarz
+
+hi link Function PreProc
+hi link String Constant
+hi link Character Constant
+
+hi! link MoreMsg Comment
+hi! link ErrorMsg Visual
+hi! link WarningMsg ErrorMsg
+hi! link Question Comment
+
+hi link Number Special
+hi link Boolean Constant
+hi link Float Number
+
+hi link Operator Identifier
+hi link Keyword Statement
+hi link Exception Statement
+hi link Include PreProc
+hi link Define PreProc
+hi link Macro PreProc
+
+hi link Conditional Statement
+hi link Repeat Statement
+hi link Label Statement
+
+hi link PreCondit PreProc
+hi link StorageClass Type
+hi link Structure Type
+hi link Typedef Type
+hi link SpecialChar Special
+hi link Delimiter Special
+hi link SpecialComment Comment
+hi link Debug Special
diff --git a/.vim/colors/tibet.vim b/.vim/colors/tibet.vim
new file mode 100644
index 0000000..48807bf
--- /dev/null
+++ b/.vim/colors/tibet.vim
@@ -0,0 +1,101 @@
+" Vim color file
+" Maintainer: Miguel Figueiredo
+
+" /usr/X11R6/lib/X11
+set background=dark
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name="tibet"
+
+hi Normal guifg=ivory guibg=darkred
+
+" highlight groups
+"hi Cursor guibg=khaki guifg=slategrey
+hi Cursor guibg=blue4 guifg=white
+"hi CursorIM
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+"hi ErrorMsg
+"hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
+hi VertSplit guibg=darkgreen guifg=white gui=none
+hi Folded guibg=darkred guifg=gold
+hi FoldColumn guibg=grey30 guifg=tan
+hi IncSearch guifg=slategrey guibg=khaki
+hi LineNr guifg=yellow guibg=darkred
+hi ModeMsg guifg=goldenrod
+hi MoreMsg guifg=SeaGreen
+hi NonText guifg=LightBlue guibg=darkred
+hi Question guifg=springgreen
+hi Search guibg=peru guifg=wheat
+hi SpecialKey guifg=yellowgreen
+hi StatusLine guibg=#c2bfa5 guifg=black gui=none
+hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
+hi Title guifg=indianred
+"hi Visual gui=none guifg=khaki guibg=olivedrab
+hi Visual gui=none guifg=white guibg=#003300
+"hi VisualNOS
+hi WarningMsg guifg=salmon
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=goldenrod
+hi Constant guifg=#ffa0a0
+"hi String guifg=blue
+hi Identifier guifg=palegreen
+hi Statement guifg=khaki
+hi PreProc guifg=#ffa0a0
+"hi Type guifg=darkkhaki
+hi Type guifg=khaki
+hi Special guifg=navajowhite
+"hi Underlined
+hi Ignore guifg=grey40
+"hi Error
+hi Todo guifg=yellow guibg=#003300
+
+" color terminal definitions
+hi SpecialKey ctermfg=darkgreen
+hi NonText cterm=bold ctermfg=darkblue
+hi Directory ctermfg=darkcyan
+hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
+hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
+hi Search cterm=NONE ctermfg=grey ctermbg=blue
+hi MoreMsg ctermfg=darkgreen
+hi ModeMsg cterm=NONE ctermfg=brown
+hi LineNr ctermfg=3
+hi Question ctermfg=green
+hi StatusLine cterm=bold,reverse
+hi StatusLineNC cterm=reverse
+hi VertSplit cterm=reverse
+hi Title ctermfg=5
+hi Visual cterm=reverse
+hi VisualNOS cterm=bold,underline
+hi WarningMsg ctermfg=1
+hi WildMenu ctermfg=0 ctermbg=3
+hi Folded ctermfg=darkgrey ctermbg=NONE
+hi FoldColumn ctermfg=darkgrey ctermbg=NONE
+hi DiffAdd ctermbg=4
+hi DiffChange ctermbg=5
+hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
+hi DiffText cterm=bold ctermbg=1
+hi Comment ctermfg=darkcyan
+hi Constant ctermfg=brown
+hi Special ctermfg=5
+hi Identifier ctermfg=6
+hi Statement ctermfg=3
+hi PreProc ctermfg=5
+hi Type ctermfg=2
+hi Underlined cterm=underline ctermfg=5
+hi Ignore ctermfg=darkgrey
+hi Error cterm=bold ctermfg=7 ctermbg=1
+
+
+"
diff --git a/.vim/colors/tolerable.vim b/.vim/colors/tolerable.vim
new file mode 100644
index 0000000..7b97b9a
--- /dev/null
+++ b/.vim/colors/tolerable.vim
@@ -0,0 +1,43 @@
+" Vim color file
+" Maintainer: Ian Langworth
+" Last Change: 2004 Dec 24
+" Email: <langworth.com>
+
+" Color settings inspired by BBEdit for Mac OS, plus I liked
+" the low-contrast comments from the 'oceandeep' colorscheme
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="tolerable"
+
+hi Cursor guifg=white guibg=darkgreen
+
+hi Normal gui=none guifg=black guibg=white
+hi NonText gui=none guifg=orange guibg=white
+
+hi Statement gui=none guifg=blue
+hi Special gui=none guifg=red
+hi Constant gui=none guifg=darkred
+hi Comment gui=none guifg=#555555
+hi Preproc gui=none guifg=darkcyan
+hi Type gui=none guifg=darkmagenta
+hi Identifier gui=none guifg=darkgreen
+hi Title gui=none guifg=black
+
+hi StatusLine gui=none guibg=#333333 guifg=white
+hi StatusLineNC gui=none guibg=#333333 guifg=white
+hi VertSplit gui=none guibg=#333333 guifg=white
+
+hi Visual gui=none guibg=green guifg=black
+hi Search gui=none guibg=yellow
+hi Directory gui=none guifg=darkblue
+hi WarningMsg gui=none guifg=red
+hi Error gui=none guifg=white guibg=red
+hi Todo gui=none guifg=black guibg=yellow
+
+hi MoreMsg gui=none
+hi ModeMsg gui=none
+
diff --git a/.vim/colors/tomatosoup.vim b/.vim/colors/tomatosoup.vim
new file mode 100644
index 0000000..7864aed
--- /dev/null
+++ b/.vim/colors/tomatosoup.vim
@@ -0,0 +1,80 @@
+" Vim color file
+" Maintainer: Michael Brailsford <brailsmt@yahoo.com>
+" Date: $Date: 2002/04/11 03:29:51 $
+" Version: $Revision: 1.4 $
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+" your pick:
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="tomatosoup"
+
+hi Normal guifg=black guibg=tomato1 ctermfg=14
+
+"Toggle semicolon matching at the end of lines
+nmap <silent> <leader>; :call ToggleSemicolonHighlighting()<cr>
+"{{{
+function! ToggleSemicolonHighlighting()
+ if exists("b:semicolon")
+ unlet b:semicolon
+ hi semicolon guifg=NONE gui=NONE ctermfg=NONE
+ else
+ syn match semicolon #;$#
+ hi semicolon guifg=red gui=bold ctermfg=1
+ let b:semicolon = 1
+ endif
+endfunction
+"}}}
+
+hi Cursor guifg=bg guibg=fg ctermfg=0 ctermbg=11
+"hi CursorIM
+hi Directory gui=bold
+hi DiffAdd guifg=yellow guibg=darkgreen ctermbg=0
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+hi ErrorMsg guibg=red ctermfg=1
+"hi VertSplit
+hi Folded guibg=darkred ctermbg=4 guifg=gold ctermfg=11 gui=bold
+hi FoldColumn guibg=darkred ctermbg=14 guifg=gold ctermfg=11 gui=bold
+"hi IncSearch
+hi LineNr guifg=yellow ctermfg=11
+hi ModeMsg guifg=yellow gui=bold
+"hi MoreMsg
+"hi NonText
+"hi Question
+hi Search guibg=yellow guifg=bg
+"hi SpecialKey
+hi StatusLine guifg=brown
+hi StatusLineNC guifg=darkred
+"hi Title
+hi Visual guifg=fg guibg=bg
+"hi VisualNOS
+"hi WarningMsg
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment guifg=pink ctermfg=10
+hi Constant guifg=lightmagenta gui=bold ctermfg=13
+hi String guifg=grey85 ctermfg=5
+hi Character guifg=violet ctermfg=5
+hi Number guifg=red ctermfg=5
+"hi Identifier
+hi Statement guifg=khaki1 gui=bold ctermfg=15 cterm=underline
+hi PreProc guifg=white gui=italic ctermfg=9
+hi Type guifg=yellow gui=bold ctermfg=3
+hi Special guifg=red gui=bold
+"hi Underlined
+"hi Ignore
+"hi Error
+hi Todo guifg=yellow guibg=blue gui=bold
diff --git a/.vim/colors/toothpik.vim b/.vim/colors/toothpik.vim
new file mode 100644
index 0000000..22e07a1
--- /dev/null
+++ b/.vim/colors/toothpik.vim
@@ -0,0 +1,45 @@
+set background=light
+highlight clear
+if exists( "syntax_on" )
+ syntax reset
+endif
+let g:colors_name="toothpik"
+
+highlight Comment term=bold guifg=Yellow
+highlight Constant term=underline guifg=Blue guibg=grey
+highlight Cursor gui=reverse guifg=red guibg=white
+highlight lCursor guifg=black guibg=green
+highlight DiffAdd term=bold guibg=LightBlue
+highlight DiffChange term=bold guibg=LightMagenta
+highlight DiffDelete term=bold gui=bold guifg=Blue guibg=LightCyan
+highlight DiffText term=reverse gui=bold guibg=Red
+highlight Directory term=bold guifg=Blue
+highlight Error term=reverse guifg=White guibg=Red
+highlight ErrorMsg term=standout guifg=White guibg=Red
+highlight Folded term=standout guifg=DarkBlue guibg=LightGrey
+highlight FoldColumn term=standout guifg=DarkBlue guibg=Grey
+highlight Identifier term=underline guifg=DarkCyan
+highlight Ignore guifg=bg
+highlight IncSearch term=reverse gui=reverse
+highlight LineNr term=underline guifg=Brown
+highlight MoreMsg term=bold gui=bold guifg=SeaGreen
+highlight ModeMsg term=bold gui=bold
+highlight NonText term=bold gui=bold guifg=Blue guibg=grey
+highlight Normal guibg=grey font='Fixedsys'
+highlight Question term=standout gui=bold guifg=SeaGreen
+highlight PreProc term=underline guifg=Purple
+highlight Search term=reverse guibg=Yellow
+highlight Special term=bold guifg=darkred guibg=grey
+highlight SpecialKey term=bold guifg=Blue
+highlight Statement term=bold gui=bold guifg=Brown
+highlight StatusLine term=bold,reverse gui=bold,reverse
+highlight StatusLineNC term=reverse gui=reverse
+highlight Title term=bold gui=bold guifg=Magenta
+highlight Todo term=standout guifg=Blue guibg=Yellow
+highlight Type term=underline gui=bold guifg=DarkGreen
+highlight Underlined term=underline gui=underline guifg=SlateBlue
+highlight VertSplit term=reverse gui=reverse
+highlight Visual term=reverse gui=reverse guifg=Yellow guibg=Black
+highlight VisualNOS term=bold,underline gui=bold,underline
+highlight WarningMsg term=standout guifg=Red
+highlight WildMenu term=standout guifg=Black guibg=Yellow
diff --git a/.vim/colors/torte.vim b/.vim/colors/torte.vim
new file mode 100644
index 0000000..f28ed60
--- /dev/null
+++ b/.vim/colors/torte.vim
@@ -0,0 +1,51 @@
+" Vim color file
+" Maintainer: Thorsten Maerz <info@netztorte.de>
+" Last Change: 2001 Jul 23
+" grey on black
+" optimized for TFT panels
+" $Revision: 1.1 $
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+"colorscheme default
+let g:colors_name = "torte"
+
+" hardcoded colors :
+" GUI Comment : #80a0ff = Light blue
+
+" GUI
+highlight Normal guifg=Grey80 guibg=Black
+highlight Search guifg=Black guibg=Red gui=bold
+highlight Visual guifg=Grey25 gui=bold
+highlight Cursor guifg=Black guibg=Green gui=bold
+highlight Special guifg=Orange
+highlight Comment guifg=#80a0ff
+highlight StatusLine guifg=blue guibg=white
+highlight Statement guifg=Yellow gui=NONE
+highlight Type gui=NONE
+
+" Console
+highlight Normal ctermfg=LightGrey ctermbg=Black
+highlight Search ctermfg=Black ctermbg=Red cterm=NONE
+highlight Visual cterm=reverse
+highlight Cursor ctermfg=Black ctermbg=Green cterm=bold
+highlight Special ctermfg=Brown
+highlight Comment ctermfg=Blue
+highlight StatusLine ctermfg=blue ctermbg=white
+highlight Statement ctermfg=Yellow cterm=NONE
+highlight Type cterm=NONE
+
+" only for vim 5
+if has("unix")
+ if v:version<600
+ highlight Normal ctermfg=Grey ctermbg=Black cterm=NONE guifg=Grey80 guibg=Black gui=NONE
+ highlight Search ctermfg=Black ctermbg=Red cterm=bold guifg=Black guibg=Red gui=bold
+ highlight Visual ctermfg=Black ctermbg=yellow cterm=bold guifg=Grey25 gui=bold
+ highlight Special ctermfg=LightBlue cterm=NONE guifg=LightBlue gui=NONE
+ highlight Comment ctermfg=Cyan cterm=NONE guifg=LightBlue gui=NONE
+ endif
+endif
+
diff --git a/.vim/colors/transparent.vim b/.vim/colors/transparent.vim
new file mode 100644
index 0000000..274cd8e
--- /dev/null
+++ b/.vim/colors/transparent.vim
@@ -0,0 +1,97 @@
+" Vim color file
+" Maintainer: Sir Raorn <raorn@altlinux.ru>
+" Last Change: Nov 10, 2002
+" URL: http://hell.binec.ru/
+
+" This color scheme uses "transparent" background (dark dark blue in gvim)
+" Looks really nice when vim (console) started in transparent aterm
+" But gvim is good either
+set background=dark
+
+" First remove all existing highlighting.
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="transparent"
+
+" default groups
+hi Normal ctermfg=Gray ctermbg=NONE guifg=Gray guibg=#00002A
+
+hi Cursor guifg=Black guibg=Green
+"hi CursorIM NONE guifg=Black guibg=Purple
+hi Directory ctermfg=White guifg=White
+hi DiffAdd ctermfg=White ctermbg=DarkCyan guifg=White guibg=DarkCyan
+hi DiffChange ctermfg=Black ctermbg=Gray guifg=Black guibg=DarkGray
+hi DiffDelete ctermfg=White ctermbg=DarkRed guifg=White guibg=DarkRed
+hi DiffText cterm=bold ctermfg=White ctermbg=Gray gui=bold guifg=White guibg=DarkGray
+hi ErrorMsg ctermfg=White ctermbg=DarkRed guifg=White guibg=DarkRed
+hi VertSplit cterm=reverse gui=reverse
+hi Folded cterm=bold ctermfg=Cyan ctermbg=NONE gui=bold guifg=Cyan guibg=DarkCyan
+hi FoldColumn ctermfg=Green ctermbg=NONE guifg=Green guibg=#00002A
+hi IncSearch ctermfg=White ctermbg=Black guifg=White guibg=Black
+hi LineNr ctermfg=Yellow guifg=DarkCyan
+hi ModeMsg cterm=bold ctermfg=White gui=bold guifg=White
+hi MoreMsg cterm=bold ctermfg=White gui=bold guifg=White
+hi NonText ctermfg=NONE guifg=NONE
+hi Question ctermfg=Green guifg=Green
+hi Search cterm=reverse ctermfg=fg ctermbg=NONE gui=reverse guifg=fg guibg=bg
+hi SpecialKey ctermfg=LightRed guifg=Red
+hi StatusLine cterm=bold,reverse ctermfg=White ctermbg=Black gui=bold,reverse guifg=White guibg=Black
+hi StatusLineNC cterm=reverse ctermfg=Gray ctermbg=Black gui=reverse guifg=DarkGray guibg=Black
+hi Title ctermfg=LightGreen gui=bold guifg=Green
+hi Visual cterm=inverse ctermfg=White ctermbg=DarkGray gui=inverse guifg=DarkGray guibg=Black
+hi VisualNOS cterm=bold,underline gui=bold,underline
+hi WarningMsg ctermfg=White ctermbg=DarkRed guifg=White guibg=DarkRed
+hi WildMenu cterm=bold ctermfg=Black ctermbg=Yellow gui=bold guifg=Black guibg=Yellow
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment ctermfg=DarkCyan guifg=DarkCyan
+
+hi Constant ctermfg=LightGreen guifg=LightGreen
+hi String ctermfg=Yellow guifg=Yellow
+hi Character ctermfg=Yellow guifg=Yellow
+"hi Number
+"hi Boolean
+"hi Float
+
+hi Identifier ctermfg=LightCyan guifg=LightCyan
+hi Function ctermfg=White guifg=White
+
+hi Statement ctermfg=Yellow guifg=Yellow
+"hi Conditional
+"hi Repeat
+hi Label ctermfg=White guifg=White
+hi Operator ctermfg=Green guifg=Green
+"hi Keyword
+hi Exception ctermfg=Black ctermbg=DarkRed guifg=Black guibg=DarkRed
+
+hi PreProc ctermfg=DarkGreen guifg=DarkGreen
+"hi Include
+"hi Define
+"hi Macro
+"hi PreCondit
+
+hi Type ctermfg=Green guifg=Green
+"hi StorageClass
+"hi Structure
+hi Typedef ctermfg=Red guifg=Red
+
+hi Special ctermfg=Red guifg=Red
+"hi SpecialChar
+hi Tag ctermfg=LightGreen guifg=LightGreen
+hi Delimiter ctermfg=Green guifg=Green
+"hi SpecialComment
+hi Debug ctermfg=White ctermbg=Black guifg=White guibg=Black
+
+hi Underlined cterm=underline gui=underline
+
+hi Ignore ctermfg=DarkBlue guifg=DarkBlue
+
+hi Error ctermfg=White ctermbg=DarkRed guifg=White guibg=DarkRed
+
+hi Todo ctermfg=Black ctermbg=Gray guifg=Black guibg=Gray
+
diff --git a/.vim/colors/turbo.vim b/.vim/colors/turbo.vim
new file mode 100644
index 0000000..c6fda54
--- /dev/null
+++ b/.vim/colors/turbo.vim
@@ -0,0 +1,68 @@
+" Vim color file
+" Maintainer: Bryant Casteel
+" Web Site: http://bethings.provoplatinum.com
+" Last Change: 2004 Jan. 22
+
+" turbo -- Intended to look like the color scheme
+" from Borland's Turbo C++ and Turbo Pascal.
+
+set bg=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "turbo"
+
+
+hi Normal guifg=yellow guibg=#000040 ctermfg=yellow ctermbg=black
+hi ErrorMsg guifg=#ffffff guibg=#287eff ctermfg=white ctermbg=lightblue
+hi Visual guifg=#8080ff guibg=fg gui=reverse ctermfg=lightblue ctermbg=fg cterm=reverse
+hi VisualNOS guifg=#8080ff guibg=fg gui=reverse,underline ctermfg=lightblue ctermbg=fg cterm=reverse,underline
+hi Todo guifg=#d14a14 guibg=#1248d1 ctermfg=red ctermbg=darkblue
+hi Search guifg=#90fff0 guibg=#2050d0 ctermfg=white ctermbg=darkblue cterm=underline
+hi IncSearch guifg=#b0ffff guibg=#2050d0 ctermfg=darkblue ctermbg=gray
+
+
+hi SpecialKey guifg=cyan ctermfg=darkcyan
+hi Directory guifg=cyan ctermfg=cyan
+hi Title guifg=magenta gui=none ctermfg=magenta cterm=bold
+hi WarningMsg guifg=red ctermfg=red
+hi WildMenu guifg=yellow guibg=black ctermfg=yellow ctermbg=black cterm=none
+hi ModeMsg guifg=#22cce2 ctermfg=lightblue
+hi MoreMsg guifg=darkgreen ctermfg=darkgreen
+hi Question guifg=green gui=none ctermfg=green cterm=none
+hi NonText guifg=#0030ff ctermfg=darkblue
+
+" Split window status bar
+hi StatusLine guifg=blue guibg=yellow gui=none ctermfg=blue ctermbg=gray cterm=none
+hi StatusLineNC guifg=black guibg=green gui=none ctermfg=black ctermbg=gray cterm=none
+hi VertSplit guifg=black guibg=orange gui=none ctermfg=black ctermbg=gray cterm=none
+
+" Folded code
+hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold
+hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold
+hi LineNr guifg=#90f020 ctermfg=green cterm=none
+
+
+hi DiffAdd guibg=darkblue ctermbg=darkblue cterm=none
+hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete guifg=Blue guibg=DarkCyan gui=bold ctermfg=blue ctermbg=cyan
+hi DiffText guibg=Red gui=bold ctermbg=red cterm=bold
+
+" Cursor
+hi Cursor guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
+hi lCursor guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
+
+" Syntax highlighting:
+hi Comment guifg=darkcyan ctermfg=darkcyan
+hi Constant guifg=darkred ctermfg=darkred cterm=none
+hi Special guifg=magenta gui=none ctermfg=magenta cterm=none
+hi Identifier guifg=green ctermfg=green cterm=none
+hi Statement guifg=white gui=bold ctermfg=white cterm=bold
+hi PreProc guifg=darkgreen gui=none ctermfg=darkgreen cterm=none
+hi type guifg=grey gui=bold ctermfg=grey cterm=bold
+hi Underlined gui=underline cterm=underline
+hi Ignore guifg=bg ctermfg=bg
+
+
diff --git a/.vim/colors/umber-green.vim b/.vim/colors/umber-green.vim
new file mode 100644
index 0000000..d1743a1
--- /dev/null
+++ b/.vim/colors/umber-green.vim
@@ -0,0 +1,89 @@
+" Vim color file
+" Maintainer: horrorvacui-at-gmx.net
+" Last Change: today... oh yes, it's 16.9.03
+" URL:
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+" your pick:
+set background=dark " or light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="umber-green"
+
+"hi Normal
+
+" OR
+
+" highlight clear Normal
+" set background&
+" highlight clear
+" if &background == "light"
+" highlight Error ...
+" ...
+" else
+" highlight Error ...
+" ...
+" endif
+
+" A good way to see what your colorscheme does is to follow this procedure:
+" :w
+" :so %
+"
+" Then to see what the current setting is use the highlight command.
+" For example,
+" :hi Cursor
+" gives
+" Cursor xxx guifg=bg guibg=fg
+
+" Uncomment and complete the commands you want to change from the default.
+
+hi Cursor guibg=#ffffff
+"hi CursorIM
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+"hi ErrorMsg
+"hi VertSplit
+"hi Folded
+"hi FoldColumn
+"hi IncSearch
+hi LineNr guifg=#e2844d guibg=#000000
+"hi ModeMsg
+"hi MoreMsg
+"hi NonText
+"hi Question
+"hi Search
+"hi SpecialKey
+hi StatusLine guifg=#ffffff
+hi StatusLineNC guifg=#ffffff
+"hi Title
+"hi Visual
+"hi VisualNOS
+"hi WarningMsg
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Normal guifg=#eeaa11 guibg=#333333
+hi Comment guifg=#ff5555
+hi Constant guifg=#eeaa11
+hi Identifier guifg=#0000ff
+hi Statement guifg=#77ee44
+hi PreProc guifg=#ff0000
+hi Type guifg=#eecc88
+hi Special guifg=#ddffcc
+"hi Underlined
+"hi Ignore
+"hi Error
+"hi Todo
+
diff --git a/.vim/colors/vc.vim b/.vim/colors/vc.vim
new file mode 100644
index 0000000..53ecc22
--- /dev/null
+++ b/.vim/colors/vc.vim
@@ -0,0 +1,24 @@
+" Vim color file
+" Maintainer: Vladimir Vrzic <random@bsd.org.yu>
+" Last Change: 28. june 2003.
+" URL: http://galeb.etf.bg.ac.yu/~random/pub/vim/
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="vc"
+
+hi Comment gui=NONE guifg=SeaGreen guibg=NONE
+hi Constant gui=NONE guifg=#004488 guibg=NONE
+"hi Identifier gui=NONE guifg=Blue guibg=NONE
+hi Statement gui=NONE guifg=Blue guibg=NONE
+hi PreProc gui=NONE guifg=Blue guibg=NONE
+hi Type gui=NONE guifg=Blue guibg=NONE
+hi Special gui=NONE guifg=SteelBlue guibg=NONE
+"hi Underlined
+"hi Ignore
+"hi Error
+"hi Todo
+
diff --git a/.vim/colors/vcbc.vim b/.vim/colors/vcbc.vim
new file mode 100644
index 0000000..07777c3
--- /dev/null
+++ b/.vim/colors/vcbc.vim
@@ -0,0 +1,31 @@
+" Vim color file
+" Maintainer: Rajas Sambhare <rajas dot sambhare squigglylittleA gmail dot com>
+" Last Change: Nov 18, 2004
+" Version: 1.0
+" Based on the colors for Visual C++ 6.0 and Beyond Compare for diffs.
+" Inspired by vc.vim by Vladimir Vrzic
+
+set background=light
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="vcbc"
+
+hi Normal cterm=NONE ctermfg=Black ctermbg=White gui=NONE guifg=NONE guibg=NONE
+hi NonText cterm=NONE ctermfg=Black ctermbg=Grey gui=NONE guifg=NONE guibg=LightGrey
+hi LineNr cterm=NONE ctermfg=Black ctermbg=LightGrey gui=NONE guifg=NONE guibg=LightGrey
+hi Comment cterm=NONE ctermfg=DarkGreen ctermbg=White gui=italic guifg=DarkGreen guibg=NONE
+hi Constant cterm=NONE ctermfg=Red ctermbg=White gui=NONE guifg=Red guibg=NONE
+hi Identifier cterm=NONE ctermfg=LightBlue ctermbg=White gui=NONE guifg=LightBlue guibg=NONE
+hi Statement cterm=bold ctermfg=Blue ctermbg=White gui=bold guifg=Blue guibg=NONE
+hi PreProc cterm=NONE ctermfg=DarkRed ctermbg=White gui=NONE guifg=DarkRed guibg=NONE
+hi Type cterm=NONE ctermfg=Blue ctermbg=White gui=NONE guifg=Blue guibg=NONE
+hi Underlined cterm=NONE ctermfg=Black ctermbg=White gui=underline guifg=NONE guibg=NONE
+hi Error cterm=NONE ctermfg=Yellow ctermbg=Red gui=NONE guifg=Yellow guibg=Red
+hi Todo cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=NONE guibg=LightYellow
+"Diff colors
+hi DiffAdd cterm=NONE ctermfg=Red ctermbg=LightGrey gui=NONE guifg=Red guibg=#fff0f0
+hi DiffChange cterm=NONE ctermfg=Red ctermbg=LightGrey gui=NONE guifg=Red guibg=#fff0f0
+hi DiffText cterm=NONE ctermfg=White ctermbg=DarkRed gui=bold,italic guifg=Red guibg=#fff0f0
+hi DiffDelete cterm=NONE ctermfg=White ctermbg=LightGrey gui=NONE guifg=DarkGrey guibg=#f0f0f0
diff --git a/.vim/colors/white.vim b/.vim/colors/white.vim
new file mode 100644
index 0000000..25d055b
--- /dev/null
+++ b/.vim/colors/white.vim
@@ -0,0 +1,62 @@
+" Vim color file
+" created by mksa on 30.10.2003 10:58:20
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+
+
+set background=light
+" First remove all existing highlighting.
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name="white"
+
+" color terminal definitions
+hi Normal ctermfg=black ctermbg=white guifg=black guibg=white
+hi SpecialKey ctermfg=darkgreen guifg=darkgreen
+hi NonText ctermfg=black ctermbg=white guifg=black guibg=white
+hi Directory ctermfg=darkcyan guifg=darkcyan
+hi ErrorMsg ctermfg=lightred ctermbg=yellow guifg=lightred guibg=yellow
+hi IncSearch ctermfg=white ctermbg=black guifg=white guibg=black
+hi Search ctermfg=white ctermbg=black guifg=white guibg=black
+hi MoreMsg ctermfg=darkgreen guifg=darkgreen
+hi ModeMsg ctermfg=red guifg=red
+hi LineNr ctermfg=yellow ctermbg=darkgrey guifg=yellow guibg=darkgrey
+hi Question ctermfg=darkgreen guifg=darkgreen
+"hi StatusLine cterm=reverse
+hi StatusLineNC cterm=reverse
+hi VertSplit cterm=reverse
+hi Title ctermfg=lightred ctermbg=yellow guifg=red
+hi Visual cterm=reverse
+hi VisualNOS cterm=reverse
+hi WarningMsg ctermfg=darkblue guifg=darkblue
+hi WildMenu ctermfg=black ctermbg=darkcyan guifg=black guibg=darkcyan
+hi Folded ctermfg=yellow ctermbg=darkgrey guifg=yellow guibg=darkgrey
+hi FoldColumn ctermfg=yellow ctermbg=darkgrey guifg=yellow guibg=darkgrey
+hi DiffAdd ctermfg=white ctermbg=red guifg=white guifg=red
+hi DiffChange ctermfg=yellow ctermbg=magenta guifg=yellow guifg=magenta
+hi DiffDelete ctermfg=red ctermbg=brown guifg=red guibg=brown
+hi DiffText ctermbg=blue guibg=blue
+
+hi Comment ctermfg=white ctermbg=darkgrey guifg=white guibg=darkgrey
+hi Constant ctermfg=darkblue guifg=darkblue
+hi Special ctermfg=darkred guifg=darkred
+hi Identifier ctermfg=darkmagenta guifg=darkmagenta
+hi Statement ctermfg=blue guifg=blue
+hi Operator ctermfg=blue guifg=blue
+hi PreProc ctermfg=darkmagenta guifg=darkmagenta
+hi Type ctermfg=blue guifg=blue
+hi Underlined ctermbg=Yellow ctermfg=blue guifg=blue
+hi Ignore ctermfg=grey guifg=grey
+hi Error ctermfg=white ctermbg=red guifg=white guibg=red
+hi Todo ctermfg=white ctermbg=darkgreen guifg=white guibg=darkgreen
+hi String ctermfg=darkgreen guifg=darkgreen
+hi Number ctermfg=magenta guifg=magenta
+
+
+"vim: sw=4
diff --git a/.vim/colors/whitedust.vim b/.vim/colors/whitedust.vim
new file mode 100644
index 0000000..a12dc7d
--- /dev/null
+++ b/.vim/colors/whitedust.vim
@@ -0,0 +1,62 @@
+set background=light
+hi clear
+
+hi Boolean guifg=#235C5C gui=bold
+hi Character guifg=#235C5C gui=bold
+hi Comment guifg=#808080
+hi Condtional guifg=#700000
+hi Constant guifg=#235C5C gui=bold
+hi Cursor guifg=#FFFFFF guibg=#515151
+hi Debug guifg=#235C5C gui=bold
+hi Define guifg=#003050 gui=bold
+hi Delimiter guifg=#707070
+hi DiffAdd guibg=#9EC3B9
+hi DiffChange guibg=#CCCCCC
+hi DiffDelete guifg=#CCCCCC guibg=#B9B9B9 gui=none
+hi DiffText guifg=#000000 guibg=#E0E0E0 gui=bold
+hi Directory guifg=#000000 gui=bold
+hi Error guifg=#FFFFFF guibg=#FF0000
+hi ErrorMsg guifg=#FFFFFF guibg=#FF3F30
+hi Exception guifg=#700000 gui=underline
+hi Float guifg=#636C4C
+hi FoldColumn guifg=#235C5C guibg=#B9B9B9
+hi Folded guifg=#235C5C guibg=#CCCCCC
+hi Function guifg=#000070
+hi Identifier guifg=#000000
+hi Include guifg=#003050 gui=bold
+hi IncSearch guifg=#FFFFFF guibg=#3EA399
+hi Keyword guifg=#000000 gui=bold
+hi Label guifg=#700000 gui=underline
+hi LineNr guifg=#808080 guibg=#B9B9B9
+hi Macro guifg=#003050 gui=bold
+hi ModeMsg guifg=#235C5C gui=bold
+hi MoreMsg guifg=#000000 gui=bold
+hi NonText guifg=#E0E0E0
+hi Normal guifg=#333333 guibg=#C0C0C0
+hi Number guifg=#535F5C
+hi Operator guifg=#000000
+hi PreCondit guifg=#205070 gui=bold
+hi PreProc guifg=#003050 gui=bold
+hi Question guifg=#000000 gui=bold
+hi Repeat guifg=#700000 gui=underline
+hi Search guifg=#FFFFFF guibg=#3EA399
+hi SpecialChar guifg=#235C5C gui=bold
+hi SpecialComment guifg=#235C5C gui=bold
+hi Special guifg=#808080
+hi SpecialKey guifg=#818181
+hi Statement guifg=#700000
+hi StatusLine guifg=#CCCCCC guibg=#0E7369
+hi StatusLineNC guifg=#CCCCCC guibg=#333333
+hi StorageClass guifg=#000000 gui=bold
+hi String guifg=#336C6C
+hi Structure guifg=#000000 gui=bold,underline
+hi Tag guifg=#235C5C gui=bold
+hi Title guifg=#000000 guibg=#CCCCCC gui=bold
+hi Todo guifg=#000000 guibg=#FFFFFF gui=bold
+hi Typedef guifg=#000000 gui=bold,underline
+hi Type guifg=#000000 gui=bold
+hi VertSplit guifg=#CCCCCC guibg=#333333
+hi Visual guifg=#CCCCCC guibg=#0E7369 gui=reverse
+hi VisualNOS guifg=#CCCCCC guibg=#0E7369 gui=bold,underline
+hi WarningMsg guifg=#000000 guibg=#CCCCCC gui=bold
+hi WildMenu guifg=#FFFFFF guibg=#235C5C
diff --git a/.vim/colors/wintersday.vim b/.vim/colors/wintersday.vim
new file mode 100644
index 0000000..9a77f7e
--- /dev/null
+++ b/.vim/colors/wintersday.vim
@@ -0,0 +1,60 @@
+" Vim color file
+" Mark Thomas <mark.thomas@bigswamp.org>
+" Sun Feb 16, 2003
+
+" This color scheme uses a dark background.
+
+" First remove all existing highlighting.
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "wintersday"
+
+hi Normal guifg=#CCCCCC guibg=#000000
+
+hi Cursor gui=NONE guifg=#B9D3EE guibg=#8B8878
+"hi CursorIM
+hi Directory gui=NONE guifg=#FFFFFF guibg=#000000
+hi DiffAdd gui=NONE guifg=#A0D0FF guibg=#0020A0
+hi DiffChange gui=NONE guifg=#E03870 guibg=#601830
+hi DiffDelete gui=NONE guifg=#A0D0FF guibg=#0020A0
+hi DiffText gui=NONE guifg=#FF9933 guibg=#A02860
+hi ErrorMsg gui=BOLD guifg=#FF6347 guibg=NONE
+hi VertSplit gui=BOLD guifg=#FFFFFF guibg=#8B4513
+hi Folded gui=NONE guifg=#40F0F0 guibg=#005080
+hi FoldColumn gui=NONE guifg=#40C0FF guibg=#00305C
+hi IncSearch gui=UNDERLINE guifg=#FFD700 guibg=#778899
+hi LineNr gui=NONE guifg=#696969
+hi ModeMsg gui=BOLD guifg=#990000 guibg=NONE
+hi MoreMsg gui=BOLD guifg=#CC6666 guibg=NONE
+hi NonText gui=BOLD guifg=#CC00FF guibg=NONE
+hi Question gui=BOLD guifg=#CC00FF guibg=NONE
+hi Search gui=NONE guifg=#FFD700 guibg=#778899
+hi SpecialKey gui=BOLD guifg=#CCCCCC guibg=NONE
+hi StatusLine gui=BOLD guifg=#FFFFFF guibg=#8B4513
+hi StatusLineNC gui=BOLD guifg=#8B4513 guibg=#FFFFFF
+hi Title gui=BOLD guifg=#CCCCCC guibg=NONE
+hi Visual gui=NONE guifg=#B9D3EE guibg=#8B8878
+"hi VisualNOS
+hi WarningMsg gui=BOLD guifg=#FFA0FF guibg=NONE
+hi WildMenu gui=NONE guifg=#000000 guibg=#a0a0ff
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+hi Comment gui=NONE guifg=#6699CC guibg=NONE
+hi Constant gui=NONE guifg=#99CCFF guibg=NONE
+hi Identifier gui=NONE guifg=#FFD700 guibg=NONE
+hi Statement gui=NONE guifg=#CC6666 guibg=NONE
+hi PreProc gui=NONE guifg=#40F0A0 guibg=NONE
+hi Type gui=NONE guifg=#B0C4DE guibg=NONE
+hi Special gui=NONE guifg=#00FFCC guibg=NONE
+hi Underlined gui=NONE guifg=#FFFFFF guibg=NONE
+hi Ignore gui=NONE guifg=#000000 guibg=NONE
+hi Error gui=NONE guifg=#FFFFFF guibg=#FF0088
+hi Todo gui=BOLD guifg=#FFA0A0 guibg=NONE
+hi Number gui=NONE guifg=#FFCCCC guibg=NONE
diff --git a/.vim/colors/wombat.vim b/.vim/colors/wombat.vim
new file mode 100644
index 0000000..9ad1e56
--- /dev/null
+++ b/.vim/colors/wombat.vim
@@ -0,0 +1,51 @@
+" Maintainer: Lars H. Nielsen (dengmao@gmail.com)
+" Last Change: January 22 2007
+
+set background=dark
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "wombat"
+
+
+" Vim >= 7.0 specific colors
+if version >= 700
+ hi CursorLine guibg=#2d2d2d
+ hi CursorColumn guibg=#2d2d2d
+ hi MatchParen guifg=#f6f3e8 guibg=#857b6f gui=bold
+ hi Pmenu guifg=#f6f3e8 guibg=#444444
+ hi PmenuSel guifg=#000000 guibg=#cae682
+endif
+
+" General colors
+hi Cursor guifg=NONE guibg=#656565 gui=none
+hi Normal guifg=#f6f3e8 guibg=#242424 gui=none
+hi NonText guifg=#808080 guibg=#303030 gui=none
+hi LineNr guifg=#857b6f guibg=#000000 gui=none
+hi StatusLine guifg=#f6f3e8 guibg=#444444 gui=italic
+hi StatusLineNC guifg=#857b6f guibg=#444444 gui=none
+hi VertSplit guifg=#444444 guibg=#444444 gui=none
+hi Folded guibg=#384048 guifg=#a0a8b0 gui=none
+hi Title guifg=#f6f3e8 guibg=NONE gui=bold
+hi Visual guifg=#f6f3e8 guibg=#444444 gui=none
+hi SpecialKey guifg=#808080 guibg=#343434 gui=none
+
+" Syntax highlighting
+hi Comment guifg=#99968b gui=italic
+hi Todo guifg=#8f8f8f gui=italic
+hi Constant guifg=#e5786d gui=none
+hi String guifg=#95e454 gui=italic
+hi Identifier guifg=#cae682 gui=none
+hi Function guifg=#cae682 gui=none
+hi Type guifg=#cae682 gui=none
+hi Statement guifg=#8ac6f2 gui=none
+hi Keyword guifg=#8ac6f2 gui=none
+hi PreProc guifg=#e5786d gui=none
+hi Number guifg=#e5786d gui=none
+hi Special guifg=#e7f6da gui=none
+
+
diff --git a/.vim/colors/xemacs.vim b/.vim/colors/xemacs.vim
new file mode 100644
index 0000000..c47607c
--- /dev/null
+++ b/.vim/colors/xemacs.vim
@@ -0,0 +1,46 @@
+
+" Vim color file
+" Maintainer: tranquility@portugalmail.pt
+" Last Change: 5 June 2002
+
+
+" cool help screens
+" :he group-name
+" :he highlight-groups
+" :he cterm-colors
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="xemacs"
+
+hi Normal guibg=#cdcecd guifg=black
+hi Cursor guibg=red guifg=grey gui=bold
+hi VertSplit guibg=grey60 guifg=black gui=none
+hi Folded guibg=royalblue3 guifg=white
+hi FoldColumn guibg=royalblue4 guifg=white
+hi ModeMsg guifg=#cdcecd guibg=black
+hi MoreMsg guifg=#cdcecd guibg=black
+hi NonText guifg=black guibg=#cdcecd gui=none
+hi Question guifg=black
+hi Search guibg=#aceeee
+hi SpecialKey guifg=navyblue
+hi Special guifg=navyblue
+hi StatusLine guibg=#b7b7b7 guifg=black gui=none
+hi StatusLineNC guibg=#a6b7b7 guifg=black gui=none
+hi Title guifg=bisque3
+hi Subtitle guifg=black
+hi Visual guibg=#a4a5a3 guifg=black gui=none
+hi WarningMsg guibg=#cdcecd guifg=black gui=bold
+hi Comment guifg=#00008b
+hi Constant guifg=#008900
+hi Identifier guibg=#cdcecd guifg=black
+hi Statement guifg=royalblue4
+hi PreProc guifg=#0000cd
+hi Type guifg=#4a81b4 gui=NONE
+hi Ignore guifg=grey29
+hi Todo guibg=gold guifg=black
+hi WildMenu guibg=#b7b7b7 guibg=grey91
+hi Directory guibg=#cdcecd guifg=navyblue
diff --git a/.vim/colors/xian.vim b/.vim/colors/xian.vim
new file mode 100644
index 0000000..3cc02d8
--- /dev/null
+++ b/.vim/colors/xian.vim
@@ -0,0 +1,50 @@
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "xian"
+
+hi Comment guifg=#C0C0C0 guibg=#946464 gui=underline
+hi Constant guifg=#00FF80 guibg=#946464 gui=none
+hi Cursor guifg=#00FFFF guibg=#000000 gui=reverse
+hi DiffAdd guifg=#00FFFF guibg=#754F4F gui=bold,underline
+hi DiffChange guibg=#754F4F
+hi DiffDelete guifg=#C0C0C0 guibg=#754F4F gui=bold
+hi DiffText guifg=#000000 guibg=#FF0000 gui=bold,underline
+hi Directory guifg=#FFFF00 guibg=#946464 gui=underline
+hi Error guifg=#000000 guibg=#FF0000 gui=bold,underline
+hi ErrorMsg guifg=#000000 guibg=#FF0000 gui=bold,underline
+hi FoldColumn guifg=#ffff74 guibg=#754F4F gui=bold
+hi Folded guifg=#ffff74 guibg=#754F4F gui=underline
+hi Identifier guifg=#EEAA73 guibg=#946464 gui=none
+hi Ignore guifg=#946464 guibg=#946464 gui=none
+hi IncSearch guifg=#FFFFFF guibg=#946464 gui=reverse
+hi lCursor guifg=#FFFFFF guibg=#946464 gui=none
+hi LineNr guifg=#C0C0C0 guibg=#754F4F gui=bold
+hi Match guifg=#0000FF guibg=#FFFF00 gui=bold,reverse
+hi ModeMsg guifg=#FFFFFF guibg=#946464 gui=bold
+hi MoreMsg guifg=#d174a8 guibg=#946464 gui=bold
+hi NonText guifg=#C0C0C0 guibg=#946464 gui=none
+hi Normal guifg=#FFFFFF guibg=#946464 gui=none
+hi PreProc guifg=#FFFF00 guibg=#946464 gui=none
+hi Question guifg=#d174a8 guibg=#946464 gui=bold
+hi Search guifg=#FFFF00 guibg=#FF8500 gui=underline
+hi Special guifg=#bfbfef guibg=#946464 gui=none
+hi SpecialKey guifg=#FFFF00 guibg=#946464 gui=none
+hi Statement guifg=#5ad5d5 guibg=#946464 gui=bold
+hi StatusLine guifg=#000000 guibg=#FFFFFF gui=bold
+hi StatusLineNC guifg=#C0C0C0 guibg=#754F4F gui=bold
+hi Title guifg=#74FF74 guibg=#946464 gui=bold
+hi Todo guifg=#FFFF00 guibg=#0000FF gui=none
+hi Type guifg=#FF74A8 guibg=#946464 gui=bold
+hi User1 guifg=#999933 guibg=#45637F gui=bold
+hi User2 guifg=#E7E77F guibg=#45637F gui=bold
+hi User3 guifg=#000000 guibg=#45637F gui=bold
+hi User4 guifg=#33CC99 guibg=#45637F gui=bold
+hi VertSplit guifg=#FFFF00 guibg=#000000 gui=bold
+hi Visual guifg=#FFFF00 guibg=#6B959B gui=none
+hi VisualNOS guifg=#FFFFFF guibg=#946464 gui=underline
+hi WarningMsg guifg=#000000 guibg=#FF0000 gui=bold,underline
+hi WildMenu guifg=#FFFFFF guibg=#0000FF gui=none
diff --git a/.vim/colors/zenburn.vim b/.vim/colors/zenburn.vim
new file mode 100644
index 0000000..af9c07f
--- /dev/null
+++ b/.vim/colors/zenburn.vim
@@ -0,0 +1,133 @@
+" Vim color file
+" Maintainer: Jani Nurminen <jani.nurminen@intellitel.com>
+" Last Change: $Id: zenburn.vim,v 1.13 2002/09/16 18:03:49 jnurmine Exp $
+" URL: Not yet...
+" License: GPL
+"
+" Nothing too fancy, just some alien fruit salad to keep you in the zone.
+" This syntax file was designed to be used with dark environments and
+" low light situations. Of course, if it works during a daybright office, go
+" ahead :)
+"
+" Owes heavily to other Vim color files! With special mentions
+" to "BlackDust", "Camo" and "Desert".
+"
+" To install, copy to ~/.vim/colors directory. Then :colorscheme zenburn.
+" See also :help syntax
+"
+" CONFIGURABLE PARAMETERS:
+"
+" You can use the default (don't set any parameters), or you can
+" set some parameters to tweak the Zenlook colours.
+"
+" * To get more contrast to the Visual selection, use
+"
+" let g:zenburn_alternate_Visual = 1
+"
+" * To use alternate colouring for Error message, use
+"
+" let g:zenburn_alternate_Error = 1
+"
+" * The new default for Include is a duller orang.e To use the original
+" colouring for Include, use
+"
+" let g:zenburn_alternate_Include = 1
+"
+" * To turn the parameter(s) back to defaults, use unlet.
+"
+" That's it, enjoy!
+"
+" TODO
+" - IME colouring (CursorIM)
+" - obscure syntax groups: check and colourize
+" - add more groups if necessary
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name="zenburn"
+
+hi Boolean guifg=#dca3a3
+hi Character guifg=#dca3a3 gui=bold
+hi Comment guifg=#7f9f7f
+hi Conditional guifg=#f0dfaf gui=bold
+hi Constant guifg=#dca3a3 gui=bold
+hi Cursor guifg=#000d18 guibg=#8faf9f gui=bold
+hi Debug guifg=#dca3a3 gui=bold
+hi Define guifg=#ffcfaf gui=bold
+hi Delimiter guifg=#8f8f8f
+hi DiffAdd guifg=#709080 guibg=#313c36 gui=bold
+hi DiffChange guibg=#333333
+hi DiffDelete guifg=#333333 guibg=#464646
+hi DiffText guifg=#ecbcbc guibg=#41363c gui=bold
+hi Directory guifg=#dcdccc gui=bold
+hi ErrorMsg guifg=#60b48a guibg=#3f3f3f gui=bold
+hi Exception guifg=#c3bf9f gui=bold
+hi Float guifg=#c0bed1
+hi FoldColumn guifg=#93b3a3 guibg=#3f4040
+hi Folded guifg=#93b3a3 guibg=#3f4040
+hi Function guifg=#efef8f
+hi Identifier guifg=#efdcbc
+hi IncSearch guibg=#f8f893 guifg=#385f38
+hi Keyword guifg=#f0dfaf gui=bold
+hi Label guifg=#dfcfaf gui=underline
+hi LineNr guifg=#7f8f8f guibg=#464646
+hi Macro guifg=#ffcfaf gui=bold
+hi ModeMsg guifg=#ffcfaf gui=none
+hi MoreMsg guifg=#ffffff gui=bold
+hi NonText guifg=#404040
+hi Normal guifg=#dcdccc guibg=#3f3f3f
+hi Number guifg=#8cd0d3
+hi Operator guifg=#f0efd0
+hi PreCondit guifg=#dfaf8f gui=bold
+hi PreProc guifg=#ffcfaf gui=bold
+hi Question guifg=#ffffff gui=bold
+hi Repeat guifg=#ffd7a7 gui=bold
+hi Search guifg=#ffffe0 guibg=#385f38
+hi SpecialChar guifg=#dca3a3 gui=bold
+hi SpecialComment guifg=#82a282 gui=bold
+hi Special guifg=#cfbfaf
+hi SpecialKey guifg=#9ece9e
+hi Statement guifg=#e3ceab guibg=#3f3f3f gui=none
+hi StatusLine guifg=#1e2320 guibg=#acbc90
+hi StatusLineNC guifg=#2e3330 guibg=#88b090
+hi StorageClass guifg=#c3bf9f gui=bold
+hi String guifg=#cc9393
+hi Structure guifg=#efefaf gui=bold
+hi Tag guifg=#dca3a3 gui=bold
+hi Title guifg=#efefef guibg=#3f3f3f gui=bold
+hi Todo guifg=#7faf8f guibg=#3f3f3f gui=bold
+hi Typedef guifg=#dfe4cf gui=bold
+hi Type guifg=#dfdfbf gui=bold
+hi Underlined guifg=#dcdccc guibg=#3f3f3f gui=underline
+hi VertSplit guifg=#303030 guibg=#688060
+hi VisualNOS guifg=#333333 guibg=#f18c96 gui=bold,underline
+hi WarningMsg guifg=#ffffff guibg=#333333 gui=bold
+hi WildMenu guibg=#2c302d guifg=#cbecd0 gui=underline
+
+if exists("g:zenburn_alternate_Visual")
+ " Visual with more contrast, thanks to Steve Hall & Cream posse
+ hi Visual guifg=#000000 guibg=#71d3b4
+else
+ " use default visual
+ hi Visual guifg=#233323 guibg=#71d3b4
+endif
+
+if exists("g:zenburn_alternate_Error")
+ " use a bit different Error
+ hi Error guifg=#ef9f9f guibg=#201010 gui=bold
+else
+ " default
+ hi Error guifg=#e37170 guibg=#332323 gui=none
+endif
+
+if exists("g:zenburn_alternate_Include")
+ " original setting
+ hi Include guifg=#ffcfaf gui=bold
+else
+ " new, less contrasted one
+ hi Include guifg=#dfaf8f gui=bold
+endif
+ " TODO check every syntax group that they're ok
diff --git a/.vim/compiler/ghc.vim b/.vim/compiler/ghc.vim
new file mode 100644
index 0000000..77a36ce
--- /dev/null
+++ b/.vim/compiler/ghc.vim
@@ -0,0 +1,470 @@
+
+" Vim Compiler File
+" Compiler: GHC
+" Maintainer: Claus Reinke <claus.reinke@talk21.com>
+" Last Change: 21/04/2009
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+
+" ------------------------------ paths & quickfix settings first
+"
+
+if exists("current_compiler") && current_compiler == "ghc"
+ finish
+endif
+let current_compiler = "ghc"
+
+let s:scriptname = "ghc.vim"
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname.": can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+let ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+if (!exists("b:ghc_staticoptions"))
+ let b:ghc_staticoptions = ''
+endif
+
+" set makeprg (for quickfix mode)
+execute 'setlocal makeprg=' . g:ghc . '\ ' . escape(b:ghc_staticoptions,' ') .'\ -e\ :q\ %'
+"execute 'setlocal makeprg=' . g:ghc .'\ -e\ :q\ %'
+"execute 'setlocal makeprg=' . g:ghc .'\ --make\ %'
+
+" quickfix mode:
+" fetch file/line-info from error message
+" TODO: how to distinguish multiline errors from warnings?
+" (both have the same header, and errors have no common id-tag)
+" how to get rid of first empty message in result list?
+setlocal errorformat=
+ \%-Z\ %#,
+ \%W%f:%l:%c:\ Warning:\ %m,
+ \%E%f:%l:%c:\ %m,
+ \%E%>%f:%l:%c:,
+ \%+C\ \ %#%m,
+ \%W%>%f:%l:%c:,
+ \%+C\ \ %#%tarning:\ %m,
+
+" oh, wouldn't you guess it - ghc reports (partially) to stderr..
+setlocal shellpipe=2>
+
+" ------------------------- but ghc can do a lot more for us..
+"
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+" initialize map of identifiers to their types
+" associate type map updates to changedtick
+if !exists("b:ghc_types")
+ let b:ghc_types = {}
+ let b:my_changedtick = b:changedtick
+endif
+
+if exists("g:haskell_functions")
+ finish
+endif
+let g:haskell_functions = "ghc"
+
+" avoid hit-enter prompts
+set cmdheight=3
+
+" edit static GHC options
+" TODO: add completion for options/packages?
+command! GHCStaticOptions call GHC_StaticOptions()
+function! GHC_StaticOptions()
+ let b:ghc_staticoptions = input('GHC static options: ',b:ghc_staticoptions)
+ execute 'setlocal makeprg=' . g:ghc . '\ ' . escape(b:ghc_staticoptions,' ') .'\ -e\ :q\ %'
+ let b:my_changedtick -=1
+endfunction
+
+map <LocalLeader>T :call GHC_ShowType(1)<cr>
+map <LocalLeader>t :call GHC_ShowType(0)<cr>
+function! GHC_ShowType(addTypeDecl)
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = ( symb ? '('.name.')' : name )
+ call GHC_HaveTypes()
+ if !has_key(b:ghc_types,name)
+ redraw
+ echo pname "type not known"
+ else
+ redraw
+ for type in split(b:ghc_types[name],' -- ')
+ echo pname "::" type
+ if a:addTypeDecl
+ call append( line(".")-1, pname . " :: " . type )
+ endif
+ endfor
+ endif
+endfunction
+
+" show type of identifier under mouse pointer in balloon
+if has("balloon_eval")
+ set ballooneval
+ set balloondelay=600
+ set balloonexpr=GHC_TypeBalloon()
+ function! GHC_TypeBalloon()
+ if exists("b:current_compiler") && b:current_compiler=="ghc"
+ let [line] = getbufline(v:beval_bufnr,v:beval_lnum)
+ let namsym = haskellmode#GetNameSymbol(line,v:beval_col,0)
+ if namsym==[]
+ return ''
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = name " ( symb ? '('.name.')' : name )
+ silent call GHC_HaveTypes()
+ if has("balloon_multiline")
+ return (has_key(b:ghc_types,pname) ? split(b:ghc_types[pname],' -- ') : '')
+ else
+ return (has_key(b:ghc_types,pname) ? b:ghc_types[pname] : '')
+ endif
+ else
+ return ''
+ endif
+ endfunction
+endif
+
+map <LocalLeader>si :call GHC_ShowInfo()<cr>
+function! GHC_ShowInfo()
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : (qual.'.'.unqual)
+ let output = GHC_Info(name)
+ pclose | new
+ setlocal previewwindow
+ setlocal buftype=nofile
+ setlocal noswapfile
+ put =output
+ wincmd w
+ "redraw
+ "echo output
+endfunction
+
+" fill the type map, unless nothing has changed since the last attempt
+function! GHC_HaveTypes()
+ if b:ghc_types == {} && (b:my_changedtick != b:changedtick)
+ let b:my_changedtick = b:changedtick
+ return GHC_BrowseAll()
+ endif
+endfunction
+
+" update b:ghc_types after successful make
+au QuickFixCmdPost make if GHC_CountErrors()==0 | silent call GHC_BrowseAll() | endif
+
+" count only error entries in quickfix list, ignoring warnings
+function! GHC_CountErrors()
+ let c=0
+ for e in getqflist() | if e.type=='E' && e.text !~ "^[ \n]*Warning:" | let c+=1 | endif | endfor
+ return c
+endfunction
+
+command! GHCReload call GHC_BrowseAll()
+function! GHC_BrowseAll()
+ " let imports = haskellmode#GatherImports()
+ " let modules = keys(imports[0]) + keys(imports[1])
+ let imports = {} " no need for them at the moment
+ let current = GHC_NameCurrent()
+ let module = current==[] ? 'Main' : current[0]
+ if GHC_VersionGE([6,8,1])
+ return GHC_BrowseBangStar(module)
+ else
+ return GHC_BrowseMultiple(imports,['*'.module])
+ endif
+endfunction
+
+function! GHC_VersionGE(target)
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>target[0]))
+ return 1
+ elseif (i==target[0])
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+
+function! GHC_NameCurrent()
+ let last = line("$")
+ let l = 1
+ while l<last
+ let ml = matchlist( getline(l), '^module\s*\([^ (]*\)')
+ if ml != []
+ let [_,module;x] = ml
+ return [module]
+ endif
+ let l += 1
+ endwhile
+ redraw
+ echo "cannot find module header for file " . expand("%")
+ return []
+endfunction
+
+function! GHC_BrowseBangStar(module)
+ redraw
+ echo "browsing module " a:module
+ let command = ":browse! *" . a:module
+ let orig_shellredir = &shellredir
+ let &shellredir = ">" " ignore error/warning messages, only output or lack of it
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ let &shellredir = orig_shellredir
+ return GHC_ProcessBang(a:module,output)
+endfunction
+
+function! GHC_BrowseMultiple(imports,modules)
+ redraw
+ echo "browsing modules " a:modules
+ let command = ":browse " . join( a:modules, " \n :browse ")
+ let command = substitute(command,'\(:browse \(\S*\)\)','putStrLn "-- \2" \n \1','g')
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ return GHC_Process(a:imports,output)
+endfunction
+
+function! GHC_Info(what)
+ " call GHC_HaveTypes()
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%"), ":i ". a:what)
+ return output
+endfunction
+
+function! GHC_ProcessBang(module,output)
+ let module = a:module
+ let b = a:output
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\)\(\S*\)\s*::\(.*\)'
+ let commentPat = '^-- \(\S*\)'
+ let definedPat = '^-- defined locally'
+ let importedPat = '^-- imported via \(.*\)'
+ if !(b=~commentPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute( id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse! *<current>, we get both unqualified and qualified ids
+ let qualified = (id =~ '\.') && (id =~ '[A-Z]')
+ let b:ghc_types[id] = type
+ if !qualified
+ for qual in qualifiers
+ let b:ghc_types[qual.'.'.id] = type
+ endfor
+ endif
+ else
+ let mlImported = matchlist( l, importedPat )
+ let mlDefined = matchlist( l, definedPat )
+ if mlImported != []
+ let [_,modules;x] = mlImported
+ let qualifiers = split( modules, ', ' )
+ elseif mlDefined != []
+ let qualifiers = [module]
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+function! GHC_Process(imports,output)
+ let b = a:output
+ let imports = a:imports
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\s*\)\(\S*\)\s*::\(.*\)'
+ let modPat = '^-- \(\S*\)'
+ " add '-- defined locally' and '-- imported via ..'
+ if !(b=~modPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute(id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse *<current>, we get both unqualified and qualified ids
+ if current_module " || has_key(imports[0],module)
+ if has_key(b:ghc_types,id) && !(matchstr(b:ghc_types[id],escape(type,'[].'))==type)
+ let b:ghc_types[id] .= ' -- '.type
+ else
+ let b:ghc_types[id] = type
+ endif
+ endif
+ if 0 " has_key(imports[1],module)
+ let qualid = module.'.'.id
+ let b:ghc_types[qualid] = type
+ endif
+ else
+ let mlMod = matchlist( l, modPat )
+ if mlMod != []
+ let [_,module;x] = mlMod
+ let current_module = module[0]=='*'
+ let module = current_module ? module[1:] : module
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+let s:ghc_templates = ["module _ () where","class _ where","class _ => _ where","instance _ where","instance _ => _ where","type family _","type instance _ = ","data _ = ","newtype _ = ","type _ = "]
+
+" use ghci :browse index for insert mode omnicompletion (CTRL-X CTRL-O)
+function! GHC_CompleteImports(findstart, base)
+ if a:findstart
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ call GHC_HaveTypes()
+ for key in keys(b:ghc_types)
+ if key[0 : l]==a:base
+ let res += [{"word":key,"menu":":: ".b:ghc_types[key],"dup":1}]
+ endif
+ endfor
+ return res
+ endif
+endfunction
+set omnifunc=GHC_CompleteImports
+set completeopt=menu,menuone,longest
+
+map <LocalLeader>ct :call GHC_CreateTagfile()<cr>
+function! GHC_CreateTagfile()
+ redraw
+ echo "creating tags file"
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -e ":ctags" ' . expand("%"))
+ " for ghcs older than 6.6, you would need to call another program
+ " here, such as hasktags
+ echo output
+endfunction
+
+command! -nargs=1 GHCi redraw | echo system(g:ghc. ' ' . b:ghc_staticoptions .' '.expand("%").' -e "'.escape(<f-args>,'"').'"')
+
+" use :make 'not in scope' errors to explicitly list imported ids
+" cursor needs to be on import line, in correctly loadable module
+map <LocalLeader>ie :call GHC_MkImportsExplicit()<cr>
+function! GHC_MkImportsExplicit()
+ let save_cursor = getpos(".")
+ let line = getline('.')
+ let lineno = line('.')
+ let ml = matchlist(line,'^import\(\s*qualified\)\?\s*\([^( ]\+\)')
+ if ml!=[]
+ let [_,q,mod;x] = ml
+ silent make
+ if getqflist()==[]
+ if line=~"import[^(]*Prelude"
+ call setline(lineno,substitute(line,"(.*","","").'()')
+ else
+ call setline(lineno,'-- '.line)
+ endif
+ silent write
+ silent make
+ let qflist = getqflist()
+ call setline(lineno,line)
+ silent write
+ let ids = {}
+ for d in qflist
+ let ml = matchlist(d.text,'Not in scope: \([^`]*\)`\([^'']*\)''')
+ if ml!=[]
+ let [_,what,qid;x] = ml
+ let id = ( qid =~ "^[A-Z]" ? substitute(qid,'.*\.\([^.]*\)$','\1','') : qid )
+ let pid = ( id =~ "[a-zA-Z0-9_']\\+" ? id : '('.id.')' )
+ if what =~ "data"
+ call GHC_HaveTypes()
+ if has_key(b:ghc_types,id)
+ let pid = substitute(b:ghc_types[id],'^.*->\s*\(\S*\).*$','\1','').'('.pid.')'
+ else
+ let pid = '???('.pid.')'
+ endif
+ endif
+ let ids[pid] = 1
+ endif
+ endfor
+ call setline(lineno,'import'.q.' '.mod.'('.join(keys(ids),',').')')
+ else
+ copen
+ endif
+ endif
+ call setpos('.', save_cursor)
+endfunction
+
+if GHC_VersionGE([6,8,2])
+ let opts = filter(split(substitute(system(g:ghc . ' -v0 --interactive', ':set'), ' ', '','g'), '\n'), 'v:val =~ "-f"')
+else
+ let opts = ["-fglasgow-exts","-fallow-undecidable-instances","-fallow-overlapping-instances","-fno-monomorphism-restriction","-fno-mono-pat-binds","-fno-cse","-fbang-patterns","-funbox-strict-fields"]
+endif
+
+amenu ]OPTIONS_GHC.- :echo '-'<cr>
+aunmenu ]OPTIONS_GHC
+for o in opts
+ exe 'amenu ]OPTIONS_GHC.'.o.' :call append(0,"{-# OPTIONS_GHC '.o.' #-}")<cr>'
+endfor
+if has("gui_running")
+ map <LocalLeader>opt :popup ]OPTIONS_GHC<cr>
+else
+ map <LocalLeader>opt :emenu ]OPTIONS_GHC.
+endif
+
+amenu ]LANGUAGES_GHC.- :echo '-'<cr>
+aunmenu ]LANGUAGES_GHC
+if GHC_VersionGE([6,8])
+ let ghc_supported_languages = split(system(g:ghc . ' --supported-languages'),'\n')
+ for l in ghc_supported_languages
+ exe 'amenu ]LANGUAGES_GHC.'.l.' :call append(0,"{-# LANGUAGE '.l.' #-}")<cr>'
+ endfor
+ if has("gui_running")
+ map <LocalLeader>lang :popup ]LANGUAGES_GHC<cr>
+ else
+ map <LocalLeader>lang :emenu ]LANGUAGES_GHC.
+ endif
+endif
diff --git a/.vim/compiler/tex.vim b/.vim/compiler/tex.vim
new file mode 100644
index 0000000..993ecfe
--- /dev/null
+++ b/.vim/compiler/tex.vim
@@ -0,0 +1,293 @@
+" File: tex.vim
+" Type: compiler plugin for LaTeX
+" Original Author: Artem Chuprina <ran@ran.pp.ru>
+" Customization: Srinath Avadhanula <srinath@fastmail.fm>
+" CVS: $Id: tex.vim 997 2006-03-20 09:45:45Z srinathava $
+" Description: {{{
+" This file sets the 'makeprg' and 'errorformat' options for the LaTeX
+" compiler. It is customizable to optionally ignore certain warnings and
+" provides the ability to set a dynamic 'ignore-warning' level.
+"
+" By default it is set up in a 'non-verbose', 'ignore-common-warnings' mode,
+" which means that irrelevant lines from the compilers output will be
+" ignored and also some very common warnings are ignored.
+"
+" Depending on the 'ignore-level', the following kinds of messages are
+" ignored. An ignore level of 3 for instance means that messages 1-3 will be
+" ignored. By default, the ignore level is set to 4.
+"
+" 1. LaTeX Warning: Specifier 'h' changed to 't'.
+" This errors occurs when TeX is not able to correctly place a floating
+" object at a specified location, because of which it defaulted to the
+" top of the page.
+" 2. LaTeX Warning: Underfull box ...
+" 3. LaTeX Warning: Overfull box ...
+" both these warnings (very common) are due to \hbox settings not being
+" satisfied nicely.
+" 4. LaTeX Warning: You have requested ...,
+" This warning occurs in slitex when using the xypic package.
+" 5. Missing number error:
+" Usually, when the name of an included eps file is spelled incorrectly,
+" then the \bb-error message is accompanied by a bunch of "missing
+" number, treated as zero" error messages. This level ignores these
+" warnings.
+" NOTE: number 5 is actually a latex error, not a warning!
+"
+" Use
+" TCLevel <level>
+" where level is a number to set the ignore level dynamically.
+"
+" When TCLevel is called with the unquoted string strict
+" TClevel strict
+" then the 'efm' switches to a 'verbose', 'no-lines-ignored' mode which is
+" useful when you want to make final checks of your document and want to be
+" careful not to let things slip by.
+"
+" TIP: MikTeX has a bug where it sometimes erroneously splits a line number
+" into multiple lines. i.e, if the warning is on line 1234. the compiler
+" output is:
+" LaTeX Warning: ... on input line 123
+" 4.
+" In this case, vim will wrongly interpret the line-number as 123 instead
+" of 1234. If you have cygwin, a simple remedy around this is to first
+" copy the file vimlatex (provided) into your $PATH, make sure its
+" executable and then set the variable g:tex_flavor to vimlatex in your
+" ~/.vimrc (i.e putting let "g:tex_flavor = 'vimlatex'" in your .vimrc).
+" This problem occurs rarely enough that its not a botheration for most
+" people.
+"
+" TODO:
+" 1. menu items for dynamically selecting a ignore warning level.
+" }}}
+
+" avoid reinclusion for the same buffer. keep it buffer local so it can be
+" externally reset in case of emergency re-sourcing.
+if exists('b:doneTexCompiler') && !exists('b:forceRedoTexCompiler')
+ finish
+endif
+let b:doneTexCompiler = 1
+
+" ==============================================================================
+" Customization of 'efm': {{{
+" This section contains the customization variables which the user can set.
+" g:Tex_IgnoredWarnings: This variable contains a ¡ seperated list of
+" patterns which will be ignored in the TeX compiler's output. Use this
+" carefully, otherwise you might end up losing valuable information.
+if !exists('g:Tex_IgnoredWarnings')
+ let g:Tex_IgnoredWarnings =
+ \'Underfull'."\n".
+ \'Overfull'."\n".
+ \'specifier changed to'."\n".
+ \'You have requested'."\n".
+ \'Missing number, treated as zero.'."\n".
+ \'There were undefined references'."\n".
+ \'Citation %.%# undefined'
+endif
+" This is the number of warnings in the g:Tex_IgnoredWarnings string which
+" will be ignored.
+if !exists('g:Tex_IgnoreLevel')
+ let g:Tex_IgnoreLevel = 7
+endif
+" There will be lots of stuff in a typical compiler output which will
+" completely fall through the 'efm' parsing. This options sets whether or not
+" you will be shown those lines.
+if !exists('g:Tex_IgnoreUnmatched')
+ let g:Tex_IgnoreUnmatched = 1
+endif
+" With all this customization, there is a slight risk that you might be
+" ignoring valid warnings or errors. Therefore before getting the final copy
+" of your work, you might want to reset the 'efm' with this variable set to 1.
+" With that value, all the lines from the compiler are shown irrespective of
+" whether they match the error or warning patterns.
+" NOTE: An easier way of resetting the 'efm' to show everything is to do
+" TCLevel strict
+if !exists('g:Tex_ShowallLines')
+ let g:Tex_ShowallLines = 0
+endif
+
+" }}}
+" ==============================================================================
+" Customization of 'makeprg': {{{
+
+" There are several alternate ways in which 'makeprg' is set up.
+"
+" Case 1
+" ------
+" The first is when this file is a part of latex-suite. In this case, a
+" variable called g:Tex_DefaultTargetFormat exists, which gives the default
+" format .tex files should be compiled into. In this case, we use the TTarget
+" command provided by latex-suite.
+"
+" Case 2
+" ------
+" The user is using this file without latex-suite AND he wants to directly
+" specify the complete 'makeprg'. Then he should set the g:Tex_CompileRule_dvi
+" variable. This is a string which should be directly be able to be cast into
+" &makeprg. An example of one such string is:
+"
+" g:Tex_CompileRule_dvi = 'pdflatex \\nonstopmode \\input\{$*\}'
+"
+" NOTE: You will need to escape back-slashes, {'s etc yourself if you are
+" using this file independently of latex-suite.
+" TODO: Should we also have a check for backslash escaping here based on
+" platform?
+"
+" Case 3
+" ------
+" The use is using this file without latex-suite and he doesnt want any
+" customization. In this case, this file makes some intelligent guesses based
+" on the platform. If he doesn't want to specify the complete 'makeprg' but
+" only the name of the compiler program (for example 'pdflatex' or 'latex'),
+" then he sets b:tex_flavor or g:tex_flavor.
+
+if exists('g:Tex_DefaultTargetFormat')
+ exec 'TTarget '.g:Tex_DefaultTargetFormat
+elseif exists('g:Tex_CompileRule_dvi')
+ let &l:makeprg = g:Tex_CompileRule_dvi
+else
+ " If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
+ " otherwize the same for global variable with same name, else it will be LaTeX
+ if exists("b:tex_flavor")
+ let current_compiler = b:tex_flavor
+ elseif exists("g:tex_flavor")
+ let current_compiler = g:tex_flavor
+ else
+ let current_compiler = "latex"
+ end
+ if has('win32')
+ let escChars = ''
+ else
+ let escChars = '{}\'
+ endif
+ " Furthermore, if 'win32' is detected, then we want to set the arguments up so
+ " that miktex can handle it.
+ if has('win32')
+ let options = '--src-specials'
+ else
+ let options = ''
+ endif
+ let &l:makeprg = current_compiler . ' ' . options .
+ \ escape(' \nonstopmode \input{$*}', escChars)
+endif
+
+" }}}
+" ==============================================================================
+" Functions for setting up a customized 'efm' {{{
+
+" IgnoreWarnings: parses g:Tex_IgnoredWarnings for message customization {{{
+" Description:
+function! <SID>IgnoreWarnings()
+ let i = 1
+ while s:Strntok(g:Tex_IgnoredWarnings, "\n", i) != '' &&
+ \ i <= g:Tex_IgnoreLevel
+ let warningPat = s:Strntok(g:Tex_IgnoredWarnings, "\n", i)
+ let warningPat = escape(substitute(warningPat, '[\,]', '%\\\\&', 'g'), ' ')
+ exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
+ let i = i + 1
+ endwhile
+endfunction
+
+" }}}
+" SetLatexEfm: sets the 'efm' for the latex compiler {{{
+" Description:
+function! <SID>SetLatexEfm()
+
+ let pm = ( g:Tex_ShowallLines == 1 ? '+' : '-' )
+
+ set efm=
+
+ if !g:Tex_ShowallLines
+ call s:IgnoreWarnings()
+ endif
+
+ setlocal efm+=%E!\ LaTeX\ %trror:\ %m
+ setlocal efm+=%E!\ %m
+
+ setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
+ setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
+ setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
+
+ exec 'setlocal efm+=%'.pm.'Cl.%l\ %m'
+ exec 'setlocal efm+=%'.pm.'Cl.%l\ '
+ exec 'setlocal efm+=%'.pm.'C\ \ %m'
+ exec 'setlocal efm+=%'.pm.'C%.%#-%.%#'
+ exec 'setlocal efm+=%'.pm.'C%.%#[]%.%#'
+ exec 'setlocal efm+=%'.pm.'C[]%.%#'
+ exec 'setlocal efm+=%'.pm.'C%.%#%[{}\\]%.%#'
+ exec 'setlocal efm+=%'.pm.'C<%.%#>%m'
+ exec 'setlocal efm+=%'.pm.'C\ \ %m'
+ exec 'setlocal efm+=%'.pm.'GSee\ the\ LaTeX%m'
+ exec 'setlocal efm+=%'.pm.'GType\ \ H\ <return>%m'
+ exec 'setlocal efm+=%'.pm.'G\ ...%.%#'
+ exec 'setlocal efm+=%'.pm.'G%.%#\ (C)\ %.%#'
+ exec 'setlocal efm+=%'.pm.'G(see\ the\ transcript%.%#)'
+ exec 'setlocal efm+=%'.pm.'G\\s%#'
+ exec 'setlocal efm+=%'.pm.'O(%*[^()])%r'
+ exec 'setlocal efm+=%'.pm.'P(%f%r'
+ exec 'setlocal efm+=%'.pm.'P\ %\\=(%f%r'
+ exec 'setlocal efm+=%'.pm.'P%*[^()](%f%r'
+ exec 'setlocal efm+=%'.pm.'P(%f%*[^()]'
+ exec 'setlocal efm+=%'.pm.'P[%\\d%[^()]%#(%f%r'
+ if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
+ setlocal efm+=%-P%*[^()]
+ endif
+ exec 'setlocal efm+=%'.pm.'Q)%r'
+ exec 'setlocal efm+=%'.pm.'Q%*[^()])%r'
+ exec 'setlocal efm+=%'.pm.'Q[%\\d%*[^()])%r'
+ if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
+ setlocal efm+=%-Q%*[^()]
+ endif
+ if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
+ setlocal efm+=%-G%.%#
+ endif
+
+endfunction
+
+" }}}
+" Strntok: extract the n^th token from a list {{{
+" example: Strntok('1,23,3', ',', 2) = 23
+fun! <SID>Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun
+
+" }}}
+" SetTexCompilerLevel: sets the "level" for the latex compiler {{{
+function! <SID>SetTexCompilerLevel(...)
+ if a:0 > 0
+ let level = a:1
+ else
+ call Tex_ResetIncrementNumber(0)
+ echo substitute(g:Tex_IgnoredWarnings,
+ \ '^\|\n\zs\S', '\=Tex_IncrementNumber(1)." ".submatch(0)', 'g')
+ let level = input("\nChoose an ignore level: ")
+ if level == ''
+ return
+ endif
+ endif
+ if level == 'strict'
+ let g:Tex_ShowallLines = 1
+ elseif level =~ '^\d\+$'
+ let g:Tex_ShowallLines = 0
+ let g:Tex_IgnoreLevel = level
+ else
+ echoerr "SetTexCompilerLevel: Unkwown option [".level."]"
+ end
+ call s:SetLatexEfm()
+endfunction
+
+com! -nargs=? TCLevel :call <SID>SetTexCompilerLevel(<f-args>)
+" }}}
+
+" }}}
+" ==============================================================================
+
+call s:SetLatexEfm()
+
+if !exists('*Tex_Debug')
+ function! Tex_Debug(...)
+ endfunction
+endif
+
+call Tex_Debug("compiler/tex.vim: sourcing this file", "comp")
+
+" vim: fdm=marker:commentstring=\ \"\ %s
diff --git a/.vim/doc/csupport.txt b/.vim/doc/csupport.txt
new file mode 100644
index 0000000..266b8db
--- /dev/null
+++ b/.vim/doc/csupport.txt
@@ -0,0 +1,1577 @@
+*csupport.txt* C/C++ Support November 21 2007
+
+C/C++ Support *c-support* *csupport*
+ Plugin version 5.0.5
+ for Vim version 6.0 and above
+ Fritz Mehner <mehner@fh-swf.de>
+
+C/C++-IDE for Vim/gVim. It is written to considerably speed up writing code in
+a consistent style. This is done by inserting complete statements,idioms, code
+snippets, templates, and comments. Syntax checking, compiling, running a
+program, running a code checker or indent can be done with a keystroke.
+
+
+ 1. Usage |csupport-usage-gvim|
+ 1.1 Menu 'Comments' |csupport-comm|
+ 1.1.1 Append aligned comments |csupport-comm-aligned|
+ 1.1.2 Adjust end-of-line comments |csupport-comm-realign|
+ 1.1.3 Code to comment |csupport-code-to-comm|
+ 1.1.4 Comment to code |csupport-comm-to-code|
+ 1.1.5 Frame comments, file header, ... |csupport-comm-frame|
+ 1.1.6 KEYWORD + comment |csupport-comm-keywords|
+ 1.1.7 C to C++ comments and vice versa |csupport-comm-c-cpp|
+ 1.1.8 Date and date+time |csupport-comm-date|
+ 1.2 Menu 'Statements' |csupport-stat|
+ 1.2.1 Normal mode, insert mode. |csupport-stat-normal-mode|
+ 1.2.2 Visual mode. |csupport-stat-visual-mode|
+ 1.3 Menu 'Preprocessor' |csupport-prep|
+ 1.3.1 Normal mode, insert mode. |csupport-prep-normal-mode|
+ 1.3.2 Visual mode. |csupport-prep-visual-mode|
+ 1.3.3 Block out code with #if 0 .. #endif |csupport-prep-if0|
+ 1.4 Menu 'Idioms' |csupport-idioms|
+ 1.5 Menu 'Snippets' |csupport-snippets|
+ 1.5.1 Code snippets |csupport-snippets|
+ 1.5.2 Picking up prototypes |csupport-proto|
+ 1.6 Menu 'C++' |csupport-c++|
+ 1.6.1 Normal mode, insert mode. |csupport-c++-normal-mode|
+ 1.6.2 Visual mode. |csupport-c++-visual-mode|
+ 1.6.3 Method implementation |csupport-c++-method-impl|
+ 1.7 Menu 'Run' |csupport-run|
+ 1.7.1 Minimal make functionality |csupport-run-buffer|
+ 1.7.2 Command line arguments |csupport-run-cmdline-args|
+ 1.7.3 Run make |csupport-run-make|
+ 1.7.4 Command line arguments for make |csupport-run-make-args|
+ 1.7.5 Splint |csupport-run-splint|
+ 1.7.6 CodeCheck |csupport-run-codecheck|
+ 1.7.7 Indent |csupport-run-indent|
+ 1.7.8 Hardcopy |csupport-run-hardcopy|
+ 1.7.9 Rebuild templates |csupport-run-templates|
+ 1.7.10 Xterm size |csupport-run-xterm|
+ 1.7.11 Output redirection |csupport-run-output|
+ 1.8 Help |csupport-help|
+
+ 2. Usage without GUI |csupport-usage-vim|
+ 3. Hotkeys |csupport-hotkeys|
+ 4. Customization and configuration |csupport-custom|
+ 4.1 Global variables |csupport-custom-glob-vars|
+ 4.2 The root menu |csupport-custom-root-menu|
+ 4.3 System-wide installation |csupport-system-wide|
+ 5. Template files and tags |csupport-templates|
+ 5.1 Template files |csupport-templates-files|
+ 5.2 Macros |csupport-templates-macros|
+ 5.3 Templates |csupport-templates-names|
+ 5.3.1 Template names |csupport-templates-names|
+ 5.3.2 Template definition |csupport-templates-definition|
+ 5.3.3 Template expansion |csupport-templates-expansion|
+ 6. C/C++ Dictionaries |csupport-dictionary|
+ 7. Extend taglist.vim for make and qmake |csupport-taglist|
+ 8. Syntax based folding |csupport-folding|
+ 9. Windows particularities |csupport-windows|
+10. Troubleshooting |csupport-troubleshooting|
+11. Release Notes /Change Log |csupport-release-notes|
+
+ How to add this help file to Vim's help |add-local-help|
+
+
+==============================================================================
+1. USAGE WITH GUI (gVim) *csupport-usage-gvim*
+==============================================================================
+
+If the root menu 'C/C++' is not visible call it with the item "Load C Support"
+from the standard Tools-menu.
+The item "Load C Support" can also be used to unload the C/C++-root menu.
+
+Nearly all menu entries insert code snippets or comments. All these stuff is
+taken from template files and can be changed by the user to meet his
+requirements (see|csupport-templates|).
+
+------------------------------------------------------------------------------
+1.1 MENU 'Comments' *csupport-comm*
+------------------------------------------------------------------------------
+
+1.1.1 APPEND ALIGNED COMMENTS TO CONSECUTIVE LINES *csupport-comm-aligned*
+
+In NORMAL MODE the menu items 'end-of-line comment' will append an comment to
+the current line.
+In VISUAL MODE these item will append aligned comments to all marked lines.
+Marking the first 4 lines
+
+ print_double_array ( double array[],
+ int n,
+ int columns,
+ char* arrayname
+ )
+
+and choosing 'end-of-line com. /**/' will yield.
+
+ print_double_array ( double array[], /* */
+ int n, /* */
+ int columns, /* */
+ char* arrayname /* */
+ ) /* */
+
+If one ore more lines go beyond the starting column (s.below) the comments
+will start at the 2. column after the longest line. The cursor will be
+positioned inside the first comment.
+
+The default starting column is 49 ( = (multiple of 2,4, or 8) + 1 ). This can
+be changed by setting a global variable in the file ~/.vimrc , e.g. :
+
+ let g:C_LineEndCommColDefault = 45
+
+The starting column can also be set by the menu item
+'Comments->set end-of-line com. col' . Just position the cursor in an
+arbitrary column (column number is shown in the Vim status line) and choose
+this menu item. This setting is buffer related.
+
+If the cursor was at the end of a line you will be asked for a column number
+because this position is most likely not the desired starting column.
+Your choice will be confirmed.
+
+------------------------------------------------------------------------------
+
+1.1.2 ADJUST END-OF-LINE COMMENTS *csupport-comm-realign*
+
+After some changes end-of-line comments may be no longer aligned:
+
+ print_double_array ( double array[], /* */
+ long int n, /* */
+ unsigned int columns, /* */
+ char* a_name /* */
+ ) /* */
+
+Realignment can be achieved with the menu item 'adjust end-of-line com.' In
+normal mode the comment (if any) in the current line will be aligned to the
+end-of-line comment column (see above) if possible. In visual mode the
+comments in the marked block will be aligned:
+
+ print_double_array ( double array[], /* */
+ long int n, /* */
+ unsigned int columns, /* */
+ char* a_name /* */
+ ) /* */
+
+------------------------------------------------------------------------------
+
+1.1.3 CODE TO COMMENT *csupport-code-to-comm*
+
+The marked block
+
+xxxxxxxx
+xxxxxxxx
+xxxxxxxx
+
+will be changed by the menu item 'code->comment /**/' into the multiline
+comment (all (partially) marked lines):
+
+/* xxxxxxxx
+ * xxxxxxxx
+ * xxxxxxxx
+ */
+
+The marked block will be changed by the menu item 'code->comment //' into the
+multiline comment
+
+//xxxxxxxx
+//xxxxxxxx
+//xxxxxxxx
+
+The menu items works also for a single line. A single line needs not to be
+marked.
+
+------------------------------------------------------------------------------
+
+1.1.4 COMMENT TO CODE *csupport-comm-to-code*
+
+If one (or more) complete comment (i.e. all lines belonging to the comment) is
+marked the item 'comment->code' will uncomment it. If the following lines
+are marked
+
+ * printf ("\n");
+ */
+
+ printf ("\n");
+
+ // printf ("\n");
+ //
+
+ /*
+ * printf ("\n");
+ */
+
+uncommenting will yield
+
+ * printf ("\n");
+ */
+
+ printf ("\n");
+
+ printf ("\n");
+
+
+
+ printf ("\n");
+
+The first 2 lines are only a part of a C-comment and remain unchanged.
+A C-comment can start with /* , /** or /*! .
+
+The menu item works also for a single line with a leading // . A single line
+needs not to be marked.
+
+------------------------------------------------------------------------------
+
+1.1.5 FRAME COMMENTS, FILE HEADER, ... *csupport-comm-frame*
+
+Frame comments, file header comments and function, methods, class descriptions
+are read as templates from the appropriate files (see |csupport-templates|).
+
+------------------------------------------------------------------------------
+
+1.1.6 KEYWORD+comment *csupport-comm-keywords*
+
+Preliminary comments to document (and find again) places where works will be
+resumed shortly. Usually not meant for the final documentation.
+
+------------------------------------------------------------------------------
+
+1.1.7 C TO C++ COMMENTS AND VICE VERSA *csupport-comm-c-cpp*
+
+The menu item '// xxx -> /* xxx */' changes a C++ comment into an C comment.
+This is done for the current line in normal or insert mode and for a marked
+area of lines in visual mode.
+If there are multiple C comments only the first one will be changed:
+ printf ("\n"); /* one */ /* two */ /* three */
+will be changed into
+ printf ("\n"); // one /* two */ /* three */
+
+The menu item '/* xxx */ -> // xxx' changes a C comment into an C++ comment.
+
+------------------------------------------------------------------------------
+
+1.1.8 DATE AND DATE+TIME *csupport-comm-date*
+
+The format for 'date' and 'date time' can be defined by the user (see
+|csupport-templates-date|).
+
+------------------------------------------------------------------------------
+1.2 MENU 'Statements' *csupport-stat*
+------------------------------------------------------------------------------
+
+1.2.1 NORMAL MODE, INSERT MODE. *csupport-stat-normal-mode*
+
+An empty statement will be inserted and properly indented. The item 'if{}'
+will insert an if-statement:
+
+if ( )
+{
+}
+
+
+1.2.2 VISUAL MODE. *csupport-stat-visual-mode*
+
+STATEMENTS WITH BLOCKS AND CASE LABEL.
+--------------------------------------
+The highlighted area
+
+xxxxx
+xxxxx
+
+can be surrounded by one of the following statements:
+
+ +----------------------------+-----------------------------+
+ | if ( ) | if ( ) |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ | | else |
+ | | { |
+ | | } |
+ +----------------------------+-----------------------------+
+ | for ( ; ; ) | while ( ) |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ +----------------------------+-----------------------------+
+ | do | |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ | while ( ); | |
+ +----------------------------+-----------------------------+
+ | switch ( ) { |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | default: |
+ | break; |
+ | } |
+ +----------------------------+-----------------------------+
+
+For 'switch' and 'case' see |csupport-stat-switch| and |csupport-stat-case|.
+
+The whole statement will be indented after insertion.
+
+
+STATEMENTS WITHOUT BLOCKS.
+--------------------------
+One of the following statements can be inserted:
+
+ +-------------------------------+--------------------------+
+ | if ( ) | for ( ; ; ) |
+ +-------------------------------+--------------------------+
+ | if ( ) | while ( ) |
+ | else | |
+ +-------------------------------+--------------------------+
+ | case : | |
+ | break; | |
+ +-------------------------------+--------------------------+
+
+
+------------------------------------------------------------------------------
+1.3 MENU 'Preprocessor' *csupport-prep*
+------------------------------------------------------------------------------
+
+1.3.1 NORMAL MODE, INSERT MODE. *csupport-prep-normal-mode*
+
+The preprocessor statements will be inserted and properly indented.
+
+1.3.2 VISUAL MODE. *csupport-prep-visual-mode*
+
+STATEMENTS WITH BLOCKS
+----------------------
+The highlighted area
+
+xxxxx
+xxxxx
+
+can be surrounded by one of the following statements:
+
+ +----------------------------+-----------------------------+
+ | #if CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #if CONDITION ----- */ |
+ | |
+ | #endif /* ----- #if CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifdef CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #ifdef CONDITION ----- */ |
+ | |
+ | #endif /* ----- #ifdef CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifndef CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #ifndef CONDITION ----- */ |
+ | |
+ | #endif /* ----- #ifndef CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifndef INC_TEST |
+ | #define INC_TEST |
+ | xxxxx |
+ | xxxxx |
+ | #endif /* ----- #ifndef INC_TEST ----- */ |
+ +----------------------------------------------------------+
+ | #if 0 /* ----- #if 0 : If0Label_1 ----- */ |
+ | |
+ | #endif /* ----- #if 0 : If0Label_1 ----- */ |
+ +----------------------------------------------------------+
+
+The macro name for an include guard (e.g. INC_TEST above) will be derived as a
+suggestion from the file name.
+
+1.3.3 BLOCK OUT CODE WITH #if 0 ... #endif *csupport-prep-if0*
+
+The menu item #if 0 #endif inserts the lines
+
+ #if 0 /* ----- #if 0 : If0Label_1 ----- */
+
+ #endif /* ----- #if 0 : If0Label_1 ----- */
+
+In visual mode the marked block of lines will be surrounded by these lines.
+
+This is usually done to temporarily block out some code. The label names like
+If0Label_1 are automatically inserted into the comments. The trailing numbers
+are automatically incremented. These numbers can be changed by the user. The
+next number will be one above the highest number found in the current buffer.
+
+A corresponding label can be found by searching with the vim star command (*).
+All labels can be found with a global search like :g/If0Label_/ or
+:g/If0Label_\d\+/. All corresponding lines can be deleted with :g/If0Label_/d .
+
+
+REMOVE THE ENCLOSING #if 0 ... #endif -CONSTRUCT.
+
+The menu item 'remove #if #endif' removes such a construct if the cursor is
+in the middle of such a section or on one of the two enclosing lines. Nested
+constructs will be untouched.
+
+------------------------------------------------------------------------------
+1.4 MENU 'Idioms' *csupport-idioms*
+------------------------------------------------------------------------------
+
+1.4.1 ENTRY 'function'
+
+NORMAL MODE, INSERT MODE:
+The name of the function is asked for and the following lines (for function
+name "f") will be inserted:
+
+ void
+ f ( )
+ {
+ return ;
+ } /* ---------- end of function f ---------- */
+
+VISUAL MODE:
+Main or [static] function: the highlighted lines will go inside the new
+function or main.
+for-loops: the highlighted lines will be set in braces.
+
+1.4.2 ENTRY 'open input file'
+
+The item 'open input file' will create the statements to open and close an
+input file (e.g. with the file pointer 'infile').
+
+1.4.3 ENTRY 'open output file'
+
+The item 'open output file' will create the statements to open and close an
+output file (e.g. with the file pointer 'outfile').
+
+------------------------------------------------------------------------------
+1.5 MENU 'Snippets' *csupport-snippets*
+------------------------------------------------------------------------------
+
+1.5.1 CODE SNIPPETS
+
+Code snippets are pieces of code which are kept in separate files in a special
+directory (e.g. a few lines of code or a complete template for a Makefile).
+File names are used to identify the snippets. The snippet directory will be
+created during the installation ( $HOME/.vim/codesnippets-c is the default).
+Snippets are managed with the 3 items
+
+ C/C++ -> Snippets -> read code snippet
+ C/C++ -> Snippets -> write code snippet
+ C/C++ -> Snippets -> edit code snippet
+
+from the Snippets submenu.
+
+CREATING A NEW SNIPPET
+When nothing is marked, "write code snippet" will write the whole buffer
+to a snippet file, otherwise the marked area will be written to a file.
+
+INSERT A SNIPPET
+Select the appropriate file from the snippet directory ("read code snippet").
+The inserted lines will be indented.
+
+EDIT A SNIPPET
+This is a normal edit.
+
+INDENTATION / NO INDENTATION
+Code snippets are normally indented after insertion. To suppress indentation
+add the file extension "ni" or "noindent" to the snippet file name, e.g.
+
+ parameter_handling.c.noindent
+
+
+1.5.2 PICKING UP PROTOTYPES *csupport-proto*
+
+PICK UP PROTOTYPES.
+To make a prototype from a function head mark the function head and choose
+'Snippets -> pick up prototype'. From the first six lines of
+
+ void
+ print_double_array ( double array[], /* array to print */
+ int n, /* number of elements to print */
+ int columns, /* number of elements per column */
+ char* arrayname /* array name */
+ )
+ {
+ ...
+ } /* ---------- end of function print_double_array ---------- */
+
+the prototype
+
+ void print_double_array ( double array[], int n, int columns, char* arrayname );
+
+is produced and put in an internal buffer.
+- Leading and trailing whitespaces are removed.
+- All inner whitespaces are squeezed.
+- All comments will be discarded.
+- Trailing parts of the function body (e.g a '{' ) will also be removed.
+- The class name and the scope resolution operator will be removed (C++ method
+ implementations).
+Further prototypes can be picked up and gathered in the buffer.
+
+For C++ methods namespace names and class names will be removed
+(exception: 'std::' ). The first two lines of
+
+ std::string
+ ROBOT::Robot::get_name ( void )
+ {
+ return type_name;
+ } /* ----- end of method Robot::get_name ----- */
+
+result in the prototype
+
+ std::string get_name ( void );
+
+Folding may help picking up prototypes (see |csupport-folding|).
+
+
+INSERT PROTOTYPES
+With 'Snippets -> insert prototype(s)' all picked up prototypes currently in
+the buffer will be inserted below the cursor.
+The prototype buffer will be cleared after insertion.
+
+
+DISCARD PROTOTYPES
+The prototype buffer can be cleared with 'Snippets -> clear prototype(s)' .
+
+
+SHOW PROTOTYPES
+The list of gathered prototypes can be shown with
+'Snippets -> show prototype(s)'. The number and the filename are shown, e.g.
+
+ (1) matrix.c # double** calloc_double_matrix ( int rows, int columns );
+ (2) matrix.c # void free_double_matrix ( double **m );
+ (3) foomain.c # void foo ( );
+
+
+REMARK. Generating prototypes this way is nice in a small project. You may
+want to use an extractor like cextract or something else.
+
+
+------------------------------------------------------------------------------
+1.6 MENU 'C++' *csupport-c++*
+------------------------------------------------------------------------------
+
+1.6.1 NORMAL MODE, INSERT MODE. *csupport-c++-normal-mode*
+
+An empty statement will be inserted and in some cases properly indented. The
+item 'try .. catch' will insert the following lines:
+
+ try {
+ }
+ catch ( const &ExceptObj ) { // handle exception:
+ }
+ catch (...) { // handle exception: unspezified
+ }
+
+The cursor will go into the try block.
+
+1.6.2 VISUAL MODE. *csupport-c++-visual-mode*
+
+The highlighted area can be surrounded by one of the following statements:
+
+ try - catch
+ catch
+ catch(...)
+ namespace { }
+ extern "C" { }
+
+The whole statement will be indented after insertion.
+
+1.6.3 METHOD IMPLEMENTATION *csupport-c++-method-impl*
+
+The menu item 'method implement.' asks for a method name. If this item is
+called the first time you will see just an scope resolution operator. If you
+specify the scope this is used the next time you call this item. If you use
+one of the menu items to generate a class (see |csupport-templates|) the
+scope will be extracted and used for the next method.
+
+------------------------------------------------------------------------------
+1.7 MENU 'Run' *csupport-run*
+------------------------------------------------------------------------------
+
+1.7.1 MINIMAL MAKE FUNCTIONALITY *csupport-run-buffer*
+
+The 'Run' menu provides a minimal make functionality for single file projects
+(e.g. in education) :
+
+SAVE AND COMPILE
+'save and compile' saves the buffer and run the compiler with the given
+options (see |csupport-custom-glob-vars|).
+
+An error window will be opened if the compiler reports errors and/or warnings.
+Quickfix commands can now be used to jump to an error location.
+
+Consider using maps like
+ map <silent> <F7> <Esc>:cp<CR>
+ map <silent> <F8> <Esc>:cn<CR>
+in your ~/.vimrc file to jump over the error locations and make navigation
+easier. The error list and the error locations in your source buffer will be
+synchronized.
+
+
+LINK
+'link' makes an executable from the current buffer. If the buffer is not
+saved, or no object is available or the object is older then the source step
+'save and compile' is executed first.
+
+The behavior of the compiler / linker is determined by the options assigned to
+the variables described in |csupport-custom-glob-vars| (4.group).
+
+RUN
+'run' runs the executable with the same name (extension .e) as the current
+buffer. If the buffer is not saved, or no executable is available or the
+executable is older then the source steps 'save and compile' and 'link' are
+executed first.
+
+
+1.7.2 COMMAND LINE ARGUMENTS *csupport-run-cmdline-args*
+
+The item 'command line arguments' calls an input dialog which asks for command
+line arguments. These arguments are forwarded to the program which is run by
+the 'run' item. The arguments are kept until you change them.
+
+The arguments belong to the current buffer (that is, each buffer can have its
+own arguments).
+If the buffer gets a new name with "save as" the arguments will now belong to
+the buffer with the new name.
+
+The command line arguments can be followed by pipes and redirections:
+
+ 11 22 | sort -rn | head -10 > out
+
+Caveat: If you look for the current arguments by calling this menu item again
+be sure to leave it with a CR (not Esc !). Due to a limitation of an internal
+Vim function CR will keep the arguments, Esc with discard them.
+
+
+1.7.3 RUN make *csupport-run-make*
+
+The item 'make' runs the external make program.
+
+
+1.7.4 COMMAND LINE ARGUMENTS FOR make *csupport-run-make-args*
+
+The item 'command line arguments for make' calls an input dialog which asks
+for command line arguments for make. These arguments are forwarded to make
+when called by the item 'make'.
+
+
+1.7.5 SPLINT *csupport-run-splint*
+
+Splint is a tool for statically checking C programs (see http://www.splint.org).
+Of course it has to be installed in order to be used within Vim. The menu
+item 'Run->splint' will run the current buffer through splint.
+
+An error window will be opened if splint has something to complain about.
+Quickfix commands can now be used to jump to an error location. For easier
+navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|.
+
+Splint has many options. Presumably the best way is to keep the options in an
+option file (~/.splintrc). For a quick try you can use the menu item
+'Run->cmd. line arg. for splint' to specify some buffer related options.
+
+When vim is started this plugin will check whether splint is executable. If
+not, the menu item will *NOT' be visible.
+
+
+1.7.6 CODECHECK *csupport-run-codecheck*
+
+CodeCheck (TM) is a commercial code analyzing tool produced by Abraxas
+Software, Inc. (www.abraxas-software.com).
+Of course it has to be installed in order to be used within Vim. The menu
+item 'Run->CodeCheck' will run the current buffer through CodeCheck.
+
+An error window will be opened if CodeCheck has something to complain about.
+Quickfix commands can now be used to jump to an error location. For easier
+navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|.
+
+CodeCheck has many options. For a quick try you can use the menu item
+'Run->cmd. line arg. for CodeCheck' to specify some buffer related options.
+
+CodeCheck will be run with default options (see |csupport-custom-glob-vars|).
+The default options can be overwritten by placing a global variable in
+~/.vimrc , e.g.
+
+ let g:C_CodeCheckOptions = "-K13 -Rmeyers"
+
+The default name for the executable is 'check'. There are other names in use
+on different platforms. The name can be changed by placing a global variable
+in ~/.vimrc , e.g.
+
+ let g:C_CodeCheckExeName = "chknt.exe"
+
+When vim is started this plugin will check whether CodeCheck is executable. If
+not, the menu item will *NOT' be visible.
+
+
+1.7.7 INDENT *csupport-run-indent*
+
+The formatter 'indent' can be run over the whole buffer or a marked region.
+Before formatting the whole buffer this buffer will be saved to disk and you
+will be asked for a confirmation.
+
+Indent has many options. These are kept in the file '.indent.pro' in your home
+directory. See the indent manual for more information.
+
+
+1.7.8 HARDCOPY *csupport-run-hardcopy*
+
+Generates a PostScript file from the whole buffer or from a marked region.
+On a Windows system a printer dialog is displayed.
+
+The print header contains date and time for the current locale. The definition
+used is
+
+ let s:C_Printheader = "%<%f%h%m%< %=%{strftime('%x %X')} Page %N"
+
+The current locale can be overwritten by changing the language, e.g.
+
+ :language C
+
+or by setting a global variable in the file ~/.vimrc , e.g. :
+
+ let g:C_Printheader = "%<%f%h%m%< %=%{strftime('%x %X')} SEITE %N"
+
+See :h printheader and :h strftime() for more details.
+
+
+1.7.9 REBUILD TEMPLATES *csupport-run-templates*
+
+After editing one or more template files a click on this item rereads the
+template files and rebuilds all templates.
+
+
+1.7.10 XTERM SIZE *csupport-run-xterm*
+
+The size of the xterm used for running a program (below) can be set by this
+menu item. The default is 80 columns with 24 lines.
+This feature is not available under Windows.
+
+
+1.7.11 OUTPUT REDIRECTION *csupport-run-output*
+
+Running a program can be done in one of three ways:
+(1) Run the program from the gVim command line.
+ This is for interactive programs with little input and output.
+(2) Run the program and direct the output into a window with name "C-Output".
+ The buffer and its content will disappear when the window is closed and
+ reused otherwise.
+ This is for non-interactive programs with little to very much output.
+ You have unlimited line length, regex search, navigation, ...
+ The tabstop value will be set to 8 for "C-Output".
+(3) Run the program in an xterm.
+
+The output method can be chosen from the menu item 'Run->output: ...'.
+This menu has three states:
+
+ output: VIM->buffer->xterm
+ output: BUFFER->xterm->vim
+ output: XTERM->vim->buffer
+
+The first (uppercase) item shows the current method. The default is 'vim'.
+This can be changed by setting the variable g:C_OutputGvim to another value.
+Possible values are 'vim', 'buffer' and 'xterm' .
+
+The xterm defaults can be set in ~/.vimrc by the variable g:C_XtermDefaults .
+The default is "-fa courier -fs 12 -geometry 80x24" :
+ font name : -fa courier
+ font size : -fs 12
+ terminal size : -geometry 80x24
+See 'xterm -help' for more options. Xterms are not available under Windows.
+
+------------------------------------------------------------------------------
+1.8 'help' *csupport-help*
+------------------------------------------------------------------------------
+
+The root menu item 'help' shows this plugin help in a help window. The help
+tags must have been generated with
+ :helptags ~/.vim/doc
+
+==============================================================================
+2. USAGE WITHOUT GUI (Vim) *csupport-usage-vim*
+==============================================================================
+
+The frequently used constructs can be inserted with key mappings. The
+mappings are also described in the document c-hot-keys.pdf (reference card,
+part of this package).
+Hint: Typing speed matters. The combination of a leader ('\') and the
+following character(s) will only be recognized for a short time.
+The insert mode mappings start with ` (backtick).
+
+Legend: (i) insert mode, (n) normal mode, (v) visual mode
+
+ -- Load / Unload C/C++ Support ----------------------------------------
+
+ \lcs Load C/C++ Support Menus (n, GUI only)}
+ \ucs Unload C/C++ Support Menus (n, GUI only)}
+
+ -- Comments -----------------------------------------------------------
+
+ \cl end-of-line comment (n,v,i)
+ \cj adjust end-of-line comment(s) (n,v,i)
+ \cs set end-of-line comment column (n)
+ \c* code -> comment /* */ (n,v)
+ \c/ code -> comment // (n,v)
+ \co comment -> code (n,v)
+ \cfr frame comment (n,i)
+ \cfu function comment (n,i)
+ \cme method description (n,i)
+ \cca class description (n,i)
+ \cd date (n,i)
+ \ct date \& time (n,i)
+
+ -- Statements ---------------------------------------------------------
+
+ \sd do { } while (n,v,i)
+ \sf for (n,i)
+ \sfo for { } (n,v,i)
+ \si if (n,i)
+ \sif if { } (n,v,i)
+ \sie if else (n,v,i)
+ \sife if { } else { } (n,v,i)
+ \sw while (n,i)
+ \swh while { } (n,v,i)
+ \ss switch (n,v,i)
+ \sc case (n,i)
+ \s{ { } (n,v,i)
+
+ -- Preprocessor -------------------------------------------------------
+
+ \p< #include <> (n,i)
+ \p" #include "" (n,i)
+ \pd #define (n,i)
+ \pu #undef (n,i)
+ \pie #if #else #endif (n,v,i)
+ \pid #ifdef #else #endif (n,v,i)
+ \pin #ifndef #else #endif (n,v,i)
+ \pind #ifndef #def #endif (n,v,i)
+ \pi0 #if 0 #endif (n,v,i)
+ \pr0 remove #if 0 #endif (n)
+ -- Idioms -------------------------------------------------------------
+
+ \if function (n,v,i)
+ \isf static function (n,v,i)
+ \im main() (n,v,i)
+ \i0 for( x=0; x<n; x+=1 ) (n,v,i)
+ \in for( x=n-1; x>=0; x-=1 ) (n,v,i)
+ \ie enum + typedef (n,i)
+ \is struct + typedef (n,i)
+ \iu union + typedef (n,i)
+ \ip printf() (n,i)
+ \isc scanf() (n,i)
+ \ica p=calloc() (n,i)
+ \ima p=malloc() (n,i)
+ \isi sizeof() (n,v,i)
+ \ias assert() (n,v,i)
+ \ii open input file (n,i)
+ \io open output file (n,i)
+
+ -- Snippets -----------------------------------------------------------
+
+ \nr read code snippet (n)
+ \nw write code snippet (n,v)
+ \ne edit code snippet (n)
+ \np pick up prototype (n,v)
+ \ni insert prototype(s) (n)
+ \nc clear prototype(s) (n)
+ \ns show prototype(s) (n)
+
+ -- C++ ----------------------------------------------------------------
+
+ \+m method implementation (n,i)
+ \+c class (n,i)
+ \+cn class (using new) (n,i)
+ \+tm template method implementation (n,i)
+ \+tc template class (n,i)
+ \+tcn template class (using new) (n,i)
+ \+tf template function (n,i)
+ \+ec error class (n,i)
+ \+tr try ... catch (n,v,i)
+ \+ca catch (n,v,i)
+ \+c. catch(...) (n,v,i)
+
+ -- Run ----------------------------------------------------------------
+
+ \rc save and compile (n)
+ \rl link (n)
+ \rr run (n)
+ \ra set comand line arguments (n)
+ \rm run make (n)
+ \rg cmd. line arg. for make (n)
+ \rp run splint (n)
+ \ri cmd. line arg. for splint (n)
+ \rk run CodeCheck (TM) (n)
+ \re cmd. line arg. for CodeCheck (TM) (n)
+ \rd run indent (n,v)
+ \rh hardcopy buffer (n,v)
+ \rs show plugin settings (n)
+ \rx set xterm size (n, only Linux/UNIX & GUI)
+ \ro change output destination (n)
+ \rt rebuild templates (n)
+
+The hotkeys are defined in the file type plugin c.vim (part of this csupport
+plugin package) and described in the document c-hot-keys.pdf
+
+==============================================================================
+3. HOTKEYS *csupport-hotkeys*
+==============================================================================
+
+The following hotkeys are defined in normal, visual and insert mode:
+
+ F9 compile and link
+ Alt-F9 write buffer and compile
+ Ctrl-F9 run executable
+ Shift-F9 set command line arguments
+
+ Shift-F2 switch between source files and header files
+
+Shift-F2 can be used to switch between source files and header files if the
+plugin a.vim is present. To suppress the creation of a new header file when
+switching from a source file the file ~/.vimrc should contain a line
+
+ let g:alternateNoDefaultAlternate = 1
+
+A header file will only be opened if it already exists.
+
+The hotkeys are defined in the file type plugin c.vim .
+
+All hotkeys from the non-GUI mode also work for gVim (see |csupport-usage-vim|).
+
+==============================================================================
+4. CUSTOMIZATION *csupport-custom*
+==============================================================================
+
+------------------------------------------------------------------------------
+4.1 GLOBAL VARIABLES *csupport-custom-glob-vars*
+------------------------------------------------------------------------------
+
+Several global variables are checked by the script to customize it:
+
+ ----------------------------------------------------------------------------
+ GLOBAL VARIABLE DEFAULT VALUE TAG (see below)
+ ----------------------------------------------------------------------------
+ g:C_GlobalTemplateFile plugin_dir.'c-support/templates/Templates'
+ g:C_LocalTemplateFile $HOME.'/.vim/c-support/templates/Templates'
+ g:C_TemplateOverwrittenMsg 'yes'
+
+ g:C_CodeSnippets plugin_dir."/c-support/codesnippets/"
+ g:C_Dictionary_File ""
+ g:C_LoadMenus "yes"
+ g:C_MenuHeader "yes"
+ g:C_OutputGvim "vim"
+ g:C_XtermDefaults "-fa courier -fs 12 -geometry 80x24"
+ g:C_Printheader "%<%f%h%m%< %=%{strftime('%x %X')} Page %N"
+
+ Linux/UNIX:
+ g:C_ObjExtension ".o"
+ g:C_ExeExtension ""
+ g:C_CCompiler "gcc"
+ g:C_CplusCompiler "g++"
+ Windows:
+ g:C_ObjExtension ".obj"
+ g:C_ExeExtension ".exe"
+ g:C_CCompiler "gcc.exe"
+ g:C_CplusCompiler "g++.exe"
+ g:C_CFlags "-Wall -g -O0 -c"
+ g:C_LFlags "-Wall -g -O0"
+ g:C_Libs "-lm"
+ g:C_LineEndCommColDefault 49
+ g:C_CExtension "c"
+ g:C_TypeOfH "cpp"
+
+ g:C_CodeCheckExeName "check"
+ g:C_CodeCheckOptions "-K13"
+
+The variable plugin_dir will automatically be set to one of the following values:
+ $HOME.'/.vim/' for Linux/Unix
+ $VIM.'/vimfiles/' for Windows
+
+ ----------------------------------------------------------------------------
+
+1. group: g:C_GlobalTemplateFile : Sets the master template file (see|csupport-templates|)
+ g:C_LocalTemplateFile : Sets the local template file (see|csupport-templates|)
+ g:C_TemplateOverwrittenMsg : message if template is overwritten
+
+2. group: g:C_CodeSnippets : The name of the code snippet directory
+ (see |csupport-snippets|).
+ g:C_Dictionary_File : The name(s) of the dictionary file(s) used for
+ word completion (see also |csupport-dictionary|)
+ g:C_Root : the name of the root menu of this plugin
+ g:C_LoadMenus : Load menus and mappings ("yes", "no") at startup.
+ g:C_MenuHeader : Switch the submenu header on/off.
+ g:C_OutputGvim : when program is running output goes to the vim
+ command line ("vim"), to a buffer ("buffer") or to
+ an xterm ("xterm").
+ g:C_XtermDefaults : the xterm defaults
+ g:C_Printheader : hardcopy: definition of the page header
+
+3. group: g:C_CExtension : Extension of C files. Everything else is C++.
+ g:C_TypeOfH : filetype of header files with extension 'h' (c,cpp)
+ (see |csupport-comm-style|)
+ g:C_CCompiler : The name of the C compiler.
+ g:C_CplusCompiler : The name of the C++ compiler.
+ g:C_CFlags : Compiler flags used for a compilation.
+ g:C_LFlags : Compiler flags used for linkage.
+ g:C_Libs : Libraries to link with.
+ g:C_ObjExtension : C/C+ file extension for objects
+ (leading point required if not empty)
+ g:C_ExeExtension : C/C+ file extension for executables
+ (leading point required if not empty)
+ g:C_LineEndCommColDefault : Default starting column for end-of-line comments.
+ g:C_CodeCheckExeName : The name of the CodeCheck (TM) executable
+ (the default is 'check')
+ g:C_CodeCheckOptions : Default options for CodeCheck (TM)
+ (see |csupport-run-codecheck|).
+
+To override the default add appropriate assignments to ~/.vimrc .
+
+------------------------------------------------------------------------------
+4.2 THE ROOT MENU *csupport-custom-root-menu*
+------------------------------------------------------------------------------
+
+The variable g:C_Root, if set (in ~/.vimrc or in ~/.gvimrc), gives the name of
+the single Vim root menu item in which the C/C++ submenus will be put. The
+default is
+ '&C\/C\+\+.'
+Note the terminating dot. A single root menu can be used if the screen is
+limited or several plugins are used in parallel.
+
+If set to "", this single root menu item will not appear. Now all submenus
+are put into the Vim root menu. This is nice for beginners in a lab
+installation or for C-only programmers.
+
+------------------------------------------------------------------------------
+4.3 SYSTEM-WIDE INSTALLATION *csupport-system-wide*
+------------------------------------------------------------------------------
+
+A system-wide installation (one installation for all users) is done as
+follows.
+
+As *** SUPERUSER *** :
+
+(1) Find the Vim installation directory.
+The Vim ex command ':echo $VIM' gives '/usr/local/share/vim' or something like
+that. Beyond this directory you will find the Vim installation, e.g. in
+'/usr/local/share/vim/vim71' if Vim version 7.1 has been installed.
+
+(2) Create a new subdirectory 'vimfiles', e.g. '/usr/local/share/vim/vimfiles'.
+
+(3) Install C/C++ Support
+Copy the archive cvim.zip to this new directory and unpack it:
+ unzip cvim.zip
+
+(4) Generate the help tags:
+ :helptags $VIM/vimfiles/doc
+
+
+As *** USER *** :
+
+Create your private snippet directory:
+
+ mkdir --parents ~/.vim/c-support/codesnippets
+
+You may want to copy the snippets comming with this plugin (in
+$VIM/vimfiles/c-support/codesnippets) into the new directory or to set a
+link to the global directory.
+
+Create your private template directory:
+
+ mkdir --parents ~/.vim/c-support/template
+
+Create a private template file 'Templates' in this directory to overwrite some
+macros, e.g.
+
+ *|AUTHOR|* = your name
+ *|AUTHORREF|* = ...
+ *|EMAIL|* = ...
+ *|COMPANY|* = ...
+ *|COPYRIGHT|* = ...
+
+You can also have local templates which overwrite the global ones. To suppress
+the messages in this case set a global variable in '~/.vimrc' :
+
+ let g:C_TemplateOverwrittenMsg= 'no'
+
+The default is 'yes'.
+
+==============================================================================
+5. TEMPLATE FILES AND TAGS *csupport-templates*
+==============================================================================
+
+------------------------------------------------------------------------------
+5.1 TEMPLATE FILES *csupport-templates-files*
+------------------------------------------------------------------------------
+
+Nearly all menu entries insert code snippets or comments. All these stuff is
+taken from template files and can be changed by the user to meet his
+requirements.
+
+The master template file is '$HOME/.vim/c-support/templates/Templates' for a
+user installation and '$VIM/vimfiles/c-support/templates/Templates' for a
+system-wide installation (see|csupport-system-wide|).
+
+The master template file starts with a macro section followed by templates for
+single menu items or better by including other template files grouping the
+templates according to the menu structure of this plugin. The master file
+could look like this:
+
+ $
+ $ =============================================================
+ $ ========== USER MACROS ======================================
+ $ =============================================================
+ $
+ *|AUTHOR|* = Dr. Fritz Mehner
+ *|AUTHORREF|* = mn
+ *|EMAIL|* = mehner@fh-swf.de
+ *|COMPANY|* = FH Südwestfalen, Iserlohn
+ *|COPYRIGHT|* = Copyright (c)*|YEAR|, |AUTHOR|*
+ $
+ $ =============================================================
+ $ ========== FILE INCLUDES ====================================
+ $ =============================================================
+ $
+ *|includefile|* = c.comments.template
+ *|includefile|* = c.cpp.template
+ *|includefile|* = c.idioms.template
+ *|includefile|* = c.preprocessor.template
+ *|includefile|* = c.statements.template
+
+Lines starting with a dollar sign are comments. The section starting
+with *|AUTHOR|* assigns values to predefined tags
+(see|csupport-templates-macros|) to personalize some templates. Other
+predefined tags with given default values can be used (e.g. *|YEAR|* ).
+
+User defined tags are possible. They have the following syntax:
+
+ *|macroname|* = replacement
+
+A macroname starts with a letter (uppercase or lowercase) followed by zero or
+more letters, digits or underscores.
+
+------------------------------------------------------------------------------
+5.2 MACROS *csupport-templates-macros*
+------------------------------------------------------------------------------
+
+The following macro names are predefined. The first group is used to
+personalize templates.
+
+ ----------------------------------------------------------------------------
+ PREDEFINED MACROS DEFAULT VALUE
+ ----------------------------------------------------------------------------
+*|AUTHOR|* ""
+*|AUTHORREF|* ""
+*|EMAIL|* ""
+*|COMPANY|* ""
+*|PROJECT|* ""
+*|COPYRIGHTHOLDER|* ""
+*|includefile|* ""
+
+*|BASENAME|* filename without path and suffix
+*|DATE|* the preferred date representation for the current locale
+ without the time
+*|FILENAME|* filename without path
+*|PATH|* path without filename
+*|SUFFIX|* filename suffix
+*|TIME|* the preferred time representation for the current locale
+ without the date and the time zone or name or abbreviation
+*|YEAR|* the year as a decimal number including the century
+
+*|includefile|* can be used to include an additional template file. A file
+will be included only once. Commenting and uncommenting include macros is a
+simple way to switch between several sets of templates (see also
+|csupport-run-templates|). Overwriting existing macros and templates is
+possible.
+
+ ----------------------------------------------------------------------------
+ PREDEFINED TAGS
+ ----------------------------------------------------------------------------
+ <CURSOR> The cursor position after insertion of a template
+ <SPLIT> The split point when inserting in visual mode
+ (see|csupport-templates-definition|)
+
+A dependent template file can start with its own macro section. There is no
+need to have all user defined macros in the master file.
+When the first template definition is found (see below) macro definitions are
+no longer recognized.
+
+ ----------------------------------------------------------------------------
+ USER DEFINED FORMATS FOR DATE AND TIME *csupport-templates-date*
+ ----------------------------------------------------------------------------
+The format for *|DATE|* ,*|TIME|* , and*|YEAR|* can be set by the user. The
+defaults are
+ *|DATE|* '%x'
+ *|TIME|* '%X'
+ *|YEAR|* '%Y'
+See the manual page of the C function strftime() for the format. The accepted
+format depends on your system, thus this is not portable! The maximum length
+of the result is 80 characters.
+
+User defined formats can be set using the following global variables in
+~/.vimrc , e.g.
+ let g:C_FormatDate = '%D'
+ let g:C_FormatTime = '%H:%M'
+ let g:C_FormatYear = 'year %Y'
+
+------------------------------------------------------------------------------
+5.3 TEMPLATES *csupport-templates-names*
+------------------------------------------------------------------------------
+
+5.3.1 Template names
+
+The template behind a menu entry is identified by a given name. The first part
+of the name identifies the menu, the second part identifies the item. The
+modes are also hard coded (see|csupport-templates-definition|for the use of
+<SPLIT>).
+
+ TEMPLATE NAME MODES
+ --------------------------------------------------------------------------
+ comment.end-of-line-comment normal visual
+ comment.frame normal
+ comment.function normal
+ comment.method normal
+ comment.class normal
+ comment.file-description normal
+ comment.keyword-bug normal
+ comment.keyword-compiler normal
+ comment.keyword-todo normal
+ comment.keyword-tricky normal
+ comment.keyword-warning normal
+ comment.keyword-workaround normal
+ comment.keyword-keyword normal
+ comment.file-section-cpp-header-includes normal
+ comment.file-section-cpp-macros normal
+ comment.file-section-cpp-typedefs normal
+ comment.file-section-cpp-data-types normal
+ comment.file-section-cpp-class-defs normal
+ comment.file-section-cpp-local-variables normal
+ comment.file-section-cpp-prototypes normal
+ comment.file-section-cpp-function-defs-exported normal
+ comment.file-section-cpp-function-defs-local normal
+ comment.file-section-cpp-class-implementations-exported normal
+ comment.file-section-cpp-class-implementations-local normal
+ comment.file-section-hpp-header-includes normal
+ comment.file-section-hpp-macros normal
+ comment.file-section-hpp-exported-typedefs normal
+ comment.file-section-hpp-exported-data-types normal
+ comment.file-section-hpp-exported-class-defs normal
+ comment.file-section-hpp-exported-variables normal
+ comment.file-section-hpp-exported-function-declarations normal
+
+ cpp.method-implementation normal
+ cpp.class normal
+ cpp.class-using-new normal
+ cpp.error-class normal
+ cpp.template-method-implementation normal
+ cpp.template-class normal
+ cpp.template-class-using-new normal
+ cpp.template-function normal
+ cpp.operator-in normal
+ cpp.operator-out normal
+ cpp.try-catch normal visual
+ cpp.catch normal visual
+ cpp.catch-points normal visual
+ cpp.extern normal visual
+ cpp.open-input-file normal
+ cpp.open-output-file normal
+ cpp.namespace normal visual
+
+ idioms.function normal visual
+ idioms.function-static normal visual
+ idioms.main normal visual
+ idioms.enum normal visual
+ idioms.struct normal visual
+ idioms.union normal visual
+ idioms.calloc normal
+ idioms.malloc normal
+ idioms.open-input-file normal
+ idioms.open-output-file normal
+ idioms.fprintf normal
+ idioms.fscanf normal
+
+ preprocessor.define normal
+ preprocessor.undefine normal
+ preprocessor.if-else-endif normal visual
+ preprocessor.ifdef-else-endif normal visual
+ preprocessor.ifndef-else-endif normal visual
+ preprocessor.ifndef-def-endif normal visual
+
+ statements.do-while normal visual
+ statements.for normal
+ statements.for-block normal visual
+ statements.if normal
+ statements.if-block normal visual
+ statements.if-else normal visual
+ statements.if-block-else normal visual
+ statements.while normal
+ statements.while-block normal visual
+ statements.switch normal visual
+ statements.case normal
+ statements.block normal visual
+
+
+
+5.3.2 Template definition *csupport-templates-definition*
+
+A template definition starts with a template head line with the following
+syntax:
+
+ == templatename == [ position == ]
+
+The templatename is one of the above template identifiers. The position
+attribute is optional. Possible attribute values are:
+
+ above insert the template before the current line
+ append append the template to the current line
+ below insert the template below the current line
+ insert insert the template at the cursor position
+ start insert the template before the first line of the buffer
+
+An example:
+
+ == comment.function ==
+ /*
+ * === FUNCTION =======================================================
+ * Name: <CURSOR>
+ * Description:
+ * ======================================================================
+ */
+
+The definition of a template ends at the next head line or at the end of the
+file.
+
+Templates for the visual mode can use <SPLIT>. The text before <SPLIT> will
+than be inserted above the marked area, the text after <SPLIT> will be
+inserted behind the marked area. An example:
+
+ == statements.if-block-else ==
+ if ( <CURSOR> ) {
+ <SPLIT>} else {
+ }
+
+If applied to the marked block
+
+ xxxxxxxxxxx
+ xxxxxxxxxxx
+
+this template yields
+
+ if ( ) {
+ xxxxxxxxxxx
+ xxxxxxxxxxx
+ } else {
+ }
+
+The templates with a visual mode are shown in the table under
+|csupport-templates-names|.
+
+5.3.3 Template expansion *csupport-templates-expansion*
+
+There are additional ways to control the expansion of a template.
+
+USER INPUT
+----------
+If the usage of a yet undefined user macro starts with a question mark the
+user will be asked for the replacement first, e.g. with the following template
+
+ == idioms.function ==
+ void<CURSOR>
+ *|?FUNCTION_NAME|* ( )
+ {
+ <SPLIT> return ;
+ } /* ----- end of function*|FUNCTION_NAME|* ----- */
+
+The can specify the function name which then will be applied twice. If the
+macro was already in use the old value will be suggested as default.
+
+MACRO MANIPULATION
+------------------
+
+A macro expansion can be controlled by the following attributes
+
+ :l change macro text to lowercase
+ :u change macro text to uppercase
+ :c capitalize macro text
+ :L legalize name
+
+The include guard template is an example for the use of ':L' :
+
+ == preprocessor.ifndef-def-endif ==
+ #ifndef *|?BASENAME:L|_INC*
+ #define *|BASENAME|_INC*
+ <CURSOR><SPLIT>
+ #endif // ----- #ifndef*|BASENAME|_INC* -----
+
+The base name of the file shall be used as part of the include guard name.
+The predefined macro*|BASENAME|* is used to ask for this part because this
+macro has already a defined value. That value can accepted or replaced by the
+user. For the filename 'test test++test.h' the legalized base name
+'TEST_TEST_TEST' will be suggested.
+
+Legalization means:
+ - replace all whitespaces by underscores
+ - replace all non-word characters by underscores
+ - replace '+' and '-' by underscore
+
+
+==============================================================================
+6. C/C++ DICTIONARY *csupport-dictionary*
+==============================================================================
+
+The files
+
+ c-c++-keywords.list
+ k+r.list
+ stl_index.list
+
+are a part of this plugin and can be used (together with your own lists) as
+dictionaries for automatic word completion. This feature is enabled by
+default. The default word lists are
+
+ plugin_dir/c-support/wordlists/c-c++-keywords.list
+ plugin_dir/c-support/wordlists/k+r.list
+ plugin_dir/c-support/wordlists/stl_index.list
+
+The variable plugin_dir will automatically be set by the plugin to one of the
+following values:
+ $HOME.'/.vim/' for Linux/Unix
+ $VIM.'/vimfiles/' for Windows
+If you want to use an additional list MyC.list put the following lines into
+ ~/.vimrc :
+
+ let g:C_Dictionary_File = PLUGIN_DIR.'/c-support/wordlists/c-c++-keywords.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/k+r.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/stl_index.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/MyC.list'
+
+When in file ~/.vimrc the name PLUGIN_DIR has to be replaced by $HOME or
+$VIM (see above). Whitespaces in the pathnames have to be escaped with a
+backslash.
+The right side is a comma separated list of files. Note the point at the end
+of the first line (string concatenation) and the backslash in front of the
+second line (continuation line).
+You can use Vim's dictionary feature CTRL-X, CTRL-K (and CTRL-P, CTRL-N).
+
+
+==============================================================================
+7. EXTEND taglist.vim FOR make AND qmake *csupport-taglist*
+==============================================================================
+
+The use of the Vim plugin taglist.vim (Author: Yegappan Lakshmanan) is highly
+recommended. It uses the program ctags which generates tag files for 3 dozen
+languages (Exuberant Ctags, Darren Hiebert, http://ctags.sourceforge.net).
+With the following extensions the list of targets in a makefile can be shown
+in the taglist window.
+
+1) Append the file customization.ctags to the file $HOME/.ctags .
+
+2) Add the following lines (from customization.vimrc) to $HOME/.vimrc :
+
+ "
+ "-------------------------------------------------------------------
+ " taglist.vim : toggle the taglist window
+ " taglist.vim : define the title texts for make
+ " taglist.vim : define the title texts for qmake
+ "-------------------------------------------------------------------
+ noremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+ inoremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+
+ let tlist_make_settings = 'make;m:makros;t:targets'
+ let tlist_qmake_settings = 'qmake;t:SystemVariables'
+
+ if has("autocmd")
+ " ---------- qmake : set file type for *.pro ----------
+ autocmd BufNewFile,BufRead *.pro set filetype=qmake
+ endif " has("autocmd")
+
+3) restart vim/gvim
+
+The two maps will toggle the taglist window (hotkey F11) in all editing modes.
+The two assignments define the headings for the (q)make sections in the
+taglist window. The autocmd set the file type 'qmake' for the filename
+extension 'pro' (ctags needs this).
+
+==============================================================================
+8. SYNTAX BASED FOLDING *csupport-folding*
+==============================================================================
+
+Syntax based folding can be enabled by adding the following lines to the file
+'~/.vim/syntax/c.vim':
+
+ syn region cBlock start="{" end="}" transparent fold
+ set foldmethod=syntax
+ " initially all folds open:
+ set foldlevel=999
+
+You may have to create this file first. See |folding| for more information.
+
+==============================================================================
+9. WINDOWS PARTICULARITIES *csupport-windows*
+==============================================================================
+
+The plugin should go into the directory structure below the local
+installation directory $HOME/.vim/ for LINUX/UNIX and $VIM/vimfiles/ for
+Windows.
+The values of the two variables can be found from inside Vim:
+ :echo $VIM
+or
+ :echo $HOME
+
+Configuration files:
+
+ LINUX/UNIX : $HOME/.vimrc and $HOME/.gvimrc
+ Windows : $VIM/_vimrc and $VIM/_gvimrc
+
+Compiler settings:
+
+It could be necessary to add further settings for your compiler. To compile
+C++-programs using a Dev-C++ installation (http://www.bloodshed.net) the
+following item in $VIM/_vimrc is needed (depends on the Dev-C++ install
+directory):
+
+ let g:C_CFlags = '-Wall -g -o0 -c -I c:\programs\dev-c++\include\g++'
+
+==============================================================================
+10. TROUBLESHOOTING *csupport-troubleshooting*
+==============================================================================
+
+* I do not see any new main menu item.
+ - Was the archive extracted into the right directory?
+
+* How can I see what was loaded?
+ - Use ':scriptnames' from the Vim command line.
+
+* No main menu item.
+ - Loading of plugin files must be enabled. If not use
+ :filetype plugin on
+ This is the minimal content of the file '$HOME/.vimrc'. Create one if there
+ is none, or better use customization.vimrc.
+
+* Most key mappings do not work.
+ - They are defined in a filetype plugin in '$HOME/.vim/ftplugin/'. Use ':filetype'
+ to check if filetype plugins are enabled. If not, add the line
+ filetype plugin on
+ to the file '~/.vimrc'.
+
+* Some hotkeys do not work.
+ - The hotkeys might be in use by your graphical desktop environment.
+ Under KDE Ctrl-F9 is the hotkey which let you switch to the 9. desktop.
+ The key settings can usually be redefined.
+
+* Splint and/or CodeCheck menu item not visible.
+ - The program is not installed or not found (path not set) or not executable.
+
+==============================================================================
+11. RELEASE NOTES *csupport-release-notes*
+==============================================================================
+See file c-support/doc/ChangeLog .
+
+==============================================================================
+vim:tw=78:noet:ts=2:ft=help:norl:
diff --git a/.vim/doc/haskellmode.txt b/.vim/doc/haskellmode.txt
new file mode 100644
index 0000000..905349c
--- /dev/null
+++ b/.vim/doc/haskellmode.txt
@@ -0,0 +1,456 @@
+*haskellmode.txt* Haskell Mode Plugins 23/04/2009
+
+Authors:
+ Claus Reinke <claus.reinke@talk21.com> ~
+
+Homepage:
+ http://projects.haskell.org/haskellmode-vim
+
+CONTENTS *haskellmode*
+
+ 1. Overview |haskellmode-overview|
+ 1.1 Runtime Requirements |haskellmode-requirements|
+ 1.2 Quick Reference |haskellmode-quickref|
+ 2. Settings |haskellmode-settings|
+ 2.1 GHC and web browser |haskellmode-settings-main|
+ 2.2 Fine tuning - more configuration options |haskellmode-settings-fine|
+ 3. GHC Compiler Integration |haskellmode-compiler|
+ 4. Haddock Integration |haskellmode-haddock|
+ 4.1 Indexing |haskellmode-indexing|
+ 4.2 Lookup |haskellmode-lookup|
+ 4.3 Editing |haskellmode-editing|
+ 5. Hpaste Integration |haskellmode-hpaste|
+ 6. Additional Resources |haskellmode-resources|
+
+==============================================================================
+ *haskellmode-overview*
+1. Overview ~
+
+ The Haskell mode plugins provide advanced support for Haskell development
+ using GHC/GHCi on Windows and Unix-like systems. The functionality is
+ based on Haddock-generated library indices, on GHCi's interactive
+ commands, or on simply activating (some of) Vim's built-in program editing
+ support in Haskell-relevant fashion. These plugins live side-by-side with
+ the pre-defined |syntax-highlighting| support for |haskell| sources, and
+ any other Haskell-related plugins you might want to install (see
+ |haskellmode-resources|).
+
+ The Haskell mode plugins consist of three filetype plugins (haskell.vim,
+ haskell_doc.vim, haskell_hpaste.vim), which by Vim's |filetype| detection
+ mechanism will be auto-loaded whenever files with the extension '.hs' are
+ opened, and one compiler plugin (ghc.vim) which you will need to load from
+ your vimrc file (see |haskellmode-settings|).
+
+
+ *haskellmode-requirements*
+1.1 Runtime Requirements ~
+
+ The plugins require a recent installation of GHC/GHCi. The functionality
+ derived from Haddock-generated library indices also requires a local
+ installation of the Haddock documentation for GHC's libraries (if there is
+ no documentation package for your system, you can download a tar-ball from
+ haskell.org), as well as an HTML browser (see |haddock_browser|). If you
+ want to use the experimental hpaste interface, you will also need Wget.
+
+ * GHC/GHCi ~
+ Provides core functionality. http://www.haskell.org/ghc
+
+ * HTML library documentation files and indices generated by Haddock ~
+ These usually come with your GHC installation, possibly as a separate
+ package. If you cannot get them this way, you can download a tar-ball
+ matching your GHC version from http://www.haskell.org/ghc/docs/
+
+ * HTML browser with basic CSS support ~
+ For browsing Haddock docs.
+
+ * Wget ~
+ For interfacing with http://hpaste.org.
+
+ Wget is widely available for modern Unix-like operating systems. Several
+ ports also exist for Windows, including:
+
+ - Official GNU Wget (natively compiled for Win32)
+ http://www.gnu.org/software/wget/#downloading
+
+ - UnxUtils Wget (natively compiled for Win32, bundled with other ported
+ Unix utilities)
+ http://sourceforge.net/projects/unxutils/
+
+ - Cygwin Wget (emulated POSIX in Win32, must be run under Cygwin)
+ http://cygwin.com/packages/wget/
+
+ *haskellmode-quickref*
+1.2 Quick Reference ~
+
+|:make| load into GHCi, show errors (|quickfix| |:copen|)
+|_ct| create |tags| file
+|_si| show info for id under cursor
+|_t| show type for id under cursor
+|_T| insert type declaration for id under cursor
+|balloon| show type for id under mouse pointer
+|_?| browse Haddock entry for id under cursor
+|_?1| search Hoogle for id under cursor
+|_?2| search Hayoo! for id under cursor
+|:IDoc| {identifier} browse Haddock entry for unqualified {identifier}
+|:MDoc| {module} browse Haddock entry for {module}
+|:FlagReference| {s} browse Users Guide Flag Reference for section {s}
+|_.| qualify unqualified id under cursor
+|_i| add 'import <module>(<identifier>)' for id under cursor
+|_im| add 'import <module>' for id under cursor
+|_iq| add 'import qualified <module>(<identifier>)' for id under cursor
+|_iqm| add 'import qualified <module>' for id under cursor
+|_ie| make imports explit for import statement under cursor
+|_opt| add OPTIONS_GHC pragma
+|_lang| add LANGUAGE pragma
+|i_CTRL-X_CTRL-O| insert-mode completion based on imported ids (|haskellmode-XO|)
+|i_CTRL-X_CTRL-U| insert-mode completion based on documented ids (|haskellmode-XU|)
+|i_CTRL-N| insert-mode completion based on imported sources
+|:GHCi|{command/expr} run GHCi command/expr in current module
+
+|:GHCStaticOptions| edit static GHC options for this buffer
+|:DocSettings| show current Haddock-files-related plugin settings
+|:DocIndex| populate Haddock index
+|:ExportDocIndex| cache current Haddock index to a file
+|:HpasteIndex| Read index of most recent entries from hpaste.org
+|:HpastePostNew| Submit current buffer as a new hpaste
+
+
+==============================================================================
+ *haskellmode-settings*
+2. Settings ~
+
+ The plugins try to find their dependencies in standard locations, so if
+ you're lucky, you will only need to set |compiler| to ghc, and configure
+ the location of your favourite web browser. You will also want to make
+ sure that |filetype| detection and |syntax| highlighting are on. Given the
+ variety of things to guess, however, some dependencies might not be found
+ correctly, or the defaults might not be to your liking, in which case you
+ can do some more fine tuning. All of this configuration should happen in
+ your |vimrc|.
+>
+ " enable syntax highlighting
+ syntax on
+
+ " enable filetype detection and plugin loading
+ filetype plugin on
+<
+
+ *haskellmode-settings-main*
+2.1 GHC and web browser ~
+
+ *compiler-ghc* *ghc-compiler*
+ To use the features provided by the GHC |compiler| plugin, use the
+ following |autocommand| in your vimrc:
+>
+ au BufEnter *.hs compiler ghc
+<
+ *g:ghc*
+ If the compiler plugin can't locate your GHC binary, or if you have
+ several versions of GHC installed and have a preference as to which binary
+ is used, set |g:ghc|:
+>
+ :let g:ghc="/usr/bin/ghc-6.6.1"
+<
+ *g:haddock_browser*
+ The preferred HTML browser for viewing Haddock documentation can be set as
+ follows:
+>
+ :let g:haddock_browser="/usr/bin/firefox"
+<
+
+ *haskellmode-settings-fine*
+2.2 Fine tuning - more configuration options ~
+
+ Most of the fine tuning is likely to happen for the haskellmode_doc.vim
+ plugin, so you can check the current settings for this plugin via the
+ command |:DocSettings|. If all the settings reported there are to your
+ liking, you probably won't need to do any fine tuning.
+
+ *g:haddock_browser_callformat*
+ By default, the web browser|g:haddock_browser| will be started
+ asynchronously (in the background) on Windows or when vim is running in a
+ GUI, and synchronously (in the foreground) otherwise. These settings seem
+ to work fine if you are using a console mode browser (eg, when editing in
+ a remote session), or if you are starting a GUI browser that will launch
+ itself in the background. But if these settings do not work for you, you
+ can change the default browser launching behavior.
+
+ This is controlled by |g:haddock_browser_callformat|. It specifies a
+ format string which uses two '%s' parameters, the first representing the
+ path of the browser to launch, and the second is the documentation URL
+ (minus the protocol specifier, i.e. file://) passed to it by the Haddock
+ plugin. For instance, to launch a GUI browser on Unix-like systems and
+ force it to the background (see also |shellredir|):
+>
+ :let g:haddock_browser_callformat = '%s file://%s '.printf(&shellredir,'/dev/null').' &'
+<
+ *g:haddock_docdir*
+ Your system's installed Haddock documentation for GHC and its libraries
+ should be automatically detected. If the plugin can't locate them, you
+ must point |g:haddock_docdir| to the path containing the master index.html
+ file for the subdirectories 'libraries', 'Cabal', 'users_guide', etc.:
+>
+ :let g:haddock_docdir="/usr/local/share/doc/ghc/html/"
+<
+ *g:haddock_indexfiledir*
+ The information gathered from Haddock's index files will be stored in a
+ file called 'haddock_index.vim' in a directory derived from the Haddock
+ location, or in $HOME. To configure another directory for the index file,
+ use:
+>
+ :let g:haddock_indexfiledir="~/.vim/"
+<
+ *g:wget*
+ If you also want to try the experimental hpaste functionality, you might
+ you need to set |g:wget| before the |hpaste| plugin is loaded (unless wget
+ is in your PATH):
+>
+ :let g:wget="C:\Program Files\wget\wget.exe"
+<
+
+ Finally, the mappings actually use|<LocalLeader>|behind the scenes, so if
+ you have to, you can redefine|maplocalleader|to something other than '_'.
+ Just remember that the docs still refer to mappings starting with '_', to
+ avoid confusing the majority of users!-)
+
+==============================================================================
+ *haskellmode-compiler* *ghc*
+3. GHC Compiler Integration ~
+
+ The GHC |compiler| plugin sets the basic |errorformat| and |makeprg| to
+ enable |quickfix| mode using GHCi, and provides functionality for show
+ info (|_si|), show type (|_t| or mouse |balloon|), add type declaration
+ (|_T|), create tag file (|_ct|), and insert-mode completion
+ (|i_CTRL-X_CTRL-O|) based on GHCi browsing of the current and imported
+ modules.
+
+ To avoid frequent calls to GHCi, type information is cached in Vim. The
+ cache will be populated the first time a command depends on it, and will
+ be refreshed every time a |:make| goes through without generating errors
+ (if the |:make| does not succeed, the old types will remain available in
+ Vim). You can also unconditionally force reloading of type info using
+ |:GHCReload| (if GHCi cannot load your file, the type info will be empty).
+
+
+ In addition to the standard|quickfix| commands, the GHC compiler plugin
+ provides:
+
+ *:GHCReload*
+:GHCReload Reload modules and unconditionally refresh cache of
+ type info. Usually, |:make| is prefered, as that will
+ refresh the cache only if GHCi reports no errors, and
+ show the errors otherwise.
+
+ *:GHCStaticOptions*
+:GHCStaticOptions Edit the static GHC options for the current buffer.
+ Useful for adding hidden packages (-package ghc).
+
+ *:GHCi*
+:GHCi {command/expr} Run GHCi commands/expressions in the current module.
+
+ *_ct*
+_ct Create |tags| file for the current Haskell source
+ file. This uses GHCi's :ctags command, so it will work
+ recursively, but will only list tags for exported
+ entities.
+
+ *_opt*
+_opt Shows a menu of frequently used GHC compiler options
+ (selecting an entry adds the option as a pragma to the
+ start of the file). Uses popup menu (GUI) or :emenu
+ and command-line completion (CLI).
+
+ *_lang*
+_lang Shows a menu of the LANGUAGE options supported by GHC
+ (selecting an entry adds the language as a pragma to
+ the start of the file). Uses popup menu (GUI) or
+ :emenu and command-line completion (CLI).
+
+ *_si*
+_si Show extended information for the name under the
+ cursor. Uses GHCi's :info command. Output appears in
+ |preview-window| (when done, close with |:pclose|).
+
+ *_t*
+_t Show type for the name under the cursor. Uses cached
+ info from GHCi's :browse command.
+
+ *_T*
+_T Insert type declaration for the name under the cursor.
+ Uses cached info from GHCi's :browse command.
+
+ *haskellmode-XO* *haskellmode-omni-completion*
+CTRL-X CTRL-O Standard insert-mode omni-completion based on the
+ cached type info from GHCi browsing current and
+ imported modules. Only names from the current and from
+ imported modules are included (the completion menu
+ also show the type of each identifier).
+
+==============================================================================
+ *haskellmode-haddock* *haddock*
+4. Haddock Integration ~
+
+ Haskell mode integrates with Haddock-generated HTML documentation,
+ providing features such as navigating to the Haddock entry for the
+ identifier under the cursor (|_?|), completion for the identifier under
+ the cursor (|i_CTRL-X_CTRL-U|), and adding import statements (|_i| |_im|
+ |_iq| |_iqm|) or module qualifier (|_.|) for the identifier under the
+ cursor.
+
+ These commands operate on an internal Haddock index built from the
+ platform's installed Haddock documentation for GHC's libraries. Since
+ populating this index takes several seconds, it should be stored as a
+ file called 'haddock_index.vim' in the directory specified by
+ |g:haddock_indexfiledir|.
+
+ Some commands present a different interface (popup menu or command-line
+ completion) according to whether the current Vim instance is graphical or
+ console-based (actually: whether or not the GUI is running). Such
+ differences are marked below with the annotations (GUI) and (CLI),
+ respectively.
+
+ |:DocSettings| shows the settings for this plugin. If you are happy with
+ them, you can call |:ExportDocIndex| to populate and write out the
+ documentation index (should be called once for every new version of GHC).
+
+ *:DocSettings*
+:DocSettings Show current Haddock-files-related plugin settings.
+
+
+ *haskellmode-indexing*
+4.1 Indexing ~
+
+ *:DocIndex*
+:DocIndex Populate the Haddock index from the GHC library
+ documentation.
+
+ *:ExportDocIndex*
+:ExportDocIndex Cache the current Haddock index to a file (populate
+ index first, if empty).
+
+
+ *haskellmode-lookup*
+4.2 Lookup ~
+
+ *_?*
+_? Open the Haddock entry (in |haddock_browser|) for an
+ identifier under the cursor, selecting full
+ qualifications from a popup menu (GUI) or via
+ command-line completion (CLI), if the identifier is
+ not qualified.
+
+ *_?1*
+_?1 Search Hoogle (using |haddock_browser|) for an
+ identifier under the cursor.
+
+
+ *_?2*
+_?2 Search Hayoo! (using |haddock_browser|) for an
+ identifier under the cursor.
+
+ *:IDoc*
+:IDoc {identifier} Open the Haddock entry for the unqualified
+ {identifier} in |haddock_browser|, suggesting possible
+ full qualifications.
+
+ *:MDoc*
+:MDoc {module} Open the Haddock entry for {module} in
+ |haddock_browser| (with command-line completion for
+ the fully qualified module name).
+
+ *:FlagReference*
+:FlagReference {s} Browse Users Guide Flag Reference for section {s}
+ (with command-line completion for section headers).
+
+
+ *haskellmode-editing*
+4.3 Editing ~
+
+ *_.*
+_. Fully qualify the unqualified name under the cursor
+ selecting full qualifications from a popup menu (GUI)
+ or via command-line completion (CLI).
+
+ *_iq* *_i*
+_i _iq Add 'import [qualified] <module>(<identifier>)'
+ statement for the identifier under the cursor,
+ selecting fully qualified modules from a popup menu
+ (GUI) or via command-line completion (CLI), if the
+ identifier is not qualified. This currently adds one
+ import statement per call instead of merging into
+ existing import statements.
+
+ *_iqm* *_im*
+_im Add 'import [qualified] <module>' statement for the
+ identifier under the cursor, selecting fully qualified
+ modules from a popup menu (GUI) or via command-line
+ completion (CLI), if the identifier is not qualified.
+ This currently adds one import statement per call
+ instead of merging into existing import statements.
+
+ *_ie*
+_ie On an 'import <module>' line, in a correctly loadable
+ module, temporarily comment out import and use :make
+ 'not in scope' errors to explicitly list imported
+ identifiers.
+
+ *haskellmode-XU* *haskellmode-user-completion*
+CTRL-X CTRL-U User-defined insert mode name completion based on all
+ names known to the Haddock index, including package
+ names. Completions are presented in a popup menu which
+ also displays the fully qualified module from which
+ each entry may be imported.
+
+ CamelCode shortcuts are supported, meaning that
+ lower-case letters can be elided, using only
+ upper-case letters and module qualifier separators (.)
+ for disambiguation:
+
+ pSL -> putStrLn
+ C.E.t -> Control.Exception.t
+ C.M.MP -> Control.Monad.MonadPlus
+
+ To reduce unwanted matches, the first letter of such
+ shortcuts and the first letter after each '.' have to
+ match directly.
+
+==============================================================================
+ *haskellmode-hpaste* *hpaste*
+5. Hpaste Integration ~
+
+ This experimental feature allows browsing and posting to
+ http://hpaste.org, a Web-based pastebin tailored for Haskell code.
+
+
+ *:HpasteIndex*
+:HpasteIndex Read the most recent entries from hpaste.org. Show an
+ index of the entries in a new buffer, where ',r' will
+ open the current highlighted entry [and ',p' will
+ annotate it with the current buffer].
+
+ *:HpastePostNew*
+:HpastePostNew Submit current buffer as a new hpaste entry.
+ [This, and ',p' above, are temporarily disabled,
+ needs update to new hpaste.org layout]
+
+==============================================================================
+ *haskellmode-resources*
+6. Additional Resources ~
+
+ An quick screencast tour through of these plugins is available at:
+
+ http://projects.haskell.org/haskellmode-vim/screencasts.html
+
+ Other Haskell-related Vim plugins can be found here:
+
+ http://www.haskell.org/haskellwiki/Libraries_and_tools/Program_development#Vim
+
+ Make sure to read about Vim's other program-editing features in its online
+ |user-manual|. Also have a look at Vim tips and plugins at www.vim.org -
+ two other plugins I tend to use when editing Haskell are AlignPlugin.vim
+ (to line up regexps for definitions, keywords, comments, etc. in
+ consecutive lines) and surround.vim (to surround text with quotes,
+ brackets, parentheses, comments, etc.).
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:
diff --git a/.vim/doc/imaps.txt b/.vim/doc/imaps.txt
new file mode 100644
index 0000000..087b3db
--- /dev/null
+++ b/.vim/doc/imaps.txt
@@ -0,0 +1,116 @@
+ IMAP -- A fluid replacement for :imap
+ *imaps.txt*
+ Srinath Avadhanula <srinath AT fastmail DOT fm>
+
+
+
+ Abstract
+ ========
+This plugin provides a function IMAP() which emulates vims |:imap| function. The
+motivation for providing this plugin is that |:imap| suffers from problems
+which get increasingly annoying with a large number of mappings.
+
+Consider an example. If you do >
+ imap lhs something
+
+
+then a mapping is set up. However, there will be the following problems:
+1. The 'ttimeout' option will generally limit how easily you can type the lhs.
+ if you type the left hand side too slowly, then the mapping will not be
+ activated.
+
+2. If you mistype one of the letters of the lhs, then the mapping is deactivated
+ as soon as you backspace to correct the mistake.
+
+3. The characters in lhs are shown on top of each other. This is fairly
+ distracting. This becomes a real annoyance when a lot of characters initiate
+ mappings.
+
+This script provides a function IMAP() which does not suffer from these
+problems.
+
+
+
+ *imaps.txt-toc*
+|im_1| Using IMAP
+
+================================================================================
+Viewing this file
+
+This file can be viewed with all the sections and subsections folded to ease
+navigation. By default, vim does not fold help documents. To create the folds,
+press za now. The folds are created via a foldexpr which can be seen in the
+last section of this file.
+
+See |usr_28.txt| for an introduction to folding and |fold-commands| for key
+sequences and commands to work with folds.
+
+================================================================================
+Using IMAP *im_1* *imaps-usage*
+
+
+
+Each call to IMAP is made using the syntax: >
+ call IMAP (lhs, rhs, ft [, phs, phe])
+
+
+This is equivalent to having <lhs> map to <rhs> for all files of type <ft>.
+
+Some characters in the <rhs> have special meaning which help in cursor placement
+as described in |imaps-placeholders|. The optional arguments define these
+special characters.
+
+Example One: >
+ call IMAP ("bit`", "\\begin{itemize}\<cr>\\item <++>\<cr>\\end{itemize}<++>", "tex")
+
+
+This effectively sets up the map for "bit`" whenever you edit a latex file. When
+you type in this sequence of letters, the following text is inserted: >
+ \begin{itemize}
+ \item *
+ \end{itemize}<++>
+
+where * shows the cursor position. The cursor position after inserting the text
+is decided by the position of the first "place-holder". Place holders are
+special characters which decide cursor placement and movement. In the example
+above, the place holder characters are <+ and +>. After you have typed in the
+item, press <C-j> and you will be taken to the next set of <++>'s. Therefore by
+placing the <++> characters appropriately, you can minimize the use of movement
+keys.
+
+Set g:Imap_UsePlaceHolders to 0 to disable placeholders altogether.
+
+Set g:Imap_PlaceHolderStart and g:Imap_PlaceHolderEnd to something else if you
+want different place holder characters. Also, b:Imap_PlaceHolderStart and
+b:Imap_PlaceHolderEnd override the values of g:Imap_PlaceHolderStart and
+g:Imap_PlaceHolderEnd respectively. This is useful for setting buffer specific
+place holders.
+
+Example Two: You can use the <C-r> command to insert dynamic elements such as
+dates. >
+ call IMAP ('date`', "\<c-r>=strftime('%b %d %Y')\<cr>", '')
+
+
+
+With this mapping, typing date` will insert the present date into the file.
+
+================================================================================
+About this file
+
+This file was created automatically from its XML variant using db2vim. db2vim is
+a python script which understands a very limited subset of the Docbook XML 4.2
+DTD and outputs a plain text file in vim help format.
+
+db2vim can be obtained via anonymous CVS from sourceforge.net. Use
+
+cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
+
+Or you can visit the web-interface to sourceforge CVS at:
+http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
+
+The following modelines should nicely fold up this help manual.
+
+vim:ft=help:fdm=expr:nowrap
+vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
+vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','--\ \ \ \ ','')
+================================================================================
diff --git a/.vim/doc/latex-suite-quickstart.txt b/.vim/doc/latex-suite-quickstart.txt
new file mode 100644
index 0000000..8c18b72
--- /dev/null
+++ b/.vim/doc/latex-suite-quickstart.txt
@@ -0,0 +1,448 @@
+ A (very) quick introduction to Latex-Suite
+ *latex-suite-quickstart.txt*
+ Srinath Avadhanula <srinath AT fastmail DOT fm>
+
+
+
+ Abstract
+ ========
+Latex-Suite is a comprehensive set of scripts to aid in editing, compiling and
+viewing LaTeX documents. A thorough explanation of the full capabilities of
+Latex-Suite is described in the user manual. This guide on the other hand,
+provides a quick 30-45 minute running start to some of the more commonly used
+functionalities of Latex-Suite.
+
+ *latex-suite-quickstart.txt-toc*
+|lq_1| Using this tutorial
+|lq_2| Inserting a template
+|lq_3| Inserting a package
+|lq_4| Inserting an Environment
+|lq_5| A few keyboard shortcuts
+|lq_6| Folding in Latex-Suite
+|lq_7| Inserting a Reference
+|lq_8| Compiling a document
+ |lq_8_1| Debugging LaTeX source files
+|lq_9| Viewing DVI files
+ |lq_9_1| Performing forward searches
+ |lq_9_2| Performing inverse searches
+|lq_10| Conclusions
+
+================================================================================
+Viewing this file
+
+This file can be viewed with all the sections and subsections folded to ease
+navigation. By default, vim does not fold help documents. To create the folds,
+press za now. The folds are created via a foldexpr which can be seen in the
+last section of this file.
+
+See |usr_28.txt| for an introduction to folding and |fold-commands| for key
+sequences and commands to work with folds.
+
+================================================================================
+Using this tutorial *lq_1* *lq_a_bc*
+ *lsq-using-tutorial*
+
+
+
+This tutorial assumes that you have vim version 6.1+ installed on your machine.
+To check, open vim and type >
+ :ver
+You will see the version in the first line of the output. Get the latest vim
+version from http://vim.sf.net |lq_u_1|.
+
+Assuming you have Vim 6.1+ already up and running, follow the instructions here
+|lq_u_2| to set up Latex-Suite. Remember to make sure your 'grepprg' setting of
+Vim works.
+
+Good, now you are all set to start the tutorial. Since this tutorial aims to
+explain the newbie-friendly version of Latex-Suite, it needs some GUI
+functionality. Therefore, at least for this tutorial, open the gui version of
+vim. (On MS windows, this is the default). Open up this help file in either the
+same gvim session in a split window or in a different session and follow the
+(friendly) instructions.
+
+================================================================================
+Inserting a template *lq_2* *lq_a_bd*
+ *lsq-inserting-template*
+
+
+
+Start up gvim and begin editing a new file. >
+ e newfile.tex
+If the installation went well, you should see a new set of menus appear. Goto
+Tex-Suite > Templates. You will see a number of templates to choose from. For
+now, choose to insert a template for an article. You should get the following in
+the main vim window (after possibly a hit-enter prompt). >
+
+ 1 % File: sample.tex
+ 2 % Created: Sun Jun 22 04:00 PM 2003 P
+ 3 % Last Change: Sun Jun 22 04:00 PM 2003 P
+ 4 %
+ 5 \documentclass[a4paper]{article}
+ 6 \begin{document}
+ 7
+ 8 \end{document}
+ 9
+ 10 ~
+ 11 ~
+ 12 ~
+ 13 ~
+ -- INSERT -- 7,1 All
+
+
+
+The cursor is left on line 7 (just after the \begin{document} line) from where
+you can start typing straight away. Trying to lessen movement is a recurring
+theme in Latex-Suite.
+
+================================================================================
+Inserting a package *lq_3* *lq_a_be*
+ *lsq-lsq-inserting-package*
+
+
+
+Assume that we are writing a mathematical paper and we want to use the popular
+amsmath package. We will use some functionality which Latex-Suite provides
+specifically for including LaTeX packages, providing options etc. Navigate to
+before the \begin{document} line (The portion of the document before the
+\begin{document} is called the _preamble_ in LaTeX). On an empty line in the
+preamble, type the single word amsmath and then press <F5> in normal mode. The
+line will change to >
+ \usepackage[]{amsmath}<++>
+with the cursor positioned conviniently between the []'s. For now, do not worry
+about the trailing <++> at the end of this line. Assume we want to provide the
+sumlimits options to amsmath. You can either type in this option manually, or
+choose from a menu of package options which Latex-Suite automatically creates
+when you insert a package using <F5>. With the cursor still placed between the
+[], goto TeX-Suite > Packages > amsmath Options. Choose the sumlimits option.
+The package line should get converted to: >
+ \usepackage[sumlimits,]{amsmath}<++>
+
+
+with the cursor before ]. Press <C-j> in insert mode. You will see the cursor
+jump to the end of the package line and the trailing <++> will dissapear. What
+just happened?! You had your first taste of _Placeholders_. Read more about them
+(later) here |lq_u_3|. In short, pressing <C-j> in insert mode takes you to the
+next <++> in the text.
+
+================================================================================
+Inserting an Environment *lq_4* *lq_a_bf*
+ *lsq-insert-environment*
+
+
+
+Now let us type in a simple formula in LaTeX. Move back to the body of the
+document (The portion of the document between \begin{document} and
+\end{document} is called the body). Type in a few simple sentences and then on
+an empty line, type the single word eqnarray. Escape to normal mode and press
+<F5>. (Remember: <F5> is very useful!) This time, the line will change to: >
+ \begin{eqnarray}
+ \label{}<++>
+ \end{eqnarray}<++>
+<with the cursor between the {}. Enter a label. We will use eqn:euler. After
+typing in eqn:euler, press <C-j>. This will take you outside the curly-braces.
+Another time you used a Placeholder!
+
+================================================================================
+A few keyboard shortcuts *lq_5* *lq_a_bg*
+ *lsq-keyboard-shortcuts*
+
+
+
+Now to type in the famous Euler formula. Our aim is to type >
+ e^{j\pi} + 1 &=& 0
+Instead of typing this blindly, let us use a few shortcuts to reduce movement.
+Start out by typing e^. Now instead of typing {, type another ^. You will see
+the e^^ change instantly to e^{}<++> with the cursor between {}'s. (The ^^
+changed to ^{}<++>.) Continue with the following sequence of letters: j`p. This
+will change instantly to j\pi. (The `p changed to \pi.) Having typed in all we
+need to type between the {}'s, press <C-j>. You will pop back out of the
+curly-braces. Continue typing the rest of the formula. You can use == as a
+shortcut for &=&. Latex-Suite provides a large number of such shortcuts which
+should making typing much more fun and fast if you get acquainted with them. A
+list is provided here |lq_u_4|. Definitely spend some time getting a feel for
+them. Most of them are pretty intuitive like `/ for \frac{}{}, `8 for \infty
+etc.
+
+In order to understand the next section better, it will be helpful to have one
+more \label. Lets use the handy <F5> key to insert another equation. This time
+something simple like the following will do: >
+ \begin{eqnarray}
+ \label{eqn:simple}
+ 1 + 1 = 2
+ \end{eqnarray}
+
+
+================================================================================
+Folding in Latex-Suite *lq_6* *lq_a_bh* *lsq-folding*
+
+
+
+Okay, we have typed enough. At this stage, hopefully, your file is looking
+something like this: >
+
+ 1 % File: sample.tex
+ 2 % Created: Sun Jun 22 04:00 PM 2003 P
+ 3 % Last Change: Mon Dec 15 07:00 PM 2003
+ 4 %
+ 5 \documentclass[a4paper]{article}
+ 6
+ 7 \usepackage[sumlimits,]{amsmath}
+ 8
+ 9 \begin{document}
+ 10 \begin{eqnarray}
+ 11 \label{eqn:euler}
+ 12 e^{j\pi} + 1 &=& 0
+ 13 \end{eqnarray}
+ 14 This is the famous euler equation. I
+ 15 will type another equation, just as
+ 16 true:
+ 17 \begin{eqnarray}
+ 18 \label{eqn:simple}
+ 19 1 + 1 &=& 2
+ 20 \end{eqnarray}
+ 21 This is my contribution to mathematics.
+ 22 \end{document}
+
+In normal mode, press \rf. This will fold up the entire file and you should see
+the file looking as below: >
+
+ 1 % File: sample.tex
+ 2 % Created: Sun Jun 22 04:00 PM 2003 P
+ 3 % Last Change: Mon Dec 15 07:00 PM 2003
+ 4 %
+ 5 +-- 4 lines: Preamble: \documentclass[a4paper]{article} -----
+ 9 \begin{document}
+ 10 +-- 4 lines: eqnarray (eqn:euler) \label{eqn:euler} -----------
+ 14 This is the famous euler equation. I
+ 15 will type another equation, just as
+ 16 true:
+ 10 +-- 4 lines: eqnarray (eqn:simple) \label{eqn:simple} ---------
+ 21 This is my contribution to mathematics.
+ 22 \end{document}
+
+What has happened is that Latex-Suite folded away blocks of LaTeX code into
+folded regions. You can open and close folds by using the command za in normal
+mode.
+
+================================================================================
+Inserting a Reference *lq_7* *lq_a_bi*
+ *lsq-inserting-reference*
+
+
+
+A necessary part of LaTeX editing is referencing equations, figures,
+bibliographic entries etc. This is done with the \ref and the \cite commands.
+Latex-Suite provides an easy way to do this. Somewhere in the body of the
+document, type in the following sentence >
+ This is a reference to (\ref{}).
+With the cursor between the {} press <F9> in insert mode. Your vim session will
+sprout two new windows and it should look like below: >
+
+ 9 \begin{document}
+ 10 +-- 4 lines: eqnarray (eqn:euler) : \label{eqn:euler}-----------------------
+ 14 This is the famous euler equation. I
+ 15 will type another equation, just as
+ 16 true:
+ 17 +-- 4 lines: eqnarray (eqn:simple) : \label{eqn:simple}---------------------
+ 21 This is my contribution to mathematics.
+ 22 This is a reference to (\ref{}&lt;++&gt;)&lt;++&gt;
+ 23 \end{document}
+ ~
+ ~
+ ~
+ test.tex [+] 22,29 Bot
+ test.tex|11| \label{eqn:euler}
+ test.tex|18| \label{eqn:simple}
+ ~
+ ~
+ ~
+ [Error List] 1,1 All
+ 7 \usepackage[sumlimits,]{amsmath}
+ 8
+ 9 \begin{document}
+ 10 \begin{eqnarray}
+ 11 \label{eqn:euler}
+ 12 e^{j\pi} + 1 &=& 0
+ 13 \end{eqnarray}
+ 14 This is the famous euler equation. I
+ 15 will type another equation, just as
+ 16 true:
+ test.tex [Preview][+] 11,2-5 46%
+
+
+
+The cursor will relocate to the middle window which shows all \labels found in
+all the .tex file in the current directory. You can scroll up and down in the
+middle window till you reach the reference you want to insert. Notice how when
+you scroll in the middle window, the bottom "Preview" window scrolls
+automatically to show you the location of the current selection. This helps you
+identify the reference with greater ease because often times, \labels are not
+descriptive enough or there might be too many of them. To insert the reference,
+just position the cursor on the relevant line in the middle window and press
+<enter>. The line which you were editing will change to: >
+ This is a reference to (\ref{eqn:euler})
+<and the bottom windows close automatically.
+
+The <F9> key also works for inserting \cite commands to reference bibliographich
+entries, inserting file names for the \inputgraphics command and just plain
+searching for words. Click here |lq_u_5| for more information.
+
+================================================================================
+Compiling a document *lq_8* *lq_a_bj*
+ *lsq-compiling*
+
+|lq_8_1| Debugging LaTeX source files
+
+
+Great! We have just created a small latex file. The next step is to make the
+latex compiler create a .dvi file from it. Compiling via latex-suite is simple.
+Goto normal mode and press \ll (replace \ with whatever mapleader setting you
+have). This will call the latex compiler. If all goes well, then the focus
+should return to the vim window.
+
+Nothing happend? Ouch! You might need to do some additional settings as
+described here. |lq_u_6|
+
+
+--------------------------------------------------------------------------------
+Debugging LaTeX source files *lq_8_1* *lq_a_bk*
+ *lsq-debugging*
+
+To illustrate the debugging procedure, let's create a few mistakes in the file.
+Insert the following ``mistakes'' in the file: >
+ This is a $\mistake$.
+ And this is $\another$
+Now press \ll again. This time you will notice that after compilation finishes,
+the cursor automatically lands on $\mistake$. In addition, 2 new windows will
+appear as shown here:
+
+The middle window is an _Error List_ window showing you the errors which the
+latex compiler found. Th bottom window is a _Log Preview_ window, which shows
+you the context of the error made by displaying the relevant portion of the .log
+file created during the latex compilation procedure. Jump to the _Error List_
+window and try scrolling around in it using either the j, k keys or the arrow
+keys. You will notice that the _Log Preview_ window scrolls automatically to
+retain the context of the error you are currently located on. If you press
+<enter> on any line, you will see the cursor jump to the location of the error.
+Latex-Suite tries to guess the column location as best as it can so you can
+continue typing straight away.
+Having got a taste for compiling, proceed by deleting the erroneous lines and
+re-compiling.
+
+The Latex-Suite compiler is capable of much more including selectively filtering
+out common errors which you might want to ignore for the moment, compiling parts
+of a document, setting levels of verbosity in the compiler output etc. See here
+|lq_u_7| for more.
+
+================================================================================
+Viewing DVI files *lq_9* *lq_a_bl*
+ *lsq-viewing-dvi*
+
+|lq_9_1| Performing forward searches
+|lq_9_2| Performing inverse searches
+
+
+Now that you have compiled your first latex source, its time to view it. Again,
+this should be pretty simple. Press \lv in normal mode. Depending on your
+platform, a DVI viewer program should open up and display the dvi file generated
+in compilation step previously.
+
+Nothing happend? Ouch! You might need to do some additional settings as
+described here. |lq_u_8|
+
+
+--------------------------------------------------------------------------------
+Performing forward searches *lq_9_1* *lq_a_bm*
+ *lsq-quick-forward-searching*
+
+If you are using a modern DVI viewer, then it is possible to do what is called
+forward and inverse searching. However, you will need to customize the standard
+Latex-Suite distribution in order to utilize this functionality. Type in the
+following on the command line: >
+ :let g:Tex_CompileRule_dvi = 'latex -src-specials -interaction=nonstopmode $*'
+ :TCTarget dvi
+
+
+Now recompile the latex file by pressing \ll. This time, instead of pressing \lv
+to view the file, press \ls from within the tex file. If the DVI viewer supports
+forward searching (most of them do), then the viewer will actually display the
+portion of the DVI file corresponding to the location where you were editing the
+tex file.
+
+NOTE: The reason Latex-Suite does not have this setting by default is that on
+ some systems this causes unpredictable results in the DVI output. If you
+ find the DVI output satisfactory, then you can insert the first of the 2
+ lines above into your $VIM/ftplugin/tex.vim file. $VIM is ~/vimfiles for
+ windows and ~/.vim for *nix machines.
+
+
+
+--------------------------------------------------------------------------------
+Performing inverse searches *lq_9_2* *lq_a_bn*
+ *lsq-quick-inverse-searching*
+
+Most DVI viewers also support inverse searching, whereby you can make the DVI
+viewer ask vim to display the tex source corresponding to the DVI file being
+shown. This is extremeley helpful while proofreading large documents.
+
+Simply double-click anywhere in the viewer window. If the viewer supports it,
+then it will attempt to open an editor window at the location corresponding to
+where you double-clicked. On *nix platforms, Latex-Suite attempts to start the
+viewer program in such a way that it already knows to use vim to open the tex
+source. Thus you should see a vim window open up showing the tex file. However,
+if there is an error, or some other program is used, you will need to tell the
+viewer program to use gvim as the editor. On windows platforms, if you use the
+commonly available yap viewer (available as part of the miktex distribution),
+then this option can be set from View > Options > Inverse Search. In the Command
+line: window, write >
+ "C:\Program Files\vim\vim61\gvim" -c ":RemoteOpen +%l %f"
+(Customize the path according to where you have installed gvim). If you double
+click in the view pane now, you will see gvim start up and take you to the
+relevant portion of the tex file.
+
+================================================================================
+Conclusions *lq_10* *lq_a_bo*
+ *lsq-conclusions*
+
+
+
+Thats all folks! By now, you should know enough of the basic functions of
+latex-suite. Ofcourse, latex-suite is capable of much, much more such as
+compiling files multiple times to resolve changed labels, compiling
+dependencies, handling user packages and more. To get a feel for that, you will
+need to take a look at the Latex-Suite user manual. |lq_u_9|
+
+================================================================================
+URLs used in this file
+
+*lq_u_1* : http://vim.sf.net
+*lq_u_2* : http://vim-latex.sourceforge.net/index.php?subject=download&title=Download
+*lq_u_3* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-macros.html
+*lq_u_4* : http://vim-latex.sourceforge.net/documentation/latex-suite/auc-tex-mappings.html
+*lq_u_5* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-completion.html
+*lq_u_6* : http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-2
+*lq_u_7* : http://vim-latex.sourceforge.net/documentation/latex-suite/latex-compiling.html
+*lq_u_8* : http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-3
+*lq_u_9* : http://vim-latex.sourceforge.net/index.php?subject=manual&title=Manual#user-manual
+
+================================================================================
+About this file
+
+This file was created automatically from its XML variant using db2vim. db2vim is
+a python script which understands a very limited subset of the Docbook XML 4.2
+DTD and outputs a plain text file in vim help format.
+
+db2vim can be obtained via anonymous CVS from sourceforge.net. Use
+
+cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
+
+Or you can visit the web-interface to sourceforge CVS at:
+http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
+
+The following modelines should nicely fold up this help manual.
+
+vim:ft=help:fdm=expr:nowrap
+vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
+vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','\ \ \ \ \ \ ','')
+================================================================================
diff --git a/.vim/doc/latex-suite.txt b/.vim/doc/latex-suite.txt
new file mode 100644
index 0000000..a44cd9b
--- /dev/null
+++ b/.vim/doc/latex-suite.txt
@@ -0,0 +1,3418 @@
+ Latex-Suite Reference
+ *latex-suite.txt*
+ Srinath Avadhanula <srinath AT fastmail DOT fm>
+ Mikolaj Machowski <mikmach AT wp DOT pl>
+
+
+
+ Abstract
+ ========
+Latex-Suite attempts to provide a comprehensive set of tools to view, edit and
+compile LaTeX documents in Vim. Together, they provide tools starting from
+macros to speed up editing LaTeX documents to functions for forward searching
+.dvi documents. Latex-Suite has been possible because of the contributions of
+many people. Please see latex-suite-credits [|ls_a_dU|] for a list of people who
+have helped.
+
+Latex-Suite is released under the Vim charityware license. For license and
+conditions of use look at |copyright|. Replace all occurrences of ``Vim'' with
+``Latex-Suite''. The current copyright holders of Latex-Suite are Srinath
+Avadhanula and Mikolaj Machowski.
+
+Homepage: http://vim-latex.sourceforge.net |ls_u_1|
+
+
+
+ *latex-suite.txt-toc*
+|ls_1| Installation and recommended Settings
+|ls_2| Inserting Templates
+|ls_3| Latex-Suite Macros
+ |ls_3_1| Environment Mappings
+ |ls_3_2| Command Mappings
+ |ls_3_3| Font Mappings
+ |ls_3_4| Section Mappings
+ |ls_3_5| Greek Letter Mappings
+ |ls_3_6| Auc-Tex Key Bindings
+ |ls_3_7| Diacritics
+ |ls_3_8| BibTeX Shortcuts
+ |ls_3_9| Smart Key Mappings
+ |ls_3_10| Alt Key Macros
+ |ls_3_11| Custom Macros
+ |ls_3_12| Making your own Macros via IMAP()
+|ls_4| Package Handling
+ |ls_4_1| Inserting package commands
+ |ls_4_2| Actions taken for supported packages
+ |ls_4_3| Automatic Package detection
+ |ls_4_4| Writing supporting for a package
+|ls_5| Latex Completion
+ |ls_5_1| Latex-Suite completion example
+ |ls_5_2| Latex-Suite \ref completion
+ |ls_5_3| Latex-Suite \cite completion
+ |ls_5_4| Latex-Suite filename completion
+ |ls_5_5| Custom command completion
+|ls_6| LaTeX Compiling
+ |ls_6_1| Setting Compilation rules
+ |ls_6_2| Handling dependencies in compilation
+ |ls_6_3| Compiling multiple times
+ |ls_6_4| Customizing the compiler output
+ |ls_6_5| Compiling parts of a file
+|ls_7| Latex Viewing and Searching
+ |ls_7_1| Setting Viewing rules
+ |ls_7_2| Forward Searching DVI documents
+ |ls_7_3| Inverse Searching
+|ls_8| Latex Folding
+ |ls_8_1| Default Folding Scheme in Latex-Suite
+ |ls_8_2| Customizing what to fold
+ |ls_8_3| Editing the folding.vim file directly
+|ls_9| Multiple file LaTeX projects
+ |ls_9_1| Latex-Suite project settings
+ |ls_9_2| Specifying which file to compile
+|ls_10| Latex-Suite Commands and Maps
+ |ls_10_1| Latex-Suite Maps
+ |ls_10_2| Latex Suite Commands
+|ls_11| Customizing Latex-Suite
+ |ls_11_1| General Settings
+ |ls_11_2| Place-Holder Customization
+ |ls_11_3| Macro Customization
+ |ls_11_4| Smart Key Customization
+ |ls_11_5| Latex Completion Customization
+ |ls_11_6| Compiler Customization
+ |ls_11_7| Viewer Customization
+ |ls_11_8| Menu Customization
+ |ls_11_9| Folding Customization
+ |ls_11_10| Package Handling Customization
+|ls_12| Credits
+
+================================================================================
+Viewing this file
+
+This file can be viewed with all the sections and subsections folded to ease
+navigation. By default, vim does not fold help documents. To create the folds,
+press za now. The folds are created via a foldexpr which can be seen in the
+last section of this file.
+
+See |usr_28.txt| for an introduction to folding and |fold-commands| for key
+sequences and commands to work with folds.
+
+================================================================================
+Installation and recommended Settings *ls_1* *ls_a_bc*
+ *recommended-settings*
+
+
+
+If you are reading this, it most probably means that you have already installed
+Latex-Suite and the help files. If this is not the case, follow the detailed
+instructions on Latex-Suite's download page |ls_u_2|.
+
+Make sure that you create a few necessary settings in your ~/.vimrc. >
+
+ " REQUIRED. This makes vim invoke Latex-Suite when you open a tex file.
+ filetype plugin on
+
+ " IMPORTANT: win32 users will need to have 'shellslash' set so that latex
+ " can be called correctly.
+ set shellslash
+
+ " IMPORTANT: grep will sometimes skip displaying the file name if you
+ " search in a singe file. This will confuse Latex-Suite. Set your grep
+ " program to always generate a file-name.
+ set grepprg=grep\ -nH\ $*
+
+ " OPTIONAL: This enables automatic indentation as you type.
+ filetype indent on
+
+
+
+In addition, the following settings could go in your ~/.vim/ftplugin/tex.vim
+file: >
+ " this is mostly a matter of taste. but LaTeX looks good with just a bit
+ " of indentation.
+ set sw=2
+ " TIP: if you write your \label's as \label{fig:something}, then if you
+ " type in \ref{fig: and press <C-n> you will automatically cycle through
+ " all the figure labels. Very useful!
+ set iskeyword+=:
+
+
+
+================================================================================
+Inserting Templates *ls_2* *ls_a_bd*
+ *latex-suite-templates*
+
+
+
+This functionality is available via the TeX-Suite > Templates menu. This module
+provides a way to insert custom templates at the beginning of the current file.
+
+When Latex-Suite first starts up, it scans the
+$VIM/ftplugin/latex-suite/templates/ directory and creates menu items based on
+the files found there. When you select a template from this menu, the file will
+be read in above the first line of the current file.
+
+A template file can utilize placeholders for initializing the cursor position
+when the template is read in and subsequent movement. In addition, template
+files can contain dynamic elements such as the time of creation of a file etc,
+by using vim expressions.
+
+You can place your own templates in the $VIM/ftplugin/latex-suite/templates/
+directory in order for them to be available via the menu. Unless Latex-Suite
+releases a template with the same name, these files should not get over-written
+when you install a new release over an existing one.
+
+NOTE: Templates are also accessible for non-gui users with the command
+ |:TTemplate|. The argument should be name of the corresponding template
+ file. If the command is called without arguments (preferred usage), then a
+ list of available templates is displayed and the user is asked to choose
+ one of them.
+
+
+
+================================================================================
+Latex-Suite Macros *ls_3* *ls_a_be*
+ *latex-macros*
+
+|ls_3_1| Environment Mappings
+|ls_3_2| Command Mappings
+|ls_3_3| Font Mappings
+|ls_3_4| Section Mappings
+|ls_3_5| Greek Letter Mappings
+|ls_3_6| Auc-Tex Key Bindings
+|ls_3_7| Diacritics
+|ls_3_8| BibTeX Shortcuts
+|ls_3_9| Smart Key Mappings
+|ls_3_10| Alt Key Macros
+|ls_3_11| Custom Macros
+|ls_3_12| Making your own Macros via IMAP()
+
+
+Latex-Suite ships with a very comprehensive set of insert mode and |visual-mode|
+mappings and menu items to typeset most of the LaTeX elements.
+
+NOTE: These mappings are are not standard mappings in the sense that only the
+ last character is mapped. See plugin/imaps.vim for further documentation.
+ For example, in the case of the mapping EFI provided by Latex-Suite you
+ can press the characters 'E', 'F' and 'I' as slowly as you wish (unlike
+ the normal imap command where timeout issues are involved). The characters
+ are visible as you type them (unlike normal imaps) and you can use the
+ movement or backspace key to correct yourself unlike normal mappings.
+
+
+ *place-holder* *ls_a_dV*
+ *place-holders* *ls_a_eD*
+NOTE: Place Holders
+ -------------
+ Almost all macros provided in Latex-Suite implement Stephen Riem's
+ bracketing system and Gergely Kontra's JumpFunc() for handling
+ place-holders. This consists of using "place-holders" to mark off
+ locations where the next relevant editing has to be done. As an example,
+ when you type EFI in |insert-mode|, you will get the following: >
+ \begin{figure}[h]
+ \centerline{\psfig{figure=<+eps file+>}}
+ \caption{<+caption text+>}
+ \label{fig:<+label+>}
+ \end{figure}<++>
+< The text <+eps file+> will be selected and you will be left in
+ |select-mode| so that you can continue typing straight away. After having
+ typed in the file name, you can press <Ctrl-J> (while still in
+ insert-mode). This will take you directly to the next "place-holder". i.e,
+ <+caption text+> will be visually selected with Vim in select mode again
+ for typing in the caption. This saves on a lot of key presses.
+
+
+ *overriding-macros* *ls_a_eE*
+NOTE: Over-riding Latex-Suite Macros
+ ------------------------------
+ If you wish to change these macros from their default values, for example,
+ if you wish to change `w to expand to \omega instead of its default
+ expansion to \wedge, you should use the IMAP function as described in the
+ Using IMAP() [|ls_a_bG|] section.
+
+ An important thing to note is that if you wish to over-ride macros created
+ by Latex-Suite rather than merely create new macros, you should place the
+ IMAP() calls in a script which gets sourced after the files in
+ Latex-Suite. A good place typically is as a file-type plugin file in the
+ ~/.vim/after/ftplugin/ directory. (Use ~/vimfiles if you are using
+ WINDOWS). For example to over-ride `w to \omega instead of \wedge, place
+ the following line in (say) ~/.vim/after/ftplugin/tex_macros.vim: >
+ call IMAP('`w', '\omega', 'tex')
+<
+
+ NOTE: It is important to use a file-name which will get sourced on a
+ FileType event. Therefore you must use a file-name which conforms to
+ the standards as described in |ftplugin-name|.
+
+
+
+ *pausing-imaps* *ls_a_eF*
+NOTE: Pausing Macro expansion
+ -----------------------
+ If you wish to temporarily suspend the imaps functionality, then you can
+ set the Imap_FreezeImap to 1. If you set g:Imap_FreezeImap to 1, then it
+ will be a system-wide setting. Setting b:Imap_FreezeImap will affect only
+ the current buffer.
+
+
+The following sections describe the various editing macros provided by
+Latex-Suite.
+
+
+--------------------------------------------------------------------------------
+Environment Mappings *ls_3_1* *ls_a_bf*
+ *environment-mappings*
+
+Latex-Suite provides a rich set of mappings to insert, enclose and modify LaTeX
+environments, i.e, \begin{...} ... \end{...} pairs.
+
+Inserting Environments *ls_3_1_1* *ls_a_bg*
+ *inserting-environments*
+
+Latex-Suite provides the following ways to insert environments
+
+
+
+Method 1: Pressing <F5> *ls_3_1_1_1* *ls_a_bh*
+ *inserting-env-f5*
+
+If you press <F5> in the insert or normal mode while on an empty line,
+Latex-Suite prompts you with a list of environments you might want to insert.
+You can either choose one from the list or type in a new environment name. If
+you press <F5> on a line which already has a word, then that word is used
+instead of prompting.
+
+See Tex_Env_name [|ls_a_cZ|] for a description of how Latex-Suite uses the word
+to form the expansion and how to modify Latex-Suite's behavior.
+
+The list of environments which Latex-Suite prompts you with (when <F5> is
+pressed on an empty line) is formed from the Tex_PromptedEnvironments
+[|ls_a_di|] setting.
+
+In addition to this setting, Latex-Suite also lists environments found in custom
+packages as described in the section Package actions. [|ls_a_bL|]
+
+
+Method 2: Using <S-F1>-<S-F4> *ls_3_1_1_2* *ls_a_bi*
+ *inserting-env-shift-f1*
+
+The shifted function keys, <S-F1> to <S-F4> can be mapped to insert very
+commonly used environments. The environments mapped to each key can be
+customized via the g:Tex_HotKeyMappings [|ls_a_dj|] setting.
+
+
+Method 3: Using three letter sequences *ls_3_1_1_3* *ls_a_bj*
+ *inserting-env-threeletter*
+
+Environments can also be inserted by pressing a 3 capital letter sequence
+starting with an E. The sequence of 3 letters generally tries to follow the
+following rules:
+
+
+1. All environment mappings begin with E
+
+2. If the environment can be broken up into 2 distinct words, such as flushright
+ (flush + right), then the next 2 letters are the first letters of the 2
+ words. Example: >
+ flushleft (_f_lush + _l_eft) ---> EFL
+ flushright (_f_lush + _r_ight) ---> EFR
+ eqnarray (_e_qn + _a_rray) ---> EEA
+< If on the other hand, the environment name cannot be broken up into 2
+ distinct words, then the next 2 letters are the first 2 letters of the name
+ of the environment. Example: >
+ equation (_eq_uation) ---> EEQ
+<
+Unfortunately there are some environments that cannot be split in two words and
+first two letters in name are identical. In this case shortcut is created from
+E, first and last letter. Example: >
+ quote (_q_uot_e_) ---> EQE
+ quotation (_q_uotatio_n_) ---> EQN
+Of course, not every last one of the environments can follow this rule because
+of ambiguities. In case of doubt, pull down the Tex-Environments menu. The menu
+item should give the hint for the map.
+
+
+Enclosing in Environments *ls_3_1_2* *ls_a_bk*
+ *enclosing-environments*
+
+Latex-Suite provides visual-mode mappings which enclose visually selected
+portions of text in environments. There are two ways provided to do this.
+
+
+
+Method 1: Pressing <F5> *ls_3_1_2_1* *ls_a_bl*
+ *enclosing-env-f5*
+
+You can also select a portion of text visually and press <F5> while still in
+visual mode. This will prompt you with a list of environments. (This list can be
+customized via the g:Tex_PromptedEnvironments [|ls_a_di|] setting). You can
+either choose from this list or type in a new environment name. Once the
+selection is done, Latex-Suite encloses the visually selected portion in the
+chosen environment.
+
+
+Method 2: Using three letter mappings *ls_3_1_2_2* *ls_a_bm*
+ *enclosing-env-threeletter*
+
+You can also select text visually and press a sequence of three characters
+beginning with , (the single comma character) and the selected text will be
+enclosed in the chosen environment. The three letter sequence follows directly
+from the three letter sequence used to insert environments as described here
+[|ls_a_bj|]. The following example describes the rule used:
+
+If ECE inserts a \begin{center}...\end{center} environment, then to enclose a
+block of selected text in \begin{center}...\end{center}, simply select the text
+and press ,ce. The rule simply says that the leading E is converted to , and the
+next 2 letters are small case.
+Some of the visual mode mappings are sensitive to whether you choose line-wise
+or character-wise. For example, if you choose a word and press ,ce, then you get
+\centerline{word}, whereas if you press ,ce on a line-wise selection, you get: >
+ \begin{center}
+ line
+ \end{center}
+
+
+
+Changing Environments *ls_3_1_3* *ls_a_bn*
+ *changing-environments*
+
+Pressing <S-F5> in normal mode detects which environment the cursor is presently
+located in and prompts you to replace it with a new one. The innermost
+environment is detected. For example, in the following source: >
+ \begin{eqnarray}
+ \begin{array}{ccc}
+ 2 & 3 & 4
+ \end{array}
+ \end{eqnarray}
+if you are located in the middle "2 & 3 & 4" line, then pressing <S-F5> will
+prompt you to change the array environment, not the eqnarray environment. In
+addition, Latex-Suite will also try to change lines within the environment to be
+consistent with the new environment. For example, if the original environment
+was an eqnarray environment with a \label command, then changing it to an
+eqnarray* environment will delete the \label.
+
+Pressing <F5> in normal mode has the same effect as pressing <F5> in
+insert-mode, namely you will be prompted to choose an environment to insert.
+
+--------------------------------------------------------------------------------
+Command Mappings *ls_3_2* *ls_a_bo*
+ *latex-command-maps*
+
+Latex-Suite provides a rich set of mappings to insert, enclose and modify LaTeX
+commands.
+
+Inserting LaTeX commands *ls_3_2_1* *ls_a_bp*
+ *inserting-commands*
+
+ *ls-imap-f7* *ls_a_dW*
+ *ls-imap-s-f7* *ls_a_dX*
+Pressing <F7> in insert or normal mode while the cursor is touching a word will
+insert a command formed from the word touching the cursor.
+
+For certain common commands, Latex-Suite will expand them to include additional
+arguments as needed. For example, frac becomes \frac{<++>}{<++>}<++>. Otherwise,
+it will simply change the word under the cursor as follows >
+ word --> \word{<++>}<++>
+You can define custom expansions of commands using the Tex_Com_{name} setting as
+described in here [|ls_a_da|].
+
+If <F7> is pressed when the cursor is on white-space, then Latex-Suite will
+prompt you to choose a command and insert that instead.The list of commands is
+constructed from the g:Tex_PromptedCommands [|ls_a_dk|] setting and also from
+commands which Latex-Suite finds while scanning custom packages which
+Latex-Suite finds. See the Package actions [|ls_a_bL|] section for details on
+which files are scanned etc.
+
+
+Enclosing in a command *ls_3_2_2* *ls_a_bq*
+ *enclosing-commands*
+
+You can select a portion of text visually and press <F7> while still in visual
+mode. This will prompt you with a list of commands. (This list can be customized
+via the g:Tex_PromptedCommands [|ls_a_dk|] setting). You can either choose from
+this list or type in a new command name. Once the selection is done, Latex-Suite
+encloses the visually selected portion in the chosen command.
+
+
+Changing commands *ls_3_2_3* *ls_a_br*
+ *changing-commands*
+
+ *ls-vmap-f7* *ls_a_dY*
+In both insert and normal mode <S-F7> will find out if you are presently within
+an environment and then prompt you with a list of commands to change it to.
+
+--------------------------------------------------------------------------------
+Font Mappings *ls_3_3* *ls_a_bs* *font-maps*
+
+These mappings insert font descriptions such as: \textsf{<++>}<++> with the
+cursor left in place of the first placeholder [|ls_a_eD|] (the <++> characters).
+
+Mnemonic:
+1. first letter is always F (F for font)
+
+2. next 2 letters are the 2 letters describing the font.
+
+Example: Typing FEM in insert-mode expands to \emph{<++>}<++>.
+
+Just like environment mappings, you can visually select an area and press `sf to
+have it enclosed in: \textsf{word} or >
+ {\sffamily
+ line
+ }
+depending on character-wise or line-wise selection.
+
+--------------------------------------------------------------------------------
+Section Mappings *ls_3_4* *ls_a_bt*
+ *section-mappings*
+
+These maps insert LaTeX sections such as: >
+ \section{<++>}<++>
+etc. Just as in the case of environments and fonts, can be enclosed with a
+visual selection. The enclosing is not sensitive to character or line-wise
+selection.
+
+Mnemonic: (make your own!) >
+ SPA for part
+ SCH for chapter
+ SSE for section
+ SSS for subsection
+ SS2 for subsubsection
+ SPG for paragraph
+ SSP for subparagraph
+
+
+Example: SSE in insert mode inserts >
+ \section{<++>}<++>
+If you select a word or line and press ,se, then you get >
+ \section{section name}
+The menu item in Tex-Environments.Sections have a sub-menu called 'Advanced'.
+Choosing an item from this sub-menu asks a couple of questions (whether you want
+to include the section in the table of contents, whether there is a shorter name
+for the table of contents) and then creates a more intelligent template.
+
+--------------------------------------------------------------------------------
+Greek Letter Mappings *ls_3_5* *ls_a_bu*
+ *greek-letter-mappings*
+
+Lower case
+
+`a through `z expand to \alpha through \zeta.Upper case:
+
+ >
+ `D = \Delta
+ `F = \Phi
+ `G = \Gamma
+ `Q = \Theta
+ `L = \Lambda
+ `X = \Xi
+ `Y = \Psi
+ `S = \Sigma
+ `U = \Upsilon
+ `W = \Omega
+NOTE: LaTeX does not support upper case for all greek alphabets.
+
+
+Just like other Latex-Suite mappings, these mappings are not created using the
+standard imap command. Thus you can type slowly, correct using <BS> etc.
+
+--------------------------------------------------------------------------------
+Auc-Tex Key Bindings *ls_3_6* *ls_a_bv*
+ *auc-tex-mappings*
+
+These are simple 2 key expansions for some very commonly used LaTeX elements:
+
+ >
+ `^ Expands To \Hat{<++>}<++>
+ `_ expands to \bar{<++>}<++>
+ `6 expands to \partial
+ `8 expands to \infty
+ `/ expands to \frac{<++>}{<++>}<++>
+ `% expands to \frac{<++>}{<++>}<++>
+ `@ expands to \circ
+ `0 expands to ^\circ
+ `= expands to \equiv
+ `\ expands to \setminus
+ `. expands to \cdot
+ `* expands to \times
+ `& expands to \wedge
+ `- expands to \bigcap
+ `+ expands to \bigcup
+ `( expands to \subset
+ `) expands to \supset
+ `< expands to \le
+ `> expands to \ge
+ `, expands to \nonumber
+ `~ expands to \tilde{<++>}<++>
+ `; expands to \dot{<++>}<++>
+ `: expands to \ddot{<++>}<++>
+ `2 expands to \sqrt{<++>}<++>
+ `| expands to \Big|
+ `I expands to \int_{<++>}^{<++>}<++>
+(again, notice the convenient place-holders)
+
+In addition the visual mode macros are provided:
+
+ >
+ `( encloses selection in \left( and \right)
+ `[ encloses selection in \left[ and \right]
+ `{ encloses selection in \left\{ and \right\}
+ `$ encloses selection in $$ or \[ \] depending on characterwise or
+ linewise selection
+
+
+--------------------------------------------------------------------------------
+Diacritics *ls_3_7* *ls_a_bw*
+ *diacritic-mappings*
+
+These mappings speed up typing European languages which contain diacritic
+characters such as a-umlaut etc. >
+ +<l> expands to \v{<l>}
+ =<l> expands to \'{<l>}
+where <l> is an alphabet.
+
+ >
+ +} expands to \"{a}
+ +: expands to \^{o}
+Latex-Suite also ships with smart backspacing [|ls_a_dZ|] functionality which
+provides another convenience while editing languages with diacritics.
+
+NOTE: Diacritics are disabled by default in Latex-Suite because they can
+ sometimes be a little too intrusive. Moreover, most European users can
+ nowadays use font encodings which display diacritic characters directly
+ instead of having to rely on Latex-Suite's method of displaying
+ diacritics.
+
+ Set the g:Tex_Diacritics [|ls_a_df|] variable to enable diacritics.
+
+
+
+--------------------------------------------------------------------------------
+BibTeX Shortcuts *ls_3_8* *ls_a_bx*
+ *bibtex-bindings*
+
+Latex-Suite provides an easy way of entering bibliographic entries. Four
+insert-mode mappings: BBB, BBL, BBH and BBX are provided, all of which
+essentially act in the same manner. When you type any of these in insert-mode,
+you will get a prompt asking you to choose a entry type for the bibliographic
+entry.
+
+When you choose an entry type, a bibliographic entry template will be inserted.
+For example, if you choose the option 'book' via the map BBB, then the following
+template will be inserted: >
+ @BOOK{<+key+>,
+ author = {<++>},
+ editor = {<++>},
+ title = {<++>},
+ publisher = {<++>},
+ year = {<++>},
+ otherinfo = {<++>}
+ }<++>
+
+
+<+key+> will be highlighted in select-mode and you can type in the bib-key.
+After that you can use <Ctrl-J> to navigate to successive locations in the
+template and enter new values.
+
+BBB inserts a template with only the fields mandatorily required for a given
+entry type. BBL inserts a template with commonly used extra options. BBH inserts
+a template with more options which are not as commonly used. BBX inserts a
+template with all the fields which the entry type supports.
+
+NOTE: Mnemonic
+ --------
+ B for Bibliographic entry, L for Large entry, H for Huge entry, and X
+ stands for all eXtras.
+
+
+
+
+Customizing Bib-TeX fields *ls_3_8_1* *ls_a_by*
+ *adding-bib-options*
+
+If you wish the BBB command to insert a few additional fields in addition to the
+fields it creates, then you will need to define global variables of the form >
+ g:Bib_{type}_options
+in you $VIM/ftplugin/bib.vim file, where {type} is a string like 'article',
+'book' etc. This variable should contain one of the letters defined in the
+following table
+
+Character Field Type~
+w address
+a author
+b booktitle
+c chapter
+d edition
+e editor
+h howpublished
+i institution
+k isbn
+j journal
+m month
+z note
+n number
+o organization
+p pages
+q publisher
+r school
+s series
+t title
+u type
+v volume
+y year
+
+For example, by default, choosing 'article' via BBB inserts the following
+template by default >
+ @ARTICLE{<+key+>,
+ author = {<++>},
+ title = {<++>},
+ journal = {<++>},
+ year = {<++>},
+ otherinfo = {<++>}
+ }<++>
+However, if g:Bib_article_options is defined as 'mnp', then 'article' will
+insert the following template >
+ @ARTICLE{<+key+>,
+ author = {<++>},
+ title = {<++>},
+ journal = {<++>},
+ year = {<++>},
+ month = {<++>},
+ number = {<++>},
+ pages = {<++>},
+ otherinfo = {<++>}
+ }<++>
+
+
+If you have some other fields you wish to associate with an article which are
+not listed above, then you will have to use the Bib_{type}_extrafields option.
+This is a newline separated string of complete field names which will be
+included in the template. For example, if you define >
+ let g:Bib_article_extrafields = "crossref\nabstract"
+then the article template will include the lines >
+ crossref = {<++>},
+ abstract = {<++>},
+
+
+NOTE: You will need to define Bib_* settings in your
+ $VIMRUNTIME/ftplugin/bib.vim file.
+
+
+
+--------------------------------------------------------------------------------
+Smart Key Mappings *ls_3_9* *ls_a_bz*
+ *smart-keys*
+
+Latex-Suite ships with the following smart keys:
+
+Smart Backspace
+---------------
+ *smart-backspace* *ls_a_dZ*
+Pressing <BS> in insert mode checks to see whether we are just after something
+like \'{a} and if so, deletes all of it. i.e, diacritics are treated as single
+characters for backspacing.
+
+Smart Quotes
+------------
+Pressing " (English double quote) will insert `` or '' by making an intelligent
+guess about whether we intended to open or close a quote.
+
+Smart Space
+-----------
+Latex-Suite maps the <space> key in such a way that $ characters are not broken
+across lines. It does this by first setting tw=0 so that Vim will not
+automatically break lines and then maps the <space> key to insert newlines
+keeping $$'s on the same line.
+
+Smart Dots
+----------
+Pressing ... (3 dots) results in \ldots outside math mode and \cdots in math
+mode.
+
+--------------------------------------------------------------------------------
+Alt Key Macros *ls_3_10* *ls_a_bA*
+ *altkey-mappings*
+
+Latex-Suite utilizes a set of macros originally created by Carl Mueller in
+auctex.vim to make inserting all the \left ... \right stuff very easy and to
+also make some use of the heavily under-utilized <Alt> key.
+
+NOTE: By default, typing Alt-<key> in Vim takes focus to the menu bar if a menu
+ with the hotkey <key> exists. If in your case, there are conflicts due to
+ this behavior, you will need to set >
+ set winaltkeys=no
+< in your $VIM/ftplugin/tex.vim in order to use these maps.
+
+
+NOTE: Customizing the maps
+ --------------------
+ If for some reason, you wish to not map the <Alt> keys, (some European
+ users need to use the <Alt> key to enter diacritics), you can change these
+ maps to other keys as described in the section Customizing Alt-key maps
+ [|ls_a_cx|].
+
+
+
+
+<Alt-L> *ls_3_10_1* *ls_a_bB* *Alt-L*
+
+This is a polymorphic insert-mode mapping which expands to one of the following
+depending on the character just before the cursor location.
+
+Character before cursor Expansion~
+( \left( <++> \right)
+[ \left[ <++> \right]
+| \left| <++> \right|
+{ \left\{ <++> \right\}
+< \langle <++> \rangle
+q \lefteqn{<++>}<++>
+
+If the character before the cursor is none of the above, then it will simply
+insert a \label{<++>}<++>.
+
+
+<Alt-B> *ls_3_10_2* *ls_a_bC* *Alt-B*
+
+This insert-mode mapping encloses the previous character in \mathbf{}.
+
+
+<Alt-C> *ls_3_10_3* *ls_a_bD* *Alt-C*
+
+In insert mode, this key is polymorphic as follows:
+
+
+1. If the previous character is a letter or number, then capitalize it and
+ enclose it in \mathcal{}.
+
+2. otherwise insert \cite{}.
+In visual mode, it will simply enclose the selection in \mathcal{}
+
+
+<Alt-I> *ls_3_10_4* *ls_a_bE* *Alt-I*
+
+This mapping inserts an \item command at the current cursor location depending
+on which environment the cursor is enclosed in. The style of the \item command
+is dependent on the enclosing environment. By default, <Alt-I> has styles
+defined forthe following environments:
+
+Environment Style~
+itemize \item
+enumerate \item
+theindex \item
+thebibliography \item[<+biblabel+>]{<+bibkey+>} <++>
+description \item[<+label+>] <++>
+
+<Alt-I> is intelligent enough to account for nested environments. For example, >
+ \begin{itemize}
+ \item first item
+ \item second item
+ \begin{description}
+ \item[label1] first desc
+ \item[label2] second
+ % <Alt-I> will insert "\item[<+label+>] <++>" if
+ % used here
+ \end{description}
+ \item third item
+ % <Alt-I> will insert "\item " when if used here.
+ \end{itemize}
+ % <Alt-I> will insert nothing ("") if used here
+<
+
+The style used by <Alt-I> can be customized using the
+g:Tex_ItemStyle_environment [|ls_a_dl|] variable.
+
+--------------------------------------------------------------------------------
+Custom Macros *ls_3_11* *ls_a_bF*
+ *custom-macros-menu*
+
+This functionality available via the TeX-Suite.Macros menu, provides a way of
+inserting customized macros into the current file via the menu.
+
+When Latex-Suite starts up, it scans the $VIM/ftplugin/latex-suite/macros/
+directory and creates a menu from the files found there. Each file is considered
+as a single macro. You can place your own macros in this directory, using
+placeholders [|ls_a_eD|] if wanted.
+
+When you choose a macro from the menu, the corresponding file is read into the
+current buffer after the current cursor position. In non-gui mode, you can use
+the |TMacro| command instead of choosing from the menu. This command takes the
+macro file name as an argument. When called without arguments (preferred usage),
+then a list of available macro files is displayed and the user is prompted to
+choose one of them).
+
+There are some other tools provided in this menu, namely:
+
+
+{New} Creates a new (unnamed) buffer in the latex-suite/macros/ directory.
+ Use the command :TexMacroNew in non-gui mode.
+{Edit} Opens up the corresponding macro file for editing. Use |:TexMacroEdit|
+ in non-gui mode. When you try to edit {macro} not from local directory
+ Latex-Suite will copy it to your local directory with suffix "-local".
+ If local copy already exists Latex-Suite prompt for overwriting it.
+{Delete} Deletes the corresponding macro. Use the prefixed numbers for fast
+ navigation of menus. Use |:TexMacroDelete| in non-gui mode. When you
+ choose to delete {macro} which is not in your local directory
+ Latex-Suite will refuse to delete it.
+{Redraw} Rescans the macros/ directories and refreshes the macros list.
+
+--------------------------------------------------------------------------------
+Making your own Macros via IMAP() *ls_3_12* *ls_a_bG*
+ *ls-new-macros*
+
+If you find the need to create your own macros, then you can use the IMAP()
+function provided with Latex-Suite. See [|ls_a_bH|] for a short explanation of
+why you might prefer IMAP() over Vim's standard :imap command. An example best
+explains the usage: >
+ :call IMAP('NOM', '\nomenclature{<++>}<++>', 'tex')
+This will create a Latex-Suite-style mapping, where if you type NOM in insert
+mode, you will get \nomenclature{<++>}<++> with the cursor left in place of the
+first <++> characters. See [|ls_a_bI|] for a detailed explanation of the IMAP()
+command.
+
+For maps which are triggered for a given filetype, the IMAP() command above
+should be put in the filetype plugin script for that file. For example, for
+tex-specific mappings, the IMAP() calls should go in $VIM/ftplugin/tex.vim. For
+globally visible maps, you will need to use the following in either your
+~/.vimrc or a file in your $VIM/plugin directory. >
+ augroup MyIMAPs
+ au!
+ au VimEnter * call IMAP('Foo', 'foo', '')
+ augroup END
+
+
+
+
+Why use IMAP() *ls_3_12_1* *ls_a_bH*
+ *why-IMAP*
+
+Using IMAP instead of Vim's built-in :imap command has a couple of advantages:
+1. The 'ttimeout' option will generally limit how easily you can type the left
+ hand side for a normal :imap. if you type the left hand side too slowly, then
+ the mapping will not be activated.
+
+2. If you mistype one of the letters of the lhs, then the mapping is deactivated
+ as soon as you backspace to correct the mistake.
+
+3. The characters in lhs are shown on top of each other. This is fairly
+ distracting. This becomes a real annoyance when a lot of characters initiate
+ mappings.
+
+
+IMAP() syntax *ls_3_12_2* *ls_a_bI*
+ *ls-imaps-syntax*
+
+Formally, the syntax which is used for the IMAP function is: >
+ call IMAP (lhs, rhs, ft [, phs, phe])
+
+
+Argument Explanation~
+lhs This is the "left-hand-side" of the mapping. When you use IMAP, only
+ the last character of this word is actually mapped, although the
+ effect is that the whole word is mapped.
+
+ If you have two mappings which end in a common lhs, then the mapping
+ with the longer lhs is used. For example, if you do >
+ call IMAP('BarFoo', 'something', 'tex')
+ call IMAP('Foo', 'something else', 'tex')
+< Then typing BarFoo inserts "something", whereas Foo by itself inserts
+ "something else".
+
+ Also, the nature of IMAP() makes creating certain combination of
+ mappings impossible. For example if you have >
+ call IMAP('foo', 'something', 'tex')
+ call IMAP('foobar', 'something else', 'tex')
+< Then you will never be able to trigger "foobar" because typing "foo"
+ will immediately insert "something". This is the "cost" which you
+ incur over the normal :imap command for the convenience of no
+ 'timeout' problems, the ability to correct lhs etc.
+
+
+rhs The "right-hand-side" of the mapping. This is the expansion you will
+ get when you type lhs.
+
+ This string can also contain special characters such as <enter> etc.
+ To do this, you will need to specify the second argument in
+ double-quotes as follows: >
+ :call IMAP('EFE', "\\begin{figure}\<CR><++>\\end{figure}<++>", 'tex')
+< With this, typing EFE is equivalent to typing in the right-hand side
+ with all the special characters in insert-mode. This has the advantage
+ that if you have filetype indentation set up, then the right hand side
+ will also be indented just as if you had typed it in normally.
+
+ *IMAP_PutTextWithMovement* *ls_a_ea*
+ You can also set up a Latex-Suite style mapping which calls a custom
+ function as follows: >
+ :call IMAP('FOO', "\<C-r>=MyFoonction()\<CR>", 'tex')
+< where MyFoonction is a custom function you have written. If
+ MyFoonction also has to return a string containing <++> characters,
+ then you will need to use the function IMAP_PutTextWithMovement(). An
+ example best explains the usage:
+
+ >
+ call IMAP('FOO', "\<C-r>=AskVimFunc()\<CR>", 'vim')
+ " Askvimfunc: Asks For Function Name And Sets Up Template
+ " Description:
+ function! AskVimFunc()
+ let name = input('Name of the function : ')
+ if name == ''
+ let name = "<+Function Name+>"
+ end
+ let islocal = input('Is this function scriptlocal ? [y]/n : ', 'y')
+ if islocal == 'y'
+ let sidstr = '<SID>'
+ else
+ let sidstr = ''
+ endif
+ return IMAP_PutTextWithMovement(
+ \ "\" ".name.": <+short description+> \<cr>" .
+ \ "Description: <+long description+>\<cr>" .
+ \ "\<C-u>function! ".name."(<+arguments+>)<++>\<cr>" .
+ \ "<+function body+>\<cr>" .
+ \ "endfunction \" "
+ \ )
+ endfunction
+<
+
+
+ft The file type for which this mapping is active. When this string is
+ left empty, the mapping applies for all file-types. A filetype
+ specific mapping will always take precedence.
+
+
+phs, phe If you prefer to write the rhs with characters other than <+ and +> to
+ denote place-holders, you can use the last 2 arguments to specify
+ which characters in the rhs specify place-holders. By default, these
+ are <+ and +> respectively.
+
+ Note that the phs and phe arguments do not control what characters
+ will be displayed for the placeholders when the mapping is actually
+ triggered. What characters are used to display place-holders when you
+ trigger an IMAP are controlled by the Imap_PlaceHolderStart
+ [|ls_a_cV|] and Imap_PlaceHolderEnd [|ls_a_er|] settings.
+
+
+
+================================================================================
+Package Handling *ls_4* *ls_a_bJ*
+ *latex-packages*
+
+|ls_4_1| Inserting package commands
+|ls_4_2| Actions taken for supported packages
+|ls_4_3| Automatic Package detection
+|ls_4_4| Writing supporting for a package
+
+
+Latex-Suite has a lot of functionality written to ease working with packages.
+Packages here refers to files which you include into the LaTeX document using
+the \usepackage command.
+
+
+--------------------------------------------------------------------------------
+Inserting package commands *ls_4_1* *ls_a_bK*
+ *inserting-packages*
+
+When you first invoke Latex-Suite, it scans the
+$VIM/ftplugin/latex-suite/packages directory for package script files and
+creates a menu from all the files found there. This menu is created under
+TeX-Suite > Packages > Supported. This menu contains a list of packages
+"supported" by Latex-Suite. When you choose one of the packages from this menu
+(for example the amsmath package), then a line of the form >
+ \usepackage[<++>]{amsmath}<++>
+will be inserted into the current file.
+
+The \usepackage line can also be inserted in an easy manner in the current file
+by pressing <F5> while in the preamble of the current document. This will set up
+a prompt from the supported packages and ask you to choose from one of them. If
+you do not find the package you want to insert in the list, you can type in a
+package-name and it will use that. Pressing <F5> in the preamble on a line
+containing a single word will construct a \usepackage line from that word.
+
+You can also use the TPackage [|ls_a_cD|] to insert the \usepackage line.
+
+Once you have inserted a \usepackage line, for supported packages, you can use
+the Options and Commands menus described in the next section [|ls_a_bL|].
+
+--------------------------------------------------------------------------------
+Actions taken for supported packages *ls_4_2* *ls_a_bL*
+ *package-actions*
+
+Latex-Suite takes the following actions for packages detected when a file is
+loaded, or a new \usepackage line is inserted using one of the methods described
+in the previous section [|ls_a_bK|].
+
+If you are using the GUI and you have g:Tex_Menus [|ls_a_dI|] set to 1,
+Latex-Suite will create the following sub-menus
+TeX-Suite > Packages > <package> Options
+
+TeX-Suite > Packages > <package> Commands
+
+where <package> is the package you just inserted (or was detected). You can use
+these menus to insert commands, environments and options which Latex-Suite
+recognizes as belonging to this package.
+
+NOTE: While inserting an option, you need to position yourself in the
+ appropriate place in the document, most commonly inside the square braces
+ in the \usepackage[]{packname} command. Latex-Suite will not navigate to
+ that location.
+
+
+In addition to creating these sub-menus, Latex-Suite will also scan the
+$VIM/ftplugin/latex-suite/dictionaries directory and if a dictionary file
+corresponding to the package file is found, then it will add the file to the
+'dict' setting in Vim so you can use the <C-X><C-K> command to complete words
+from that file.
+
+For example, the SIUnits package has a custom dictionary.
+
+ *latex-package-scanning* *ls_a_eb*
+If a package detected at startup is found by Latex-Suite in the current
+directory or in a location specified by the g:Tex_TEXINPUTS [|ls_a_dT|]
+variable, Latex-Suite will scan the package for \newenvironment and newcommand
+lines and also append any commands and environments found to the list of
+commands and environments which you are prompted with when you press <F5>
+[|ls_a_bh|] or <F7> [|ls_a_dW|] in insert mode.
+In addition, the TeX-Suite > Packages menu also contains the following submenus
+
+Update
+------
+This command is to be invoked with the cursor placed on the package name. If the
+corresponding package is found, then a sub-menu with the supported commands and
+options is created.
+
+Update All
+----------
+This function reads the preamble of the document for \usepackage lines and if
+Latex-Suite supports the detected packages, then sub-menus containing the
+package options and commands are created.
+
+
+--------------------------------------------------------------------------------
+Automatic Package detection *ls_4_3* *ls_a_bM*
+ *automatic-package-detection*
+
+Whenever Latex-Suite begins editing a new LaTeX file, it scans it for
+\usepackage{name} lines, and if a supported package is found, then it will
+create sub-menus and add to the 'dict' setting as described above.
+
+If a master-file [|ls_a_ct|] has been specified, then it will scan that file
+instead of the current file. See the section Custom Packages [|ls_a_bN|] to see
+which files Latex-Suite will scan in more detail.
+
+For all the packages detected in this manner, Latex-Suite will take certain
+actions as described in the section package support. [|ls_a_bL|].
+
+
+
+Custom Packages *ls_4_3_1* *ls_a_bN*
+ *custom-packages*
+
+Often times, the preamble can become too long, and some people prefer to put
+most of their personalization in a custom package and include that using a
+\usepackage line. Latex-Suite tries to search such customs package for other
+\usepackage lines, so that supported packages included in this indirect manner
+can also be used to create sub-menus, extend the 'dict' setting etc. The most
+obvious place to place such custom packages is in the same directory as the
+edited file. In addition, LaTeX also supports placing custom packages in places
+pointed to by the $TEXINPUTS environment variable.
+
+If you use the $TEXINPUTS variable in LaTeX, and you wish Latex-Suite to search
+these custom packages for \usepackage lines, then you need to initialize the
+g:Tex_TEXINPUTS [|ls_a_dT|] variable.
+
+The g:Tex_TEXINPUTS variable needs to be set in the same format which Vim uses
+for the 'path' setting. This format is explained in detail if you do >
+ :help file-searching
+from within Vim.
+
+Therefore the value of g:Tex_TEXINPUTS will most probably be different from
+$TEXINPUTS which your native LaTeX distribution uses.
+
+Example: >
+ let g:Tex_TEXINPUTS = '~/texmf/mypackages/**,./**'
+The ** indicates that all directories below the directory ~/texmf/mypackages and
+./ are to be scanned for custom packages.
+
+NOTE: The present directory '.' is always searched. You need not include that in
+ g:Tex_TEXINPUTS.
+
+
+
+--------------------------------------------------------------------------------
+Writing supporting for a package *ls_4_4* *ls_a_bO*
+ *supporting-packages*
+
+Supporting a package is easy and consists of writing a vim script with the same
+name as the package and placing it in the $VIM/ftplugin/latex-suite/packages
+directory. A package script should define two variables as described in the next
+two sections. In addition to these two variables, you can also define any
+functions, environment definitions etc. in this file.
+
+
+
+g:Tex_package_option_<package> *ls_4_4_1* *ls_a_bP*
+
+This setting is a string containing a comma separated list of options supported
+by this package.
+
+Example: >
+ g:Tex_package_option_mypack = 'opt1,opt2=,sbr:group1,opt3,opt4'
+The = suffix means that the option takes a value. Use sbr:group name to separate
+options into sub-menus. All successive options will be clubbed into the group1
+sub-menu till the next sbr: option is encountered.
+
+
+g:Tex_package_<package> *ls_4_4_2* *ls_a_bQ*
+
+ >
+
+ g:TeX_package_<package> = "pre:Command,pre:Command1"
+ More detailed example is in latex-suite/packages/exmpl file (slightly
+ outdated).
+ Here is short summary of prefixes which can be used in package files:
+ (x - place with cursor, <++> - |placeholder|)
+
+ {env:command} Environment: creates simple environment template
+ \begin{command}
+ x
+ \end{command}<++>
+ {eno:command} Environment with option:
+ \begin[x]{command}
+ <++>
+ \end{command}<++>
+ {ens:command[<<option>>]...} Environment special:
+ \begin[<<option>>]...{command}
+ <++>
+ \end{command}<++>
+ {bra:command} Brackets:
+ \command{x}<++>
+ {brd:command} Brackets double:
+ \command{x}{<++>}<++>
+ {brs:command[<<option>>]...} Brackets special (as environment special:
+ \command[<+x+>]{<++>}{<++>}<++>
+ {nor:command} Normal:
+ \command<Space
+ {noo:command} Normal with option:
+ \command[x]<++>
+ {nob:command} Normal with option and brackets:
+ \command[x]{<++>}<++>
+ {pla:command} Plain:
+ command<Space
+ {spe:command} Special:
+ command <-literal insertion of command
+ {sep:command} creates separator. Good for aesthetics and usability :)
+ {sbr:command} Breaks menu into submenus. <command> will be title of submenu.
+ Can be used also in package variable.
+
+ Command can be also given without prefix:. The result is
+ \command
+
+
+
+================================================================================
+Latex Completion *ls_5* *ls_a_bR*
+ *latex-completion*
+
+|ls_5_1| Latex-Suite completion example
+|ls_5_2| Latex-Suite \ref completion
+|ls_5_3| Latex-Suite \cite completion
+|ls_5_4| Latex-Suite filename completion
+|ls_5_5| Custom command completion
+
+
+Latex-Suite provides an easy way to insert references to labels and
+bibliographic entries and also provide filename arguments to commands such as
+\includegraphics. Although the completion capabilities are very diverse,
+Latex-Suite only uses a single key (<F9> by default) to do all of it. Pressing
+the <F9> key does different things based on where you are located. Latex-Suite
+tries to guess what you might be trying to complete at the location where you
+pressed <F9>. For example, pressing <F9> when you are within a \ref command will
+try to list the \label's in the present directory. Pressing it when you are in a
+\cite command will list bibliography keys. Latex-Suite also recognizes commands
+which need a file name argument and will put up an explorer window for you to
+choose a filename.
+
+ *ls-set-grepprg* *ls_a_eG*
+NOTE: Before you start with Latex-Suite's completion function...
+ ----------------------------------------------------------
+ All of Latex-Suite's completion capabilities depend on a external program
+ being available on your system which can search through a number of files
+ for a reg-exp pattern. On *nix systems, the pre-installed grep utility is
+ more than adequate. Most windows systems come with a utility findstr, but
+ that has proven to be very inadequate (for one, it does not have an option
+ to force the file name to be displayed when searching through a single
+ file). Your best bet is to install cygwin |ls_u_3|, but if you think
+ that's overkill, you can search for |ls_u_4| a windows implementation of
+ GNU grep. (Latex-Suite testing on windows has been done with cygwin's port
+ of GNU grep).
+
+ Once you have a grep program installed, you need to set the 'grepprg'
+ option for vim. Make sure you use a setting which forces the program to
+ display file names even when you are searching through a single file. For
+ GNU grep, the syntax is >
+ set grepprg=grep\ -nH\ $*
+<
+
+
+
+--------------------------------------------------------------------------------
+Latex-Suite completion example *ls_5_1* *ls_a_bS*
+ *ls-completion-usage*
+
+Consider the situation where you are editing a file with two equations labelled
+eqn:euler and eqn:einstein. Now you want to insert a reference to one of these
+equations. To do this, you type the \ref{eqn:} command and with the cursor
+placed after eqn:, press <F9>. This will bring up two new windows beneath the
+main window you were working in as shown in the figure below. >
+
+ 8 These are a couple of equations:
+ 9 +-- 4 lines: eqnarray (eqn:euler) : e^{j\pi} + 1 &=& 0---------------
+ 13 +-- 4 lines: equation (eqn:einstein) : E = m c^2---------------------
+ 17
+ 18 These are a couple of figures:
+ 19 +-- 7 lines: figure (fig:monkeys) : Monkeys can Type-------------------
+ 26 +-- 7 lines: figure (fig:shakespeare) : Shakespeare could not type-----
+ 33
+ 34 This is a reference to \ref{eqn:}<++>
+ 35
+ 36
+ 37 \end{document}
+ 38
+ ~
+ ~
+ ~
+ newfile.tex 34,32 Bot
+ newfile.tex|11| \label{eqn:euler}
+ newfile.tex|15| \label{eqn:einstein}
+ ~
+ [Error List] 1,1 All
+ 7
+ 8 These are a couple of equations:
+ 9 \begin{eqnarray}
+ 10 e^{j\pi} + 1 &=& 0
+ 11 \label{eqn:euler}
+ 12 \end{eqnarray}
+ 13 \begin{equation}
+ 14 E = m c^2
+ 15 \label{eqn:einstein}
+ 16 \end{equation}
+ newfile.tex [Preview] 11,3 21%
+
+
+
+The first window (shown as [ErrorList] above) is a |cwindow| containing a list
+of possible matches for the reference. The cursor will be located in the first
+line of this window. The bottom window is a preview-window showing the context
+of the \label. Moving around in the [ErrorList] window automatically scrolls the
+preview window so as to always keep showing the context of the \label being
+viewed in the [ErrorList] window. You can also press J and K in the [ErrorList]
+window to scroll the preview window up and down.
+
+To insert one of the labels, simply position the cursor in the correct line in
+the [ErrorList] window and press <enter>. This will immediately close the two
+newly opened windows, get back to the correct location in the original file
+being edited and insert the label into the \ref command.
+
+If you notice carefully in the example above, the [ErrorList] window only showed
+the matches for the equations and did not list any of the figure labels. This is
+because we pressed <F9> after \ref{eqn: instead of simply after \ref{. This
+caused Latex-Suite to search only for those labels which started with the string
+eqn:. If you had pressed <F9> after a \ref{, you would have been shown matches
+from _all_ labels, not just those starting with eqn:.
+
+Thus prefixing all your labels with eqn:, fig:, tab: etc. depending on what you
+are labelling will lead to an easier time completing references.
+
+--------------------------------------------------------------------------------
+Latex-Suite \ref completion *ls_5_2* *ls_a_bT*
+ *ls-completion-ref*
+
+Pressing <F9> when you are within a partially completed \ref command will split
+open a window (named __OUTLINE__) which contains a nicely formatted list of all
+the \labels found in the present project. The \labels are heirarchically
+arranged according to which \section, \subsection etc of the overall document
+structure they are present in. For example, when you first press <F9> after
+typing \ref{, you should see something like: >
+
+ +-- 54 lines: 2. Kinematics--------------------------------
+ +-- 98 lines: 3. Aerodynamics of the MFI thorax------------
+ +-- 40 lines: 4. Jump Resonance in Fourbar Mechanisms------
+ +-- 28 lines: 5. Design and Fabrication Issues-------------
+
+Each chapter is |fold|ed away so that you can quickly jump to the correct
+section/subsection in which the relevant equation is defined. This makes
+inserting references significantly faster for large projects with hundreds of
+equations. You can then open some of the folds to see for example: >
+
+ +-- 54 lines: 2. Kinematics--------------------------------
+ 3. Aerodynamics of the MFI thorax
+ 3.1. Aerodynamic modeling of the MFI wing forces
+ 3.1.1. Geometric Specification
+ eqn:wingnormal-pos
+ \nhat = T_z(\theta_2) T_y(\theta_y)T_x(\theta_x)\nhat_0,
+ eqn:T-1
+ T_1(\theta_2) &=& T_z(\theta_2)
+
+The <Tab> key is mapped in this window to toggle folds so that you can quickly
+open/close folds in order to navigate the heirarchy faster. Once you are
+positioned on a label, press <Enter>. This closes the __OUTLINE__ window,
+returns to the window in which you pressed <F9> and inserts the reference at the
+current cursor position.
+
+NOTE: Filtering labels by prefix
+ --------------------------
+ You can press <F9> after typing part of the \label. In this case,
+ Latex-Suite only presents \labels which begin with the already filled
+ characters. You can use this to choose between equations, figures, tables
+ etc. if you consistently label equations to begin with eqn:, figures to
+ begin with fig: etc. For example, with this scheme, pressing <F9> after
+ typing \ref{eqn: will only list equations.
+
+
+NOTE: Latex-Suite works the same way if you press <F9> after any command which
+ contains the letters ref. Thus you can complete \eqref in exactly the same
+ manner.
+
+
+NOTE: Requirements
+ ------------
+ This method of preseting the \labels depends on Vim being compiled with
+ python support. To check if you have this, see the output of the :ver
+ command. If you see something like +python, you are all set. Failing this,
+ you will need to have python somewhere in your $PATH.
+
+
+
+--------------------------------------------------------------------------------
+Latex-Suite \cite completion *ls_5_3* *ls_a_bU*
+ *latex-completion-cite*
+
+Latex-Suite provides an easy way to insert references to bibliographic entries.
+Pressing <F9> when the cursor is placed inside a partially completed \cite
+command will split open a new window (named __OUTLINE__) which contains a
+formatted and syntax highlighted list of all bibtex entries found. For example,
+pressing <F9> after typing \ref{ should present you with a window which looks
+something like this: >
+
+ Article [dickinson:science:99]
+ "Wing rotation and aerodynamic basis of insect flight"
+ M. H. Dickinson and F-O. Lehman and S. P. Sane
+ In Science, 1999
+
+ Article [ellington:84:part1]
+ "The Aerodynamics of Hovering Insect Flight. I. The Quasi-Steady Analysis"
+ Ellington, C P
+ In Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 1984
+
+ Article [ellington:84:part2]
+ "The Aerodynamics of Hovering Insect Flight. II. Morphological Parameters"
+ Ellington, C P
+ In Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 1984
+
+
+
+You can easily jump from one entry to another using the 'n' and 'p' keys (to go
+to the next / previous entry respectively).
+
+You can also filter out a subset of the bibtex entries by pressing 'f' while in
+this window. Doing this presents the following prompt: >
+
+ Field acronyms: (`:let g:Tex_EchoBibFields = 0` to avoid this message)
+ [t] title [a] author [b] booktitle
+ [j] journal [y] year [p] bibtype
+ (you can also enter the complete field name)
+ Enter filter criterion [field<space>value]:
+
+At the prompt, type >
+ a ellington
+Notice that the letter a is an acronym for author according to the prompt above.
+Therefore this filter only shows those bibtex entries whose author field
+contains the text ellington. You can keep narrowing your selection by repeatedly
+filtering the results. If you would like to remove all the filters and see all
+entries again, press 'a', which removes all the filters.
+
+You can also sort the bibtex entries based on a field. To do this, press 's'.
+This will present you with a prompt like in the case of the filter and you are
+asked to choose a field. In this case, you would type in a single character.
+This sorts the entries according to that field.
+
+NOTE: <F9> will also work in a similar way after any command which contains the
+ word cite in it. For example, pressing <F9> will also work with \citenum
+ etc.
+
+
+The following logic is applied to find out which bibliographic entries are
+included in the completion.
+
+
+1. Firstly, if the present file has a master-file [|ls_a_ct|] defined for it,
+ then Latex-Suite will perform the following steps on that file instead of on
+ the current file.
+
+2. First, the file is scanned for a \bibliography command. To explain better,
+ assume that a command >
+ \bibliography{file1,file2}
+< is found in the present file. For each bibliography file, say file1,
+ Latex-Suite first tries to see if a .bib file, file1.bib can be found. If so,
+ it will scan it for bib-keys of the form @BOOK{ etc., and add these searches
+ to the completion list. If a .bib file cannot be found, then it will try to
+ see if file1.bbl can be found. If so, Latex-Suite will search it for bib-keys
+ of the form \bibitem and add these to the completion list.
+
+ You can set the location where Latex-Suite will search for .bib and .bbl
+ files using the |Tex_BIBINPUTS| [|ls_a_dr|] variable.
+
+3. If a \bibliography command is not found, then Latex-Suite tries to scan the
+ present file for a \begin{thebibliography} environment. If found, Latex-Suite
+ searches the present file for bib-keys of the form \bibitem.
+
+4. Finally, it will try to see if this file includes other files via the \input
+ command. For each such file found, Latex-Suite will repeat the previous two
+ steps stopping at the first file which has either a \bibliography command or
+ a thebibliography environment.
+
+
+Caching the \cite completion results *ls_5_3_1* *ls_a_bV*
+ *cite-search-caching*
+
+ *TClearCiteHist* *ls_a_ec*
+Often times, the editing cycle proceeds by first laying out a comprehensive
+bibliography and then completing all the \cite commands in one session. In such
+situations, it is inefficient to scan the whole list of bibliography files for
+bib-keys each time. Latex-Suite provides a way to cache the results of the cite
+completion search using the Tex_RememberCiteSearch [|ls_a_du|] variable. If set,
+Latex-Suite will perform the search only the first time <F9> is used. Next time
+on, it will reuse the search results. If you wish to redo the search results,
+issue the command >
+ TClearCiteHist
+This will redo the completion list next time you use <F9>.
+
+--------------------------------------------------------------------------------
+Latex-Suite filename completion *ls_5_4* *ls_a_bW*
+ *ls-filename-completion*
+
+When you press <F9> at a location where Latex-Suite guesses a filename needs to
+be typed, then a new explorer window will open up with the list of files. You
+can use this window to change directories etc. Pressing <enter> on a filename in
+the explorer window will automatically close the explorer window, return to the
+location where you pressed <F9> from and insert the filename into that position.
+
+Latex-Suite also tries to guess what kinds of files you might not want to insert
+and hides those accordingly. For example, if you press <F9> when you are located
+at \includegraphics{, then Latex-Suite knows that you will not want to insert
+.tex files. Therefore, the explorer window will automatically hide these files.
+
+As of now, Latex-Suite recognizes the following commands for filename
+completion. Along with the commands, this table also lists the files which
+Latex-Suite will not show for completing each command.
+
+command hide pattern~
+\bibliography '^\.,\.[^b]..$'
+\include \includeonly '^\.,\.[^t]..$'
+\includegraphics \psfig '^\.,\.tex$,\.bib$,\.bbl$,\.zip$,\.gz$'
+\input ''
+
+--------------------------------------------------------------------------------
+Custom command completion *ls_5_5* *ls_a_bX*
+ *ls-completion-custom*
+
+Latex-Suite also recognizes certain commonly used LaTeX commands for the <F9>
+key. At the moment, the \bibliographystyle, \addtocontents and the
+\addcontentsline commands are recognized, although more will be added in the
+future. When you press the <F9> after such a command, Latex-Suite will prompt
+you with a list of arguments which make sense for the command.
+
+This functionality is available for commands for which a global variable of the
+form g:Tex_completion_{<command>} is defined where <command> is the command
+name. This variable is a comma separated list of values which this command
+takes. For example, the argument to the \bibliographystyle command is commonly
+one of abbr,alpha,plain,unsrt. Therefore, Latex-Suite defines >
+ let g:Tex_completion_bibliographystyle = 'abbr,alpha,plain,unsrt'
+You can define your own completion variables in a similar manner for commands
+which you might use.
+
+================================================================================
+LaTeX Compiling *ls_6* *ls_a_bY*
+ *latex-compiling*
+
+|ls_6_1| Setting Compilation rules
+|ls_6_2| Handling dependencies in compilation
+|ls_6_3| Compiling multiple times
+|ls_6_4| Customizing the compiler output
+|ls_6_5| Compiling parts of a file
+
+
+This functionality, available via the TeX-Suite menu, provides various tools to
+compile and debug LaTeX files from within Vim.
+
+If you are using commonly used LaTeX tools, then you should be all set as soon
+as you download and install Latex-Suite. In order to compile a LaTeX file,
+simply press \ll while editing the file. This runs latex on the current file and
+displays the errors in a |quickfix-window| below the file being edited. You can
+then scroll through the errors and press <enter> to be taken to the location of
+the corresponding error. Along with the errors being listed in the quickfix
+window, the corresponding log file is also opened in |preview| mode beneath the
+quickfix window. It is scrolled automatically to keep in sync with the error
+being viewed in the quickfix window. You will be automatically taken to the
+location of the first error/warning unless you set the g:Tex_GotoError
+[|ls_a_dD|] variable to 0.
+
+Latex-Suite also supports compiling LaTeX into formats other than DVI. By
+default, Latex-Suite supports PDF and PS formats. In order to choose a format
+other than DVI, use the TTarget command or the TeX-Suite > Target Format menu
+item. This will ask you to type in the name of the target format you want to
+compile to. If a rule has been defined for the format (as described in the next
+section [|ls_a_bZ|]), then Latex-Suite will switch to that format.
+
+Trying to choose a format for which no rule has been defined will result in
+Latex-Suite displaying a warning message without taking any action.
+
+If you are using a multiple file project and need to compile a master file while
+editing other files, then Latex-Suite provides a way to specify the file to be
+compiled as described in latex-master-file [|ls_a_ct|].
+
+
+--------------------------------------------------------------------------------
+Setting Compilation rules *ls_6_1* *ls_a_bZ*
+ *compiler-rules*
+
+In order to compile LaTeX files into various formats, Latex-Suite needs to know
+which external programs to call and in which way they need to be called. This
+information is provided to Latex-Suite via a number of "rules". For each format
+you want to compile to, you need to specify a rule. A rule is specified by
+defining a variable of the form: >
+ g:Tex_CompileRule_<format>
+where <format> is a string like "pdf", "dvi" etc.
+
+Example: By default, Latex-Suite uses the following rule for compiling LaTeX
+documents into DVI. >
+ g:Tex_CompileRule_dvi = 'latex --interaction=nonstopmode $*'
+
+
+Default values are also provided for ps and pdf formats. You might want to
+change these rules in texrc according to your local tex environment.
+
+NOTE: For win32 users user MikTeX, sometimes the latex compiler's output has a
+ bug where a single number is split across different lines. In this case,
+ put the included vim-latex file distributed with Latex-Suite.
+
+
+
+--------------------------------------------------------------------------------
+Handling dependencies in compilation *ls_6_2* *ls_a_ca*
+ *compiler-dependency*
+
+Latex-Suite also handles compiling dependencies automatically via certain rules
+which specify the "dependency chain" for each target format. For example, if in
+your case, you use >
+ .tex -> .dvi -> .ps -> .pdf
+to generate pdf files from dvi files, then you will need to specify the
+following setting in your Latex-Suite configuration (see customizing Latex-Suite
+[|ls_a_cP|] for where these settings should go): >
+
+ let g:Tex_FormatDependency_pdf = 'dvi,ps,pdf'
+
+This is a comma separated string of formats specifying the order in which the
+formats to be compiled into should be chosen. With this setting, if you set the
+target format to pdf, then the next time you compile via the \ll shortcut,
+Latex-Suite will first generate a dvi file, then use that to generate the ps
+file and finally create the pdf file from that.
+
+NOTE: If any of the intermediate formats is listed in the
+ g:Tex_MultipleCompileFormats setting as described in the section Compiling
+ multiple times [|ls_a_cb|], then Latex-Suite might make multiple calls to
+ the compiler to generate the output file of that format.
+
+
+Along with the g:Tex_FormatDependency_{format} setting, you should ofcourse
+specify the rule for compiling to each of the formats as described in the
+previous section [|ls_a_bZ|]. For example, with the setting above, you could
+use: >
+
+ let g:Tex_CompileRule_dvi = 'latex --interaction=nonstopmode $*'
+ let g:Tex_CompileRule_ps = 'dvips -Ppdf -o $*.ps $*.dvi'
+ let g:Tex_CompileRule_pdf = 'ps2pdf $*.ps'
+
+
+NOTE: By default, Latex-Suite does not specify any compiler dependencies. Each
+ target format for which a rule has been derived will be compiled
+ independently.
+
+
+
+--------------------------------------------------------------------------------
+Compiling multiple times *ls_6_3* *ls_a_cb*
+ *compiling-multiple*
+
+Most LaTeX compilers need to be re-run several times in several commonly
+occurring situations in order to get a final camera ready copy. For example,
+when \label's change, when new \cite commands are added etc. If the target
+format you are compiling to requires multiple compilations, then you will need
+to include the format in the g:Tex_MultipleCompileFormats setting. This is a
+comma separated string of formats which need multiple compilations to be
+generated correctly.
+
+By default, this setting contains just the dvi format. If you use the pdflatex
+compiler to generate pdf files, then you might want to also include pdf into the
+above setting.
+
+For every format included in the g:Tex_MultipleCompileFormats setting described
+above, Latex-Suite will use the following logic to generate the file. Note that
+although the following description uses latex to refer to the compiler, it could
+be some other compiler such as pdflatex for generating pdf output.
+
+1. If there was a .idx file, then remember its contents.
+
+2. Run latex.
+
+3. If the .idx file changed due to the latex compiler, then run makeindex to
+ redo the .ind file and then remember to rerun latex.
+
+4. If the .aux file generated by the latex compiler contains a \bibdata line,
+ then it means that we are using a .bib file. Therefore, run bibtex.
+
+ NOTE: This means that we will always run bibtex whenever we use the
+ \bibliography command whether or not we actually need to. At this time,
+ Latex-Suite does not parse the .aux file before and after the latex
+ compiler to see if we are required to rerun bibtex.
+
+5. If the .bbl file changes because of this, then remember to rerun latex again.
+
+6. Also, we check to see if the LaTeX compiler gives certain standard warnings
+ which notify that we need to compile once again. In this case also, remember
+ to rerun LaTeX.
+
+7. If we found we had to rerun latex, then we repeat the steps above but not
+ running makeindex or bibtex again.
+
+The LaTeX file is compiled atmost 5 times using this logic. These steps will
+ensure that on most platforms/environments, you will get a clean output with all
+the cross-references, citations etc correctly labelled and ordered.
+
+--------------------------------------------------------------------------------
+Customizing the compiler output *ls_6_4* *ls_a_cc*
+ *compiler-output-customization*
+
+Most LaTeX compilers produce a very large amount of output during compilation,
+most of which is not relevant to debugging type-setting errors. The compiler
+plugin provided with Latex-Suite (which is an enhanced version of the standard
+compiler plugin maintained by Artem Chuprina), provides a way to filter the
+compiler output so that the actual errors/warnings can be presented much more
+concisely.
+
+The compiler plugin is set up by default to function in a "non-verbose",
+"ignore-common-warnings" mode, which means that irrelevant lines from the
+compiler output will be ignored and some very common warnings are also ignored.
+Latex-Suite does this via the global variable g:Tex_IgnoredWarnings [|ls_a_dA|].
+This is a list of patterns, which can be used to filter out (or ignore) some or
+the warnings and errors reported by the compiler. See the link above for its
+default value.
+
+Latex-Suite uses the g:Tex_IgnoreLevel [|ls_a_dB|] setting to set a default
+ignore level. For example, for the default value of 4, Latex-Suite ignores
+warnings and errors matching the first 4 patterns in g:Tex_IgnoredWarnings.
+
+In addition to setting a default value of the ignore level, Latex-Suite provides
+the ability to set the level dynamically, using the TCLevel command. For
+example, if you issue the command: >
+ TCLevel 3
+from within Vim, then the next time you compile the document, Latex-Suite will
+ignore warnings and errors which match the first three patterns in
+g:Tex_IgnoredWarnings.
+
+When TCLevel is called with the unquoted string strict as follows: >
+ TClevel strict
+then Latex-Suite switches to a "verbose", "no-lines-ignored" mode which is
+useful when you want to make final checks of your document and want to be
+careful not to let things slip by.
+
+See the explanation of the settings g:Tex_IgnoredWarnings [|ls_a_dA|] and
+g:Tex_IgnoreLevel [|ls_a_dB|] to find out how to customize the filtering done by
+Latex-Suite
+
+--------------------------------------------------------------------------------
+Compiling parts of a file *ls_6_5* *ls_a_cd*
+ *part-compiling*
+
+Latex-Suite also provides a way to compile a fragment of a document. This can be
+very useful while debugging a complex equation or one chapter in a book, etc.
+
+To do this, visually select a portion of the text and press \ll while in visual
+mode. The visually selected portion will be saved to a temporary file with the
+preamble from the current document prepended. Latex-Suite will then switch focus
+to this temporary file and compile it. Continue to debug this file as required
+and then replace the portion of the original file with this one.
+
+Pressing \lv while viewing the temporary file will view the output file
+generated from the temporary file, not the original file
+
+Two commands |TPartComp| and |TPartView| are provided to be able to get this
+functionality via the command line.
+
+From release 1.6 onwards of Latex-Suite, the temporary file created for part
+compilation will reside in the same directory as the file from which the
+fragment is being created. This ensures that any relative path-names defined in
+the fragment will still work. Latex-Suite will attempt to clean the temporary
+file(s) created when Vim exits.
+
+================================================================================
+Latex Viewing and Searching *ls_7* *ls_a_ce*
+ *latex-viewing*
+
+|ls_7_1| Setting Viewing rules
+|ls_7_2| Forward Searching DVI documents
+|ls_7_3| Inverse Searching
+
+
+
+--------------------------------------------------------------------------------
+Setting Viewing rules *ls_7_1* *ls_a_cf*
+ *latex-viewing-rules*
+
+In order to view the output files created by compiling the source files, you
+need to specify which external program Latex-Suite should call. You can specify
+the external program using one of two settings Tex_ViewRule_format [|ls_a_dF|]
+or Tex_ViewRuleComplete_format [|ls_a_dG|]. By default, Latex-Suite has default
+settings for viewing various common output formats via the Tex_ViewRule_format
+settings, so that if you are using commonly used programs, you should be all set
+to view compiled files from within Vim by simply pressing \lv.
+
+NOTE: The viewing function also takes the *.latexmain [|ls_a_ct|] file into
+ account to decide which file to show.
+
+
+If pressing \lv does not work, then it most probably has to do with incorrect
+settings of the g:Tex_ViewRule_<format> [|ls_a_dF|] where <format> is the format
+you are attempting to view. See the link above for how to set this according to
+your system.
+
+In addition to viewing the files, Latex-Suite also supports forward and inverse
+searching for certain common tools for viewing DVI documents. At the moment,
+there is built-in support for YAP on windows (which ships with MikTeX), and the
+popular xdvi on *nix platforms. See the next few sections for details on forward
+and inverse searching.
+
+--------------------------------------------------------------------------------
+Forward Searching DVI documents *ls_7_2* *ls_a_cg*
+ *forward-searching*
+
+Forward searching refers to making a DVI viewer display a given document at a
+given location from within Vim. At present, this functionality is supported for
+YAP on windows and xdvi on *nix machines. Pressing \ls from within Vim should
+make the DVI viewer display the portion of the document where your cursor is
+placed.
+
+ *enabling-searching* *ls_a_ed*
+NOTE: Enabling Forward and Inverse Searching
+ --------------------------------------
+ Most DVI viewers need "source-special" information in order to do forward
+ (and inverse) searching. This information is embedded in the dvi file if
+ the LaTeX source is compiled with the --src-specials option. By default,
+ Latex-Suite does not supply this argument to the compiler. See the section
+ on to find out how this option can be set.
+
+
+
+--------------------------------------------------------------------------------
+Inverse Searching *ls_7_3* *ls_a_ch*
+ *inverse-searching*
+
+Inverse searching refers to the DVI viewer telling Vim to display the LaTeX
+source file at a given location when you double-click in the DVI viewer window.
+
+You will need to enable searching [|ls_a_ed|] in order to use this
+functionality.
+
+You will also need to specify certain settings to the DVI viewer conveying the
+syntax which it needs to use to tell Vim how to display the source file. In YAP,
+you can set this option in View > Options > Inverse Search. The Command Line
+field needs to be set as follows: >
+ "C:\Program Files\vim\vim61\gvim" -c ":RemoteOpen +%l %f"
+The command :RemoteOpen is supplied when you install Latex-Suite.
+
+On *nix machines, Latex-Suite attempts to call the DVI viewer in such a way that
+it already knows how to communicate with Vim. If this does not seem to be
+working, you can use the RemoteOpen command described above.
+
+================================================================================
+Latex Folding *ls_8* *ls_a_ci*
+ *latex-folding*
+
+|ls_8_1| Default Folding Scheme in Latex-Suite
+|ls_8_2| Customizing what to fold
+|ls_8_3| Editing the folding.vim file directly
+
+
+Latex-Suite ships with the plugin SyntaxFolds.vim which is a plugin for creating
+"fake" syntax folds on the fly. The fold method is actually manual but the
+folding is based on LaTeX syntax. This offers a speed increase over regular
+syntax folding. Ofcourse it has the disadvantage that the folds are not dynamic,
+i.e newly created syntax items are not automatically folded up. (This is a
+compromise between speed and convenience).
+
+When you open up a LaTeX file, all the portions will be automatically folded up.
+However, no new folds will be created until you press <F6> or \rf. (rf stands
+for "refresh folds").
+
+The fold-text is set to the first line of the folded text unless the fold is a
+table, figure etc. (an environment). In this case, if a \caption and/or a label
+is found in the folded region, then those are used to make a more meaningful
+fold-text, otherwise the second line of the environment is displayed along with
+the name of the environment. In other words, the following >
+ \begin{figure}[h]
+ \centerline{\psfig{figure=slidercrank.eps,height=6cm}}
+ \caption{The Slider Crank Mechanism.}
+ \label{fig:slidercrank}
+ \end{figure}
+ % a LaTeX comment.
+ \begin{eqnarray}
+ \sin(\pi) = 0
+ \end{eqnarray}
+
+
+will be shown as: >
+ +--- 5 lines: figure (fig:slidercrank) : The Slider Crank Mechanism. -----
+ % a LaTeX comment.
+ +--- 3 lines: eqnarray () : \sin(\pi) = 0 --------------------------------
+
+
+
+--------------------------------------------------------------------------------
+Default Folding Scheme in Latex-Suite *ls_8_1* *ls_a_cj*
+ *default-folding*
+
+By default Latex-Suite creates folds in the following manner:
+
+ >
+ \chapter
+ \section
+ %%fakesection
+ \subsection
+ \subsubsection
+ \item
+ \equation
+ \eqnarray
+ \figure
+ \table
+ \footnote
+The indentation shows the "nestedness" of the folding scheme. See the next
+section [|ls_a_ck|] to see how you can change this scheme.
+
+--------------------------------------------------------------------------------
+Customizing what to fold *ls_8_2* *ls_a_ck*
+ *customizing-what-to-fold*
+
+From version 1.6 onwards, the folding in Latex-Suite can be controlled to a
+large extent via a number of global variables.
+
+
+
+Tex_FoldedSections *ls_8_2_1* *ls_a_cl*
+ *Tex_FoldedSections*
+
+This entry defines which sections will be folded. This setting is a comma
+separated list of section names. The default value is: >
+ part,chapter,section,%%fakesection,
+ subsection,subsubsection,paragraph
+Each of the entries in the list will fold up a section of the corresponding
+name. The %%fakesection section is provided as a means for the user to group
+lines into "fake" sections. A %%fakesection is assumed to start on a line which
+begins with the string %%fakesection and continue till the start of the next
+\section, \subsection or any other section.
+
+See also advanced fold settings [|ls_a_cp|].
+
+
+Tex_FoldedEnvironments *ls_8_2_2* *ls_a_cm*
+ *Tex_FoldedEnvironments*
+
+This entry defines which environments will be folded. It is a comma separated
+string of words each of which defines a single environment. The default setting
+is >
+ verbatim,comment,eq,gather,
+ align,figure,table,thebibliography,
+ keywords,abstract,titlepage
+The words need not be standard Latex environments. You can add any word you
+like. Also, each word will fold up all environments whose name begins with that
+word. For example, in the setting above, the word "eq" folds up the
+\begin{equation}, \begin{eqnarray}, \begin{eqnarray*} environments. To avoid
+this, you can replace the word "eq" with "eq}".
+
+See also advanced fold settings [|ls_a_cp|].
+
+
+Tex_FoldedCommands *ls_8_2_3* *ls_a_cn*
+ *Tex_FoldedCommands*
+
+This entry defines which commands will be folded. It is a comma separated string
+of words each of which defines a single command. The default setting is empty,
+i.e no commands are folded. The words need not be standard Latex commands. You
+can use whatever words you like. Each word will fold all commands whose name
+begins with that word as in the case of the Tex_FoldedEnvironments [|ls_a_cm|]
+variable.
+
+NOTE: It is very difficult to fold commands reliably because it is very
+ difficult to create a regexp which will match a line containing unmatched
+ parentheses (or curly brackets), but will not match a line containing
+ matched parentheses.
+
+ Just to make things safer, only lines which start a command but do not
+ contain additional curly braces after the command has started are folded.
+ In other words, if you wanted to fold the the command "mycommand", then
+ the lines >
+ \mycommand{This is a line
+ and some more text on the next line
+ }
+< will be folded, but the lines >
+ \mycommand{This is a \textbf{line}
+ and some more text
+ }
+< will not be folded. This is a bug which is very difficult to fix.
+
+
+See also advanced fold settings [|ls_a_cp|].
+
+
+Tex_FoldedMisc *ls_8_2_4* *ls_a_co*
+ *Tex_FoldedMisc*
+
+This entry defines fold syntax for certain items which do not naturally fit into
+the section, environment of command lists. It is a comma separated list of
+words. The default value is: >
+ item,preamble,<<<
+NOTE: Unlike the other Tex_FoldedXXXX variables, the words in this setting are
+ limited to take values from the following list:
+
+ Value Meaning~
+ comments Folds up contiguous blocks of comments
+ item Folds up the \items within list environments
+ preamble Folds up the preamble of a document. (The part between the
+ \documentclass command and the \begin{document} environment)
+ <<< Folds defined manually by the user using the <<< and >>> strings
+ as fold-markers.
+
+ Any other words in the Tex_FoldedMisc setting are silently ignored.
+
+
+
+See also advanced fold settings [|ls_a_cp|].
+
+
+Advanced Fold setting details *ls_8_2_5* *ls_a_cp*
+ *fold-setting-advanced*
+
+The order of the words in the Tex_FoldedXXXX variables is _important_. The order
+defines the order in which the folds are nested. For example, the value
+"subsection,section" for the Tex_FoldedSections variable will not fold any
+subsections at all. This is because the folds are created in the _reverse_ order
+in which they occur in the Tex_FoldedSections setting and also, once a fold is
+created, the interior of the fold is not examined for creating additional folds.
+In the above case, this means that a \section is folded first and then its
+interior is not examined further. The correct value should have been
+"section,subsection"
+
+ *fold-setting-adding* *ls_a_ee*
+Each of the fold setting variables Tex_FoldedSections, Tex_FoldedEnvironments
+etc., as explained previously is a comma separated string of variables. However,
+to make it easier to _add_ to the default settings without having to repeat the
+whole default setting again, Latex-Suite uses the following logic in forming the
+complete setting string from the Tex_FoldedXXXX variables. If the variable
+starts with a comma, then Tex_FoldedXXXX is added to the end of the default
+string rather than replacing it. Similarly, if it ends with a comma, then it
+will be prepended to the beginning of the default setting rather than replacing
+it.
+
+For example, if Tex_FoldedEnvironments is set to the string "myenv", then only
+an environment of the form \begin{myenv} will be folded. However, if the
+Tex_FoldedEnvironments setting is ",myenv", then the \begin{myenv} environment
+will be folded after all other environments in the default setting have been
+folded. On the other hand if Tex_FoldedEnvironments is of the form "myenv,", the
+\begin{myenv} environment will be folded before the rest of the environments in
+the default setting.
+
+--------------------------------------------------------------------------------
+Editing the folding.vim file directly *ls_8_3* *ls_a_cq*
+ *editing-folding*
+
+If you are using version 1.5 of Latex-Suite or older, you will need to directly
+edit the $VIM/ftplugin/latex-suite/folding.vim file if you wish to modify the
+folding scheme. You will need to modify the function MakeTexFolds() defined in
+that file to modify the fold syntax. MakeTexFolds makes a number of calls to
+AddSyntaxFoldItem. Each such call defines a new "fold item". The order in which
+these calls are made defines how the folds are nested. For example, if you
+desire an figure environment to be nested within a section, then you should
+define the fold for the figure first. The syntax of AddSyntaxFoldItem is as
+follows: >
+ AddSyntaxFoldItem(startpat, endpat, startoff, endoff [, startskip, endskip])
+If the last two arguments are omitted, then they are assumed to default to the
+empty strings ''. The explanation for each argument is as follows:
+
+Argument Explanation~
+startpat a line matching this pattern defines the beginning of a fold.
+endpat a line matching this pattern defines the end of a fold.
+startoff this is the offset from the starting line at which folding will
+ actually start
+endoff like startoff, but gives the offset of the actual fold end from the
+ line satisfying endpat. startoff and endoff are necessary when the
+ folding region does not have a specific end pattern corresponding to
+ a start pattern. for example in LaTeX, \section{Section Name} defines
+ the beginning of a section, but there is no command which
+ specifically ends a section. Thus a \section is assumed to end 1 line
+ _before_ another section starts.
+startskip A Pattern Which Defines The Beginning Of A "Skipped" Region.
+
+ For example, suppose we define a \itemize fold as follows: >
+ = '^\s*\\item',
+ = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+ = 0,
+ = -1
+<
+
+ This defines a fold which starts with a line beginning with an \item
+ and ending one line before a line beginning with an \item or
+ \end{enumerate} etc.
+
+ Then, as long as \item's are not nested things are fine. However,
+ once items begin to nest, the fold started by one \item can end
+ because of an \item in an \itemize environment within this \item.
+ i.e, the following can happen: >
+ \begin{itemize}
+ \item Some text <------- fold will start here
+ This item will contain a nested item
+ \begin{itemize} <----- fold will end here because next line contains \item...
+ \item Hello
+ \end{itemize} <----- ... instead of here.
+ \item Next item of the parent itemize
+ \end{itemize}
+<
+
+ Therefore, in order to completely define a folding item which allows
+ nesting, we need to also define a "skip" pattern. startskip and end
+ skip do that. Leave '' when there is no nesting.
+endskip the pattern which defines the end of the "skip" pattern for nested
+ folds.
+
+NOTE: Example 1
+ ---------
+ A syntax fold region for the latex section is defined with the following
+ arguments to AddSyntaxFoldItem: >
+ startpat = "\\section{"
+ endpat = "\\section{"
+ startoff = 0
+ endoff = -1
+ startskip = ''
+ endskip = ''
+< Note that the start and end patterns are thus the same and endoff has a
+ negative value to capture the effect of a section ending one line before
+ the next starts.
+
+
+NOTE: Example 2
+ ---------
+ A syntax fold region for the \itemize environment is: >
+ startpat = '^\s*\\item',
+ endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+ startoff = 0,
+ endoff = -1,
+ startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
+ endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
+< Note the use of startskip and endskip to allow nesting.
+
+
+
+================================================================================
+Multiple file LaTeX projects *ls_9* *ls_a_cr*
+ *latex-project*
+
+|ls_9_1| Latex-Suite project settings
+|ls_9_2| Specifying which file to compile
+
+
+ *latex-project-example* *ls_a_ef*
+Many LaTeX projects contain multiple source files which are \included from a
+master file. A typical example of this situation is a directory layout such as
+the following
+
+ >
+ thesis/
+ main.tex
+ abstract.tex
+ intro/
+ intro.tex
+ figures/
+ fig1.eps
+ fig2.eps
+ chapter1/
+ chap1.tex
+ figures/
+ fig1.eps
+ conclusion/
+ conclusion.tex
+ figures/
+
+
+In the above case, main.tex will typically look like
+
+ >
+ % file: main.tex
+ \documentclass{report}
+ \begin{document}
+
+ \input{abstract.tex}
+ \input{intro/intro.tex}
+ \input{chapter1/chap1.tex}
+ \input{conclusion/conclusion.tex}
+
+ \end{document}
+
+
+ *latex-master-file-specification* *ls_a_eg*
+In such situations, you will need to convey to Latex-Suite that main.tex is the
+main file which \inputs the other files. This is done by creating a file called
+main.tex.latexmain in the same directory in which main.tex resides. This file is
+called the _master file_ in this manual. See Tex_MainFileExpression [|ls_a_eh|]
+for an alternative way of specifying the master file.
+
+NOTE: Here main.tex.latexmain is (obviously) a different file from main.tex
+ itself. main.tex need not be renamed. This ofcourse restricts each
+ directory to have a single master file.
+
+
+Each time Latex-Suite opens a new LaTeX file, it will try to see if it is part
+of a multiple file project by searching upwards (to the root of the file-system)
+from the current file's directory to see if it finds a file of the form
+*.latexmain. If such a file is found, then it is considered that the current
+file is part of a larger project. The name of the LaTeX master file is inferred
+directly from the first part of the *.latexmain file as described in the example
+above.
+
+
+--------------------------------------------------------------------------------
+Latex-Suite project settings *ls_9_1* *ls_a_cs*
+ *latex-project-settings*
+
+If a master file [|ls_a_ct|] is found, then Latex-Suite :sources the file. Thus
+this file needs to contain valid Vim commands. This file is typically used to
+store project specific settings.
+
+Some typical per-project settings which are best put in the master file are
+Tex_ProjectSourceFiles [|ls_a_dt|]
+
+--------------------------------------------------------------------------------
+Specifying which file to compile *ls_9_2* *ls_a_ct*
+ *latex-master-file*
+
+In the example described previously [|ls_a_ef|], if you are editing
+intro/intro.tex and press \ll, then you still want Latex-Suite to compile
+main.tex, because intro/intro.tex is merely a fragment which is \input'ed into
+main.tex. If the master file is already specified using the *.latexmain
+convention described previously [|ls_a_ef|], then Latex-Suite will automatically
+compile the master file when you are editing any of its \input'ed fragments.
+Thus pressing \ll while editing intro/intro.tex will compile main.tex.
+
+ *Tex_MainFileExpression* *ls_a_eh*
+If you wish to use some different logic to specify the main file name, you can
+specify a custom expression via the Tex_MainFileExpression variable. This is a
+string containing a valid vim expression. In addition, you can use a variable
+modifier which is in the format used for |filename-modifiers|, for example,
+':p:h'. You should utilize this variable to modify the filename of the main
+file. >
+ let g:Tex_MainFileExpression = 'MainFile(modifier)'
+ function! MainFile(fmod)
+ if glob('*.latexmain') != ''
+ return fnamemodify(glob('*.latexmain'), a:fmod)
+ else
+ return ''
+ endif
+ endif
+
+
+================================================================================
+Latex-Suite Commands and Maps *ls_10* *ls_a_cu*
+ *latex-suite-commands-maps*
+
+|ls_10_1| Latex-Suite Maps
+|ls_10_2| Latex Suite Commands
+
+
+This section describes the maps and commands used in Latex-Suite. It also
+describes a way to change the map sequences according to your preference.
+
+
+--------------------------------------------------------------------------------
+Latex-Suite Maps *ls_10_1* *ls_a_cv*
+ *latex-suite-maps*
+
+ *remapping-latex-suite-keys* *ls_a_ei*
+Most of the mappings used in Latex-Suite can be mapped to a different key
+combination to suit your particular needs. An example best explains the
+procedure for doing this. Suppose you want to remap the <C-j> key which
+Latex-Suite (actually imaps.vim) uses to jump to the next placeholder. To do
+this, you first need to find out which <Plug> mapping <C-j> is derived from. You
+will need to look at the relevant section of this manual to do this. For
+example, the section IMAP mappings [|ls_a_cw|] has the information that the
+<C-j> key is derived from <Plug>IMAP_JumpForward. Therefore to remap the <C-j>
+key to say <C-space>, you will need to put a statement like the following in
+your ~/.vimrc. >
+ imap <C-space> <Plug>IMAP_JumpForward
+
+
+NOTE: To change the IMAP mappings which affect jumping between placeholders, the
+ map statement above has to be placed in your ~/.vimrc. For other mappings
+ you can place the map statement in your $VIM/ftplugin/tex.vim file. The
+ reason for this is that the <C-j> maps are created in plugin/imaps.vim,
+ which is sourced as soon as Vim starts before sourcing any ftplugin files.
+
+
+
+
+IMAP mappings *ls_10_1_1* *ls_a_cw*
+ *customize-imap-maps*
+
+These mappings are utilized for jumping between placeholders as described here
+[|ls_a_eD|]. See the parent section [|ls_a_cv|] to find out how to use this
+information to change the default maps.
+
+ *Plug_IMAP_JumpForward* *ls_a_ej*
+ *Plug_IMAP_JumpBack* *ls_a_ek*
+ *Plug_IMAP_DeleteAndJumpForward* *ls_a_el*
+ *Plug_IMAP_DeleteAndJumBack* *ls_a_em*
+Plug map Default Key~
+<Plug>IMAP_JumpForward <C-j>
+<Plug>IMAP_JumpBack (none)
+<Plug>IMAP_DeleteAndJumpForward (none)
+<Plug>IMAP_DeleteAndJumpBack (none)
+
+<Plug>IMAP_JumpForward takes you to the location of the next place-holder
+[|ls_a_eD|].
+
+<Plug>IMAP_JumpBack takes you to the previous place-holder [|ls_a_eD|].
+
+<Plug>IMAP_DeleteAndJumpForward deletes the presently selected place-holder and
+jumps to the next place-holder irrespective of whether the present placeholder
+is empty or not and ignoring the value of place-holder settings like
+g:Imap_DeleteEmptyPlaceHolders [|ls_a_cW|] and g:Imap_StickyPlaceHolders
+[|ls_a_cX|]
+
+<Plug>IMAP_DeleteAndJumpBack deletes the presently selected place-holder and
+jumps to the previous place-holder irrespective of whether the present
+placeholder is empty or not and ignoring the value of place-holder settings like
+g:Imap_DeleteEmptyPlaceHolders [|ls_a_cW|] and g:Imap_StickyPlaceHolders
+[|ls_a_cX|]
+
+
+Alt-Key mappings *ls_10_1_2* *ls_a_cx*
+ *customize-alt-key-maps*
+
+These mappings are are described in the section Alt key macros [|ls_a_bA|]. See
+the parent section [|ls_a_ei|] to see how to use the following information to
+remap keys.
+
+ *Plug_Tex_MathBF* *ls_a_en*
+ *Plug_Tex_MathCal* *ls_a_eo*
+ *Plug_Tex_LeftRight* *ls_a_ep*
+ *Plug_Tex_InsertItem* *ls_a_eq*
+Plug Mapping Default Key~
+<Plug>Tex_MathBF <Alt-B>
+<Plug>Tex_MathCal <Alt-C>
+<Plug>Tex_LeftRight <Alt-L>
+<Plug>Tex_InsertItem <Alt-I>
+
+--------------------------------------------------------------------------------
+Latex Suite Commands *ls_10_2* *ls_a_cy*
+ *latex-suite-commands*
+
+
+
+:TMacro [{macro}] *ls_10_2_1* *ls_a_cz* *TMacro*
+
+When used without any arguments lists all available macros defined in runtime
+ftplugin/latex-suite/macros/ directories and prompts you to choose one of them.
+With one argument |:read| this macro under cursor position. With more than one
+argument it will not work :) In Vim >= 6.2 works completion of names of macros
+(see 'wildmenu', 'wildmode' for more about command-line completion).
+
+
+:TMacroEdit [{macro}] *ls_10_2_2* *ls_a_cA*
+ *TMacroEdit*
+
+Splits window for editing {macro}. When used without any arguments lists all
+available macros defined in runtime ftplugin/latex-suite/macros/ directories and
+prompt you to choose one of them. When you try to edit {macro} not from local
+directory Latex-Suite will copy it to your local directory with suffix "-local".
+If local copy already exists Latex-Suite prompt for overwriting it. In Vim >=
+6.2 works completion of names of macros (see 'wildmenu', 'wildmode' for more
+about command-line completion).
+
+
+:TMacroNew *ls_10_2_3* *ls_a_cB*
+ *TMacroNew*
+
+Splits window to write new macro. Directory in new buffer is locally changed to
+Latex-Suite/macros/.
+
+
+:TMacroDelete [{macro}] *ls_10_2_4* *ls_a_cC*
+ *TMacroDelete*
+
+Delets {macro} from your local ftplugin/latex-suite/macros/ directory. When used
+without any arguments lists all available macros defined in Latex-Suite/macros/
+directory and prompt you to choose one of them. When you choose to delete
+{macro} which is not in your local directory Latex-Suite will refuse to delete
+it. In Vim >= 6.2 works completion of names of macros (see 'wildmenu',
+'wildmode' for more about command-line completion)
+
+
+:TPackage [{package, ...}] *ls_10_2_5* *ls_a_cD*
+ *TPackage*
+
+When used without any arguments lists name of the packages for which support is
+available. If you are using Vim GUI and have Tex_Menus set to 1, then it will
+list all files found in the $VIM/ftplugin/latex-suite/packages directory.
+Otherwise, Latex-Suite will list files found in the
+$VIM/ftplugin/latex-suite/dictionaries directory. Choosing a file from the list
+will insert a >
+ \usepackage[<++>]{<packname>}
+line into the buffer at the current cursor location. For Vim 6.2 and above, you
+can use command-line completion to choose a package file. You can also call
+TPackage with one or more package names separated with spaces in which case,
+Latex-Suite will insert \usepackage lines for each of them in turn.
+
+After inserting the \usepackage line(s), Latex-Suite will support it (them) in
+various ways as described in the section Actions taken for supported packages
+[|ls_a_bL|].
+
+
+:TPackageUpdate *ls_10_2_6* *ls_a_cE*
+ *TPackageUpdate*
+
+This command `reads' name of package under cursor and turns on possible support.
+
+
+:TPackageUpdateAll *ls_10_2_7* *ls_a_cF*
+ *TPackageUpdateAll*
+
+After issuing this command latexSuite scans the file in looking for not declared
+packages, removing not needed entries from Packages menu and turning off not
+necessary packages' dictionaries.
+
+
+:TTemplate [{template}] *ls_10_2_8* *ls_a_cG*
+ *TTemplate*
+
+When used without any arguments lists all available templates from
+latex-suite/templates/ directory and prompts to choose one of them. With one
+argument :0|read| {template} file. With more than one argument it will not work
+:) In Vim >= 6.2 works completion of names of macros (see 'wildmenu', 'wildmode'
+for more about command-line completion)
+
+
+:TSection [{argument}] *ls_10_2_9* *ls_a_cH*
+ *TSection*
+
+Used without any arguments inserts last section type (|latex-sectioning|).
+Accepts arguments: n> inserts section name in <n> logical level. Levels are:
+0 part
+1 chapter
+2 section
+3 subsection
+4 subsubsection
+5 paragraph
+6 subparagraph
+
+
++<n> inserts section name <n> logical levels above the last used comand
+-<n> inserts section name <n> logical levels below the last used comand
++ inserts section name one logical level below the last used command (equal
+ to +1).
+++ inserts section name two logical levels below the last used command (equal
+ to +2).
+- inserts section name one logical level over the last used command (equal
+ to -1).
+-- inserts section name two logical levels over the last used command (equal
+ to -2).
+
+
+
+Command accepts also latexSuite mappings (|latex-macros|) without preceding S
+and in lowercase: >
+ :TSection pa
+will result in \part{}. It is possible to use full names of sections: :TSection
+part
+
+
+:TSectionAdvanced *ls_10_2_10* *ls_a_cI*
+ *TSectionAdvanced*
+
+Accepts the same arguments as |TSection| but leads to a couple of questions
+(whether you want to include the section in the table of contents, whether there
+is a shorter name for the table of contents) and then creates a more intelligent
+template.
+
+
+:TLook *ls_10_2_11* *ls_a_cJ* *TLook*
+
+Accepts one argument. Will look through .tex files in directory of edited file
+for argument. It can be regexp. You don't have to enclose argument in "". <cr>
+takes you to location. Other keys work as described in |latex-viewer|. Note:
+TLook uses :grep command and is using 'grepprg'. Its regular expressions can be
+different from those of Vim.
+
+
+:TLookBib *ls_10_2_12* *ls_a_cK*
+ *TLookBib*
+
+Accepts one argument. Will look through .bib files in directory of edited file
+for argument. It can be regexp. You don't have to enclose argument in "". <cr>
+takes you to location. Other keys work as described in |latex-viewer|.
+
+NOTE: TLookBib uses :grep command and is using 'grepprg'. Its regular
+ expressions can be different from those of Vim.
+
+
+
+
+:TLookAll *ls_10_2_13* *ls_a_cL*
+ *TLookAll*
+
+Accepts one argument. Will look through all files in directory of edited file
+for argument. It can be regexp. You don't have to enclose argument in "". <cr>
+takes you to location. Other keys work as described in |latex-viewer|. Note:
+TLook uses :grep command and is using 'grepprg'. Its regular expressions can be
+different from those of Vim.
+
+
+:TPartComp *ls_10_2_14* *ls_a_cM*
+ *TPartComp*
+
+No argument allowed but accepts range in all formats. Define fragment of
+interest with :'a,'b, :/a/,/b/, :'<,'> or :20,30. All other rules of compilation
+apply.
+
+
+:TPartView *ls_10_2_15* *ls_a_cN*
+ *TPartView*
+
+Show last compiled fragment. All rules of viewing apply but |latex-searching|.
+
+
+:Tshortcuts [{arg}] *ls_10_2_16* *ls_a_cO*
+ *Tshortcuts*
+
+Show shortcuts in terminal (not using menu). Without {arg} you will see simple
+menu prompting for one of them. Possible arguments:
+g General shortcuts
+e Environment shortcuts
+f Font shortcuts
+s Section shortcuts
+m Math shortcuts
+a All shortcuts
+
+================================================================================
+Customizing Latex-Suite *ls_11* *ls_a_cP*
+ *customizing-latex-suite*
+
+|ls_11_1| General Settings
+|ls_11_2| Place-Holder Customization
+|ls_11_3| Macro Customization
+|ls_11_4| Smart Key Customization
+|ls_11_5| Latex Completion Customization
+|ls_11_6| Compiler Customization
+|ls_11_7| Viewer Customization
+|ls_11_8| Menu Customization
+|ls_11_9| Folding Customization
+|ls_11_10| Package Handling Customization
+
+
+Customizing Latex-Suite is done by defining certain global variables in
+$VIM/ftplugin/tex.vim, where $VIM corresponds to ~/.vim for *nix machines and
+~/vimfiles for windows machines. This file is not part of the Latex-Suite
+distribution. You will need to create this file yourself (or modify it if it
+exists) if you need to change any default settings. Since this file is not
+included as part of the Latex-Suite distribution, it will not be over-written in
+subsequent updates.
+
+The default settings in Latex-Suite are defined in
+$VIM/ftplugin/latex-suite/texrc. Please take a look at this file if you find
+this documentation incomplete or confusing. That file is also well documented.
+
+This chapter describes the various settings which effect Latex-Suite and their
+default values. The settings are broken up into sections according to the
+behavior which they influence.
+
+
+--------------------------------------------------------------------------------
+General Settings *ls_11_1* *ls_a_cQ*
+ *ls-general-purpose-settings*
+
+
+
+Tex_Debug *ls_11_1_1* *ls_a_cR*
+ *Tex_Debug*
+
+Type boolean
+Default Value 0
+
+If set to 1, then Latex-Suite will create certain global debug statements which
+can be printed by doing >
+ :call Tex_PrintDebug()
+
+
+
+Tex_UsePython *ls_11_1_2* *ls_a_cS*
+ *Tex_UsePython*
+
+Type boolean
+Default Value 1
+
+If Latex-Suite detects that your vim is python enabled (using has('python')),
+then it tries to use python in certain places to speed things up. If this
+misbehaves, you can set this to zero, in which case, Latex-Suite will use
+vimscript to accomplish the same.
+
+--------------------------------------------------------------------------------
+Place-Holder Customization *ls_11_2* *ls_a_cT*
+ *customizing-place-holders*
+
+Latex-Suite uses place-holders [|ls_a_eD|] to minimize using the movement keys
+while typing. The following settings affect how place-holders are used.
+
+NOTE: These setting need to be set in your ~/.vimrc, not $VIM/ftplugin/tex.vim
+ because these settings affect the behavior of imaps.vim, which is a global
+ plugin, not a file-type plugin.
+
+
+
+
+g:Imap_UsePlaceHolders *ls_11_2_1* *ls_a_cU*
+ *Imap_UsePlaceHolders*
+
+
+Type Boolean
+Default Value 1
+
+Setting this to zero completely disables using place-holders.
+
+
+g:Imap_PlaceHolderStart & g:Imap_PlaceHolderEnd *ls_11_2_2* *ls_a_cV*
+ *Imap_PlaceHolderStart*
+
+ *Imap_PlaceHolderEnd* *ls_a_er*
+Setting Type Value~
+Imap_PlaceHolderStart String '<+'
+Imap_PlaceHolderEnd String '+>'
+
+These settings affect the strings displayed at the beginning and end of the
+place-holder string. Set these strings to a value different than a commonly
+occurring sequence of characters.
+
+NOTE: TIP
+ ---
+ If you use the latin1 encoding and do not type in french, then you can set
+ these strings to the \xab and \xbb characters (the french quotation
+ marks).
+
+
+
+
+g:Imap_DeleteEmptyPlaceHolders *ls_11_2_3* *ls_a_cW*
+ *Imap_DeleteEmptyPlaceHolders*
+
+
+Type Boolean
+Default Value 1
+
+When set to one, non-descriptive or empty place-holders are deleted on pressing
+<Ctrl-J>.
+
+
+g:Imap_StickyPlaceHolders *ls_11_2_4* *ls_a_cX*
+ *Imap_StickyPlaceHolders*
+
+
+Type Boolean
+Default Value 1
+
+When set to 1, in visual mode, <Ctrl-J> takes you to the next placeholder
+without deleting the current placeholder.
+
+--------------------------------------------------------------------------------
+Macro Customization *ls_11_3* *ls_a_cY*
+ *customizing-macros*
+
+
+
+Tex_Env_name *ls_11_3_1* *ls_a_cZ*
+ *Tex_Env_name*
+
+If you wish to wish to expand certain environments differently from the way
+Latex-Suite does it, you can define custom expansions using global variables of
+the form Tex_Env_{name} where name corresponds to the environment.
+
+For example, if you press <F5> after typing theorem, Latex-Suite will by default
+expand it to >
+ \begin{theorem}
+ \label{<++>}<++>
+ \end{theorem}<++>
+However, if you wish change this to >
+ \begin{theorem}
+ <++>
+ \end{theorem}<++>
+then define the following variable >
+ let g:Tex_Env_theorem = "\\begin{theorem}\<CR><++>\<CR>\\end{theorem}"
+<
+
+If the expansion uses special keys such as carriage return etc, then use
+double-quotes and use the "\<key>" notation for special keys. Backslashes have
+to be doubled.
+
+You could even use strings returned by functions as the expansion by using the
+IMAP_PutTextWithMovement() [|ls_a_ea|] function.
+
+If the name of the environment contains special characters (for example, the
+eqnarray* environment), then use the following form: >
+ let g:Tex_Env_{'eqnarray*'} =
+ \ "\\begin{eqnarray*}\<CR><++> &=& <++>\<CR>\\end{eqnarray*}<++>"
+This will make pressing <F5> after eqnarray* expand to >
+ \begin{eqnarray*}
+ <++> &=& <++>
+ \end{eqnarray*}<++>
+
+
+
+Tex_Com_name *ls_11_3_2* *ls_a_da*
+ *Tex_Com_name*
+
+If you wish to define new expansions for fast command insertion as described
+here [|ls_a_bo|], or redefine expansions from the default values in Latex-Suite,
+you will need to define variables of the form g:Tex_Com_{name} where name is a
+command name. For example, with the setting >
+ let g:Tex_Com_frac = "\\frac{<++>}{<++>}<++>"
+pressing <F7> after typing frac will change it to \frac{<++>}{<++>}<++>
+
+See Tex_Env_name [|ls_a_cZ|] for additional details on how to create this
+setting in various special circumstances.
+
+
+Enabling / disabling macros *ls_11_3_3* *ls_a_db*
+ *macro-enabling*
+
+The following variables disable various parts of the macro functionality of
+Latex-Suite. See the links to the relevant sections to see what functionality
+setting each of the variables to zero will take away.
+
+ *Tex_EnvironmentMaps* *ls_a_es*
+ *Tex_EnvironmentMenus* *ls_a_et*
+ *Tex_FontMaps* *ls_a_eu*
+ *Tex_FontMenus* *ls_a_ev*
+ *Tex_SectionMaps* *ls_a_ew*
+ *Tex_SectionMenus* *ls_a_ex*
+Setting Link to relevant section Default Value~
+g:Tex_EnvironmentMaps Environment Mappings [|ls_a_bf|] 1
+g:Tex_EnvironmentMenus 1
+g:Tex_FontMaps Font Mappings [|ls_a_bs|] 1
+g:Tex_FontMenus 1
+g:Tex_SectionMaps Section Mappings [|ls_a_bt|] 1
+g:Tex_SectionMenus 1
+
+
+g:Tex_UseMenuWizard *ls_11_3_4* *ls_a_dc*
+ *Tex_UseMenuWizard*
+
+
+Type Boolean
+Default Value 0
+
+If this variable is set to 1, then when an environment is chosen from the menu
+then for selected environments, Latex-Suite asks a series of questions on the
+command line and inserts a template with the corresponding fields already filled
+in. Setting this to zero will insert a template with place-holders [|ls_a_eD|]
+marking off the places where fields need to be filled.
+
+
+g:Imap_FreezeImap *ls_11_3_5* *ls_a_dd*
+ *Imap_FreezeImap*
+
+Type boolean
+Default Value 0
+
+This option when set to 1, temporarily freezes Latex-Suite's macro expansion. It
+might be useful when you are using some other keymap which is causing excessive
+macro expansion. Use a buffer-local variable of the same name if you wish to
+affect just the present buffer.
+
+
+g:Tex_CatchVisMapErrors *ls_11_3_6* *ls_a_de*
+ *Tex_CatchVisMapErrors*
+
+
+Type Boolean
+Default Value 1
+
+With so many visual maps, its helpful to have a way of catching typing errors
+made in visual mode. What this does is to prompt you to correct your visual mode
+mapping if you start out with and then type some illegal keys. It basically maps
+just the g:Tex_Leader character to a function.
+
+
+g:Tex_Diacritics *ls_11_3_7* *ls_a_df*
+ *Tex_Diacritics*
+
+
+Type Boolean
+Default Value 0
+
+Whether or not you want to use diacritics [|ls_a_bw|].
+
+
+g:Tex_Leader *ls_11_3_8* *ls_a_dg*
+ *Tex_Leader*
+
+
+Type String
+Default Value '`'
+
+The mappings in Latex-Suite are by default prefixed with the back-tick
+character. For example, `/ inserts \frac{<++>}{<++>}<++> etc. You can change the
+prefix with the following setting. ',', '/', '`' are preferred values. '' or '\'
+will lead to a _lot_ of trouble.
+
+g:Tex_Leader is also used for visual mode mappings for fonts.
+
+
+g:Tex_Leader2 *ls_11_3_9* *ls_a_dh*
+ *Tex_Leader2*
+
+
+Type String
+Default Value ','
+
+In order to avoid clashes between the large number of visual mode macros
+provided, the visual mode macros for environments [|ls_a_bm|] and sections start
+with a character different from g:Tex_Leader.
+
+
+g:Tex_PromptedEnvironments *ls_11_3_10* *ls_a_di*
+ *Tex_PromptedEnvironments*
+
+
+Type String
+Default Value 'eqnarray*,eqnarray,equation,equation*,\[,$$,align,align*'
+
+This string represents a comma separated list of fields corresponding to
+environments. Pressing <F5> in insert-mode in the body of the document asks you
+to choose from one of these environments to insert.
+
+Leaving this string empty will leave the <F5> key unmapped
+
+
+g:Tex_HotKeyMappings *ls_11_3_11* *ls_a_dj*
+ *Tex_HotKeyMappings*
+
+
+Type String
+Default Value 'eqnarray*,eqnarray,bmatrix'
+
+This string represents a comma separated list of environments which are mapped
+to <Shift-F-1> through <Shift-F-4>. For example, pressing <Shift-F-2> with this
+setting inserts the eqnarray environment.
+
+Leaving this string empty will leave <Shift-F-1> through <Shift-F-4> unmapped.
+
+NOTE: Only the first four fields of this list are used. The rest are silently
+ ignored.
+
+
+
+
+g:Tex_PromptedCommands *ls_11_3_12* *ls_a_dk*
+ *Tex_PromptedCommands*
+
+
+Type String
+Default Value 'footnote,cite,pageref,label'
+
+This string represents a comma separated list of LaTeX commands which
+Latex-Suite uses for the <F7> and <S-F7> maps as described here [|ls_a_bo|].
+
+Leaving this string empty will leave the <F7> key unmapped.
+
+
+Tex_ItemStyle_environment *ls_11_3_13* *ls_a_dl*
+ *Tex_ItemStyle_environment*
+
+This setting affects the style which Latex-Suite uses to insert an \item when
+<Alt-I> is pressed as described here [|ls_a_bE|]. By default Latex-Suite defines
+styles for the following environments:
+
+Environment Style~
+itemize \item
+enumerate \item
+theindex \item
+thebibliography \item[<+biblabel+>]{<+bibkey+>} <++>
+description \item[<+label+>] <++>
+
+Each style is defined by a variable of the form g:Tex_ItemStyle_{envname} where
+envname is the name of the environment for which the style is defined. For
+example, by default >
+ g:Tex_ItemStyle_description = '\item[<+label+>] <++>'
+Redefining the style for a particular environment or defining a style for an
+entirely new environment is simply a matter of setting the value of a variable
+of the corresponding name.
+
+--------------------------------------------------------------------------------
+Smart Key Customization *ls_11_4* *ls_a_dm*
+ *customizing-smart-keys*
+
+These settings affect the smart key functionality as described here [|ls_a_bz|].
+
+
+
+g:Tex_SmartKeyBS *ls_11_4_1* *ls_a_dn*
+ *Tex_SmartKeyBS*
+
+
+Type Boolean
+Default Value 1
+
+Whether or not <Backspace> deletes diacritics.
+
+
+g:Tex_SmartKeyQuote *ls_11_4_2* *ls_a_do*
+ *Tex_SmartKeyQuote*
+
+
+Type Boolean
+Default Value 1
+
+Whether or not the smart quotes [|ls_a_bz|] functionality is available.
+
+If enabled, the quote characters can be customized by setting the following
+variables:
+
+Setting Value~
+g:Tex_SmartQuoteOpen "``"
+g:Tex_SmartQuoteClose "''"
+
+Non-English users will want to change these settings to their locale. These
+global variables will be ignored if there are buffer-local variables (with the
+same name), which may be set in the language specific package files, such as
+$VIM/ftplugin/latex-suite/packages/german.
+
+--------------------------------------------------------------------------------
+Latex Completion Customization *ls_11_5* *ls_a_dp*
+ *customizing-latex-completion*
+
+The following settings affect the completion [|ls_a_bR|] functionality in
+Latex-Suite.
+
+
+
+Window size settings *ls_11_5_1* *ls_a_dq*
+ *completion-window-preferences*
+
+These three settings affect the aesthetics of the completion functionality.
+
+ *Tex_ViewerCwindowHeight* *ls_a_ey*
+ *Tex_ViewerPreviewHeight* *ls_a_ez*
+ *Tex_ExplorerHeight* *ls_a_eA*
+ *Tex_ImageDir* *ls_a_eB*
+Setting Explanation Default Value~
+g:Tex_ViewerCwindowHeight The height of the cwindow which 5
+ displays the list of \labels
+ etc.
+g:Tex_ViewerPreviewHeight The height of the preview window 10
+ which shows the context of a
+ \label etc.
+g:Tex_ExplorerHeight The height of the explorer 10
+ window which lists the files
+ from which to choose an image
+ file.
+g:Tex_ImageDir The directory to scan for images ''
+
+
+g:Tex_BIBINPUTS *ls_11_5_2* *ls_a_dr*
+ *Tex_BIBINPUTS*
+
+
+Type string
+Default Value ''
+
+This string describes the directories which are scanned while trying to search
+for .bib and .bbl files. See the cite completion section [|ls_a_bU|] for more
+details.
+
+This string should be set in the syntax accepted by Vim's native 'path' setting.
+Do not include the present directory '.'. While searching for bibliography
+files, the present directory will be prepended to this variable.
+
+
+Tex_UseSimpleLabelSearch *ls_11_5_3* *ls_a_ds*
+ *Tex_UseSimpleLabelSearch*
+
+When set to 1, Latex-Suite searches for \labels in all .tex files in the
+directory containing the file being edited when <F9> is pressed. See \ref
+completion [|ls_a_bT|] for details.
+
+
+g:Tex_ProjectSourceFiles *ls_11_5_4* *ls_a_dt*
+ *Tex_ProjectSourceFiles*
+
+
+Type String
+Default Value ''
+
+This setting is meant to be initialized on a per-project basis using the
+Latex-Suite master file [|ls_a_ct|] as described in Latex-Suite Project
+[|ls_a_cr|] section. It is a list of source files which are used in the project.
+If defined, then instead of using the logic described in
+Tex_UseSimpleLabelSearch [|ls_a_ds|] to search for files in which to search for
+\labels, we simply search for \labels in this list. This significantly reduces
+the time it takes to generate the list of possible completions for large
+projects.
+
+The list is specified as a whitespace separated list of filenames relative to
+the location of the main file.
+
+
+g:Tex_RememberCiteSearch *ls_11_5_5* *ls_a_du*
+ *Tex_RememberCiteSearch*
+
+
+Type Boolean
+Default Value 0
+
+When this variable is non-zero, then Latex-Suite will try to remember results
+from the \cite completion as described in this section [|ls_a_bV|].
+
+--------------------------------------------------------------------------------
+Compiler Customization *ls_11_6* *ls_a_dv*
+ *customizing-compiling*
+
+The following settings affect Latex-Suite's compilation functionality
+
+
+
+g:Tex_DefaultTargetFormat *ls_11_6_1* *ls_a_dw*
+ *Tex_DefaultTargetFormat*
+
+
+Type String
+Default Value dvi for windows/*nix and pdf for mac
+
+Use this setting to choose the default target format. For example, setting this
+to pdf makes Latex-Suite compile a pdf file when you press \ll and fire up the
+pdf viewer on pressing \lv. Make sure that a rules for compiling and viewing
+have been defined for this target format as described here [|ls_a_dx|] and here
+[|ls_a_dF|].
+
+
+g:Tex_CompileRule_<format> *ls_11_6_2* *ls_a_dx*
+ *Tex_CompileRule_format*
+
+Here <format> refers to the target format for which this rule is defined.
+Latex-Suite supports compiling into dvi, ps and pdf by default. All these rules
+are strings defined by default as follows:
+
+
+g:Tex_CompileRule_dvi 'latex -interaction=nonstopmode $*'
+g:Tex_CompileRule_ps 'ps2pdf $*'
+g:Tex_CompileRule_pdf 'pdflatex -interaction=nonstopmode $*'
+
+If you desire forward and inverse searching via Latex-Suite, you will need to
+change g:Tex_CompileRule_dvi to include -src-specials. However, this has been
+known to cause problems with the output file. Therefore, use this with care.
+
+
+g:Tex_FormatDependency_<format> *ls_11_6_3* *ls_a_dy*
+
+Type string
+Default Value ''
+
+By default, there are no format dependencies defined. Each definition is of the
+form above where <format> is a string such as 'dvi' etc.
+
+The value of each string is a comma separated string such as 'dvi,ps'. See the
+Compiler dependency [|ls_a_ca|] section to see how to use/specify this setting
+
+
+g:Tex_MultipleCompileFormats *ls_11_6_4* *ls_a_dz*
+ *Tex_MultipleCompileFormats*
+
+Type string
+Default Value 'dvi'
+
+This is a comma separated string of formats for which the compiler needs to be
+called multiple times in order to get cross-references, citations etc right. See
+the Compiling multiple times [|ls_a_cb|] section for details.
+
+
+g:Tex_IgnoredWarnings *ls_11_6_5* *ls_a_dA*
+ *Tex_IgnoredWarnings*
+
+
+Type String
+Default Value a new-line separated list of patterns as described below
+
+The default value of this setting is >
+ \"Underfull\n".
+ \"Overfull\n".
+ \"specifier changed to\n".
+ \"You have requested\n".
+ \"Missing number, treated as zero.\n".
+ \"There were undefined references\n"
+ \"Citation %.%# undefined"
+This setting defines a set of patterns which will be filtered out when
+displaying the output from the latex compiler. This is to aid in filtering out
+very common warnings/errors.
+
+NOTE: Remember to check the value of g:Tex_IgnoreLevel [|ls_a_dB|] when you
+ change this setting. For example, if you append a new pattern which you
+ would like to ignore by default, increase the value of g:Tex_IgnoreLevel.
+
+
+
+
+g:Tex_IgnoreLevel *ls_11_6_6* *ls_a_dB*
+ *Tex_IgnoreLevel*
+
+
+Type Integer
+Default Value 7
+
+This setting defines a "filter level" or an "ignore level". A value of 7 for
+instance means that any warning/error matching with any of the first 7 fields of
+g:Tex_IgnoredWarnings [|ls_a_dA|] will be ignored. Setting this value to zero
+will mean that no error/warning is ignored. However, even with a value of zero,
+Latex-Suite will filter out most of the text which a LaTeX compiler typically
+produces. Use >
+ TCLevel strict
+from within Vim in order to see all the lines from the compiler's output.
+
+
+Tex_UseMakefile *ls_11_6_7* *ls_a_dC*
+ *Tex_UseMakefile*
+
+Type boolean
+Default Value 1
+
+When set to 1, then if a makefile or Makefile is present in the current
+directory, then Latex-Suite sets the makeprg option to just "make <target>",
+where <target> is the target format chosen using the TCTarget or TTarget
+commands.
+
+When set to 0, then Latex-Suite will set the makeprg setting to whatever is
+defined by the g:Tex_CompileRule_target [|ls_a_dx|] setting.
+
+
+g:Tex_GotoError *ls_11_6_8* *ls_a_dD*
+ *Tex_GotoError*
+
+
+Type boolean
+Default Value 1
+
+If set to 1, then pressing \ll will take you to the location of the first
+warning/error, otherwise you will remain in the original location but the
+errors/warnings will be listed in the preview window.
+
+--------------------------------------------------------------------------------
+Viewer Customization *ls_11_7* *ls_a_dE*
+ *customizing-viewing*
+
+The following settings affect how Latex-Suite will display compiled files.
+
+
+
+g:Tex_ViewRule_<format> *ls_11_7_1* *ls_a_dF*
+ *Tex_ViewRule_format*
+
+Here <format> refers to a format such as dvi, ps, etc. This variable defines the
+program which will be called to display a file of that format.
+
+By default, Latex-Suite defines viewer programs for viewing DVI, PS and PDF
+formats as follows:
+
+ Windows Unix~
+g:Tex_ViewRule_dvi 'yap -1' 'xdvi'
+g:Tex_ViewRule_ps 'gsview32' 'ghostview'
+g:Tex_ViewRule_pdf 'AcroRd32' 'xpdf'
+
+For Macintosh systems, these strings are left empty by default. This lets the
+system pick the program for each format. If you define these variables for Mac,
+the system choice will be over-ridden.
+
+Latex-Suite appends file.format to the above settings while calling the external
+programs. For example, with >
+ let g:Tex_ViewRule_dvi = 'yap -1'
+yap is called as >
+ !start yap -1 file.dvi
+from within Vim. (The initial start is used on Windows platforms is to make yap
+start as a separate process.) If you find the way Latex-Suite constructs the
+command line too restrictive, you can use the Tex_ViewRuleComplete_format
+[|ls_a_dG|] setting for more complete control on how the command line is
+constructed while calling the external program for viewing.
+
+NOTE: For windows, you will need to set the $PATH variable to include the paths
+ to yap, AcroRd32, gsview32 and any other programs. See your system
+ documentation for how to do this.
+
+
+NOTE: Default Viewing Format
+ ----------------------
+ To change the default format for viewing files, set the
+ g:Tex_DefaultTargetFormat [|ls_a_dw|] variable.
+
+
+
+
+Tex_ViewRuleComplete_<format> *ls_11_7_2* *ls_a_dG*
+ *Tex_ViewRuleComplete_format*
+
+Here <format> refers to the extension of a output format such as dvi, html etc.
+
+Tex_ViewRuleComplete_format takes precedence over Tex_ViewRule_format if both
+are specified. By default, Latex-Suite does not define values for
+Tex_ViewRuleComplete_format for any format. Unlike in the case of
+Tex_ViewRule_format, Latex-Suite does not modify Tex_ViewRuleComplete_format at
+all in constructing the command line. The only modification is to substitute
+'$*' everywhere in the string with the name of the file being viewed (without
+the extension).
+
+NOTE: IMPORTANT
+ ---------
+ Make sure you make the process go into the background otherwise vim will
+ wait for the viewer to terminate before letting you edit the file again.
+
+ To make a process go into the background on a *nix platform, use a
+ trailing & in the setting. On Windows, use start at the beginning of the
+ setting. Example: Suppose you have a latex->html converter which converts
+ a file say foo.tex to a file foo/index.html. Then you would use: >
+ " On *nix platform
+ let g:Tex_ViewRuleComplete_html = 'MozillaFirebird $*/index.html &'
+ " On windows platform
+ let g:Tex_ViewRuleComplete_html = 'start MozillaFirebird $*/index.html'
+<
+
+
+
+--------------------------------------------------------------------------------
+Menu Customization *ls_11_8* *ls_a_dH*
+ *customizing-menus*
+
+In addition to using the variables defined in this section to affect the
+menu-layout permanently (i.e, the layout Latex-Suite will start with), you can
+also use the TeX-Suite > Configure Menu menu to dynamically configure the menu
+layout after Latex-Suite has started.
+
+
+
+g:Tex_Menus *ls_11_8_1* *ls_a_dI*
+ *Tex_Menus*
+
+
+Type Boolean
+Default Value 1
+
+If set to 0, Latex-Suite will suppress showing all menus. Useful if you mostly
+work in terminals.
+
+
+g:Tex_MainMenuLocation *ls_11_8_2* *ls_a_dJ*
+ *Tex_MainMenuLocation*
+
+
+Type number
+Default Value 80
+
+This setting decides the location of the first top-level Latex-Suite menu. You
+can for example shift all the menus created by Latex-Suite to the very end by
+setting this value to a large number like 990.
+
+
+g:Tex_MathMenus *ls_11_8_3* *ls_a_dK*
+ *Tex_MathMenus*
+
+
+Type Boolean
+Default Value 1
+
+The Tex-Math menu consists of hundreds of mathematical symbols used in LaTeX.
+This menu comprises about 75% of the menus.
+
+
+g:Tex_NestElementMenus *ls_11_8_4* *ls_a_dL*
+ *Tex_NestElementMenus*
+
+
+Type Boolean
+Default Value 1
+
+This setting controls the "compactness" of the menus. If set to 1, then the
+Font, Counter and Dimensioning menus are collected together in a single menu
+called Tex-Elements, otherwise, they will each get a separate menu.
+
+
+g:Tex_PackagesMenu *ls_11_8_5* *ls_a_dM*
+ *Tex_PackagesMenu*
+
+
+Type Boolean
+Default Value 1
+
+Setting this to zero will stop Latex-Suite from automatically creating the
+TeX-Suite > Packages > Supported menu at startup. You can still create the menu
+after startup by going to TeX-Suite > Configure Menu.
+
+
+g:Tex_NestPackagesMenu *ls_11_8_6* *ls_a_dN*
+ *Tex_NestPackagesMenu*
+
+
+Type String
+Default Value 'TeX-'
+
+This string is the prefix added to all the menus created by Latex-Suite. If you
+define this variable with a dot ('.') as the last character, then all the menus
+created by Latex-Suite will be nested under a single master menu. For example,
+set this to '&LaTeX-Suite.' to nest all menus under a menu called &LaTeX-Suite.
+
+
+g:Tex_UseUtfMenus *ls_11_8_7* *ls_a_dO*
+ *Tex_UseUtfMenus*
+
+
+Type Boolean
+Default Value 0
+
+This setting controls whether Latex-Suite uses utf-8 symbols to display some of
+the mathematical symbols in the TeX-Math menu. It is necessary for your
+system/GUI to support utf-8. Setting this to 1 has the side-effect of setting
+the 'encoding' option of Vim to 'utf-8'.
+
+--------------------------------------------------------------------------------
+Folding Customization *ls_11_9* *ls_a_dP*
+ *customizing-folding*
+
+The following settings control the folding [|ls_a_ci|] functionality of
+Latex-Suite.
+
+
+
+g:Tex_Folding *ls_11_9_1* *ls_a_dQ*
+ *Tex_Folding*
+
+
+Type Boolean
+Default Value 1
+
+Setting this to zero completely disables Latex-Suite's folding functionality.
+However, the TexFoldTextFunction() is still available in case you want to use
+another folding scheme but still want to continue using the fold text function.
+
+
+g:Tex_AutoFolding *ls_11_9_2* *ls_a_dR*
+ *Tex_AutoFolding*
+
+
+Type Boolean
+Default Value 1
+
+This setting controls whether Latex-Suite automatically creates manual folds for
+a file when it is opened. You can still use the \rf mapping to refresh/create
+folds even when this variable is set to zero.
+
+--------------------------------------------------------------------------------
+Package Handling Customization *ls_11_10* *ls_a_dS*
+ *customizing-packages*
+
+These settings affect the custom packages [|ls_a_bN|] functionality in
+Latex-Suite
+
+
+
+g:Tex_TEXINPUTS *ls_11_10_1* *ls_a_dT*
+ *Tex_TEXINPUTS*
+
+
+Type string
+Default Value ''
+
+This setting describes the directories scanned by Latex-Suite while searching
+for custom user packages as described in the custom packages [|ls_a_bN|]
+section. Do not include the present directory in this setting. The present
+directory is always scanned for custom packages.
+
+This string should be set in the syntax accepted by Vim's native 'path' setting.
+
+================================================================================
+Credits *ls_12* *ls_a_dU*
+ *latex-suite-credits*
+
+
+
+And finally, the credits:
+
+
+Artur R. Czechowski maintains the BSD package of Latex-Suite. Lots of valuable
+ feedback.
+Lubomir Host provided the diacritics and also helped in development.
+Alexander Wagner valuable suggestions during development.
+Luc Hermitte his variation of Stephen Riehm's bracketing system is used
+ in Latex-Suite.
+Gergely Kontra the clever little JumpFunc() in imaps.vim is due to him.
+ The implementation of the templates also borrows from
+ mu-template.vim by him.
+Dimitri Antoniou author of ltags and also provided the nice tip about
+ forward / reverse search on DVI documents.
+Stephen Riehm the extremely helpful bracketing system is from him.
+Alan Schmitt provided macros/folding elements. Continued feedback,
+ bug-reports/fixes.
+Hari Krishna Dara for ExecMap(), the clever little function which makes
+ typing visual mode mappings so much easier and error-free.
+Alan G Isac for the comprehensive BibT() function for entering bibtex
+ entries.
+Gontran Baerts for libList.vim
+Peter Heslin useful discussion and also a lot of bug fixes. the
+ %%fakesection in folding.vim.
+Zhang Lin-bo lots of very useful additions to folding. The code for
+ customizing the folding scheme is due to him.
+
+A large number of functions in Latex-Suite come from various other people. Some
+of those people might have been missed here. Each function should however have
+the author's name/e-mail above it. Thats the more authoritative place to check
+out who has done what.
+
+ *latex-suite-maintainer* *ls_a_eC*
+The current maintainer(s) of Latex-Suite is(are)
+
+
+Srinath Avadhanula <srinath@fastmail.fm>
+
+Mikolaj Machowski <mikmach@wp.pl>
+
+Benji Fisher <benji@member.AMS.org>
+
+================================================================================
+URLs used in this file
+
+*ls_u_1* : http://vim-latex.sourceforge.net
+*ls_u_2* : http://vim-latex.sourceforge.net/index.php?subject=download
+*ls_u_3* : http://www.cygwin.com
+*ls_u_4* : http://www.google.com/search?q=windows%20gnu%20grep
+
+================================================================================
+About this file
+
+This file was created automatically from its XML variant using db2vim. db2vim is
+a python script which understands a very limited subset of the Docbook XML 4.2
+DTD and outputs a plain text file in vim help format.
+
+db2vim can be obtained via anonymous CVS from sourceforge.net. Use
+
+cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
+
+Or you can visit the web-interface to sourceforge CVS at:
+http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
+
+The following modelines should nicely fold up this help manual.
+
+vim:ft=help:fdm=expr:nowrap
+vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
+vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','\ \ \ \ \ \ ','')
+================================================================================
diff --git a/.vim/doc/latexhelp.txt b/.vim/doc/latexhelp.txt
new file mode 100644
index 0000000..2782424
--- /dev/null
+++ b/.vim/doc/latexhelp.txt
@@ -0,0 +1,2430 @@
+*latexhelp.txt* For Vim version 6.0. Last change: 2001 Dec 20
+
+
+ LATEX HELP 1.6
+ translated (with minor changes) for vim
+ by Mikolaj Machowski
+
+This file documents LaTeX2e, a document preparation system. LaTeX2e is a
+macro package for TeX.
+
+ This is edition 1.6 of the LaTeX2e documentation, and is for the Texinfo
+that is distributed as part of Version 19 of GNU Emacs. It uses version
+2.134 or later of the texinfo.tex input file.
+
+ This is translated from LATEX.HLP v1.0a in the VMS Help Library. The
+pre-translation version was written by George D. Greenwade of Sam Houston
+State University.
+
+ The LaTeX 2.09 version was written by Stephen Gilmore <stg@dcs.ed.ac.uk>.
+
+ The LaTeX2e version was adapted from this by Torsten Martinsen
+<bullestock@dk-online.dk>.
+
+ Version for vim of this manual was written by Mikolaj Machowski
+<mikmach@wp.pl>
+
+ Copyright 1988,1994 Free Software Foundation, Inc. Copyright 1994-1996
+Torsten Martinsen. Copyright for `translation' for vim Mikolaj Machowski 2001.
+
+ Permission is granted to make and distribute verbatim copies of this manual
+provided the copyright notice and this permission notice are preserved on
+all copies.
+
+ Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled "Distribution" and "General Public
+License" may be included in a translation approved by the author instead of
+in the original English.
+
+==============================================================================
+*LaTeX* *latex*
+
+The LaTeX command typesets a file of text using the TeX program and the LaTeX
+Macro package for TeX. To be more specific, it processes an input file
+containing the text of a document with interspersed commands that describe how
+the text should be formatted.
+
+1. Commands |latex-commands|
+2. Counters |latex-counters|
+3. Cross References |latex-references|
+4. Definitions |latex-definitions|
+5. Document Classes |latex-classes|
+6. Layout |latex-layout|
+7. Environments |latex-environments|
+8. Footnotes |latex-footnotes|
+9. Lengths |latex-lengths|
+10. Letters |latex-letters|
+11. Line & Page Breaking |latex-breaking|
+12. Making Paragraphs |latex-paragraphs|
+13. Margin Notes |latex-margin-notes|
+14. Math Formulae |latex-math|
+15. Modes |latex-modes|
+16. Page Styles |latex-page-styles|
+17. Sectioning |latex-sectioning|
+18. Spaces & Boxes |latex-spaces-boxes|
+19. Special Characters |latex-special-char|
+20. Splitting the Input |latex-inputting|
+21. Starting & Ending |latex-start-end|
+22. Table of Contents |latex-toc|
+23. Terminal Input/Output |latex-terminal|
+24. Typefaces |latex-typefaces|
+25. Parameters |latex-parameters|
+
+==============================================================================
+1. Commands *latex-commands*
+
+A LaTeX command begins with the command name, which consists of a \ followed
+by either
+ (a) a string of letters or
+ (b) a single non-letter.
+
+Arguments contained in square brackets, [], are optional while arguments
+contained in braces, {}, are required.
+
+NOTE: LaTeX is case sensitive. Enter all commands in lower case unless
+explicitly directed to do otherwise.
+
+==============================================================================
+2. Counters *latex-counters*
+
+|\addtocounter| Add a quantity to a counter
+|\alph| Print value of a counter using letters
+|\arabic| Print value of a counter using numerals
+|\fnsymbol| Print value of a counter using symbols
+|\newcounter| Define a new counter
+|\refstepcounter| Add to counter, resetting subsidiary counters
+|\roman| Print value of a counter using roman numerals
+|\setcounter| Set the value of a counter
+|\stepcounter| Add to counter, resetting subsidiary counters
+|\usecounter| Use a specified counter in a list environment
+|\value| Use the value of a counter in an expression
+
+Everything LaTeX numbers for you has a counter associated with it. The name of
+the counter is the same as the name of the environment or command that
+produces the number, except with no |\\|. (|lc-enumi| - |lc-enumiv| are used
+for the nested |\enumerate| environment.) Below is a list of the counters
+used in LaTeX's standard document classes to control numbering.
+
+ |part| |paragraph| |figure| |enumi| |itemi|
+ |chapter| |subparagraph| |table| |enumii| |itemii|
+ |section| |page| |footnote| |enumiii| |itemiii|
+ |subsection| |equation| |mpfootnote| |enumiv| |itemiv|
+ |subsubsection|
+
+
+\addtocounter{counter}{value} *\addtocounter*
+ Increments the {counter} by the amount specified by the
+ {value} argument. The {value} argument can be negative.
+
+\alph{counter} *\alph* *\Alph*
+\Alph{counter}
+ This command causes the value of the counter to be printed in
+ alphabetic characters. |\alph| command uses lower case
+ alphabetic alphabetic characters, i.e., a, b, c... while the
+ |\Alph| command uses upper case alphabetic characters, i.e.,
+ A, B, C....
+
+\arabic{counter} *\arabic*
+ Causes the value of the {counter} to be printed in Arabic
+ numbers, i.e., 3.
+
+\fnsymbol{counter} *\fnsymbol*
+ Causes the value of the {counter} to be printed in a specific
+ sequence of nine symbols that can be used for numbering
+ footnotes.
+ Note: counter must have a value between 1 and 9 inclusive.
+
+\newcounter{foo}[counter] *\newcounter*
+ Defines a new counter named {foo}. The counter is initialized
+ to zero. The optional argument [counter] causes the counter
+ {foo} to be reset whenever the counter named in the optional
+ argument is incremented.
+
+\refstepcounter{counter} *\refstepcounter*
+ Command works like |\stepcounter|, except it also defines the
+ current |\ref| value to be the result of \thecounter.
+
+\roman{counter} *\roman* *\Roman*
+\Roman{counter}
+ Causes the value of the {counter} to be printed in Roman
+ numerals. The |\roman| command uses lower case Roman numerals,
+ i.e., i, ii, iii..., while the |\Roman| command uses upper case
+ Roman numerals, i.e., I, II, III....
+
+\stepcounter{counter} *\stepcounter*
+ Adds one to the {counter} and resets all subsidiary counters.
+
+\setcounter{counter}{value} *\setcounter*
+ Sets the value of the {counter} to that specified by the
+ {value} argument.
+
+\usecounter{counter} *\usecounter*
+ Command is used in the second argument of the |list|
+ environment to allow the {counter} specified to be used to
+ number the list items.
+
+\value{counter} *\value*
+ Produces the value of the {counter} named in the mandatory
+ argument. It can be used where LaTeX expects an integer or
+ number, such as the second argument of a |\setcounter| or
+ |\addtocounter| command, or in: >
+ \hspace{\value{foo}\parindent}
+< It is useful for doing arithmetic with counters.
+
+==============================================================================
+3. Cross References *latex-references*
+
+One reason for numbering things like figures and equations is to refer the
+reader to them, as in "See Figure 3 for more details."
+
+|\label| Assign a symbolic name to a piece of text
+|\pageref| Refer to a page number
+|\ref| Refer to a section, figure or similar
+
+
+\label{key} *\label*
+ Command appearing in ordinary text assigns to the {key} the
+ number of the current sectional unit; one appearing inside a
+ numbered environment assigns that number to the {key}.
+
+ A {key} can consist of any sequence of letters, digits, or
+ punctuation characters. Upper and lowercase letters are
+ different.
+
+ To avoid accidentally creating two labels with the same name,
+ it is common to use labels consisting of a prefix and a suffix
+ separated by a colon. The prefixes conventionally used are
+ * 'cha' for chapters
+ * 'sec' for lower-level sectioning commands
+ * 'fig' for figures
+ * 'tab' for tables
+ * 'eq' for equations
+ Thus, a label for a figure would look like: >
+ \label{fig:bandersnatch}
+
+\pageref{key} *\pageref*
+ Command produces the page number of the place in the text
+ where the corresponding |\label| command appears. ie. where
+ \label{key} appears.
+
+\ref{key} *\ref*
+ Command produces the number of the sectional unit, equation
+ number, ... of the corresponding |\label| command.
+
+==============================================================================
+4. Definitions *latex-definitions*
+
+|\newcommand| Define a new command
+|\newenvironment| Define a new environment
+|\newtheorem| Define a new theorem-like environment
+|\newfont| Define a new font name
+
+
+\newcommand{cmd}[args]{definition} *\newcommand* *\renewcommand*
+\newcommand{cmd}[args][default]{definition}
+\renewcommand{cmd}[args]{definition}
+\renewcommand{cmd}[args][default]{definition}
+
+These commands define (or redefine) a command.
+
+{cmd} A command name beginning with a |\\|. For |\newcommand| it must
+ not be already defined and must not begin with |\end|; for
+ |\renewcommand| it must already be defined.
+
+{args} An integer from 1 to 9 denoting the number of arguments of the
+ command being defined. The default is for the command to have
+ no arguments.
+
+{default} If this optional parameter is present, it means that the
+ command's first argument is optional. The default value of the
+ optional argument is default.
+
+{definition} The text to be substituted for every occurrence of {cmd}; a
+ parameter of the form #n in {cmd} is replaced by the text of
+ the nth argument when this substitution takes place.
+
+ *\newenvironment* *\renewenvironment*
+\newenvironment{nam}[args]{begdef}{enddef}
+\newenvironment{nam}[args][default]{begdef}{enddef}
+\renewenvironment{nam}[args]{begdef}{enddef}
+
+These commands define or redefine an environment.
+
+{nam} The name of the environment. For |\newenvironment| there must
+ be no currently defined environment by that name, and the
+ command \nam must be undefined. For |\renewenvironment| the
+ environment must already be defined.
+
+{args} An integer from 1 to 9 denoting the number of arguments of
+ the newly-defined environment. The default is no arguments.
+
+{default} If this is specified, the first argument is optional, and
+ default gives the default value for that argument.
+
+{begdef} The text substituted for every occurrence of \begin{nam}; a
+ parameter of the form #n in {cmd} is replaced by the text of
+ the nth argument when this substitution takes place.
+
+{enddef} The text substituted for every occurrence of \end{nam}. It
+ may not contain any argument parameters.
+
+
+\newtheorem{envname}{caption}[within] *\newtheorem*
+\newtheorem{envname}[numberedlike]{caption}
+
+This command defines a theorem-like environment.
+
+{envname} The name of the environment to be defined. A string of
+ letters. It must not be the name of an existing environment or
+ counter.
+
+{caption} The text printed at the beginning of the environment, right
+ before the number. This may simply say "Theorem", for example.
+
+{within} The name of an already defined counter, usually of a sectional
+ unit. Provides a means of resetting the new theorem counter
+ within the sectional unit.
+
+{numberedlike} The name of an already defined theorem-like environment.
+
+The |\newtheorem| command may have at most one optional argument.
+
+
+\newfont{cmd}{fontname} *\newfont*
+ Defines the command name {cmd}, which must not be currently
+ defined, to be a declaration that selects the font named
+ {fontname} to be the current font.
+
+==============================================================================
+5. Document Classes *latex-classes*
+
+
+\documentclass[options]{class} *\documentclass*
+
+Valid LaTeX document classes include:
+ *article *article-class*
+ *report *report-class*
+ *letter *letter-class*
+ *book *book-class*
+ *slides *slides-class*
+
+All the standard classes (except slides) accept the following options for
+selecting the typeface size (10 pt is default):
+
+10pt, 11pt, 12pt
+
+All classes accept these options for selecting the paper size (default is
+letter):
+
+a4paper, a5paper, b5paper, letterpaper, legalpaper, executivepaper
+
+Miscellaneous options:
+
+landscape *landscape*
+ Selects landscape format. Default is portrait.
+
+titlepage, notitlepage *notitlepage*
+ Selects if there should be a separate title page.
+
+leqno *leqno* *rqno*
+ Equation number on left side of equations. Default is
+ right side.
+
+fleqn *fleqn*
+ Displayed formulas flush left. Default is centred.
+
+openbib *openbib*
+ Use "open" bibliography format.
+
+draft, final *draft* *final*
+ Mark/do not mark overfull boxes with a rule. Default is
+ final.
+
+These options are not available with the slides class:
+
+oneside, twoside *oneside* *twoside*
+ Selects one- or twosided layout. Default is oneside,
+ except for the book class.
+
+openright, openany *openright* *openany*
+ Determines if a chapter should start on a right-hand page.
+ Default is openright for book.
+
+onecolumn, twocolumn *onecolumn* *twocolumn*
+ One or two columns. Defaults to one column.
+
+The slides class offers the option clock for printing the time at the bottom
+of each |\note|.
+
+If you specify more than one option, they must be separated by a comma.
+
+\usepackage[options]{pkg} *\usepackage*
+ Additional packages are loaded by this. If you
+ specify more than one package, they must be separated by a
+ comma.
+
+Any options given in the |\documentclass| command that are unknown by the
+selected document class are passed on to the packages loaded with |\usepackage|.
+
+==============================================================================
+6. Layout *latex-layout*
+
+Miscellaneous commands for controlling the general layout of the page.
+
+|\flushbottom| Make all text pages the same height.
+|\onecolumn| Use one-column layout.
+|\raggedbottom| Allow text pages of differing height.
+|\twocolumn| Use two-column layout.
+
+\flushbottom *\flushbottom*
+ Makes all text pages the same height, adding extra vertical
+ space when necessary to fill out the page. This is the
+ standard if twocolumn mode is selected.
+
+\onecolumn *\onecolumn*
+ Starts a new page and produces single-column output.
+
+\raggedbottom *\raggedbottom*
+ Makes all pages the height of the text on that page. No extra
+ vertical space is added.
+
+\twocolumn[text] *\twocolumn*
+ Starts a new page and produces two-column output. If the
+ optional [text] argument is present, it is typeset in
+ one-column mode.
+
+==============================================================================
+7. Environments *latex-environments*
+
+ *\begin* *\end*
+LaTeX provides a number of different paragraph-making environments. Each
+environment begins and ends in the same manner: >
+
+ \begin{environment-name}
+ .
+ .
+ .
+ \end{environment-name}
+<
+a. |array| Math arrays
+b. |center| Centred lines
+c. |description| Labelled lists
+d. |enumerate| Numbered lists
+e. |eqnarray| Sequences of aligned equations
+f. |equation| Displayed equation
+g. |figure| Floating figures
+h. |flushleft| Flushed left lines
+i. |flushright| Flushed right lines
+j. |itemize| Bulleted lists
+k. |letter| Letters
+l. |list| Generic list environment
+m. |minipage| Miniature page
+n. |picture| Picture with text, arrows, lines and circles
+o. |quotation| Indented environment with paragraph indentation
+p. |quote-l| Indented environment with no paragraph indentation
+q. |tabbing| Align text arbitrarily
+r. |table| Floating tables
+s. |tabular| Align text in columns
+t. |thebibliography| Bibliography or reference list
+u. |theorem| Theorems, lemmas, etc
+v. |titlepage| For hand crafted title pages
+x. |verbatim| Simulating typed input
+y. |verse| For poetry and other things
+
+==============================================================================
+ a. array *array*
+>
+ \begin{array}{col1col2...coln}
+ column 1 entry & column 2 entry ... & column n entry \\
+ .
+ .
+ .
+ \end{array}
+
+Math arrays are produced with the |array| environment. It has a single mandatory
+argument describing the number of columns and the alignment within them. Each
+column, coln, is specified by a single letter that tells how items in that row
+should be formatted.
+ * c -- for centred
+ * l -- for flush left
+ * r -- for flush right
+Column entries must be separated by an |&|. Column entries may include other
+LaTeX commands. Each row of the array must be terminated with the string |\\|.
+
+Note that the |array| environment can only be used in |math-mode|, so normally
+it is used inside an |equation| environment.
+
+==============================================================================
+b. center *center*
+>
+ \begin{center}
+ Text on line 1 \\
+ Text on line 2 \\
+ .
+ .
+ .
+ \end{center}
+
+The |\center| environment allows you to create a paragraph consisting of lines
+that are centred within the left and right margins on the current page. Each
+line must be terminated with the string |\\|.
+
+\centering *\centering*
+ This declaration corresponds to the |center| environment. This
+ declaration can be used inside an environment such as
+ |quote-l| or in a |\parbox|. The text of a |figure| or |table|
+ can be centred on the page by putting a |\centering| command
+ at the beginning of the |figure| or |table| environment.
+ Unlike the |center| environment, the |\centering| command does
+ not start a new paragraph; it simply changes how LaTeX formats
+ paragraph units. To affect a paragraph unit's format, the
+ scope of the declaration must contain the blank line or |\end|
+ command (of an environment like |quote-l|) that ends the
+ paragraph unit.
+
+==============================================================================
+c. description *description*
+>
+ \begin{description}
+ \item [label] First item
+ \item [label] Second item
+ .
+ .
+ .
+ \end{description}
+
+The |description| environment is used to make labelled lists. The label is
+bold face and flushed right.
+
+==============================================================================
+d. enumerate *enumerate*
+>
+ \begin{enumerate}
+ \item First item
+ \item Second item
+ .
+ .
+ .
+ \end{enumerate}
+
+The |enumerate| environment produces a numbered list. Enumerations can be
+nested within one another, up to four levels deep. They can also be nested
+within other paragraph-making environments.
+
+\item Each item of an enumerated list begins with an |\item|
+ command. There must be at least one |\item| command
+ within the environment.
+
+The |enumerate| environment uses the |\enumi| through |\enumiv| counters (see
+section |latex-counters|). The type of numbering can be changed by redefining
+\theenumi etc.
+
+==============================================================================
+e. eqnarray *eqnarray*
+>
+ \begin{eqnarray}
+ math formula 1 \\
+ math formula 2 \\
+ .
+ .
+ .
+ \end{eqnarray}
+
+The |eqnarray| environment is used to display a sequence of equations or
+inequalities. It is very much like a three-column |array| environment, with
+consecutive rows separated by |\\| and consecutive items within a row separated
+by an |&|.
+
+\nonumber *\nonumber*
+ An equation number is placed on every line unless that
+ line has a |\nonumber| command.
+
+\lefteqn *\lefteqn*
+ The command |\lefteqn| is used for splitting long
+ formulas across lines. It typesets its argument in
+ display style flush left in a box of zero width.
+
+==============================================================================
+f. equation *equation*
+>
+ \begin{equation}
+ math formula
+ \end{equation}
+
+The |equation| environment centres your equation on the page and places the
+equation number in the right margin.
+
+==============================================================================
+g. figure *figure*
+>
+ \begin{figure}[placement]
+ body of the figure
+ \caption{figure title}
+ \end{figure}
+
+Figures are objects that are not part of the normal text, and are usually
+"floated" to a convenient place, like the top of a page. Figures will not be
+split between two pages.
+
+The optional argument [placement] determines where LaTeX will try to place
+your figure. There are four places where LaTeX can possibly put a float:
+
+h (Here) at the position in the text where the figure
+ environment appears.
+t (Top) at the top of a text page.
+b (Bottom) at the bottom of a text page.
+p (Page of floats) on a separate float page, which is a page containing
+ no text, only floats.
+
+The standard |report-class| and |article-class| use the default placement
+[tbp].
+
+The body of the |figure| is made up of whatever text, LaTeX commands, etc. you
+wish.
+
+The \caption command allows you to title your figure.
+
+==============================================================================
+h. flushleft *flushleft*
+>
+ \begin{flushleft}
+ Text on line 1 \\
+ Text on line 2 \\
+ .
+ .
+ .
+ \end{flushleft}
+
+The |flushleft| environment allows you to create a paragraph consisting of
+lines that are flushed left, to the left-hand margin. Each line must be
+terminated with the string |\\|.
+
+\raggedright *\raggedright*
+ This declaration corresponds to the |flushleft| environment.
+ This declaration can be used inside an environment such as
+ |quote-l| or in a |\parbox|. Unlike the |flushleft|
+ environment, the |\raggedright| command does not start a new
+ paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or |\end| command (of
+ an environment like |quote-l|) that ends the paragraph unit.
+
+==============================================================================
+i. flushright *flushright*
+>
+ \begin{flushright}
+ Text on line 1 \\
+ Text on line 2 \\
+ .
+ .
+ .
+ \end{flushright}
+
+The |flushright| environment allows you to create a paragraph consisting of
+lines that are flushed right, to the right-hand margin. Each line must be
+terminated with the string |\\|.
+
+\raggedleft *\raggedleft*
+ This declaration corresponds to the |flushright| environment.
+ This declaration can be used inside an environment such as
+ |quote-l| or in a |\parbox|. Unlike the |flushright|
+ environment, the |\raggedleft| command does not start a new
+ paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or |\end| command (of
+ an environment like |quote-l|) that ends the paragraph unit.
+
+==============================================================================
+j. itemize *itemize*
+>
+ \begin{itemize}
+ \item First item
+ \item Second item
+ .
+ .
+ .
+ \end{itemize}
+
+The |itemize| environment produces a "bulleted" list. Itemizations can be
+nested within one another, up to four levels deep. They can also be nested
+within other paragraph-making environments.
+
+\item *\item*
+ Each item of an itemized list begins with an |\item| command.
+ There must be at least one |\item| command within the
+ environment.
+
+The itemize environment uses the |\itemi| through |\itemiv| counters (see
+section |latex-counters|). The type of numbering can be changed by redefining
+\theitemi etc.
+
+==============================================================================
+k. letter *\letter*
+
+This environment is used for creating letters. See section |latex-letters|.
+
+==============================================================================
+l. list *list*
+
+The |list| environment is a generic environment which is used for defining many
+of the more specific environments. It is seldom used in documents, but often
+in macros.
+>
+ \begin{list}{label}{spacing}
+ \item First item
+ \item Second item
+ .
+ .
+ .
+ \end{list}
+
+'label' The {label} argument specifies how items should be labelled.
+ This argument is a piece of text that is inserted in a box to
+ form the {label}. This argument can and usually does contain
+ other LaTeX commands.
+
+'spacing' The {spacing} argument contains commands to change the spacing
+ parameters for the |list|. This argument will most often be
+ null, i.e., {}. This will select all default spacing which
+ should suffice for most cases.
+
+==============================================================================
+m. minipage *minipage*
+>
+ \begin{minipage}[position]{width}
+ text
+ \end{minipage}
+
+The |minipage| environment is similar to a |\parbox| command. It takes the
+same optional [position] argument and mandatory {width} argument. You may use
+other paragraph-making environments inside a |minipage|. Footnotes in a
+minipage environment are handled in a way that is particularly useful for
+putting footnotes in figures or tables. A |\footnote| or |\footnotetext|
+command puts the footnote at the bottom of the minipage instead of at the
+bottom of the page, and it uses the |\mpfootnote| counter instead of the
+ordinary footnote counter. See sections |latex-counters| and
+|latex-footnotes|.
+
+NOTE: Don't put one |minipage| inside another if you are using footnotes; they
+may wind up at the bottom of the wrong minipage.
+
+==============================================================================
+n. picture *picture*
+>
+ size position
+ \begin{picture}(width,height)(x offset,y offset)
+ .
+ .
+ picture commands
+ .
+ .
+ \end{picture}
+
+The |picture| environment allows you to create just about any kind of picture
+you want containing text, lines, arrows and circles. You tell LaTeX where to
+put things in the picture by specifying their coordinates. A coordinate is a
+number that may have a decimal point and a minus sign -- a number like 5, 2.3
+or -3.1416. A coordinate specifies a length in multiples of the unit length
+|\unitlength|, so if |\unitlength| has been set to 1cm, then the coordinate
+2.54 specifies a length of 2.54 centimetres. You can change the value of
+|\unitlength| anywhere you want, using the |\setlength| command, but strange
+things will happen if you try changing it inside the |picture| environment.
+
+A position is a pair of coordinates, such as (2.4,-5), specifying the point
+with x-coordinate 2.4 and y-coordinate -5. Coordinates are specified in the
+usual way with respect to an origin, which is normally at the lower-left
+corner of the |picture|.
+Note that when a position appears as an argument, it is not enclosed in
+braces; the parentheses serve to delimit the argument.
+
+The |picture| environment has one mandatory argument, which is a position. It
+specifies the size of the picture. The environment produces a rectangular box
+with width and height determined by this argument's x- and y-coordinates.
+
+The |picture| environment also has an optional position argument, following
+the size argument, that can change the origin. (Unlike ordinary optional
+arguments, this argument is not contained in square brackets.) The optional
+argument gives the coordinates of the point at the lower-left corner of the
+picture (thereby determining the origin). For example, if |\unitlength| has
+been set to 1mm, the command: >
+ \begin{picture}(100,200)(10,20)
+>
+produces a picture of width 100 millimetres and height 200 millimetres, whose
+lower-left corner is the point (10,20) and whose upper-right corner is
+therefore the point (110,220). When you first draw a picture, you will omit
+the optional argument, leaving the origin at the lower-left corner. If you
+then want to modify your picture by shifting everything, you just add the
+appropriate optional argument.
+
+The environment's mandatory argument determines the nominal size of the
+picture. This need bear no relation to how large the picture really is; LaTeX
+will happily allow you to put things outside the picture, or even off the
+page. The picture's nominal size is used by LaTeX in determining how much room
+to leave for it.
+
+Everything that appears in a picture is drawn by the |\put| command. The
+command: >
+ \put (11.3,-.3){...}
+
+puts the object specified by ... in the picture, with its
+reference point at coordinates (11.3,-.3). The reference points for various
+objects will be described below.
+
+The |\put| creates an LR box (|lrbox|). You can put anything in the text
+argument of the |\put| that you'd put into the argument of an |\mbox| and
+related commands. When you do this, the reference point will be the lower left
+corner of the box.
+
+Picture commands:
+|\circle| Draw a circle
+|\dashbox| Draw a dashed box
+|\frame| Draw a frame around an object
+|\framebox(picture)| Draw a box with a frame around it
+|\line| Draw a straight line
+|\linethickness| Set the line thickness
+|\makebox(picture)| Draw a box of the specified size
+|\multiput| Draw multiple instances of an object
+|\oval| Draw an ellipse
+|\put| Place an object at a specified place
+|\shortstack| Make a pile of objects
+|\vector| Draw a line with an arrow
+
+\circle[*]{diameter} *\circle*
+ Command produces a circle with a {diameter} as close to the
+ specified one as possible. If the *-form of the command is
+ used, LaTeX draws a solid circle.
+ Note: only circles up to 40 pt can be drawn.
+
+
+\dashbox{dashlength}(width,height){...} *\dashbox*
+ Draws a box with a dashed line. The |\dashbox| has an extra
+ argument which specifies the width of each dash. A dashed box
+ looks best when the width and height are multiples of the
+ {dashlength}.
+
+\frame{...} *\frame*
+ Puts a rectangular frame around the object specified in the
+ argument. The reference point is the bottom left corner of the
+ frame. No extra space is put between the frame and the object.
+
+\framebox(width,height)[position]{...} *\picture-framebox*
+ The |\framebox| command is exactly the same as the
+ |picture-makebox| command, except that it puts a frame around
+ the outside of the box that it creates. The |\framebox|
+ command produces a rule of thickness |\fboxrule|, and leaves a
+ space |\fboxsep| between the rule and the contents of the box.
+
+\line(x slope,y slope){length} *\line*
+ Draws a line of the specified length and slope.
+ Note: LaTeX can only draw lines with slope = x/y, where x and
+ y have integer values from -6 through 6.
+
+\linethickness{dimension} *\linethickness*
+ Declares the thickness of horizontal and vertical lines in a
+ |picture| environment to be dimension, which must be a
+ positive length. It does not affect the thickness of slanted
+ lines (|\line|) and circles (|circle|), or the quarter circles
+ drawn by |\oval| to form the corners of an oval.
+
+\makebox(width,height)[position]{...} *picture-makebox*
+ The makebox command for the |picture| environment is similar
+ to the normal |\makebox| command except that you must specify
+ a width and height in multiples of |\unitlength|.
+ The optional argument, [position], specifies the quadrant that
+ your text appears in. You may select up to two of the
+ following:
+ t - Moves the item to the top of the rectangle
+ b - Moves the item to the bottom
+ l - Moves the item to the left
+ r - Moves the item to the right
+
+ *\multiput*
+\multiput(x coord,y coord)(delta x,delta y){no of copies}{object}
+ This command can be used when you are putting the same
+ object in a regular pattern across a picture.
+
+\oval(width,height)[portion] *\oval*
+ Produces a rectangle with rounded corners. The optional
+ argument, [portion], allows you to select part of the oval.
+ t - top portion
+ b - bottom portion
+ r - right portion
+ l - left portion
+ Note: the "corners" of the oval are made with quarter circles
+ with a maximum radius of 20 pt, so large "ovals" will look
+ more like boxes with rounded corners.
+
+\put(x coord,y coord){ ... } *\put*
+ Places the item specified by the mandatory argument at the
+ given coordinates.
+
+\shortstack[position]{... \\ ... \\ ...} *\shortstack*
+ The |\shortstack| command produces a stack of objects.
+ The valid positions are:
+ r - right of the stack
+ l - left of the stack
+ c - centre of the stack (default)
+
+\vector(x slope,y slope){length} *\vector*
+ Draws a line with an arrow of the specified length and slope.
+ The x and y values must lie between -4 and +4, inclusive.
+
+==============================================================================
+o. quotation *quotation*
+ >
+ \begin{quotation}
+ text
+ \end{quotation}
+
+The margins of the |quotation| environment are indented on the left and the
+right. The text is justified at both margins and there is paragraph
+indentation. Leaving a blank line between text produces a new paragraph.
+
+==============================================================================
+p. quote *quote-l*
+>
+ \begin{quote}
+ text
+ \end{quote}
+
+The margins of the |quote-l| environment are indented on the left and the right.
+The text is justified at both margins. Leaving a blank line between text
+produces a new paragraph.
+
+==============================================================================
+q. tabbing *tabbing*
+>
+ \begin{tabbing}
+ text \= more text \= still more text \= last text \\
+ second row \> \> more \\
+ .
+ .
+ .
+ \end{tabbing}
+
+The |tabbing| environment provides a way to align text in columns. It works by
+setting tab stops and tabbing to them much the way you do with an ordinary
+typewriter.
+
+It is best suited for cases where the width of each column is constant and
+known in advance.
+
+This environment can be broken across pages, unlike the |tabular| environment.
+The following commands can be used inside a tabbing environment:
+
+ *tab=*
+\= Sets a tab stop at the current position.
+
+ *tab>*
+\> Advances to the next tab stop.
+
+ *tab<*
+\< This command allows you to put something to the left of the
+ local margin without changing the margin. Can only be used at
+ the start of the line.
+
+ *tab+*
+\+ Moves the left margin of the next and all the following
+ commands one tab stop to the right.
+
+ *tab-*
+\- Moves the left margin of the next and all the following
+ commands one tab stop to the left.
+
+ *tab'*
+\' Moves everything that you have typed so far in the current
+ column, i.e. everything from the most recent \> (|tab>|), \<
+ (|tab<|), \' (|tab'|), |\\|, or |\kill| command, to the right
+ of the previous column, flush against the current column's tab
+ stop.
+
+ *tab`*
+\` Allows you to put text flush right against any tab stop,
+ including tab stop 0. However, it can't move text to the right
+ of the last column because there's no tab stop there. The \`
+ (|tab`|) command moves all the text that follows it, up to the
+ |\\| or \end{tabbing} command that ends the line, to the right
+ margin of the tabbing environment. There must be no \>
+ (|tab>|) or \' (|tab'|) command between the \` (|tab`|) and
+ the command that ends the line.
+
+ *\kill*
+\kill Sets tab stops without producing text. Works just like |\\|
+ except that it throws away the current line instead of
+ producing output for it. The effect of any \= (|tab=|), \+
+ (|tab+|) or \- (|tab-|) commands in that line remain in
+ effect.
+
+ *\pushtabs*
+\pushtabs Saves all current tab stop positions. Useful for temporarily
+ changing tab stop positions in the middle of a tabbing
+ environment. Also restores the tab stop positions saved by the
+ last |\pushtabs|.
+
+ *taba*
+\a In a tabbing environment, the commands \= (|tab=|), \'
+ (|tab'|) and \` (|tab`|) do not produce accents as normal.
+ Instead, the commands \a=, \a' and \a` are used.
+
+This example typesets a Pascal function in a traditional format:
+>
+ \begin{tabbing}
+ function \= fact(n : integer) : integer;\\
+ \> begin \= \+ \\
+ \> if \= n $>$ 1 then \+ \\
+ fact := n * fact(n-1) \- \\
+ else \+ \\
+ fact := 1; \-\- \\
+ end;\\
+ \end{tabbing}
+
+==============================================================================
+r. table *\table*
+>
+ \begin{table}[placement]
+ body of the table
+ \caption{table title}
+ \end{table}
+
+Tables are objects that are not part of the normal text, and are usually
+"floated" to a convenient place, like the top of a page. Tables will not be
+split between two pages.
+
+The optional argument [placement] determines where LaTeX will try to place
+your table. There are four places where LaTeX can possibly put a float:
+
+ h (Here) at the position in the text where the table
+ environment appears.
+ t (Top) at the top of a text page.
+ b (Bottom) at the bottom of a text page.
+ p (Page of floats) on a separate float page, which is a page
+ containing no text, only floats.
+
+The standard |report-class| and |article-class| use the default placement [tbp].
+
+The body of the table is made up of whatever text, LaTeX commands, etc., you
+wish.
+
+The \caption command allows you to title your table.
+
+==============================================================================
+s. tabular *tabular*
+>
+ \begin{tabular}[pos]{cols}
+ column 1 entry & column 2 entry ... & column n entry \\
+ .
+ .
+ .
+ \end{tabular}
+
+or
+>
+ \begin{tabular*}{width}[pos]{cols}
+ column 1 entry & column 2 entry ... & column n entry \\
+ .
+ .
+ .
+ \end{tabular*}
+
+These environments produce a box consisting of a sequence of rows of items,
+aligned vertically in columns. The mandatory and optional arguments consist
+of:
+
+{width} Specifies the width of the tabular* environment. There must be
+ rubber space between columns that can stretch to fill out the
+ specified width.
+
+[pos] Specifies the vertical position; default is alignment on the
+ centre of the environment.
+ t - align on top row
+ b - align on bottom row
+
+{cols} Specifies the column formatting. It consists of a sequence of
+ the following specifiers, corresponding to the sequence of
+ columns and intercolumn material.
+ l - A column of left-aligned items.
+
+ r - A column of right-aligned items.
+
+ c - A column of centred items.
+
+ | - A vertical line the full height and depth of the
+ environment.
+
+ @{text} - This inserts text in every row. An @-expression
+ suppresses the intercolumn space normally inserted
+ between columns; any desired space between the
+ inserted text and the adjacent items must be included
+ in text. An \extracolsep{wd} command in an
+ @-expression causes an extra space of width {wd} to
+ appear to the left of all subsequent columns, until
+ countermanded by another |\extracolsep| command. Unlike
+ ordinary intercolumn space, this extra space is not
+ suppressed by an @-expression. An |\extracolsep|
+ command can be used only in an @-expression in the
+ cols argument.
+
+ p{wd} - Produces a column with each item typeset in a |\parbox|
+ of width {wd}, as if it were the argument of a
+ \parbox[t]{wd} command. However, a |\\| may not appear
+ in the item, except in the following situations:
+ 1. inside an environment like |minipage|, |array|, or
+ |tabular|.
+ 2. inside an explicit |\parbox|.
+ 3. in the scope of a |\centering|, |\raggedright|, or
+ |\raggedleft| declaration. The latter declarations must
+ appear inside braces or an environment when used in a
+ p-column element.
+
+ {num}{cols} - Equivalent to num copies of cols, where num is any positive
+ integer and cols is any list of column-specifiers,
+ which may contain another -expression.
+
+These commands can be used inside a tabular environment:
+
+|\cline| Draw a horizontal line spanning some columns.
+|\hline| Draw a * horizontal line spanning all columns.
+|\multicolumn| Make an item spanning * several columns.
+|\vline| Draw a vertical line.
+
+
+\cline{i-j} *\cline*
+ The |\cline| command draws horizontal lines across the columns
+ specified, beginning in column i and ending in column j,
+ which are identified in the mandatory argument.
+
+\hline *\hline*
+ The |\hline| command will draw a horizontal line the width of
+ the table. It's most commonly used to draw a line at the top,
+ bottom, and between the rows of the table.
+
+\multicolumn{cols}{pos}{text} *\multicolumn*
+ The |\multicolumn| is used to make an entry that spans several
+ columns. The first mandatory argument, {cols}, specifies the
+ number of columns to span. The second mandatory argument,
+ {pos}, specifies the formatting of the entry:
+ c - centered
+ l - flushleft
+ r - flushright.
+ The third mandatory argument, {text}, specifies what text is
+ to make up the entry.
+
+\vline *\vline*
+ The |\vline| command will draw a vertical line extending the
+ full height and depth of its row. An |\hfill| command can be
+ used to move the line to the edge of the column. It can also
+ be used in an @-expression.
+
+==============================================================================
+t. thebibliography *\thebibliography*
+>
+ \begin{thebibliography}{widestlabel}
+ \bibitem[label]{cite_key}
+ .
+ .
+ .
+ \end{thebibliography}
+
+The |\thebibliography| environment produces a bibliography or reference list.
+
+In the |article-class|, this reference list is labelled "References"; in the
+|report-class|, it is labelled "Bibliography".
+
+{widestlabel} Text that, when printed, is approximately as wide as the
+ widest item label produces by the |\bibitem| commands.
+
+|\bibitem| Specify a bibliography item.
+|\cite| Refer to a bibliography item.
+|\nocite| Include an item in the bibliography.
+|BibTeX| Automatic generation of bibliographies.
+
+\bibitem *\bibitem*
+\bibitem[label]{citekey}
+ The |\bibitem| command generates an entry labelled by [label].
+ If the [label] argument is missing, a number is generated as
+ the label, using the |\enumi| counter. The {citekey} is any
+ sequence of letters, numbers, and punctuation symbols not
+ containing a comma. This command writes an entry on the `.aux'
+ file containing {citekey} and the item's label. When this
+ `.aux' file is read by the \begin{document} command, the
+ item's label is associated with {citekey}, causing the
+ reference to {citekey} by a |\cite| command to produce the
+ associated label.
+
+\cite *\cite*
+\cite[text]{keylist}
+ The {keylist} argument is a list of citation keys. This
+ command generates an in-text citation to the references
+ associated with the keys in {keylist} by entries on the `.aux'
+ file read by the \begin{document} command.
+ The optional text argument will appear after the
+ citation, i.e.: >
+ \cite[p.2]{knuth}
+< might produce `[Knuth, p. 2]'.
+
+\nocite *\nocite*
+\nocite{keylist}
+ The |\nocite| command produces no text, but writes
+ {keylist}, which is a list of one or more citation
+ keys, on the `.aux' file.
+
+BibTeX *BibTeX* *bibtex*
+ *\bibliographystyle*
+If you use the BibTeX program by Oren Patashnik (highly recommended if you
+need a bibliography of more than a couple of titles) to maintain your
+bibliography, you don't use the |thebibliography| environment. Instead, you
+include the lines:
+>
+ \bibliographystyle{style}
+ \bibliography{bibfile}
+
+where {style} refers to a file style.bst, which defines how your citations
+will look. The standard styles distributed with BibTeX are:
+
+{alpha} Sorted alphabetically. Labels are formed from name of author and year
+ of publication.
+{plain} Sorted alphabetically. Labels are numeric.
+{unsrt} Like plain, but entries are in order of citation.
+{abbrv} Like plain, but more compact labels.
+
+In addition, numerous other BibTeX style files exist tailored to the demands
+of various publications.
+
+ *\bibliography*
+The argument to |\bibliography| refers to the file bibfile.bib, which should
+contain your database in BibTeX format. Only the entries referred to via
+|\cite| and |\nocite| will be listed in the bibliography.
+
+==============================================================================
+u. theorem *theorem*
+>
+ \begin{theorem}
+ theorem text
+ \end{theorem}
+
+The |theorem| environment produces "Theorem x" in boldface followed by your
+theorem text.
+
+==============================================================================
+v. titlepage *titlepage*
+>
+ \begin{titlepage}
+ text
+ \end{titlepage}
+
+The |titlepage| environment creates a title page, i.e. a page with no printed
+page number or heading. It also causes the following page to be numbered page
+one. Formatting the title page is left to you. The |\today| command comes in
+handy for title pages.
+
+Note that you can use the |\maketitle| to produce a standard title page.
+
+==============================================================================
+x. verbatim *verbatim*
+>
+ \begin{verbatim}
+ text
+ \end{verbatim}
+
+The |verbatim| environment is a paragraph-making environment that gets LaTeX
+to print exactly what you type in. It turns LaTeX into a typewriter with
+carriage returns and blanks having the same effect that they would on a
+typewriter.
+
+\verb *\verb*
+\verb char literal_text char
+\verb*char literal_text char
+ Typesets literal_text exactly as typed, including
+ special characters and spaces, using a typewriter |\tt|
+ type style. There may be no space between |\verb| or
+ |\verb|* and char (space is shown here only for
+ clarity). The *-form differs only in that spaces are
+ printed as `\verb*| |\'.
+
+==============================================================================
+y. verse *verse*
+>
+ \begin{verse}
+ text
+ \end{verse}
+
+The |verse| environment is designed for poetry, though you may find other uses
+for it.
+
+The margins are indented on the left and the right. Separate the lines of each
+stanza with |\\|, and use one or more blank lines to separate the stanzas.
+
+==============================================================================
+8. Footnotes *latex-footnotes*
+
+Footnotes can be produced in one of two ways. They can be produced with one
+command, the |\footnote| command. They can also be produced with two commands,
+the |\footnotemark| and the |\footnotetext| commands. See the specific command for
+information on why you would use one over the other.
+
+|\footnote| Insert a footnote
+|\footnotemark| Insert footnote mark only
+|\footnotetext| Insert footnote text only
+
+\footnote[number]{text} *\footnote*
+ Command places the numbered footnote text at the bottom of the
+ current page. The optional argument, number, is used to change
+ the default footnote number. This command can only be used in
+ outer paragraph mode; i.e., you cannot use it in sectioning
+ commands like |\chapter|, in |\figure|, |\table| or in a
+ |\tabular| environment.
+
+\footnotemark *\footnotemark*
+ Command puts the footnote number in the text. This command can
+ be used in inner paragraph mode. The text of the footnote is
+ supplied by the |\footnotetext| command.
+ This command can be used to produce several consecutive
+ footnote markers referring to the same footnote by using
+>
+ \footnotemark[\value{footnote}]
+<
+ after the first |\footnote| command.
+
+\footnotetext[number]{text} *\footnotetext*
+ Command produces the text to be placed at the bottom of the
+ page. This command can come anywhere after the |\footnotemark|
+ command. The |\footnotetext| command must appear in outer
+ paragraph mode. The optional argument, number, is used to
+ change the default footnote number.
+
+==============================================================================
+9. Lengths *latex-lengths*
+
+A length is a measure of distance. Many LaTeX commands take a length as an
+argument.
+
+|\newlength| Define a new length.
+|\setlength| Set the value of a length.
+|\addtolength| Add a quantity to a length.
+|\settodepth| Set a length to the depth of something.
+|\settoheight| Set a length to the height of something.
+|\settowidth| Set a length to the width of something.
+|pre-lengths| Lengths that are, like, predefined.
+
+\newlength{\gnat} *\newlength*
+ The |\newlength| command defines the mandatory argument, \gnat,
+ as a length command with a value of 0in. An error occurs if a
+ \gnat command already exists.
+
+\setlength{\gnat}{length} *\setlength*
+ The |\setlength| command is used to set the value of a \gnat
+ command. The {length} argument can be expressed in any terms
+ of length LaTeX understands, i.e., inches (in), millimetres
+ (mm), points (pt), etc.
+
+\addtolength{\gnat}{length} *\addtolength*
+ The |\addtolength| command increments a \gnat by the amount
+ specified in the {length} argument. It can be a negative
+ amount.
+
+\settodepth{\gnat}{text} *\settodepth*
+ The |\settodepth| command sets the value of a \gnat command
+ equal to the depth of the {text} argument.
+
+\settoheight{\gnat}{text} *\settoheight*
+ The |\settoheight| command sets the value of a \gnat command
+ equal to the height of the {text} argument.
+
+\settowidth{\gnat}{text} *\settowidth*
+ The |\settowidth| command sets the value of a \gnat command
+ equal to the width of the {text} argument.
+
+Predefined lengths *pre-lengths*
+
+\width *\width*
+\height *\height*
+\depth *\depth*
+\totalheight *\totalheight*
+ These length parameters can be used in the arguments of the
+ box-making commands See section Spaces & Boxes. They specify
+ the natural width etc. of the text in the box.
+ \totalheight equals \height + \depth.
+ To make a box with the text stretched to double the natural
+ size, e.g., say: >
+ \makebox[2\width]{Get a stretcher}
+
+==============================================================================
+10. Letters *latex-letters*
+
+You can use LaTeX to typeset letters, both personal and business. The letter
+document class is designed to make a number of letters at once, although you
+can make just one if you so desire.
+
+Your `.tex' source file has the same minimum commands as the other document
+classes, i.e., you must have the following commands as a minimum: >
+ \documentclass{letter}
+ \begin{document}
+ ...
+ letters
+ ...
+ \end{document}
+
+Each letter is a letter environment, whose argument is the name and address of
+the recipient. For example, you might have: >
+ \begin{letter}
+ {Mr. Joe Smith\\
+ 2345 Princess St. \\
+ Edinburgh, EH1 1AA}
+ ...
+ \end{letter}
+
+The letter itself begins with the |\opening| command. The text of the letter
+follows. It is typed as ordinary LaTeX input. Commands that make no sense in
+a letter, like |\chapter|, do not work. The letter closes with a |\closing|
+command.
+
+After the closing, you can have additional material. The |\cc| command produces
+the usual "cc: ...". There's also a similar |\encl| command for a list of
+enclosures. With both these commands, use|\\| to separate the items.
+
+These commands are used with the letter class:
+|\address| Your return address.
+|\cc| Cc list. closing Saying goodbye.
+|\encl| List of enclosed material.
+|\location| Your organisation's address.
+|\makelabels| Making address labels.
+|\name| Your name, for the return address.
+|\opening| Saying hello.
+|\ps| Adding a postscript.
+|\signature| Your signature.
+|\startbreaks| Allow page breaks.
+|\stopbreaks| Disallow page breaks.
+|\telephone| Your phone number.
+
+\address{Return address} *\address*
+ The return address, as it should appear on the letter and the
+ envelope. Separate lines of the address should be separated
+ by |\\| commands. If you do not make an |\address| declaration,
+ then the letter will be formatted for copying onto your
+ organisation's standard letterhead. (See section Overview of
+ LaTeX and Local Guide, for details on your local
+ implementation). If you give an |\address| declaration, then
+ the letter will be formatted as a personal letter.
+
+\cc{Kate Schechter\\Rob McKenna} *\cc*
+ Generate a list of other persons the letter was sent to. Each
+ name is printed on a separate line.
+
+\closing{text} *\closing*
+ The letter closes with a |\closing| command, i.e., >
+ \closing{Best Regards,} \encl{CV\\Certificates}
+< Generate a list of enclosed material.
+
+\location{address} *\location*
+ This modifies your organisation's standard address. This only
+ appears if the firstpage pagestyle is selected.
+
+\makelabels{number} *\makelabels*
+ If you issue this command in the preamble, LaTeX will create a
+ sheet of address labels. This sheet will be output before the
+ letters.
+
+\name{June Davenport} *\name*
+ Your name, used for printing on the envelope together with the
+ return address.
+
+\opening{text} *\opening*
+ The letter begins with the |\opening| command. The mandatory
+ argument, text, is whatever text you wish to start your
+ letter, i.e., >
+ \opening{Dear Joe,}
+
+\ps *\ps*
+ Use this command before a postscript.
+
+\signature{Harvey Swick} *\signature*
+ Your name, as it should appear at the end of the letter
+ underneath the space for your signature. Items that should go
+ on separate lines should be separated by |\\| commands.
+
+\startbreaks *\startbreaks*
+ Used after a |\stopbreaks| command to allow page breaks again.
+
+\stopbreaks *\stopbreaks*
+ Inhibit page breaks until a |\startbreaks| command occurs.
+
+\telephone{number} *\telephone*
+ This is your telephone number. This only appears if the
+ firstpage pagestyle is selected.
+
+==============================================================================
+11. Line & Page Breaking *latex-breaking*
+
+The first thing LaTeX does when processing ordinary text is to translate your
+input file into a string of glyphs and spaces. To produce a printed document,
+this string must be broken into lines, and these lines must be broken into
+pages. In some environments, you do the line breaking yourself with the |\\|
+command, but LaTeX usually does it for you.
+
+|\\| Start a new line
+|hyph-| Insert explicit hyphenation
+|\cleardoublepage| Start a new right-hand page
+|\clearpage| Start a new page
+|\enlargethispage| Enlarge the current page a bit
+|\fussy| Be fussy about line breaking
+|\hyphenation| Tell LaTeX how to hyphenate a word
+|\linebreak| Break the line
+|\newline| Break the line prematurely
+|\newpage| Start a new page
+|\nolinebreak| Don't break the current line
+|\nopagebreak| Don't make a page break here
+|\pagebreak| Please make a page break here
+|\sloppy| Be sloppy about line breaking
+
+\\[*][extraspace] *\\* *\\\\*
+ The |\\| command tells LaTeX to start a new line. It has an
+ optional argument, [extraspace], that specifies how much extra
+ vertical space is to be inserted before the next line. This
+ can be a negative amount.
+ The \\* command is the same as the ordinary |\\| command
+ except that it tells LaTeX not to start a new page after the
+ line.
+
+\- *hyph-*
+ The \- command tells LaTeX that it may hyphenate the word at
+ that point. LaTeX is very good at hyphenating, and it will
+ usually find all correct hyphenation points. The \- command is
+ used for the exceptional cases.
+ Note: when you insert \- commands in a word, the word will
+ only be hyphenated at those points and not at any of the
+ hyphenation points that LaTeX might otherwise have chosen.
+
+\cleardoublepage *\cleardoublepage*
+ The |\cleardoublepage| command ends the current page and causes
+ all figures and tables that have so far appeared in the input
+ to be printed. In a two-sided printing style (|twoside|), it
+ also makes the next page a right-hand (odd-numbered) page,
+ producing a blank page if necessary.
+
+\clearpage *\clearpage*
+ The |\clearpage| command ends the current page and causes all
+ figures and tables that have so far appeared in the input to
+ be printed.
+
+\enlargethispage{size} *\enlargethispage*
+\enlargethispage*{size}
+ Enlarge the textheight for the current page by the
+ specified amount; e.g.: >
+
+ \enlargethispage{\baselineskip}
+<
+ will allow one additional line. The starred form
+ tries to squeeze the material together on the page as
+ much as possible. This is normally used together with
+ an explicit |\pagebreak|.
+
+\fussy *\fussy*
+ This declaration (which is the default) makes TeX more fussy
+ about line breaking. This can avoids too much space between
+ words, but may produce overfull boxes. This command cancels
+ the effect of a previous |\sloppy| command.
+
+\hyphenation{words} *\hyphenation*
+ The |\hyphenation| command declares allowed hyphenation points,
+ where words is a list of words, separated by spaces, in which
+ each hyphenation point is indicated by a - character.
+
+\linebreak[number] *\linebreak*
+ The |\linebreak| command tells LaTeX to break the current line
+ at the point of the command. With the optional argument,
+ number, you can convert the |\linebreak| command from a demand
+ to a request. The [number] must be a number from 0 to 4. The
+ higher the number, the more insistent the request is. The
+ |\linebreak| command causes LaTeX to stretch the line so it
+ extends to the right margin.
+
+\newline *\newline*
+ The |\newline| command breaks the line right where it is. It
+ can only be used in paragraph mode.
+
+\newpage *\newpage*
+ The |\newpage| command ends the current page.
+
+\nolinebreak[number] *\nolinebreak*
+ The |\nolinebreak| command prevents LaTeX from breaking the
+ current line at the point of the command. With the optional
+ argument, [number], you can convert the |\nolinebreak| command
+ from a demand to a request. The [number] must be a number from 0
+ to 4. The higher the number, the more insistent the request
+ is.
+
+\nopagebreak[number] *\nopagebreak*
+ The |\nopagebreak| command prevents LaTeX from breaking the
+ current page at the point of the command. With the optional
+ argument, [number], you can convert the |\nopagebreak| command
+ from a demand to a request. The [number] must be a number from
+ 0 to 4. The higher the number, the more insistent the request
+ is.
+
+\pagebreak[number] *\pagebreak*
+ The |\pagebreak| command tells LaTeX to break the current page
+ at the point of the command. With the optional argument,
+ [number], you can convert the |\pagebreak| command from a
+ demand to a request. The [number] must be a number from 0 to
+ 4. The higher the number, the more insistent the request is.
+
+\sloppy *\sloppy*
+ This declaration makes TeX less fussy about line breaking.
+ This can prevent overfull boxes, but may leave too much space
+ between words.
+ Lasts until a |\fussy| command is issued.
+
+==============================================================================
+12. Making Paragraphs *latex-paragraphs*
+
+A paragraph is ended by one or more completely blank lines -- lines not
+containing even a |\%|. A blank line should not appear where a new paragraph
+cannot be started, such as in math mode or in the argument of a sectioning
+command.
+
+|\indent| Indent this paragraph.
+|\noindent| Do not indent this paragraph.
+|\par| Another way of writing a blank line.
+
+\indent *\indent*
+ This produces a horizontal space whose width equals the width
+ of the paragraph indentation. It is used to add paragraph
+ indentation where it would otherwise be suppressed.
+
+\noindent *\noindent*
+ When used at the beginning of the paragraph, it suppresses the
+ paragraph indentation. It has no effect when used in the
+ middle of a paragraph.
+
+\par *\par*
+ Equivalent to a blank line; often used to make command or
+ environment definitions easier to read.
+
+==============================================================================
+13. Margin Notes *latex-margin-notes*
+
+\marginpar[left]{right} *\marginpar*
+ This command creates a note in the margin. The first line will
+ be at the same height as the line in the text where the
+ |\marginpar| occurs.
+
+ When you only specify the mandatory argument {right}, the text
+ will be placed:
+ * in the right margin for one-sided layout
+ * in the outside margin for two-sided layout (|twoside|)
+ * in the nearest margin for two-column layout (|twocolumn|)
+
+\reversemarginpar *\reversemarginpar*
+ By issuing the command |\reversemarginpar|, you can force the
+ marginal notes to go into the opposite (inside) margin.
+
+When you specify both arguments, left is used for the left margin, and right
+is used for the right margin.
+
+The first word will normally not be hyphenated; you can enable hyphenation by
+prefixing the first word with a \hspace{0pt} command (|hspace|).
+
+==============================================================================
+14. Math Formulae *latex-math*
+ *displaymath*
+There are three environments (|latex-environments|) that put LaTeX in math
+mode:
+|math| For Formulae that appear right in the text.
+|displaymath| For Formulae that appear on their own line.
+|equation| The same as the displaymath environment except that it adds an
+ equation number in the right margin.
+
+The |math| environment can be used in both paragraph and LR mode, but the
+|displaymath| and |equation| environments can be used only in paragraph mode. The
+|math| and |displaymath| environments are used so often that they have the
+following short forms:
+ \(...\) instead of \begin{math}...\end{math}
+ \[...\] instead of \begin{displaymath}...\end{displaymath}
+
+In fact, the math environment is so common that it has an even shorter form:
+ $ ... $ instead of \(...\)
+
+|sub-sup| Also known as exponent or index.
+|math-symbols| Various mathematical squiggles.
+|math-spacing| Thick, medium, thin and negative spaces.
+|math-misc| Stuff that doesn't fit anywhere else.
+
+==========
+Subscripts & Superscripts *sub-sup*
+ *subscripts* *superscripts*
+
+To get an expression exp to appear as a subscript, you just type _{exp}. To
+get exp to appear as a superscript, you type ^{exp}. LaTeX handles
+superscripted superscripts and all of that stuff in the natural way. It even
+does the right thing when something has both a subscript and a superscript.
+
+==========
+Math Symbols *math-symbols*
+
+LaTeX provides almost any mathematical symbol you're likely to need. The
+commands for generating them can be used only in math mode. For example, if
+you include >
+ $\pi$
+in your source, you will get the symbol in your output.
+
+==========
+Spacing in Math Mode *math-spacing*
+
+In a math environment, LaTeX ignores the spaces you type and puts in the
+spacing that it thinks is best. LaTeX formats mathematics the way it's done in
+mathematics texts. If you want different spacing, LaTeX provides the following
+four commands for use in math mode:
+ \; - a thick space *math;*
+ \: - a medium space *math:*
+ \, - a thin space *math,*
+ \! - a negative thin space *matn!*
+
+==========
+Math Miscellany *math-misc*
+
+\cdots *\cdots*
+ Produces a horizontal ellipsis where the dots are raised to
+ the centre of the line.
+\ddots *\ddots*
+ Produces a diagonal ellipsis.
+\frac{num}{den} *\frac*
+ Produces the fraction num divided by den.
+\ldots *\ldots*
+ Produces an ellipsis. This command works in any mode, not just
+ math mode.
+\overbrace{text} *\overbrace*
+ Generates a brace over text.
+\overline{text} *\overline*
+ Causes the argument text to be overlined.
+\sqrt[root]{arg} *\sqrt*
+ Produces the square root of its argument. The optional
+ argument, [root], determines what root to produce, i.e., the
+ cube root of x+y would be typed as: >
+ $\sqrt[3]{x+y}$.
+\underbrace{text} *\underbrace*
+ Generates text with a brace underneath.
+\underline{text} *\underline*
+ Causes the argument text to be underlined. This command can
+ also be used in paragraph and LR mode.
+\vdots *\vdots*
+ Produces a vertical ellipsis.
+
+==============================================================================
+15. Modes *latex-modes*
+
+When LaTeX is processing your input text, it is always in one of three modes:
+ Paragraph mode *paragraph-mode*
+ Math mode *math-mode*
+ Left-to-right mode, called LR mode for short. *lr-mode*
+
+LaTeX changes mode only when it goes up or down a staircase to a different
+level, though not all level changes produce mode changes. Mode changes occur
+only when entering or leaving an environment, or when LaTeX is processing the
+argument of certain text-producing commands.
+
+|paragraph-mode| is the most common; it's the one LaTeX is in when processing
+ordinary text. In that mode, LaTeX breaks your text into lines and breaks the
+lines into pages. LaTeX is in |math-mode| when it's generating a mathematical
+formula. In |lr-mode|, as in |paragraph-mode|, LaTeX considers the output that
+it produces to be a string of words with spaces between them. However, unlike
+|paragraph-mode|, LaTeX keeps going from left to right; it never starts a new
+line in |lr-mode|. Even if you put a hundred words into an |\mbox|, LaTeX would
+keep typesetting them from left to right inside a single box, and then
+complain because the resulting box was too wide to fit on the line.
+
+LaTeX is in |lr-mode| when it starts making a box with an |\mbox| command. You
+can get it to enter a different mode inside the box - for example, you can
+make it enter |math-mode| to put a formula in the box. There are also several
+text-producing commands and environments for making a box that put LaTeX in
+|paragraph-mode|. The box make by one of these commands or environments will be
+called a |\parbox|. When LaTeX is in |paragraph-mode| while making a box, it is
+said to be in "inner paragraph mode". Its normal |paragraph-mode|, which it
+starts out in, is called "outer paragraph mode".
+
+==============================================================================
+16. Page Styles *latex-page-styles*
+
+The |\documentclass| command determines the size and position of the page's head
+and foot. The page style determines what goes in them.
+
+|\maketitle| Generate a title page.
+|\pagenumbering| Set the style used for page numbers.
+|\pagestyle| Change the headings/footings style.
+|\thispagestyle| Change the headings/footings style for this page.
+
+\maketitle *\maketitle*
+ The |\maketitle| command generates a title on a separate title
+ page - except in the |\article| class, where the title normally
+ goes at the top of the first page. Information used to
+ produce the title is obtained from the following declarations:
+
+ |\author| Who wrote this stuff?
+ |\date| The date the document was created.
+ |\thanks| A special form of footnote.
+ |\title| How to set the document title.
+
+ \author{names} *\author* *\and*
+ The |\author| command declares the author(s), where
+ names is a list of authors separated by \and commands.
+ Use |\\| to separate lines within a single author's
+ entry -- for example, to give the author's institution
+ or address.
+
+ \date{text} *\date*
+ The |\date| command declares text to be the document's
+ date. With no |\date| command, the current date is
+ used.
+
+ \thanks{text} *\thanks*
+ The |\thanks| command produces a |\footnote| to the
+ title.
+
+ \title{text} *\title*
+ The |\title| command declares text to be the title. Use
+ |\\| to tell LaTeX where to start a new line in a long
+ title.
+
+\pagenumbering{numstyle} *\pagenumbering*
+ Specifies the style of page numbers. Possible values of
+ 'numstyle' are:
+ arabic - Arabic numerals *arabic*
+ roman - Lowercase Roman numerals *roman*
+ Roman - Uppercase Roman numerals *Roman*
+ alph - Lowercase letters *alph*
+ Alph - Uppercase letters *Alph*
+
+\pagestyle{option} *\pagestyle*
+ *plain* *empty* *headings*
+ The |\pagestyle| command changes the style from the current
+ page on throughout the remainder of your document.
+ The valid options are:
+ plain - Just a plain page number.
+ empty - Produces empty heads and feet no page numbers.
+ headings - Puts running headings on each page. The document
+ style specifies what goes in the headings.
+ myheadings - You specify what is to go in the heading with the
+ |\markboth| or the |\markright| commands.
+
+ |\markboth| Set left and right headings.
+ |\markright| Set right heading only.
+
+ \markboth{left head}{right head} *\markboth*
+ The |\markboth| command is used in conjunction with the
+ page style myheadings for setting both the left and
+ the right heading.
+ Note that a "left-hand heading" is generated by the
+ last |\markboth| command before the end of the page,
+ while a "right-hand heading" is generated by the first
+ |\markboth| or |\markright| that comes on the page if
+ there is one, otherwise by the last one before the
+ page.
+
+
+ \markright{right head} *\markright*
+ The |\markright| command is used in conjunction with
+ the page style |\myheadings| for setting the right
+ heading, leaving the left heading unchanged.
+ Note that a "left-hand heading" is generated by the
+ last |\markboth| command before the end of the page,
+ while a "right-hand heading" is generated by the first
+ |\markboth| or |\markright| that comes on the page if
+ there is one, otherwise by the last one before the
+ page.
+
+\thispagestyle{option} *\thispagestyle*
+ The |\thispagestyle| command works in the same manner as the
+ |\pagestyle| command except that it changes the style for the
+ current page only.
+
+==============================================================================
+17. Sectioning *latex-sectioning*
+
+Sectioning commands provide the means to structure your text into units.
+|\part|
+|\chapter| (report and book class only)
+|\section|
+|\subsection|
+|\subsubsection|
+|\paragraph|
+|\subparagraph|
+
+All sectioning commands take the same general form, i.e.,
+
+ *\part*
+ *\chapter* (report and book class only)
+ *\section* *\subsection* *\subsubsection*
+ *\paragraph* *\subparagraph*
+\chapter[optional]{title}
+ In addition to providing the heading in the text, the
+ mandatory argument of the sectioning command can appear in two
+ other places:
+ 1. The table of contents
+ 2. The running head at the top of the page. You may not want
+ the same thing to appear in these other two places as
+ appears in the text heading. To handle this situation, the
+ sectioning commands have an optional argument that provides
+ the text for these other two purposes.
+
+All sectioning commands have *\-forms that print a title, but do not include a
+number and do not make an entry in the table of contents.
+
+\appendix *\appendix*
+ The |\appendix| command changes the way sectional units are
+ numbered. The |\appendix| command generates no text and does
+ not affect the numbering of parts. The normal use of this
+ command is something like: >
+ \chapter{The First Chapter}
+ ...
+ \appendix \chapter{The First Appendix}
+
+
+==============================================================================
+18. Spaces & Boxes *latex-spaces-boxes*
+
+All the predefined length parameters See section Predefined lengths can be
+used in the arguments of the box-making commands.
+
+ Horizontal space:
+
+|\dotfill| Stretchable horizontal dots.
+|\hfill| Stretchable horizontal space.
+|\hrulefill| Stretchable horizontal rule.
+|\hspace| Fixed horizontal space.
+
+ Vertical space:
+
+|\addvspace| Fixed vertical space.
+|\bigskip| Fixed vertical space.
+|\medskip| Fixed vertical space.
+|\smallskip| Fixed vertical space.
+|\vfill| Stretchable vertical space.
+|\vspace| Fixed vertical space.
+
+ Boxes:
+
+|\fbox| Framebox.
+|\framebox| Framebox, adjustable position.
+|\lrbox| An environment like |\sbox|.
+|\makebox| Box, adjustable position.
+|\mbox| Box.
+|\newsavebox| Declare a name for saving a box.
+|\parbox| Box with text in paragraph mode.
+|\raisebox| Raise or lower text.
+|\rule| Lines and squares.
+|\savebox| Like |\makebox|, but save the text for later use.
+|\sbox| Like |\mbox|, but save the text for later use.
+|\usebox| Print saved text.
+
+Horizontal space: *latex-hor-space*
+
+LaTeX removes horizontal space that comes at the end of a line. If you don't
+want LaTeX to remove this space, include the optional * argument. Then the
+space is never removed.
+
+\dotfill *\dotfill*
+ The |\dotfill| command produces a "rubber length" that produces
+ dots instead of just spaces.
+
+\hfill *\hfill*
+ The |\hfill| fill command produces a "rubber length" which can
+ stretch or shrink horizontally. It will be filled with spaces.
+
+\hrulefill *\hrulefill*
+ The |\hrulefill| fill command produces a "rubber length" which
+ can stretch or shrink horizontally. It will be filled with a
+ horizontal rule.
+
+\hspace[*]{length} *\hspace*
+ The |\hspace| command adds horizontal space. The length of the
+ space can be expressed in any terms that LaTeX understands,
+ i.e., points, inches, etc. You can add negative as well as
+ positive space with an |\hspace| command. Adding negative space
+ is like backspacing.
+
+
+Vertical space: *latex-ver-space*
+
+LaTeX removes vertical space that comes at the end of a page. If you don't
+want LaTeX to remove this space, include the optional * argument. Then the
+space is never removed.
+
+\addvspace{length} *\addvspace*
+ The |\addvspace| command normally adds a vertical space of
+ height length. However, if vertical space has already been
+ added to the same point in the output by a previous
+ |\addvspace| command, then this command will not add more space
+ than needed to make the natural length of the total vertical
+ space equal to length.
+
+\bigskip *\bigskip*
+ The |\bigskip| command is equivalent to \vspace{bigskipamount}
+ where bigskipamount is determined by the document class.
+
+\medskip *\medskip*
+ The |\medskip| command is equivalent to \vspace{medskipamount}
+ where medskipamount is determined by the document class.
+
+\smallskip *\smallskip*
+ The |\smallskip| command is equivalent to
+ \vspace{smallskipamount} where smallskipamount is determined
+ by the document class.
+
+\vfill *\vfill*
+ The |\vfill| fill command produces a rubber length which can
+ stretch or shrink vertically.
+
+\vspace[*]{length} *\vspace*
+ The |\vspace| command adds vertical space. The length of the
+ space can be expressed in any terms that LaTeX understands,
+ i.e., points, inches, etc. You can add negative as well as
+ positive space with an |\vspace| command.
+
+
+Boxes: *latex-boxes*
+
+\fbox{text} *\fbox*
+ The |\fbox| command is exactly the same as the |\mbox| command,
+ except that it puts a frame around the outside of the box that
+ it creates.
+
+\framebox[width][position]{text} *\framebox*
+ The |\framebox| command is exactly the same as the |\makebox|
+ command, except that it puts a frame around the outside of the
+ box that it creates.
+ The |\framebox| command produces a rule of thickness
+ |\fboxrule|, and leaves a space |\fboxsep| between the rule and
+ the contents of the box.
+
+lrbox *\lrbox*
+\begin{lrbox}{cmd} text \end{lrbox}
+ This is the environment form of |\sbox|.
+ The text inside the environment is saved in the box cmd, which
+ must have been declared with |\newsavebox|.
+
+\makebox[width][position]{text} *\makebox*
+ The |\makebox| command creates a box just wide enough to
+ contain the text specified. The width of the box is specified
+ by the optional [width] argument. The position of the text
+ within the box is determined by the optional [position]
+ argument.
+ c -- centred (default)
+ l -- flushleft
+ r -- flushright
+ s -- stretch from left to right margin. The text must
+ contain stretchable space for this to work.
+ See section |\picture-makebox|.
+
+\mbox{text} *\mbox*
+ The |\mbox| command creates a box just wide enough to hold the
+ text created by its argument.
+ Use this command to prevent text from being split across
+ lines.
+
+\newsavebox{cmd} *\newsavebox*
+ Declares {cmd}, which must be a command name that is not
+ already defined, to be a bin for saving boxes.
+
+
+\parbox[position][height][innerpos]{width}{text} *\parbox*
+ A parbox is a box whose contents are created in
+ |\paragraph-mode|. The |\parbox| has two
+
+ Mandatory arguments:
+'width' specifies the width of the parbox
+'text' the text that goes inside the parbox.
+
+ Optional arguments:
+'position' LaTeX will position a parbox so its centre lines up with the
+ centre of the text line. The optional position argument allows
+ you to line up either the top or bottom line in the parbox
+ (default is top).
+
+'height' If the height argument is not given, the box will have the
+ natural height of the text.
+
+'innerpos' The inner-pos argument controls the placement of the text
+ inside the box. If it is not specified, position is used.
+ t -- text is placed at the top of the box
+ c -- text is centred in the box
+ b -- text is placed at the bottom of the box
+ s -- stretch vertically. The text must contain
+ vertically stretchable space for this to work.
+
+ A |\parbox| command is used for a parbox containing a small
+ piece of text, with nothing fancy inside. In particular, you
+ shouldn't use any of the paragraph-making environments inside
+ a |\parbox| argument. For larger pieces of text, including ones
+ containing a paragraph-making environment, you should use a
+ |\minipage| environment.
+
+\raisebox{distance}[extendabove][extendbelow]{text} *\raisebox*
+ The |\raisebox| command is used to raise or lower text. The
+ first mandatory argument specifies how high the text is to be
+ raised (or lowered if it is a negative amount). The text
+ itself is processed in LR mode.
+ Sometimes it's useful to make LaTeX think something has a
+ different size than it really does - or a different size than
+ LaTeX would normally think it has. The |\raisebox| command
+ lets you tell LaTeX how tall it is.
+ The first optional argument, extend-above, makes LaTeX think
+ that the text extends above the line by the amount specified.
+ The second optional argument, extend-below, makes LaTeX think
+ that the text extends below the line by the amount specified.
+
+\rule[raiseheight]{width}{thickness} *\rule*
+ The |\rule| command is used to produce horizontal lines. The
+ arguments are defined as follows:
+'raiseheight' specifies how high to raise the rule (optional)
+'width' specifies the length of the rule (mandatory)
+'thickness' specifies the thickness of the rule (mandatory)
+
+\savebox{cmd}[width][pos]{text} *\savebox*
+ This command typeset text in a box just as for |\makebox|.
+ However, instead of printing the resulting box, it saves it in
+ bin cmd, which must have been declared with |\newsavebox|.
+
+\sbox{text} *\sbox*
+ This commands typeset text in a box just as for |\mbox|.
+ However, instead of printing the resulting box, it saves it in
+ bin cmd, which must have been declared with |\newsavebox|.
+
+\usebox{cmd} *\usebox*
+ Prints the box most recently saved in bin cmd by a |\savebox|
+ command.
+
+==============================================================================
+19. Special Characters *latex-special*
+
+The following characters play a special role in LaTeX and are called "special
+printing characters", or simply "special characters". >
+ # $ % & ~ _ ^ \ { }
+Whenever you put one of these special characters into your file, you are doing
+something special. If you simply want the character to be printed just as any
+other letter, include a \ in front of the character. For example, \$ will
+produce $ in your output.
+
+One exception to this rule is the \ itself because |\\| has its own special
+meaning. A \ is produced by typing $\backslash$ in your file.
+
+Also, \~ means `place a tilde accent over the following letter', so you will
+probably want to use |\verb| instead.
+ *\symbol*
+In addition, you can access any character of a font once you know its number
+by using the |\symbol| command. For example, the character used for displaying
+spaces in the |\verb|* command has the code decimal 32, so it can be typed as
+\symbol{32}.
+
+You can also specify octal numbers with ' or hexadecimal numbers with ", so
+the previous example could also be written as \symbol{'40} or \symbol{"20}.
+
+==============================================================================
+20. Splitting the Input *latex-inputting*
+
+A large document requires a lot of input. Rather than putting the whole input
+in a single large file, it's more efficient to split it into several smaller
+ones. Regardless of how many separate files you use, there is one that is the
+root file; it is the one whose name you type when you run LaTeX.
+
+|\include| Conditionally include a file
+|\includeonly| Determine which files are included
+|\input| Unconditionally include a file
+
+\include{file} *\include*
+ The \include command is used in conjunction with the
+ |\includeonly| command for selective inclusion of
+ files. The file argument is the first name of a file,
+ denoting `file.tex' . If file is one the file names in
+ the file list of the |\includeonly| command or if there
+ is no |\includeonly| command, the \include command is
+ equivalent to: >
+ \clearpage \input{file} \clearpage
+<
+ except that if the file `file.tex' does not exist,
+ then a warning message rather than an error is
+ produced. If the file is not in the file list, the
+ \include command is equivalent to |\clearpage|.
+
+ The |\include| command may not appear in the preamble or in a
+ file read by another |\include| command.
+
+\includeonly{filelist} *\includeonly*
+ The |\includeonly| command controls which files will be read in
+ by an |\include| command. {filelist} should be a
+ comma-separated list of filenames. Each filename must match
+ exactly a filename specified in a |\include| command. This
+ command can only appear in the preamble.
+
+\input{file} *\input*
+ The |\input| command causes the indicated file to be read and
+ processed, exactly as if its contents had been inserted in the
+ current file at that point. The file name may be a complete
+ file name with extension or just a first name, in which case
+ the file `file.tex' is used.
+==============================================================================
+21. Starting & Ending *latex-start-end*
+
+Your input file must contain the following commands as a minimum:
+\documentclass{class} |\documentclass|
+\begin{document} |\begin|
+... your text goes here ...
+\end{document} |\end|
+
+where the class selected is one of the valid classes for LaTeX.
+See |\classes|for details of the various document classes.
+
+You may include other LaTeX commands between the |\documentclass| and the
+\begin{document} commands (i.e., in the `preamble').
+==============================================================================
+22. Table of Contents *latex-toc*
+
+ *\tableofcontents*
+A table of contents is produced with the |\tableofcontents| command. You put
+the command right where you want the table of contents to go; LaTeX does the
+rest for you. It produces a heading, but it does not automatically start a new
+page. If you want a new page after the table of contents, include a |\newpage|
+command after the |\tableofcontents| command.
+
+ *\listoffigures* *\listoftables*
+There are similar commands |\listoffigures| and |\listoftables| for producing a
+list of figures and a list of tables, respectively. Everything works exactly
+the same as for the table of contents.
+
+ *\nofiles*
+NOTE: If you want any of these items to be generated, you cannot have the
+\nofiles command in your document.
+
+|\addcontentsline| Add an entry to table of contents etc.
+|\addtocontents| Add text directly to table of contents file etc.
+
+\addcontentsline{file}{secunit}{entry} *\addcontentsline*
+ The |\addcontentsline| command adds an entry to the specified
+ list or table where:
+{file} is the extension of the file on which information is to be
+ written:
+ toc (table of contents),
+ lof (list of figures),
+ lot (list of tables).
+{secunit} controls the formatting of the entry. It should be one of the
+ following, depending upon the value of the file argument:
+ toc -- the name of the sectional unit, such as part or
+ subsection.
+ lof -- figure
+ lot -- table
+{entry} is the text of the entry.
+
+\addtocontents{file}{text} *\addtocontents*
+ The |\addtocontents| command adds text (or formatting commands)
+ directly to the file that generates the table of contents or
+ list of figures or tables.
+{file} is the extension of the file on which information is to be written:
+ toc (table of contents),
+ lof (list of figures),
+ lot (list of tables).
+{text} is the information to be written.
+
+==============================================================================
+23. Terminal Input/Output *latex-terminal*
+
+|\typein| Read text from the terminal.
+|\typeout| Write text to the terminal.
+
+\typein[cmd]{msg} *\typein*
+ Prints {msg} on the terminal and causes LaTeX to stop and wait
+ for you to type a line of input, ending with return. If the
+ [cmd] argument is missing, the typed input is processed as if
+ it had been included in the input file in place of the
+ |\typein| command. If the [cmd] argument is present, it must be
+ a command name. This command name is then defined or redefined
+ to be the typed input.
+
+\typeout{msg} *\typeout*
+ Prints {msg} on the terminal and in the `.log' file. Commands
+ in {msg} that are defined with |\newcommand| or |\renewcommand|
+ are replaced by their definitions before being printed.
+
+ *\space*
+LaTeX's usual rules for treating multiple spaces as a single space and
+ignoring spaces after a command name apply to {msg}. A |\space| command in {msg}
+causes a single space to be printed. A ^^J in {msg} prints a newline.
+
+==============================================================================
+24. Typefaces *latex-typefaces*
+
+The typeface is specified by giving the "size" and "style". A typeface is also
+called a "font".
+|font-styles| Select roman, italics etc.
+|font-size| Select point size.
+|font-lowlevelcommands| Commands for wizards.
+
+Styles *font-styles*
+
+The following type style commands are supported by LaTeX.
+
+These commands are used like: >
+ \textit{italics text}.
+The corresponding command in parenthesis is the "declaration form", which
+takes no arguments. The scope of the declaration form lasts until the next
+type style command or the end of the current group.
+
+The declaration forms are cumulative; i.e., you can say: >
+ \sffamily\bfseries
+to get sans serif boldface.
+
+You can also use the environment form of the declaration forms; e.g.: >
+ \begin{ttfamily}...\end{ttfamily}.
+<
+\textrm (\rmfamily) *\textrm* *\rmfamily*
+ Roman
+
+\textit (\itshape) *\textit* *\itshape* *\emph*
+ Emphasis (toggles between |\textit| and |\textrm|).
+
+\textmd (\mdseries) *\textmd* *\mdseries*
+ Medium weight (default). The opposite of boldface.
+
+\textbf (\bfseries) *\textbf* *\bfseries*
+ Boldface.
+
+\textup (\upshape) *\textup* *\upshape*
+ Upright (default). The opposite of slanted.
+
+\textsl (\slshape) *\textsl* *\slshape*
+ Slanted.
+
+\textsf (\sffamily) *\textsf* *\sffamily*
+ Sans serif.
+
+\textsc (\scshape) *\textsc* *\scshape*
+ Small caps.
+
+\texttt (\ttfamily) *\texttt* *\ttfamily*
+ Typewriter.
+
+\textnormal (\normalfont) *\textnormal* *\normalfont*
+ Main document font.
+
+\mathrm *\mathrm*
+ Roman, for use in math mode.
+
+\mathbf *\mathbf*
+ Boldface, for use in math mode.
+
+\mathsf *\mathsf*
+ Sans serif, for use in math mode.
+
+\mathtt *\mathtt*
+ Typewriter, for use in math mode.
+
+\mathit *\mathit*
+ Italics, for use in math mode, e.g. variable names with
+ several letters.
+
+\mathnormal *\mathnormal*
+ For use in math mode, e.g. inside another type style
+ declaration.
+
+\mathcal *\mathcal*
+ `Calligraphic' letters, for use in math mode.
+
+ *\mathversion*
+In addition, the command \mathversion{bold} can be used for switching to bold
+letters and symbols in formulas. \mathversion{normal} restores the default.
+
+==========
+Sizes *font-size*
+
+The following standard type size commands are supported by LaTeX.
+
+The commands as listed here are "declaration forms". The scope of the
+declaration form lasts until the next type style command or the end of the
+current group.
+
+You can also use the environment form of these commands; e.g. >
+ \begin{tiny}...\end{tiny}
+
+\tiny *\tiny*
+\scriptsize *\scriptsize*
+\footnotesize *\footnotesize*
+\small *\small*
+\normalsize(default) *\normalsize*
+\large *\large*
+\Large *\Large*
+\LARGE *\LARGE*
+\huge *\huge*
+\Huge *\Huge*
+
+==========
+Low-level font commands *font-lowlevelcommands*
+
+These commands are primarily intended for writers of macros and packages. The
+commands listed here are only a subset of the available ones. For full
+details, you should consult Chapter 7 of The LaTeX Companion.
+
+\fontencoding{enc} *\fontencoding*
+ Select font encoding. Valid encodings include OT1 and T1.
+
+\fontfamily{family} *\fontfamily*
+ Select font family. Valid families include:
+ cmr for Computer Modern Roman
+ cmss for Computer Modern Sans Serif
+ cmtt for Computer Modern Typewriter
+ and numerous others.
+
+\fontseries{series} *\fontseries*
+ Select font series. Valid series include:
+ m Medium (normal)
+ b Bold
+ c Condensed
+ bc Bold condensed
+ bx Bold extended
+ and various other combinations.
+
+\fontshape{shape} *\fontshape*
+ Select font shape. Valid shapes are:
+ n Upright (normal)
+ it Italic
+ sl Slanted (oblique)
+ sc Small caps
+ ui Upright italics
+ ol Outline
+ The two last shapes are not available for most font families.
+
+\fontsize{size}{skip} *\fontsize*
+ Set font size. The first parameter is the font size to switch
+ to; the second is the \baselineskip to use. The unit of both
+ parameters defaults to pt. A rule of thumb is that the
+ baselineskip should be 1.2 times the font size.
+
+\selectfont *\selectfont*
+ The changes made by calling the four font commands described
+ above do not come into effect until |\selectfont| is called.
+
+\usefont{enc}{family}{series}{shape} *\usefont*
+ Equivalent to calling |\fontencoding|, |\fontfamily|,
+ |\fontseries| and |\fontshape| with the given parameters,
+ followed by |\selectfont|.
+
+==============================================================================
+25. Parameters *latex-parameters*
+
+The input file specification indicates the file to be formatted; TeX uses
+`.tex' as a default file extension. If you omit the input file entirely, TeX
+accepts input from the terminal. You specify command options by supplying a
+string as a parameter to the command; e.g. >
+
+ latex "\scrollmode\input foo.tex"
+
+will process `foo.tex' without pausing after every error.
+
+Output files are always created in the current directory. When you fail to
+specify an input file name, TeX bases the output names on the file
+specification associated with the logical name TEX_OUTPUT, typically
+texput.log.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/.vim/doc/ps_color.txt b/.vim/doc/ps_color.txt
new file mode 100644
index 0000000..caf6a4a
--- /dev/null
+++ b/.vim/doc/ps_color.txt
@@ -0,0 +1,585 @@
+*ps_color.txt* PSC For Vim version 6.3 Last change: 17 November 2004
+
+
+PERSONAL COLOUR SWITCHER *ps_colour* *pscolor*
+
+
+Author: Pan, Shizhu. <dicpan> at <hotmail o com> >
+ (prepend '[VIM]' in the title or your mail may be silently removed.)
+<
+==============================================================================
+CONTENTS *psc* *psc-contents*
+
+ 1. Contents.....................|psc-contents|
+ 2. PSC Overview.................|psc-overview|
+ 3. PSC Installation.............|psc-usage|
+ 4. PSC Options..................|psc-options|
+ 5. PSC under color term ........|psc-cterm|
+ 6. PSC FAQ and Tips ............|psc-faq|
+ 7. PSC Release notes............|psc-release-notes|
+ 8. PSC Todo List................|psc-todo|
+
+For release notes, please see the header of ps_color.vim
+
+==============================================================================
+PSC FEATURES OVERVIEW *psc-features* *psc-overview*
+
+ Features ~
+
+ . PSC is firstly a color scheme which have both dark and light
+ background styles.
+ . It can have the same appearance in [cterm] as in [gui].
+ . It is designed with gentle color to minimize fatigue of eye.
+ . It also works with other color schemes.
+ . Default foreground and background can easily be changed, it is more
+ configurable than most other color schemes
+ . Works with the optional tool reloaded.vim, can change the whole
+ color scheme in Hue,Saturation,Luminance color space.
+
+ Design Concern ~
+
+ At the first glance this color scheme may look pretty 'dull', don't be
+ afraid, this is quite normal. Bear in mind that a text editor is not
+ a photo album, if a text editor looks exciting you may not be able to
+ stare at it for a long time.
+
+ Predefined Vim Syntax highlighting can be too colorful or contrasty so
+ that many programmers prefer to switch off the syntax highlighting at
+ work. That is not a good idea because you will lost the advantages of
+ syntax high-lighting. It is often the case that we have to work for
+ 300+ minutes, then I decide to do-it-myself.
+
+ Many user-defined color schemes in vim.sf.net tend to achieve low
+ contrast by having a strong color-cast, i.e. looks blueish or
+ yellowish or reddish. This does look comfortable at first, however,
+ any type of color-cast will cause the eyes less sensitive for
+ particular color after a long-time work session, and that's no good to
+ health.
+
+ Efforts had been made to ensure no color-cast for this scheme, all
+ elementary colors like RGB and CYMK are evenly used. Like TeX,
+ 'consistency' is the principle this color scheme based on. Default
+ values which hurt consistency are amended according to the vim script
+ syntax/hitest.vim
+
+ There are 3 parameters to describe a color: Hue, Saturation and
+ Brightness. In this color scheme, the saturation is low and the
+ brightness are designed to be very close to each other in order not to
+ fatigue our eyes after a whole day's programming work.
+
+ Portability ~
+
+ Different monitor settings led to different look. In this color
+ scheme, it is assumed that the monitor adjust at 6500k color
+ temperature with a good gamma curve. If you have a 9300k monitor or
+ if the gamma curve is not optimal, the appearance may be less
+ comfortable, use adobe gamma loader or similar tools to adjust
+ your monitor if your monitor do not have the option to change color
+ temperature and/or gamma curve.
+
+ Needless to say, VI is an editor originally designed to do edit tasks
+ in a text terminal, and VIM is an improved version of VI. Its a shame
+ that a color scheme cannot have a satisfactory appearance in cterm.
+ The cterm compatibility should be considered high priority when
+ designing ViM color scheme.
+
+ I had made much attempt to make support for 8-color terminals,
+ however, 8 colors is not enough to represent a color scheme. Finally
+ I end up making the cterm support for 16-color terminal. Have to say
+ sorry if the color scheme sucks in your 8-color terminal, I had tried
+ my best. More details about cterm please see |psc-cterm|.
+
+ *psc-about-background*
+ About the Background ~
+
+ We have talked about off-white backgrounds, any background which is
+ not black, grey or white should be changed constantly in order not to
+ make the eyes less sensitive to particular color. i.e. you can use
+ blue background on Monday, red background on Tuesday, green background
+ on Wednesday, but if you use blue background everyday, that's no good
+ to your health.
+
+ Now we talk about the brightness of the background. Why dark
+ background is preferred over others? There are many reasons, such as,
+ the monitor emits lower radiation for black background. You may have
+ lots of similar reasons...
+
+ But I'll talk about something you may not know:
+>
+ It is easier to distinguish foreground colors on a dark background
+ than on a light background.
+
+ At the same time, it is easier to distinguish background colors on
+ a light background than on a dark background.
+
+ We will mainly change foreground colors for syntax highlighting.
+<
+ Hence, we can reduce the contrast and saturation of the color in
+ a dark-background scheme, while retain the readability. Schemes with
+ white background usually comes with higher contrast and saturation.
+ This is probably the most important reason that the color scheme is
+ designed to be dark-background instead of light one.
+
+ Now we came to know, that change the foreground color is enough to
+ emphasis text in a dark background, while for a white background, we
+ need to change the font shape (bold or italic, etc.), or change the
+ background color to effectively emphasis the text. This is probably
+ the reason Vim default scheme has bold properties for highlighting
+ groups, because the default scheme is a light background one.
+
+ No one knows what color scheme is best for you, except yourself. Try!
+
+==============================================================================
+PSC INSTALLATION *psc-usage*
+
+ Step 1, Enable the color scheme ~
+
+ To use PSC is simple, just put ps_color.vim into your
+ [runtimepath]/colors and append the line >
+
+ colorscheme ps_color
+<
+ to your |.vimrc|. The [runtimepath] can be any directory listed in
+ |vimfiles|, normally your $HOME/.vim in Unix or $HOME/vimfiles in
+ Windows.
+
+ Step 2, Install the help document ~
+
+ The help document will be automatically installed when the colorscheme
+ be sourced the first time. If it is not, type :colo ps_color now.
+
+ After successfully installed the help document, you can use >
+
+ :help psc-options
+<
+ to go to the following section.
+
+==============================================================================
+PSC OPTIONS *psc-options*
+
+ You can let these options in your ~/.vimrc, most options works for
+ both GUI and cterm, only some of them do not work for both.
+
+ Options set using the 'let' command must present [BEFORE] the color
+ scheme been sourced.
+
+ *psc_style*
+ Style ~
+>
+ let psc_style='cool'
+ let psc_style='warm'
+ let psc_style='default'
+ let psc_style='defdark'
+<
+ This selects between styles of colors,
+ The 'cool' is the default, dark background.
+ The 'warm' is the experimental, light background scheme.
+
+ See |psc-about-background| for more knowledge about the background,
+ and the differences of two style.
+
+ The 'default' and 'defdark' refers to Vim system default color scheme.
+ Which are provided only for reference.
+
+ Let psc_style to any string other than the above 4 will switch to the
+ specified color scheme. For example, let psc_style='desert' and then
+ activate the ps_color, the color scheme will be chosen according to
+ desert.vim color scheme.
+
+ *psc_cterm_style*
+ Color Term Style ~
+>
+ let psc_cterm_style='cool'
+<
+ This is exactly the same to psc_style, except that it only affects the
+ console version of vim in a color terminal, the 'warm' is not
+ available for cterm.
+ By default, it will be set to the same value as 'psc_style'. You can
+ change it if you want different style in cterm from gui.
+
+
+ *psc_fontface*
+ Font face ~
+>
+ let psc_fontface='plain'
+ let psc_fontface='mixed'
+<
+ The Vim default behavior is the 'mixed', however, the mixed font style
+ in a dark colorscheme is not optimal. This color uses 'plain' for
+ 'cool' style, i.e. No texts are bolded font. For 'warm', the default
+ is still 'mixed', If you want the mixed style in which the highlighted
+ statements are bolded font, choose this. If you want all texts be
+ bolded, choose 'plain' and specify a bolded guifont or terminal font.
+
+ In GUI, this option also works for other color schemes. You can
+ disable the bold font and use your favorite color scheme. See
+ |psc-faq-ffothers| for detail.
+
+ *psc_inversed_todo*
+ Inversed Todo ~
+>
+ let psc_inversed_todo=1
+<
+ When set to 1, the TODO group will be dark background with light font,
+ Otherwise, the TODO group have light background with dark foreground.
+ Default is 0.
+
+ *psc_use_default_for_cterm*
+ Use default for cterm (obsoleted)~
+
+ This option is Obsoleted, retained only for backward compatibility,
+ see |psc_cterm_style| for alternative.
+
+ *psc_statement_different_from_type*
+ Statement different from type ~
+>
+ let psc_statement_different_from_type=1
+<
+ The Statement-group and Type-group are easy to distinguish, different
+ color for them are not necessary, I use similar color for S-group
+ & T-group in order not to make the screen too 'colorful', also this
+ saves a color name for cterm. But if you do want the Statement & Type
+ to be different color, try 'let statement_different_from_type=1' in
+ your .vimrc file, which is available only for GUI. Since the color
+ names in cterm is limited to 16 we cannot have too many different
+ colors in cterm.
+ Default is 0, i.e. they have very similar color.
+
+ *psc-change-background*
+ Changing the Background color ~
+
+ You may prefer a dark background over pure black one, and it is
+ possible to change the background, this may make life more interesting.
+ To do this is quite straight forward for GUI, just define the Normal
+ highlight in your .gvimrc, [AFTER] the color scheme has been sourced.
+
+ For example:
+>
+ highlight Normal guibg=#103040
+<
+ The #103040 will give a taste similar to oceandeep, #152535 for
+ hhazure, #303030 for desert, #404040 for zenburn... Replace #103040
+ with any color you like. You can do the same to guifg foreground if
+ you are careful enough, remember this is only possible with ps_color
+ version 2.7 or above, and only possible for GUI.
+
+ You can do this to the NonText group also, for example.
+>
+ highlight NonText guibg=#202020
+<
+ will give you a taste similar to most color schemes on vim.sf.net, in
+ which the NonText has a different background than Normal text.
+ However, this is only useful in GUI, in cterm, there are only
+ 8 background colors, so it is wise not to have a different color.
+
+ If you want more variations, please try the optional utility
+ reloaded.vim, this optional utility provides an amazing level of
+ customization.
+
+ Quick switching between warm and cold styles ~
+
+ Here is an example to define hot key of different style switching,
+ note that I had only given this example without actually define it.
+ You can choose to define it in .vimrc or anyway you prefer.
+>
+ nnoremap <Leader>pc :let psc_style='cool'<CR>:colo ps_color<CR>
+ nnoremap <Leader>pw :let psc_style='warm'<CR>:colo ps_color<CR>
+<
+ Alternatively, you can use the capitalized :Colo command, like
+ :Colo cool or :Colo warm
+
+==============================================================================
+PSC WITH CTERM *psc-cterm*
+
+ Colour Term ~
+
+ The cterm color is designed mainly in these terminals:
+>
+ 1. Cygwin bash shell in NT command prompt box
+ 2. XTERM and RXVT
+ 3. Other color terminals which have at least 16 colors
+<
+ *psc-cterm-nt*
+ In Windows NT Prompt console you can change the exact value of each
+ color, so you can have the same color with your GUI version of Vim,
+ for 'cool' color style you just change the color according to the
+ |psc-cterm-color-table|, for how to redefine the color of Windows NT
+ prompt console please see Windows Help.
+
+ NT Cygwin bash shell console supports 16 foreground colors by add bold
+ attribute to 8 color, the cterm=bold specifies which should be bright
+ color, so totally the 16 color foreground is available, but color
+ name DarkXXX and LightXXX are the same.
+
+ The pre-configured Cygwin.lnk is available for download on my web page
+ for Vim, but the site seems down, if my site would be on again, it
+ should be at the following URL: >
+ http://poet.tomud.com/pub/Cygwin.lnk.gz
+<
+ Cygwin is highly recommended for Vim user if you are using Windows NT
+ based systems (e.g. NT 4.0, Win2k, WinXP, Win2003, etc). But Cygwin is
+ not that versatile under Windows 95/98/ME. I'm not sure whether this
+ works for DOS DJGPP or Windows 95 console version of Vim because
+ I don't have the system, in case you encountered problem please
+ contact me, if you like.
+
+ *psc-cterm-xterm*
+ XTERM is a much more feature-rich terminal than Windows Console so the
+ support is much better, add the following recommend line into your
+ .Xdefaults and you can achieve the same color as in GUI version.
+
+ Add the following into your .Xdefaults:
+ This works for XTERM and RXVT.
+>
+ XTerm*color0: #000000
+ XTerm*color1: #800000
+ XTerm*color2: #008000
+ XTerm*color3: #d0d090
+ XTerm*color4: #000080
+ XTerm*color5: #800080
+ XTerm*color6: #a6caf0
+ XTerm*color7: #d0d0d0
+ XTerm*color8: #b0b0b0
+ XTerm*color9: #f08060
+ XTerm*color10: #60f080
+ XTerm*color11: #e0c060
+ XTerm*color12: #80c0e0
+ XTerm*color13: #f0c0f0
+ XTerm*color14: #c0d8f8
+ XTerm*color15: #e0e0e0
+ XTerm*cursorColor: #00f000
+
+ ! The following are recommended but optional
+ XTerm*reverseVideo: False
+ XTerm*background: #000000
+ XTerm*foreground: #d0d0d0
+ XTerm*boldMode: False
+<
+ There is an assumption that your RXVT or XTERM supports 16 colors,
+ most RXVTs and XTERMs support this, if yours do not, get a source of
+ RXVT and recompile it.
+
+ Sometimes the color mode are not recognized well, or you do not want
+ bright foreground be bolded. If this is the case, add the following in
+ your .vimrc (before the color scheme been sourced)
+>
+ if &term=='xterm' " Change 'xterm' to your term name if necessary
+ set t_Co=16
+ endif
+<
+ If the t_Co=16 have problem, set t_Co=8 and :colo ps_color again.
+ vice versa.
+
+ My rxvt works well with t_Co=16: >
+ Rxvt v2.7.10 - released: 26 MARCH 2003
+ Options:
+ XPM,transparent,utmp,menubar,frills,linespace,multichar_languages,
+ scrollbars=rxvt+NeXT+xterm,.Xdefaults
+< But I've know that my rxvt v2.6.4 in another machine has problem with
+ t_Co=16, if that is the case, set t_Co=8 instead.
+
+ *psc-cterm-others*
+ For other terminals, you can manually set the color according to the
+ following table
+
+ Hints for Manually set the color (for 'cool' style only):
+ *psc-cterm-color-table*
+ Color name Hex value Decimal value ~
+ 0 Black = #000000 0,0,0
+ 4 DarkBlue = #000080 0,0,128
+ 2 DarkGreen = #008000 0,128,0
+ 6 DarkCyan = #a6caf0 166,202,240
+ 1 DarkRed = #800000 128,0,0
+ 5 DarkMagenta = #800080 128,0,128
+ 3 DarkYellow = #d0d090 208,208,144
+ 7 Grey = #d0d0d0 208,208,208
+ 8 DarkGrey = #b0b0b0 176,176,176
+ 12 Blue = #80c0e0 128,192,224
+ 10 Green = #60f080 96,240,128
+ 14 Cyan = #c0d8f8 192,216,248
+ 9 Red = #f08060 240,128,96
+ 13 LMag. = #f0c0f0 240,192,240
+ 11 Yellow = #e0c060 224,192,96
+ 15 White = #e0e0e0 224,224,224
+
+ *psc-cterm-incompatible*
+ If your color terminal does only have 8 colors and cannot achieve 16
+ colors with cterm=bold, you may want to switch to other color schemes
+ to gain more readability. Anyway, you can specify in your .vimrc to
+ use different color scheme under different consoles and GUI.
+ For example:
+>
+ let psc_cterm_style = 'foobarcolor'
+ let psc_style = 'cool'
+ colo ps_color
+<
+ The 'foobarcolor' means the color scheme you want to choose, such as
+ 'desert', I recommend to try vim default schemes 'default' and
+ 'defdark' before experience others.
+
+==============================================================================
+PSC FAQ AND TIPS *psc-faq* *psc-tips*
+>
+ Q: What is meant by `PS' ?
+<
+ A: PS means: PostScript, PhotoShop, PerSonal, ... or anything you can
+ imagine and anything you want it do be.
+>
+ Q: How to obtain the same appreance as gui in color term?
+<
+ A: This need some work around, see |psc-cterm| for details.
+ Generally speaking, you should ensure your color term has support
+ for 16 foreground colors, and each color is customizable.
+
+ *psc-faq-ffothers* >
+ Q: How to use psc_fontface with other colorschemes?
+<
+ A: Make sure you had sourced :colo ps_color in your .vimrc, then you
+ can use the Capitalized :Colo instead of :colo
+ e.g. you want to use 'murphy', just type :Colo murphy after you
+ sourced the ps_color, the 'defdark', 'cool', 'warm' can also be
+ used here.
+>
+ Q: I updated from v2.0 to v2.3 or above, why the cterm color scheme
+ for Comment is different?
+<
+ A: The color map of DarkYellow and Yellow have been exchanged,
+ You need to reconfigure your terminal to meet the change,
+ see |psc-cterm-color-table| for guide, or if you are using xterm
+ compatible terminal, just update the .XDefaults according to
+ |psc-cterm-xterm|.
+>
+ Q: What do you mean by 'Vanilla Windows'?
+<
+ A: People often argue that Windows is not a REAL operating system.
+ Well, I agree this, but only for vanilla windows. i.e. with no
+ plug-ins installed. Vanilla windows is a very limited platform,
+ since it is not POSIX compliant.
+
+ There are currently many working around to make Windows POSIX
+ Compliant, do you still mind which OS to use when it is POSIX
+ Compliant? I don't. If you installed Cygwin kernel in your
+ NT-based Windows, the Windows will be more or less POSIX compliant
+ and you can use it in the same way as you use any Unix, BSD,
+ Solaris, Linux, XWindow, etc... What is more, Cygwin is not the
+ only kernel which makes Windows POSIX Compliant, make a google
+ search and you will find many alternatives.
+>
+ Q: How to change the Normal background color? Why don't you use
+ different background for NonText group?
+<
+ A: This is for compatibility, since we have to use only 8 colors as
+ background in a color terminal. For GUI you can change this, see
+ |psc-change-background| for details.
+
+==============================================================================
+PSC RELEASE NOTES *psc-release-notes*
+
+ 2.82 Release Note: ~
+
+ Fixed bug with the reversed group for the Vim default, or other
+ schemes.
+
+ Fixed bug with the Diff mode fg mistaken as fg.
+
+ Shrink the script a lot to improve load performance, moved the release
+ notes into document.
+
+ Change the default gui background color to #202020 (Dark Grey)
+
+
+ 2.81 Release Note: ~
+
+ Provided a separate utility reloaded.vim to fine tune the GUI color
+ scheme based on Hue, Saturation and Brightness(Luminance).
+
+ Added some groups to meet the need of reloaded.vim, no essential
+ change.
+
+ 2.8 Release Note: ~
+
+ Bugfix : when psc_style=='mixed', the visual got reversed wrong.
+
+ 'mixed' is now the default for 'warm' style.
+
+ changed the function name to lower case.
+
+ removed pre-2.0 compatibility, (the non-psc version of s-d-f-t).
+
+ Added variable psc_cterm_style, see |psc_cterm_style|
+
+ Added group Underline
+
+ Tuned the function call.
+
+ 2.7 Release Note: ~
+
+ Now it is possible to change the Background,
+ see :h psc-change-background for details.
+
+ Linked the Tag group to Identifier.
+
+ NonText as Notice is not good for 'warm', changed to Constant.
+
+ Added links for the most popular plugins: taglist, calendar
+
+ Tuned the 'Statement' color when different from Type (gui only).
+
+ Re-adjusted cterm scheme according to syntax/hitest.vim
+
+ The 'defdark' style for cterm is not functioning, fixed.
+
+ Many 'cosmetic' changes, makes no difference for functionality.
+
+ Use of DrChip's help extractor to auto-install help document.
+
+ Added command define, :Colo
+
+ 2.6 Release Note: ~
+
+ As stated in the v2.3, the only 'todo' thing seems to be the 'warm'
+ style, now in this version I had been working on it.
+
+ There also are some minor fixes for the document, to be more friendly
+ for new readers.
+
+ The 'StatusLine' of 'cold' style is modified by mistake in the v2.3,
+ this time the bug is fixed.
+
+ The 'Directory' in GUI 'cold' style is different from 'cterm' one,
+ now fixed.
+
+ 2.3 Release Note: ~
+
+ This is an incompatible update, main changes are in 'cterm'.
+ A new group 'SignColumn' had been added, new links added for engspchk
+ v52, hundreds of typos fixed in the document, thanks to the engspchk.
+
+ The support for 8-color cterm is slightly better now, but the mappings
+ of the DarkYellow and Yellow are exchanged, you need to update the
+ .Xdefaults or your terminal configuration before apply this update if
+ you are using v2.0. Guide for redefinition the color value is
+ available in the document, make sure you had updated the ps_color.txt,
+ then see |psc-cterm-color-table|
+
+ 2.0 Release Note: ~
+
+ There've been great enhancement since this version, so I'd choose to
+ bump the version number to 2. This version comes with Vim online help,
+ if you had installed ps_color.txt, you can see for details in
+ |pscolor|
+
+ n/a Release: ~
+
+ Initial upload, can be called as v1.8
+
+
+==============================================================================
+PSC TODO LIST *psc-todo*
+
+ . Fix the remain bugs.
+ . Follow the new Vim versions for new added highlighting group
+
+==============================================================================
+
+vim:tw=78:ts=8:noet:ft=help:fo+=t:norl:noet:
diff --git a/.vim/doc/taglist.txt b/.vim/doc/taglist.txt
new file mode 100755
index 0000000..6a62b39
--- /dev/null
+++ b/.vim/doc/taglist.txt
@@ -0,0 +1,1501 @@
+*taglist.txt* Plugin for browsing source code
+
+Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
+For Vim version 6.0 and above
+Last change: 2007 May 24
+
+1. Overview |taglist-intro|
+2. Taglist on the internet |taglist-internet|
+3. Requirements |taglist-requirements|
+4. Installation |taglist-install|
+5. Usage |taglist-using|
+6. Options |taglist-options|
+7. Commands |taglist-commands|
+8. Global functions |taglist-functions|
+9. Extending |taglist-extend|
+10. FAQ |taglist-faq|
+11. License |taglist-license|
+12. Todo |taglist-todo|
+
+==============================================================================
+ *taglist-intro*
+1. Overview~
+
+The "Tag List" plugin is a source code browser plugin for Vim. This plugin
+allows you to efficiently browse through source code files for different
+programming languages. The "Tag List" plugin provides the following features:
+
+ * Displays the tags (functions, classes, structures, variables, etc.)
+ defined in a file in a vertically or horizontally split Vim window.
+ * In GUI Vim, optionally displays the tags in the Tags drop-down menu and
+ in the popup menu.
+ * Automatically updates the taglist window as you switch between
+ files/buffers. As you open new files, the tags defined in the new files
+ are added to the existing file list and the tags defined in all the
+ files are displayed grouped by the filename.
+ * When a tag name is selected from the taglist window, positions the
+ cursor at the definition of the tag in the source file.
+ * Automatically highlights the current tag name.
+ * Groups the tags by their type and displays them in a foldable tree.
+ * Can display the prototype and scope of a tag.
+ * Can optionally display the tag prototype instead of the tag name in the
+ taglist window.
+ * The tag list can be sorted either by name or by chronological order.
+ * Supports the following language files: Assembly, ASP, Awk, Beta, C,
+ C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp,
+ Lua, Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang,
+ SML, Sql, TCL, Verilog, Vim and Yacc.
+ * Can be easily extended to support new languages. Support for
+ existing languages can be modified easily.
+ * Provides functions to display the current tag name in the Vim status
+ line or the window title bar.
+ * The list of tags and files in the taglist can be saved and
+ restored across Vim sessions.
+ * Provides commands to get the name and prototype of the current tag.
+ * Runs in both console/terminal and GUI versions of Vim.
+ * Works with the winmanager plugin. Using the winmanager plugin, you
+ can use Vim plugins like the file explorer, buffer explorer and the
+ taglist plugin at the same time like an IDE.
+ * Can be used in both Unix and MS-Windows systems.
+
+==============================================================================
+ *taglist-internet*
+2. Taglist on the internet~
+
+The home page of the taglist plugin is at:
+>
+ http://vim-taglist.sourceforge.net/
+<
+You can subscribe to the taglist mailing list to post your questions or
+suggestions for improvement or to send bug reports. Visit the following page
+for subscribing to the mailing list:
+>
+ http://groups.yahoo.com/group/taglist
+<
+==============================================================================
+ *taglist-requirements*
+3. Requirements~
+
+The taglist plugin requires the following:
+
+ * Vim version 6.0 and above
+ * Exuberant ctags 5.0 and above
+
+The taglist plugin will work on all the platforms where the exuberant ctags
+utility and Vim are supported (this includes MS-Windows and Unix based
+systems).
+
+The taglist plugin relies on the exuberant ctags utility to dynamically
+generate the tag listing. The exuberant ctags utility must be installed in
+your system to use this plugin. The exuberant ctags utility is shipped with
+most of the Linux distributions. You can download the exuberant ctags utility
+from
+>
+ http://ctags.sourceforge.net
+<
+The taglist plugin doesn't use or create a tags file and there is no need to
+create a tags file to use this plugin. The taglist plugin will not work with
+the GNU ctags or the Unix ctags utility.
+
+This plugin relies on the Vim "filetype" detection mechanism to determine the
+type of the current file. You have to turn on the Vim filetype detection by
+adding the following line to your .vimrc file:
+>
+ filetype on
+<
+The taglist plugin will not work if you run Vim in the restricted mode (using
+the -Z command-line argument).
+
+The taglist plugin uses the Vim system() function to invoke the exuberant
+ctags utility. If Vim is compiled without the system() function then you
+cannot use the taglist plugin. Some of the Linux distributions (Suse) compile
+Vim without the system() function for security reasons.
+
+==============================================================================
+ *taglist-install*
+4. Installation~
+
+1. Download the taglist.zip file and unzip the files to the $HOME/.vim or the
+ $HOME/vimfiles or the $VIM/vimfiles directory. After this step, you should
+ have the following two files (the directory structure should be preserved):
+
+ plugin/taglist.vim - main taglist plugin file
+ doc/taglist.txt - documentation (help) file
+
+ Refer to the |add-plugin|and |'runtimepath'| Vim help pages for more
+ details about installing Vim plugins.
+2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or $VIM/vimfiles/doc
+ directory, start Vim and run the ":helptags ." command to process the
+ taglist help file. Without this step, you cannot jump to the taglist help
+ topics.
+3. If the exuberant ctags utility is not present in one of the directories in
+ the PATH environment variable, then set the 'Tlist_Ctags_Cmd' variable to
+ point to the location of the exuberant ctags utility (not to the directory)
+ in the .vimrc file.
+4. If you are running a terminal/console version of Vim and the terminal
+ doesn't support changing the window width then set the
+ 'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file.
+5. Restart Vim.
+6. You can now use the ":TlistToggle" command to open/close the taglist
+ window. You can use the ":help taglist" command to get more information
+ about using the taglist plugin.
+
+To uninstall the taglist plugin, remove the plugin/taglist.vim and
+doc/taglist.txt files from the $HOME/.vim or $HOME/vimfiles directory.
+
+==============================================================================
+ *taglist-using*
+5. Usage~
+
+The taglist plugin can be used in several different ways.
+
+1. You can keep the taglist window open during the entire editing session. On
+ opening the taglist window, the tags defined in all the files in the Vim
+ buffer list will be displayed in the taglist window. As you edit files, the
+ tags defined in them will be added to the taglist window. You can select a
+ tag from the taglist window and jump to it. The current tag will be
+ highlighted in the taglist window. You can close the taglist window when
+ you no longer need the window.
+2. You can configure the taglist plugin to process the tags defined in all the
+ edited files always. In this configuration, even if the taglist window is
+ closed and the taglist menu is not displayed, the taglist plugin will
+ processes the tags defined in newly edited files. You can then open the
+ taglist window only when you need to select a tag and then automatically
+ close the taglist window after selecting the tag.
+3. You can configure the taglist plugin to display only the tags defined in
+ the current file in the taglist window. By default, the taglist plugin
+ displays the tags defined in all the files in the Vim buffer list. As you
+ switch between files, the taglist window will be refreshed to display only
+ the tags defined in the current file.
+4. In GUI Vim, you can use the Tags pull-down and popup menu created by the
+ taglist plugin to display the tags defined in the current file and select a
+ tag to jump to it. You can use the menu without opening the taglist window.
+ By default, the Tags menu is disabled.
+5. You can configure the taglist plugin to display the name of the current tag
+ in the Vim window status line or in the Vim window title bar. For this to
+ work without the taglist window or menu, you need to configure the taglist
+ plugin to process the tags defined in a file always.
+6. You can save the tags defined in multiple files to a taglist session file
+ and load it when needed. You can also configure the taglist plugin to not
+ update the taglist window when editing new files. You can then manually add
+ files to the taglist window.
+
+Opening the taglist window~
+You can open the taglist window using the ":TlistOpen" or the ":TlistToggle"
+commands. The ":TlistOpen" command opens the taglist window and jumps to it.
+The ":TlistToggle" command opens or closes (toggle) the taglist window and the
+cursor remains in the current window. If the 'Tlist_GainFocus_On_ToggleOpen'
+variable is set to 1, then the ":TlistToggle" command opens the taglist window
+and moves the cursor to the taglist window.
+
+You can map a key to invoke these commands. For example, the following command
+creates a normal mode mapping for the <F8> key to toggle the taglist window.
+>
+ nnoremap <silent> <F8> :TlistToggle<CR>
+<
+Add the above mapping to your ~/.vimrc or $HOME/_vimrc file.
+
+To automatically open the taglist window on Vim startup, set the
+'Tlist_Auto_Open' variable to 1.
+
+You can also open the taglist window on startup using the following command
+line:
+>
+ $ vim +TlistOpen
+<
+Closing the taglist window~
+You can close the taglist window from the taglist window by pressing 'q' or
+using the Vim ":q" command. You can also use any of the Vim window commands to
+close the taglist window. Invoking the ":TlistToggle" command when the taglist
+window is opened, closes the taglist window. You can also use the
+":TlistClose" command to close the taglist window.
+
+To automatically close the taglist window when a tag or file is selected, you
+can set the 'Tlist_Close_On_Select' variable to 1. To exit Vim when only the
+taglist window is present, set the 'Tlist_Exit_OnlyWindow' variable to 1.
+
+Jumping to a tag or a file~
+You can select a tag in the taglist window either by pressing the <Enter> key
+or by double clicking the tag name using the mouse. To jump to a tag on a
+single mouse click set the 'Tlist_Use_SingleClick' variable to 1.
+
+If the selected file is already opened in a window, then the cursor is moved
+to that window. If the file is not currently opened in a window then the file
+is opened in the window used by the taglist plugin to show the previously
+selected file. If there are no usable windows, then the file is opened in a
+new window. The file is not opened in special windows like the quickfix
+window, preview window and windows containing buffer with the 'buftype' option
+set.
+
+To jump to the tag in a new window, press the 'o' key. To open the file in the
+previous window (Ctrl-W_p) use the 'P' key. You can press the 'p' key to jump
+to the tag but still keep the cursor in the taglist window (preview).
+
+To open the selected file in a tab, use the 't' key. If the file is already
+present in a tab then the cursor is moved to that tab otherwise the file is
+opened in a new tab. To jump to a tag in a new tab press Ctrl-t. The taglist
+window is automatically opened in the newly created tab.
+
+Instead of jumping to a tag, you can open a file by pressing the <Enter> key
+or by double clicking the file name using the mouse.
+
+In the taglist window, you can use the [[ or <Backspace> key to jump to the
+beginning of the previous file. You can use the ]] or <Tab> key to jump to the
+beginning of the next file. When you reach the first or last file, the search
+wraps around and the jumps to the next/previous file.
+
+Highlighting the current tag~
+The taglist plugin automatically highlights the name of the current tag in the
+taglist window. The Vim |CursorHold| autocmd event is used for this. If the
+current tag name is not visible in the taglist window, then the taglist window
+contents are scrolled to make that tag name visible. You can also use the
+":TlistHighlightTag" command to force the highlighting of the current tag.
+
+The tag name is highlighted if no activity is performed for |'updatetime'|
+milliseconds. The default value for this Vim option is 4 seconds. To avoid
+unexpected problems, you should not set the |'updatetime'| option to a very
+low value.
+
+To disable the automatic highlighting of the current tag name in the taglist
+window, set the 'Tlist_Auto_Highlight_Tag' variable to zero.
+
+When entering a Vim buffer/window, the taglist plugin automatically highlights
+the current tag in that buffer/window. If you like to disable the automatic
+highlighting of the current tag when entering a buffer, set the
+'Tlist_Highlight_Tag_On_BufEnter' variable to zero.
+
+Adding files to the taglist~
+When the taglist window is opened, all the files in the Vim buffer list are
+processed and the supported files are added to the taglist. When you edit a
+file in Vim, the taglist plugin automatically processes this file and adds it
+to the taglist. If you close the taglist window, the tag information in the
+taglist is retained.
+
+To process files even when the taglist window is not open, set the
+'Tlist_Process_File_Always' variable to 1.
+
+You can manually add multiple files to the taglist without opening them using
+the ":TlistAddFiles" and the ":TlistAddFilesRecursive" commands.
+
+For example, to add all the C files in the /my/project/dir directory to the
+taglist, you can use the following command:
+>
+ :TlistAddFiles /my/project/dir/*.c
+<
+Note that when adding several files with a large number of tags or a large
+number of files, it will take several seconds to several minutes for the
+taglist plugin to process all the files. You should not interrupt the taglist
+plugin by pressing <CTRL-C>.
+
+You can recursively add multiple files from a directory tree using the
+":TlistAddFilesRecursive" command:
+>
+ :TlistAddFilesRecursive /my/project/dir *.c
+<
+This command takes two arguments. The first argument specifies the directory
+from which to recursively add the files. The second optional argument
+specifies the wildcard matching pattern for selecting the files to add. The
+default pattern is * and all the files are added.
+
+Displaying tags for only one file~
+The taglist window displays the tags for all the files in the Vim buffer list
+and all the manually added files. To display the tags for only the current
+active buffer, set the 'Tlist_Show_One_File' variable to 1.
+
+Removing files from the taglist~
+You can remove a file from the taglist window, by pressing the 'd' key when the
+cursor is on one of the tags listed for the file in the taglist window. The
+removed file will no longer be displayed in the taglist window in the current
+Vim session. To again display the tags for the file, open the file in a Vim
+window and then use the ":TlistUpdate" command or use ":TlistAddFiles" command
+to add the file to the taglist.
+
+When a buffer is removed from the Vim buffer list using the ":bdelete" or the
+":bwipeout" command, the taglist is updated to remove the stored information
+for this buffer.
+
+Updating the tags displayed for a file~
+The taglist plugin keeps track of the modification time of a file. When the
+modification time changes (the file is modified), the taglist plugin
+automatically updates the tags listed for that file. The modification time of
+a file is checked when you enter a window containing that file or when you
+load that file.
+
+You can also update or refresh the tags displayed for a file by pressing the
+"u" key in the taglist window. If an existing file is modified, after the file
+is saved, the taglist plugin automatically updates the tags displayed for the
+file.
+
+You can also use the ":TlistUpdate" command to update the tags for the current
+buffer after you made some changes to it. You should save the modified buffer
+before you update the taglist window. Otherwise the listed tags will not
+include the new tags created in the buffer.
+
+If you have deleted the tags displayed for a file in the taglist window using
+the 'd' key, you can again display the tags for that file using the
+":TlistUpdate" command.
+
+Controlling the taglist updates~
+To disable the automatic processing of new files or modified files, you can
+set the 'Tlist_Auto_Update' variable to zero. When this variable is set to
+zero, the taglist is updated only when you use the ":TlistUpdate" command or
+the ":TlistAddFiles" or the ":TlistAddFilesRecursive" commands. You can use
+this option to control which files are added to the taglist.
+
+You can use the ":TlistLock" command to lock the taglist contents. After this
+command is executed, new files are not automatically added to the taglist.
+When the taglist is locked, you can use the ":TlistUpdate" command to add the
+current file or the ":TlistAddFiles" or ":TlistAddFilesRecursive" commands to
+add new files to the taglist. To unlock the taglist, use the ":TlistUnlock"
+command.
+
+Displaying the tag prototype~
+To display the prototype of the tag under the cursor in the taglist window,
+press the space bar. If you place the cursor on a tag name in the taglist
+window, then the tag prototype is displayed at the Vim status line after
+|'updatetime'| milliseconds. The default value for the |'updatetime'| Vim
+option is 4 seconds.
+
+You can get the name and prototype of a tag without opening the taglist window
+and the taglist menu using the ":TlistShowTag" and the ":TlistShowPrototype"
+commands. These commands will work only if the current file is already present
+in the taglist. To use these commands without opening the taglist window, set
+the 'Tlist_Process_File_Always' variable to 1.
+
+You can use the ":TlistShowTag" command to display the name of the tag at or
+before the specified line number in the specified file. If the file name and
+line number are not supplied, then this command will display the name of the
+current tag. For example,
+>
+ :TlistShowTag
+ :TlistShowTag myfile.java 100
+<
+You can use the ":TlistShowPrototype" command to display the prototype of the
+tag at or before the specified line number in the specified file. If the file
+name and the line number are not supplied, then this command will display the
+prototype of the current tag. For example,
+>
+ :TlistShowPrototype
+ :TlistShowPrototype myfile.c 50
+<
+In the taglist window, when the mouse is moved over a tag name, the tag
+prototype is displayed in a balloon. This works only in GUI versions where
+balloon evaluation is supported.
+
+Taglist window contents~
+The taglist window contains the tags defined in various files in the taglist
+grouped by the filename and by the tag type (variable, function, class, etc.).
+For tags with scope information (like class members, structures inside
+structures, etc.), the scope information is displayed in square brackets "[]"
+after the tag name.
+
+The contents of the taglist buffer/window are managed by the taglist plugin.
+The |'filetype'| for the taglist buffer is set to 'taglist'. The Vim
+|'modifiable'| option is turned off for the taglist buffer. You should not
+manually edit the taglist buffer, by setting the |'modifiable'| flag. If you
+manually edit the taglist buffer contents, then the taglist plugin will be out
+of sync with the taglist buffer contents and the plugin will no longer work
+correctly. To redisplay the taglist buffer contents again, close the taglist
+window and reopen it.
+
+Opening and closing the tag and file tree~
+In the taglist window, the tag names are displayed as a foldable tree using
+the Vim folding support. You can collapse the tree using the '-' key or using
+the Vim |zc| fold command. You can open the tree using the '+' key or using
+the Vim |zo| fold command. You can open all the folds using the '*' key or
+using the Vim |zR| fold command. You can also use the mouse to open/close the
+folds. You can close all the folds using the '=' key. You should not manually
+create or delete the folds in the taglist window.
+
+To automatically close the fold for the inactive files/buffers and open only
+the fold for the current buffer in the taglist window, set the
+'Tlist_File_Fold_Auto_Close' variable to 1.
+
+Sorting the tags for a file~
+The tags displayed in the taglist window can be sorted either by their name or
+by their chronological order. The default sorting method is by the order in
+which the tags appear in a file. You can change the default sort method by
+setting the 'Tlist_Sort_Type' variable to either "name" or "order". You can
+sort the tags by their name by pressing the "s" key in the taglist window. You
+can again sort the tags by their chronological order using the "s" key. Each
+file in the taglist window can be sorted using different order.
+
+Zooming in and out of the taglist window~
+You can press the 'x' key in the taglist window to maximize the taglist
+window width/height. The window will be maximized to the maximum possible
+width/height without closing the other existing windows. You can again press
+'x' to restore the taglist window to the default width/height.
+
+ *taglist-session*
+Taglist Session~
+A taglist session refers to the group of files and their tags stored in the
+taglist in a Vim session.
+
+You can save and restore a taglist session (and all the displayed tags) using
+the ":TlistSessionSave" and ":TlistSessionLoad" commands.
+
+To save the information about the tags and files in the taglist to a file, use
+the ":TlistSessionSave" command and specify the filename:
+>
+ :TlistSessionSave <file name>
+<
+To load a saved taglist session, use the ":TlistSessionLoad" command: >
+
+ :TlistSessionLoad <file name>
+<
+When you load a taglist session file, the tags stored in the file will be
+added to the tags already stored in the taglist.
+
+The taglist session feature can be used to save the tags for large files or a
+group of frequently used files (like a project). By using the taglist session
+file, you can minimize the amount to time it takes to load/refresh the taglist
+for multiple files.
+
+You can create more than one taglist session file for multiple groups of
+files.
+
+Displaying the tag name in the Vim status line or the window title bar~
+You can use the Tlist_Get_Tagname_By_Line() function provided by the taglist
+plugin to display the current tag name in the Vim status line or the window
+title bar. Similarly, you can use the Tlist_Get_Tag_Prototype_By_Line()
+function to display the current tag prototype in the Vim status line or the
+window title bar.
+
+For example, the following command can be used to display the current tag name
+in the status line:
+>
+ :set statusline=%<%f%=%([%{Tlist_Get_Tagname_By_Line()}]%)
+<
+The following command can be used to display the current tag name in the
+window title bar:
+>
+ :set title titlestring=%<%f\ %([%{Tlist_Get_Tagname_By_Line()}]%)
+<
+Note that the current tag name can be displayed only after the file is
+processed by the taglist plugin. For this, you have to either set the
+'Tlist_Process_File_Always' variable to 1 or open the taglist window or use
+the taglist menu. For more information about configuring the Vim status line,
+refer to the documentation for the Vim |'statusline'| option.
+
+Changing the taglist window highlighting~
+The following Vim highlight groups are defined and used to highlight the
+various entities in the taglist window:
+
+ TagListTagName - Used for tag names
+ TagListTagScope - Used for tag scope
+ TagListTitle - Used for tag titles
+ TagListComment - Used for comments
+ TagListFileName - Used for filenames
+
+By default, these highlight groups are linked to the standard Vim highlight
+groups. If you want to change the colors used for these highlight groups,
+prefix the highlight group name with 'My' and define it in your .vimrc or
+.gvimrc file: MyTagListTagName, MyTagListTagScope, MyTagListTitle,
+MyTagListComment and MyTagListFileName. For example, to change the colors
+used for tag names, you can use the following command:
+>
+ :highlight MyTagListTagName guifg=blue ctermfg=blue
+<
+Controlling the taglist window~
+To use a horizontally split taglist window, instead of a vertically split
+window, set the 'Tlist_Use_Horiz_Window' variable to 1.
+
+To use a vertically split taglist window on the rightmost side of the Vim
+window, set the 'Tlist_Use_Right_Window' variable to 1.
+
+You can specify the width of the vertically split taglist window, by setting
+the 'Tlist_WinWidth' variable. You can specify the height of the horizontally
+split taglist window, by setting the 'Tlist_WinHeight' variable.
+
+When opening a vertically split taglist window, the Vim window width is
+increased to accommodate the new taglist window. When the taglist window is
+closed, the Vim window is reduced. To disable this, set the
+'Tlist_Inc_Winwidth' variable to zero.
+
+To reduce the number of empty lines in the taglist window, set the
+'Tlist_Compact_Format' variable to 1.
+
+To not display the Vim fold column in the taglist window, set the
+'Tlist_Enable_Fold_Column' variable to zero.
+
+To display the tag prototypes instead of the tag names in the taglist window,
+set the 'Tlist_Display_Prototype' variable to 1.
+
+To not display the scope of the tags next to the tag names, set the
+'Tlist_Display_Tag_Scope' variable to zero.
+
+ *taglist-keys*
+Taglist window key list~
+The following table lists the description of the keys that can be used
+in the taglist window.
+
+ Key Description~
+
+ <CR> Jump to the location where the tag under cursor is
+ defined.
+ o Jump to the location where the tag under cursor is
+ defined in a new window.
+ P Jump to the tag in the previous (Ctrl-W_p) window.
+ p Display the tag definition in the file window and
+ keep the cursor in the taglist window itself.
+ t Jump to the tag in a new tab. If the file is already
+ opened in a tab, move to that tab.
+ Ctrl-t Jump to the tag in a new tab.
+ <Space> Display the prototype of the tag under the cursor.
+ For file names, display the full path to the file,
+ file type and the number of tags. For tag types, display the
+ tag type and the number of tags.
+ u Update the tags listed in the taglist window
+ s Change the sort order of the tags (by name or by order)
+ d Remove the tags for the file under the cursor
+ x Zoom-in or Zoom-out the taglist window
+ + Open a fold
+ - Close a fold
+ * Open all folds
+ = Close all folds
+ [[ Jump to the beginning of the previous file
+ <Backspace> Jump to the beginning of the previous file
+ ]] Jump to the beginning of the next file
+ <Tab> Jump to the beginning of the next file
+ q Close the taglist window
+ <F1> Display help
+
+The above keys will work in both the normal mode and the insert mode.
+
+ *taglist-menu*
+Taglist menu~
+When using GUI Vim, the taglist plugin can display the tags defined in the
+current file in the drop-down menu and the popup menu. By default, this
+feature is turned off. To turn on this feature, set the 'Tlist_Show_Menu'
+variable to 1.
+
+You can jump to a tag by selecting the tag name from the menu. You can use the
+taglist menu independent of the taglist window i.e. you don't need to open the
+taglist window to get the taglist menu.
+
+When you switch between files/buffers, the taglist menu is automatically
+updated to display the tags defined in the current file/buffer.
+
+The tags are grouped by their type (variables, functions, classes, methods,
+etc.) and displayed as a separate sub-menu for each type. If all the tags
+defined in a file are of the same type (e.g. functions), then the sub-menu is
+not used.
+
+If the number of items in a tag type submenu exceeds the value specified by
+the 'Tlist_Max_Submenu_Items' variable, then the submenu will be split into
+multiple submenus. The default setting for 'Tlist_Max_Submenu_Items' is 25.
+The first and last tag names in the submenu are used to form the submenu name.
+The menu items are prefixed by alpha-numeric characters for easy selection by
+keyboard.
+
+If the popup menu support is enabled (the |'mousemodel'| option contains
+"popup"), then the tags menu is added to the popup menu. You can access
+the popup menu by right clicking on the GUI window.
+
+You can regenerate the tags menu by selecting the 'Tags->Refresh menu' entry.
+You can sort the tags listed in the menu either by name or by order by
+selecting the 'Tags->Sort menu by->Name/Order' menu entry.
+
+You can tear-off the Tags menu and keep it on the side of the Vim window
+for quickly locating the tags.
+
+Using the taglist plugin with the winmanager plugin~
+You can use the taglist plugin with the winmanager plugin. This will allow you
+to use the file explorer, buffer explorer and the taglist plugin at the same
+time in different windows. To use the taglist plugin with the winmanager
+plugin, set 'TagList' in the 'winManagerWindowLayout' variable. For example,
+to use the file explorer plugin and the taglist plugin at the same time, use
+the following setting: >
+
+ let winManagerWindowLayout = 'FileExplorer|TagList'
+<
+Getting help~
+If you have installed the taglist help file (this file), then you can use the
+Vim ":help taglist-<keyword>" command to get help on the various taglist
+topics.
+
+You can press the <F1> key in the taglist window to display the help
+information about using the taglist window. If you again press the <F1> key,
+the help information is removed from the taglist window.
+
+ *taglist-debug*
+Debugging the taglist plugin~
+You can use the ":TlistDebug" command to enable logging of the debug messages
+from the taglist plugin. To display the logged debug messages, you can use the
+":TlistMessages" command. To disable the logging of the debug messages, use
+the ":TlistUndebug" command.
+
+You can specify a file name to the ":TlistDebug" command to log the debug
+messages to a file. Otherwise, the debug messages are stored in a script-local
+variable. In the later case, to minimize memory usage, only the last 3000
+characters from the debug messages are stored.
+
+==============================================================================
+ *taglist-options*
+6. Options~
+
+A number of Vim variables control the behavior of the taglist plugin. These
+variables are initialized to a default value. By changing these variables you
+can change the behavior of the taglist plugin. You need to change these
+settings only if you want to change the behavior of the taglist plugin. You
+should use the |:let| command in your .vimrc file to change the setting of any
+of these variables.
+
+The configurable taglist variables are listed below. For a detailed
+description of these variables refer to the text below this table.
+
+|'Tlist_Auto_Highlight_Tag'| Automatically highlight the current tag in the
+ taglist.
+|'Tlist_Auto_Open'| Open the taglist window when Vim starts.
+|'Tlist_Auto_Update'| Automatically update the taglist to include
+ newly edited files.
+|'Tlist_Close_On_Select'| Close the taglist window when a file or tag is
+ selected.
+|'Tlist_Compact_Format'| Remove extra information and blank lines from
+ the taglist window.
+|'Tlist_Ctags_Cmd'| Specifies the path to the ctags utility.
+|'Tlist_Display_Prototype'| Show prototypes and not tags in the taglist
+ window.
+|'Tlist_Display_Tag_Scope'| Show tag scope next to the tag name.
+|'Tlist_Enable_Fold_Column'| Show the fold indicator column in the taglist
+ window.
+|'Tlist_Exit_OnlyWindow'| Close Vim if the taglist is the only window.
+|'Tlist_File_Fold_Auto_Close'| Close tag folds for inactive buffers.
+|'Tlist_GainFocus_On_ToggleOpen'|
+ Jump to taglist window on open.
+|'Tlist_Highlight_Tag_On_BufEnter'|
+ On entering a buffer, automatically highlight
+ the current tag.
+|'Tlist_Inc_Winwidth'| Increase the Vim window width to accommodate
+ the taglist window.
+|'Tlist_Max_Submenu_Items'| Maximum number of items in a tags sub-menu.
+|'Tlist_Max_Tag_Length'| Maximum tag length used in a tag menu entry.
+|'Tlist_Process_File_Always'| Process files even when the taglist window is
+ closed.
+|'Tlist_Show_Menu'| Display the tags menu.
+|'Tlist_Show_One_File'| Show tags for the current buffer only.
+|'Tlist_Sort_Type'| Sort method used for arranging the tags.
+|'Tlist_Use_Horiz_Window'| Use a horizontally split window for the
+ taglist window.
+|'Tlist_Use_Right_Window'| Place the taglist window on the right side.
+|'Tlist_Use_SingleClick'| Single click on a tag jumps to it.
+|'Tlist_WinHeight'| Horizontally split taglist window height.
+|'Tlist_WinWidth'| Vertically split taglist window width.
+
+ *'Tlist_Auto_Highlight_Tag'*
+Tlist_Auto_Highlight_Tag~
+The taglist plugin will automatically highlight the current tag in the taglist
+window. If you want to disable this, then you can set the
+'Tlist_Auto_Highlight_Tag' variable to zero. Note that even though the current
+tag highlighting is disabled, the tags for a new file will still be added to
+the taglist window.
+>
+ let Tlist_Auto_Highlight_Tag = 0
+<
+With the above variable set to 1, you can use the ":TlistHighlightTag" command
+to highlight the current tag.
+
+ *'Tlist_Auto_Open'*
+Tlist_Auto_Open~
+To automatically open the taglist window, when you start Vim, you can set the
+'Tlist_Auto_Open' variable to 1. By default, this variable is set to zero and
+the taglist window will not be opened automatically on Vim startup.
+>
+ let Tlist_Auto_Open = 1
+<
+The taglist window is opened only when a supported type of file is opened on
+Vim startup. For example, if you open text files, then the taglist window will
+not be opened.
+
+ *'Tlist_Auto_Update'*
+Tlist_Auto_Update~
+When a new file is edited, the tags defined in the file are automatically
+processed and added to the taglist. To stop adding new files to the taglist,
+set the 'Tlist_Auto_Update' variable to zero. By default, this variable is set
+to 1.
+>
+ let Tlist_Auto_Update = 0
+<
+With the above variable set to 1, you can use the ":TlistUpdate" command to
+add the tags defined in the current file to the taglist.
+
+ *'Tlist_Close_On_Select'*
+Tlist_Close_On_Select~
+If you want to close the taglist window when a file or tag is selected, then
+set the 'Tlist_Close_On_Select' variable to 1. By default, this variable is
+set zero and when you select a tag or file from the taglist window, the window
+is not closed.
+>
+ let Tlist_Close_On_Select = 1
+<
+ *'Tlist_Compact_Format'*
+Tlist_Compact_Format~
+By default, empty lines are used to separate different tag types displayed for
+a file and the tags displayed for different files in the taglist window. If
+you want to display as many tags as possible in the taglist window, you can
+set the 'Tlist_Compact_Format' variable to 1 to get a compact display.
+>
+ let Tlist_Compact_Format = 1
+<
+ *'Tlist_Ctags_Cmd'*
+Tlist_Ctags_Cmd~
+The 'Tlist_Ctags_Cmd' variable specifies the location (path) of the exuberant
+ctags utility. If exuberant ctags is present in any one of the directories in
+the PATH environment variable, then there is no need to set this variable.
+
+The exuberant ctags tool can be installed under different names. When the
+taglist plugin starts up, if the 'Tlist_Ctags_Cmd' variable is not set, it
+checks for the names exuberant-ctags, exctags, ctags, ctags.exe and tags in
+the PATH environment variable. If any one of the named executable is found,
+then the Tlist_Ctags_Cmd variable is set to that name.
+
+If exuberant ctags is not present in one of the directories specified in the
+PATH environment variable, then set this variable to point to the location of
+the ctags utility in your system. Note that this variable should point to the
+fully qualified exuberant ctags location and NOT to the directory in which
+exuberant ctags is installed. If the exuberant ctags tool is not found in
+either PATH or in the specified location, then the taglist plugin will not be
+loaded. Examples:
+>
+ let Tlist_Ctags_Cmd = 'd:\tools\ctags.exe'
+ let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'
+<
+ *'Tlist_Display_Prototype'*
+Tlist_Display_Prototype~
+By default, only the tag name will be displayed in the taglist window. If you
+like to see tag prototypes instead of names, set the 'Tlist_Display_Prototype'
+variable to 1. By default, this variable is set to zero and only tag names
+will be displayed.
+>
+ let Tlist_Display_Prototype = 1
+<
+ *'Tlist_Display_Tag_Scope'*
+Tlist_Display_Tag_Scope~
+By default, the scope of a tag (like a C++ class) will be displayed in
+square brackets next to the tag name. If you don't want the tag scopes
+to be displayed, then set the 'Tlist_Display_Tag_Scope' to zero. By default,
+this variable is set to 1 and the tag scopes will be displayed.
+>
+ let Tlist_Display_Tag_Scope = 0
+<
+ *'Tlist_Enable_Fold_Column'*
+Tlist_Enable_Fold_Column~
+By default, the Vim fold column is enabled and displayed in the taglist
+window. If you wish to disable this (for example, when you are working with a
+narrow Vim window or terminal), you can set the 'Tlist_Enable_Fold_Column'
+variable to zero.
+>
+ let Tlist_Enable_Fold_Column = 1
+<
+ *'Tlist_Exit_OnlyWindow'*
+Tlist_Exit_OnlyWindow~
+If you want to exit Vim if only the taglist window is currently opened, then
+set the 'Tlist_Exit_OnlyWindow' variable to 1. By default, this variable is
+set to zero and the Vim instance will not be closed if only the taglist window
+is present.
+>
+ let Tlist_Exit_OnlyWindow = 1
+<
+ *'Tlist_File_Fold_Auto_Close'*
+Tlist_File_Fold_Auto_Close~
+By default, the tags tree displayed in the taglist window for all the files is
+opened. You can close/fold the tags tree for the files manually. To
+automatically close the tags tree for inactive files, you can set the
+'Tlist_File_Fold_Auto_Close' variable to 1. When this variable is set to 1,
+the tags tree for the current buffer is automatically opened and for all the
+other buffers is closed.
+>
+ let Tlist_File_Fold_Auto_Close = 1
+<
+ *'Tlist_GainFocus_On_ToggleOpen'*
+Tlist_GainFocus_On_ToggleOpen~
+When the taglist window is opened using the ':TlistToggle' command, this
+option controls whether the cursor is moved to the taglist window or remains
+in the current window. By default, this option is set to 0 and the cursor
+remains in the current window. When this variable is set to 1, the cursor
+moves to the taglist window after opening the taglist window.
+>
+ let Tlist_GainFocus_On_ToggleOpen = 1
+<
+ *'Tlist_Highlight_Tag_On_BufEnter'*
+Tlist_Highlight_Tag_On_BufEnter~
+When you enter a Vim buffer/window, the current tag in that buffer/window is
+automatically highlighted in the taglist window. If the current tag name is
+not visible in the taglist window, then the taglist window contents are
+scrolled to make that tag name visible. If you like to disable the automatic
+highlighting of the current tag when entering a buffer, you can set the
+'Tlist_Highlight_Tag_On_BufEnter' variable to zero. The default setting for
+this variable is 1.
+>
+ let Tlist_Highlight_Tag_On_BufEnter = 0
+<
+ *'Tlist_Inc_Winwidth'*
+Tlist_Inc_Winwidth~
+By default, when the width of the window is less than 100 and a new taglist
+window is opened vertically, then the window width is increased by the value
+set in the 'Tlist_WinWidth' variable to accommodate the new window. The value
+of this variable is used only if you are using a vertically split taglist
+window.
+
+If your terminal doesn't support changing the window width from Vim (older
+version of xterm running in a Unix system) or if you see any weird problems in
+the screen due to the change in the window width or if you prefer not to
+adjust the window width then set the 'Tlist_Inc_Winwidth' variable to zero.
+CAUTION: If you are using the MS-Windows version of Vim in a MS-DOS command
+window then you must set this variable to zero, otherwise the system may hang
+due to a Vim limitation (explained in :help win32-problems)
+>
+ let Tlist_Inc_Winwidth = 0
+<
+ *'Tlist_Max_Submenu_Items'*
+Tlist_Max_Submenu_Items~
+If a file contains too many tags of a particular type (function, variable,
+class, etc.), greater than that specified by the 'Tlist_Max_Submenu_Items'
+variable, then the menu for that tag type will be split into multiple
+sub-menus. The default setting for the 'Tlist_Max_Submenu_Items' variable is
+25. This can be changed by setting the 'Tlist_Max_Submenu_Items' variable:
+>
+ let Tlist_Max_Submenu_Items = 20
+<
+The name of the submenu is formed using the names of the first and the last
+tag entries in that submenu.
+
+ *'Tlist_Max_Tag_Length'*
+Tlist_Max_Tag_Length~
+Only the first 'Tlist_Max_Tag_Length' characters from the tag names will be
+used to form the tag type submenu name. The default value for this variable is
+10. Change the 'Tlist_Max_Tag_Length' setting if you want to include more or
+less characters:
+>
+ let Tlist_Max_Tag_Length = 10
+<
+ *'Tlist_Process_File_Always'*
+Tlist_Process_File_Always~
+By default, the taglist plugin will generate and process the tags defined in
+the newly opened files only when the taglist window is opened or when the
+taglist menu is enabled. When the taglist window is closed, the taglist plugin
+will stop processing the tags for newly opened files.
+
+You can set the 'Tlist_Process_File_Always' variable to 1 to generate the list
+of tags for new files even when the taglist window is closed and the taglist
+menu is disabled.
+>
+ let Tlist_Process_File_Always = 1
+<
+To use the ":TlistShowTag" and the ":TlistShowPrototype" commands without the
+taglist window and the taglist menu, you should set this variable to 1.
+
+ *'Tlist_Show_Menu'*
+Tlist_Show_Menu~
+When using GUI Vim, you can display the tags defined in the current file in a
+menu named "Tags". By default, this feature is turned off. To turn on this
+feature, set the 'Tlist_Show_Menu' variable to 1:
+>
+ let Tlist_Show_Menu = 1
+<
+ *'Tlist_Show_One_File'*
+Tlist_Show_One_File~
+By default, the taglist plugin will display the tags defined in all the loaded
+buffers in the taglist window. If you prefer to display the tags defined only
+in the current buffer, then you can set the 'Tlist_Show_One_File' to 1. When
+this variable is set to 1, as you switch between buffers, the taglist window
+will be refreshed to display the tags for the current buffer and the tags for
+the previous buffer will be removed.
+>
+ let Tlist_Show_One_File = 1
+<
+ *'Tlist_Sort_Type'*
+Tlist_Sort_Type~
+The 'Tlist_Sort_Type' variable specifies the sort order for the tags in the
+taglist window. The tags can be sorted either alphabetically by their name or
+by the order of their appearance in the file (chronological order). By
+default, the tag names will be listed by the order in which they are defined
+in the file. You can change the sort type (from name to order or from order to
+name) by pressing the "s" key in the taglist window. You can also change the
+default sort order by setting 'Tlist_Sort_Type' to "name" or "order":
+>
+ let Tlist_Sort_Type = "name"
+<
+ *'Tlist_Use_Horiz_Window'*
+Tlist_Use_Horiz_Window~
+Be default, the tag names are displayed in a vertically split window. If you
+prefer a horizontally split window, then set the 'Tlist_Use_Horiz_Window'
+variable to 1. If you are running MS-Windows version of Vim in a MS-DOS
+command window, then you should use a horizontally split window instead of a
+vertically split window. Also, if you are using an older version of xterm in a
+Unix system that doesn't support changing the xterm window width, you should
+use a horizontally split window.
+>
+ let Tlist_Use_Horiz_Window = 1
+<
+ *'Tlist_Use_Right_Window'*
+Tlist_Use_Right_Window~
+By default, the vertically split taglist window will appear on the left hand
+side. If you prefer to open the window on the right hand side, you can set the
+'Tlist_Use_Right_Window' variable to 1:
+>
+ let Tlist_Use_Right_Window = 1
+<
+ *'Tlist_Use_SingleClick'*
+Tlist_Use_SingleClick~
+By default, when you double click on the tag name using the left mouse
+button, the cursor will be positioned at the definition of the tag. You
+can set the 'Tlist_Use_SingleClick' variable to 1 to jump to a tag when
+you single click on the tag name using the mouse. By default this variable
+is set to zero.
+>
+ let Tlist_Use_SingleClick = 1
+<
+Due to a bug in Vim, if you set 'Tlist_Use_SingleClick' to 1 and try to resize
+the taglist window using the mouse, then Vim will crash. This problem is fixed
+in Vim 6.3 and above. In the meantime, instead of resizing the taglist window
+using the mouse, you can use normal Vim window resizing commands to resize the
+taglist window.
+
+ *'Tlist_WinHeight'*
+Tlist_WinHeight~
+The default height of the horizontally split taglist window is 10. This can be
+changed by modifying the 'Tlist_WinHeight' variable:
+>
+ let Tlist_WinHeight = 20
+<
+The |'winfixheight'| option is set for the taglist window, to maintain the
+height of the taglist window, when new Vim windows are opened and existing
+windows are closed.
+
+ *'Tlist_WinWidth'*
+Tlist_WinWidth~
+The default width of the vertically split taglist window is 30. This can be
+changed by modifying the 'Tlist_WinWidth' variable:
+>
+ let Tlist_WinWidth = 20
+<
+Note that the value of the |'winwidth'| option setting determines the minimum
+width of the current window. If you set the 'Tlist_WinWidth' variable to a
+value less than that of the |'winwidth'| option setting, then Vim will use the
+value of the |'winwidth'| option.
+
+When new Vim windows are opened and existing windows are closed, the taglist
+plugin will try to maintain the width of the taglist window to the size
+specified by the 'Tlist_WinWidth' variable.
+
+==============================================================================
+ *taglist-commands*
+7. Commands~
+
+The taglist plugin provides the following ex-mode commands:
+
+|:TlistAddFiles| Add multiple files to the taglist.
+|:TlistAddFilesRecursive|
+ Add files recursively to the taglist.
+|:TlistClose| Close the taglist window.
+|:TlistDebug| Start logging of taglist debug messages.
+|:TlistLock| Stop adding new files to the taglist.
+|:TlistMessages| Display the logged taglist plugin debug messages.
+|:TlistOpen| Open and jump to the taglist window.
+|:TlistSessionSave| Save the information about files and tags in the
+ taglist to a session file.
+|:TlistSessionLoad| Load the information about files and tags stored
+ in a session file to taglist.
+|:TlistShowPrototype| Display the prototype of the tag at or before the
+ specified line number.
+|:TlistShowTag| Display the name of the tag defined at or before the
+ specified line number.
+|:TlistHighlightTag| Highlight the current tag in the taglist window.
+|:TlistToggle| Open or close (toggle) the taglist window.
+|:TlistUndebug| Stop logging of taglist debug messages.
+|:TlistUnlock| Start adding new files to the taglist.
+|:TlistUpdate| Update the tags for the current buffer.
+
+ *:TlistAddFiles*
+:TlistAddFiles {file(s)} [file(s) ...]
+ Add one or more specified files to the taglist. You can
+ specify multiple filenames using wildcards. To specify a
+ file name with space character, you should escape the space
+ character with a backslash.
+ Examples:
+>
+ :TlistAddFiles *.c *.cpp
+ :TlistAddFiles file1.html file2.html
+<
+ If you specify a large number of files, then it will take some
+ time for the taglist plugin to process all of them. The
+ specified files will not be edited in a Vim window and will
+ not be added to the Vim buffer list.
+
+ *:TlistAddFilesRecursive*
+:TlistAddFilesRecursive {directory} [ {pattern} ]
+ Add files matching {pattern} recursively from the specified
+ {directory} to the taglist. If {pattern} is not specified,
+ then '*' is assumed. To specify the current directory, use "."
+ for {directory}. To specify a directory name with space
+ character, you should escape the space character with a
+ backslash.
+ Examples:
+>
+ :TlistAddFilesRecursive myproject *.java
+ :TlistAddFilesRecursive smallproject
+<
+ If large number of files are present in the specified
+ directory tree, then it will take some time for the taglist
+ plugin to process all of them.
+
+ *:TlistClose*
+:TlistClose Close the taglist window. This command can be used from any
+ one of the Vim windows.
+
+ *:TlistDebug*
+:TlistDebug [filename]
+ Start logging of debug messages from the taglist plugin.
+ If {filename} is specified, then the debug messages are stored
+ in the specified file. Otherwise, the debug messages are
+ stored in a script local variable. If the file {filename} is
+ already present, then it is overwritten.
+
+ *:TlistLock*
+:TlistLock
+ Lock the taglist and don't process new files. After this
+ command is executed, newly edited files will not be added to
+ the taglist.
+
+ *:TlistMessages*
+:TlistMessages
+ Display the logged debug messages from the taglist plugin
+ in a window. This command works only when logging to a
+ script-local variable.
+
+ *:TlistOpen*
+:TlistOpen Open and jump to the taglist window. Creates the taglist
+ window, if the window is not opened currently. After executing
+ this command, the cursor is moved to the taglist window. When
+ the taglist window is opened for the first time, all the files
+ in the buffer list are processed and the tags defined in them
+ are displayed in the taglist window.
+
+ *:TlistSessionSave*
+:TlistSessionSave {filename}
+ Saves the information about files and tags in the taglist to
+ the specified file. This command can be used to save and
+ restore the taglist contents across Vim sessions.
+
+ *:TlistSessionLoad*
+:TlistSessionLoad {filename}
+ Load the information about files and tags stored in the
+ specified session file to the taglist.
+
+ *:TlistShowPrototype*
+:TlistShowPrototype [filename] [linenumber]
+ Display the prototype of the tag at or before the specified
+ line number. If the file name and the line number are not
+ specified, then the current file name and line number are
+ used. A tag spans multiple lines starting from the line where
+ it is defined to the line before the next tag. This command
+ displays the prototype for the tag for any line number in this
+ range.
+
+ *:TlistShowTag*
+:TlistShowTag [filename] [linenumber]
+ Display the name of the tag defined at or before the specified
+ line number. If the file name and the line number are not
+ specified, then the current file name and line number are
+ used. A tag spans multiple lines starting from the line where
+ it is defined to the line before the next tag. This command
+ displays the tag name for any line number in this range.
+
+ *:TlistHighlightTag*
+:TlistHighlightTag
+ Highlight the current tag in the taglist window. By default,
+ the taglist plugin periodically updates the taglist window to
+ highlight the current tag. This command can be used to force
+ the taglist plugin to highlight the current tag.
+
+ *:TlistToggle*
+:TlistToggle Open or close (toggle) the taglist window. Opens the taglist
+ window, if the window is not opened currently. Closes the
+ taglist window, if the taglist window is already opened. When
+ the taglist window is opened for the first time, all the files
+ in the buffer list are processed and the tags are displayed in
+ the taglist window. After executing this command, the cursor
+ is not moved from the current window to the taglist window.
+
+ *:TlistUndebug*
+:TlistUndebug
+ Stop logging of debug messages from the taglist plugin.
+
+ *:TlistUnlock*
+:TlistUnlock
+ Unlock the taglist and start processing newly edited files.
+
+ *:TlistUpdate*
+:TlistUpdate Update the tags information for the current buffer. This
+ command can be used to re-process the current file/buffer and
+ get the tags information. As the taglist plugin uses the file
+ saved in the disk (instead of the file displayed in a Vim
+ buffer), you should save a modified buffer before you update
+ the taglist. Otherwise the listed tags will not include the
+ new tags created in the buffer. You can use this command even
+ when the taglist window is not opened.
+
+==============================================================================
+ *taglist-functions*
+8. Global functions~
+
+The taglist plugin provides several global functions that can be used from
+other Vim plugins to interact with the taglist plugin. These functions are
+described below.
+
+|Tlist_Update_File_Tags()| Update the tags for the specified file
+|Tlist_Get_Tag_Prototype_By_Line()| Return the prototype of the tag at or
+ before the specified line number in the
+ specified file.
+|Tlist_Get_Tagname_By_Line()| Return the name of the tag at or
+ before the specified line number in
+ the specified file.
+|Tlist_Set_App()| Set the name of the application
+ controlling the taglist window.
+
+ *Tlist_Update_File_Tags()*
+Tlist_Update_File_Tags({filename}, {filetype})
+ Update the tags for the file {filename}. The second argument
+ specifies the Vim filetype for the file. If the taglist plugin
+ has not processed the file previously, then the exuberant
+ ctags tool is invoked to generate the tags for the file.
+
+ *Tlist_Get_Tag_Prototype_By_Line()*
+Tlist_Get_Tag_Prototype_By_Line([{filename}, {linenumber}])
+ Return the prototype of the tag at or before the specified
+ line number in the specified file. If the filename and line
+ number are not specified, then the current buffer name and the
+ current line number are used.
+
+ *Tlist_Get_Tagname_By_Line()*
+Tlist_Get_Tagname_By_Line([{filename}, {linenumber}])
+ Return the name of the tag at or before the specified line
+ number in the specified file. If the filename and line number
+ are not specified, then the current buffer name and the
+ current line number are used.
+
+ *Tlist_Set_App()*
+Tlist_Set_App({appname})
+ Set the name of the plugin that controls the taglist plugin
+ window and buffer. This can be used to integrate the taglist
+ plugin with other Vim plugins.
+
+ For example, the winmanager plugin and the Cream package use
+ this function and specify the appname as "winmanager" and
+ "cream" respectively.
+
+ By default, the taglist plugin is a stand-alone plugin and
+ controls the taglist window and buffer. If the taglist window
+ is controlled by an external plugin, then the appname should
+ be set appropriately.
+
+==============================================================================
+ *taglist-extend*
+9. Extending~
+
+The taglist plugin supports all the languages supported by the exuberant ctags
+tool, which includes the following languages: Assembly, ASP, Awk, Beta, C,
+C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp, Lua,
+Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang, SML, Sql,
+TCL, Verilog, Vim and Yacc.
+
+You can extend the taglist plugin to add support for new languages and also
+modify the support for the above listed languages.
+
+You should NOT make modifications to the taglist plugin script file to add
+support for new languages. You will lose these changes when you upgrade to the
+next version of the taglist plugin. Instead you should follow the below
+described instructions to extend the taglist plugin.
+
+You can extend the taglist plugin by setting variables in the .vimrc or _vimrc
+file. The name of these variables depends on the language name and is
+described below.
+
+Modifying support for an existing language~
+To modify the support for an already supported language, you have to set the
+tlist_xxx_settings variable in the ~/.vimrc or $HOME/_vimrc file. Replace xxx
+with the Vim filetype name for the language file. For example, to modify the
+support for the perl language files, you have to set the tlist_perl_settings
+variable. To modify the support for java files, you have to set the
+tlist_java_settings variable.
+
+To determine the filetype name used by Vim for a file, use the following
+command in the buffer containing the file:
+
+ :set filetype
+
+The above command will display the Vim filetype for the current buffer.
+
+The format of the value set in the tlist_xxx_settings variable is
+
+ <language_name>;flag1:name1;flag2:name2;flag3:name3
+
+The different fields in the value are separated by the ';' character.
+
+The first field 'language_name' is the name used by exuberant ctags to refer
+to this language file. This name can be different from the file type name used
+by Vim. For example, for C++, the language name used by ctags is 'c++' but the
+filetype name used by Vim is 'cpp'. To get the list of language names
+supported by exuberant ctags, use the following command:
+
+ $ ctags --list-maps=all
+
+The remaining fields follow the format "flag:name". The sub-field 'flag' is
+the language specific flag used by exuberant ctags to generate the
+corresponding tags. For example, for the C language, to list only the
+functions, the 'f' flag is used. To get the list of flags supported by
+exuberant ctags for the various languages use the following command:
+
+ $ ctags --list-kinds=all
+
+The sub-field 'name' specifies the title text to use for displaying the tags
+of a particular type. For example, 'name' can be set to 'functions'. This
+field can be set to any text string name.
+
+For example, to list only the classes and functions defined in a C++ language
+file, add the following line to your .vimrc file:
+
+ let tlist_cpp_settings = 'c++;c:class;f:function'
+
+In the above setting, 'cpp' is the Vim filetype name and 'c++' is the name
+used by the exuberant ctags tool. 'c' and 'f' are the flags passed to
+exuberant ctags to list C++ classes and functions and 'class' is the title
+used for the class tags and 'function' is the title used for the function tags
+in the taglist window.
+
+For example, to display only functions defined in a C file and to use "My
+Functions" as the title for the function tags, use
+
+ let tlist_c_settings = 'c;f:My Functions'
+
+When you set the tlist_xxx_settings variable, you will override the default
+setting used by the taglist plugin for the 'xxx' language. You cannot add to
+the default options used by the taglist plugin for a particular file type. To
+add to the options used by the taglist plugin for a language, copy the option
+values from the taglist plugin file to your .vimrc file and modify it.
+
+Adding support for a new language~
+If you want to add support for a new language to the taglist plugin, you need
+to first extend the exuberant ctags tool. For more information about extending
+exuberant ctags, visit the following page:
+
+ http://ctags.sourceforge.net/EXTENDING.html
+
+To add support for a new language, set the tlist_xxx_settings variable in the
+~/.vimrc file appropriately as described above. Replace 'xxx' in the variable
+name with the Vim filetype name for the new language.
+
+For example, to extend the taglist plugin to support the latex language, you
+can use the following line (assuming, you have already extended exuberant
+ctags to support the latex language):
+
+ let tlist_tex_settings='latex;b:bibitem;c:command;l:label'
+
+With the above line, when you edit files of filetype "tex" in Vim, the taglist
+plugin will invoke the exuberant ctags tool passing the "latex" filetype and
+the flags b, c and l to generate the tags. The text heading 'bibitem',
+'command' and 'label' will be used in the taglist window for the tags which
+are generated for the flags b, c and l respectively.
+
+==============================================================================
+ *taglist-faq*
+10. Frequently Asked Questions~
+
+Q. The taglist plugin doesn't work. The taglist window is empty and the tags
+ defined in a file are not displayed.
+A. Are you using Vim version 6.0 and above? The taglist plugin relies on the
+ features supported by Vim version 6.0 and above. You can use the following
+ command to get the Vim version:
+>
+ $ vim --version
+<
+ Are you using exuberant ctags version 5.0 and above? The taglist plugin
+ relies on the features supported by exuberant ctags and will not work with
+ GNU ctags or the Unix ctags utility. You can use the following command to
+ determine whether the ctags installed in your system is exuberant ctags:
+>
+ $ ctags --version
+<
+ Is exuberant ctags present in one of the directories in your PATH? If not,
+ you need to set the Tlist_Ctags_Cmd variable to point to the location of
+ exuberant ctags. Use the following Vim command to verify that this is setup
+ correctly:
+>
+ :echo system(Tlist_Ctags_Cmd . ' --version')
+<
+ The above command should display the version information for exuberant
+ ctags.
+
+ Did you turn on the Vim filetype detection? The taglist plugin relies on
+ the filetype detected by Vim and passes the filetype to the exuberant ctags
+ utility to parse the tags. Check the output of the following Vim command:
+>
+ :filetype
+<
+ The output of the above command should contain "filetype detection:ON".
+ To turn on the filetype detection, add the following line to the .vimrc or
+ _vimrc file:
+>
+ filetype on
+<
+ Is your version of Vim compiled with the support for the system() function?
+ The following Vim command should display 1:
+>
+ :echo exists('*system')
+<
+ In some Linux distributions (particularly Suse Linux), the default Vim
+ installation is built without the support for the system() function. The
+ taglist plugin uses the system() function to invoke the exuberant ctags
+ utility. You need to rebuild Vim after enabling the support for the
+ system() function. If you use the default build options, the system()
+ function will be supported.
+
+ Do you have the |'shellslash'| option set? You can try disabling the
+ |'shellslash'| option. When the taglist plugin invokes the exuberant ctags
+ utility with the path to the file, if the incorrect slashes are used, then
+ you will see errors.
+
+ Check the shell related Vim options values using the following command:
+>
+ :set shell? shellcmdflag? shellpipe?
+ :set shellquote? shellredir? shellxquote?
+<
+ If these options are set in your .vimrc or _vimrc file, try removing those
+ lines.
+
+ Are you using a Unix shell in a MS-Windows environment? For example,
+ the Unix shell from the MKS-toolkit. Do you have the SHELL environment
+ set to point to this shell? You can try resetting the SHELL environment
+ variable.
+
+ If you are using a Unix shell on MS-Windows, you should try to use
+ exuberant ctags that is compiled for Unix-like environments so that
+ exuberant ctags will understand path names with forward slash characters.
+
+ Is your filetype supported by the exuberant ctags utility? The file types
+ supported by the exuberant ctags utility are listed in the ctags help. If a
+ file type is not supported, you have to extend exuberant ctags. You can use
+ the following command to list the filetypes supported by exuberant ctags:
+>
+ ctags --list-languages
+<
+ Run the following command from the shell prompt and check whether the tags
+ defined in your file are listed in the output from exuberant ctags:
+>
+ ctags -f - --format=2 --excmd=pattern --fields=nks <filename>
+<
+ If you see your tags in the output from the above command, then the
+ exuberant ctags utility is properly parsing your file.
+
+ Do you have the .ctags or _ctags or the ctags.cnf file in your home
+ directory for specifying default options or for extending exuberant ctags?
+ If you do have this file, check the options in this file and make sure
+ these options are not interfering with the operation of the taglist plugin.
+
+ If you are using MS-Windows, check the value of the TEMP and TMP
+ environment variables. If these environment variables are set to a path
+ with space characters in the name, then try using the DOS 8.3 short name
+ for the path or set them to a path without the space characters in the
+ name. For example, if the temporary directory name is "C:\Documents and
+ Settings\xyz\Local Settings\Temp", then try setting the TEMP variable to
+ the following:
+>
+ set TEMP=C:\DOCUMEN~1\xyz\LOCALS~1\Temp
+<
+ If exuberant ctags is installed in a directory with space characters in the
+ name, then try adding the directory to the PATH environment variable or try
+ setting the 'Tlist_Ctags_Cmd' variable to the shortest path name to ctags
+ or try copying the exuberant ctags to a path without space characters in
+ the name. For example, if exuberant ctags is installed in the directory
+ "C:\Program Files\Ctags", then try setting the 'Tlist_Ctags_Cmd' variable
+ as below:
+>
+ let Tlist_Ctags_Cmd='C:\Progra~1\Ctags\ctags.exe'
+<
+ If you are using a cygwin compiled version of exuberant ctags on MS-Windows,
+ make sure that either you have the cygwin compiled sort utility installed
+ and available in your PATH or compile exuberant ctags with internal sort
+ support. Otherwise, when exuberant ctags sorts the tags output by invoking
+ the sort utility, it may end up invoking the MS-Windows version of
+ sort.exe, thereby resulting in failure.
+
+Q. When I try to open the taglist window, I am seeing the following error
+ message. How do I fix this problem?
+
+ Taglist: Failed to generate tags for /my/path/to/file
+ ctags: illegal option -- -^@usage: ctags [-BFadtuwvx] [-f tagsfile] file ...
+
+A. The taglist plugin will work only with the exuberant ctags tool. You
+ cannot use the GNU ctags or the Unix ctags program with the taglist plugin.
+ You will see an error message similar to the one shown above, if you try
+ use a non-exuberant ctags program with Vim. To fix this problem, either add
+ the exuberant ctags tool location to the PATH environment variable or set
+ the 'Tlist_Ctags_Cmd' variable.
+
+Q. A file has more than one tag with the same name. When I select a tag name
+ from the taglist window, the cursor is positioned at the incorrect tag
+ location.
+A. The taglist plugin uses the search pattern generated by the exuberant ctags
+ utility to position the cursor at the location of a tag definition. If a
+ file has more than one tag with the same name and same prototype, then the
+ search pattern will be the same. In this case, when searching for the tag
+ pattern, the cursor may be positioned at the incorrect location.
+
+Q. I have made some modifications to my file and introduced new
+ functions/classes/variables. I have not yet saved my file. The taglist
+ plugin is not displaying the new tags when I update the taglist window.
+A. The exuberant ctags utility will process only files that are present in the
+ disk. To list the tags defined in a file, you have to save the file and
+ then update the taglist window.
+
+Q. I have created a ctags file using the exuberant ctags utility for my source
+ tree. How do I configure the taglist plugin to use this tags file?
+A. The taglist plugin doesn't use a tags file stored in disk. For every opened
+ file, the taglist plugin invokes the exuberant ctags utility to get the
+ list of tags dynamically. The Vim system() function is used to invoke
+ exuberant ctags and get the ctags output. This function internally uses a
+ temporary file to store the output. This file is deleted after the output
+ from the command is read. So you will never see the file that contains the
+ output of exuberant ctags.
+
+Q. When I set the |'updatetime'| option to a low value (less than 1000) and if
+ I keep pressing a key with the taglist window open, the current buffer
+ contents are changed. Why is this?
+A. The taglist plugin uses the |CursorHold| autocmd to highlight the current
+ tag. The CursorHold autocmd triggers for every |'updatetime'| milliseconds.
+ If the |'updatetime'| option is set to a low value, then the CursorHold
+ autocmd will be triggered frequently. As the taglist plugin changes
+ the focus to the taglist window to highlight the current tag, this could
+ interfere with the key movement resulting in changing the contents of
+ the current buffer. The workaround for this problem is to not set the
+ |'updatetime'| option to a low value.
+
+==============================================================================
+ *taglist-license*
+11. License~
+Permission is hereby granted to use and distribute the taglist plugin, with or
+without modifications, provided that this copyright notice is copied with it.
+Like anything else that's free, taglist.vim is provided *as is* and comes with
+no warranty of any kind, either expressed or implied. In no event will the
+copyright holder be liable for any damamges resulting from the use of this
+software.
+
+==============================================================================
+ *taglist-todo*
+12. Todo~
+
+1. Group tags according to the scope and display them. For example,
+ group all the tags belonging to a C++/Java class
+2. Support for displaying tags in a modified (not-yet-saved) file.
+3. Automatically open the taglist window only for selected filetypes.
+ For other filetypes, close the taglist window.
+4. When using the shell from the MKS toolkit, the taglist plugin
+ doesn't work.
+5. The taglist plugin doesn't work with files edited remotely using the
+ netrw plugin. The exuberant ctags utility cannot process files over
+ scp/rcp/ftp, etc.
+
+==============================================================================
+
+vim:tw=78:ts=8:noet:ft=help:
diff --git a/.vim/doc/tags b/.vim/doc/tags
new file mode 100644
index 0000000..9049f74
--- /dev/null
+++ b/.vim/doc/tags
@@ -0,0 +1,1138 @@
+'Tlist_Auto_Highlight_Tag' taglist.txt /*'Tlist_Auto_Highlight_Tag'*
+'Tlist_Auto_Open' taglist.txt /*'Tlist_Auto_Open'*
+'Tlist_Auto_Update' taglist.txt /*'Tlist_Auto_Update'*
+'Tlist_Close_On_Select' taglist.txt /*'Tlist_Close_On_Select'*
+'Tlist_Compact_Format' taglist.txt /*'Tlist_Compact_Format'*
+'Tlist_Ctags_Cmd' taglist.txt /*'Tlist_Ctags_Cmd'*
+'Tlist_Display_Prototype' taglist.txt /*'Tlist_Display_Prototype'*
+'Tlist_Display_Tag_Scope' taglist.txt /*'Tlist_Display_Tag_Scope'*
+'Tlist_Enable_Fold_Column' taglist.txt /*'Tlist_Enable_Fold_Column'*
+'Tlist_Exit_OnlyWindow' taglist.txt /*'Tlist_Exit_OnlyWindow'*
+'Tlist_File_Fold_Auto_Close' taglist.txt /*'Tlist_File_Fold_Auto_Close'*
+'Tlist_GainFocus_On_ToggleOpen' taglist.txt /*'Tlist_GainFocus_On_ToggleOpen'*
+'Tlist_Highlight_Tag_On_BufEnter' taglist.txt /*'Tlist_Highlight_Tag_On_BufEnter'*
+'Tlist_Inc_Winwidth' taglist.txt /*'Tlist_Inc_Winwidth'*
+'Tlist_Max_Submenu_Items' taglist.txt /*'Tlist_Max_Submenu_Items'*
+'Tlist_Max_Tag_Length' taglist.txt /*'Tlist_Max_Tag_Length'*
+'Tlist_Process_File_Always' taglist.txt /*'Tlist_Process_File_Always'*
+'Tlist_Show_Menu' taglist.txt /*'Tlist_Show_Menu'*
+'Tlist_Show_One_File' taglist.txt /*'Tlist_Show_One_File'*
+'Tlist_Sort_Type' taglist.txt /*'Tlist_Sort_Type'*
+'Tlist_Use_Horiz_Window' taglist.txt /*'Tlist_Use_Horiz_Window'*
+'Tlist_Use_Right_Window' taglist.txt /*'Tlist_Use_Right_Window'*
+'Tlist_Use_SingleClick' taglist.txt /*'Tlist_Use_SingleClick'*
+'Tlist_WinHeight' taglist.txt /*'Tlist_WinHeight'*
+'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
+:DocIndex haskellmode.txt /*:DocIndex*
+:DocSettings haskellmode.txt /*:DocSettings*
+:ExportDocIndex haskellmode.txt /*:ExportDocIndex*
+:FlagReference haskellmode.txt /*:FlagReference*
+:GHCReload haskellmode.txt /*:GHCReload*
+:GHCStaticOptions haskellmode.txt /*:GHCStaticOptions*
+:GHCi haskellmode.txt /*:GHCi*
+:HpasteIndex haskellmode.txt /*:HpasteIndex*
+:HpastePostNew haskellmode.txt /*:HpastePostNew*
+:IDoc haskellmode.txt /*:IDoc*
+:MDoc haskellmode.txt /*:MDoc*
+:TlistAddFiles taglist.txt /*:TlistAddFiles*
+:TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive*
+:TlistClose taglist.txt /*:TlistClose*
+:TlistDebug taglist.txt /*:TlistDebug*
+:TlistHighlightTag taglist.txt /*:TlistHighlightTag*
+:TlistLock taglist.txt /*:TlistLock*
+:TlistMessages taglist.txt /*:TlistMessages*
+:TlistOpen taglist.txt /*:TlistOpen*
+:TlistSessionLoad taglist.txt /*:TlistSessionLoad*
+:TlistSessionSave taglist.txt /*:TlistSessionSave*
+:TlistShowPrototype taglist.txt /*:TlistShowPrototype*
+:TlistShowTag taglist.txt /*:TlistShowTag*
+:TlistToggle taglist.txt /*:TlistToggle*
+:TlistUndebug taglist.txt /*:TlistUndebug*
+:TlistUnlock taglist.txt /*:TlistUnlock*
+:TlistUpdate taglist.txt /*:TlistUpdate*
+Alph latexhelp.txt /*Alph*
+Alt-B latex-suite.txt /*Alt-B*
+Alt-C latex-suite.txt /*Alt-C*
+Alt-I latex-suite.txt /*Alt-I*
+Alt-L latex-suite.txt /*Alt-L*
+BibTeX latexhelp.txt /*BibTeX*
+IMAP_PutTextWithMovement latex-suite.txt /*IMAP_PutTextWithMovement*
+Imap_DeleteEmptyPlaceHolders latex-suite.txt /*Imap_DeleteEmptyPlaceHolders*
+Imap_FreezeImap latex-suite.txt /*Imap_FreezeImap*
+Imap_PlaceHolderEnd latex-suite.txt /*Imap_PlaceHolderEnd*
+Imap_PlaceHolderStart latex-suite.txt /*Imap_PlaceHolderStart*
+Imap_StickyPlaceHolders latex-suite.txt /*Imap_StickyPlaceHolders*
+Imap_UsePlaceHolders latex-suite.txt /*Imap_UsePlaceHolders*
+LaTeX latexhelp.txt /*LaTeX*
+Plug_IMAP_DeleteAndJumBack latex-suite.txt /*Plug_IMAP_DeleteAndJumBack*
+Plug_IMAP_DeleteAndJumpForward latex-suite.txt /*Plug_IMAP_DeleteAndJumpForward*
+Plug_IMAP_JumpBack latex-suite.txt /*Plug_IMAP_JumpBack*
+Plug_IMAP_JumpForward latex-suite.txt /*Plug_IMAP_JumpForward*
+Plug_Tex_InsertItem latex-suite.txt /*Plug_Tex_InsertItem*
+Plug_Tex_LeftRight latex-suite.txt /*Plug_Tex_LeftRight*
+Plug_Tex_MathBF latex-suite.txt /*Plug_Tex_MathBF*
+Plug_Tex_MathCal latex-suite.txt /*Plug_Tex_MathCal*
+Roman latexhelp.txt /*Roman*
+TClearCiteHist latex-suite.txt /*TClearCiteHist*
+TLook latex-suite.txt /*TLook*
+TLookAll latex-suite.txt /*TLookAll*
+TLookBib latex-suite.txt /*TLookBib*
+TMacro latex-suite.txt /*TMacro*
+TMacroDelete latex-suite.txt /*TMacroDelete*
+TMacroEdit latex-suite.txt /*TMacroEdit*
+TMacroNew latex-suite.txt /*TMacroNew*
+TPackage latex-suite.txt /*TPackage*
+TPackageUpdate latex-suite.txt /*TPackageUpdate*
+TPackageUpdateAll latex-suite.txt /*TPackageUpdateAll*
+TPartComp latex-suite.txt /*TPartComp*
+TPartView latex-suite.txt /*TPartView*
+TSection latex-suite.txt /*TSection*
+TSectionAdvanced latex-suite.txt /*TSectionAdvanced*
+TTemplate latex-suite.txt /*TTemplate*
+Tex_AutoFolding latex-suite.txt /*Tex_AutoFolding*
+Tex_BIBINPUTS latex-suite.txt /*Tex_BIBINPUTS*
+Tex_CatchVisMapErrors latex-suite.txt /*Tex_CatchVisMapErrors*
+Tex_Com_name latex-suite.txt /*Tex_Com_name*
+Tex_CompileRule_format latex-suite.txt /*Tex_CompileRule_format*
+Tex_Debug latex-suite.txt /*Tex_Debug*
+Tex_DefaultTargetFormat latex-suite.txt /*Tex_DefaultTargetFormat*
+Tex_Diacritics latex-suite.txt /*Tex_Diacritics*
+Tex_Env_name latex-suite.txt /*Tex_Env_name*
+Tex_EnvironmentMaps latex-suite.txt /*Tex_EnvironmentMaps*
+Tex_EnvironmentMenus latex-suite.txt /*Tex_EnvironmentMenus*
+Tex_ExplorerHeight latex-suite.txt /*Tex_ExplorerHeight*
+Tex_FoldedCommands latex-suite.txt /*Tex_FoldedCommands*
+Tex_FoldedEnvironments latex-suite.txt /*Tex_FoldedEnvironments*
+Tex_FoldedMisc latex-suite.txt /*Tex_FoldedMisc*
+Tex_FoldedSections latex-suite.txt /*Tex_FoldedSections*
+Tex_Folding latex-suite.txt /*Tex_Folding*
+Tex_FontMaps latex-suite.txt /*Tex_FontMaps*
+Tex_FontMenus latex-suite.txt /*Tex_FontMenus*
+Tex_GotoError latex-suite.txt /*Tex_GotoError*
+Tex_HotKeyMappings latex-suite.txt /*Tex_HotKeyMappings*
+Tex_IgnoreLevel latex-suite.txt /*Tex_IgnoreLevel*
+Tex_IgnoredWarnings latex-suite.txt /*Tex_IgnoredWarnings*
+Tex_ImageDir latex-suite.txt /*Tex_ImageDir*
+Tex_ItemStyle_environment latex-suite.txt /*Tex_ItemStyle_environment*
+Tex_Leader latex-suite.txt /*Tex_Leader*
+Tex_Leader2 latex-suite.txt /*Tex_Leader2*
+Tex_MainFileExpression latex-suite.txt /*Tex_MainFileExpression*
+Tex_MainMenuLocation latex-suite.txt /*Tex_MainMenuLocation*
+Tex_MathMenus latex-suite.txt /*Tex_MathMenus*
+Tex_Menus latex-suite.txt /*Tex_Menus*
+Tex_MultipleCompileFormats latex-suite.txt /*Tex_MultipleCompileFormats*
+Tex_NestElementMenus latex-suite.txt /*Tex_NestElementMenus*
+Tex_NestPackagesMenu latex-suite.txt /*Tex_NestPackagesMenu*
+Tex_PackagesMenu latex-suite.txt /*Tex_PackagesMenu*
+Tex_ProjectSourceFiles latex-suite.txt /*Tex_ProjectSourceFiles*
+Tex_PromptedCommands latex-suite.txt /*Tex_PromptedCommands*
+Tex_PromptedEnvironments latex-suite.txt /*Tex_PromptedEnvironments*
+Tex_RememberCiteSearch latex-suite.txt /*Tex_RememberCiteSearch*
+Tex_SectionMaps latex-suite.txt /*Tex_SectionMaps*
+Tex_SectionMenus latex-suite.txt /*Tex_SectionMenus*
+Tex_SmartKeyBS latex-suite.txt /*Tex_SmartKeyBS*
+Tex_SmartKeyQuote latex-suite.txt /*Tex_SmartKeyQuote*
+Tex_TEXINPUTS latex-suite.txt /*Tex_TEXINPUTS*
+Tex_UseMakefile latex-suite.txt /*Tex_UseMakefile*
+Tex_UseMenuWizard latex-suite.txt /*Tex_UseMenuWizard*
+Tex_UsePython latex-suite.txt /*Tex_UsePython*
+Tex_UseSimpleLabelSearch latex-suite.txt /*Tex_UseSimpleLabelSearch*
+Tex_UseUtfMenus latex-suite.txt /*Tex_UseUtfMenus*
+Tex_ViewRuleComplete_format latex-suite.txt /*Tex_ViewRuleComplete_format*
+Tex_ViewRule_format latex-suite.txt /*Tex_ViewRule_format*
+Tex_ViewerCwindowHeight latex-suite.txt /*Tex_ViewerCwindowHeight*
+Tex_ViewerPreviewHeight latex-suite.txt /*Tex_ViewerPreviewHeight*
+Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()*
+Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()*
+Tlist_Set_App() taglist.txt /*Tlist_Set_App()*
+Tlist_Update_File_Tags() taglist.txt /*Tlist_Update_File_Tags()*
+Tshortcuts latex-suite.txt /*Tshortcuts*
+\Alph latexhelp.txt /*\\Alph*
+\Huge latexhelp.txt /*\\Huge*
+\LARGE latexhelp.txt /*\\LARGE*
+\Large latexhelp.txt /*\\Large*
+\Roman latexhelp.txt /*\\Roman*
+\\ latexhelp.txt /*\\\\*
+\\\\ latexhelp.txt /*\\\\\\\\*
+\addcontentsline latexhelp.txt /*\\addcontentsline*
+\address latexhelp.txt /*\\address*
+\addtocontents latexhelp.txt /*\\addtocontents*
+\addtocounter latexhelp.txt /*\\addtocounter*
+\addtolength latexhelp.txt /*\\addtolength*
+\addvspace latexhelp.txt /*\\addvspace*
+\alph latexhelp.txt /*\\alph*
+\and latexhelp.txt /*\\and*
+\appendix latexhelp.txt /*\\appendix*
+\arabic latexhelp.txt /*\\arabic*
+\author latexhelp.txt /*\\author*
+\begin latexhelp.txt /*\\begin*
+\bfseries latexhelp.txt /*\\bfseries*
+\bibitem latexhelp.txt /*\\bibitem*
+\bibliography latexhelp.txt /*\\bibliography*
+\bibliographystyle latexhelp.txt /*\\bibliographystyle*
+\bigskip latexhelp.txt /*\\bigskip*
+\cc latexhelp.txt /*\\cc*
+\cdots latexhelp.txt /*\\cdots*
+\centering latexhelp.txt /*\\centering*
+\chapter latexhelp.txt /*\\chapter*
+\circle latexhelp.txt /*\\circle*
+\cite latexhelp.txt /*\\cite*
+\cleardoublepage latexhelp.txt /*\\cleardoublepage*
+\clearpage latexhelp.txt /*\\clearpage*
+\cline latexhelp.txt /*\\cline*
+\closing latexhelp.txt /*\\closing*
+\dashbox latexhelp.txt /*\\dashbox*
+\date latexhelp.txt /*\\date*
+\ddots latexhelp.txt /*\\ddots*
+\depth latexhelp.txt /*\\depth*
+\documentclass latexhelp.txt /*\\documentclass*
+\dotfill latexhelp.txt /*\\dotfill*
+\emph latexhelp.txt /*\\emph*
+\end latexhelp.txt /*\\end*
+\enlargethispage latexhelp.txt /*\\enlargethispage*
+\fbox latexhelp.txt /*\\fbox*
+\flushbottom latexhelp.txt /*\\flushbottom*
+\fnsymbol latexhelp.txt /*\\fnsymbol*
+\fontencoding latexhelp.txt /*\\fontencoding*
+\fontfamily latexhelp.txt /*\\fontfamily*
+\fontseries latexhelp.txt /*\\fontseries*
+\fontshape latexhelp.txt /*\\fontshape*
+\fontsize latexhelp.txt /*\\fontsize*
+\footnote latexhelp.txt /*\\footnote*
+\footnotemark latexhelp.txt /*\\footnotemark*
+\footnotesize latexhelp.txt /*\\footnotesize*
+\footnotetext latexhelp.txt /*\\footnotetext*
+\frac latexhelp.txt /*\\frac*
+\frame latexhelp.txt /*\\frame*
+\framebox latexhelp.txt /*\\framebox*
+\fussy latexhelp.txt /*\\fussy*
+\height latexhelp.txt /*\\height*
+\hfill latexhelp.txt /*\\hfill*
+\hline latexhelp.txt /*\\hline*
+\hrulefill latexhelp.txt /*\\hrulefill*
+\hspace latexhelp.txt /*\\hspace*
+\huge latexhelp.txt /*\\huge*
+\hyphenation latexhelp.txt /*\\hyphenation*
+\include latexhelp.txt /*\\include*
+\includeonly latexhelp.txt /*\\includeonly*
+\indent latexhelp.txt /*\\indent*
+\input latexhelp.txt /*\\input*
+\item latexhelp.txt /*\\item*
+\itshape latexhelp.txt /*\\itshape*
+\kill latexhelp.txt /*\\kill*
+\label latexhelp.txt /*\\label*
+\large latexhelp.txt /*\\large*
+\ldots latexhelp.txt /*\\ldots*
+\lefteqn latexhelp.txt /*\\lefteqn*
+\letter latexhelp.txt /*\\letter*
+\line latexhelp.txt /*\\line*
+\linebreak latexhelp.txt /*\\linebreak*
+\linethickness latexhelp.txt /*\\linethickness*
+\listoffigures latexhelp.txt /*\\listoffigures*
+\listoftables latexhelp.txt /*\\listoftables*
+\location latexhelp.txt /*\\location*
+\lrbox latexhelp.txt /*\\lrbox*
+\makebox latexhelp.txt /*\\makebox*
+\makelabels latexhelp.txt /*\\makelabels*
+\maketitle latexhelp.txt /*\\maketitle*
+\marginpar latexhelp.txt /*\\marginpar*
+\markboth latexhelp.txt /*\\markboth*
+\markright latexhelp.txt /*\\markright*
+\mathbf latexhelp.txt /*\\mathbf*
+\mathcal latexhelp.txt /*\\mathcal*
+\mathit latexhelp.txt /*\\mathit*
+\mathnormal latexhelp.txt /*\\mathnormal*
+\mathrm latexhelp.txt /*\\mathrm*
+\mathsf latexhelp.txt /*\\mathsf*
+\mathtt latexhelp.txt /*\\mathtt*
+\mathversion latexhelp.txt /*\\mathversion*
+\mbox latexhelp.txt /*\\mbox*
+\mdseries latexhelp.txt /*\\mdseries*
+\medskip latexhelp.txt /*\\medskip*
+\multicolumn latexhelp.txt /*\\multicolumn*
+\multiput latexhelp.txt /*\\multiput*
+\name latexhelp.txt /*\\name*
+\newcommand latexhelp.txt /*\\newcommand*
+\newcounter latexhelp.txt /*\\newcounter*
+\newenvironment latexhelp.txt /*\\newenvironment*
+\newfont latexhelp.txt /*\\newfont*
+\newlength latexhelp.txt /*\\newlength*
+\newline latexhelp.txt /*\\newline*
+\newpage latexhelp.txt /*\\newpage*
+\newsavebox latexhelp.txt /*\\newsavebox*
+\newtheorem latexhelp.txt /*\\newtheorem*
+\nocite latexhelp.txt /*\\nocite*
+\nofiles latexhelp.txt /*\\nofiles*
+\noindent latexhelp.txt /*\\noindent*
+\nolinebreak latexhelp.txt /*\\nolinebreak*
+\nonumber latexhelp.txt /*\\nonumber*
+\nopagebreak latexhelp.txt /*\\nopagebreak*
+\normalfont latexhelp.txt /*\\normalfont*
+\normalsize latexhelp.txt /*\\normalsize*
+\onecolumn latexhelp.txt /*\\onecolumn*
+\opening latexhelp.txt /*\\opening*
+\oval latexhelp.txt /*\\oval*
+\overbrace latexhelp.txt /*\\overbrace*
+\overline latexhelp.txt /*\\overline*
+\pagebreak latexhelp.txt /*\\pagebreak*
+\pagenumbering latexhelp.txt /*\\pagenumbering*
+\pageref latexhelp.txt /*\\pageref*
+\pagestyle latexhelp.txt /*\\pagestyle*
+\par latexhelp.txt /*\\par*
+\paragraph latexhelp.txt /*\\paragraph*
+\parbox latexhelp.txt /*\\parbox*
+\part latexhelp.txt /*\\part*
+\picture-framebox latexhelp.txt /*\\picture-framebox*
+\ps latexhelp.txt /*\\ps*
+\pushtabs latexhelp.txt /*\\pushtabs*
+\put latexhelp.txt /*\\put*
+\raggedbottom latexhelp.txt /*\\raggedbottom*
+\raggedleft latexhelp.txt /*\\raggedleft*
+\raggedright latexhelp.txt /*\\raggedright*
+\raisebox latexhelp.txt /*\\raisebox*
+\ref latexhelp.txt /*\\ref*
+\refstepcounter latexhelp.txt /*\\refstepcounter*
+\renewcommand latexhelp.txt /*\\renewcommand*
+\renewenvironment latexhelp.txt /*\\renewenvironment*
+\reversemarginpar latexhelp.txt /*\\reversemarginpar*
+\rmfamily latexhelp.txt /*\\rmfamily*
+\roman latexhelp.txt /*\\roman*
+\rule latexhelp.txt /*\\rule*
+\savebox latexhelp.txt /*\\savebox*
+\sbox latexhelp.txt /*\\sbox*
+\scriptsize latexhelp.txt /*\\scriptsize*
+\scshape latexhelp.txt /*\\scshape*
+\section latexhelp.txt /*\\section*
+\selectfont latexhelp.txt /*\\selectfont*
+\setcounter latexhelp.txt /*\\setcounter*
+\setlength latexhelp.txt /*\\setlength*
+\settodepth latexhelp.txt /*\\settodepth*
+\settoheight latexhelp.txt /*\\settoheight*
+\settowidth latexhelp.txt /*\\settowidth*
+\sffamily latexhelp.txt /*\\sffamily*
+\shortstack latexhelp.txt /*\\shortstack*
+\signature latexhelp.txt /*\\signature*
+\sloppy latexhelp.txt /*\\sloppy*
+\slshape latexhelp.txt /*\\slshape*
+\small latexhelp.txt /*\\small*
+\smallskip latexhelp.txt /*\\smallskip*
+\space latexhelp.txt /*\\space*
+\sqrt latexhelp.txt /*\\sqrt*
+\startbreaks latexhelp.txt /*\\startbreaks*
+\stepcounter latexhelp.txt /*\\stepcounter*
+\stopbreaks latexhelp.txt /*\\stopbreaks*
+\subparagraph latexhelp.txt /*\\subparagraph*
+\subsection latexhelp.txt /*\\subsection*
+\subsubsection latexhelp.txt /*\\subsubsection*
+\symbol latexhelp.txt /*\\symbol*
+\table latexhelp.txt /*\\table*
+\tableofcontents latexhelp.txt /*\\tableofcontents*
+\telephone latexhelp.txt /*\\telephone*
+\textbf latexhelp.txt /*\\textbf*
+\textit latexhelp.txt /*\\textit*
+\textmd latexhelp.txt /*\\textmd*
+\textnormal latexhelp.txt /*\\textnormal*
+\textrm latexhelp.txt /*\\textrm*
+\textsc latexhelp.txt /*\\textsc*
+\textsf latexhelp.txt /*\\textsf*
+\textsl latexhelp.txt /*\\textsl*
+\texttt latexhelp.txt /*\\texttt*
+\textup latexhelp.txt /*\\textup*
+\thanks latexhelp.txt /*\\thanks*
+\thebibliography latexhelp.txt /*\\thebibliography*
+\thispagestyle latexhelp.txt /*\\thispagestyle*
+\tiny latexhelp.txt /*\\tiny*
+\title latexhelp.txt /*\\title*
+\totalheight latexhelp.txt /*\\totalheight*
+\ttfamily latexhelp.txt /*\\ttfamily*
+\twocolumn latexhelp.txt /*\\twocolumn*
+\typein latexhelp.txt /*\\typein*
+\typeout latexhelp.txt /*\\typeout*
+\underbrace latexhelp.txt /*\\underbrace*
+\underline latexhelp.txt /*\\underline*
+\upshape latexhelp.txt /*\\upshape*
+\usebox latexhelp.txt /*\\usebox*
+\usecounter latexhelp.txt /*\\usecounter*
+\usefont latexhelp.txt /*\\usefont*
+\usepackage latexhelp.txt /*\\usepackage*
+\value latexhelp.txt /*\\value*
+\vdots latexhelp.txt /*\\vdots*
+\vector latexhelp.txt /*\\vector*
+\verb latexhelp.txt /*\\verb*
+\vfill latexhelp.txt /*\\vfill*
+\vline latexhelp.txt /*\\vline*
+\vspace latexhelp.txt /*\\vspace*
+\width latexhelp.txt /*\\width*
+_. haskellmode.txt /*_.*
+_? haskellmode.txt /*_?*
+_?1 haskellmode.txt /*_?1*
+_?2 haskellmode.txt /*_?2*
+_T haskellmode.txt /*_T*
+_ct haskellmode.txt /*_ct*
+_i haskellmode.txt /*_i*
+_ie haskellmode.txt /*_ie*
+_im haskellmode.txt /*_im*
+_iq haskellmode.txt /*_iq*
+_iqm haskellmode.txt /*_iqm*
+_lang haskellmode.txt /*_lang*
+_opt haskellmode.txt /*_opt*
+_si haskellmode.txt /*_si*
+_t haskellmode.txt /*_t*
+adding-bib-options latex-suite.txt /*adding-bib-options*
+alph latexhelp.txt /*alph*
+altkey-mappings latex-suite.txt /*altkey-mappings*
+arabic latexhelp.txt /*arabic*
+array latexhelp.txt /*array*
+article-class latexhelp.txt /*article-class*
+auc-tex-mappings latex-suite.txt /*auc-tex-mappings*
+automatic-package-detection latex-suite.txt /*automatic-package-detection*
+bibtex latexhelp.txt /*bibtex*
+bibtex-bindings latex-suite.txt /*bibtex-bindings*
+book-class latexhelp.txt /*book-class*
+c-support csupport.txt /*c-support*
+center latexhelp.txt /*center*
+changing-commands latex-suite.txt /*changing-commands*
+changing-environments latex-suite.txt /*changing-environments*
+cite-search-caching latex-suite.txt /*cite-search-caching*
+compiler-dependency latex-suite.txt /*compiler-dependency*
+compiler-ghc haskellmode.txt /*compiler-ghc*
+compiler-output-customization latex-suite.txt /*compiler-output-customization*
+compiler-rules latex-suite.txt /*compiler-rules*
+compiling-multiple latex-suite.txt /*compiling-multiple*
+completion-window-preferences latex-suite.txt /*completion-window-preferences*
+csupport csupport.txt /*csupport*
+csupport-c++ csupport.txt /*csupport-c++*
+csupport-c++-method-impl csupport.txt /*csupport-c++-method-impl*
+csupport-c++-normal-mode csupport.txt /*csupport-c++-normal-mode*
+csupport-c++-visual-mode csupport.txt /*csupport-c++-visual-mode*
+csupport-code-to-comm csupport.txt /*csupport-code-to-comm*
+csupport-comm csupport.txt /*csupport-comm*
+csupport-comm-aligned csupport.txt /*csupport-comm-aligned*
+csupport-comm-c-cpp csupport.txt /*csupport-comm-c-cpp*
+csupport-comm-date csupport.txt /*csupport-comm-date*
+csupport-comm-frame csupport.txt /*csupport-comm-frame*
+csupport-comm-keywords csupport.txt /*csupport-comm-keywords*
+csupport-comm-realign csupport.txt /*csupport-comm-realign*
+csupport-comm-to-code csupport.txt /*csupport-comm-to-code*
+csupport-custom csupport.txt /*csupport-custom*
+csupport-custom-glob-vars csupport.txt /*csupport-custom-glob-vars*
+csupport-custom-root-menu csupport.txt /*csupport-custom-root-menu*
+csupport-dictionary csupport.txt /*csupport-dictionary*
+csupport-folding csupport.txt /*csupport-folding*
+csupport-help csupport.txt /*csupport-help*
+csupport-hotkeys csupport.txt /*csupport-hotkeys*
+csupport-idioms csupport.txt /*csupport-idioms*
+csupport-prep csupport.txt /*csupport-prep*
+csupport-prep-if0 csupport.txt /*csupport-prep-if0*
+csupport-prep-normal-mode csupport.txt /*csupport-prep-normal-mode*
+csupport-prep-visual-mode csupport.txt /*csupport-prep-visual-mode*
+csupport-proto csupport.txt /*csupport-proto*
+csupport-release-notes csupport.txt /*csupport-release-notes*
+csupport-run csupport.txt /*csupport-run*
+csupport-run-buffer csupport.txt /*csupport-run-buffer*
+csupport-run-cmdline-args csupport.txt /*csupport-run-cmdline-args*
+csupport-run-codecheck csupport.txt /*csupport-run-codecheck*
+csupport-run-hardcopy csupport.txt /*csupport-run-hardcopy*
+csupport-run-indent csupport.txt /*csupport-run-indent*
+csupport-run-make csupport.txt /*csupport-run-make*
+csupport-run-make-args csupport.txt /*csupport-run-make-args*
+csupport-run-output csupport.txt /*csupport-run-output*
+csupport-run-splint csupport.txt /*csupport-run-splint*
+csupport-run-templates csupport.txt /*csupport-run-templates*
+csupport-run-xterm csupport.txt /*csupport-run-xterm*
+csupport-snippets csupport.txt /*csupport-snippets*
+csupport-stat csupport.txt /*csupport-stat*
+csupport-stat-normal-mode csupport.txt /*csupport-stat-normal-mode*
+csupport-stat-visual-mode csupport.txt /*csupport-stat-visual-mode*
+csupport-system-wide csupport.txt /*csupport-system-wide*
+csupport-taglist csupport.txt /*csupport-taglist*
+csupport-templates csupport.txt /*csupport-templates*
+csupport-templates-date csupport.txt /*csupport-templates-date*
+csupport-templates-definition csupport.txt /*csupport-templates-definition*
+csupport-templates-expansion csupport.txt /*csupport-templates-expansion*
+csupport-templates-files csupport.txt /*csupport-templates-files*
+csupport-templates-macros csupport.txt /*csupport-templates-macros*
+csupport-templates-names csupport.txt /*csupport-templates-names*
+csupport-troubleshooting csupport.txt /*csupport-troubleshooting*
+csupport-usage-gvim csupport.txt /*csupport-usage-gvim*
+csupport-usage-vim csupport.txt /*csupport-usage-vim*
+csupport-windows csupport.txt /*csupport-windows*
+csupport.txt csupport.txt /*csupport.txt*
+custom-macros-menu latex-suite.txt /*custom-macros-menu*
+custom-packages latex-suite.txt /*custom-packages*
+customize-alt-key-maps latex-suite.txt /*customize-alt-key-maps*
+customize-imap-maps latex-suite.txt /*customize-imap-maps*
+customizing-compiling latex-suite.txt /*customizing-compiling*
+customizing-folding latex-suite.txt /*customizing-folding*
+customizing-latex-completion latex-suite.txt /*customizing-latex-completion*
+customizing-latex-suite latex-suite.txt /*customizing-latex-suite*
+customizing-macros latex-suite.txt /*customizing-macros*
+customizing-menus latex-suite.txt /*customizing-menus*
+customizing-packages latex-suite.txt /*customizing-packages*
+customizing-place-holders latex-suite.txt /*customizing-place-holders*
+customizing-smart-keys latex-suite.txt /*customizing-smart-keys*
+customizing-viewing latex-suite.txt /*customizing-viewing*
+customizing-what-to-fold latex-suite.txt /*customizing-what-to-fold*
+default-folding latex-suite.txt /*default-folding*
+description latexhelp.txt /*description*
+diacritic-mappings latex-suite.txt /*diacritic-mappings*
+displaymath latexhelp.txt /*displaymath*
+draft latexhelp.txt /*draft*
+editing-folding latex-suite.txt /*editing-folding*
+empty latexhelp.txt /*empty*
+enabling-searching latex-suite.txt /*enabling-searching*
+enclosing-commands latex-suite.txt /*enclosing-commands*
+enclosing-env-f5 latex-suite.txt /*enclosing-env-f5*
+enclosing-env-threeletter latex-suite.txt /*enclosing-env-threeletter*
+enclosing-environments latex-suite.txt /*enclosing-environments*
+enumerate latexhelp.txt /*enumerate*
+environment-mappings latex-suite.txt /*environment-mappings*
+eqnarray latexhelp.txt /*eqnarray*
+equation latexhelp.txt /*equation*
+figure latexhelp.txt /*figure*
+final latexhelp.txt /*final*
+fleqn latexhelp.txt /*fleqn*
+flushleft latexhelp.txt /*flushleft*
+flushright latexhelp.txt /*flushright*
+fold-setting-adding latex-suite.txt /*fold-setting-adding*
+fold-setting-advanced latex-suite.txt /*fold-setting-advanced*
+font-lowlevelcommands latexhelp.txt /*font-lowlevelcommands*
+font-maps latex-suite.txt /*font-maps*
+font-size latexhelp.txt /*font-size*
+font-styles latexhelp.txt /*font-styles*
+forward-searching latex-suite.txt /*forward-searching*
+g:ghc haskellmode.txt /*g:ghc*
+g:haddock_browser haskellmode.txt /*g:haddock_browser*
+g:haddock_browser_callformat haskellmode.txt /*g:haddock_browser_callformat*
+g:haddock_docdir haskellmode.txt /*g:haddock_docdir*
+g:haddock_indexfiledir haskellmode.txt /*g:haddock_indexfiledir*
+g:wget haskellmode.txt /*g:wget*
+ghc haskellmode.txt /*ghc*
+ghc-compiler haskellmode.txt /*ghc-compiler*
+greek-letter-mappings latex-suite.txt /*greek-letter-mappings*
+haddock haskellmode.txt /*haddock*
+haskellmode haskellmode.txt /*haskellmode*
+haskellmode-XO haskellmode.txt /*haskellmode-XO*
+haskellmode-XU haskellmode.txt /*haskellmode-XU*
+haskellmode-compiler haskellmode.txt /*haskellmode-compiler*
+haskellmode-editing haskellmode.txt /*haskellmode-editing*
+haskellmode-haddock haskellmode.txt /*haskellmode-haddock*
+haskellmode-hpaste haskellmode.txt /*haskellmode-hpaste*
+haskellmode-indexing haskellmode.txt /*haskellmode-indexing*
+haskellmode-lookup haskellmode.txt /*haskellmode-lookup*
+haskellmode-omni-completion haskellmode.txt /*haskellmode-omni-completion*
+haskellmode-overview haskellmode.txt /*haskellmode-overview*
+haskellmode-quickref haskellmode.txt /*haskellmode-quickref*
+haskellmode-requirements haskellmode.txt /*haskellmode-requirements*
+haskellmode-resources haskellmode.txt /*haskellmode-resources*
+haskellmode-settings haskellmode.txt /*haskellmode-settings*
+haskellmode-settings-fine haskellmode.txt /*haskellmode-settings-fine*
+haskellmode-settings-main haskellmode.txt /*haskellmode-settings-main*
+haskellmode-user-completion haskellmode.txt /*haskellmode-user-completion*
+haskellmode.txt haskellmode.txt /*haskellmode.txt*
+headings latexhelp.txt /*headings*
+hpaste haskellmode.txt /*hpaste*
+hyph- latexhelp.txt /*hyph-*
+im_1 imaps.txt /*im_1*
+imaps-usage imaps.txt /*imaps-usage*
+imaps.txt imaps.txt /*imaps.txt*
+imaps.txt-toc imaps.txt /*imaps.txt-toc*
+inserting-commands latex-suite.txt /*inserting-commands*
+inserting-env-f5 latex-suite.txt /*inserting-env-f5*
+inserting-env-shift-f1 latex-suite.txt /*inserting-env-shift-f1*
+inserting-env-threeletter latex-suite.txt /*inserting-env-threeletter*
+inserting-environments latex-suite.txt /*inserting-environments*
+inserting-packages latex-suite.txt /*inserting-packages*
+inverse-searching latex-suite.txt /*inverse-searching*
+itemize latexhelp.txt /*itemize*
+landscape latexhelp.txt /*landscape*
+latex latexhelp.txt /*latex*
+latex-boxes latexhelp.txt /*latex-boxes*
+latex-breaking latexhelp.txt /*latex-breaking*
+latex-classes latexhelp.txt /*latex-classes*
+latex-command-maps latex-suite.txt /*latex-command-maps*
+latex-commands latexhelp.txt /*latex-commands*
+latex-compiling latex-suite.txt /*latex-compiling*
+latex-completion latex-suite.txt /*latex-completion*
+latex-completion-cite latex-suite.txt /*latex-completion-cite*
+latex-counters latexhelp.txt /*latex-counters*
+latex-definitions latexhelp.txt /*latex-definitions*
+latex-environments latexhelp.txt /*latex-environments*
+latex-folding latex-suite.txt /*latex-folding*
+latex-footnotes latexhelp.txt /*latex-footnotes*
+latex-hor-space latexhelp.txt /*latex-hor-space*
+latex-inputting latexhelp.txt /*latex-inputting*
+latex-layout latexhelp.txt /*latex-layout*
+latex-lengths latexhelp.txt /*latex-lengths*
+latex-letters latexhelp.txt /*latex-letters*
+latex-macros latex-suite.txt /*latex-macros*
+latex-margin-notes latexhelp.txt /*latex-margin-notes*
+latex-master-file latex-suite.txt /*latex-master-file*
+latex-master-file-specification latex-suite.txt /*latex-master-file-specification*
+latex-math latexhelp.txt /*latex-math*
+latex-modes latexhelp.txt /*latex-modes*
+latex-package-scanning latex-suite.txt /*latex-package-scanning*
+latex-packages latex-suite.txt /*latex-packages*
+latex-page-styles latexhelp.txt /*latex-page-styles*
+latex-paragraphs latexhelp.txt /*latex-paragraphs*
+latex-parameters latexhelp.txt /*latex-parameters*
+latex-project latex-suite.txt /*latex-project*
+latex-project-example latex-suite.txt /*latex-project-example*
+latex-project-settings latex-suite.txt /*latex-project-settings*
+latex-references latexhelp.txt /*latex-references*
+latex-sectioning latexhelp.txt /*latex-sectioning*
+latex-spaces-boxes latexhelp.txt /*latex-spaces-boxes*
+latex-special latexhelp.txt /*latex-special*
+latex-start-end latexhelp.txt /*latex-start-end*
+latex-suite-commands latex-suite.txt /*latex-suite-commands*
+latex-suite-commands-maps latex-suite.txt /*latex-suite-commands-maps*
+latex-suite-credits latex-suite.txt /*latex-suite-credits*
+latex-suite-maintainer latex-suite.txt /*latex-suite-maintainer*
+latex-suite-maps latex-suite.txt /*latex-suite-maps*
+latex-suite-quickstart.txt latex-suite-quickstart.txt /*latex-suite-quickstart.txt*
+latex-suite-quickstart.txt-toc latex-suite-quickstart.txt /*latex-suite-quickstart.txt-toc*
+latex-suite-templates latex-suite.txt /*latex-suite-templates*
+latex-suite.txt latex-suite.txt /*latex-suite.txt*
+latex-suite.txt-toc latex-suite.txt /*latex-suite.txt-toc*
+latex-terminal latexhelp.txt /*latex-terminal*
+latex-toc latexhelp.txt /*latex-toc*
+latex-typefaces latexhelp.txt /*latex-typefaces*
+latex-ver-space latexhelp.txt /*latex-ver-space*
+latex-viewing latex-suite.txt /*latex-viewing*
+latex-viewing-rules latex-suite.txt /*latex-viewing-rules*
+latexhelp.txt latexhelp.txt /*latexhelp.txt*
+leqno latexhelp.txt /*leqno*
+letter-class latexhelp.txt /*letter-class*
+list latexhelp.txt /*list*
+lq_1 latex-suite-quickstart.txt /*lq_1*
+lq_10 latex-suite-quickstart.txt /*lq_10*
+lq_2 latex-suite-quickstart.txt /*lq_2*
+lq_3 latex-suite-quickstart.txt /*lq_3*
+lq_4 latex-suite-quickstart.txt /*lq_4*
+lq_5 latex-suite-quickstart.txt /*lq_5*
+lq_6 latex-suite-quickstart.txt /*lq_6*
+lq_7 latex-suite-quickstart.txt /*lq_7*
+lq_8 latex-suite-quickstart.txt /*lq_8*
+lq_8_1 latex-suite-quickstart.txt /*lq_8_1*
+lq_9 latex-suite-quickstart.txt /*lq_9*
+lq_9_1 latex-suite-quickstart.txt /*lq_9_1*
+lq_9_2 latex-suite-quickstart.txt /*lq_9_2*
+lq_a_bc latex-suite-quickstart.txt /*lq_a_bc*
+lq_a_bd latex-suite-quickstart.txt /*lq_a_bd*
+lq_a_be latex-suite-quickstart.txt /*lq_a_be*
+lq_a_bf latex-suite-quickstart.txt /*lq_a_bf*
+lq_a_bg latex-suite-quickstart.txt /*lq_a_bg*
+lq_a_bh latex-suite-quickstart.txt /*lq_a_bh*
+lq_a_bi latex-suite-quickstart.txt /*lq_a_bi*
+lq_a_bj latex-suite-quickstart.txt /*lq_a_bj*
+lq_a_bk latex-suite-quickstart.txt /*lq_a_bk*
+lq_a_bl latex-suite-quickstart.txt /*lq_a_bl*
+lq_a_bm latex-suite-quickstart.txt /*lq_a_bm*
+lq_a_bn latex-suite-quickstart.txt /*lq_a_bn*
+lq_a_bo latex-suite-quickstart.txt /*lq_a_bo*
+lq_u_1 latex-suite-quickstart.txt /*lq_u_1*
+lq_u_2 latex-suite-quickstart.txt /*lq_u_2*
+lq_u_3 latex-suite-quickstart.txt /*lq_u_3*
+lq_u_4 latex-suite-quickstart.txt /*lq_u_4*
+lq_u_5 latex-suite-quickstart.txt /*lq_u_5*
+lq_u_6 latex-suite-quickstart.txt /*lq_u_6*
+lq_u_7 latex-suite-quickstart.txt /*lq_u_7*
+lq_u_8 latex-suite-quickstart.txt /*lq_u_8*
+lq_u_9 latex-suite-quickstart.txt /*lq_u_9*
+lr-mode latexhelp.txt /*lr-mode*
+ls-completion-custom latex-suite.txt /*ls-completion-custom*
+ls-completion-ref latex-suite.txt /*ls-completion-ref*
+ls-completion-usage latex-suite.txt /*ls-completion-usage*
+ls-filename-completion latex-suite.txt /*ls-filename-completion*
+ls-general-purpose-settings latex-suite.txt /*ls-general-purpose-settings*
+ls-imap-f7 latex-suite.txt /*ls-imap-f7*
+ls-imap-s-f7 latex-suite.txt /*ls-imap-s-f7*
+ls-imaps-syntax latex-suite.txt /*ls-imaps-syntax*
+ls-new-macros latex-suite.txt /*ls-new-macros*
+ls-set-grepprg latex-suite.txt /*ls-set-grepprg*
+ls-vmap-f7 latex-suite.txt /*ls-vmap-f7*
+ls_1 latex-suite.txt /*ls_1*
+ls_10 latex-suite.txt /*ls_10*
+ls_10_1 latex-suite.txt /*ls_10_1*
+ls_10_1_1 latex-suite.txt /*ls_10_1_1*
+ls_10_1_2 latex-suite.txt /*ls_10_1_2*
+ls_10_2 latex-suite.txt /*ls_10_2*
+ls_10_2_1 latex-suite.txt /*ls_10_2_1*
+ls_10_2_10 latex-suite.txt /*ls_10_2_10*
+ls_10_2_11 latex-suite.txt /*ls_10_2_11*
+ls_10_2_12 latex-suite.txt /*ls_10_2_12*
+ls_10_2_13 latex-suite.txt /*ls_10_2_13*
+ls_10_2_14 latex-suite.txt /*ls_10_2_14*
+ls_10_2_15 latex-suite.txt /*ls_10_2_15*
+ls_10_2_16 latex-suite.txt /*ls_10_2_16*
+ls_10_2_2 latex-suite.txt /*ls_10_2_2*
+ls_10_2_3 latex-suite.txt /*ls_10_2_3*
+ls_10_2_4 latex-suite.txt /*ls_10_2_4*
+ls_10_2_5 latex-suite.txt /*ls_10_2_5*
+ls_10_2_6 latex-suite.txt /*ls_10_2_6*
+ls_10_2_7 latex-suite.txt /*ls_10_2_7*
+ls_10_2_8 latex-suite.txt /*ls_10_2_8*
+ls_10_2_9 latex-suite.txt /*ls_10_2_9*
+ls_11 latex-suite.txt /*ls_11*
+ls_11_1 latex-suite.txt /*ls_11_1*
+ls_11_10 latex-suite.txt /*ls_11_10*
+ls_11_10_1 latex-suite.txt /*ls_11_10_1*
+ls_11_1_1 latex-suite.txt /*ls_11_1_1*
+ls_11_1_2 latex-suite.txt /*ls_11_1_2*
+ls_11_2 latex-suite.txt /*ls_11_2*
+ls_11_2_1 latex-suite.txt /*ls_11_2_1*
+ls_11_2_2 latex-suite.txt /*ls_11_2_2*
+ls_11_2_3 latex-suite.txt /*ls_11_2_3*
+ls_11_2_4 latex-suite.txt /*ls_11_2_4*
+ls_11_3 latex-suite.txt /*ls_11_3*
+ls_11_3_1 latex-suite.txt /*ls_11_3_1*
+ls_11_3_10 latex-suite.txt /*ls_11_3_10*
+ls_11_3_11 latex-suite.txt /*ls_11_3_11*
+ls_11_3_12 latex-suite.txt /*ls_11_3_12*
+ls_11_3_13 latex-suite.txt /*ls_11_3_13*
+ls_11_3_2 latex-suite.txt /*ls_11_3_2*
+ls_11_3_3 latex-suite.txt /*ls_11_3_3*
+ls_11_3_4 latex-suite.txt /*ls_11_3_4*
+ls_11_3_5 latex-suite.txt /*ls_11_3_5*
+ls_11_3_6 latex-suite.txt /*ls_11_3_6*
+ls_11_3_7 latex-suite.txt /*ls_11_3_7*
+ls_11_3_8 latex-suite.txt /*ls_11_3_8*
+ls_11_3_9 latex-suite.txt /*ls_11_3_9*
+ls_11_4 latex-suite.txt /*ls_11_4*
+ls_11_4_1 latex-suite.txt /*ls_11_4_1*
+ls_11_4_2 latex-suite.txt /*ls_11_4_2*
+ls_11_5 latex-suite.txt /*ls_11_5*
+ls_11_5_1 latex-suite.txt /*ls_11_5_1*
+ls_11_5_2 latex-suite.txt /*ls_11_5_2*
+ls_11_5_3 latex-suite.txt /*ls_11_5_3*
+ls_11_5_4 latex-suite.txt /*ls_11_5_4*
+ls_11_5_5 latex-suite.txt /*ls_11_5_5*
+ls_11_6 latex-suite.txt /*ls_11_6*
+ls_11_6_1 latex-suite.txt /*ls_11_6_1*
+ls_11_6_2 latex-suite.txt /*ls_11_6_2*
+ls_11_6_3 latex-suite.txt /*ls_11_6_3*
+ls_11_6_4 latex-suite.txt /*ls_11_6_4*
+ls_11_6_5 latex-suite.txt /*ls_11_6_5*
+ls_11_6_6 latex-suite.txt /*ls_11_6_6*
+ls_11_6_7 latex-suite.txt /*ls_11_6_7*
+ls_11_6_8 latex-suite.txt /*ls_11_6_8*
+ls_11_7 latex-suite.txt /*ls_11_7*
+ls_11_7_1 latex-suite.txt /*ls_11_7_1*
+ls_11_7_2 latex-suite.txt /*ls_11_7_2*
+ls_11_8 latex-suite.txt /*ls_11_8*
+ls_11_8_1 latex-suite.txt /*ls_11_8_1*
+ls_11_8_2 latex-suite.txt /*ls_11_8_2*
+ls_11_8_3 latex-suite.txt /*ls_11_8_3*
+ls_11_8_4 latex-suite.txt /*ls_11_8_4*
+ls_11_8_5 latex-suite.txt /*ls_11_8_5*
+ls_11_8_6 latex-suite.txt /*ls_11_8_6*
+ls_11_8_7 latex-suite.txt /*ls_11_8_7*
+ls_11_9 latex-suite.txt /*ls_11_9*
+ls_11_9_1 latex-suite.txt /*ls_11_9_1*
+ls_11_9_2 latex-suite.txt /*ls_11_9_2*
+ls_12 latex-suite.txt /*ls_12*
+ls_2 latex-suite.txt /*ls_2*
+ls_3 latex-suite.txt /*ls_3*
+ls_3_1 latex-suite.txt /*ls_3_1*
+ls_3_10 latex-suite.txt /*ls_3_10*
+ls_3_10_1 latex-suite.txt /*ls_3_10_1*
+ls_3_10_2 latex-suite.txt /*ls_3_10_2*
+ls_3_10_3 latex-suite.txt /*ls_3_10_3*
+ls_3_10_4 latex-suite.txt /*ls_3_10_4*
+ls_3_11 latex-suite.txt /*ls_3_11*
+ls_3_12 latex-suite.txt /*ls_3_12*
+ls_3_12_1 latex-suite.txt /*ls_3_12_1*
+ls_3_12_2 latex-suite.txt /*ls_3_12_2*
+ls_3_1_1 latex-suite.txt /*ls_3_1_1*
+ls_3_1_1_1 latex-suite.txt /*ls_3_1_1_1*
+ls_3_1_1_2 latex-suite.txt /*ls_3_1_1_2*
+ls_3_1_1_3 latex-suite.txt /*ls_3_1_1_3*
+ls_3_1_2 latex-suite.txt /*ls_3_1_2*
+ls_3_1_2_1 latex-suite.txt /*ls_3_1_2_1*
+ls_3_1_2_2 latex-suite.txt /*ls_3_1_2_2*
+ls_3_1_3 latex-suite.txt /*ls_3_1_3*
+ls_3_2 latex-suite.txt /*ls_3_2*
+ls_3_2_1 latex-suite.txt /*ls_3_2_1*
+ls_3_2_2 latex-suite.txt /*ls_3_2_2*
+ls_3_2_3 latex-suite.txt /*ls_3_2_3*
+ls_3_3 latex-suite.txt /*ls_3_3*
+ls_3_4 latex-suite.txt /*ls_3_4*
+ls_3_5 latex-suite.txt /*ls_3_5*
+ls_3_6 latex-suite.txt /*ls_3_6*
+ls_3_7 latex-suite.txt /*ls_3_7*
+ls_3_8 latex-suite.txt /*ls_3_8*
+ls_3_8_1 latex-suite.txt /*ls_3_8_1*
+ls_3_9 latex-suite.txt /*ls_3_9*
+ls_4 latex-suite.txt /*ls_4*
+ls_4_1 latex-suite.txt /*ls_4_1*
+ls_4_2 latex-suite.txt /*ls_4_2*
+ls_4_3 latex-suite.txt /*ls_4_3*
+ls_4_3_1 latex-suite.txt /*ls_4_3_1*
+ls_4_4 latex-suite.txt /*ls_4_4*
+ls_4_4_1 latex-suite.txt /*ls_4_4_1*
+ls_4_4_2 latex-suite.txt /*ls_4_4_2*
+ls_5 latex-suite.txt /*ls_5*
+ls_5_1 latex-suite.txt /*ls_5_1*
+ls_5_2 latex-suite.txt /*ls_5_2*
+ls_5_3 latex-suite.txt /*ls_5_3*
+ls_5_3_1 latex-suite.txt /*ls_5_3_1*
+ls_5_4 latex-suite.txt /*ls_5_4*
+ls_5_5 latex-suite.txt /*ls_5_5*
+ls_6 latex-suite.txt /*ls_6*
+ls_6_1 latex-suite.txt /*ls_6_1*
+ls_6_2 latex-suite.txt /*ls_6_2*
+ls_6_3 latex-suite.txt /*ls_6_3*
+ls_6_4 latex-suite.txt /*ls_6_4*
+ls_6_5 latex-suite.txt /*ls_6_5*
+ls_7 latex-suite.txt /*ls_7*
+ls_7_1 latex-suite.txt /*ls_7_1*
+ls_7_2 latex-suite.txt /*ls_7_2*
+ls_7_3 latex-suite.txt /*ls_7_3*
+ls_8 latex-suite.txt /*ls_8*
+ls_8_1 latex-suite.txt /*ls_8_1*
+ls_8_2 latex-suite.txt /*ls_8_2*
+ls_8_2_1 latex-suite.txt /*ls_8_2_1*
+ls_8_2_2 latex-suite.txt /*ls_8_2_2*
+ls_8_2_3 latex-suite.txt /*ls_8_2_3*
+ls_8_2_4 latex-suite.txt /*ls_8_2_4*
+ls_8_2_5 latex-suite.txt /*ls_8_2_5*
+ls_8_3 latex-suite.txt /*ls_8_3*
+ls_9 latex-suite.txt /*ls_9*
+ls_9_1 latex-suite.txt /*ls_9_1*
+ls_9_2 latex-suite.txt /*ls_9_2*
+ls_a_bA latex-suite.txt /*ls_a_bA*
+ls_a_bB latex-suite.txt /*ls_a_bB*
+ls_a_bC latex-suite.txt /*ls_a_bC*
+ls_a_bD latex-suite.txt /*ls_a_bD*
+ls_a_bE latex-suite.txt /*ls_a_bE*
+ls_a_bF latex-suite.txt /*ls_a_bF*
+ls_a_bG latex-suite.txt /*ls_a_bG*
+ls_a_bH latex-suite.txt /*ls_a_bH*
+ls_a_bI latex-suite.txt /*ls_a_bI*
+ls_a_bJ latex-suite.txt /*ls_a_bJ*
+ls_a_bK latex-suite.txt /*ls_a_bK*
+ls_a_bL latex-suite.txt /*ls_a_bL*
+ls_a_bM latex-suite.txt /*ls_a_bM*
+ls_a_bN latex-suite.txt /*ls_a_bN*
+ls_a_bO latex-suite.txt /*ls_a_bO*
+ls_a_bP latex-suite.txt /*ls_a_bP*
+ls_a_bQ latex-suite.txt /*ls_a_bQ*
+ls_a_bR latex-suite.txt /*ls_a_bR*
+ls_a_bS latex-suite.txt /*ls_a_bS*
+ls_a_bT latex-suite.txt /*ls_a_bT*
+ls_a_bU latex-suite.txt /*ls_a_bU*
+ls_a_bV latex-suite.txt /*ls_a_bV*
+ls_a_bW latex-suite.txt /*ls_a_bW*
+ls_a_bX latex-suite.txt /*ls_a_bX*
+ls_a_bY latex-suite.txt /*ls_a_bY*
+ls_a_bZ latex-suite.txt /*ls_a_bZ*
+ls_a_bc latex-suite.txt /*ls_a_bc*
+ls_a_bd latex-suite.txt /*ls_a_bd*
+ls_a_be latex-suite.txt /*ls_a_be*
+ls_a_bf latex-suite.txt /*ls_a_bf*
+ls_a_bg latex-suite.txt /*ls_a_bg*
+ls_a_bh latex-suite.txt /*ls_a_bh*
+ls_a_bi latex-suite.txt /*ls_a_bi*
+ls_a_bj latex-suite.txt /*ls_a_bj*
+ls_a_bk latex-suite.txt /*ls_a_bk*
+ls_a_bl latex-suite.txt /*ls_a_bl*
+ls_a_bm latex-suite.txt /*ls_a_bm*
+ls_a_bn latex-suite.txt /*ls_a_bn*
+ls_a_bo latex-suite.txt /*ls_a_bo*
+ls_a_bp latex-suite.txt /*ls_a_bp*
+ls_a_bq latex-suite.txt /*ls_a_bq*
+ls_a_br latex-suite.txt /*ls_a_br*
+ls_a_bs latex-suite.txt /*ls_a_bs*
+ls_a_bt latex-suite.txt /*ls_a_bt*
+ls_a_bu latex-suite.txt /*ls_a_bu*
+ls_a_bv latex-suite.txt /*ls_a_bv*
+ls_a_bw latex-suite.txt /*ls_a_bw*
+ls_a_bx latex-suite.txt /*ls_a_bx*
+ls_a_by latex-suite.txt /*ls_a_by*
+ls_a_bz latex-suite.txt /*ls_a_bz*
+ls_a_cA latex-suite.txt /*ls_a_cA*
+ls_a_cB latex-suite.txt /*ls_a_cB*
+ls_a_cC latex-suite.txt /*ls_a_cC*
+ls_a_cD latex-suite.txt /*ls_a_cD*
+ls_a_cE latex-suite.txt /*ls_a_cE*
+ls_a_cF latex-suite.txt /*ls_a_cF*
+ls_a_cG latex-suite.txt /*ls_a_cG*
+ls_a_cH latex-suite.txt /*ls_a_cH*
+ls_a_cI latex-suite.txt /*ls_a_cI*
+ls_a_cJ latex-suite.txt /*ls_a_cJ*
+ls_a_cK latex-suite.txt /*ls_a_cK*
+ls_a_cL latex-suite.txt /*ls_a_cL*
+ls_a_cM latex-suite.txt /*ls_a_cM*
+ls_a_cN latex-suite.txt /*ls_a_cN*
+ls_a_cO latex-suite.txt /*ls_a_cO*
+ls_a_cP latex-suite.txt /*ls_a_cP*
+ls_a_cQ latex-suite.txt /*ls_a_cQ*
+ls_a_cR latex-suite.txt /*ls_a_cR*
+ls_a_cS latex-suite.txt /*ls_a_cS*
+ls_a_cT latex-suite.txt /*ls_a_cT*
+ls_a_cU latex-suite.txt /*ls_a_cU*
+ls_a_cV latex-suite.txt /*ls_a_cV*
+ls_a_cW latex-suite.txt /*ls_a_cW*
+ls_a_cX latex-suite.txt /*ls_a_cX*
+ls_a_cY latex-suite.txt /*ls_a_cY*
+ls_a_cZ latex-suite.txt /*ls_a_cZ*
+ls_a_ca latex-suite.txt /*ls_a_ca*
+ls_a_cb latex-suite.txt /*ls_a_cb*
+ls_a_cc latex-suite.txt /*ls_a_cc*
+ls_a_cd latex-suite.txt /*ls_a_cd*
+ls_a_ce latex-suite.txt /*ls_a_ce*
+ls_a_cf latex-suite.txt /*ls_a_cf*
+ls_a_cg latex-suite.txt /*ls_a_cg*
+ls_a_ch latex-suite.txt /*ls_a_ch*
+ls_a_ci latex-suite.txt /*ls_a_ci*
+ls_a_cj latex-suite.txt /*ls_a_cj*
+ls_a_ck latex-suite.txt /*ls_a_ck*
+ls_a_cl latex-suite.txt /*ls_a_cl*
+ls_a_cm latex-suite.txt /*ls_a_cm*
+ls_a_cn latex-suite.txt /*ls_a_cn*
+ls_a_co latex-suite.txt /*ls_a_co*
+ls_a_cp latex-suite.txt /*ls_a_cp*
+ls_a_cq latex-suite.txt /*ls_a_cq*
+ls_a_cr latex-suite.txt /*ls_a_cr*
+ls_a_cs latex-suite.txt /*ls_a_cs*
+ls_a_ct latex-suite.txt /*ls_a_ct*
+ls_a_cu latex-suite.txt /*ls_a_cu*
+ls_a_cv latex-suite.txt /*ls_a_cv*
+ls_a_cw latex-suite.txt /*ls_a_cw*
+ls_a_cx latex-suite.txt /*ls_a_cx*
+ls_a_cy latex-suite.txt /*ls_a_cy*
+ls_a_cz latex-suite.txt /*ls_a_cz*
+ls_a_dA latex-suite.txt /*ls_a_dA*
+ls_a_dB latex-suite.txt /*ls_a_dB*
+ls_a_dC latex-suite.txt /*ls_a_dC*
+ls_a_dD latex-suite.txt /*ls_a_dD*
+ls_a_dE latex-suite.txt /*ls_a_dE*
+ls_a_dF latex-suite.txt /*ls_a_dF*
+ls_a_dG latex-suite.txt /*ls_a_dG*
+ls_a_dH latex-suite.txt /*ls_a_dH*
+ls_a_dI latex-suite.txt /*ls_a_dI*
+ls_a_dJ latex-suite.txt /*ls_a_dJ*
+ls_a_dK latex-suite.txt /*ls_a_dK*
+ls_a_dL latex-suite.txt /*ls_a_dL*
+ls_a_dM latex-suite.txt /*ls_a_dM*
+ls_a_dN latex-suite.txt /*ls_a_dN*
+ls_a_dO latex-suite.txt /*ls_a_dO*
+ls_a_dP latex-suite.txt /*ls_a_dP*
+ls_a_dQ latex-suite.txt /*ls_a_dQ*
+ls_a_dR latex-suite.txt /*ls_a_dR*
+ls_a_dS latex-suite.txt /*ls_a_dS*
+ls_a_dT latex-suite.txt /*ls_a_dT*
+ls_a_dU latex-suite.txt /*ls_a_dU*
+ls_a_dV latex-suite.txt /*ls_a_dV*
+ls_a_dW latex-suite.txt /*ls_a_dW*
+ls_a_dX latex-suite.txt /*ls_a_dX*
+ls_a_dY latex-suite.txt /*ls_a_dY*
+ls_a_dZ latex-suite.txt /*ls_a_dZ*
+ls_a_da latex-suite.txt /*ls_a_da*
+ls_a_db latex-suite.txt /*ls_a_db*
+ls_a_dc latex-suite.txt /*ls_a_dc*
+ls_a_dd latex-suite.txt /*ls_a_dd*
+ls_a_de latex-suite.txt /*ls_a_de*
+ls_a_df latex-suite.txt /*ls_a_df*
+ls_a_dg latex-suite.txt /*ls_a_dg*
+ls_a_dh latex-suite.txt /*ls_a_dh*
+ls_a_di latex-suite.txt /*ls_a_di*
+ls_a_dj latex-suite.txt /*ls_a_dj*
+ls_a_dk latex-suite.txt /*ls_a_dk*
+ls_a_dl latex-suite.txt /*ls_a_dl*
+ls_a_dm latex-suite.txt /*ls_a_dm*
+ls_a_dn latex-suite.txt /*ls_a_dn*
+ls_a_do latex-suite.txt /*ls_a_do*
+ls_a_dp latex-suite.txt /*ls_a_dp*
+ls_a_dq latex-suite.txt /*ls_a_dq*
+ls_a_dr latex-suite.txt /*ls_a_dr*
+ls_a_ds latex-suite.txt /*ls_a_ds*
+ls_a_dt latex-suite.txt /*ls_a_dt*
+ls_a_du latex-suite.txt /*ls_a_du*
+ls_a_dv latex-suite.txt /*ls_a_dv*
+ls_a_dw latex-suite.txt /*ls_a_dw*
+ls_a_dx latex-suite.txt /*ls_a_dx*
+ls_a_dy latex-suite.txt /*ls_a_dy*
+ls_a_dz latex-suite.txt /*ls_a_dz*
+ls_a_eA latex-suite.txt /*ls_a_eA*
+ls_a_eB latex-suite.txt /*ls_a_eB*
+ls_a_eC latex-suite.txt /*ls_a_eC*
+ls_a_eD latex-suite.txt /*ls_a_eD*
+ls_a_eE latex-suite.txt /*ls_a_eE*
+ls_a_eF latex-suite.txt /*ls_a_eF*
+ls_a_eG latex-suite.txt /*ls_a_eG*
+ls_a_ea latex-suite.txt /*ls_a_ea*
+ls_a_eb latex-suite.txt /*ls_a_eb*
+ls_a_ec latex-suite.txt /*ls_a_ec*
+ls_a_ed latex-suite.txt /*ls_a_ed*
+ls_a_ee latex-suite.txt /*ls_a_ee*
+ls_a_ef latex-suite.txt /*ls_a_ef*
+ls_a_eg latex-suite.txt /*ls_a_eg*
+ls_a_eh latex-suite.txt /*ls_a_eh*
+ls_a_ei latex-suite.txt /*ls_a_ei*
+ls_a_ej latex-suite.txt /*ls_a_ej*
+ls_a_ek latex-suite.txt /*ls_a_ek*
+ls_a_el latex-suite.txt /*ls_a_el*
+ls_a_em latex-suite.txt /*ls_a_em*
+ls_a_en latex-suite.txt /*ls_a_en*
+ls_a_eo latex-suite.txt /*ls_a_eo*
+ls_a_ep latex-suite.txt /*ls_a_ep*
+ls_a_eq latex-suite.txt /*ls_a_eq*
+ls_a_er latex-suite.txt /*ls_a_er*
+ls_a_es latex-suite.txt /*ls_a_es*
+ls_a_et latex-suite.txt /*ls_a_et*
+ls_a_eu latex-suite.txt /*ls_a_eu*
+ls_a_ev latex-suite.txt /*ls_a_ev*
+ls_a_ew latex-suite.txt /*ls_a_ew*
+ls_a_ex latex-suite.txt /*ls_a_ex*
+ls_a_ey latex-suite.txt /*ls_a_ey*
+ls_a_ez latex-suite.txt /*ls_a_ez*
+ls_u_1 latex-suite.txt /*ls_u_1*
+ls_u_2 latex-suite.txt /*ls_u_2*
+ls_u_3 latex-suite.txt /*ls_u_3*
+ls_u_4 latex-suite.txt /*ls_u_4*
+lsq-compiling latex-suite-quickstart.txt /*lsq-compiling*
+lsq-conclusions latex-suite-quickstart.txt /*lsq-conclusions*
+lsq-debugging latex-suite-quickstart.txt /*lsq-debugging*
+lsq-folding latex-suite-quickstart.txt /*lsq-folding*
+lsq-insert-environment latex-suite-quickstart.txt /*lsq-insert-environment*
+lsq-inserting-reference latex-suite-quickstart.txt /*lsq-inserting-reference*
+lsq-inserting-template latex-suite-quickstart.txt /*lsq-inserting-template*
+lsq-keyboard-shortcuts latex-suite-quickstart.txt /*lsq-keyboard-shortcuts*
+lsq-lsq-inserting-package latex-suite-quickstart.txt /*lsq-lsq-inserting-package*
+lsq-quick-forward-searching latex-suite-quickstart.txt /*lsq-quick-forward-searching*
+lsq-quick-inverse-searching latex-suite-quickstart.txt /*lsq-quick-inverse-searching*
+lsq-using-tutorial latex-suite-quickstart.txt /*lsq-using-tutorial*
+lsq-viewing-dvi latex-suite-quickstart.txt /*lsq-viewing-dvi*
+macro-enabling latex-suite.txt /*macro-enabling*
+math, latexhelp.txt /*math,*
+math-misc latexhelp.txt /*math-misc*
+math-mode latexhelp.txt /*math-mode*
+math-spacing latexhelp.txt /*math-spacing*
+math-symbols latexhelp.txt /*math-symbols*
+math: latexhelp.txt /*math:*
+math; latexhelp.txt /*math;*
+matn! latexhelp.txt /*matn!*
+minipage latexhelp.txt /*minipage*
+notitlepage latexhelp.txt /*notitlepage*
+onecolumn latexhelp.txt /*onecolumn*
+oneside latexhelp.txt /*oneside*
+openany latexhelp.txt /*openany*
+openbib latexhelp.txt /*openbib*
+openright latexhelp.txt /*openright*
+otl2html vo_readme.txt.gz /*otl2html*
+overriding-macros latex-suite.txt /*overriding-macros*
+package-actions latex-suite.txt /*package-actions*
+paragraph-mode latexhelp.txt /*paragraph-mode*
+part-compiling latex-suite.txt /*part-compiling*
+pausing-imaps latex-suite.txt /*pausing-imaps*
+picture latexhelp.txt /*picture*
+picture-makebox latexhelp.txt /*picture-makebox*
+place-holder latex-suite.txt /*place-holder*
+place-holders latex-suite.txt /*place-holders*
+plain latexhelp.txt /*plain*
+pre-lengths latexhelp.txt /*pre-lengths*
+ps_color.txt ps_color.txt /*ps_color.txt*
+ps_colour ps_color.txt /*ps_colour*
+psc ps_color.txt /*psc*
+psc-about-background ps_color.txt /*psc-about-background*
+psc-change-background ps_color.txt /*psc-change-background*
+psc-contents ps_color.txt /*psc-contents*
+psc-cterm ps_color.txt /*psc-cterm*
+psc-cterm-color-table ps_color.txt /*psc-cterm-color-table*
+psc-cterm-incompatible ps_color.txt /*psc-cterm-incompatible*
+psc-cterm-nt ps_color.txt /*psc-cterm-nt*
+psc-cterm-others ps_color.txt /*psc-cterm-others*
+psc-cterm-xterm ps_color.txt /*psc-cterm-xterm*
+psc-faq ps_color.txt /*psc-faq*
+psc-faq-ffothers ps_color.txt /*psc-faq-ffothers*
+psc-features ps_color.txt /*psc-features*
+psc-options ps_color.txt /*psc-options*
+psc-overview ps_color.txt /*psc-overview*
+psc-release-notes ps_color.txt /*psc-release-notes*
+psc-tips ps_color.txt /*psc-tips*
+psc-todo ps_color.txt /*psc-todo*
+psc-usage ps_color.txt /*psc-usage*
+psc_cterm_style ps_color.txt /*psc_cterm_style*
+psc_fontface ps_color.txt /*psc_fontface*
+psc_inversed_todo ps_color.txt /*psc_inversed_todo*
+psc_statement_different_from_type ps_color.txt /*psc_statement_different_from_type*
+psc_style ps_color.txt /*psc_style*
+psc_use_default_for_cterm ps_color.txt /*psc_use_default_for_cterm*
+pscolor ps_color.txt /*pscolor*
+quotation latexhelp.txt /*quotation*
+quote-l latexhelp.txt /*quote-l*
+recommended-settings latex-suite.txt /*recommended-settings*
+remapping-latex-suite-keys latex-suite.txt /*remapping-latex-suite-keys*
+report-class latexhelp.txt /*report-class*
+roman latexhelp.txt /*roman*
+rqno latexhelp.txt /*rqno*
+section-mappings latex-suite.txt /*section-mappings*
+slides-class latexhelp.txt /*slides-class*
+smart-backspace latex-suite.txt /*smart-backspace*
+smart-keys latex-suite.txt /*smart-keys*
+sub-sup latexhelp.txt /*sub-sup*
+subscripts latexhelp.txt /*subscripts*
+superscripts latexhelp.txt /*superscripts*
+supporting-packages latex-suite.txt /*supporting-packages*
+tab' latexhelp.txt /*tab'*
+tab+ latexhelp.txt /*tab+*
+tab- latexhelp.txt /*tab-*
+tab< latexhelp.txt /*tab<*
+tab= latexhelp.txt /*tab=*
+tab> latexhelp.txt /*tab>*
+tab` latexhelp.txt /*tab`*
+taba latexhelp.txt /*taba*
+tabbing latexhelp.txt /*tabbing*
+tabular latexhelp.txt /*tabular*
+taglist-commands taglist.txt /*taglist-commands*
+taglist-debug taglist.txt /*taglist-debug*
+taglist-extend taglist.txt /*taglist-extend*
+taglist-faq taglist.txt /*taglist-faq*
+taglist-functions taglist.txt /*taglist-functions*
+taglist-install taglist.txt /*taglist-install*
+taglist-internet taglist.txt /*taglist-internet*
+taglist-intro taglist.txt /*taglist-intro*
+taglist-keys taglist.txt /*taglist-keys*
+taglist-license taglist.txt /*taglist-license*
+taglist-menu taglist.txt /*taglist-menu*
+taglist-options taglist.txt /*taglist-options*
+taglist-requirements taglist.txt /*taglist-requirements*
+taglist-session taglist.txt /*taglist-session*
+taglist-todo taglist.txt /*taglist-todo*
+taglist-using taglist.txt /*taglist-using*
+taglist.txt taglist.txt /*taglist.txt*
+theorem latexhelp.txt /*theorem*
+titlepage latexhelp.txt /*titlepage*
+twocolumn latexhelp.txt /*twocolumn*
+twoside latexhelp.txt /*twoside*
+verbatim latexhelp.txt /*verbatim*
+verse latexhelp.txt /*verse*
+vimoutliner vo_readme.txt.gz /*vimoutliner*
+vo vo_readme.txt.gz /*vo*
+vo-activities vo_readme.txt.gz /*vo-activities*
+vo-advanced vo_readme.txt.gz /*vo-advanced*
+vo-cautions vo_readme.txt.gz /*vo-cautions*
+vo-checkbox vo_readme.txt.gz /*vo-checkbox*
+vo-color vo_readme.txt.gz /*vo-color*
+vo-command vo_readme.txt.gz /*vo-command*
+vo-debian vo_readme.txt.gz /*vo-debian*
+vo-executable-lines vo_readme.txt.gz /*vo-executable-lines*
+vo-hoisting vo_readme.txt.gz /*vo-hoisting*
+vo-install vo_readme.txt.gz /*vo-install*
+vo-license vo_readme.txt.gz /*vo-license*
+vo-maketags vo_readme.txt.gz /*vo-maketags*
+vo-menu vo_readme.txt.gz /*vo-menu*
+vo-objects vo_readme.txt.gz /*vo-objects*
+vo-other-files vo_readme.txt.gz /*vo-other-files*
+vo-other-info vo_readme.txt.gz /*vo-other-info*
+vo-philosophy vo_readme.txt.gz /*vo-philosophy*
+vo-plugins vo_readme.txt.gz /*vo-plugins*
+vo-post-processors vo_readme.txt.gz /*vo-post-processors*
+vo-running vo_readme.txt.gz /*vo-running*
+vo-scripts vo_readme.txt.gz /*vo-scripts*
+vo-testing vo_readme.txt.gz /*vo-testing*
+vo-troubleshooting vo_readme.txt.gz /*vo-troubleshooting*
+vo-version vo_readme.txt.gz /*vo-version*
+vo_readme.txt vo_readme.txt.gz /*vo_readme.txt*
+why-IMAP latex-suite.txt /*why-IMAP*
diff --git a/.vim/filetype.vim b/.vim/filetype.vim
new file mode 100644
index 0000000..e5a223d
--- /dev/null
+++ b/.vim/filetype.vim
@@ -0,0 +1,4 @@
+" RELAX NG Compact Syntax
+augroup filetypedetect
+ au! BufRead,BufNewFile *.rnc setfiletype rnc
+augroup END
diff --git a/.vim/ftplugin/bib_latexSuite.vim b/.vim/ftplugin/bib_latexSuite.vim
new file mode 100644
index 0000000..6b803af
--- /dev/null
+++ b/.vim/ftplugin/bib_latexSuite.vim
@@ -0,0 +1,16 @@
+" File: bib_latexSuite.vim
+" Author: Srinath Avadhanula
+" License: Vim Charityware License
+" Description:
+" This file sources the bibtex.vim file distributed as part of latex-suite.
+" That file sets up 3 maps BBB, BAS, and BBA which are easy wasy to type in
+" bibliographic entries.
+"
+" CVS: $Id: bib_latexSuite.vim 997 2006-03-20 09:45:45Z srinathava $
+
+" source main.vim because we need a few functions from it.
+runtime ftplugin/latex-suite/main.vim
+" Disable smart-quotes because we need to enter real quotes in bib files.
+runtime ftplugin/latex-suite/bibtex.vim
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/.vim/ftplugin/c.vim b/.vim/ftplugin/c.vim
new file mode 100644
index 0000000..ff5a637
--- /dev/null
+++ b/.vim/ftplugin/c.vim
@@ -0,0 +1,294 @@
+" Vim filetype plugin file
+"
+" Language : C / C++
+" Plugin : c.vim (version 5.0)
+" Maintainer : Fritz Mehner <mehner@fh-swf.de>
+" Revision : $Id: c.vim,v 1.18 2007/11/20 18:12:02 mehner Exp $
+"
+" This will enable keyword completion for C and C++
+" using Vim's dictionary feature |i_CTRL-X_CTRL-K|.
+" -----------------------------------------------------------------
+"
+" Only do this when not done yet for this buffer
+"
+if exists("b:did_C_ftplugin")
+ finish
+endif
+let b:did_C_ftplugin = 1
+"
+" ---------- C/C++ dictionary -----------------------------------
+"
+if exists("g:C_Dictionary_File")
+ silent! exec 'setlocal dictionary+='.g:C_Dictionary_File
+endif
+"
+" ---------- F-key mappings ------------------------------------
+"
+" Alt-F9 write buffer and compile
+" F9 compile and link
+" Ctrl-F9 run executable
+" Shift-F9 command line arguments
+"
+ map <buffer> <silent> <A-F9> <C-C>:call C_Compile()<CR>:redraw<CR>:call C_HlMessage()<CR>
+imap <buffer> <silent> <A-F9> <C-C><C-C>:call C_Compile()<CR>:redraw<CR>:call C_HlMessage()<CR>
+"
+ map <buffer> <silent> <F9> <C-C>:call C_Link()<CR>:redraw<CR>:call C_HlMessage()<CR>
+imap <buffer> <silent> <F9> <C-C><C-C>:call C_Link()<CR>:redraw<CR>:call C_HlMessage()<CR>
+"
+" <C-C> seems to be essential here:
+ map <buffer> <silent> <C-F9> <C-C>:call C_Run()<CR>
+imap <buffer> <silent> <C-F9> <C-C><C-C>:call C_Run()<CR>
+"
+ map <buffer> <silent> <S-F9> <C-C>:call C_Arguments()<CR>
+imap <buffer> <silent> <S-F9> <C-C><C-C>:call C_Arguments()<CR>
+"
+" alternate file plugin
+"
+"if exists("loaded_alternateFile")
+" map <buffer> <silent> <S-F2> <C-C>:A<CR>
+"imap <buffer> <silent> <S-F2> <C-C><C-C>:A<CR>
+"endif
+"
+"
+" ---------- KEY MAPPINGS : MENU ENTRIES -------------------------------------
+"
+" ---------- comments menu ------------------------------------------------
+"
+
+ noremap <buffer> <silent> <Leader>cl <Esc>:call C_LineEndComment()<CR>
+inoremap <buffer> <silent> <Leader>cl <Esc>:call C_LineEndComment()<CR>a
+vnoremap <buffer> <silent> <Leader>cl <Esc>:call C_MultiLineEndComments()<CR>
+ noremap <buffer> <silent> <Leader>cj <Esc>:call C_AdjustLineEndComm("a")<CR>
+vnoremap <buffer> <silent> <Leader>cj <Esc>:call C_AdjustLineEndComm("v")<CR>
+inoremap <buffer> <silent> <Leader>cj <Esc>:call C_AdjustLineEndComm("a")<CR>a
+ noremap <buffer> <silent> <Leader>cs <Esc>:call C_GetLineEndCommCol()<CR>
+ noremap <buffer> <silent> <Leader>c* <Esc>:call C_CodeComment("a","yes")<CR><Esc>:nohlsearch<CR>j
+vnoremap <buffer> <silent> <Leader>c* <Esc>:call C_CodeComment("v","yes")<CR><Esc>:nohlsearch<CR>j
+ noremap <buffer> <silent> <Leader>c/ <Esc>:call C_CodeComment("a","no")<CR><Esc>:nohlsearch<CR>j
+vnoremap <buffer> <silent> <Leader>c/ <Esc>:call C_CodeComment("v","no")<CR><Esc>:nohlsearch<CR>j
+ noremap <buffer> <silent> <Leader>co <Esc>:call C_CommentCode("a")<CR><Esc>:nohlsearch<CR>
+vnoremap <buffer> <silent> <Leader>co <Esc>:call C_CommentCode("v")<CR><Esc>:nohlsearch<CR>
+
+ noremap <buffer> <silent> <Leader>cfr <Esc>:call C_InsertTemplate("comment.frame")<CR>
+ noremap <buffer> <silent> <Leader>cfu <Esc>:call C_InsertTemplate("comment.function")<CR>
+ noremap <buffer> <silent> <Leader>cme <Esc>:call C_InsertTemplate("comment.method")<CR>
+ noremap <buffer> <silent> <Leader>ccl <Esc>:call C_InsertTemplate("comment.class")<CR>
+
+inoremap <buffer> <silent> <Leader>cfr <Esc>:call C_InsertTemplate("comment.frame")<CR>
+inoremap <buffer> <silent> <Leader>cfu <Esc>:call C_InsertTemplate("comment.function")<CR>
+inoremap <buffer> <silent> <Leader>cme <Esc>:call C_InsertTemplate("comment.method")<CR>
+inoremap <buffer> <silent> <Leader>ccl <Esc>:call C_InsertTemplate("comment.class")<CR>
+
+ noremap <buffer> <silent> <Leader>cd a<C-R>=C_InsertDateAndTime('d')<CR>
+inoremap <buffer> <silent> <Leader>cd <C-R>=C_InsertDateAndTime('d')<CR>
+ noremap <buffer> <silent> <Leader>ct a<C-R>=C_InsertDateAndTime('dt')<CR>
+inoremap <buffer> <silent> <Leader>ct <C-R>=C_InsertDateAndTime('dt')<CR>
+"
+" ---------- statements menu ------------------------------------------------
+"
+ noremap <buffer> <silent> <Leader>sd <Esc>:call C_InsertTemplate("statements.do-while")<CR>
+vnoremap <buffer> <silent> <Leader>sd <Esc>:call C_InsertTemplate("statements.do-while", "v")<CR>
+inoremap <buffer> <silent> <Leader>sd <Esc>:call C_InsertTemplate("statements.do-while")<CR>
+
+ noremap <buffer> <silent> <Leader>sf <Esc>:call C_InsertTemplate("statements.for")<CR>
+inoremap <buffer> <silent> <Leader>sf <Esc>:call C_InsertTemplate("statements.for")<CR>
+
+ noremap <buffer> <silent> <Leader>sfo <Esc>:call C_InsertTemplate("statements.for-block")<CR>
+vnoremap <buffer> <silent> <Leader>sfo <Esc>:call C_InsertTemplate("statements.for-block", "v")<CR>
+inoremap <buffer> <silent> <Leader>sfo <Esc>:call C_InsertTemplate("statements.for-block")<CR>
+
+ noremap <buffer> <silent> <Leader>si <Esc>:call C_InsertTemplate("statements.if")<CR>
+inoremap <buffer> <silent> <Leader>si <Esc>:call C_InsertTemplate("statements.if")<CR>
+
+ noremap <buffer> <silent> <Leader>sif <Esc>:call C_InsertTemplate("statements.if-block")<CR>
+vnoremap <buffer> <silent> <Leader>sif <Esc>:call C_InsertTemplate("statements.if-block", "v")<CR>
+inoremap <buffer> <silent> <Leader>sif <Esc>:call C_InsertTemplate("statements.if-block")<CR>
+
+ noremap <buffer> <silent> <Leader>sie <Esc>:call C_InsertTemplate("statements.if-else")<CR>
+vnoremap <buffer> <silent> <Leader>sie <Esc>:call C_InsertTemplate("statements.if-else", "v")<CR>
+inoremap <buffer> <silent> <Leader>sie <Esc>:call C_InsertTemplate("statements.if-else")<CR>
+
+ noremap <buffer> <silent> <Leader>sife <Esc>:call C_InsertTemplate("statements.if-block-else")<CR>
+vnoremap <buffer> <silent> <Leader>sife <Esc>:call C_InsertTemplate("statements.if-block-else", "v")<CR>
+inoremap <buffer> <silent> <Leader>sife <Esc>:call C_InsertTemplate("statements.if-block-else")<CR>
+
+ noremap <buffer> <silent> <Leader>sw <Esc>:call C_InsertTemplate("statements.while")<CR>
+inoremap <buffer> <silent> <Leader>sw <Esc>:call C_InsertTemplate("statements.while")<CR>
+
+ noremap <buffer> <silent> <Leader>swh <Esc>:call C_InsertTemplate("statements.while-block")<CR>
+vnoremap <buffer> <silent> <Leader>swh <Esc>:call C_InsertTemplate("statements.while-block", "v")<CR>
+inoremap <buffer> <silent> <Leader>swh <Esc>:call C_InsertTemplate("statements.while-block")<CR>
+
+ noremap <buffer> <silent> <Leader>ss <Esc>:call C_InsertTemplate("statements.switch")<CR>
+vnoremap <buffer> <silent> <Leader>ss <Esc>:call C_InsertTemplate("statements.switch", "v")<CR>
+inoremap <buffer> <silent> <Leader>ss <Esc>:call C_InsertTemplate("statements.switch")<CR>
+
+ noremap <buffer> <silent> <Leader>sc <Esc>:call C_InsertTemplate("statements.case")<CR>
+inoremap <buffer> <silent> <Leader>sc <Esc>:call C_InsertTemplate("statements.case")<CR>
+
+ noremap <buffer> <silent> <Leader>s{ <Esc>:call C_InsertTemplate("statements.block")<CR>
+vnoremap <buffer> <silent> <Leader>s{ <Esc>:call C_InsertTemplate("statements.block", "v")<CR>
+inoremap <buffer> <silent> <Leader>s{ <Esc>:call C_InsertTemplate("statements.block")<CR>
+"
+" ---------- preprocessor menu ----------------------------------------------
+"
+inoremap <buffer> <silent> <Leader>p< <Esc><Esc>o#include<Tab><><Left>
+inoremap <buffer> <silent> <Leader>p" <Esc><Esc>o#include<Tab>""<Left>
+inoremap <buffer> <silent> <Leader>pd <Esc><Esc>:call C_InsertTemplate("preprocessor.define")<CR>
+inoremap <buffer> <silent> <Leader>pu <Esc><Esc>:call C_InsertTemplate("preprocessor.undefine")<CR>
+"
+ noremap <buffer> <silent> <Leader>p< <Esc><Esc>o#include<Tab><><Left>
+ noremap <buffer> <silent> <Leader>p" <Esc><Esc>o#include<Tab>""<Left>
+ noremap <buffer> <silent> <Leader>pd <Esc><Esc>:call C_InsertTemplate("preprocessor.define")<CR>
+ noremap <buffer> <silent> <Leader>pu <Esc><Esc>:call C_InsertTemplate("preprocessor.undefine")<CR>
+
+ noremap <buffer> <silent> <Leader>pie <Esc><Esc>:call C_InsertTemplate("preprocessor.if-else-endif")<CR>
+ noremap <buffer> <silent> <Leader>pid <Esc><Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR>
+ noremap <buffer> <silent> <Leader>pin <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR>
+ noremap <buffer> <silent> <Leader>pind <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR>
+ noremap <buffer> <silent> <Leader>pi0 <Esc><Esc>:call C_PPIf0("a")<CR>2ji
+
+vnoremap <buffer> <silent> <Leader>pie <Esc><Esc>:call C_InsertTemplate("preprocessor.if-else-endif", "v")<CR>
+vnoremap <buffer> <silent> <Leader>pid <Esc><Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif", "v")<CR>
+vnoremap <buffer> <silent> <Leader>pin <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif", "v")<CR>
+vnoremap <buffer> <silent> <Leader>pind <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif", "v")<CR>
+vnoremap <buffer> <silent> <Leader>pi0 <Esc><Esc>:call C_PPIf0("v")<CR>
+
+inoremap <buffer> <silent> <Leader>pie <Esc><Esc>:call C_InsertTemplate("preprocessor.if-else-endif")<CR>
+inoremap <buffer> <silent> <Leader>pid <Esc><Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR>
+inoremap <buffer> <silent> <Leader>pin <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR>
+inoremap <buffer> <silent> <Leader>pind <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR>
+inoremap <buffer> <silent> <Leader>pi0 <Esc><Esc>:call C_PPIf0("a")<CR>2ji
+
+ noremap <buffer> <silent> <Leader>pr0 <Esc><Esc>:call C_PPIf0Remove()<CR>
+"
+" ---------- idioms menu ----------------------------------------------------
+"
+ noremap <buffer> <silent> <Leader>if <Esc>:call C_InsertTemplate("idioms.function")<CR>
+vnoremap <buffer> <silent> <Leader>if <Esc>:call C_InsertTemplate("idioms.function", "v")<CR>
+inoremap <buffer> <silent> <Leader>if <Esc>:call C_InsertTemplate("idioms.function")<CR>
+ noremap <buffer> <silent> <Leader>isf <Esc>:call C_InsertTemplate("idioms.function-static")<CR>
+vnoremap <buffer> <silent> <Leader>isf <Esc>:call C_InsertTemplate("idioms.function-static", "v")<CR>
+inoremap <buffer> <silent> <Leader>isf <Esc>:call C_InsertTemplate("idioms.function-static")<CR>
+ noremap <buffer> <silent> <Leader>im <Esc>:call C_InsertTemplate("idioms.main")<CR>
+vnoremap <buffer> <silent> <Leader>im <Esc>:call C_InsertTemplate("idioms.main", "v")<CR>
+inoremap <buffer> <silent> <Leader>im <Esc>:call C_InsertTemplate("idioms.main")<CR>
+"
+ noremap <buffer> <silent> <Leader>i0 <Esc>:call C_CodeFor("up" , "a")<CR>a
+vnoremap <buffer> <silent> <Leader>i0 <Esc>:call C_CodeFor("up" , "v")<CR>
+inoremap <buffer> <silent> <Leader>i0 <Esc>:call C_CodeFor("up" , "a")<CR>a
+ noremap <buffer> <silent> <Leader>in <Esc>:call C_CodeFor("down", "a")<CR>a
+vnoremap <buffer> <silent> <Leader>in <Esc>:call C_CodeFor("down", "v")<CR>
+inoremap <buffer> <silent> <Leader>in <Esc>:call C_CodeFor("down", "a")<CR>a
+"
+ noremap <buffer> <silent> <Leader>ie <Esc>:call C_InsertTemplate("idioms.enum")<CR>
+vnoremap <buffer> <silent> <Leader>ie <Esc>:call C_InsertTemplate("idioms.enum" , "v")<CR>
+inoremap <buffer> <silent> <Leader>ie <Esc>:call C_InsertTemplate("idioms.enum")<CR>
+ noremap <buffer> <silent> <Leader>is <Esc>:call C_InsertTemplate("idioms.struct")<CR>
+vnoremap <buffer> <silent> <Leader>is <Esc>:call C_InsertTemplate("idioms.struct", "v")<CR>
+inoremap <buffer> <silent> <Leader>is <Esc>:call C_InsertTemplate("idioms.struct")<CR>
+ noremap <buffer> <silent> <Leader>iu <Esc>:call C_InsertTemplate("idioms.union")<CR>
+vnoremap <buffer> <silent> <Leader>iu <Esc>:call C_InsertTemplate("idioms.union" , "v")<CR>
+inoremap <buffer> <silent> <Leader>iu <Esc>:call C_InsertTemplate("idioms.union")<CR>
+"
+ noremap <buffer> <silent> <Leader>ip <Esc><Esc>oprintf("\n");<Esc>2F"a
+inoremap <buffer> <silent> <Leader>ip printf("\n");<Esc>2F"a
+ noremap <buffer> <silent> <Leader>isc <Esc><Esc>oscanf("", & );<Esc>F"i
+inoremap <buffer> <silent> <Leader>isc scanf("", & );<Esc>F"i
+"
+ noremap <buffer> <silent> <Leader>ica <Esc>:call C_InsertTemplate("idioms.calloc")
+inoremap <buffer> <silent> <Leader>ica <Esc>:call C_InsertTemplate("idioms.calloc")
+ noremap <buffer> <silent> <Leader>ima <Esc>:call C_InsertTemplate("idioms.malloc")<CR>
+inoremap <buffer> <silent> <Leader>ima <Esc>:call C_InsertTemplate("idioms.malloc")<CR>
+"
+ noremap <buffer> <silent> <Leader>isi isizeof()<Left>
+vnoremap <buffer> <silent> <Leader>isi ssizeof()<Esc>P
+inoremap <buffer> <silent> <Leader>isi sizeof()<Left>
+ noremap <buffer> <silent> <Leader>ias <Esc><Esc>oassert();<Left><Left>
+vnoremap <buffer> <silent> <Leader>ias sassert();<Esc>F(p
+inoremap <buffer> <silent> <Leader>ias assert();<Left><Left>
+"
+ noremap <buffer> <silent> <Leader>ii <Esc>:call C_InsertTemplate("idioms.open-input-file")<CR>
+inoremap <buffer> <silent> <Leader>ii <Esc>:call C_InsertTemplate("idioms.open-input-file")<CR>
+ noremap <buffer> <silent> <Leader>io <Esc>:call C_InsertTemplate("idioms.open-output-file")<CR>
+inoremap <buffer> <silent> <Leader>io <Esc>:call C_InsertTemplate("idioms.open-output-file")<CR>
+"
+" ---------- snippet menu ----------------------------------------------------
+"
+ noremap <buffer> <silent> <Leader>nr <Esc>:call C_CodeSnippet("r")<CR>
+ noremap <buffer> <silent> <Leader>nw <Esc>:call C_CodeSnippet("w")<CR>
+vnoremap <buffer> <silent> <Leader>nw <Esc>:call C_CodeSnippet("wv")<CR>
+ noremap <buffer> <silent> <Leader>ne <Esc>:call C_CodeSnippet("e")<CR>
+"
+ noremap <buffer> <silent> <Leader>np <Esc>:call C_ProtoPick("n")<CR>
+vnoremap <buffer> <silent> <Leader>np <Esc>:call C_ProtoPick("v")<CR>
+ noremap <buffer> <silent> <Leader>ni <Esc>:call C_ProtoInsert()<CR>
+ noremap <buffer> <silent> <Leader>nc <Esc>:call C_ProtoClear()<CR>
+ noremap <buffer> <silent> <Leader>ns <Esc>:call C_ProtoShow()<CR>
+"
+" ---------- C++ menu ----------------------------------------------------
+"
+ noremap <buffer> <silent> <Leader>+m <Esc>:call C_InsertTemplate("cpp.method-implementation")<CR>
+inoremap <buffer> <silent> <Leader>+m <Esc>:call C_InsertTemplate("cpp.method-implementation")<CR>
+ noremap <buffer> <silent> <Leader>+c <Esc>:call C_InsertTemplate("cpp.class")<CR>
+inoremap <buffer> <silent> <Leader>+c <Esc>:call C_InsertTemplate("cpp.class")<CR>
+ noremap <buffer> <silent> <Leader>+cn <Esc>:call C_InsertTemplate("cpp.class-using-new")<CR>
+inoremap <buffer> <silent> <Leader>+cn <Esc>:call C_InsertTemplate("cpp.class-using-new")<CR>
+
+ noremap <buffer> <silent> <Leader>+tm <Esc>:call C_InsertTemplate("cpp.template-method-implementation")<CR>
+inoremap <buffer> <silent> <Leader>+tm <Esc>:call C_InsertTemplate("cpp.template-method-implementation")<CR>
+ noremap <buffer> <silent> <Leader>+tc <Esc>:call C_InsertTemplate("cpp.template-class")<CR>
+inoremap <buffer> <silent> <Leader>+tc <Esc>:call C_InsertTemplate("cpp.template-class")<CR>
+ noremap <buffer> <silent> <Leader>+tcn <Esc>:call C_InsertTemplate("cpp.template-class-using-new")<CR>
+inoremap <buffer> <silent> <Leader>+tcn <Esc>:call C_InsertTemplate("cpp.template-class-using-new")<CR>
+
+ noremap <buffer> <silent> <Leader>+tf <Esc>:call C_InsertTemplate("cpp.template-function")<CR>
+inoremap <buffer> <silent> <Leader>+tf <Esc>:call C_InsertTemplate("cpp.template-function")<CR>
+
+ noremap <buffer> <silent> <Leader>+ec <Esc>:call C_InsertTemplate("cpp.error-class")<CR>
+inoremap <buffer> <silent> <Leader>+ec <Esc>:call C_InsertTemplate("cpp.error-class")<CR>
+
+ noremap <buffer> <silent> <Leader>+tr <Esc>:call C_InsertTemplate("cpp.try-catch")<CR>
+vnoremap <buffer> <silent> <Leader>+tr <Esc>:call C_InsertTemplate("cpp.try-catch", "v")<CR>
+inoremap <buffer> <silent> <Leader>+tr <Esc>:call C_InsertTemplate("cpp.try-catch")<CR>
+
+ noremap <buffer> <silent> <Leader>+ca <Esc>:call C_InsertTemplate("cpp.catch")<CR>
+vnoremap <buffer> <silent> <Leader>+ca <Esc>:call C_InsertTemplate("cpp.catch", "v")<CR>
+inoremap <buffer> <silent> <Leader>+ca <Esc>:call C_InsertTemplate("cpp.catch")<CR>
+
+ noremap <buffer> <silent> <Leader>+c. <Esc>:call C_InsertTemplate("cpp.catch-points")<CR>
+vnoremap <buffer> <silent> <Leader>+c. <Esc>:call C_InsertTemplate("cpp.catch-points", "v")<CR>
+inoremap <buffer> <silent> <Leader>+c. <Esc>:call C_InsertTemplate("cpp.catch-points")<CR>
+"
+"
+" ---------- run menu --------------------------------------------------------
+"
+ map <buffer> <silent> <Leader>rc <C-C>:call C_Compile()<CR>:redraw<CR>:call C_HlMessage()<CR>
+ map <buffer> <silent> <Leader>rl <C-C>:call C_Link()<CR>:redraw<CR>:call C_HlMessage()<CR>
+ map <buffer> <silent> <Leader>rr <C-C>:call C_Run()<CR>
+ map <buffer> <silent> <Leader>ra <C-C>:call C_Arguments()<CR>
+ map <buffer> <silent> <Leader>rm <C-C>:call C_Make()<CR>
+ map <buffer> <silent> <Leader>rg <C-C>:call C_MakeArguments()<CR>
+ map <buffer> <silent> <Leader>rp <C-C>:call C_SplintCheck()<CR>:redraw<CR>:call C_HlMessage()<CR>
+ map <buffer> <silent> <Leader>ri <C-C>:call C_SplintArguments()<CR>
+ map <buffer> <silent> <Leader>rd <C-C>:call C_Indent("a")<CR>:redraw<CR>:call C_HlMessage()<CR>
+vmap <buffer> <silent> <Leader>rd <C-C>:call C_Indent("v")<CR>:redraw<CR>:call C_HlMessage()<CR>
+ map <buffer> <silent> <Leader>rh <C-C>:call C_Hardcopy("n")<CR>
+vmap <buffer> <silent> <Leader>rh <C-C>:call C_Hardcopy("v")<CR>
+ map <buffer> <silent> <Leader>rs <C-C>:call C_Settings()<CR>
+ map <buffer> <silent> <Leader>rt <C-C>:call C_RebuildTemplates()<CR>
+ if has("unix")
+ map <buffer> <silent> <Leader>rx <C-C>:call C_XtermSize()<CR>
+ endif
+ map <buffer> <silent> <Leader>ro <C-C>:call C_Toggle_Gvim_Xterm()<CR>
+"
+" Abraxas CodeCheck (R)
+"
+if executable("check")
+ map <buffer> <silent> <Leader>rk <C-C>:call C_CodeCheck()<CR>:redraw<CR>:call C_HlMessage()<CR>
+ map <buffer> <silent> <Leader>re <C-C>:call C_CodeCheckArguments()<CR>
+endif
+" ---------- plugin help -----------------------------------------------------
+"
+ map <buffer> <silent> <Leader>h <Esc>:call C_HelpCsupport()<CR>
+"
diff --git a/.vim/ftplugin/cpp.vim b/.vim/ftplugin/cpp.vim
new file mode 100644
index 0000000..79b3445
--- /dev/null
+++ b/.vim/ftplugin/cpp.vim
@@ -0,0 +1,164 @@
+" Line numbering
+set number
+" Set syntax highlighting
+syntax on
+" Tabbing
+set et
+set shiftwidth=4
+set smarttab
+set autoindent
+" Complete Brackets {
+"
+" }"
+" Complete quotes"
+inoremap " ""<Left>
+" We want a mouse in consoles, so:"
+set mouse=a
+"
+"===============================================================================
+"========== load example vimrc from the distribution =========================
+"===============================================================================
+"
+runtime vimrc_example.vim
+"
+filetype plugin on
+"
+"===============================================================================
+"========== CUSTOMIZATION (vimrc) ============================================
+"===============================================================================
+"
+" Platform specific items:
+" - central backup directory (has to be created)
+" - default dictionary
+" Uncomment your choice.
+if has("win16") || has("win32") || has("win64") ||
+ \ has("win95") || has("win32unix")
+ "
+" runtime mswin.vim
+" set backupdir =$VIM\vimfiles\backupdir
+" set dictionary=$VIM\vimfiles\wordlists/german.list
+else
+" set backupdir =$HOME/.vim.backupdir
+" set dictionary=$HOME/.vim/wordlists/german.list
+endif
+"
+" Using a backupdir under UNIX/Linux: you may want to include a line similar to
+" find $HOME/.vim.backupdir -name "*" -type f -mtime +60 -exec rm -f {} \;
+" in one of your shell startup files (e.g. $HOME/.profile)
+"
+"-------------------------------------------------------------------------------
+" Use of dictionaries
+"-------------------------------------------------------------------------------
+"
+set complete+=k " scan the files given with the 'dictionary' option
+"
+"-------------------------------------------------------------------------------
+" Various settings
+"-------------------------------------------------------------------------------
+"
+set autoread " read open files again when changed outside Vim
+set autowrite " write a modified buffer on each :next , ...
+set browsedir =current " which directory to use for the file browser
+set incsearch " use incremental search
+"set nowrap " do not wrap lines
+set shiftwidth =4 " number of spaces to use for each step of indent
+set tabstop =4 " number of spaces that a <Tab> in the file counts for
+set visualbell " visual bell instead of beeping
+"
+"
+"-------------------------------------------------------------------------------
+" some additional hot keys
+"-------------------------------------------------------------------------------
+" F2 - write file without confirmation
+" F3 - call file explorer Ex
+" F4 - show tag under curser in the preview window (tagfile must exist!)
+" F5 - open quickfix error window
+" F6 - close quickfix error window
+" F7 - display previous error
+" F8 - display next error
+" S-Tab - Fast switching between buffers (see below)
+" C-q - Leave the editor with Ctrl-q (see below)
+"-------------------------------------------------------------------------------
+"
+map <silent> <F2> :write<CR>
+map <silent> <F3> :Explore<CR>
+nmap <silent> <F4> :exe ":ptag ".expand("<cword>")<CR>
+map <silent> <F5> :copen<CR>
+map <silent> <F6> :cclose<CR>
+map <silent> <F7> :cp<CR>
+map <silent> <F8> :cn<CR>
+"
+imap <silent> <F2> <Esc>:write<CR>
+imap <silent> <F3> <Esc>:Explore<CR>
+imap <silent> <F4> <Esc>:exe ":ptag ".expand("<cword>")<CR>
+imap <silent> <F5> <Esc>:copen<CR>
+imap <silent> <F6> <Esc>:cclose<CR>
+imap <silent> <F7> <Esc>:cp<CR>
+imap <silent> <F8> <Esc>:cn<CR>
+"
+"-------------------------------------------------------------------------------
+" Fast switching between buffers
+" The current buffer will be saved before switching to the next one.
+" Choose :bprevious or :bnext
+"-------------------------------------------------------------------------------
+"
+ map <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+imap <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+"
+"-------------------------------------------------------------------------------
+" Leave the editor with Ctrl-q : Write all changed buffers and exit Vim
+"-------------------------------------------------------------------------------
+nmap <C-q> :wqa<CR>
+"
+"-------------------------------------------------------------------------------
+" autocomplete parenthesis, brackets and braces
+"-------------------------------------------------------------------------------
+inoremap ( ()<Left>
+inoremap [ []<Left>
+inoremap { {<CR>}<ESC>ko
+"
+vnoremap ( s()<Esc>P<Right>%
+vnoremap [ s[]<Esc>P<Right>%
+vnoremap { s{}<Esc>P<Right>%
+"
+"-------------------------------------------------------------------------------
+" Change the working directory to the directory containing the current file
+"-------------------------------------------------------------------------------
+if has("autocmd")
+ autocmd BufEnter * :lchdir %:p:h
+endif " has("autocmd")
+"
+"-------------------------------------------------------------------------------
+" Filename completion
+"
+" wildmenu : command-line completion operates in an enhanced mode
+" wildignore : A file that matches with one of these
+" patterns is ignored when completing file or directory names.
+"-------------------------------------------------------------------------------
+"
+set wildmenu
+set wildignore=*.bak,*.o,*.e,*~
+"
+"-------------------------------------------------------------------------------
+" print options (pc = percentage of the media size)
+"-------------------------------------------------------------------------------
+set printoptions=left:8pc,right:3pc
+"
+"-------------------------------------------------------------------------------
+" taglist.vim : toggle the taglist window
+" taglist.vim : define the title texts for make
+" taglist.vim : define the title texts for qmake
+"-------------------------------------------------------------------------------
+ noremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+inoremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+
+let tlist_make_settings = 'make;m:makros;t:targets'
+
+let tlist_qmake_settings = 'qmake;t:SystemVariables'
+
+if has("autocmd")
+ " ---------- qmake : set filetype for *.pro ----------
+ autocmd BufNewFile,BufRead *.pro set filetype=qmake
+endif " has("autocmd")
diff --git a/.vim/ftplugin/gpg.vim b/.vim/ftplugin/gpg.vim
new file mode 100644
index 0000000..20f641f
--- /dev/null
+++ b/.vim/ftplugin/gpg.vim
@@ -0,0 +1,33 @@
+" Transparent editing of gpg encrypted files.
+" By Wouter Hanegraaff <wouter@blub.net>
+augroup encrypted
+au!
+" First make sure nothing is written to ~/.viminfo while editing
+" an encrypted file.
+autocmd BufReadPre,FileReadPre *.gpg set viminfo=
+" We don't want a swap file, as it writes unencrypted data to disk
+autocmd BufReadPre,FileReadPre *.gpg set noswapfile
+" Switch to binary mode to read the encrypted file
+autocmd BufReadPre,FileReadPre *.gpg set bin
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPre,FileReadPre *.gpg let shsave=&sh
+autocmd BufReadPre,FileReadPre *.gpg let &sh='sh'
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt --default-recipient-self 2> /dev/null
+autocmd BufReadPost,FileReadPost *.gpg let &sh=shsave
+" Switch to normal mode for editing
+autocmd BufReadPost,FileReadPost *.gpg set nobin
+autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save
+autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
+" Convert all text to encrypted text before writing
+autocmd BufWritePre,FileWritePre *.gpg set bin
+autocmd BufWritePre,FileWritePre *.gpg let shsave=&sh
+autocmd BufWritePre,FileWritePre *.gpg let &sh='sh'
+autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --encrypt --default-recipient-self 2>/dev/null
+autocmd BufWritePre,FileWritePre *.gpg let &sh=shsave
+" Undo the encryption so we are back in the normal text, directly
+" after the file has been written.
+autocmd BufWritePost,FileWritePost *.gpg silent u
+autocmd BufWritePost,FileWritePost *.gpg set nobin
+augroup END
+
diff --git a/.vim/ftplugin/haskell.vim b/.vim/ftplugin/haskell.vim
new file mode 100644
index 0000000..ffe83fe
--- /dev/null
+++ b/.vim/ftplugin/haskell.vim
@@ -0,0 +1,13 @@
+"
+" general Haskell source settings
+" (shared functions are in autoload/haskellmode.vim)
+"
+" (Claus Reinke, last modified: 21/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+" try gf on import line, or ctrl-x ctrl-i, or [I, [i, ..
+set include=^import\\s*\\(qualified\\)\\?\\s*
+set includeexpr=substitute(v:fname,'\\.','/','g').'.hs'
+
diff --git a/.vim/ftplugin/haskell_doc.vim b/.vim/ftplugin/haskell_doc.vim
new file mode 100644
index 0000000..f850667
--- /dev/null
+++ b/.vim/ftplugin/haskell_doc.vim
@@ -0,0 +1,817 @@
+"
+" use haddock docs and index files
+" show documentation, complete & qualify identifiers
+"
+" (Claus Reinke; last modified: 24/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+" :Doc <name> and :IDoc <name> open haddocks for <name> in opera
+"
+" :Doc needs qualified name (default Prelude) and package (default base)
+" :IDoc needs unqualified name, looks up possible links in g:haddock_index
+"
+" :DocIndex populates g:haddock_index from haddock's index files
+" :ExportDocIndex saves g:haddock_index to cache file
+" :ImportDocIndex reloads g:haddock_index from cache file
+"
+" all the following use the haddock index (g:haddock_index)
+"
+" _? opens haddocks for unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _. fully qualifies unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _i add import <module>(<name>) statement for unqualified <name> under cursor,
+" _im add import <module> statement for unqualified <name> under cursor,
+" suggesting alternative full qualifications in popup menu
+" (this currently adds one statement per call, instead of
+" merging into existing import statements, but it's a start;-)
+"
+" CTRL-X CTRL-U (user-defined insert mode completion)
+" suggests completions of unqualified names in popup menu
+
+let s:scriptname = "haskell_doc.vim"
+
+" script parameters
+" g:haddock_browser *mandatory* which browser to call
+" g:haddock_browser_callformat [optional] how to call browser
+" g:haddock_indexfiledir [optional] where to put 'haddock_index.vim'
+" g:haddock_docdir [optional] where to find html docs
+" g:ghc [optional] which ghc to call
+" g:ghc_pkg [optional] which ghc_pkg to call
+
+" been here before?
+if exists("g:haddock_index")
+ finish
+endif
+
+" initialise nested dictionary, to be populated
+" - from haddock index files via :DocIndex
+" - from previous cached version via :ImportDocIndex
+let g:haddock_index = {}
+
+" initialise dictionary, mapping modules with haddocks to their packages,
+" populated via MkHaddockModuleIndex() or HaveModuleIndex()
+let g:haddock_moduleindex = {}
+
+" program to open urls, please set this in your vimrc
+ "examples (for windows):
+ "let g:haddock_browser = "C:/Program Files/Opera/Opera.exe"
+ "let g:haddock_browser = "C:/Program Files/Mozilla Firefox/firefox.exe"
+ "let g:haddock_browser = "C:/Program Files/Internet Explorer/IEXPLORE.exe"
+if !exists("g:haddock_browser")
+ echoerr s:scriptname." WARNING: please set g:haddock_browser!"
+endif
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname." can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+
+if (!exists("g:ghc_pkg") || !executable(g:ghc_pkg))
+ let g:ghc_pkg = substitute(g:ghc,'\(.*\)ghc','\1ghc-pkg','')
+endif
+
+if exists("g:haddock_docdir") && isdirectory(g:haddock_docdir)
+ let s:docdir = g:haddock_docdir
+elseif executable(g:ghc_pkg)
+" try to figure out location of html docs
+" first choice: where the base docs are (from the first base listed)
+ let [field;x] = split(system(g:ghc_pkg . ' field base haddock-html'),'\n')
+ let field = substitute(field,'haddock-html: \(.*\)libraries.base','\1','')
+ let field = substitute(field,'\\','/','g')
+ let alternate = substitute(field,'html','doc/html','')
+ if isdirectory(field)
+ let s:docdir = field
+ elseif isdirectory(alternate)
+ let s:docdir = alternate
+ endif
+else
+ echoerr s:scriptname." can't find ghc-pkg (set g:ghc_pkg ?)."
+endif
+
+" second choice: try some known suspects for windows/unix
+if !exists('s:docdir') || !isdirectory(s:docdir)
+ let s:ghc_libdir = substitute(system(g:ghc . ' --print-libdir'),'\n','','')
+ let location1a = s:ghc_libdir . '/doc/html/'
+ let location1b = s:ghc_libdir . '/doc/'
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let location2 = '/usr/share/doc/ghc-' . s:ghc_version . '/html/'
+ if isdirectory(location1a)
+ let s:docdir = location1a
+ elseif isdirectory(location1b)
+ let s:docdir = location1b
+ elseif isdirectory(location2)
+ let s:docdir = location2
+ else " give up
+ echoerr s:scriptname." can't find locaton of html documentation (set g:haddock_docdir)."
+ finish
+ endif
+endif
+
+" todo: can we turn s:docdir into a list of paths, and
+" include docs for third-party libs as well?
+
+let s:libraries = s:docdir . 'libraries/'
+let s:guide = s:docdir . 'users_guide/'
+let s:index = 'index.html'
+if exists("g:haddock_indexfiledir") && filewritable(g:haddock_indexfiledir)
+ let s:haddock_indexfiledir = g:haddock_indexfiledir
+elseif filewritable(s:libraries)
+ let s:haddock_indexfiledir = s:libraries
+elseif filewritable($HOME)
+ let s:haddock_indexfiledir = $HOME.'/'
+else "give up
+ echoerr s:scriptname." can't locate index file. please set g:haddock_indexfiledir"
+ finish
+endif
+let s:haddock_indexfile = s:haddock_indexfiledir . 'haddock_index.vim'
+
+" different browser setups require different call formats;
+" you might want to call the browser synchronously or
+" asynchronously, and the latter is os-dependent;
+"
+" by default, the browser is started in the background when on
+" windows or if running in a gui, and in the foreground otherwise
+" (eg, console-mode for remote sessions, with text-mode browsers).
+"
+" you can override these defaults in your vimrc, via a format
+" string including 2 %s parameters (the first being the browser
+" to call, the second being the url).
+if !exists("g:haddock_browser_callformat")
+ if has("win32") || has("win64")
+ let g:haddock_browser_callformat = 'start %s "%s"'
+ else
+ if has("gui_running")
+ let g:haddock_browser_callformat = '%s %s '.printf(&shellredir,'/dev/null').' &'
+ else
+ let g:haddock_browser_callformat = '%s %s'
+ endif
+ endif
+endif
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+command! DocSettings call DocSettings()
+function! DocSettings()
+ for v in ["g:haddock_browser","g:haddock_browser_callformat","g:haddock_docdir","g:haddock_indexfiledir","s:ghc_libdir","s:ghc_version","s:docdir","s:libraries","s:guide","s:haddock_indexfile"]
+ if exists(v)
+ echo v '=' eval(v)
+ else
+ echo v '='
+ endif
+ endfor
+endfunction
+
+function! DocBrowser(url)
+ "echomsg "DocBrowser(".url.")"
+ if (!exists("g:haddock_browser") || !executable(g:haddock_browser))
+ echoerr s:scriptname." can't find documentation browser. please set g:haddock_browser"
+ return
+ endif
+ " start browser to open url, according to specified format
+ let url = a:url=~'^\(file://\|http://\)' ? a:url : 'file://'.a:url
+ silent exe '!'.printf(g:haddock_browser_callformat,g:haddock_browser,escape(url,'#%'))
+endfunction
+
+"usage examples:
+" :Doc length
+" :Doc Control.Monad.when
+" :Doc Data.List.
+" :Doc Control.Monad.State.runState mtl
+" :Doc -top
+" :Doc -libs
+" :Doc -guide
+command! -nargs=+ Doc call Doc('v',<f-args>)
+command! -nargs=+ Doct call Doc('t',<f-args>)
+
+function! Doc(kind,qualname,...)
+ let suffix = '.html'
+ let relative = '#'.a:kind.'%3A'
+
+ if a:qualname=="-top"
+ call DocBrowser(s:docdir . s:index)
+ return
+ elseif a:qualname=="-libs"
+ call DocBrowser(s:libraries . s:index)
+ return
+ elseif a:qualname=="-guide"
+ call DocBrowser(s:guide . s:index)
+ return
+ endif
+
+ if a:0==0 " no package specified
+ let package = 'base/'
+ else
+ let package = a:1 . '/'
+ endif
+
+ if match(a:qualname,'\.')==-1 " unqualified name
+ let [qual,name] = [['Prelude'],a:qualname]
+ let file = join(qual,'-') . suffix . relative . name
+ elseif a:qualname[-1:]=='.' " module qualifier only
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-1
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix
+ else " qualified name
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-2
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix . relative . name
+ endif
+
+" let path = s:libraries . package . file
+ let path = file
+ call DocBrowser(path)
+endfunction
+
+" TODO: add commandline completion for :IDoc
+" indexed variant of Doc, looking up links in g:haddock_index
+" usage:
+" 1. :IDoc length
+" 2. click on one of the choices, or select by number (starting from 0)
+command! -nargs=+ IDoc call IDoc(<f-args>)
+function! IDoc(name,...)
+ let choices = HaddockIndexLookup(a:name)
+ if choices=={} | return | endif
+ if a:0==0
+ let keylist = map(deepcopy(keys(choices)),'substitute(v:val,"\\[.\\]","","")')
+ let choice = inputlist(keylist)
+ else
+ let choice = a:1
+ endif
+ let path = values(choices)[choice] " assumes same order for keys/values..
+ call DocBrowser(path)
+endfunction
+
+let s:flagref = s:guide . 'flag-reference.html'
+if filereadable(s:flagref)
+ " extract the generated fragment ids for the
+ " flag reference sections
+ let s:headerPat = '.\{-}<h3 class="title"><a name="\([^"]*\)"><\/a>\([^<]*\)<\/h3>\(.*\)'
+ let s:flagheaders = []
+ let s:flagheaderids = {}
+ let s:contents = join(readfile(s:flagref))
+ let s:ml = matchlist(s:contents,s:headerPat)
+ while s:ml!=[]
+ let [_,s:id,s:title,s:r;s:x] = s:ml
+ let s:flagheaders = add(s:flagheaders, s:title)
+ let s:flagheaderids[s:title] = s:id
+ let s:ml = matchlist(s:r,s:headerPat)
+ endwhile
+ command! -nargs=1 -complete=customlist,CompleteFlagHeaders FlagReference call FlagReference(<f-args>)
+ function! FlagReference(section)
+ let relativeUrl = a:section==""||!exists("s:flagheaderids['".a:section."']") ?
+ \ "" : "#".s:flagheaderids[a:section]
+ call DocBrowser(s:flagref.relativeUrl)
+ endfunction
+ function! CompleteFlagHeaders(al,cl,cp)
+ let s:choices = s:flagheaders
+ return CompleteAux(a:al,a:cl,a:cp)
+ endfunction
+endif
+
+command! -nargs=1 -complete=customlist,CompleteHaddockModules MDoc call MDoc(<f-args>)
+function! MDoc(module)
+ let suffix = '.html'
+ call HaveModuleIndex()
+ if !has_key(g:haddock_moduleindex,a:module)
+ echoerr a:module 'not found in haddock module index'
+ return
+ endif
+ let package = g:haddock_moduleindex[a:module]['package']
+ let file = substitute(a:module,'\.','-','g') . suffix
+" let path = s:libraries . package . '/' . file
+ let path = g:haddock_moduleindex[a:module]['html']
+ call DocBrowser(path)
+endfunction
+
+function! CompleteHaddockModules(al,cl,cp)
+ call HaveModuleIndex()
+ let s:choices = keys(g:haddock_moduleindex)
+ return CompleteAux(a:al,a:cl,a:cp)
+endfunction
+
+" create a dictionary g:haddock_index, containing the haddoc index
+command! DocIndex call DocIndex()
+function! DocIndex()
+ let files = split(globpath(s:libraries,'doc-index*.html'),'\n')
+ let g:haddock_index = {}
+ call ProcessHaddockIndexes2(s:libraries,files)
+ if GHC_VersionGE([6,8,2])
+ if &shell =~ 'sh' " unix-type shell
+ let s:addon_libraries = split(system(g:ghc_pkg . ' field \* haddock-html'),'\n')
+ else " windows cmd.exe and the like
+ let s:addon_libraries = split(system(g:ghc_pkg . ' field * haddock-html'),'\n')
+ endif
+ for addon in s:addon_libraries
+ let ml = matchlist(addon,'haddock-html: \("\)\?\(file:///\)\?\([^"]*\)\("\)\?')
+ if ml!=[]
+ let [_,quote,file,addon_path;x] = ml
+ let addon_path = substitute(addon_path,'\(\\\\\|\\\)','/','g')
+ let addon_files = split(globpath(addon_path,'doc-index*.html'),'\n')
+ call ProcessHaddockIndexes2(addon_path,addon_files)
+ endif
+ endfor
+ endif
+ return 1
+endfunction
+
+function! ProcessHaddockIndexes(location,files)
+ let entryPat= '.\{-}"indexentry"[^>]*>\([^<]*\)<\(\%([^=]\{-}TD CLASS="\%(indexentry\)\@!.\{-}</TD\)*\)[^=]\{-}\(\%(="indexentry\|TABLE\).*\)'
+ let linkPat = '.\{-}HREF="\([^"]*\)".>\([^<]*\)<\(.*\)'
+
+ redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let contents = join(readfile(f))
+ let ml = matchlist(contents,entryPat)
+ while ml!=[]
+ let [_,entry,links,r;x] = ml
+ "echo entry links
+ let ml2 = matchlist(links,linkPat)
+ let link = {}
+ while ml2!=[]
+ let [_,l,m,links;x] = ml2
+ "echo l m
+ let link[m] = a:location . '/' . l
+ let ml2 = matchlist(links,linkPat)
+ endwhile
+ let g:haddock_index[DeHTML(entry)] = deepcopy(link)
+ "echo entry g:haddock_index[entry]
+ let ml = matchlist(r,entryPat)
+ endwhile
+ endfor
+endfunction
+
+" concatenating all lines is too slow for a big file, process lines directly
+function! ProcessHaddockIndexes2(location,files)
+ let entryPat= '^>\([^<]*\)</'
+ let linkPat = '.\{-}A HREF="\([^"]*\)"'
+ let kindPat = '#\(.\)'
+
+ " redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let isEntry = 0
+ let isLink = ''
+ let link = {}
+ let entry = ''
+ for line in readfile(f)
+ if line=~'CLASS="indexentry'
+ if (link!={}) && (entry!='')
+ if has_key(g:haddock_index,DeHTML(entry))
+ let dict = extend(g:haddock_index[DeHTML(entry)],deepcopy(link))
+ else
+ let dict = deepcopy(link)
+ endif
+ let g:haddock_index[DeHTML(entry)] = dict
+ let link = {}
+ let entry = ''
+ endif
+ let isEntry=1
+ continue
+ endif
+ if isEntry==1
+ let ml = matchlist(line,entryPat)
+ if ml!=[] | let [_,entry;x] = ml | let isEntry=0 | continue | endif
+ endif
+ if entry!=''
+ let ml = matchlist(line,linkPat)
+ if ml!=[] | let [_,isLink;x]=ml | continue | endif
+ endif
+ if isLink!=''
+ let ml = matchlist(line,entryPat)
+ if ml!=[]
+ let [_,module;x] = ml
+ let [_,kind;x] = matchlist(isLink,kindPat)
+ let last = a:location[strlen(a:location)-1]
+ let link[module."[".kind."]"] = a:location . (last=='/'?'':'/') . isLink
+ let isLink=''
+ continue
+ endif
+ endif
+ endfor
+ if link!={}
+ if has_key(g:haddock_index,DeHTML(entry))
+ let dict = extend(g:haddock_index[DeHTML(entry)],deepcopy(link))
+ else
+ let dict = deepcopy(link)
+ endif
+ let g:haddock_index[DeHTML(entry)] = dict
+ endif
+ endfor
+endfunction
+
+command! ExportDocIndex call ExportDocIndex()
+function! ExportDocIndex()
+ call HaveIndex()
+ let entries = []
+ for key in keys(g:haddock_index)
+ let entries += [key,string(g:haddock_index[key])]
+ endfor
+ call writefile(entries,s:haddock_indexfile)
+ redir end
+endfunction
+
+command! ImportDocIndex call ImportDocIndex()
+function! ImportDocIndex()
+ if filereadable(s:haddock_indexfile)
+ let lines = readfile(s:haddock_indexfile)
+ let i=0
+ while i<len(lines)
+ let [key,dict] = [lines[i],lines[i+1]]
+ sandbox let g:haddock_index[key] = eval(dict)
+ let i+=2
+ endwhile
+ return 1
+ else
+ return 0
+ endif
+endfunction
+
+function! HaveIndex()
+ return (g:haddock_index!={} || ImportDocIndex() || DocIndex() )
+endfunction
+
+function! MkHaddockModuleIndex()
+ let g:haddock_moduleindex = {}
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let dict = g:haddock_index[key]
+ for module in keys(dict)
+ let html = dict[module]
+ let html = substitute(html ,'#.*$','','')
+ let module = substitute(module,'\[.\]','','')
+ let ml = matchlist(html,'libraries/\([^\/]*\)\/')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ let ml = matchlist(html,'/\([^\/]*\)\/html/[A-Z]')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ endfor
+ endfor
+endfunction
+
+function! HaveModuleIndex()
+ return (g:haddock_moduleindex!={} || MkHaddockModuleIndex() )
+endfunction
+
+" decode HTML symbol encodings (are these all we need?)
+function! DeHTML(entry)
+ let res = a:entry
+ let decode = { '&lt;': '<', '&gt;': '>', '&amp;': '\\&' }
+ for enc in keys(decode)
+ exe 'let res = substitute(res,"'.enc.'","'.decode[enc].'","g")'
+ endfor
+ return res
+endfunction
+
+" find haddocks for word under cursor
+" also lists possible definition sites
+" - needs to work for both qualified and unqualified items
+" - for 'import qualified M as A', consider M.item as source of A.item
+" - offer sources from both type [t] and value [v] namespaces
+" - for unqualified items, list all possible sites
+" - for qualified items, list imported sites only
+" keep track of keys with and without namespace tags:
+" the former are needed for lookup, the latter for matching against source
+map <LocalLeader>? :call Haddock()<cr>
+function! Haddock()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let imports = haskellmode#GatherImports()
+ let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let name = unqual
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ " for qualified items, narrow results to possible imports that provide qualifier
+ let filteredKeys = filter(copy(keys(dict))
+ \ ,'match(asm,substitute(v:val,''\[.\]'','''',''''))!=-1')
+ let keys = (qual!='') ? filteredKeys : keys(dict)
+ if (keys==[]) && (qual!='')
+ echoerr qual.'.'.unqual.' not found in imports'
+ return 0
+ endif
+ if len(keys)==1 && exists("g:haskell_avoid_singleton_menus")
+ call DocBrowser(dict[keys[0]])
+ elseif has("gui_running")
+ for key in keys
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call DocBrowser('''.dict[key].''')<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keys
+ let key = input('browse docs for '.name.' in: ','','customlist,CompleteAux')
+ if key!=''
+ call DocBrowser(dict[key])
+ endif
+ endif
+endfunction
+
+if !exists("g:haskell_search_engines")
+ let g:haskell_search_engines =
+ \ {'hoogle':'http://www.haskell.org/hoogle/?hoogle=%s'
+ \ ,'hayoo!':'http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=%s'
+ \ }
+endif
+
+map <LocalLeader>?? :let es=g:haskell_search_engines
+ \ \|echo "g:haskell_search_engines"
+ \ \|for e in keys(es)
+ \ \|echo e.' : '.es[e]
+ \ \|endfor<cr>
+map <LocalLeader>?1 :call HaskellSearchEngine('hoogle')<cr>
+map <LocalLeader>?2 :call HaskellSearchEngine('hayoo!')<cr>
+
+" query one of the Haskell search engines for the thing under cursor
+" - unqualified symbols need to be url-escaped
+" - qualified ids need to be fed as separate qualifier and id for
+" both hoogle (doesn't handle qualified symbols) and hayoo! (no qualified
+" ids at all)
+" - qualified ids referring to import-qualified-as qualifiers need to be
+" translated to the multi-module searches over the list of original modules
+function! HaskellSearchEngine(engine)
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let imports = haskellmode#GatherImports()
+ let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let unqual = haskellmode#UrlEncode(unqual)
+ if a:engine=='hoogle'
+ let name = asm!=[] ? unqual.'+'.join(map(copy(asm),'"%2B".v:val'),'+')
+ \ : qual!='' ? unqual.'+'.haskellmode#UrlEncode('+').qual
+ \ : unqual
+ elseif a:engine=='hayoo!'
+ let name = asm!=[] ? unqual.'+module:('.join(copy(asm),' OR ').')'
+ \ : qual!='' ? unqual.'+module:'.qual
+ \ : unqual
+ else
+ let name = qual=="" ? unqual : qual.".".unqual
+ endif
+ if has_key(g:haskell_search_engines,a:engine)
+ call DocBrowser(printf(g:haskell_search_engines[a:engine],name))
+ else
+ echoerr "unknown search engine: ".a:engine
+ endif
+endfunction
+
+" used to pass on choices to CompleteAux
+let s:choices=[]
+
+" if there's no gui, use commandline completion instead of :popup
+" completion function CompleteAux suggests completions for a:al, wrt to s:choices
+function! CompleteAux(al,cl,cp)
+ "echomsg '|'.a:al.'|'.a:cl.'|'.a:cp.'|'
+ let res = []
+ let l = len(a:al)-1
+ for r in s:choices
+ if l==-1 || r[0 : l]==a:al
+ let res += [r]
+ endif
+ endfor
+ return res
+endfunction
+
+" CamelCase shorthand matching:
+" favour upper-case letters and module qualifier separators (.) for disambiguation
+function! CamelCase(shorthand,string)
+ let s1 = a:shorthand
+ let s2 = a:string
+ let notFirst = 0 " don't elide before first pattern letter
+ while ((s1!="")&&(s2!=""))
+ let head1 = s1[0]
+ let head2 = s2[0]
+ let elide = notFirst && ( ((head1=~'[A-Z]') && (head2!~'[A-Z.]'))
+ \ ||((head1=='.') && (head2!='.')) )
+ if elide
+ let s2=s2[1:]
+ elseif (head1==head2)
+ let s1=s1[1:]
+ let s2=s2[1:]
+ else
+ return 0
+ endif
+ let notFirst = (head1!='.')||(head2!='.') " treat separators as new beginnings
+ endwhile
+ return (s1=="")
+endfunction
+
+" use haddock name index for insert mode completion (CTRL-X CTRL-U)
+function! CompleteHaddock(findstart, base)
+ if a:findstart
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ let qual = a:base =~ '^[A-Z][a-zA-Z0-9_'']*\(\.[A-Z][a-zA-Z0-9_'']*\)*\(\.[a-zA-Z0-9_'']*\)\?$'
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if (key[0 : l]==a:base)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if word[0 : l]==a:base
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ if res==[] " no prefix matches, try CamelCase shortcuts
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if CamelCase(a:base,key)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if CamelCase(a:base,word)
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ endif
+ return res
+ endif
+endfunction
+set completefunc=CompleteHaddock
+set completeopt=menu,menuone,longest
+
+" fully qualify an unqualified name
+" TODO: - standardise commandline versions of menus
+map <LocalLeader>. :call Qualify()<cr>
+function! Qualify()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ if qual!='' " TODO: should we support re-qualification?
+ redraw
+ echo 'already qualified'
+ return 0
+ endif
+ let name = unqual
+ let line = line('.')
+ let prefix = (start<=1 ? '' : getline(line)[0:start-2] )
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ let imports = haskellmode#GatherImports()
+ let qualifiedImports = []
+ for qualifiedImport in keys(imports[1])
+ let c=0
+ for module in imports[1][qualifiedImport]['modules']
+ if haskellmode#ListElem(keylist,module) | let c+=1 | endif
+ endfor
+ if c>0 | let qualifiedImports=[qualifiedImport]+qualifiedImports | endif
+ endfor
+ "let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let keylist = filter(copy(keylist),'index(qualifiedImports,v:val)==-1')
+ if has("gui_running")
+ " amenu ]Popup.-imported- :
+ for key in qualifiedImports
+ let lhs=escape(prefix.name,'/.|\')
+ let rhs=escape(prefix.key.'.'.name,'/&|\')
+ exe 'amenu ]Popup.'.escape(key,'\.').' :'.line.'s/'.lhs.'/'.rhs.'/<cr>:noh<cr>'
+ endfor
+ amenu ]Popup.-not\ imported- :
+ for key in keylist
+ let lhs=escape(prefix.name,'/.|\')
+ let rhs=escape(prefix.key.'.'.name,'/&|\')
+ exe 'amenu ]Popup.'.escape(key,'\.').' :'.line.'s/'.lhs.'/'.rhs.'/<cr>:noh<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = qualifiedImports+keylist
+ let key = input('qualify '.name.' with: ','','customlist,CompleteAux')
+ if key!=''
+ let lhs=escape(prefix.name,'/.\')
+ let rhs=escape(prefix.key.'.'.name,'/&\')
+ exe line.'s/'.lhs.'/'.rhs.'/'
+ noh
+ endif
+ endif
+endfunction
+
+" create (qualified) import for a (qualified) name
+" TODO: refine search patterns, to avoid misinterpretation of
+" oddities like import'Neither or not'module
+map <LocalLeader>i :call Import(0,0)<cr>
+map <LocalLeader>im :call Import(1,0)<cr>
+map <LocalLeader>iq :call Import(0,1)<cr>
+map <LocalLeader>iqm :call Import(1,1)<cr>
+function! Import(module,qualified)
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = unqual
+ let pname = ( symb ? '('.name.')' : name )
+ let importlist = a:module ? '' : '('.pname.')'
+ let qualified = a:qualified ? 'qualified ' : ''
+
+ if qual!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.qual.importlist.''')'
+ return
+ endif
+
+ let line = line('.')
+ let prefix = getline(line)[0:start-1]
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ if has("gui_running")
+ for key in keylist
+ " exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search("\\%1c\\(import\\\\|module\\\\|{-# OPTIONS\\)","nb"),"import '.key.importlist.'")<cr>'
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search(''\%1c\(\<import\>\\|\<module\>\\|{-# OPTIONS\\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.escape(importlist,'|').''')<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keylist
+ let key = input('import '.name.' from: ','','customlist,CompleteAux')
+ if key!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.importlist.''')'
+ endif
+ endif
+endfunction
+
+function! HaddockIndexLookup(name)
+ call HaveIndex()
+ if !has_key(g:haddock_index,a:name)
+ echoerr a:name 'not found in haddock index'
+ return {}
+ endif
+ return g:haddock_index[a:name]
+endfunction
+
+" copied from ghc.vim :-( should we move everything to using autoload instead?
+" we query the ghc version here, as we don't otherwise need it..
+function! GHC_VersionGE(target)
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>target[0]))
+ return 1
+ elseif (i==target[0])
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
diff --git a/.vim/ftplugin/haskell_hpaste.vim b/.vim/ftplugin/haskell_hpaste.vim
new file mode 100644
index 0000000..33ea0bd
--- /dev/null
+++ b/.vim/ftplugin/haskell_hpaste.vim
@@ -0,0 +1,79 @@
+" rudimentary hpaste support for vim
+" (using netrw for reading, wget for posting/annotating)
+"
+" claus reinke, last modified: 07/04/2009
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+
+" unless wget is in your PATH, you need to set g:wget
+" before loading this script. windows users are out of
+" luck, unless they have wget installed (such as the
+" cygwin one looked for here), or adapt this script to
+" whatever alternative they have at hand (perhaps using
+" vim's perl/python bindings?)
+if !exists("g:wget")
+ if executable("wget")
+ let g:wget = "!wget -q"
+ else
+ let g:wget = "!c:\\cygwin\\bin\\wget -q"
+ endif
+endif
+
+" read (recent) hpaste files
+" show index in new buffer, where ,r will open current entry
+" and ,p will annotate current entry with current buffer
+command! HpasteIndex call HpasteIndex()
+function! HpasteIndex()
+ new
+ read http://hpaste.org
+ %s/\_$\_.//g
+ %s/<tr[^>]*>//g
+ %s/<\/tr>/ /g
+ g/<\/table>/d
+ g/DOCTYPE/d
+ %s/<td>\([^<]*\)<\/td><td><a href="\/fastcgi\/hpaste\.fcgi\/view?id=\([0-9]*\)">\([^<]*\)<\/a><\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td>/\2 [\1] "\3" \4 \5 \6/
+ map <buffer> ,r 0yE:noh<cr>:call HpasteEditEntry('"')<cr>
+endfunction
+
+" load an existing entry for editing
+command! -nargs=1 HpasteEditEntry call HpasteEditEntry(<f-args>)
+function! HpasteEditEntry(entry)
+ new
+ exe 'Nread http://hpaste.org/fastcgi/hpaste.fcgi/raw?id='.a:entry
+ "exe 'map <buffer> ,p :call HpasteAnnotate('''.a:entry.''')<cr>'
+endfunction
+
+" " posting temporarily disabled -- needs someone to look into new
+" " hpaste.org structure
+
+" " annotate existing entry (only to be called via ,p in HpasteIndex)
+" function! HpasteAnnotate(entry)
+" let nick = input("nick? ")
+" let title = input("title? ")
+" if nick=='' || title==''
+" echo "nick or title missing. aborting annotation"
+" return
+" endif
+" call HpastePost('annotate/'.a:entry,nick,title)
+" endfunction
+"
+" " post new hpaste entry
+" " using 'wget --post-data' and url-encoded content
+" command! HpastePostNew call HpastePost('new',<args>)
+" function! HpastePost(mode,nick,title,...)
+" let lines = getbufline("%",1,"$")
+" let pat = '\([^[:alnum:]]\)'
+" let code = '\=printf("%%%02X",char2nr(submatch(1)))'
+" let lines = map(lines,'substitute(v:val."\r\n",'''.pat.''','''.code.''',''g'')')
+"
+" let url = 'http://hpaste.org/' . a:mode
+" let nick = substitute(a:nick,pat,code,'g')
+" let title = substitute(a:title,pat,code,'g')
+" if a:0==0
+" let announce = 'false'
+" else
+" let announce = a:1
+" endif
+" let cmd = g:wget.' --post-data="content='.join(lines,'').'&nick='.nick.'&title='.title.'&announce='.announce.'" '.url
+" exe escape(cmd,'%')
+" endfunction
diff --git a/.vim/ftplugin/latex-suite/bibtex.vim b/.vim/ftplugin/latex-suite/bibtex.vim
new file mode 100644
index 0000000..8037914
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/bibtex.vim
@@ -0,0 +1,266 @@
+"=============================================================================
+" File: bibtex.vim
+" Function: BibT
+" Author: Alan G Isaac <aisaac@american.edu>
+" modified by Srinath Avadhanula for latex-suite.
+" License: Vim Charityware license.
+" CVS: $Id: bibtex.vim 997 2006-03-20 09:45:45Z srinathava $
+"=============================================================================
+
+" Fields:
+" Define what field type each letter denotes {{{
+"
+let s:w_standsfor = 'address'
+let s:a_standsfor = 'author'
+let s:b_standsfor = 'booktitle'
+let s:c_standsfor = 'chapter'
+let s:d_standsfor = 'edition'
+let s:e_standsfor = 'editor'
+let s:h_standsfor = 'howpublished'
+let s:i_standsfor = 'institution'
+let s:k_standsfor = 'isbn'
+let s:j_standsfor = 'journal'
+let s:m_standsfor = 'month'
+let s:n_standsfor = 'number'
+let s:o_standsfor = 'organization'
+let s:p_standsfor = 'pages'
+let s:q_standsfor = 'publisher'
+let s:r_standsfor = 'school'
+let s:s_standsfor = 'series'
+let s:t_standsfor = 'title'
+let s:u_standsfor = 'type'
+let s:v_standsfor = 'volume'
+let s:y_standsfor = 'year'
+let s:z_standsfor = 'note'
+
+" }}}
+" Define the fields required for the various entry types {{{
+"
+" s:{type}_required defines the required fields
+" s:{type}_optional1 defines common optional fields
+" s:{type}_optional2 defines uncommmon optional fields
+" s:{type}_retval defines the first line of the formatted bib entry.
+"
+let s:key='<+key+>'
+
+let s:{'article'}_required="atjy"
+let s:{'article'}_optional1="vnpm"
+let s:{'article'}_optional2="z" " z is note
+let s:{'article'}_retval = '@ARTICLE{' . s:key . ','."\n"
+
+let s:{'book'}_required="aetqy" " requires author *or* editor
+let s:{'book'}_optional1="wd"
+let s:{'book'}_optional2="vnsmz" " w is address, d is edition
+let s:{'book'}_extras="k" " isbn
+let s:{'book'}_retval = '@BOOK{' . s:key . ','."\n"
+
+let s:{'booklet'}_required="t"
+let s:{'booklet'}_optional1="ahy"
+let s:{'booklet'}_optional2="wmz" " w is address
+let s:{'booklet'}_retval = '@BOOKLET{' . s:key . ','."\n"
+
+let s:{'inbook'}_required="aetcpqy"
+let s:{'inbook'}_optional1="w" " w is address
+let s:{'inbook'}_optional2="vnsudmz" " d is edition
+let s:{'inbook'}_extras="k" " isbn
+let s:{'inbook'}_retval = '@INBOOK{' . s:key . ','."\n"
+
+let s:{'incollection'}_required="atbqy" " b is booktitle
+let s:{'incollection'}_optional1="cpw" " w is address, c is chapter
+let s:{'incollection'}_optional2="evnsudmz" " d is edition
+let s:{'incollection'}_extras="k" " isbn
+let s:{'incollection'}_retval = '@INCOLLECTION{' . s:key . ','."\n"
+
+let s:{'inproceedings'}_required="atby" " b is booktitle
+let s:{'inproceedings'}_optional1="epwoq" " w is address, q is publisher
+let s:{'inproceedings'}_optional2="vnsmz"
+let s:{'inproceedings'}_extras="k" " isbn
+let s:{'inproceedings'}_retval = '@INPROCEEDINGS{' . s:key . ','."\n"
+
+let s:{'conference'}_required="atby" " b is booktitle
+let s:{'conference'}_optional1="epwoq" " w is address, q is publisher
+let s:{'conference'}_optional2="vnsmz"
+let s:{'conference'}_extras="k" " isbn
+let s:{'conference'}_retval = '@CONFERENCE{' . s:key . ','."\n"
+
+let s:{'manual'}_required="t"
+let s:{'manual'}_optional1="ow"
+let s:{'manual'}_optional2="admyz" " w is address
+let s:{'manual'}_retval = '@MANUAL{' . s:key . ','."\n"
+
+let s:{'msthesis'}_required="atry" " r is school
+let s:{'msthesis'}_optional1="w" " w is address
+let s:{'msthesis'}_optional2="umz" " u is type, w is address
+let s:{'msthesis'}_retval = '@MASTERSTHESIS{' . s:key . ','."\n"
+
+let s:{'misc'}_required=""
+let s:{'misc'}_optional1="ath"
+let s:{'misc'}_optional2="myz"
+let s:{'misc'}_retval = '@MISC{' . s:key . ','."\n"
+
+let s:{'phdthesis'}_required="atry" " r is school
+let s:{'phdthesis'}_optional1="w" " w is address
+let s:{'phdthesis'}_optional2="umz" " u is type
+let s:{'phdthesis'}_retval = '@PHDTHESIS{' . s:key . ','."\n"
+
+let s:{'proceedings'}_required="ty"
+let s:{'proceedings'}_optional1="ewo" " w is address
+let s:{'proceedings'}_optional2="vnsmqz" " q is publisher
+let s:{'proceedings'}_retval = '@PROCEEDINGS{' . s:key . ','."\n"
+
+let s:{'techreport'}_required="atiy"
+let s:{'techreport'}_optional1="unw" " u is type, w is address
+let s:{'techreport'}_optional2="mz"
+let s:{'techreport'}_retval = '@TECHREPORT{' . s:key . ','."\n"
+
+let s:{'unpublished'}_required="atz"
+let s:{'unpublished'}_optional1="y"
+let s:{'unpublished'}_optional2="m"
+let s:{'unpublished'}_retval = '@UNPUBLISHED{' . s:key . ','."\n"
+
+" }}}
+
+if exists('s:done')
+ finish
+endif
+let s:done = 1
+
+call IMAP ('BBB', "\<C-r>=BibT('', '', 0)\<CR>", 'bib')
+call IMAP ('BBL', "\<C-r>=BibT('', 'o', 0)\<CR>", 'bib')
+call IMAP ('BBH', "\<C-r>=BibT('', 'O', 0)\<CR>", 'bib')
+call IMAP ('BBX', "\<C-r>=BibT('', 'Ox', 0)\<CR>", 'bib')
+
+" BibT: function to generate a formatted bibtex entry {{{
+" three sample usages:
+" :call BibT() will request type choice
+" :call BibT("article") preferred, provides most common fields
+" :call BibT("article","ox") more optional fields (o) and extras (x)
+"
+" Input Arguments:
+" type: is one of the types listed above. (this should be a complete name, not
+" the acronym).
+" options: a string containing 0 or more of the letters 'oOx'
+" where
+" o: include a bib entry with first set of options
+" O: include a bib entry with extended options
+" x: incude bib entry with extra options
+" prompt: whether the fields are asked to be filled on the command prompt or
+" whether place-holders are used. when prompt == 1, then comman line
+" questions are used.
+"
+" Returns:
+" a string containing a formatted bib entry
+function BibT(type, options, prompt)
+ if a:type != ''
+ let choosetype = a:type
+ else
+ let types =
+ \ 'article'."\n".
+ \ 'booklet'."\n".
+ \ 'book'."\n".
+ \ 'conference'."\n".
+ \ 'inbook'."\n".
+ \ 'incollection'."\n".
+ \ 'inproceedings'."\n".
+ \ 'manual'."\n".
+ \ 'msthesis'."\n".
+ \ 'misc'."\n".
+ \ 'phdthesis'."\n".
+ \ 'proceedings'."\n".
+ \ 'techreport'."\n".
+ \ 'unpublished'
+ let choosetype = Tex_ChooseFromPrompt(
+ \ "Choose the type of bibliographic entry: \n" .
+ \ Tex_CreatePrompt(types, 3, "\n") .
+ \ "\nEnter number or filename :",
+ \ types, "\n")
+ if choosetype == ''
+ let choosetype = 'article'
+ endif
+ if types !~ '^\|\n'.choosetype.'$\|\n'
+ echomsg 'Please choose only one of the given types'
+ return
+ endif
+ endif
+ if a:options != ''
+ let options = a:options
+ else
+ let options = ""
+ endif
+
+ let fields = ''
+ let extras=""
+ let retval = ""
+
+ " define fields
+ let fields = s:{choosetype}_required
+ if options =~ 'o' && exists('s:'.choosetype.'_optional1')
+ let fields = fields . s:{choosetype}_optional1
+ endif
+ if options =~ "O" && exists('s:'.choosetype.'_optional2')
+ if options !~ 'o'&& exists('s:'.choosetype.'_optional1')
+ let fields = fields . s:{choosetype}_optional1
+ endif
+ let fields = fields . s:{choosetype}_optional2
+ endif
+ if options =~ "x" && exists('s:'.choosetype.'_extras')
+ let fields = fields . extras
+ endif
+ if exists('g:Bib_'.choosetype.'_options')
+ let fields = fields . g:Bib_{choosetype}_options
+ endif
+
+ let retval = s:{choosetype}_retval
+
+ let i = 0
+ while i < strlen(fields)
+ let field = strpart(fields, i, 1)
+
+ if exists('s:'.field.'_standsfor')
+ let field_name = s:{field}_standsfor
+ let retval = retval.field_name." = {<++>},\n"
+ endif
+
+ let i = i + 1
+ endwhile
+
+ " If the user wants even more fine-tuning...
+ if Tex_GetVarValue('Bib_'.choosetype.'_extrafields') != ''
+
+ let extrafields = Tex_GetVarValue('Bib_'.choosetype.'_extrafields')
+
+ let i = 1
+ while 1
+ let field_name = Tex_Strntok(extrafields, "\n", i)
+ if field_name == ''
+ break
+ endif
+
+ let retval = retval.field_name." = {<++>},\n"
+
+ let i = i + 1
+ endwhile
+
+ endif
+
+ let retval = retval.'otherinfo = {<++>}'."\n"
+ let retval = retval."}<++>"."\n"
+
+ return IMAP_PutTextWithMovement(retval)
+endfunction
+
+" }}}
+function! s:Input(prompt, ask) " {{{
+ if a:ask == 1
+ let retval = input(a:prompt)
+ if retval == ''
+ return "<++>"
+ endif
+ else
+ return "<++>"
+ endif
+endfunction
+
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/bibtools.py b/.vim/ftplugin/latex-suite/bibtools.py
new file mode 100644
index 0000000..0a5366c
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/bibtools.py
@@ -0,0 +1,221 @@
+# Author: Srinath Avadhanula
+# This file is distributed as part of the vim-latex project
+# http://vim-latex.sf.net
+
+import re
+
+class Bibliography(dict):
+ def __init__(self, txt, macros={}):
+ """
+ txt:
+ a string which represents the entire bibtex entry. A typical
+ entry is of the form:
+ @ARTICLE{ellington:84:part3,
+ author = {Ellington, C P},
+ title = {The Aerodynamics of Hovering Insect Flight. III. Kinematics},
+ journal = {Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences},
+ year = {1984},
+ volume = {305},
+ pages = {41-78},
+ number = {1122},
+ owner = {Srinath},
+ pdf = {C:\srinath\research\papers\Ellington-3-Kinematics.pdf},
+ timestamp = {2006.01.02},
+ }
+ """
+
+ if macros:
+ for k, v in macros.iteritems():
+ txt = txt.replace(k, '{'+v+'}')
+
+ m = re.match(r'\s*@(\w+){((\S+),)?(.*)}\s*', txt, re.MULTILINE | re.DOTALL)
+ if not m:
+ return None
+
+ self['bibtype'] = m.group(1).capitalize()
+ self['key'] = m.group(3)
+ self['body'] = m.group(4)
+
+ body = self['body']
+ self['bodytext'] = ''
+ while 1:
+ m = re.search(r'(\S+?)\s*=\s*(.)', body)
+ if not m:
+ break
+
+ field = m.group(1)
+
+ body = body[(m.start(2)+1):]
+ if m.group(2) == '{':
+ # search for the next closing brace. This is not simply a
+ # matter of searching for the next closing brace since
+ # braces can be nested. The following code basically goes
+ # to the next } which has not already been closed by a
+ # following {.
+ mniter = re.finditer(r'{|}', body)
+
+ count = 1
+ while 1:
+ try:
+ mn = mniter.next()
+ except StopIteration:
+ return None
+
+ if mn.group(0) == '{':
+ count += 1
+ else:
+ count -= 1
+
+ if count == 0:
+ value = body[:(mn.start(0))]
+ break
+
+ elif m.group(2) == '"':
+ # search for the next unquoted double-quote. To be more
+ # precise, a double quote which is preceded by an even
+ # number of double quotes.
+ mn = re.search(r'(?!\\)(\\\\)*"', body)
+ if not mn:
+ return None
+
+ value = body[:(mn.start(0))]
+
+ else:
+ # $ always matches. So we do not need to do any
+ # error-checking.
+ mn = re.search(r',|$', body)
+ value = m.group(2) + body[:(mn.start(0))].rstrip()
+
+ self[field] = re.sub(r'\s+', ' ', value)
+ body = body[(mn.start(0)+1):]
+
+ self['bodytext'] += (' %s: %s\n' % (field, value))
+ if self['bibtype'].lower() == 'string':
+ self['macro'] = {field: value}
+
+ self['bodytext'] = self['bodytext'].rstrip()
+
+
+ def __getitem__(self, key):
+ try:
+ return dict.__getitem__(self, key)
+ except KeyError:
+ return ''
+
+ def __str__(self):
+ if self['bibtype'].lower() == 'string':
+ return 'String: %(macro)s' % self
+
+ elif self['bibtype'].lower() == 'article':
+ return ('Article [%(key)s]\n' +
+ 'TI "%(title)s"\n' +
+ 'AU %(author)s\n' +
+ 'IN In %(journal)s, %(year)s') % self
+
+ elif self['bibtype'].lower() == 'conference':
+ return ('Conference [%(key)s]\n' +
+ 'TI "%(title)s"\n' +
+ 'AU %(author)s\n' +
+ 'IN In %(booktitle)s, %(year)s') % self
+
+ elif self['bibtype'].lower() == 'mastersthesis':
+ return ('Masters [%(key)s]\n' +
+ 'TI "%(title)s"\n' +
+ 'AU %(author)s\n' +
+ 'IN In %(school)s, %(year)s') % self
+
+ elif self['bibtype'].lower() == 'phdthesis':
+ return ('PhD [%(key)s]\n' +
+ 'TI "%(title)s"\n' +
+ 'AU %(author)s\n' +
+ 'IN In %(school)s, %(year)s') % self
+
+ elif self['bibtype'].lower() == 'book':
+ return ('Book [%(key)s]\n' +
+ 'TI "%(title)s"\n' +
+ 'AU %(author)s\n' +
+ 'IN %(publisher)s, %(year)s') % self
+
+ else:
+ s = '%(bibtype)s [%(key)s]\n' % self
+ if self['title']:
+ s += 'TI "%(title)s"\n' % self
+ if self['author']:
+ s += 'AU %(author)s\n' % self
+ for k, v in self.iteritems():
+ if k not in ['title', 'author', 'bibtype', 'key', 'id', 'file', 'body', 'bodytext']:
+ s += 'MI %s: %s\n' % (k, v)
+
+ return s.rstrip()
+
+ def satisfies(self, filters):
+ for field, regexp in filters:
+ if not re.search(regexp, self[field], re.I):
+ return False
+
+ return True
+
+class BibFile:
+
+ def __init__(self, filelist=''):
+ self.bibentries = []
+ self.filters = []
+ self.macros = {}
+ self.sortfields = []
+ if filelist:
+ for f in filelist.splitlines():
+ self.addfile(f)
+
+ def addfile(self, file):
+ fields = open(file).read().split('@')
+ for f in fields:
+ if not (f and re.match('string', f, re.I)):
+ continue
+
+ b = Bibliography('@' + f)
+ self.macros.update(b['macro'])
+
+ for f in fields:
+ if not f or re.match('string', f, re.I):
+ continue
+
+ b = Bibliography('@' + f, self.macros)
+ if b:
+ b['file'] = file
+ b['id'] = len(self.bibentries)
+ self.bibentries += [b]
+
+
+ def addfilter(self, filterspec):
+ self.filters += [filterspec.split()]
+
+ def rmfilters(self):
+ self.filters = []
+
+ def __str__(self):
+ s = ''
+ for b in self.bibentries:
+ if b['key'] and b.satisfies(self.filters):
+ s += '%s\n\n' % b
+ return s
+
+ def addsortfield(self, field):
+ self.sortfields += [field]
+
+ def rmsortfields(self):
+ self.sortfields = []
+
+ def sort(self):
+ def cmpfun(b1, b2):
+ for f in self.sortfields:
+ c = cmp(b1[f], b2[f])
+ if c:
+ return c
+ return 0
+ self.bibentries.sort(cmp=cmpfun)
+
+if __name__ == "__main__":
+ import sys
+
+ bf = BibFile(sys.argv[1])
+ print bf
diff --git a/.vim/ftplugin/latex-suite/bibtools.pyc b/.vim/ftplugin/latex-suite/bibtools.pyc
new file mode 100644
index 0000000..c79961f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/bibtools.pyc
Binary files differ
diff --git a/.vim/ftplugin/latex-suite/brackets.vim b/.vim/ftplugin/latex-suite/brackets.vim
new file mode 100644
index 0000000..0669ce4
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/brackets.vim
@@ -0,0 +1,145 @@
+" ==============================================================================
+" History: This was originally part of auctex.vim by Carl Mueller.
+" Srinath Avadhanula incorporated it into latex-suite with
+" significant modifications.
+" Parts of this file may be copyrighted by others as noted.
+" CVS: $Id: brackets.vim 997 2006-03-20 09:45:45Z srinathava $
+" Description:
+" This ftplugin provides the following maps:
+" . <M-b> encloses the previous character in \mathbf{}
+" . <M-c> is polymorphic as follows:
+" Insert mode:
+" 1. If the previous character is a letter or number, then capitalize it and
+" enclose it in \mathcal{}
+" 2. otherwise insert \cite{}
+" Visual Mode:
+" 1. Enclose selection in \mathcal{}
+" . <M-l> is also polymorphic as follows:
+" If the character before typing <M-l> is one of '([{|<q', then do the
+" following:
+" 1. (<M-l> \left(\right
+" similarly for [, |
+" {<M-l> \left\{\right\}
+" 2. <<M-l> \langle\rangle
+" 3. q<M-l> \lefteqn{}
+" otherwise insert \label{}
+" . <M-i> inserts \item commands at the current cursor location depending on
+" the surrounding environment. For example, inside itemize, it will
+" insert a simple \item, but within a description, it will insert
+" \item[<+label+>] etc.
+"
+" These functions make it extremeley easy to do all the \left \right stuff in
+" latex.
+" ==============================================================================
+
+" Avoid reinclusion.
+if exists('b:did_brackets')
+ finish
+endif
+let b:did_brackets = 1
+
+" define the funtions only once.
+if exists('*Tex_MathBF')
+ finish
+endif
+
+" Tex_MathBF: encloses te previous letter/number in \mathbf{} {{{
+" Description:
+function! Tex_MathBF()
+ return "\<Left>\\mathbf{\<Right>}"
+endfunction " }}}
+" Tex_MathCal: enclose the previous letter/number in \mathcal {{{
+" Description:
+" if the last character is not a letter/number, then insert \cite{}
+function! Tex_MathCal()
+ let line = getline(line("."))
+ let char = line[col(".")-2]
+
+ if char =~ '[a-zA-Z0-9]'
+ return "\<BS>".'\mathcal{'.toupper(char).'}'
+ else
+ return IMAP_PutTextWithMovement('\cite{<++>}<++>')
+ endif
+endfunction
+" }}}
+" Tex_LeftRight: maps <M-l> in insert mode. {{{
+" Description:
+" This is a polymorphic function, which maps the behaviour of <M-l> in the
+" following way:
+" If the character before typing <M-l> is one of '([{|<q', then do the
+" following:
+" 1. (<M-l> \left(<++>\right<++>
+" similarly for [, |
+" {<M-l> \left\{<++>\right\}<++>
+" 2. <<M-l> \langle<++>\rangle<++>
+" 3. q<M-l> \lefteqn{<++>}<++>
+" otherwise insert \label{<++>}<++>
+function! Tex_LeftRight()
+ let line = getline(line("."))
+ let char = line[col(".")-2]
+ let previous = line[col(".")-3]
+
+ let matchedbrackets = '()[]{}||'
+ if char =~ '(\|\[\|{\||'
+ let add = ''
+ if char =~ '{'
+ let add = "\\"
+ endif
+ let rhs = matchstr(matchedbrackets, char.'\zs.\ze')
+ return "\<BS>".IMAP_PutTextWithMovement('\left'.add.char.'<++>\right'.add.rhs.'<++>')
+ elseif char == '<'
+ return "\<BS>".IMAP_PutTextWithMovement('langle<++>\rangle<++>')
+ elseif char == 'q'
+ return "\<BS>".IMAP_PutTextWithMovement('\lefteqn{<++>}<++>')
+ else
+ return IMAP_PutTextWithMovement('\label{<++>}<++>')
+ endif
+endfunction " }}}
+" Tex_PutLeftRight: maps <M-l> in normal mode {{{
+" Description:
+" Put \left...\right in front of the matched brackets.
+function! Tex_PutLeftRight()
+ let previous = getline(line("."))[col(".") - 2]
+ let char = getline(line("."))[col(".") - 1]
+ if previous == '\'
+ if char == '{'
+ exe "normal ileft\\\<Esc>l%iright\\\<Esc>l%"
+ elseif char == '}'
+ exe "normal iright\\\<Esc>l%ileft\\\<Esc>l%"
+ endif
+ elseif char =~ '\[\|('
+ exe "normal i\\left\<Esc>l%i\\right\<Esc>l%"
+ elseif char =~ '\]\|)'
+ exe "normal i\\right\<Esc>l%i\\left\<Esc>l%"
+ endif
+endfunction " }}}
+
+" Provide <plug>'d mapping for easy user customization. {{{
+inoremap <silent> <Plug>Tex_MathBF <C-r>=Tex_MathBF()<CR>
+inoremap <silent> <Plug>Tex_MathCal <C-r>=Tex_MathCal()<CR>
+inoremap <silent> <Plug>Tex_LeftRight <C-r>=Tex_LeftRight()<CR>
+vnoremap <silent> <Plug>Tex_MathBF <C-C>`>a}<Esc>`<i\mathbf{<Esc>
+vnoremap <silent> <Plug>Tex_MathCal <C-C>`>a}<Esc>`<i\mathcal{<Esc>
+nnoremap <silent> <Plug>Tex_LeftRight :call Tex_PutLeftRight()<CR>
+
+" }}}
+" Tex_SetBracketingMaps: create mappings for the current buffer {{{
+function! <SID>Tex_SetBracketingMaps()
+
+ call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'i', '<buffer> <silent>')
+ call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'i', '<buffer> <silent>')
+ call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'i', '<buffer> <silent>')
+ call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'v', '<buffer> <silent>')
+ call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'v', '<buffer> <silent>')
+ call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'n', '<buffer> <silent>')
+
+endfunction
+" }}}
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('brackets.vim: Catching LatexSuiteFileType event', 'brak') |
+ \ call <SID>Tex_SetBracketingMaps()
+augroup END
+
+" vim:fdm=marker
diff --git a/.vim/ftplugin/latex-suite/compiler.vim b/.vim/ftplugin/latex-suite/compiler.vim
new file mode 100644
index 0000000..245f6cd
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/compiler.vim
@@ -0,0 +1,820 @@
+"=============================================================================
+" File: compiler.vim
+" Author: Srinath Avadhanula
+" Created: Tue Apr 23 05:00 PM 2002 PST
+"
+" Description: functions for compiling/viewing/searching latex documents
+" CVS: $Id: compiler.vim 997 2006-03-20 09:45:45Z srinathava $
+"=============================================================================
+
+" Tex_SetTeXCompilerTarget: sets the 'target' for the next call to Tex_RunLaTeX() {{{
+function! Tex_SetTeXCompilerTarget(type, target)
+ call Tex_Debug("+Tex_SetTeXCompilerTarget: setting target to [".a:target."] for ".a:type."r", "comp")
+
+ if a:target == ''
+ let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
+ let target = input('Enter the target format for '.a:type.'r: ', target)
+ else
+ let target = a:target
+ endif
+ if target == ''
+ let target = 'dvi'
+ endif
+
+ let targetRule = Tex_GetVarValue('Tex_'.a:type.'Rule_'.target)
+
+ if targetRule != ''
+ if a:type == 'Compile'
+ let &l:makeprg = escape(targetRule, Tex_GetVarValue('Tex_EscapeChars'))
+ elseif a:type == 'View'
+ let s:viewer = targetRule
+ endif
+ let s:target = target
+
+ elseif Tex_GetVarValue('Tex_'.a:type.'RuleComplete_'.target) != ''
+ let s:target = target
+
+ else
+ let curd = getcwd()
+ exe 'cd '.expand('%:p:h')
+ if !Tex_GetVarValue('Tex_UseMakefile') || (glob('makefile*') == '' && glob('Makefile*') == '')
+ if has('gui_running')
+ call confirm(
+ \'No '.a:type.' rule defined for target '.target."\n".
+ \'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
+ \' :help Tex_'.a:type.'Rule_format'."\n".
+ \'for more information',
+ \"&ok", 1, 'Warning')
+ else
+ call input(
+ \'No '.a:type.' rule defined for target '.target."\n".
+ \'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
+ \' :help Tex_'.a:type.'Rule_format'."\n".
+ \'for more information'
+ \)
+ endif
+ else
+ echomsg 'Assuming target is for makefile'
+ let s:target = target
+ endif
+ exe 'cd '.curd
+ endif
+endfunction
+
+function! SetTeXTarget(...)
+ if a:0 < 1
+ let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
+ let target = input('Enter the target format for compiler and viewer: ', target)
+ else
+ let target = a:1
+ endif
+ if target == ''
+ let target = 'dvi'
+ endif
+
+ call Tex_SetTeXCompilerTarget('Compile', target)
+ call Tex_SetTeXCompilerTarget('View', target)
+endfunction
+
+com! -nargs=1 TCTarget :call Tex_SetTeXCompilerTarget('Compile', <f-args>)
+com! -nargs=1 TVTarget :call Tex_SetTeXCompilerTarget('View', <f-args>)
+com! -nargs=? TTarget :call SetTeXTarget(<f-args>)
+
+" }}}
+" Tex_CompileLatex: compiles the present file. {{{
+" Description:
+function! Tex_CompileLatex()
+ if &ft != 'tex'
+ echo "calling Tex_RunLaTeX from a non-tex file"
+ return
+ end
+
+ " close any preview windows left open.
+ pclose!
+
+ let curd = getcwd()
+
+ " Find the main file corresponding to this file. Always cd to the
+ " directory containing the file to avoid problems with the directory
+ " containing spaces.
+ " Latex on linux seems to be unable to handle file names with spaces at
+ " all! Therefore for the moment, do not attempt to handle spaces in the
+ " file name.
+ if exists('b:fragmentFile')
+ let mainfname = expand('%:p:t')
+ call Tex_CD(expand('%:p:h'))
+ else
+ let mainfname = Tex_GetMainFileName(':p:t')
+ call Tex_CD(Tex_GetMainFileName(':p:h'))
+ end
+
+ call Tex_Debug('Tex_CompileLatex: getting mainfname = ['.mainfname.'] from Tex_GetMainFileName', 'comp')
+
+ " if a makefile exists and the user wants to use it, then use that
+ " irrespective of whether *.latexmain exists or not. mainfname is still
+ " extracted from *.latexmain (if possible) log file name depends on the
+ " main file which will be compiled.
+ if Tex_GetVarValue('Tex_UseMakefile') && (glob('makefile') != '' || glob('Makefile') != '')
+ let _makeprg = &l:makeprg
+ call Tex_Debug("Tex_CompileLatex: using the makefile in the current directory", "comp")
+ let &l:makeprg = 'make $*'
+ if exists('s:target')
+ call Tex_Debug('Tex_CompileLatex: execing [make! '.s:target.']', 'comp')
+ exec 'make! '.s:target
+ else
+ call Tex_Debug('Tex_CompileLatex: execing [make!]', 'comp')
+ exec 'make!'
+ endif
+ let &l:makeprg = _makeprg
+ else
+ " If &makeprg has something like "$*.ps", it means that it wants the
+ " file-name without the extension... Therefore remove it.
+ if &makeprg =~ '\$\*\.\w\+'
+ let mainfname = fnamemodify(mainfname, ':r')
+ endif
+ call Tex_Debug('Tex_CompileLatex: execing [make! '.mainfname.']', 'comp')
+ exec 'make! '.mainfname
+ endif
+ redraw!
+
+ call Tex_CD(curd)
+endfunction " }}}
+" Tex_RunLaTeX: compilation function {{{
+" this function runs the latex command on the currently open file. often times
+" the file being currently edited is only a fragment being \input'ed into some
+" master tex file. in this case, make a file called mainfile.latexmain in the
+" directory containig the file. in other words, if the current file is
+" ~/thesis/chapter.tex
+" so that doing "latex chapter.tex" doesnt make sense, then make a file called
+" main.tex.latexmain
+" in the ~/thesis directory. this will then run "latex main.tex" when
+" Tex_RunLaTeX() is called.
+function! Tex_RunLaTeX()
+ call Tex_Debug('+Tex_RunLaTeX, b:fragmentFile = '.exists('b:fragmentFile'), 'comp')
+
+ let dir = expand("%:p:h").'/'
+ let curd = getcwd()
+ call Tex_CD(expand("%:p:h"))
+
+ let initTarget = s:target
+
+ " first get the dependency chain of this format.
+ call Tex_Debug("Tex_RunLaTeX: compiling to target [".s:target."]", "comp")
+
+ if Tex_GetVarValue('Tex_FormatDependency_'.s:target) != ''
+ let dependency = Tex_GetVarValue('Tex_FormatDependency_'.s:target)
+ if dependency !~ ','.s:target.'$'
+ let dependency = dependency.','.s:target
+ endif
+ else
+ let dependency = s:target
+ endif
+
+ call Tex_Debug('Tex_RunLaTeX: getting dependency chain = ['.dependency.']', 'comp')
+
+ " now compile to the final target format via each dependency.
+ let i = 1
+ while Tex_Strntok(dependency, ',', i) != ''
+ let s:target = Tex_Strntok(dependency, ',', i)
+
+ call Tex_SetTeXCompilerTarget('Compile', s:target)
+ call Tex_Debug('Tex_RunLaTeX: setting target to '.s:target, 'comp')
+
+ if Tex_GetVarValue('Tex_MultipleCompileFormats') =~ '\<'.s:target.'\>'
+ call Tex_Debug("Tex_RunLaTeX: compiling file multiple times via Tex_CompileMultipleTimes", "comp")
+ call Tex_CompileMultipleTimes()
+ else
+ call Tex_Debug("Tex_RunLaTeX: compiling file once via Tex_CompileLatex", "comp")
+ call Tex_CompileLatex()
+ endif
+
+ let errlist = Tex_GetErrorList()
+ call Tex_Debug("Tex_RunLaTeX: errlist = [".errlist."]", "comp")
+
+ " If there are any errors, then break from the rest of the steps
+ if errlist =~ '\v(error|warning)'
+ call Tex_Debug('Tex_RunLaTeX: There were errors in compiling, breaking chain...', 'comp')
+ break
+ endif
+
+ let i = i + 1
+ endwhile
+
+ let s:target = initTarget
+ let s:origwinnum = winnr()
+ call Tex_SetupErrorWindow()
+
+ call Tex_CD(curd)
+ call Tex_Debug("-Tex_RunLaTeX", "comp")
+endfunction
+
+" }}}
+" Tex_ViewLaTeX: opens viewer {{{
+" Description: opens the DVI viewer for the file being currently edited.
+" Again, if the current file is a \input in a master file, see text above
+" Tex_RunLaTeX() to see how to set this information.
+function! Tex_ViewLaTeX()
+ if &ft != 'tex'
+ echo "calling Tex_ViewLaTeX from a non-tex file"
+ return
+ end
+
+ let curd = getcwd()
+
+ " If b:fragmentFile is set, it means this file was compiled as a fragment
+ " using Tex_PartCompile, which means that we want to ignore any
+ " *.latexmain or makefile's.
+ if !exists('b:fragmentFile')
+ " cd to the location of the file to avoid having to deal with spaces
+ " in the directory name.
+ let mainfname = Tex_GetMainFileName(':p:t:r')
+ call Tex_CD(Tex_GetMainFileName(':p:h'))
+ else
+ let mainfname = expand("%:p:t:r")
+ call Tex_CD(expand("%:p:h"))
+ endif
+
+ if Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target) != ''
+
+ let execString = Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target)
+ let execString = substitute(execString, '{v:servername}', v:servername, 'g')
+
+ elseif has('win32')
+ " unfortunately, yap does not allow the specification of an external
+ " editor from the command line. that would have really helped ensure
+ " that this particular vim and yap are connected.
+ let execString = 'start '.s:viewer.' "$*.'.s:target.'"'
+
+ elseif has('macunix')
+ if strlen(s:viewer)
+ let s:viewer = '-a '.s:viewer
+ endif
+ let execString = 'open '.s:viewer.' $*.'.s:target
+
+ else
+ " taken from Dimitri Antoniou's tip on vim.sf.net (tip #225).
+ " slight change to actually use the current servername instead of
+ " hardcoding it as xdvi.
+ " Using an option for specifying the editor in the command line
+ " because that seems to not work on older bash'es.
+ if s:target == 'dvi'
+
+ if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
+ \ v:servername != '' &&
+ \ (s:viewer == "xdvi" || s:viewer == "xdvik")
+
+ let execString = s:viewer.' -editor "gvim --servername '.v:servername.
+ \ ' --remote-silent +\%l \%f" $*.dvi &'
+
+ elseif Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
+ \ s:viewer == "kdvi"
+
+ let execString = 'kdvi --unique $*.dvi &'
+
+ else
+
+ let execString = s:viewer.' $*.dvi &'
+
+ endif
+
+ else
+
+ let execString = s:viewer.' $*.'.s:target.' &'
+
+ endif
+ end
+
+ let execString = substitute(execString, '\V$*', mainfname, 'g')
+ call Tex_Debug("Tex_ViewLaTeX: execString = ".execString, "comp")
+
+ exec 'silent! !'.execString
+
+ if !has('gui_running')
+ redraw!
+ endif
+
+ call Tex_CD(curd)
+endfunction
+
+" }}}
+" Tex_ForwardSearchLaTeX: searches for current location in dvi file. {{{
+" Description: if the DVI viewr is compatible, then take the viewer to that
+" position in the dvi file. see docs for Tex_RunLaTeX() to set a
+" master file if this is an \input'ed file.
+" Tip: With YAP on Windows, it is possible to do forward and inverse searches
+" on DVI files. to do forward search, you'll have to compile the file
+" with the --src-specials option. then set the following as the command
+" line in the 'view/options/inverse search' dialog box:
+" gvim --servername LATEX --remote-silent +%l "%f"
+" For inverse search, if you are reading this, then just pressing \ls
+" will work.
+function! Tex_ForwardSearchLaTeX()
+ if &ft != 'tex'
+ echo "calling Tex_ViewLaTeX from a non-tex file"
+ return
+ end
+
+ " only know how to do forward search for yap on windows and xdvik (and
+ " some newer versions of xdvi) on unices. Therefore forward searching will
+ " automatically open the DVI viewer irrespective of what the user chose as
+ " the default view format.
+ if Tex_GetVarValue('Tex_ViewRule_dvi') == ''
+ return
+ endif
+ let viewer = Tex_GetVarValue('Tex_ViewRule_dvi')
+
+ let curd = getcwd()
+
+ let mainfname = Tex_GetMainFileName(':t')
+ let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
+ " cd to the location of the file to avoid problems with directory name
+ " containing spaces.
+ call Tex_CD(Tex_GetMainFileName(':p:h'))
+
+ " inverse search tips taken from Dimitri Antoniou's tip and Benji Fisher's
+ " tips on vim.sf.net (vim.sf.net tip #225)
+ if has('win32')
+
+ let execString = 'silent! !start '. viewer.' -s '.line('.').expand('%').' '.mainfnameRoot
+
+ else
+ if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
+ \ exists('v:servername') &&
+ \ (viewer == "xdvi" || viewer == "xdvik")
+
+ let execString = 'silent! !'.viewer.' -name xdvi -sourceposition '.line('.').expand("%").
+ \ ' -editor "gvim --servername '.v:servername.' --remote-silent +\%l \%f" '.
+ \ mainfnameRoot.'.dvi &'
+
+ elseif Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 && viewer == "kdvi"
+
+ let execString = 'silent! !kdvi --unique file:'.mainfnameRoot.'.dvi\#src:'.line('.').expand("%").' &'
+
+ else
+
+ let execString = 'silent! !'.viewer.' -name xdvi -sourceposition '.line('.').expand("%").' '.mainfnameRoot.'.dvi &'
+
+ endif
+ end
+
+ call Tex_Debug("Tex_ForwardSearchLaTeX: execString = ".execString, "comp")
+ execute execString
+ if !has('gui_running')
+ redraw!
+ endif
+
+ call Tex_CD(curd)
+endfunction
+
+" }}}
+
+" ==============================================================================
+" Functions for compiling parts of a file.
+" ==============================================================================
+" Tex_PartCompile: compiles selected fragment {{{
+" Description: creates a temporary file from the selected fragment of text
+" prepending the preamble and \end{document} and then asks Tex_RunLaTeX() to
+" compile it.
+function! Tex_PartCompile() range
+ call Tex_Debug('+Tex_PartCompile', 'comp')
+ " Save position
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+
+ " Get a temporary file in the same directory as the file from which
+ " fragment is being extracted. This is to enable the use of relative path
+ " names in the fragment.
+ let tmpfile = Tex_GetTempName(expand('%:p:h'))
+
+ " Remember all the temp files and for each temp file created, remember
+ " where the temp file came from.
+ let s:Tex_NumTempFiles = (exists('s:Tex_NumTempFiles') ? s:Tex_NumTempFiles + 1 : 1)
+ let s:Tex_TempFiles = (exists('s:Tex_TempFiles') ? s:Tex_TempFiles : '')
+ \ . tmpfile."\n"
+ let s:Tex_TempFile_{s:Tex_NumTempFiles} = tmpfile
+ " TODO: For a function Tex_RestoreFragment which restores a temp file to
+ " its original location.
+ let s:Tex_TempFileOrig_{s:Tex_NumTempFiles} = expand('%:p')
+ let s:Tex_TempFileRange_{s:Tex_NumTempFiles} = a:firstline.','.a:lastline
+
+ " Set up an autocmd to clean up the temp files when Vim exits.
+ if Tex_GetVarValue('Tex_RemoveTempFiles')
+ augroup RemoveTmpFiles
+ au!
+ au VimLeave * :call Tex_RemoveTempFiles()
+ augroup END
+ endif
+
+ " If mainfile exists open it in tiny window and extract preamble there,
+ " otherwise do it from current file
+ let mainfile = Tex_GetMainFileName(":p")
+ exe 'bot 1 split '.escape(mainfile, ' ')
+ exe '1,/\s*\\begin{document}/w '.tmpfile
+ wincmd q
+
+ exe a:firstline.','.a:lastline."w! >> ".tmpfile
+
+ " edit the temporary file
+ exec 'drop '.tmpfile
+
+ " append the \end{document} line.
+ $ put ='\end{document}'
+ w
+
+ " set this as a fragment file.
+ let b:fragmentFile = 1
+
+ silent! call Tex_RunLaTeX()
+endfunction " }}}
+" Tex_RemoveTempFiles: cleans up temporary files created during part compilation {{{
+" Description: During part compilation, temporary files containing the
+" visually selected text are created. These files need to be
+" removed when Vim exits to avoid "file leakage".
+function! Tex_RemoveTempFiles()
+ if !exists('s:Tex_NumTempFiles') || !Tex_GetVarValue('Tex_RemoveTempFiles')
+ return
+ endif
+ let i = 1
+ while i <= s:Tex_NumTempFiles
+ let tmpfile = s:Tex_TempFile_{i}
+ " Remove the tmp file and all other associated files such as the
+ " .log files etc.
+ call Tex_DeleteFile(fnamemodify(tmpfile, ':p:r').'.*')
+ let i = i + 1
+ endwhile
+endfunction " }}}
+
+" ==============================================================================
+" Compiling a file multiple times to resolve references/citations etc.
+" ==============================================================================
+" Tex_CompileMultipleTimes: The main function {{{
+" Description: compiles a file multiple times to get cross-references right.
+function! Tex_CompileMultipleTimes()
+ " Just extract the root without any extension because we want to construct
+ " the log file names etc from it.
+ let curd = getcwd()
+ let mainFileName_root = Tex_GetMainFileName(':p:t:r')
+ call Tex_CD(Tex_GetMainFileName(':p:h'))
+
+ " First ignore undefined references and the
+ " "rerun to get cross-references right" message from
+ " the compiler output.
+ let origlevel = Tex_GetVarValue('Tex_IgnoreLevel')
+ let origpats = Tex_GetVarValue('Tex_IgnoredWarnings')
+
+ let g:Tex_IgnoredWarnings = g:Tex_IgnoredWarnings."\n"
+ \ . 'Reference %.%# undefined'."\n"
+ \ . 'Rerun to get cross-references right'
+ TCLevel 1000
+
+ let idxFileName = mainFileName_root.'.idx'
+ let auxFileName = mainFileName_root.'.aux'
+
+ let runCount = 0
+ let needToRerun = 1
+ while needToRerun == 1 && runCount < 5
+ " assume we need to run only once.
+ let needToRerun = 0
+
+ let idxlinesBefore = Tex_CatFile(idxFileName)
+ let auxlinesBefore = Tex_GetAuxFile(auxFileName)
+
+ " first run latex.
+ echomsg "latex run number : ".(runCount+1)
+ call Tex_Debug("Tex_CompileMultipleTimes: latex run number : ".(runCount+1), "comp")
+ silent! call Tex_CompileLatex()
+
+ " If there are errors in any latex compilation step, immediately
+ " return. For now, do not bother with warnings because those might go
+ " away after compiling again or after bibtex is run etc.
+ let errlist = Tex_GetErrorList()
+ call Tex_Debug("Tex_CompileMultipleTimes: errors = [".errlist."]", "comp")
+
+ if errlist =~ 'error'
+ let g:Tex_IgnoredWarnings = origpats
+ exec 'TCLevel '.origlevel
+
+ return
+ endif
+
+ let idxlinesAfter = Tex_CatFile(idxFileName)
+
+ " If .idx file changed, then run makeindex to generate the new .ind
+ " file and remember to rerun latex.
+ if runCount == 0 && glob(idxFileName) != '' && idxlinesBefore != idxlinesAfter
+ echomsg "Running makeindex..."
+ let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_MakeIndexFlavor')
+ exec 'silent! make '.mainFileName_root
+ let &mp = temp_mp
+
+ let needToRerun = 1
+ endif
+
+ " The first time we see if we need to run bibtex and if the .bbl file
+ " changes, we will rerun latex.
+ if runCount == 0 && Tex_IsPresentInFile('\\bibdata', mainFileName_root.'.aux')
+ let bibFileName = mainFileName_root.'.bbl'
+
+ let biblinesBefore = Tex_CatFile(bibFileName)
+
+ echomsg "Running '".Tex_GetVarValue('Tex_BibtexFlavor')."' ..."
+ let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_BibtexFlavor')
+ exec 'silent! make '.mainFileName_root
+ let &mp = temp_mp
+
+ let biblinesAfter = Tex_CatFile(bibFileName)
+
+ " If the .bbl file changed after running bibtex, we need to
+ " latex again.
+ if biblinesAfter != biblinesBefore
+ echomsg 'Need to rerun because bibliography file changed...'
+ call Tex_Debug('Tex_CompileMultipleTimes: Need to rerun because bibliography file changed...', 'comp')
+ let needToRerun = 1
+ endif
+ endif
+
+ " check if latex asks us to rerun
+ let auxlinesAfter = Tex_GetAuxFile(auxFileName)
+ if auxlinesAfter != auxlinesBefore
+ echomsg "Need to rerun because the AUX file changed..."
+ call Tex_Debug("Tex_CompileMultipleTimes: Need to rerun to get cross-references right...", 'comp')
+ let needToRerun = 1
+ endif
+
+ let runCount = runCount + 1
+ endwhile
+
+ call Tex_Debug("Tex_CompileMultipleTimes: Ran latex ".runCount." time(s)", "comp")
+ echomsg "Ran latex ".runCount." time(s)"
+
+ let g:Tex_IgnoredWarnings = origpats
+ exec 'TCLevel '.origlevel
+ " After all compiler calls are done, reparse the .log file for
+ " errors/warnings to handle the situation where the clist might have been
+ " emptied because of bibtex/makeindex being run as the last step.
+ exec 'silent! cfile '.mainFileName_root.'.log'
+
+ call Tex_CD(curd)
+endfunction " }}}
+" Tex_GetAuxFile: get the contents of the AUX file {{{
+" Description: get the contents of the AUX file recursively including any
+" @\input'ted AUX files.
+function! Tex_GetAuxFile(auxFile)
+ if !filereadable(a:auxFile)
+ return ''
+ endif
+
+ let auxContents = Tex_CatFile(a:auxFile)
+ let pattern = '@\input{\(.\{-}\)}'
+
+ let auxContents = substitute(auxContents, pattern, '\=Tex_GetAuxFile(submatch(1))', 'g')
+
+ return auxContents
+endfunction " }}}
+
+" ==============================================================================
+" Helper functions for
+" . viewing the log file in preview mode.
+" . syncing the display between the quickfix window and preview window
+" . going to the correct line _and column_ number from from the quick fix
+" window.
+" ==============================================================================
+" Tex_SetupErrorWindow: sets up the cwindow and preview of the .log file {{{
+" Description:
+function! Tex_SetupErrorWindow()
+ let mainfname = Tex_GetMainFileName()
+
+ let winnum = winnr()
+
+ " close the quickfix window before trying to open it again, otherwise
+ " whether or not we end up in the quickfix window after the :cwindow
+ " command is not fixed.
+ cclose
+ cwindow
+ " create log file name from mainfname
+ let mfnlog = fnamemodify(mainfname, ":t:r").'.log'
+ call Tex_Debug('Tex_SetupErrorWindow: mfnlog = '.mfnlog, 'comp')
+ " if we moved to a different window, then it means we had some errors.
+ if winnum != winnr()
+ if Tex_GetVarValue('Tex_ShowErrorContext')
+ call Tex_UpdatePreviewWindow(mfnlog)
+ exe 'nnoremap <buffer> <silent> j j:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
+ exe 'nnoremap <buffer> <silent> k k:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
+ exe 'nnoremap <buffer> <silent> <up> <up>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
+ exe 'nnoremap <buffer> <silent> <down> <down>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
+ endif
+ exe 'nnoremap <buffer> <silent> <enter> :call Tex_GotoErrorLocation("'.mfnlog.'")<CR>'
+
+ setlocal nowrap
+
+ " resize the window to just fit in with the number of lines.
+ exec ( line('$') < 4 ? line('$') : 4 ).' wincmd _'
+ if Tex_GetVarValue('Tex_GotoError') == 1
+ call Tex_GotoErrorLocation(mfnlog)
+ else
+ exec s:origwinnum.' wincmd w'
+ endif
+ endif
+
+endfunction " }}}
+" Tex_PositionPreviewWindow: positions the preview window correctly. {{{
+" Description:
+" The purpose of this function is to count the number of times an error
+" occurs on the same line. or in other words, if the current line is
+" something like |10 error|, then we want to count the number of
+" lines in the quickfix window before this line which also contain lines
+" like |10 error|.
+"
+function! Tex_PositionPreviewWindow(filename)
+
+ if getline('.') !~ '|\d\+ \(error\|warning\)|'
+ if !search('|\d\+ \(error\|warning\)|')
+ call Tex_Debug("not finding error pattern anywhere in quickfix window :".bufname(bufnr('%')),
+ \ 'comp')
+ pclose!
+ return
+ endif
+ endif
+
+ " extract the error pattern (something like 'file.tex|10 error|') on the
+ " current line.
+ let errpat = matchstr(getline('.'), '^\f*|\d\+ \(error\|warning\)|\ze')
+ let errfile = matchstr(getline('.'), '^\f*\ze|\d\+ \(error\|warning\)|')
+ " extract the line number from the error pattern.
+ let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(error\|warning\)|')
+
+ " if we are on an error, then count the number of lines before this in the
+ " quickfix window with an error on the same line.
+ if errpat =~ 'error|$'
+ " our location in the quick fix window.
+ let errline = line('.')
+
+ " goto the beginning of the quickfix window and begin counting the lines
+ " which show an error on the same line.
+ 0
+ let numrep = 0
+ while 1
+ " if we are on the same kind of error line, then means we have another
+ " line containing the same error pattern.
+ if getline('.') =~ errpat
+ let numrep = numrep + 1
+ normal! 0
+ endif
+ " if we have reached the original location in the quick fix window,
+ " then break.
+ if line('.') == errline
+ break
+ else
+ " otherwise, search for the next line which contains the same
+ " error pattern again. goto the end of the current line so we
+ " dont count this line again.
+ normal! $
+ call search(errpat, 'W')
+ endif
+ endwhile
+ else
+ let numrep = 1
+ endif
+
+ if getline('.') =~ '|\d\+ warning|'
+ let searchpat = escape(matchstr(getline('.'), '|\d\+ warning|\s*\zs.*'), '\ ')
+ else
+ let searchpat = 'l\.'.linenum
+ endif
+
+ " We first need to be in the scope of the correct file in the .log file.
+ " This is important for example, when a.tex and b.tex both have errors on
+ " line 9 of the file and we want to go to the error of b.tex. Merely
+ " searching forward from the beginning of the log file for l.9 will always
+ " land us on the error in a.tex.
+ if errfile != ''
+ exec 'silent! bot pedit +/(\\(\\f\\|\\[\\|\]\\|\\s\\)*'.errfile.'/ '.a:filename
+ else
+ exec 'bot pedit +0 '.a:filename
+ endif
+ " Goto the preview window
+ " TODO: This is not robust enough. Check that a wincmd j actually takes
+ " us to the preview window.
+ wincmd j
+ " now search forward from this position in the preview window for the
+ " numrep^th error of the current line in the quickfix window.
+ while numrep > 0
+ call search(searchpat, 'W')
+ let numrep = numrep - 1
+ endwhile
+ normal! z.
+
+endfunction " }}}
+" Tex_UpdatePreviewWindow: updates the view of the log file {{{
+" Description:
+" This function should be called when focus is in a quickfix window.
+" It opens the log file in a preview window and makes it display that
+" part of the log file which corresponds to the error which the user is
+" currently on in the quickfix window. Control returns to the quickfix
+" window when the function returns.
+"
+function! Tex_UpdatePreviewWindow(filename)
+ call Tex_PositionPreviewWindow(a:filename)
+
+ if &previewwindow
+ 6 wincmd _
+ wincmd p
+ endif
+endfunction " }}}
+" Tex_GotoErrorLocation: goes to the correct location of error in the tex file {{{
+" Description:
+" This function should be called when focus is in a quickfix window. This
+" function will first open the preview window of the log file (if it is not
+" already open), position the display of the preview to coincide with the
+" current error under the cursor and then take the user to the file in
+" which this error has occured.
+"
+" The position is both the correct line number and the column number.
+function! Tex_GotoErrorLocation(filename)
+
+ " first use vim's functionality to take us to the location of the error
+ " accurate to the line (not column). This lets us go to the correct file
+ " without applying any logic.
+ exec "normal! \<enter>"
+ " If the log file is not found, then going to the correct line number is
+ " all we can do.
+ if glob(a:filename) == ''
+ return
+ endif
+
+ let winnum = winnr()
+ " then come back to the quickfix window
+ wincmd w
+
+ " find out where in the file we had the error.
+ let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(warning\|error\)|')
+ call Tex_PositionPreviewWindow(a:filename)
+
+ if getline('.') =~ 'l.\d\+'
+
+ let brokenline = matchstr(getline('.'), 'l.'.linenum.' \zs.*\ze')
+ " If the line is of the form
+ " l.10 ...and then there was some error
+ " it means (most probably) that only part of the erroneous line is
+ " shown. In this case, finding the length of the broken line is not
+ " correct. Instead goto the beginning of the line and search forward
+ " for the part which is displayed and then go to its end.
+ if brokenline =~ '^\M...'
+ let partline = matchstr(brokenline, '^\M...\m\zs.*')
+ let normcmd = "0/\\V".escape(partline, "\\")."/e+1\<CR>"
+ else
+ let column = strlen(brokenline) + 1
+ let normcmd = column.'|'
+ endif
+
+ elseif getline('.') =~ 'LaTeX Warning: \(Citation\|Reference\) `.*'
+
+ let ref = matchstr(getline('.'), "LaTeX Warning: \\(Citation\\|Reference\\) `\\zs[^']\\+\\ze'")
+ let normcmd = '0/'.ref."\<CR>"
+
+ else
+
+ let normcmd = '0'
+
+ endif
+
+ " go back to the window where we came from.
+ exec winnum.' wincmd w'
+ exec 'silent! '.linenum.' | normal! '.normcmd
+
+ if !Tex_GetVarValue('Tex_ShowErrorContext')
+ pclose!
+ endif
+endfunction " }}}
+" Tex_SetCompilerMaps: sets maps for compiling/viewing/searching {{{
+" Description:
+function! <SID>Tex_SetCompilerMaps()
+ if exists('b:Tex_doneCompilerMaps')
+ return
+ endif
+ let s:ml = exists('g:mapleader') ? g:mapleader : "\\"
+
+ nnoremap <buffer> <Plug>Tex_Compile :call Tex_RunLaTeX()<cr>
+ vnoremap <buffer> <Plug>Tex_Compile :call Tex_PartCompile()<cr>
+ nnoremap <buffer> <Plug>Tex_View :call Tex_ViewLaTeX()<cr>
+ nnoremap <buffer> <Plug>Tex_ForwardSearch :call Tex_ForwardSearchLaTeX()<cr>
+
+ call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'n', '<buffer>')
+ call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'v', '<buffer>')
+ call Tex_MakeMap(s:ml."lv", "<Plug>Tex_View", 'n', '<buffer>')
+ call Tex_MakeMap(s:ml."ls", "<Plug>Tex_ForwardSearch", 'n', '<buffer>')
+endfunction
+" }}}
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('compiler.vim: Catching LatexSuiteFileType event', 'comp') |
+ \ call <SID>Tex_SetCompilerMaps()
+augroup END
+
+command! -nargs=0 -range=% TPartCompile :<line1>, <line2> silent! call Tex_PartCompile()
+" Setting b:fragmentFile = 1 makes Tex_CompileLatex consider the present file
+" the _main_ file irrespective of the presence of a .latexmain file.
+command! -nargs=0 TCompileThis let b:fragmentFile = 1
+command! -nargs=0 TCompileMainFile let b:fragmentFile = 0
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/custommacros.vim b/.vim/ftplugin/latex-suite/custommacros.vim
new file mode 100644
index 0000000..1b1c6bd
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/custommacros.vim
@@ -0,0 +1,257 @@
+"=============================================================================
+" File: custommacros.vim
+" Author: Mikolaj Machowski
+" Version: 1.0
+" Created: Tue Apr 23 05:00 PM 2002 PST
+" CVS: $Id: custommacros.vim 997 2006-03-20 09:45:45Z srinathava $
+"
+" Description: functions for processing custom macros in the
+" latex-suite/macros directory
+"=============================================================================
+
+let s:path = expand('<sfile>:p:h')
+
+" Set path to macros dir dependent on OS {{{
+if has("unix") || has("macunix")
+ let s:macrodirpath = $HOME."/.vim/ftplugin/latex-suite/macros/"
+elseif has("win32")
+ if exists("$HOME")
+ let s:macrodirpath = $HOME."/vimfiles/ftplugin/latex-suite/macros/"
+ else
+ let s:macrodirpath = $VIM."/vimfiles/ftplugin/latex-suite/macros/"
+ endif
+endif
+
+" }}}
+" SetCustomMacrosMenu: sets up the menu for Macros {{{
+function! <SID>SetCustomMacrosMenu()
+ let flist = Tex_FindInRtp('', 'macros')
+ exe 'amenu '.g:Tex_MacrosMenuLocation.'&New :call <SID>NewMacro("FFFromMMMenu")<CR>'
+ exe 'amenu '.g:Tex_MacrosMenuLocation.'&Redraw :call RedrawMacro()<CR>'
+
+ let i = 1
+ while 1
+ let fname = Tex_Strntok(flist, ',', i)
+ if fname == ''
+ break
+ endif
+ exe "amenu ".g:Tex_MacrosMenuLocation."&Delete.&".i.":<tab>".fname." :call <SID>DeleteMacro('".fname."')<CR>"
+ exe "amenu ".g:Tex_MacrosMenuLocation."&Edit.&".i.":<tab>".fname." :call <SID>EditMacro('".fname."')<CR>"
+ exe "imenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." <C-r>=<SID>ReadMacro('".fname."')<CR>"
+ exe "nmenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." i<C-r>=<SID>ReadMacro('".fname."')<CR>"
+ let i = i + 1
+ endwhile
+endfunction
+
+if g:Tex_Menus
+ call <SID>SetCustomMacrosMenu()
+endif
+
+" }}}
+" NewMacro: opens new file in macros directory {{{
+function! <SID>NewMacro(...)
+ " Allow for calling :TMacroNew without argument or from menu and prompt
+ " for name.
+ if a:0 > 0
+ let newmacroname = a:1
+ else
+ let newmacroname = input("Name of new macro: ")
+ if newmacroname == ''
+ return
+ endif
+ endif
+
+ if newmacroname == "FFFromMMMenu"
+ " Check if NewMacro was called from menu and prompt for insert macro
+ " name
+ let newmacroname = input("Name of new macro: ")
+ if newmacroname == ''
+ return
+ endif
+ elseif Tex_FindInRtp(newmacroname, 'macros') != ''
+ " If macro with this name already exists, prompt for another name.
+ exe "echomsg 'Macro ".newmacroname." already exists. Try another name.'"
+ let newmacroname = input("Name of new macro: ")
+ if newmacroname == ''
+ return
+ endif
+ endif
+ exec 'split '.Tex_EscapeSpaces(s:macrodirpath.newmacroname)
+ setlocal filetype=tex
+endfunction
+
+" }}}
+" RedrawMacro: refreshes macro menu {{{
+function! RedrawMacro()
+ aunmenu TeX-Suite.Macros
+ call <SID>SetCustomMacrosMenu()
+endfunction
+
+" }}}
+" ChooseMacro: choose a macro file {{{
+" " Description:
+function! s:ChooseMacro(ask)
+ let filelist = Tex_FindInRtp('', 'macros')
+ let filename = Tex_ChooseFromPrompt(
+ \ a:ask."\n" .
+ \ Tex_CreatePrompt(filelist, 2, ',') .
+ \ "\nEnter number or filename :",
+ \ filelist, ',')
+endfunction
+
+" }}}
+" DeleteMacro: deletes macro file {{{
+function! <SID>DeleteMacro(...)
+ if a:0 > 0
+ let filename = a:1
+ else
+ let filename = s:ChooseMacro('Choose a macro file for deletion :')
+ endif
+
+ if !filereadable(s:macrodirpath.filename)
+ " When file is not in local directory decline to remove it.
+ call confirm('This file is not in your local directory: '.filename."\n".
+ \ 'It will not be deleted.' , '&OK', 1)
+
+ else
+ let ch = confirm('Really delete '.filename.' ?', "&Yes\n&No", 2)
+ if ch == 1
+ call delete(s:macrodirpath.filename)
+ endif
+ call RedrawMacro()
+ endif
+endfunction
+
+" }}}
+" EditMacro: edits macro file {{{
+function! <SID>EditMacro(...)
+ if a:0 > 0
+ let filename = a:1
+ else
+ let filename = s:ChooseMacro('Choose a macro file for insertion:')
+ endif
+
+ if filereadable(s:macrodirpath.filename)
+ " If file exists in local directory open it.
+ exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename)
+ else
+ " But if file doesn't exist in local dir it probably is in user
+ " restricted area. Instead opening try to copy it to local dir.
+ " Pity VimL doesn't have mkdir() function :)
+ let ch = confirm("You are trying to edit file which is probably read-only.\n".
+ \ "It will be copied to your local LaTeX-Suite macros directory\n".
+ \ "and you will be operating on local copy with suffix -local.\n".
+ \ "It will succeed only if ftplugin/latex-suite/macros dir exists.\n".
+ \ "Do you agree?", "&Yes\n&No", 1)
+ if ch == 1
+ " But there is possibility we already created local modification.
+ " Check it and offer opening this file.
+ if filereadable(s:macrodirpath.filename.'-local')
+ let ch = confirm('Local version of '.filename." already exists.\n".
+ \ 'Do you want to open it or overwrite with original version?',
+ \ "&Open\nOver&write\n&Cancel", 1)
+ if ch == 1
+ exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename.'-local')
+ elseif ch == 2
+ new
+ exe '0read '.Tex_FindInRtp(filename, 'macros')
+ " This is possible macro was edited before, wipe it out.
+ if bufexists(s:macrodirpath.filename.'-local')
+ exe 'bwipe '.s:macrodirpath.filename.'-local'
+ endif
+ exe 'write! '.s:macrodirpath.filename.'-local'
+ else
+ return
+ endif
+ else
+ " If file doesn't exist, open new file, read in system macro and
+ " save it in local macro dir with suffix -local
+ new
+ exe '0read '.Tex_FindInRtp(filename, 'macros')
+ exe 'write '.s:macrodirpath.filename.'-local'
+ endif
+ endif
+
+ endif
+ setlocal filetype=tex
+endfunction
+
+" }}}
+" ReadMacro: reads in a macro from a macro file. {{{
+" allowing for placement via placeholders.
+function! <SID>ReadMacro(...)
+
+ if a:0 > 0
+ let filename = a:1
+ else
+ let filelist = Tex_FindInRtp('', 'macros')
+ let filename =
+ \ Tex_ChooseFromPrompt("Choose a macro file:\n" .
+ \ Tex_CreatePrompt(filelist, 2, ',') .
+ \ "\nEnter number or name of file :",
+ \ filelist, ',')
+ endif
+
+ let fname = Tex_FindInRtp(filename, 'macros', ':p')
+
+ let markerString = '<---- Latex Suite End Macro ---->'
+ let _a = @a
+ let position = line('.').' | normal! '.virtcol('.').'|'
+ silent! call append(line('.'), markerString)
+ silent! exec "read ".fname
+ silent! exec "normal! V/^".markerString."$/-1\<CR>\"ax"
+ " This is kind of tricky: At this stage, we are one line after the one we
+ " started from with the marker text on it. We need to
+ " 1. remove the marker and the line.
+ " 2. get focus to the previous line.
+ " 3. not remove anything from the previous line.
+ silent! exec "normal! $v0k$\"_x"
+
+ call Tex_CleanSearchHistory()
+
+ let @a = substitute(@a, '['."\n\r\t ".']*$', '', '')
+ let textWithMovement = IMAP_PutTextWithMovement(@a)
+ let @a = _a
+
+ return textWithMovement
+
+endfunction
+
+" }}}
+" commands for macros {{{
+com! -nargs=? TMacroNew :call <SID>NewMacro(<f-args>)
+
+" This macros had to have 2 versions:
+if v:version >= 602
+ com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacro
+ \ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
+ com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroEdit
+ \ :call <SID>EditMacro(<f-args>)
+ com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroDelete
+ \ :call <SID>DeleteMacro(<f-args>)
+
+ " Tex_CompleteMacroName: for completing names in TMacro... commands {{{
+ " Description: get list of macro names with Tex_FindInRtp(), remove full path
+ " and return list of names separated with newlines.
+ "
+ function! Tex_CompleteMacroName(A,P,L)
+ " Get name of macros from all runtimepath directories
+ let macronames = Tex_FindInRtp('', 'macros')
+ " Separate names with \n not ,
+ let macronames = substitute(macronames,',','\n','g')
+ return macronames
+ endfunction
+
+ " }}}
+
+else
+ com! -nargs=? TMacro
+ \ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
+ com! -nargs=? TMacroEdit :call <SID>EditMacro(<f-args>)
+ com! -nargs=? TMacroDelete :call <SID>DeleteMacro(<f-args>)
+
+endif
+
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/diacritics.vim b/.vim/ftplugin/latex-suite/diacritics.vim
new file mode 100644
index 0000000..616d30a
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/diacritics.vim
@@ -0,0 +1,124 @@
+"=============================================================================
+" File: diacritics.vim
+" Author: Lubomir Host
+" Created: Tue Apr 23 07:00 PM 2002 PST
+"
+" Description: shortcuts for all diacritics.
+"=============================================================================
+
+if !g:Tex_Diacritics
+ finish
+endif
+
+" \'{a} {{{
+call IMAP ('=a', "\\\'{a}", 'tex')
+call IMAP ('=b', "\\'{b}", 'tex')
+call IMAP ('=c', "\\'{c}", 'tex')
+call IMAP ('=d', "\\'{d}", 'tex')
+call IMAP ('=e', "\\'{e}", 'tex')
+call IMAP ('=f', "\\'{f}", 'tex')
+call IMAP ('=g', "\\'{g}", 'tex')
+call IMAP ('=h', "\\'{h}", 'tex')
+call IMAP ('=i', "\\'{\i}", 'tex')
+call IMAP ('=j', "\\'{j}", 'tex')
+call IMAP ('=k', "\\'{k}", 'tex')
+call IMAP ('=l', "\\'{l}", 'tex')
+call IMAP ('=m', "\\'{m}", 'tex')
+call IMAP ('=n', "\\'{n}", 'tex')
+call IMAP ('=o', "\\'{o}", 'tex')
+call IMAP ('=p', "\\'{p}", 'tex')
+call IMAP ('=q', "\\'{q}", 'tex')
+call IMAP ('=r', "\\'{r}", 'tex')
+call IMAP ('=s', "\\'{s}", 'tex')
+call IMAP ('=t', "\\'{t}", 'tex')
+call IMAP ('=u', "\\'{u}", 'tex')
+call IMAP ('=v', "\\'{v}", 'tex')
+call IMAP ('=w', "\\'{w}", 'tex')
+call IMAP ('=x', "\\'{x}", 'tex')
+call IMAP ('=y', "\\'{y}", 'tex')
+call IMAP ('=z', "\\'{z}", 'tex')
+call IMAP ('=A', "\\'{A}", 'tex')
+call IMAP ('=B', "\\'{B}", 'tex')
+call IMAP ('=C', "\\'{C}", 'tex')
+call IMAP ('=D', "\\'{D}", 'tex')
+call IMAP ('=E', "\\'{E}", 'tex')
+call IMAP ('=F', "\\'{F}", 'tex')
+call IMAP ('=G', "\\'{G}", 'tex')
+call IMAP ('=H', "\\'{H}", 'tex')
+call IMAP ('=I', "\\'{\I}", 'tex')
+call IMAP ('=J', "\\'{J}", 'tex')
+call IMAP ('=K', "\\'{K}", 'tex')
+call IMAP ('=L', "\\'{L}", 'tex')
+call IMAP ('=M', "\\'{M}", 'tex')
+call IMAP ('=N', "\\'{N}", 'tex')
+call IMAP ('=O', "\\'{O}", 'tex')
+call IMAP ('=P', "\\'{P}", 'tex')
+call IMAP ('=Q', "\\'{Q}", 'tex')
+call IMAP ('=R', "\\'{R}", 'tex')
+call IMAP ('=S', "\\'{S}", 'tex')
+call IMAP ('=T', "\\'{T}", 'tex')
+call IMAP ('=U', "\\'{U}", 'tex')
+call IMAP ('=V', "\\'{V}", 'tex')
+call IMAP ('=W', "\\'{W}", 'tex')
+call IMAP ('=X', "\\'{X}", 'tex')
+call IMAP ('=Y', "\\'{Y}", 'tex')
+call IMAP ('=Z', "\\'{Z}", 'tex')
+" }}}
+" \v{a} {{{
+call IMAP ('+a', "\\v{a}", 'tex')
+call IMAP ('+b', "\\v{b}", 'tex')
+call IMAP ('+c', "\\v{c}", 'tex')
+call IMAP ('+d', "\\v{d}", 'tex')
+call IMAP ('+e', "\\v{e}", 'tex')
+call IMAP ('+f', "\\v{f}", 'tex')
+call IMAP ('+g', "\\v{g}", 'tex')
+call IMAP ('+h', "\\v{h}", 'tex')
+call IMAP ('+i', "\\v{\i}", 'tex')
+call IMAP ('+j', "\\v{j}", 'tex')
+call IMAP ('+k', "\\v{k}", 'tex')
+call IMAP ('+l', "\\q l", 'tex')
+call IMAP ('+m', "\\v{m}", 'tex')
+call IMAP ('+n', "\\v{n}", 'tex')
+call IMAP ('+o', "\\v{o}", 'tex')
+call IMAP ('+p', "\\v{p}", 'tex')
+call IMAP ('+q', "\\v{q}", 'tex')
+call IMAP ('+r', "\\v{r}", 'tex')
+call IMAP ('+s', "\\v{s}", 'tex')
+call IMAP ('+t', "\\q t", 'tex')
+call IMAP ('+u', "\\v{u}", 'tex')
+call IMAP ('+v', "\\v{v}", 'tex')
+call IMAP ('+w', "\\v{w}", 'tex')
+call IMAP ('+x', "\\v{x}", 'tex')
+call IMAP ('+y', "\\v{y}", 'tex')
+call IMAP ('+z', "\\v{z}", 'tex')
+call IMAP ('+A', "\\v{A}", 'tex')
+call IMAP ('+B', "\\v{B}", 'tex')
+call IMAP ('+C', "\\v{C}", 'tex')
+call IMAP ('+D', "\\v{D}", 'tex')
+call IMAP ('+E', "\\v{E}", 'tex')
+call IMAP ('+F', "\\v{F}", 'tex')
+call IMAP ('+G', "\\v{G}", 'tex')
+call IMAP ('+H', "\\v{H}", 'tex')
+call IMAP ('+I', "\\v{\I}", 'tex')
+call IMAP ('+J', "\\v{J}", 'tex')
+call IMAP ('+K', "\\v{K}", 'tex')
+call IMAP ('+L', "\\v{L}", 'tex')
+call IMAP ('+M', "\\v{M}", 'tex')
+call IMAP ('+N', "\\v{N}", 'tex')
+call IMAP ('+O', "\\v{O}", 'tex')
+call IMAP ('+P', "\\v{P}", 'tex')
+call IMAP ('+Q', "\\v{Q}", 'tex')
+call IMAP ('+R', "\\v{R}", 'tex')
+call IMAP ('+S', "\\v{S}", 'tex')
+call IMAP ('+T', "\\v{T}", 'tex')
+call IMAP ('+U', "\\v{U}", 'tex')
+call IMAP ('+V', "\\v{V}", 'tex')
+call IMAP ('+W', "\\v{W}", 'tex')
+call IMAP ('+X', "\\v{X}", 'tex')
+call IMAP ('+Y', "\\v{Y}", 'tex')
+call IMAP ('+Z', "\\v{Z}", 'tex')
+" }}}
+call IMAP ('+}', "\\\"{a}", 'tex')
+call IMAP ('+:', "\\^{o}", 'tex')
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/dictionaries/SIunits b/.vim/ftplugin/latex-suite/dictionaries/SIunits
new file mode 100644
index 0000000..d4ac081
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/dictionaries/SIunits
@@ -0,0 +1,289 @@
+addprefix
+addunit
+ampere
+amperemetresecond
+amperepermetre
+amperepermetrenp
+amperepersquaremetre
+amperepersquaremetrenp
+angstrom
+arad
+arcminute
+arcsecond
+are
+atomicmass
+atto
+attod
+barn
+bbar
+becquerel
+becquerelbase
+bel
+candela
+candelapersquaremetre
+candelapersquaremetrenp
+celsius
+Celsius
+celsiusbase
+centi
+centid
+coulomb
+coulombbase
+coulombpercubicmetre
+coulombpercubicmetrenp
+coulombperkilogram
+coulombperkilogramnp
+coulombpermol
+coulombpermolnp
+coulombpersquaremetre
+coulombpersquaremetrenp
+cubed
+cubic
+cubicmetre
+cubicmetreperkilogram
+cubicmetrepersecond
+curie
+dday
+deca
+decad
+deci
+decid
+degree
+degreecelsius
+deka
+dekad
+derbecquerel
+dercelsius
+dercoulomb
+derfarad
+dergray
+derhenry
+derhertz
+derjoule
+derkatal
+derlumen
+derlux
+dernewton
+derohm
+derpascal
+derradian
+dersiemens
+dersievert
+dersteradian
+dertesla
+dervolt
+derwatt
+derweber
+electronvolt
+exa
+exad
+farad
+faradbase
+faradpermetre
+faradpermetrenp
+femto
+femtod
+fourth
+gal
+giga
+gigad
+gram
+graybase
+graypersecond
+graypersecondnp
+hectare
+hecto
+hectod
+henry
+henrybase
+henrypermetre
+henrypermetrenp
+hertz
+hertzbase
+hour
+joule
+joulebase
+joulepercubicmetre
+joulepercubicmetrenp
+jouleperkelvin
+jouleperkelvinnp
+jouleperkilogram
+jouleperkilogramkelvin
+jouleperkilogramkelvinnp
+jouleperkilogramnp
+joulepermole
+joulepermolekelvin
+joulepermolekelvinnp
+joulepermolenp
+joulepersquaremetre
+joulepersquaremetrenp
+joulepertesla
+jouleperteslanp
+katal
+katalbase
+katalpercubicmetre
+katalpercubicmetrenp
+kelvin
+kilo
+kilod
+kilogram
+kilogrammetrepersecond
+kilogrammetrepersecondnp
+kilogrammetrepersquaresecond
+kilogrammetrepersquaresecondnp
+kilogrampercubicmetre
+kilogrampercubicmetrecoulomb
+kilogrampercubicmetrecoulombnp
+kilogrampercubicmetrenp
+kilogramperkilomole
+kilogramperkilomolenp
+kilogrampermetre
+kilogrampermetrenp
+kilogrampersecond
+kilogrampersecondcubicmetre
+kilogrampersecondcubicmetrenp
+kilogrampersecondnp
+kilogrampersquaremetre
+kilogrampersquaremetrenp
+kilogrampersquaremetresecond
+kilogrampersquaremetresecondnp
+kilogramsquaremetre
+kilogramsquaremetrenp
+kilogramsquaremetrepersecond
+kilogramsquaremetrepersecondnp
+kilowatthour
+liter
+litre
+lumen
+lumenbase
+lux
+luxbase
+mega
+megad
+meter
+metre
+metrepersecond
+metrepersecondnp
+metrepersquaresecond
+metrepersquaresecondnp
+micro
+microd
+milli
+millid
+minute
+mole
+molepercubicmetre
+molepercubicmetrenp
+nano
+nanod
+neper
+newton
+newtonbase
+newtonmetre
+newtonpercubicmetre
+newtonpercubicmetrenp
+newtonperkilogram
+newtonperkilogramnp
+newtonpermetre
+newtonpermetrenp
+newtonpersquaremetre
+newtonpersquaremetrenp
+NoAMS
+no@qsk
+ohm
+ohmbase
+ohmmetre
+one
+paminute
+pascal
+pascalbase
+pascalsecond
+pasecond
+per
+period@active
+persquaremetresecond
+persquaremetresecondnp
+peta
+petad
+pico
+picod
+power
+@qsk
+quantityskip
+rad
+radian
+radianbase
+radianpersecond
+radianpersecondnp
+radianpersquaresecond
+radianpersquaresecondnp
+reciprocal
+rem
+roentgen
+rp
+rpcubed
+rpcubic
+rpcubicmetreperkilogram
+rpcubicmetrepersecond
+rperminute
+rpersecond
+rpfourth
+rpsquare
+rpsquared
+rpsquaremetreperkilogram
+second
+siemens
+siemensbase
+sievert
+sievertbase
+square
+squared
+squaremetre
+squaremetrepercubicmetre
+squaremetrepercubicmetrenp
+squaremetrepercubicsecond
+squaremetrepercubicsecondnp
+squaremetreperkilogram
+squaremetrepernewtonsecond
+squaremetrepernewtonsecondnp
+squaremetrepersecond
+squaremetrepersecondnp
+squaremetrepersquaresecond
+squaremetrepersquaresecondnp
+steradian
+steradianbase
+tera
+terad
+tesla
+teslabase
+ton
+tonne
+unit
+unitskip
+usk
+volt
+voltbase
+voltpermetre
+voltpermetrenp
+watt
+wattbase
+wattpercubicmetre
+wattpercubicmetrenp
+wattperkilogram
+wattperkilogramnp
+wattpermetrekelvin
+wattpermetrekelvinnp
+wattpersquaremetre
+wattpersquaremetrenp
+wattpersquaremetresteradian
+wattpersquaremetresteradiannp
+weber
+weberbase
+yocto
+yoctod
+yotta
+yottad
+zepto
+zeptod
+zetta
+zettad
diff --git a/.vim/ftplugin/latex-suite/dictionaries/dictionary b/.vim/ftplugin/latex-suite/dictionaries/dictionary
new file mode 100644
index 0000000..458dc0b
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/dictionaries/dictionary
@@ -0,0 +1,677 @@
+abbrv
+abovedisplayshortskip
+abovedisplayskip
+abstract
+abstract
+abstractname
+acute
+addcontentsline
+address
+addtime
+addtocontents
+addtocounter
+addtolength
+addvspace
+align
+alph
+Alph
+alpha
+amsmath
+amsthm
+and
+appendix
+appendixname
+arabic
+array
+arraycolsep
+arrayrulewidth
+arraystretch
+article
+author
+a4paper
+a5paper
+backmatter
+bar
+bar
+baselineskip
+baselinestretch
+batchmode
+begin
+belowdisplayshortskip
+belowdisplayskip
+bezier
+bf
+bfseries
+bibindent
+bibitem
+bibliography
+bibliographystyle
+bibname
+big
+Big
+Bigg
+bigg
+Biggl
+biggl
+Biggm
+biggm
+Biggr
+biggr
+Bigl
+bigl
+bigm
+Bigm
+bigr
+Bigr
+bigskip
+bigskipamount
+binom
+blg
+boldmath
+boldsymbol
+book
+botfigrule
+bottmofraction
+bottomnumber
+boxedminipage
+bp
+breve
+b5paper
+calc
+calc
+caption
+caption2
+capt-of
+cases
+cc
+ccaption
+ccname
+cdotscenter
+centering
+cercle
+cfrac
+changebar
+chapter
+chapterbib
+chaptername
+check
+cite
+cleardoublepage
+clearpage
+cline
+clock
+closing
+cm
+COLON
+columnsep
+columnseprule
+columnwidth
+contentsline
+contentsname
+copyright
+dag
+dashbox
+date
+dbinom
+dblfigure
+dblfloatpage
+dblfloatsep
+dbltextfloatsep
+dbltopfraction
+dbltopnumber
+dcolumn
+dd
+ddag
+ddot
+ddots
+DeclareMathOperator
+depth
+description
+dfrac
+displaylimits
+displaymath
+displaystyle
+document
+documentclass
+dot
+dotfill
+doublerulesep
+downbracefill
+draft
+dropping
+dywiz
+em
+emph
+empty
+encl
+enclname
+end
+endfloat
+enlargethispage
+enskip
+enspace
+ensuremath
+enumerate
+enumi
+enumii
+enumiii
+enumiv
+eqnarray
+equation
+errorstopmode
+eucal
+eufrak
+evensidemargin
+everyship
+ex
+executivepaper
+expdlist
+extracolsep
+extramark
+fancybox
+fancyhdr
+fbox
+fboxrule
+fboxsep
+figure
+figurename
+file
+filecontents
+final
+flafter
+fleqn
+floatflt
+floatpagefraction
+floatsep
+flushbottom
+flushleft
+flushright
+fnpara
+fnsymbol
+fn2end
+fontenc
+footheight
+footmisc
+footnote
+footnotemark
+footnoterule
+footnotesep
+footnotesize
+footnotetext
+footnpag
+footskip
+frac
+frame
+framebox
+frenchspacing
+frontmatter
+ftnright
+fussy
+gather
+genfrac
+geometry
+glossary
+glossaryentry
+graphicx
+graphpaper
+grave
+hat
+hbox
+headheihgt
+headings
+headsep
+height
+helvet
+hfill
+hhline
+hline
+hrulefill
+hspace
+huge
+Huge
+HUGE
+hyperref
+hyphenation
+ifthen
+in
+include
+includeonly
+indent
+indentfirst
+index
+indexentry
+indexname
+indexspace
+input
+inputenc
+intertext
+intextsep
+invisible
+it
+item
+itemindent
+itemize
+itemsep
+itshape
+jot
+kill
+label
+labelenumi
+labelenumii
+labelenumiii
+labelenumiv
+labelitemi
+labelitemii
+labelitemiii
+labelitemiv
+labelsep
+labelwidth
+landscape
+large
+LARGE
+Large
+LaTeX
+LaTeXe
+latexsym
+ldots
+left
+leftarrowfill
+lefteqn
+leftmargin
+leftmargini
+leftmarginii
+leftmarginiii
+leftmarginiv
+leftmarginv
+leftmarginvi
+leftmark
+legalpaper
+leq
+leqno
+letter
+letterpaper
+letterspace
+lhead
+limits
+line
+linebreak
+linethickness
+linewidth
+list
+listfigurename
+listfiles
+listoffigures
+listoftables
+listparindent
+location
+longtable
+lq
+lrbox
+lscape
+mainmatter
+makeatletter
+makeatother
+makebox
+makeglossary
+makeidx
+makeindex
+makelabel
+maketitle
+manyfoot
+marginpar
+marginparpush
+marginparsep
+marginparwidth
+markboth
+markleft
+markright
+math
+mathbb
+mathbf
+mathbin
+mathcal
+mathclose
+mathfrak
+mathindent
+mathit
+mathnormal
+mathop
+mathopen
+mathord
+mathpunct
+mathrel
+mathrm
+mathscr
+mathsf
+mathstrut
+mathtt
+mathversion
+mbox
+mdseries
+medmuskip
+medskip
+medskipamount
+minipage
+minitoc
+minus
+mkern
+mm
+moreverbatim
+mpfootnote
+mu
+multicol
+multicolumn
+multilanguage
+multiput
+multirow
+myheadings
+nabla
+name
+NeedsTeXFormat
+newcommand
+newcounter
+newenvironment
+newfont
+newlength
+newline
+newpage
+newsavebox
+newtheorem
+nocite
+nofiles
+noindent
+nolimits
+nolinebreak
+nomathsymbols
+nonfrenchspacing
+nonumber
+nopagebreak
+normalfont
+normalsize
+not
+notag
+note
+notitlepage
+nu
+numberline
+numline
+numprint
+oddsidemargin
+oldstyle
+onecolumn
+oneside
+onlynotes
+onlyslides
+openany
+openbib
+opening
+openright
+operatorname
+oval
+overbrace
+overlay
+overleftarrow
+overline
+overrightarrow
+page
+pagebreak
+pagenumbering
+pageref
+pagestyle
+paperheight
+paperwidth
+par
+paragraph
+parbox
+parbox
+parindent
+parsep
+parskip
+part
+partial
+partname
+partopsep
+pauza
+pc
+phi
+pi
+picture
+plain
+PLdateending
+plmath
+PLSlash
+plus
+pmb
+pmod
+polski
+polski
+poptabs
+pounds
+ppauza
+prefixing
+printindex
+protect
+providecommand
+ps
+pt
+pushtabs
+put
+qbezier
+qbeziermax
+qquad
+quad
+quotation
+quote
+raggedbottom
+raggedleft
+raggedright
+ragged2e
+raisebox
+ratio
+real
+ref
+refname
+refstepcounter
+relsize
+renewcommand
+renewenvironment
+report
+reversemarginpar
+rhead
+right
+rightarrowfill
+rightmargin
+rightmark
+rm
+rmfamily
+roman
+Roman
+rotate
+rotating
+rq
+rule
+samepage
+savebox
+sb
+sbox
+sc
+scriptscriptstyle
+scriptsize
+scriptstyle
+scrollmode
+scshape
+secnumdepth
+section
+sectionmark
+see
+seename
+selectfont
+selectlanguage
+setcounter
+setlength
+settime
+settodepth
+settoheight
+settowidth
+sf
+sffamily
+shadethm
+shadow
+shapepar
+shortstack
+showlabels
+sidecap
+signature
+sin
+sl
+slide
+slides
+sloppy
+sloppybar
+slshape
+small
+smallskip
+smallskipamount
+soul
+sp
+space
+sqrt
+ss
+SS
+stackrel
+startbreaks
+stepcounter
+stop
+stopbreaks
+stretch
+strut
+subfigure
+subfigure
+subitem
+subparagraph
+subsection
+subsubitem
+subsubsection
+sum
+supressfloats
+symbol
+symbol
+tabbing
+tabcolsep
+table
+tablename
+tableofcontents
+tabular
+tabularx
+tag
+tan
+tbinom
+telephone
+TeX
+textbf
+textbullet
+textcircled
+textcompwordmark
+textemdash
+textendash
+textexclamdown
+textfloatsep
+textfraction
+textheight
+textit
+textmd
+textnormal
+textperiodcenter
+textquestiondown
+textquotedblleft
+textquotedblright
+textquoteleft
+textquoteright
+textrm
+textsc
+textsf
+textsl
+textstyle
+textsuperscript
+texttt
+textup
+textvisiblespace
+textwidth
+tfrac
+thanks
+the
+thebibliography
+theindex
+theorem
+thepage
+thesection
+theta
+thicklines
+thickmuskip
+thinlines
+thispagestyle
+tilde
+time
+times
+tiny
+title
+titlepage
+tocdepth
+today
+topfigrule
+topfraction
+topmargin
+topmargin
+topmargin
+topsep
+topskip
+topskip
+totalheight
+totalnumber
+trivlist
+tt
+ttfamily
+twocolumn
+twocolumn
+twoside
+typein
+typein
+typeout
+typeout
+ulem
+ulem
+unboldmath
+underbrace
+underline
+unsort
+unsrt
+upbracefill
+upshape
+upshape
+usebox
+usebox
+usecounter
+usefont
+usepackage
+value
+vbox
+vdots
+vec
+vector
+verb
+verb
+verbatim
+verse
+vfill
+visible
+vline
+vmargin
+voffset
+vspace
+widehat
+widetilde
+width
+wrapfig
+xleftarrow
+xrightarrow
+threeparttable
diff --git a/.vim/ftplugin/latex-suite/elementmacros.vim b/.vim/ftplugin/latex-suite/elementmacros.vim
new file mode 100644
index 0000000..8960a0f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/elementmacros.vim
@@ -0,0 +1,338 @@
+"=============================================================================
+" File: elementmacros.vim
+" Author: Mikolaj Machowski
+" Created: Tue Apr 23 06:00 PM 2002 PST
+"
+" Description: macros for dimensions/fonts/counters.
+" and various common commands such ref/label/footnote.
+"=============================================================================
+
+nmap <silent> <script> <plug> i
+imap <silent> <script> <C-o><plug> <Nop>
+
+if exists('s:lastElementsLocation') && g:Tex_ElementsMenuLocation == s:lastElementsLocation
+ finish
+endif
+
+if exists('s:lastElementsLocation')
+ exe 'aunmenu '.s:lastElementsLocation.'Font.'
+ exe 'aunmenu '.s:lastElementsLocation.'Dimension.'
+ exe 'aunmenu '.s:lastElementsLocation.'Counters.'
+ exe 'aunmenu '.s:lastElementsLocation.'Various.'
+endif
+
+let s:lastElementsLocation = g:Tex_ElementsMenuLocation
+
+let s:fontMenuLoc = g:Tex_ElementsMenuLocation.'Font.'
+let s:dimensionMenuLoc = g:Tex_ElementsMenuLocation.'Dimension.'
+let s:counterMenuLoc = g:Tex_ElementsMenuLocation.'Counters.'
+let s:variousMenuLoc = g:Tex_ElementsMenuLocation.'Various.'
+
+" ==============================================================================
+" Set up the functions the first time.
+" ==============================================================================
+if !exists('s:definedFuncs') " {{{
+ let s:definedFuncs = 1
+
+ " Tex_RemoveElementMenus: remove the elements menu {{{
+ "
+ function! Tex_RemoveElementMenus()
+ exe 'silent! aunmenu '.s:lastElementsLocation.'Font.'
+ exe 'silent! aunmenu '.s:lastElementsLocation.'Dimension.'
+ exe 'silent! aunmenu '.s:lastElementsLocation.'Counters.'
+ exe 'silent! aunmenu '.s:lastElementsLocation.'Various.'
+ endfunction
+
+ " }}}
+ " Tex_FontFamily: sets up font menus {{{
+ "
+ function! <SID>Tex_FontFamily(font,fam)
+ let vislhs = matchstr(tolower(a:font), '^.\zs.*')
+
+ " avoid redoing imaps and vmaps for every reconfiguration of menus.
+ if !exists('s:doneOnce') && g:Tex_FontMaps
+ exe "vnoremap <silent> ".g:Tex_Leader.vislhs.
+ \" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
+ exe 'call IMAP ("'.a:font.'", "\\text'.vislhs.'{<++>}<++>", "tex")'
+ endif
+
+ " menu entry.
+ if g:Tex_Menus && g:Tex_FontMenus
+ let location = s:fontMenuLoc.substitute(a:fam, '^.', '\u&', '').'.'.vislhs.a:fam.'<tab>'.a:font.'\ ('.g:Tex_Leader.vislhs.')'
+ exe "amenu ".location.
+ \" <plug><C-r>=IMAP_PutTextWithMovement('\\text".vislhs."{<++>}<++>')<CR>"
+ exe "vmenu ".location.
+ \" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
+ endif
+
+ endfunction
+
+ " }}}
+ " Tex_FontDiacritics: sets up menus for diacritics. {{{
+ "
+ function! <SID>Tex_FontDiacritics(name, rhs)
+ let location = s:fontMenuLoc.'&Diacritics.'.a:name.'<tab>'
+ exe 'amenu '.location.
+ \" <plug><C-r>=IMAP_PutTextWithMovement('\\".a:rhs."{<++>}<++>')<CR>"
+ exe 'vmenu '.location.
+ \" \<C-\\>\<C-n>:call VEnclose('\\".a:rhs."{', '}', '', '')<CR>"
+ endfunction " }}}
+ " Tex_FontSize: sets up size fonts {{{
+ "
+ function! <SID>Tex_FontSize(name)
+ let location = s:fontMenuLoc.'&Size.'.a:name.'<tab>'
+ exe 'amenu '.location." <plug>\\".a:name
+ exe 'vunmenu '.location
+ endfunction " }}}
+ " Tex_Fontfont: sets up the 'font' part of font menus {{{
+ "
+ function! <SID>Tex_Fontfont(desc, lhs)
+ let location = s:fontMenuLoc.'&font.'.a:desc.'<tab>'
+ exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
+ exe "vunmenu ".location
+ endfunction " }}}
+ " Tex_DimMenus: set up dimension menus {{{
+ function! <SID>Tex_DimMenus(submenu, rhs)
+ let location = s:dimensionMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
+ exe "amenu ".location." <plug>\\".a:rhs
+ exe "vunmenu ".location
+ endfunction " }}}
+ " Tex_CounterMenus: set up counters menus {{{
+ function! <SID>Tex_CounterMenus(submenu, rhs)
+ let location = s:counterMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
+ exe "amenu ".location." <plug>\\".a:rhs
+ exe "vunmenu ".location
+ endfunction " }}}
+ " Tex_VariousMenus: set up various menus {{{
+ function! <SID>Tex_VariousMenus(desc, lhs)
+ let location = s:variousMenuLoc.a:desc.'<tab>'
+ exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
+ exe "vunmenu ".location
+ endfunction " }}}
+endif
+" }}}
+
+" ==============================================================================
+" Fonts
+" ==============================================================================
+" series/family/shape {{{
+call <SID>Tex_FontFamily("FBF","series")
+call <SID>Tex_FontFamily("FMD","series")
+
+call <SID>Tex_FontFamily("FTT","family")
+call <SID>Tex_FontFamily("FSF","family")
+call <SID>Tex_FontFamily("FRM","family")
+
+call <SID>Tex_FontFamily("FUP","shape")
+call <SID>Tex_FontFamily("FSL","shape")
+call <SID>Tex_FontFamily("FSC","shape")
+call <SID>Tex_FontFamily("FIT","shape")
+
+" the \emph is special.
+if g:Tex_FontMaps | exe "vnoremap <silent> ".g:Tex_Leader."em \<C-\\>\<C-N>:call VEnclose('\\emph{', '}', '{\\em', '\\/}')<CR>" | endif
+if g:Tex_FontMaps | exe 'call IMAP ("FEM", "\\emph{<++>}<++>", "tex")' | endif
+
+" }}}
+if g:Tex_Menus && g:Tex_FontMenus
+ " {{{ diacritics
+ call <SID>Tex_FontDiacritics('Acute', '"')
+ call <SID>Tex_FontDiacritics('Breve', 'u')
+ call <SID>Tex_FontDiacritics('Circle', 'r')
+ call <SID>Tex_FontDiacritics('Circumflex', '^')
+ call <SID>Tex_FontDiacritics('Umlaut', '"')
+ call <SID>Tex_FontDiacritics('HUmlaut', 'H')
+ call <SID>Tex_FontDiacritics('Dot\ over', '.')
+ call <SID>Tex_FontDiacritics('Grave', '`')
+ call <SID>Tex_FontDiacritics('Hacek', 'v')
+ call <SID>Tex_FontDiacritics('Makron', '=')
+ call <SID>Tex_FontDiacritics('Tilde', '~')
+ call <SID>Tex_FontDiacritics('Underline', 'b')
+ call <SID>Tex_FontDiacritics('Cedille', 'c')
+ call <SID>Tex_FontDiacritics('Dot\ under', ' ')
+ call <SID>Tex_FontDiacritics('Ligature', 't')
+ " }}}
+ " {{{ Si&ze.
+ call <SID>Tex_FontSize('tiny')
+ call <SID>Tex_FontSize('scriptsize')
+ call <SID>Tex_FontSize('footnotesize')
+ call <SID>Tex_FontSize('small')
+ call <SID>Tex_FontSize('normalsize')
+ call <SID>Tex_FontSize('large')
+ call <SID>Tex_FontSize('Large')
+ call <SID>Tex_FontSize('LARGE')
+ call <SID>Tex_FontSize('huge')
+ call <SID>Tex_FontSize('Huge')
+ " }}}
+ " {{{ &font.
+ call s:Tex_Fontfont('fontencoding{}', '\fontencoding{<++>}<++>')
+ call s:Tex_Fontfont('fontfamily{qtm}', '\fontfamily{<++>}<++>')
+ call s:Tex_Fontfont('fontseries{m\ b\ bx\ sb\ c}', '\fontseries{<++>}<++>')
+ call s:Tex_Fontfont('fontshape{n\ it\ sl\ sc\ ui}', '\fontshape{<++>}<++>')
+ call s:Tex_Fontfont('fontsize{}{}', '\fontsize{<++>}{<++>}<++>')
+ call s:Tex_Fontfont('selectfont', '\selectfont ')
+ " }}}
+endif
+
+" ==============================================================================
+" Dimensions
+" ==============================================================================
+if g:Tex_Menus
+ " {{{ Static1
+ call <SID>Tex_DimMenus('Static1', 'arraycolsep')
+ call <SID>Tex_DimMenus('Static1', 'arrayrulewidth')
+ call <SID>Tex_DimMenus('Static1', 'bibindent')
+ call <SID>Tex_DimMenus('Static1', 'columnsep')
+ call <SID>Tex_DimMenus('Static1', 'columnseprule')
+ call <SID>Tex_DimMenus('Static1', 'columnwidth')
+ call <SID>Tex_DimMenus('Static1', 'doublerulesep')
+ call <SID>Tex_DimMenus('Static1', 'evensidemargin')
+ call <SID>Tex_DimMenus('Static1', 'fboxrule')
+ call <SID>Tex_DimMenus('Static1', 'fboxsep')
+ call <SID>Tex_DimMenus('Static1', 'footheight')
+ call <SID>Tex_DimMenus('Static1', 'footnotesep')
+ call <SID>Tex_DimMenus('Static1', 'footskip')
+ call <SID>Tex_DimMenus('Static1', 'headheight')
+ call <SID>Tex_DimMenus('Static1', 'headsep')
+ call <SID>Tex_DimMenus('Static1', 'itemindent')
+ call <SID>Tex_DimMenus('Static1', 'labelsep')
+ call <SID>Tex_DimMenus('Static1', 'labelwidth')
+ call <SID>Tex_DimMenus('Static1', 'leftmargin')
+ call <SID>Tex_DimMenus('Static1', 'leftmargini')
+ call <SID>Tex_DimMenus('Static1', 'leftmarginii')
+ call <SID>Tex_DimMenus('Static1', 'leftmarginiii')
+ call <SID>Tex_DimMenus('Static1', 'leftmarginiv')
+ call <SID>Tex_DimMenus('Static1', 'leftmarginv')
+ call <SID>Tex_DimMenus('Static1', 'leftmarginvi')
+ call <SID>Tex_DimMenus('Static1', 'linewidth')
+ call <SID>Tex_DimMenus('Static1', 'listparindent')
+ call <SID>Tex_DimMenus('Static1', 'marginparpush')
+ call <SID>Tex_DimMenus('Static1', 'marginparsep')
+ call <SID>Tex_DimMenus('Static1', 'marginparwidth')
+ call <SID>Tex_DimMenus('Static1', 'mathindent')
+ call <SID>Tex_DimMenus('Static1', 'oddsidemargin')
+ " }}}
+ " {{{ Static2
+ call <SID>Tex_DimMenus('Static2', 'paperheight')
+ call <SID>Tex_DimMenus('Static2', 'paperwidth')
+ call <SID>Tex_DimMenus('Static2', 'parindent')
+ call <SID>Tex_DimMenus('Static2', 'rightmargin')
+ call <SID>Tex_DimMenus('Static2', 'tabbingsep')
+ call <SID>Tex_DimMenus('Static2', 'tabcolsep')
+ call <SID>Tex_DimMenus('Static2', 'textheight')
+ call <SID>Tex_DimMenus('Static2', 'textwidth')
+ call <SID>Tex_DimMenus('Static2', 'topmargin')
+ call <SID>Tex_DimMenus('Static2', 'unitlength')
+ " }}}
+ " {{{ Dynamic
+ call <SID>Tex_DimMenus('Dynamic', 'abovedisplayshortskip')
+ call <SID>Tex_DimMenus('Dynamic', 'abovedisplayskip')
+ call <SID>Tex_DimMenus('Dynamic', 'baselineskip')
+ call <SID>Tex_DimMenus('Dynamic', 'belowdisplayshortskip')
+ call <SID>Tex_DimMenus('Dynamic', 'belowdisplayskip')
+ call <SID>Tex_DimMenus('Dynamic', 'dblfloatsep')
+ call <SID>Tex_DimMenus('Dynamic', 'dbltextfloatsep')
+ call <SID>Tex_DimMenus('Dynamic', 'floatsep')
+ call <SID>Tex_DimMenus('Dynamic', 'intextsep')
+ call <SID>Tex_DimMenus('Dynamic', 'itemsep')
+ call <SID>Tex_DimMenus('Dynamic', 'parsep')
+ call <SID>Tex_DimMenus('Dynamic', 'parskip')
+ call <SID>Tex_DimMenus('Dynamic', 'partopsep')
+ call <SID>Tex_DimMenus('Dynamic', 'textfloatsep')
+ call <SID>Tex_DimMenus('Dynamic', 'topsep')
+ call <SID>Tex_DimMenus('Dynamic', 'topskip')
+ " }}}
+ " {{{ Change
+ call <SID>Tex_DimMenus('Change', 'setlength')
+ call <SID>Tex_DimMenus('Change', 'addtolength')
+ call <SID>Tex_DimMenus('Change', 'settoheight')
+ call <SID>Tex_DimMenus('Change', 'settowidth')
+ call <SID>Tex_DimMenus('Change', 'settolength')
+ " }}}
+endif
+
+" ==============================================================================
+" Counters
+" ==============================================================================
+if g:Tex_Menus
+ " Counters {{{
+ call <SID>Tex_CounterMenus('Counters', 'bottomnumber')
+ call <SID>Tex_CounterMenus('Counters', 'chapter')
+ call <SID>Tex_CounterMenus('Counters', 'dbltopnumber')
+ call <SID>Tex_CounterMenus('Counters', 'enumi')
+ call <SID>Tex_CounterMenus('Counters', 'enumii')
+ call <SID>Tex_CounterMenus('Counters', 'enumiii')
+ call <SID>Tex_CounterMenus('Counters', 'enumiv')
+ call <SID>Tex_CounterMenus('Counters', 'equation')
+ call <SID>Tex_CounterMenus('Counters', 'figure')
+ call <SID>Tex_CounterMenus('Counters', 'footnote')
+ call <SID>Tex_CounterMenus('Counters', 'mpfootnote')
+ call <SID>Tex_CounterMenus('Counters', 'page')
+ call <SID>Tex_CounterMenus('Counters', 'paragraph')
+ call <SID>Tex_CounterMenus('Counters', 'part')
+ call <SID>Tex_CounterMenus('Counters', 'secnumdepth')
+ call <SID>Tex_CounterMenus('Counters', 'section')
+ call <SID>Tex_CounterMenus('Counters', 'subparagraph')
+ call <SID>Tex_CounterMenus('Counters', 'subsection')
+ call <SID>Tex_CounterMenus('Counters', 'subsubsection')
+ call <SID>Tex_CounterMenus('Counters', 'table')
+ call <SID>Tex_CounterMenus('Counters', 'tocdepth')
+ call <SID>Tex_CounterMenus('Counters', 'topnumber')
+ call <SID>Tex_CounterMenus('Counters', 'totalnumber')
+ " }}}
+ " theCounters {{{
+ call <SID>Tex_CounterMenus('theCounters', 'thebottomnumber')
+ call <SID>Tex_CounterMenus('theCounters', 'thechapter')
+ call <SID>Tex_CounterMenus('theCounters', 'thedbltopnumber')
+ call <SID>Tex_CounterMenus('theCounters', 'theenumi')
+ call <SID>Tex_CounterMenus('theCounters', 'theenumii')
+ call <SID>Tex_CounterMenus('theCounters', 'theenumiii')
+ call <SID>Tex_CounterMenus('theCounters', 'theenumiv')
+ call <SID>Tex_CounterMenus('theCounters', 'theequation')
+ call <SID>Tex_CounterMenus('theCounters', 'thefigure')
+ call <SID>Tex_CounterMenus('theCounters', 'thefootnote')
+ call <SID>Tex_CounterMenus('theCounters', 'thempfootnote')
+ call <SID>Tex_CounterMenus('theCounters', 'thepage')
+ call <SID>Tex_CounterMenus('theCounters', 'theparagraph')
+ call <SID>Tex_CounterMenus('theCounters', 'thepart')
+ call <SID>Tex_CounterMenus('theCounters', 'thesecnumdepth')
+ call <SID>Tex_CounterMenus('theCounters', 'thesection')
+ call <SID>Tex_CounterMenus('theCounters', 'thesubparagraph')
+ call <SID>Tex_CounterMenus('theCounters', 'thesubsection')
+ call <SID>Tex_CounterMenus('theCounters', 'thesubsubsection')
+ call <SID>Tex_CounterMenus('theCounters', 'thetable')
+ call <SID>Tex_CounterMenus('theCounters', 'thetocdepth')
+ call <SID>Tex_CounterMenus('theCounters', 'thetopnumber')
+ call <SID>Tex_CounterMenus('theCounters', 'thetotalnumber')
+ " }}}
+ " Type {{{
+ call <SID>Tex_CounterMenus('Type', 'alph')
+ call <SID>Tex_CounterMenus('Type', 'Alph')
+ call <SID>Tex_CounterMenus('Type', 'arabic')
+ call <SID>Tex_CounterMenus('Type', 'roman')
+ call <SID>Tex_CounterMenus('Type', 'Roman')
+ " }}}
+endif
+
+" ==============================================================================
+" Various
+" ==============================================================================
+if g:Tex_Menus
+ " Various {{{
+ call <SID>Tex_VariousMenus('ref{}' , '\ref{<++>}<++>')
+ call <SID>Tex_VariousMenus('pageref{}' , '\pageref{<++>}<++>')
+ call <SID>Tex_VariousMenus('label{}' , '\label{<++>}<++>')
+ call <SID>Tex_VariousMenus('footnote{}' , '\footnote{<++>}<++>')
+ call <SID>Tex_VariousMenus('footnotemark{}', '\footnotemark{<++>}<++>')
+ call <SID>Tex_VariousMenus('footnotemark{}', '\footnotetext{<++>}<++>')
+ call <SID>Tex_VariousMenus('cite{}' , '\cite{<++>}<++>')
+ call <SID>Tex_VariousMenus('nocite{}' , '\nocite{<++>}<++>')
+ " }}}
+endif
+
+if g:Tex_CatchVisMapErrors
+ exe "vnoremap ".g:Tex_Leader." :\<C-u>call ExecMap('".g:Tex_Leader."', 'v')\<CR>"
+endif
+" this is for avoiding reinclusion of imaps from next time on.
+let s:doneOnce = 1
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/envmacros.vim b/.vim/ftplugin/latex-suite/envmacros.vim
new file mode 100644
index 0000000..2f41a27
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/envmacros.vim
@@ -0,0 +1,1167 @@
+"=============================================================================
+" File: envmacros.vim
+" Author: Mikolaj Machowski
+" Created: Tue Apr 23 08:00 PM 2002 PST
+" CVS Header: $Id: envmacros.vim 997 2006-03-20 09:45:45Z srinathava $
+" Description: mappings/menus for environments.
+"=============================================================================
+
+if !g:Tex_EnvironmentMaps && !g:Tex_EnvironmentMenus
+ finish
+endif
+
+exe 'so '.expand('<sfile>:p:h').'/wizardfuncs.vim'
+
+nmap <silent> <script> <plug> i
+imap <silent> <script> <C-o><plug> <Nop>
+
+" Define environments for IMAP evaluation " {{{
+let s:figure = "\\begin{figure}[<+htpb+>]\<cr>\\begin{center}\<cr>\\psfig{figure=<+eps file+>}\<cr>\\end{center}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>"
+let s:figure_graphicx = "\\begin{figure}[<+htpb+>]\<cr>\\begin{center}\<cr>\\includegraphics{<+file+>}\<cr>\\end{center}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>"
+let s:minipage = "\\begin{minipage}[<+tb+>]{<+width+>}\<cr><++>\<cr>\\end{minipage}<++>"
+let s:picture = "\\begin{picture}(<+width+>, <+height+>)(<+xoff+>,<+yoff+>)\<cr>\\put(<+xoff+>,<+yoff+>){\\framebox(<++>,<++>){<++>}}\<cr>\\end{picture}<++>"
+let s:list = "\\begin{list}{<+label+>}{<+spacing+>}\<cr>\\item <++>\<cr>\\end{list}<++>"
+let s:table = "\\begin{table}\<cr>\\centering\<cr>\\begin{tabular}{<+dimensions+>}\<cr><++>\<cr>\\end{tabular}\<cr>\\caption{<+Caption text+>}\<cr>\\label{tab:<+label+>}\<cr>\\end{table}<++>"
+let s:array = "\\left<++>\<cr>\\begin{array}{<+dimension+>}\<cr><+elements+>\<cr>\\end{array}\<cr>\\right<++>"
+let s:description ="\\begin{description}\<cr>\\item[<+label+>]<++>\<cr>\\end{description}<++>"
+let s:document = "\\documentclass[<+options+>]{<+class+>}\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}"
+let s:tabular = "\\begin{tabular}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular}"
+let s:tabular_star = "\\begin{tabular*}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular*}"
+let s:frame = "\\begin{frame}{<+title>}\<cr><++>\<cr>\\end{frame}<++>"
+
+" }}}
+" define environments with special behavior in line wise selection. {{{
+if !exists('s:vis_center_left')
+ let s:vis_center_left = '\centerline{'
+ let s:vis_center_right = '}'
+
+ let s:vis_verbatim_left = '\verb\|'
+ let s:vis_verbatim_right = '\|'
+
+ let s:vis_flushright_left = '{\raggedright '
+ let s:vis_flushright_right = '}'
+
+ let s:vis_fushleft_left = '{\raggedleft '
+ let s:vis_fushleft_right = '}'
+
+ let s:vis_lrbox_left = '\sbox{'
+ let s:vis_lrbox_right = '}'
+endif
+" }}}
+" Tex_EnvMacros: sets up maps and menus for environments {{{
+" Description:
+function! <SID>Tex_EnvMacros(lhs, submenu, name)
+
+ let extra = ''
+ if a:submenu =~ 'Lists'
+ let extra = '\item '
+ endif
+
+ let vright = ''
+ let vleft = ''
+ if exists('s:vis_'.a:name.'_right')
+ let vright = s:vis_{a:name}_right
+ let vleft = s:vis_{a:name}_left
+ endif
+ let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>"
+ let location = g:Tex_EnvMenuLocation.a:submenu.a:name.'<tab>'
+
+ if a:lhs != ''
+
+ let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
+ let location = location.a:lhs.'\ ('.vlhs.')'
+
+ if g:Tex_EnvironmentMaps && !exists('s:doneOnce')
+ call IMAP(a:lhs, "\<C-r>=Tex_PutEnvironment('".a:name."')\<CR>", 'tex')
+ exec 'vnoremap <silent> '.vlhs.' '.vrhs
+ endif
+
+ endif
+
+ if g:Tex_Menus && g:Tex_EnvironmentMenus && has("gui_running")
+ exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>'
+ exe 'vmenu '.location.' '.vrhs
+ endif
+
+endfunction
+
+" }}}
+" Tex_SpecialMacros: macros with special right hand sides {{{
+" Description:
+function! <SID>Tex_SpecialMacros(lhs, submenu, name, irhs, ...)
+
+ let wiz = 1
+ if a:0 > 0 && a:1 == 0
+ let wiz = 0
+ endif
+
+ let location = g:Tex_EnvMenuLocation.a:submenu.a:name
+
+ let vright = ''
+ let vleft = ''
+ if exists('s:vis_'.a:name.'_right')
+ let vright = s:vis_{a:name}_right
+ let vleft = s:vis_{a:name}_left
+ endif
+ let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>"
+
+ if a:lhs != ''
+
+ let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
+ let location = location.'<tab>'.a:lhs.'\ ('.vlhs.')'
+
+ if g:Tex_EnvironmentMaps && !exists('s:doneOnce')
+ call IMAP(a:lhs, a:irhs, 'tex')
+ exec 'vnoremap '.vlhs.' '.vrhs
+ endif
+
+ endif
+
+ if g:Tex_Menus && g:Tex_EnvironmentMenus
+ if wiz
+ exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>'
+ else
+ exe 'amenu '.location." <plug><C-r>=IMAP_PutTextWithMovement('".a:irhs."')<CR>"
+ endif
+ exe 'vmenu '.location.' '.vrhs
+ endif
+
+endfunction " }}}
+" Tex_SectionMacros: creates section maps and menus {{{
+" Description:
+function! <SID>Tex_SectionMacros(lhs, name)
+
+ let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
+ let vrhs = "\<C-\\>\<C-N>:call VEnclose('\\".a:name."{', '}', '', '')<CR>"
+
+ if g:Tex_SectionMaps && !exists('s:doneOnce')
+ exe 'vnoremap '.vlhs.' '.vrhs
+ call IMAP (a:lhs, "\\".a:name.'{<++>}<++>', 'tex')
+ endif
+
+ if g:Tex_Menus && g:Tex_SectionMenus
+ let location = g:Tex_EnvMenuLocation.'Sections.'.a:name.'<tab>'.a:lhs.'\ ('.vlhs.')'
+ let advlocation = g:Tex_EnvMenuLocation.'Sections.Advanced.'.a:name
+
+ let irhs = "\<C-r>=IMAP_PutTextWithMovement('\\".a:name."{<++>}<++>')\<CR>"
+
+ let advirhs = "\<C-r>=Tex_InsSecAdv('".a:name."')\<CR>"
+ let advvrhs = "\<C-\\>\<C-N>:call Tex_VisSecAdv('".a:name."')\<CR>"
+
+ exe 'amenu '.advlocation.' <plug>'.advirhs
+ exe 'vnoremenu '.advlocation." ".advvrhs
+
+ exe 'amenu '.location.' <plug>'.irhs
+ exe 'vnoremenu '.location." ".vrhs
+ endif
+endfunction " }}}
+
+" NewEnvironments {{{
+call s:Tex_SpecialMacros('', '', 'newenvironment', '\newenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', '', 'newenvironment*', '\newenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', '', 'renewenvironment', '\renewenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', '', 'renewenvironment*', '\renewenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0)
+" }}}
+" Environments specific commands {{{
+call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&item', '\item', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', 'i&tem[]', '\item[<++>]<++>', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&bibitem{}', '\bibitem{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&=', '\=', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&>', '\>', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&\\\\', '\\', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&+', '\+', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&-', '\-', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "\\\'", "\\\'", 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&`', '\`', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&kill', '\kill', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&makron\ \\CHAR=', '\<++>=<++>', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "&aigu\ \\CHAR\'", "\\<++>\'<++>", 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&grave\ \\CHAR`', '\<++>`<++>', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&ushtabs', '\pushtabs', 0)
+call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&optabs', '\poptabs', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&hline', '\hline', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&cline', '\cline', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\&', '&', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\\\\', '\\', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&multicolumn{}{}{}', '\multicolumn{<++>}{<++>}{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&makelabels', '\makelabels', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&address', '\address', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&signature', '\signature', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&date', '\date', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '-sepenva4-', ' :', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&opening{}', '\opening{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&closing{}', '\closing{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&ps{}', '\ps{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', 'cc&{}', '\cc{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlyslides{}', '\onlyslides{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlynotes{}', '\onlynotes{<++>}<++>', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '-sepenva5-', ' :', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&invisible', '\invisible', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&visible', '\visible', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&settime', '\settime', 0)
+call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&addtime', '\addtime', 0)
+call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0)
+" }}}
+" Lists {{{
+call s:Tex_SpecialMacros('ELI', '&Lists.', 'list', s:list)
+call s:Tex_SpecialMacros('EDE', '&Lists.', 'description', s:description)
+call s:Tex_EnvMacros('EEN', '&Lists.', 'enumerate')
+call s:Tex_EnvMacros('EIT', '&Lists.', 'itemize')
+call s:Tex_EnvMacros('ETI', '&Lists.', 'theindex')
+call s:Tex_EnvMacros('ETL', '&Lists.', 'trivlist')
+" }}}
+" Tables {{{
+call s:Tex_SpecialMacros('ETE', '&Tables.', 'table', s:table)
+call s:Tex_EnvMacros('ETG', '&Tables.', 'tabbing')
+call s:Tex_EnvMacros('', '&Tables.', 'table*')
+call s:Tex_EnvMacros('', '&Tables.', 'table2')
+call s:Tex_SpecialMacros('ETR', '&Tables.', 'tabular', s:tabular)
+call s:Tex_SpecialMacros('', '&Tables.', 'tabular*', s:tabular_star)
+" }}}
+" Math {{{
+call s:Tex_EnvMacros('EAR', '&Math.', 'array')
+call s:Tex_EnvMacros('EDM', '&Math.', 'displaymath')
+call s:Tex_EnvMacros('EEA', '&Math.', 'eqnarray')
+call s:Tex_EnvMacros('', '&Math.', 'eqnarray*')
+call s:Tex_EnvMacros('EEQ', '&Math.', 'equation')
+call s:Tex_EnvMacros('EMA', '&Math.', 'math')
+" }}}
+" Structure {{{
+call s:Tex_SpecialMacros('EAR', 'Math.', 'array', s:array)
+call s:Tex_EnvMacros('EAB', '&Structure.', 'abstract')
+call s:Tex_EnvMacros('EAP', '&Structure.', 'appendix')
+call s:Tex_EnvMacros('ECE', '&Structure.', 'center')
+call s:Tex_EnvMacros('EDO', '&Structure.', 'document')
+call s:Tex_EnvMacros('EFC', '&Structure.', 'filecontents')
+call s:Tex_EnvMacros('', '&Structure.', 'filecontents*')
+call s:Tex_EnvMacros('EFL', '&Structure.', 'flushleft')
+call s:Tex_EnvMacros('EFR', '&Structure.', 'flushright')
+call s:Tex_EnvMacros('EQN', '&Structure.', 'quotation')
+call s:Tex_EnvMacros('EQE', '&Structure.', 'quote')
+call s:Tex_EnvMacros('ESB', '&Structure.', 'sloppybar')
+call s:Tex_EnvMacros('ETI', '&Structure.', 'theindex')
+call s:Tex_EnvMacros('ETP', '&Structure.', 'titlepage')
+call s:Tex_EnvMacros('EVM', '&Structure.', 'verbatim')
+call s:Tex_EnvMacros('', '&Structure.', 'verbatim*')
+call s:Tex_EnvMacros('EVE', '&Structure.', 'verse')
+call s:Tex_EnvMacros('ETB', '&Structure.', 'thebibliography')
+call s:Tex_SpecialMacros('', '&Structure.', '-sepstruct0-', ':', 0)
+call s:Tex_EnvMacros('ENO', '&Structure.', 'note')
+call s:Tex_EnvMacros('EOV', '&Structure.', 'overlay')
+call s:Tex_EnvMacros('ESL', '&Structure.', 'slide')
+" }}}
+" Sections {{{
+call s:Tex_SectionMacros('SPA', 'part')
+call s:Tex_SectionMacros('SCH', 'chapter')
+call s:Tex_SectionMacros('SSE', 'section')
+call s:Tex_SectionMacros('SSS', 'subsection')
+call s:Tex_SectionMacros('SS2', 'subsubsection')
+call s:Tex_SectionMacros('SPG', 'paragraph')
+call s:Tex_SectionMacros('SSP', 'subparagraph')
+" }}}
+" Miscellaneous {{{
+call s:Tex_SpecialMacros('', '', '-sepenv1-', ' :', 0)
+call s:Tex_SpecialMacros('EFI', '', 'figure', "\<C-r>=Tex_PutEnvironment('figure')\<CR>")
+call s:Tex_EnvMacros('', '', 'figure*')
+call s:Tex_EnvMacros('ELR', '', 'lrbox')
+call s:Tex_SpecialMacros('EMP', '', 'minipage', s:minipage)
+call s:Tex_SpecialMacros('EPI', '', 'picture', s:picture)
+" }}}
+
+if g:Tex_CatchVisMapErrors
+ exe 'vnoremap '.g:Tex_Leader2." :\<C-u>call ExecMap('".g:Tex_Leader2."', 'v')\<CR>"
+endif
+
+" ==============================================================================
+" Specialized functions for various environments
+"
+" All these functions are to be used as:
+"
+" inoremap <lhs> <C-r>=Tex_itemize('enumerate')<CR>
+" nnoremap <lhs> i<C-r>=Tex_itemize('enumerate')<CR>
+"
+" and so on...
+" ==============================================================================
+" Tex_itemize: {{{
+function! Tex_itemize(env)
+ return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr>\\item <++>\<cr>\\end{".a:env."}<++>")
+endfunction
+" }}}
+" Tex_description: {{{
+function! Tex_description(env)
+ if g:Tex_UseMenuWizard == 1
+ let itlabel = input('(Optional) Item label? ')
+ if itlabel != ''
+ let itlabel = '['.itlabel.']'
+ endif
+ return IMAP_PutTextWithMovement("\\begin{description}\<cr>\\item".itlabel." <++>\<cr>\\end{description}<++>")
+ else
+ return IMAP_PutTextWithMovement(s:description)
+ endif
+endfunction
+" }}}
+" Tex_figure: {{{
+function! Tex_figure(env)
+ if g:Tex_UseMenuWizard == 1
+ let flto = input('Float to (htbp)? ')
+ let caption = input('Caption? ')
+ let center = input('Center ([y]/n)? ')
+ let label = input('Label (for use with \ref)? ')
+ " additional to AUC Tex since my pics are usually external files
+ let pic = input('Name of Pic-File? ')
+ if flto != ''
+ let flto = '['.flto."]\<cr>"
+ else
+ let flto = "\<cr>"
+ endif
+ if pic != ''
+ let pic = '\input{'.pic."}\<cr>"
+ else
+ let pic = "<++>\<cr>"
+ endif
+ if caption != ''
+ let caption = '\caption{'.caption."}\<cr>"
+ endif
+ if label != ''
+ let label = '\label{fig:'.label."}\<cr>"
+ endif
+ if center == 'y'
+ let centr = '\begin{center}' . "\<cr>"
+ let centr = centr . pic
+ let centr = centr . caption
+ let centr = centr . label
+ let centr = centr . '\end{center}' . "\<cr>"
+ else
+ let centr = pic
+ let centr = centr . caption
+ let centr = centr . label
+ endif
+ let figure = '\begin{'.a:env.'}'.flto
+ let figure = figure . centr
+ let figure = figure . '\end{'.a:env.'}'
+ return IMAP_PutTextWithMovement(figure)
+ else
+ if g:Tex_package_detected =~ '\<graphicx\>'
+ return IMAP_PutTextWithMovement(s:figure_graphicx)
+ else
+ return IMAP_PutTextWithMovement(s:figure)
+ endif
+ endif
+endfunction
+" }}}
+" Tex_table: {{{
+function! Tex_table(env)
+ if g:Tex_UseMenuWizard == 1
+ let flto = input('Float to (htbp)? ')
+ let caption = input('Caption? ')
+ let center = input('Center (y/n)? ')
+ let label = input('Label? ')
+ if flto != ''
+ let flto ='['.flto."]\<cr>"
+ else
+ let flto = ''
+ endif
+ let ret='\begin{table}'.flto
+ if center == 'y'
+ let ret=ret."\\begin{center}\<cr>"
+ endif
+ let foo = '\begin{tabular}'
+ let pos = input('(Optional) Position (t b)? ')
+ if pos != ''
+ let foo = foo.'['.pos.']'
+ else
+ let foo = foo."\<cr>"
+ endif
+ let format = input("Format ( l r c p{width} | @{text} )? ")
+ if format == ''
+ let format = '<++>'
+ endif
+ let ret = ret.foo.'{'.format."}\<cr><++>\<cr>\\end{tabular}<++>\<cr>"
+ if center == 'y'
+ let ret=ret."\\end{center}\<cr>"
+ endif
+ if caption != ''
+ let ret=ret.'\caption{'.caption."}\<cr>"
+ endif
+ if label != ''
+ let ret=ret.'\label{tab:'.label."}\<cr>"
+ endif
+ let ret=ret.'\end{table}<++>'
+ return IMAP_PutTextWithMovement(ret)
+ else
+ return IMAP_PutTextWithMovement(s:table)
+ endif
+endfunction
+" }}}
+" Tex_tabular: {{{
+function! Tex_tabular(env)
+ if g:Tex_UseMenuWizard == 1
+ let pos = input('(Optional) Position (t b)? ')
+ let format = input("Format ( l r c p{width} | @{text} )? ")
+ if pos != ''
+ let pos = '['.pos.']'
+ endif
+ if format != ''
+ let format = '{'.format.'}'
+ endif
+ return IMAP_PutTextWithMovement('\begin{'.a:env.'}'.pos.format."\<cr> \<cr>\\end{".a:env.'}<++>')
+ else
+ return IMAP_PutTextWithMovement('\begin{'.a:env.'}[<+position+>]{<+format+>}'."\<cr><++>\<cr>\\end{".a:env.'}<++>')
+ endif
+endfunction
+" }}}
+" Tex_eqnarray: {{{
+function! Tex_eqnarray(env)
+ if g:Tex_UseMenuWizard == 1
+ if a:env !~ '\*'
+ let label = input('Label? ')
+ if label != ''
+ let arrlabel = '\label{'.label."}\<cr>"
+ else
+ let arrlabel = ''
+ endif
+ else
+ let arrlabel = ''
+ endif
+ else
+ if a:env !~ '\*'
+ let arrlabel = "\\label{<++>}\<cr>"
+ else
+ let arrlabel = ""
+ endif
+ endif
+ return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>".arrlabel."\\end{".a:env."}<++>")
+endfunction
+" }}}
+" Tex_list: {{{
+function! Tex_list(env)
+ if g:Tex_UseMenuWizard == 1
+ let label = input('Label (for \item)? ')
+ if label != ''
+ let label = '{'.label.'}'
+ let addcmd = input('Additional commands? ')
+ if addcmd != ''
+ let label = label . '{'.addcmd.'}'
+ endif
+ else
+ let label = ''
+ endif
+ return IMAP_PutTextWithMovement('\begin{list}'.label."\<cr>\\item \<cr>\\end{list}<++>")
+ else
+ return IMAP_PutTextWithMovement(s:list)
+ endif
+endfunction
+" }}}
+" Tex_document: {{{
+function! Tex_document(env)
+ if g:Tex_UseMenuWizard == 1
+ let dstyle = input('Document style? ')
+ let opts = input('(Optional) Options? ')
+ let foo = '\documentclass'
+ if opts == ''
+ let foo = foo.'{'.dstyle.'}'
+ else
+ let foo = foo.'['.opts.']'.'{'.dstyle.'}'
+ endif
+ return IMAP_PutTextWithMovement(foo."\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}")
+ else
+ return IMAP_PutTextWithMovement(s:document)
+ endif
+endfunction
+" }}}
+" Tex_minipage: {{{
+function! Tex_minipage(env)
+ if g:Tex_UseMenuWizard == 1
+ let foo = '\begin{minipage}'
+ let pos = input('(Optional) Position (t b)? ')
+ let width = input('Width? ')
+ if pos == ''
+ let foo = foo.'{'.width.'}'
+ else
+ let foo = foo.'['.pos.']{'.width.'}'
+ endif
+ return IMAP_PutTextWithMovement(foo."\<cr><++>\<cr>\\end{minipage}<++>")
+ else
+ return IMAP_PutTextWithMovement(s:minipage)
+ endif
+endfunction
+" }}}
+" Tex_thebibliography: {{{
+function! Tex_thebibliography(env)
+ if g:Tex_UseMenuWizard == 1
+ " AUC Tex: "Label for BibItem: 99"
+ let indent = input('Indent for BibItem? ')
+ let foo = '{'.indent.'}'
+ let biblabel = input('(Optional) Bibitem label? ')
+ let key = input('Add key? ')
+ let bar = '\bibitem'
+ if biblabel != ''
+ let bar = bar.'['.biblabel.']'
+ endif
+ let bar = bar.'{'.key.'}'
+ return IMAP_PutTextWithMovement('\begin{thebibliography}'.foo."\<cr>".bar." \<cr>\\end{thebibliography}<++>\<Up>")
+ else
+ return IMAP_PutTextWithMovement(
+ \ "\\begin{thebibliography}\<CR>".
+ \ "\\item[<+biblabel+>]{<+bibkey+>} <++>\<CR>".
+ \ "<++>\<CR>".
+ \ "\\end{thebibliography}<++>")
+ endif
+endfunction
+" }}}
+
+" ==============================================================================
+" Contributions / suggestions from Carl Mueller (auctex.vim)
+" ==============================================================================
+" PromptForEnvironment: prompts for an environment {{{
+" Description:
+function! PromptForEnvironment(ask)
+ return Tex_ChooseFromPrompt(
+ \ a:ask."\n" .
+ \ Tex_CreatePrompt(g:Tex_PromptedEnvironments, 2, ",") .
+ \ "\nEnter nae or number of environment :",
+ \ g:Tex_PromptedEnvironments, ",")
+endfunction " }}}
+" Tex_DoEnvironment: fast insertion of environments {{{
+" Description:
+" The menus call this function with an argument (the name of the environment
+" to insert). The maps call this without any arguments. In this case, it
+" prompts for an environment to enter if the current line is empty. If
+" called without arguments and there is a word on the current line, then use
+" that as the name of a new environment.
+function! Tex_DoEnvironment(...)
+ if a:0 < 1
+ let env = matchstr(getline('.'), '^\s*\zs\w*\*\=\ze\s*$')
+ " If in current line is more than one word or in visual mode
+ " ignore contents of line and prompt for environment
+ if env == '' || (exists('s:isvisual') && s:isvisual == 'yes')
+ let env = PromptForEnvironment('Choose which environment to insert: ')
+ if env != ''
+ return Tex_PutEnvironment(env)
+ else
+ return ''
+ endif
+ else
+ " delete the word on the line into the blackhole register.
+ normal! 0"_D
+ return Tex_PutEnvironment(env)
+ endif
+ else
+ return Tex_PutEnvironment(a:1)
+ endif
+endfunction " }}}
+" Tex_PutEnvironment: calls various specialized functions {{{
+" Description:
+" Based on input argument, it calls various specialized functions.
+function! Tex_PutEnvironment(env)
+ if exists("s:isvisual") && s:isvisual == "yes"
+ let s:isvisual = 'no'
+ if a:env == '\['
+ return VEnclose('', '', '\[', '\]')
+ elseif a:env == '$$'
+ return VEnclose('', '', '$$', '$$')
+ endif
+ return VEnclose('\begin{'.a:env.'}', '\end{'.a:env.'}', '\begin{'.a:env.'}', '\end{'.a:env.'}')
+ else
+ " The user can define something like
+ " let g:Tex_Env_theorem = "\\begin{theorem}\<CR><++>\<CR>\\end{theorem}"
+ " This will effectively over-write the default definition of the
+ " theorem environment which uses a \label.
+ if exists("b:Tex_Env_{'".a:env."'}")
+ return IMAP_PutTextWithMovement(b:Tex_Env_{a:env})
+ elseif exists("g:Tex_Env_{'".a:env."'}")
+ return IMAP_PutTextWithMovement(g:Tex_Env_{a:env})
+ elseif a:env =~ 'equation*\|eqnarray*\|theorem\|lemma\|equation\|eqnarray\|align\*\|align\>\|multline'
+ let g:aa = a:env
+ return Tex_eqnarray(a:env)
+ elseif a:env =~ "enumerate\\|itemize\\|theindex\\|trivlist"
+ return Tex_itemize(a:env)
+ elseif a:env =~ "table\\|table*"
+ return Tex_table(a:env)
+ elseif a:env =~ "tabular\\|tabular*\\|array\\|array*"
+ return Tex_tabular(a:env)
+ elseif exists('*Tex_'.a:env)
+ exe 'return Tex_'.a:env.'(a:env)'
+ elseif a:env == '$$'
+ return IMAP_PutTextWithMovement('$$<++>$$')
+ elseif a:env == '\['
+ return IMAP_PutTextWithMovement("\\[\<CR><++>\<CR>\\]<++>")
+ else
+ " Look in supported packages if exists template for environment
+ " given in the line
+ if exists('g:Tex_package_supported') && g:Tex_package_supported != ''
+ let i = 1
+ while Tex_Strntok(g:Tex_package_supported, ',', i) != ''
+ let checkpack = Tex_Strntok(g:Tex_package_supported, ',', i)
+ if g:TeX_package_{checkpack} =~ 'e..:'.a:env
+ if a:env =~ '*'
+ " Don't allow * to be treated as wildcard
+ let aenv = substitute(a:env, '*', '\\*', '')
+ else
+ let aenv = a:env
+ endif
+ let envcommand = matchstr(g:TeX_package_{checkpack}, '\zse..:'.aenv.'[^,]\{-}\ze,')
+ return Tex_ProcessPackageCommand(envcommand)
+ endif
+ let i = i + 1
+ endwhile
+ endif
+ " If nothing before us managed to create an environment, then just
+ " create a bare-bones environment from the name.
+ return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>\\end{".a:env."}<++>")
+ endif
+endfunction " }}}
+" Mapping the <F5> key to insert/prompt for an environment/package {{{
+" and <S-F5> to prompt/replace an environment
+"
+" g:Tex_PromptedEnvironments is a variable containing a comma seperated list
+" of environments. This list defines the prompt which latex-suite sets up when
+" the user presses <F5> on an empty line.
+"
+" Leaving this empty is equivalent to disabling the feature.
+if g:Tex_PromptedEnvironments != ''
+
+ let b:DoubleDollars = 0
+
+ " Provide only <plug>s here. main.vim will create the actual maps.
+ inoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-r>=Tex_FastEnvironmentInsert("no")<cr>
+ nnoremap <silent> <Plug>Tex_FastEnvironmentInsert i<C-r>=Tex_FastEnvironmentInsert("no")<cr>
+ vnoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-\><C-N>:call Tex_FastEnvironmentInsert("yes")<CR>
+ inoremap <silent> <Plug>Tex_FastEnvironmentChange <C-O>:call Tex_ChangeEnvironments()<CR>
+ nnoremap <silent> <Plug>Tex_FastEnvironmentChange :call Tex_ChangeEnvironments()<CR>
+
+ " Tex_FastEnvironmentInsert: maps <F5> to prompt for env and insert it " {{{
+ " Description:
+ " This function calculates whether we are in the preamble. If we are
+ " then inserts a \usepackage line by either reading in a word from the
+ " current line or prompting to type in one. If not in the preamble, then
+ " inserts a environment template either by reading in a word from the
+ " current line or prompting the user to choose one.
+ "
+ function! Tex_FastEnvironmentInsert(isvisual)
+
+ let start_line = line('.')
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+ let s:isvisual = a:isvisual
+
+ " decide if we are in the preamble of the document. If we are then
+ " insert a package, otherwise insert an environment.
+ "
+ if search('\\documentclass', 'bW') && search('\\begin{document}')
+
+ " If there is a \documentclass line and a \begin{document} line in
+ " the file, then a part of the file is the preamble.
+
+ " search for where the document begins.
+ let begin_line = search('\\begin{document}')
+ " if the document begins after where we are presently, then we are
+ " in the preamble.
+ if start_line < begin_line
+ " return to our original location and insert a package
+ " statement.
+ exe pos
+ return Tex_package_from_line()
+ else
+ " we are after the preamble. insert an environment.
+ exe pos
+ return Tex_DoEnvironment()
+ endif
+
+ elseif search('\\documentclass')
+ " if there is only a \documentclass but no \begin{document}, then
+ " the entire file is a preamble. Put a package.
+
+ exe pos
+ return Tex_package_from_line()
+
+ else
+ " no \documentclass, put an environment.
+
+ exe pos
+ return Tex_DoEnvironment()
+
+ endif
+
+ endfunction
+
+ " }}}
+ " Tex_package_from_line: puts a \usepackage line in the current line. " {{{
+ " Description:
+ "
+ function! Tex_package_from_line()
+ " Function Tex_PutPackage is defined in packages.vim
+ " Ignores <F5> in Visual mode
+ if s:isvisual == "yes"
+ return 0
+ else
+ let l = getline(".")
+ let pack = matchstr(l, '^\s*\zs.*')
+ normal! 0"_D
+ return Tex_pack_one(pack)
+ endif
+ endfunction
+
+ " }}}
+ " Tex_ChangeEnvironments: calls Change() to change the environment {{{
+ " Description:
+ " Finds out which environment the cursor is positioned in and changes
+ " that to the chosen new environment. This function knows the changes
+ " which need to be made to change one env to another and calls
+ " Change() with the info.
+ "
+ function! Tex_ChangeEnvironments()
+
+ let env_line = searchpair('$$\|\\[\|begin{', '', '$$\|\\]\|end{', "bn")
+
+ if env_line != 0
+ if getline(env_line) !~ 'begin{'
+ let env_name = '['
+ else
+ let env_name = matchstr(getline(env_line), 'begin{\zs.\{-}\ze}')
+ endif
+ endif
+
+ if !exists('env_name')
+ echomsg "You are not inside environment"
+ return 0
+ endif
+
+ exe 'echomsg "You are within a '.env_name.' environment."'
+ let change_env = PromptForEnvironment('What do you want to change it to? ')
+
+ if change_env == 'eqnarray'
+ call <SID>Change('eqnarray', 1, '', 1)
+ elseif change_env == 'eqnarray*'
+ call <SID>Change('eqnarray*', 0, '\\nonumber', 0)
+ elseif change_env == 'align'
+ call <SID>Change('align', 1, '', 1)
+ elseif change_env == 'align*'
+ call <SID>Change('align*', 0, '\\nonumber', 0)
+ elseif change_env == 'equation*'
+ call <SID>Change('equation*', 0, '&\|\\lefteqn{\|\\nonumber\|\\\\', 0)
+ elseif change_env == ''
+ return 0
+ else
+ call <SID>Change(change_env, 0, '', '')
+ return 0
+ endif
+
+ endfunction
+
+ " }}}
+ " Change: changes the current env to the new env {{{
+ " Description:
+ " This function needs to know the changes which need to be made while
+ " going from an old environment to a new one. This info, it gets from
+ " Tex_ChangeEnvironments
+ "
+ " env : name of the new environment.
+ " label : if 1, then insert a \label at the end of the environment.
+ " otherwise, delete any \label line found.
+ " delete : a pattern which is to be deleted from the original environment.
+ " for example, going to a eqnarray* environment means we need to
+ " delete \label's.
+ " putInNonumber : whether we need to put a \nonumber before the end of the
+ " environment.
+ function! s:Change(env, label, delete, putInNonumber)
+
+ let start_line = line('.')
+ let start_col = virtcol('.')
+
+ if a:env == '['
+ if b:DoubleDollars == 0
+ let first = '\\['
+ let second = '\\]'
+ else
+ let first = '$$'
+ let second = '$$'
+ endif
+ else
+ let first = '\\begin{' . a:env . '}'
+ let second = '\\end{' . a:env . '}'
+ endif
+
+ if b:DoubleDollars == 0
+ let bottom = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','')
+ s/\\\]\|\\end{.\{-}}/\=second/
+ let top = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','b')
+ s/\\\[\|\\begin{.\{-}}/\=first/
+ else
+ let bottom = search('\$\$\|\\end{')
+ s/\$\$\|\\end{.\{-}}/\=second/
+ let top = search('\$\$\|\\begin{','b')
+ s/\$\$\|\\begin{.\{-}}/\=first/
+ end
+ if a:delete != ''
+ exe 'silent '. top . "," . bottom . 's/' . a:delete . '//e'
+ endif
+
+ if a:putInNonumber == 1
+ exe top
+ call search('\\end\|\\\\')
+ if line('.') != bottom
+ exe '.+1,' . bottom . 's/\\\\/\\nonumber\\\\/e'
+ exe (bottom-1) . 's/\s*$/ \\nonumber/'
+ endif
+ endif
+
+ if a:label == 1
+ exe top
+ if search("\\label", "W") > bottom
+ exe top
+ let local_label = input('Label? ')
+ if local_label != ''
+ put = '\label{'.local_label.'}'
+ endif
+ normal $
+ endif
+ else
+ exe 'silent '.top . ',' . bottom . ' g/\\label/delete'
+ endif
+
+ if exists('local_label') && local_label != ''
+ exe start_line + 1.' | normal! '.start_col.'|'
+ else
+ exe start_line.' | normal! '.start_col.'|'
+ endif
+ endfunction " }}}
+
+endif
+
+" }}}
+" Map <S-F1> through <S-F4> to insert environments {{{
+if g:Tex_HotKeyMappings != ''
+
+ " SetUpHotKeys: maps <F1> through <F4> to insert environments
+ " Description:
+ function! <SID>SetUpHotKeys()
+ let i = 1
+ let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i)
+ while envname != ''
+
+ exec 'inoremap <silent> <buffer> <S-F'.i.'> <C-r>=Tex_PutEnvironment("'.envname.'")<CR>'
+
+ let i = i + 1
+ let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i)
+
+ endwhile
+
+ endfunction
+
+endif
+
+" }}}
+" Tex_SetFastEnvironmentMaps: function for setting up the <F5> and <S-F1>-<S-F4> keys {{{
+" Description: This function is made public so it can be called by the
+" SetTeXOptions() function in main.vim
+function! Tex_SetFastEnvironmentMaps()
+ if g:Tex_PromptedEnvironments != ''
+ call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'i', '<silent> <buffer>')
+ call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'n', '<silent> <buffer>')
+ call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'v', '<silent> <buffer>')
+ call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'i', '<silent> <buffer>')
+ call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'n', '<silent> <buffer>')
+ endif
+ if g:Tex_HotKeyMappings != ''
+ call s:SetUpHotKeys()
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" Contributions / Tex_InsertItem() from Johannes Tanzler
+" ==============================================================================
+" Tex_GetCurrentEnv: gets the current environment in which the cursor lies {{{
+" Description: handles cases such as:
+"
+" \begin{itemize}
+" \item first item
+" \item second item
+" \begin{description}
+" \item first desc
+" \item second
+" % Tex_GetCurrentEnv will return "description" when called from here
+" \end{description}
+" \item third item
+" % Tex_GetCurrentEnv will return "itemize" when called from here
+" \end{itemize}
+" % Tex_GetCurrentEnv will return "" when called from here
+"
+" Author: Alan Schmitt
+function! Tex_GetCurrentEnv()
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+ let i = 0
+ while 1
+ let env_line = search('^[^%]*\\\%(begin\|end\){', 'bW')
+ if env_line == 0
+ " we reached the beginning of the file, so we return the empty string
+ exe pos
+ return ''
+ endif
+ if match(getline(env_line), '^[^%]*\\begin{') == -1
+ " we found a \\end, so we keep searching
+ let i = i + 1
+ continue
+ else
+ " we found a \\begin which has not been \\end'ed. we are done.
+ if i == 0
+ let env = matchstr(getline(env_line), '\\begin{\zs.\{-}\ze}')
+ exe pos
+ return env
+ else
+ " this \\begin closes a \\end, continue searching.
+ let i = i - 1
+ continue
+ endif
+ endif
+ endwhile
+endfunction
+" }}}
+" Tex_InsertItem: insert \item into a list {{{
+" Description: Find last \begin line, extract env name, return to the start
+" position and insert proper \item, depending on env name.
+" Env names are stored in g: variables it can be used by
+" package files.
+
+TexLet g:Tex_ItemStyle_itemize = '\item '
+TexLet g:Tex_ItemStyle_enumerate = '\item '
+TexLet g:Tex_ItemStyle_theindex = '\item '
+TexLet g:Tex_ItemStyle_thebibliography = '\item[<+biblabel+>]{<+bibkey+>} <++>'
+TexLet g:Tex_ItemStyle_description = '\item[<+label+>] <++>'
+
+function! Tex_InsertItem()
+ " Get current enclosing environment
+ let env = Tex_GetCurrentEnv()
+
+ if exists('g:Tex_ItemStyle_'.env)
+ return IMAP_PutTextWithMovement(g:Tex_ItemStyle_{env})
+ else
+ return ''
+ endif
+endfunction
+" }}}
+" Tex_SetItemMaps: sets the \item inserting maps for current buffer {{{
+" Description:
+
+inoremap <script> <silent> <Plug>Tex_InsertItemOnThisLine <Esc>a<C-r>=Tex_InsertItem()<CR>
+inoremap <script> <silent> <Plug>Tex_InsertItemOnNextLine <ESC>o<C-R>=Tex_InsertItem()<CR>
+
+function! Tex_SetItemMaps()
+ if !hasmapto("<Plug>Tex_InsertItem", "i")
+ imap <buffer> <M-i> <Plug>Tex_InsertItemOnThisLine
+ endif
+ if !hasmapto("<Plug>Tex_InsertItemOnNextLine", "i")
+ imap <buffer> <C-CR> <Plug>Tex_InsertItemOnNextLine
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" Implementation of Fast Environment commands for LaTeX commands
+" ==============================================================================
+" Define certain commonly used command definitions {{{
+
+TexLet g:Tex_Com_{'newtheorem'} = '\newtheorem{<+name+>}{<+caption+>}[<+within+>]'
+TexLet g:Tex_Com_{'frac'} = '\frac{<+n+>}{<+d+>}<++>'
+
+" }}}
+" PromptForCommand: prompts for a command {{{
+" Description:
+function! PromptForCommand(ask)
+ let common_com_prompt =
+ \ Tex_CreatePrompt(g:Tex_PromptedCommands, 2, ',') . "\n" .
+ \ "Enter number or command name :"
+
+ let inp = input(a:ask."\n".common_com_prompt)
+ if inp =~ '^[0-9]\+$'
+ let com = Tex_Strntok(g:Tex_PromptedCommands, ',', inp)
+ else
+ let com = inp
+ endif
+
+ return com
+endfunction " }}}
+" Tex_DoCommand: fast insertion of commands {{{
+" Description:
+"
+function! Tex_DoCommand(isvisual)
+ " If the current line is empty or if a visual selection has been made,
+ " prompt for a new environment.
+ if getline('.') == '' || a:isvisual == 'yes'
+ let com = PromptForCommand('Choose a command to insert: ')
+ if com != ''
+ return Tex_PutCommand(com, a:isvisual)
+ else
+ return ''
+ endif
+ else
+ " We want to find out the word under the cursor without issuing
+ " any movement commands.
+ let presline = getline('.')
+ let c = col('.')
+
+ let wordbef = matchstr(strpart(presline, 0, c-1), '\k\+\*\?$')
+ let wordaft = matchstr(strpart(presline, c-1), '^\k\+\*\?')
+
+ let word = wordbef . wordaft
+ call Tex_Debug("Tex_DoCommand: wordbef = [".wordbef."], wordaft = [".wordaft."], word = [".word."]", 'env')
+
+ " We use \<Del> instead of \<Bs> because \<Bs> does not work
+ " unless bs=2
+ if word != ''
+ return substitute(wordbef, '.', "\<Left>", 'g')
+ \ . substitute(word, '.', "\<Del>", 'g')
+ \ . Tex_PutCommand(word, a:isvisual)
+ else
+ let cmd = PromptForCommand('Choose a command to insert: ')
+ if cmd != ''
+ return Tex_PutCommand(cmd, a:isvisual)
+ else
+ return ''
+ endif
+ endif
+ endif
+endfunction " }}}
+" Tex_PutCommand: calls various specialized functions {{{
+" Description:
+" Based on input argument, it calls various specialized functions.
+function! Tex_PutCommand(com, isvisual)
+ if a:isvisual == "yes"
+ if a:com == '$'
+ return VEnclose('$', '$', '$', '$')
+ elseif a:com == '\\('
+ return VEnclose('\\(', '\\)', '\\(', '\\)')
+ else
+ return VEnclose("\\".a:com.'{', '}', "\\".a:com.'{', '}')
+ endif
+ else
+ if exists('b:Tex_Com_{"'.a:com.'"}')
+ return IMAP_PutTextWithMovement(b:Tex_Com_{a:com})
+ elseif exists('g:Tex_Com_{"'.a:com.'"}')
+ return IMAP_PutTextWithMovement(g:Tex_Com_{a:com})
+ elseif a:com == '$'
+ return IMAP_PutTextWithMovement('$<++>$')
+ else
+ return IMAP_PutTextWithMovement("\\".a:com.'{<++>}<++>')
+ endif
+ endif
+endfunction " }}}
+" Mapping the <F7> key to prompt/insert for command {{{
+" and <S-F7> to prompt/replace command
+"
+" g:Tex_PromptedCommands is a variable containing a comma seperated list
+" of commands.
+"
+" Leaving this empty is equivalent to disabling the feature.
+if g:Tex_PromptedCommands != ''
+
+ let b:DoubleDollars = 0
+
+ inoremap <silent> <Plug>Tex_FastCommandInsert <C-r>=Tex_DoCommand('no')<cr>
+ nnoremap <silent> <Plug>Tex_FastCommandInsert i<C-r>=Tex_DoCommand('no')<cr>
+ vnoremap <silent> <Plug>Tex_FastCommandInsert <C-\><C-N>:call Tex_DoCommand('yes')<CR>
+
+ inoremap <silent> <Plug>Tex_FastCommandChange <C-O>:call Tex_ChangeCommand('no')<CR>
+ nnoremap <silent> <Plug>Tex_FastCommandChange :call Tex_ChangeCommand('no')<CR>
+
+ " Tex_ChangeCommand: calls ChangeCommand() to change the environment {{{
+ " Description:
+ " Finds out which environment the cursor is positioned in and changes
+ " that to the chosen new environment. This function knows the changes
+ " which need to be made to change one env to another and calls
+ " ChangeCommand() with the info.
+ "
+ function! Tex_ChangeCommand(isvisual)
+
+ let pos_com = line('.').' | normal! '.virtcol('.').'|'
+
+ let com_line = searchpair('\\\k\{-}{', '', '}', 'b')
+
+ if com_line != 0
+ normal l
+ let com_name = expand('<cword>')
+ endif
+
+ if !exists('com_name')
+ echomsg "You are not inside command"
+ exe pos_com
+ return 0
+ endif
+
+ exe 'echomsg "You are within a '.com_name.' command."'
+ let change_com = PromptForCommand('Do you want to change it to (number or name)? ')
+
+ if change_com == ''
+ exe pos_com
+ return 0
+ else
+ call <SID>ChangeCommand(change_com)
+ exe pos_com
+ return 0
+ endif
+
+ endfunction
+
+ " }}}
+ " ChangeCommand: Changes current command according to prompt menu {{{
+ " Description:
+ "
+ function! s:ChangeCommand(newcom)
+
+ exe 'normal! ct{'.a:newcom."\<Esc>"
+
+ endfunction
+ " }}}
+
+endif
+
+" }}}
+" Tex_SetFastCommandMaps: function for setting up the <F7> keys {{{
+" Description: This function is made public so it can be called by the
+" SetTeXOptions() function in main.vim
+function! Tex_SetFastCommandMaps()
+ if g:Tex_PromptedCommands != ''
+ if !hasmapto('<Plug>Tex_FastCommandInsert', 'i')
+ imap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
+ endif
+ if !hasmapto('<Plug>Tex_FastCommandInsert', 'n')
+ nmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
+ endif
+ if !hasmapto('<Plug>Tex_FastCommandChange', 'i')
+ imap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange
+ endif
+ if !hasmapto('<Plug>Tex_FastCommandChange', 'n')
+ nmap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange
+ endif
+ if !hasmapto('<Plug>Tex_FastCommandInsert', 'v')
+ vmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
+ endif
+ endif
+endfunction " }}}
+
+" SetEnvMacrosOptions: sets mappings for buffers {{{
+" " Description:
+function! <SID>SetEnvMacrosOptions()
+ if exists('b:doneTexEnvMaps')
+ return
+ endif
+ let b:doneTexEnvMaps = 1
+ if g:Tex_PromptedEnvironments != '' || g:Tex_HotKeyMappings != ''
+ call Tex_SetFastEnvironmentMaps()
+ endif
+ if g:Tex_PromptedCommands != ''
+ call Tex_SetFastCommandMaps()
+ endif
+ call Tex_SetItemMaps()
+endfunction " }}}
+" Catch the Filetype event so we set maps for each buffer {{{
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('envmacros.vim: Catching LatexSuiteFileType event', 'env') |
+ \ call s:SetEnvMacrosOptions()
+augroup END
+" }}}
+
+" this statement has to be at the end.
+let s:doneOnce = 1
+
+" vim:fdm=marker:nowrap:noet:ff=unix
diff --git a/.vim/ftplugin/latex-suite/folding.vim b/.vim/ftplugin/latex-suite/folding.vim
new file mode 100644
index 0000000..dfaa450
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/folding.vim
@@ -0,0 +1,393 @@
+"=============================================================================
+" File: folding.vim
+" Author: Srinath Avadhanula
+" modifications/additions by Zhang Linbo
+" CVS: $Id: folding.vim 997 2006-03-20 09:45:45Z srinathava $
+" Created: Tue Apr 23 05:00 PM 2002 PST
+"
+" Description: functions to interact with Syntaxfolds.vim
+"=============================================================================
+
+nnoremap <unique> <Plug>Tex_RefreshFolds :call MakeTexFolds(1)<cr>
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('folding.vim: catching LatexSuiteFileType', 'fold') |
+ \ call Tex_SetFoldOptions()
+augroup END
+
+" Tex_SetFoldOptions: sets maps for every buffer {{{
+" Description:
+function! Tex_SetFoldOptions()
+ if exists('b:doneSetFoldOptions')
+ return
+ endif
+ let b:doneSetFoldOptions = 1
+
+ setlocal foldtext=TexFoldTextFunction()
+
+ if g:Tex_Folding && g:Tex_AutoFolding
+ call MakeTexFolds(0)
+ endif
+
+ let s:ml = exists('g:mapleader') ? g:mapleader : "\\"
+
+ call Tex_MakeMap(s:ml."rf", "<Plug>Tex_RefreshFolds", 'n', '<silent> <buffer>')
+
+endfunction " }}}
+" Tex_FoldSections: creates section folds {{{
+" Author: Zhang Linbo
+" Description:
+" This function takes a comma seperated list of "sections" and creates fold
+" definitions for them. The first item is supposed to be the "shallowest" field
+" and the last is the "deepest". See g:Tex_FoldedSections for the default
+" definition of the lst input argument.
+"
+" **works recursively**
+function! Tex_FoldSections(lst, endpat)
+ let i = match(a:lst, ',')
+ if i > 0
+ let s = strpart(a:lst, 0, i)
+ else
+ let s = a:lst
+ endif
+ if s =~ '%%fakesection'
+ let s = '^\s*' . s
+ else
+ let s = '^\s*\\' . s . '\W'
+ endif
+ let endpat = s . '\|' . a:endpat
+ if i > 0
+ call Tex_FoldSections(strpart(a:lst,i+1), endpat)
+ endif
+ let endpat = '^\s*\\appendix\W\|' . endpat
+ call AddSyntaxFoldItem(s, endpat, 0, -1)
+endfunction
+" }}}
+" MakeTexFolds: function to create fold items for latex. {{{
+"
+" used in conjunction with MakeSyntaxFolds().
+" see ../plugin/syntaxFolds.vim for documentation
+function! MakeTexFolds(force)
+ if exists('g:Tex_Folding') && !g:Tex_Folding
+ return
+ endif
+ if &ft != 'tex'
+ return
+ end
+
+ " Setup folded items lists g:Tex_Foldedxxxx
+ " 1. Use default value if g:Tex_Foldedxxxxxx is not defined
+ " 2. prepend default value to g:Tex_Foldedxxxxxx if it starts with ','
+ " 3. append default value to g:Tex_Foldedxxxxxx if it ends with ','
+
+ " Folding items which are not caught in any of the standard commands,
+ " environments or sections.
+ let s = 'item,slide,preamble,<<<'
+ if !exists('g:Tex_FoldedMisc')
+ let g:Tex_FoldedMisc = s
+ elseif g:Tex_FoldedMisc[0] == ','
+ let g:Tex_FoldedMisc = s . g:Tex_FoldedMisc
+ elseif g:Tex_FoldedMisc =~ ',$'
+ let g:Tex_FoldedMisc = g:Tex_FoldedMisc . s
+ endif
+
+ " By default do not fold any commands. It looks like trying to fold
+ " commands is a difficult problem since commands can be arbitrarily nested
+ " and the end patterns are not unique unlike the case of environments.
+ " For this to work well, we need a regexp which will match a line only if
+ " a command begins on that line but does not end on that line. This
+ " requires a regexp which will match unbalanced curly braces and that is
+ " apparently not doable with regexps.
+ let s = ''
+ if !exists('g:Tex_FoldedCommands')
+ let g:Tex_FoldedCommands = s
+ elseif g:Tex_FoldedCommands[0] == ','
+ let g:Tex_FoldedCommands = s . g:Tex_FoldedCommands
+ elseif g:Tex_FoldedCommands =~ ',$'
+ let g:Tex_FoldedCommands = g:Tex_FoldedCommands . s
+ endif
+
+ let s = 'verbatim,comment,eq,gather,align,figure,table,thebibliography,'
+ \. 'keywords,abstract,titlepage'
+ if !exists('g:Tex_FoldedEnvironments')
+ let g:Tex_FoldedEnvironments = s
+ elseif g:Tex_FoldedEnvironments[0] == ','
+ let g:Tex_FoldedEnvironments = s . g:Tex_FoldedEnvironments
+ elseif g:Tex_FoldedEnvironments =~ ',$'
+ let g:Tex_FoldedEnvironments = g:Tex_FoldedEnvironments . s
+ endif
+
+ if !exists('g:Tex_FoldedSections')
+ let g:Tex_FoldedSections = 'part,chapter,section,%%fakesection,'
+ \. 'subsection,subsubsection,paragraph'
+ endif
+
+ " the order in which these calls are made decides the nestedness. in
+ " latex, a table environment will always be embedded in either an item or
+ " a section etc. not the other way around. so we first fold up all the
+ " tables. and then proceed with the other regions.
+
+ let b:numFoldItems = 0
+
+ " ========================================================================
+ " How to add new folding items {{{
+ " ========================================================================
+ "
+ " Each of the following function calls defines a syntax fold region. Each
+ " definition consists of a call to the AddSyntaxFoldItem() function.
+ "
+ " The order in which the folds are defined is important. Juggling the
+ " order of the function calls will create havoc with folding. The
+ " "deepest" folding item needs to be called first. For example, if
+ " the \begin{table} environment is a subset (or lies within) the \section
+ " environment, then add the definition for the \table first.
+ "
+ " The AddSyntaxFoldItem() function takes either 4 or 6 arguments. When it
+ " is called with 4 arguments, it is equivalent to calling it with 6
+ " arguments with the last two left blank (i.e as empty strings)
+ "
+ " The explanation for each argument is as follows:
+ " startpat: a line matching this pattern defines the beginning of a fold.
+ " endpat : a line matching this pattern defines the end of a fold.
+ " startoff: this is the offset from the starting line at which folding will
+ " actually start
+ " endoff : like startoff, but gives the offset of the actual fold end from
+ " the line satisfying endpat.
+ " startoff and endoff are necessary when the folding region does
+ " not have a specific end pattern corresponding to a start
+ " pattern. for example in latex,
+ " \begin{section}
+ " defines the beginning of a section, but its not necessary to
+ " have a corresponding
+ " \end{section}
+ " the section is assumed to end 1 line _before_ another section
+ " starts.
+ " startskip: a pattern which defines the beginning of a "skipped" region.
+ "
+ " For example, suppose we define a \itemize fold as follows:
+ " startpat = '^\s*\\item',
+ " endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+ " startoff = 0,
+ " endoff = -1
+ "
+ " This defines a fold which starts with a line beginning with an
+ " \item and ending one line before a line beginning with an
+ " \item or \end{enumerate} etc.
+ "
+ " Then, as long as \item's are not nested things are fine.
+ " However, once items begin to nest, the fold started by one
+ " \item can end because of an \item in an \itemize
+ " environment within this \item. i.e, the following can happen:
+ "
+ " \begin{itemize}
+ " \item Some text <------- fold will start here
+ " This item will contain a nested item
+ " \begin{itemize} <----- fold will end here because next line contains \item...
+ " \item Hello
+ " \end{itemize} <----- ... instead of here.
+ " \item Next item of the parent itemize
+ " \end{itemize}
+ "
+ " Therefore, in order to completely define a folding item which
+ " allows nesting, we need to also define a "skip" pattern.
+ " startskip and end skip do that.
+ " Leave '' when there is no nesting.
+ " endskip: the pattern which defines the end of the "skip" pattern for
+ " nested folds.
+ "
+ " Example:
+ " 1. A syntax fold region for a latex section is
+ " startpat = "\\section{"
+ " endpat = "\\section{"
+ " startoff = 0
+ " endoff = -1
+ " startskip = ''
+ " endskip = ''
+ " Note that the start and end patterns are thus the same and endoff has a
+ " negative value to capture the effect of a section ending one line before
+ " the next starts.
+ " 2. A syntax fold region for the \itemize environment is:
+ " startpat = '^\s*\\item',
+ " endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+ " startoff = 0,
+ " endoff = -1,
+ " startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
+ " endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
+ " Note the use of startskip and endskip to allow nesting.
+ "
+ "
+ " }}}
+ " ========================================================================
+
+ " {{{ comment lines
+ if g:Tex_FoldedMisc =~ '\<comments\>'
+ call AddSyntaxFoldItem (
+ \ '^%\([^%]\|[^f]\|[^a]\|[^k]\|[^e]\)',
+ \ '^[^%]',
+ \ 0,
+ \ -1
+ \ )
+ endif
+ " }}}
+
+ " {{{ items
+ if g:Tex_FoldedMisc =~ '\<item\>'
+ call AddSyntaxFoldItem (
+ \ '^\s*\\item',
+ \ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+ \ 0,
+ \ -1,
+ \ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
+ \ '^\s*\\end{\(enumerate\|itemize\|description\)}'
+ \ )
+ endif
+ " }}}
+
+ " {{{ title
+ if g:Tex_FoldedMisc =~ '\<title\>'
+ call AddSyntaxFoldItem (
+ \ '^\s*\\title\W',
+ \ '^\s*\\maketitle',
+ \ 0,
+ \ 0
+ \ )
+ endif
+ " }}}
+
+ " Commands and Environments {{{
+ " Fold the commands and environments in 2 passes.
+ let pass = 0
+ while pass < 2
+ if pass == 0
+ let lst = g:Tex_FoldedCommands
+ else
+ let lst = g:Tex_FoldedEnvironments
+ endif
+ while lst != ''
+ let i = match(lst, ',')
+ if i > 0
+ let s = strpart(lst, 0, i)
+ let lst = strpart(lst, i+1)
+ else
+ let s = lst
+ let lst = ''
+ endif
+ if s != ''
+ if pass == 0
+ " NOTE: This pattern ensures that a command which is
+ " terminated on the same line will not start a fold.
+ " However, it will also refuse to fold certain commands
+ " which have not terminated. eg:
+ " \commandname{something \bf{text} and
+ " will _not_ start a fold.
+ " In other words, the pattern is safe, but not exact.
+ call AddSyntaxFoldItem('^\s*\\'.s.'{[^{}]*$','^[^}]*}',0,0)
+ else
+ call AddSyntaxFoldItem('^\s*\\begin{'.s,'^\s*\\end{'.s,0,0)
+ endif
+ endif
+ endwhile
+ let pass = pass + 1
+ endwhile
+ " }}}
+
+ " Sections {{{
+ if g:Tex_FoldedSections != ''
+ call Tex_FoldSections(g:Tex_FoldedSections,
+ \ '^\s*\\frontmatter\|^\s*\\mainmatter\|^\s*\\backmatter\|'
+ \. '^\s*\\begin{thebibliography\|>>>\|^\s*\\endinput\|'
+ \. '^\s*\\begin{slide\|^\s*\\end{document')
+ endif
+ " }}}
+
+ " {{{ slide
+ if g:Tex_FoldedMisc =~ '\<slide\>'
+ call AddSyntaxFoldItem (
+ \ '^\s*\\begin{slide',
+ \ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
+ \ 0,
+ \ 0
+ \ )
+ endif
+ " }}}
+
+ " {{{ preamble
+ if g:Tex_FoldedMisc =~ '\<preamble\>'
+ call AddSyntaxFoldItem (
+ \ '^\s*\\document\(class\|style\).*{',
+ \ '^\s*\\begin{document}',
+ \ 0,
+ \ -1
+ \ )
+ endif
+ " }}}
+
+ " Manually folded regions {{{
+ if g:Tex_FoldedMisc =~ '\(^\|,\)<<<\(,\|$\)'
+ call AddSyntaxFoldItem (
+ \ '<<<',
+ \ '>>>',
+ \ 0,
+ \ 0
+ \ )
+ endif
+ " }}}
+
+ call MakeSyntaxFolds(a:force)
+ normal! zv
+endfunction
+
+" }}}
+" TexFoldTextFunction: create fold text for folds {{{
+function! TexFoldTextFunction()
+ let leadingSpace = matchstr(' ', ' \{,'.indent(v:foldstart).'}')
+ if getline(v:foldstart) =~ '^\s*\\begin{'
+ let header = matchstr(getline(v:foldstart),
+ \ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
+ let caption = ''
+ let label = ''
+ let i = v:foldstart
+ while i <= v:foldend
+ if getline(i) =~ '\\caption'
+ " distinguish between
+ " \caption{fulldesc} - fulldesc will be displayed
+ " \caption[shortdesc]{fulldesc} - shortdesc will be displayed
+ if getline(i) =~ '\\caption\['
+ let caption = matchstr(getline(i), '\\caption\[\zs[^\]]*')
+ let caption = substitute(caption, '\zs\]{.*}[^}]*$', '', '')
+ else
+ let caption = matchstr(getline(i), '\\caption{\zs.*')
+ let caption = substitute(caption, '\zs}[^}]*$', '', '')
+ end
+ elseif getline(i) =~ '\\label'
+ let label = matchstr(getline(i), '\\label{\zs.*')
+ let label = substitute(label, '\zs}[^}]*$', '', '')
+ end
+
+ let i = i + 1
+ endwhile
+
+ let ftxto = foldtext()
+ " if no caption found, then use the second line.
+ if caption == ''
+ let caption = getline(v:foldstart + 1)
+ end
+
+ let retText = matchstr(ftxto, '^[^:]*').': '.header.
+ \ ' ('.label.') : '.caption
+ return leadingSpace.retText
+
+ elseif getline(v:foldstart) =~ '^%' && getline(v:foldstart) !~ '^%%fake'
+ let ftxto = foldtext()
+ return leadingSpace.substitute(ftxto, ':', ': % ', '')
+ elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
+ let ftxto = leadingSpace.foldtext()
+ return substitute(ftxto, ':', ': Preamble: ', '')
+ else
+ return leadingSpace.foldtext()
+ end
+endfunction
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/macros/example b/.vim/ftplugin/latex-suite/macros/example
new file mode 100644
index 0000000..395311f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/macros/example
@@ -0,0 +1,11 @@
+% my long complicated macro. This is an example of how to set up a
+% tex-macro for latex-suite. simply type in the lines as you would in
+% latex. Place holders are allowed.
+% NOTE: if you have filetype indentation turned on, then do not do
+% formatting here. the indentation will follow automatically...
+\begin{mycomplicatedenvironment}
+\mycommand1{<++>}
+\mycommand2{<+hint2+>}
+\mycommand3{<++>}
+\mycommand4{<++>}
+\end{mycomplicatedenvironment}<++>
diff --git a/.vim/ftplugin/latex-suite/main.vim b/.vim/ftplugin/latex-suite/main.vim
new file mode 100644
index 0000000..063c6f6
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/main.vim
@@ -0,0 +1,1024 @@
+" LaTeX filetype
+" Language: LaTeX (ft=tex)
+" Maintainer: Srinath Avadhanula
+" CVS: $Id: main.vim 999 2006-03-21 05:32:37Z srinathava $
+" URL:
+
+" line continuation used here.
+let s:save_cpo = &cpo
+set cpo&vim
+
+" avoiding re-inclusion {{{
+" the avoiding re-inclusion statement is not provided here because the files
+" which call this file should in the normal course of events handle the
+" re-inclusion stuff.
+
+" we definitely dont want to run through the entire file each and every time.
+" only once to define the functions. for successive latex files, just set up
+" the folding and mappings and quit.
+if exists('s:doneFunctionDefinitions') && !exists('b:forceRedoLocalTex')
+ call s:SetTeXOptions()
+ finish
+endif
+
+let s:doneFunctionDefinitions = 1
+
+" get the place where this plugin resides for setting cpt and dict options.
+" these lines need to be outside the function.
+let s:path = expand('<sfile>:p:h')
+" set up personal defaults.
+runtime ftplugin/tex/texrc
+" set up global defaults.
+exe "so ".s:path.'/texrc'
+
+" }}}
+
+nmap <silent> <script> <plug> i
+imap <silent> <script> <C-o><plug> <Nop>
+
+" ==============================================================================
+" mappings
+" ==============================================================================
+" {{{
+" calculate the mapleader character.
+let s:ml = exists('g:mapleader') ? g:mapleader : '\'
+
+if !exists('s:doneMappings')
+ let s:doneMappings = 1
+ " short forms for latex formatting and math elements. {{{
+ " taken from auctex.vim or miktexmacros.vim
+ call IMAP ('__', '_{<++>}<++>', "tex")
+ call IMAP ('()', '(<++>)<++>', "tex")
+ call IMAP ('[]', '[<++>]<++>', "tex")
+ call IMAP ('{}', '{<++>}<++>', "tex")
+ call IMAP ('^^', '^{<++>}<++>', "tex")
+ call IMAP ('$$', '$<++>$<++>', "tex")
+ call IMAP ('==', '&=& ', "tex")
+ call IMAP ('~~', '&\approx& ', "tex")
+ call IMAP ('=~', '\approx', "tex")
+ call IMAP ('::', '\dots', "tex")
+ call IMAP ('((', '\left( <++> \right)<++>', "tex")
+ call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
+ call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
+ call IMAP (g:Tex_Leader.'^', '\hat{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'_', '\bar{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'6', '\partial', "tex")
+ call IMAP (g:Tex_Leader.'8', '\infty', "tex")
+ call IMAP (g:Tex_Leader.'/', '\frac{<++>}{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'%', '\frac{<++>}{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'@', '\circ', "tex")
+ call IMAP (g:Tex_Leader.'0', '^\circ', "tex")
+ call IMAP (g:Tex_Leader.'=', '\equiv', "tex")
+ call IMAP (g:Tex_Leader."\\",'\setminus', "tex")
+ call IMAP (g:Tex_Leader.'.', '\cdot', "tex")
+ call IMAP (g:Tex_Leader.'*', '\times', "tex")
+ call IMAP (g:Tex_Leader.'&', '\wedge', "tex")
+ call IMAP (g:Tex_Leader.'-', '\bigcap', "tex")
+ call IMAP (g:Tex_Leader.'+', '\bigcup', "tex")
+ call IMAP (g:Tex_Leader.'M', '\sum_{<++>}^{<++>}<++>', 'tex')
+ call IMAP (g:Tex_Leader.'S', '\sum_{<++>}^{<++>}<++>', 'tex')
+ call IMAP (g:Tex_Leader.'(', '\subset', "tex")
+ call IMAP (g:Tex_Leader.')', '\supset', "tex")
+ call IMAP (g:Tex_Leader.'<', '\le', "tex")
+ call IMAP (g:Tex_Leader.'>', '\ge', "tex")
+ call IMAP (g:Tex_Leader.',', '\nonumber', "tex")
+ call IMAP (g:Tex_Leader.'~', '\tilde{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.';', '\dot{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.':', '\ddot{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'2', '\sqrt{<++>}<++>', "tex")
+ call IMAP (g:Tex_Leader.'|', '\Big|', "tex")
+ call IMAP (g:Tex_Leader.'I', "\\int_{<++>}^{<++>}<++>", 'tex')
+ " }}}
+ " Greek Letters {{{
+ call IMAP(g:Tex_Leader.'a', '\alpha', 'tex')
+ call IMAP(g:Tex_Leader.'b', '\beta', 'tex')
+ call IMAP(g:Tex_Leader.'c', '\chi', 'tex')
+ call IMAP(g:Tex_Leader.'d', '\delta', 'tex')
+ call IMAP(g:Tex_Leader.'e', '\varepsilon', 'tex')
+ call IMAP(g:Tex_Leader.'f', '\varphi', 'tex')
+ call IMAP(g:Tex_Leader.'g', '\gamma', 'tex')
+ call IMAP(g:Tex_Leader.'h', '\eta', 'tex')
+ call IMAP(g:Tex_Leader.'k', '\kappa', 'tex')
+ call IMAP(g:Tex_Leader.'l', '\lambda', 'tex')
+ call IMAP(g:Tex_Leader.'m', '\mu', 'tex')
+ call IMAP(g:Tex_Leader.'n', '\nu', 'tex')
+ call IMAP(g:Tex_Leader.'p', '\pi', 'tex')
+ call IMAP(g:Tex_Leader.'q', '\theta', 'tex')
+ call IMAP(g:Tex_Leader.'r', '\rho', 'tex')
+ call IMAP(g:Tex_Leader.'s', '\sigma', 'tex')
+ call IMAP(g:Tex_Leader.'t', '\tau', 'tex')
+ call IMAP(g:Tex_Leader.'u', '\upsilon', 'tex')
+ call IMAP(g:Tex_Leader.'v', '\varsigma', 'tex')
+ call IMAP(g:Tex_Leader.'w', '\omega', 'tex')
+ call IMAP(g:Tex_Leader.'w', '\wedge', 'tex') " AUCTEX style
+ call IMAP(g:Tex_Leader.'x', '\xi', 'tex')
+ call IMAP(g:Tex_Leader.'y', '\psi', 'tex')
+ call IMAP(g:Tex_Leader.'z', '\zeta', 'tex')
+ " not all capital greek letters exist in LaTeX!
+ " reference: http://www.giss.nasa.gov/latex/ltx-405.html
+ call IMAP(g:Tex_Leader.'D', '\Delta', 'tex')
+ call IMAP(g:Tex_Leader.'F', '\Phi', 'tex')
+ call IMAP(g:Tex_Leader.'G', '\Gamma', 'tex')
+ call IMAP(g:Tex_Leader.'Q', '\Theta', 'tex')
+ call IMAP(g:Tex_Leader.'L', '\Lambda', 'tex')
+ call IMAP(g:Tex_Leader.'X', '\Xi', 'tex')
+ call IMAP(g:Tex_Leader.'Y', '\Psi', 'tex')
+ call IMAP(g:Tex_Leader.'S', '\Sigma', 'tex')
+ call IMAP(g:Tex_Leader.'U', '\Upsilon', 'tex')
+ call IMAP(g:Tex_Leader.'W', '\Omega', 'tex')
+ " }}}
+ " ProtectLetters: sets up indentity maps for things like ``a {{{
+ " " Description: If we simply do
+ " call IMAP('`a', '\alpha', 'tex')
+ " then we will never be able to type 'a' after a tex-quotation. Since
+ " IMAP() always uses the longest map ending in the letter, this problem
+ " can be avoided by creating a fake map for ``a -> ``a.
+ " This function sets up fake maps of the following forms:
+ " ``[aA] -> ``[aA] (for writing in quotations)
+ " \`[aA] -> \`[aA] (for writing diacritics)
+ " "`[aA] -> "`[aA] (for writing german quotations)
+ " It does this for all printable lower ascii characters just to make sure
+ " we dont let anything slip by.
+ function! s:ProtectLetters(first, last)
+ let i = a:first
+ while i <= a:last
+ if nr2char(i) =~ '[[:print:]]'
+ call IMAP('``'.nr2char(i), '``'.nr2char(i), 'tex')
+ call IMAP('\`'.nr2char(i), '\`'.nr2char(i), 'tex')
+ call IMAP('"`'.nr2char(i), '"`'.nr2char(i), 'tex')
+ endif
+ let i = i + 1
+ endwhile
+ endfunction
+ call s:ProtectLetters(32, 127)
+ " }}}
+ " vmaps: enclose selected region in brackets, environments {{{
+ " The action changes depending on whether the selection is character-wise
+ " or line wise. for example, selecting linewise and pressing \v will
+ " result in the region being enclosed in \begin{verbatim}, \end{verbatim},
+ " whereas in characterise visual mode, the thingie is enclosed in \verb|
+ " and |.
+ exec 'vnoremap <silent> '.g:Tex_Leader."( \<C-\\>\<C-N>:call VEnclose('\\left( ', ' \\right)', '\\left(', '\\right)')\<CR>"
+ exec 'vnoremap <silent> '.g:Tex_Leader."[ \<C-\\>\<C-N>:call VEnclose('\\left[ ', ' \\right]', '\\left[', '\\right]')\<CR>"
+ exec 'vnoremap <silent> '.g:Tex_Leader."{ \<C-\\>\<C-N>:call VEnclose('\\left\\{ ', ' \\right\\}', '\\left\\{', '\\right\\}')\<CR>"
+ exec 'vnoremap <silent> '.g:Tex_Leader."$ \<C-\\>\<C-N>:call VEnclose('$', '$', '\\[', '\\]')\<CR>"
+ " }}}
+end
+
+" }}}
+
+" ==============================================================================
+" Helper functions for debugging
+" ==============================================================================
+" Tex_Debug: appends the argument into s:debugString {{{
+" Description:
+"
+" Do not want a memory leak! Set this to zero so that latex-suite always
+" starts out in a non-debugging mode.
+if !exists('g:Tex_Debug')
+ let g:Tex_Debug = 0
+endif
+function! Tex_Debug(str, ...)
+ if !g:Tex_Debug
+ return
+ endif
+ if a:0 > 0
+ let pattern = a:1
+ else
+ let pattern = ''
+ endif
+ if !exists('s:debugString_'.pattern)
+ let s:debugString_{pattern} = ''
+ endif
+ let s:debugString_{pattern} = s:debugString_{pattern}.a:str."\n"
+
+ let s:debugString_ = (exists('s:debugString_') ? s:debugString_ : '')
+ \ . pattern.' : '.a:str."\n"
+
+ if Tex_GetVarValue('Tex_DebugLog') != ''
+ exec 'redir! >> '.Tex_GetVarValue('Tex_DebugLog')
+ silent! echo pattern.' : '.a:str
+ redir END
+ endif
+endfunction " }}}
+" Tex_PrintDebug: prings s:debugString {{{
+" Description:
+"
+function! Tex_PrintDebug(...)
+ if a:0 > 0
+ let pattern = a:1
+ else
+ let pattern = ''
+ endif
+ if exists('s:debugString_'.pattern)
+ echo s:debugString_{pattern}
+ endif
+endfunction " }}}
+" Tex_ClearDebug: clears the s:debugString string {{{
+" Description:
+"
+function! Tex_ClearDebug(...)
+ if a:0 > 0
+ let pattern = a:1
+ else
+ let pattern = ''
+ endif
+ if exists('s:debugString_'.pattern)
+ let s:debugString_{pattern} = ''
+ endif
+endfunction " }}}
+" Tex_ShowVariableValue: debugging help {{{
+" provides a way to examine script local variables from outside the script.
+" very handy for debugging.
+function! Tex_ShowVariableValue(...)
+ let i = 1
+ while i <= a:0
+ exe 'let arg = a:'.i
+ if exists('s:'.arg) ||
+ \ exists('*s:'.arg)
+ exe 'let val = s:'.arg
+ echomsg 's:'.arg.' = '.val
+ end
+ let i = i + 1
+ endwhile
+endfunction
+
+" }}}
+
+" ==============================================================================
+" Helper functions for grepping
+" ==============================================================================
+" Tex_Grep: shorthand for :grep or :vimgrep {{{
+function! Tex_Grep(string, where)
+ if v:version >= 700
+ exec 'silent! vimgrep! /'.a:string.'/ '.a:where
+ else
+ exec 'silent! grep! '.Tex_EscapeForGrep(a:string).' '.a:where
+ endif
+endfunction
+
+" }}}
+" Tex_Grepadd: shorthand for :grepadd or :vimgrepadd {{{
+function! Tex_Grepadd(string, where)
+ if v:version >= 700
+ exec 'silent! vimgrepadd! /'.a:string.'/ '.a:where
+ else
+ exec "silent! grepadd! ".Tex_EscapeForGrep(a:string).' '.a:where
+ endif
+endfunction
+
+" }}}
+" Tex_EscapeForGrep: escapes back-slashes and doublequotes the correct number of times {{{
+" Description: This command escapes the backslash and double quotes in a
+" search pattern the correct number of times so it can be used in the ``:grep``
+" command. This command is meant to be used as::
+"
+" exec "silent! grep ".Tex_EscapeForGrep(pattern)." file"
+"
+" The input argument to this function should be the string which you want
+" the external command to finally see. For example, to search for a string
+" ``'\bibitem'``, the grep command needs to be passed a string like
+" ``'\\bibitem'``. Examples::
+"
+" Tex_EscapeForGrep('\\bibitem') " correct
+" Tex_EscapeForGrep('\bibitem') " wrong
+" Tex_EscapeForGrep("\\bibitem") " wrong
+" Tex_EscapeForGrep('\<word\>') " correct
+"
+function! Tex_EscapeForGrep(string)
+ let retVal = a:string
+
+ " The shell halves the backslashes.
+ if &shell =~ 'sh'
+ let retVal = escape(retVal, "\\")
+
+ " If shellxquote is set, then the backslashes are halved yet again.
+ if &shellxquote == '"'
+ let retVal = escape(retVal, "\"\\")
+ endif
+
+ endif
+ " escape special characters which bash/cmd.exe might interpret
+ let retVal = escape(retVal, "<>")
+
+ return retVal
+endfunction " }}}
+
+" ==============================================================================
+" Uncategorized helper functions
+" ==============================================================================
+" Tex_Strntok: extract the n^th token from a list {{{
+" example: Strntok('1,23,3', ',', 2) = 23
+fun! Tex_Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun
+
+" }}}
+" Tex_CreatePrompt: creates a prompt string {{{
+" Description:
+" Arguments:
+" promptList: This is a string of the form:
+" 'item1,item2,item3,item4'
+" cols: the number of columns in the resultant prompt
+" sep: the list seperator token
+"
+" Example:
+" Tex_CreatePrompt('item1,item2,item3,item4', 2, ',')
+" returns
+" "(1) item1\t(2)item2\n(3)item3\t(4)item4"
+"
+" This string can be used in the input() function.
+function! Tex_CreatePrompt(promptList, cols, sep)
+
+ let g:listSep = a:sep
+ let num_common = GetListCount(a:promptList)
+
+ let i = 1
+ let promptStr = ""
+
+ while i <= num_common
+
+ let j = 0
+ while j < a:cols && i + j <= num_common
+ let com = Tex_Strntok(a:promptList, a:sep, i+j)
+ let promptStr = promptStr.'('.(i+j).') '.
+ \ com."\t".( strlen(com) < 4 ? "\t" : '' )
+
+ let j = j + 1
+ endwhile
+
+ let promptStr = promptStr."\n"
+
+ let i = i + a:cols
+ endwhile
+ return promptStr
+endfunction
+
+" }}}
+" Tex_CleanSearchHistory: removes last search item from search history {{{
+" Description: This function needs to be globally visible because its
+" called from outside the script during expansion.
+function! Tex_CleanSearchHistory()
+ call histdel("/", -1)
+ let @/ = histget("/", -1)
+endfunction
+nmap <silent> <script> <plug>cleanHistory :call Tex_CleanSearchHistory()<CR>
+
+" }}}
+" Tex_GetVarValue: gets the value of the variable {{{
+" Description:
+" See if a window-local, buffer-local or global variable with the given name
+" exists and if so, returns the corresponding value. If none exist, return
+" an empty string.
+function! Tex_GetVarValue(varname, ...)
+ if exists('w:'.a:varname)
+ return w:{a:varname}
+ elseif exists('b:'.a:varname)
+ return b:{a:varname}
+ elseif exists('g:'.a:varname)
+ return g:{a:varname}
+ elseif a:0 > 0
+ return a:1
+ else
+ return ''
+ endif
+endfunction " }}}
+" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
+" Description: returns the full path name of the main file.
+" This function checks for the existence of a .latexmain file
+" which might point to the location of a "main" latex file.
+" If .latexmain exists, then return the full path name of the
+" file being pointed to by it.
+"
+" Otherwise, return the full path name of the current buffer.
+"
+" You can supply an optional "modifier" argument to the
+" function, which will optionally modify the file name before
+" returning.
+" NOTE: From version 1.6 onwards, this function always trims
+" away the .latexmain part of the file name before applying the
+" modifier argument.
+function! Tex_GetMainFileName(...)
+ if a:0 > 0
+ let modifier = a:1
+ else
+ let modifier = ':p'
+ endif
+
+ " If the user wants to use his own way to specify the main file name, then
+ " use it straight away.
+ if Tex_GetVarValue('Tex_MainFileExpression') != ''
+ exec 'let retval = '.Tex_GetVarValue('Tex_MainFileExpression')
+ return retval
+ endif
+
+ let curd = getcwd()
+
+ let dirmodifier = '%:p:h'
+ let dirLast = expand(dirmodifier)
+ call Tex_CD(dirLast)
+
+ " move up the directory tree until we find a .latexmain file.
+ " TODO: Should we be doing this recursion by default, or should there be a
+ " setting?
+ while glob('*.latexmain') == ''
+ let dirmodifier = dirmodifier.':h'
+ " break from the loop if we cannot go up any further.
+ if expand(dirmodifier) == dirLast
+ break
+ endif
+ let dirLast = expand(dirmodifier)
+ call Tex_CD(dirLast)
+ endwhile
+
+ let lheadfile = glob('*.latexmain')
+ if lheadfile != ''
+ " Remove the trailing .latexmain part of the filename... We never want
+ " that.
+ let lheadfile = fnamemodify(substitute(lheadfile, '\.latexmain$', '', ''), modifier)
+ else
+ " If we cannot find any main file, just modify the filename of the
+ " current buffer.
+ let lheadfile = expand('%'.modifier)
+ endif
+
+ call Tex_CD(curd)
+
+ " NOTE: The caller of this function needs to escape spaces in the
+ " file name as appropriate. The reason its not done here is that
+ " escaping spaces is not safe if this file is to be used as part of
+ " an external command on certain platforms.
+ return lheadfile
+endfunction
+
+" }}}
+" Tex_ChooseFromPrompt: process a user input to a prompt string {{{
+" " Description:
+function! Tex_ChooseFromPrompt(dialog, list, sep)
+ let g:Tex_ASDF = a:dialog
+ let inp = input(a:dialog)
+ if inp =~ '\d\+'
+ return Tex_Strntok(a:list, a:sep, inp)
+ else
+ return inp
+ endif
+endfunction " }}}
+" Tex_ChooseFile: produces a file list and prompts for choice {{{
+" Description:
+function! Tex_ChooseFile(dialog)
+ let files = glob('*')
+ if files == ''
+ return ''
+ endif
+ let s:incnum = 0
+ echo a:dialog
+ let filenames = substitute(files, "\\v(^|\n)", "\\=submatch(0).Tex_IncrementNumber(1).' : '", 'g')
+ echo filenames
+ let choice = input('Enter Choice : ')
+ let g:choice = choice
+ if choice == ''
+ return ''
+ endif
+ if choice =~ '^\s*\d\+\s*$'
+ let retval = Tex_Strntok(files, "\n", choice)
+ else
+ let filescomma = substitute(files, "\n", ",", "g")
+ let retval = GetListMatchItem(filescomma, choice)
+ endif
+ if retval == ''
+ return ''
+ endif
+ return retval
+endfunction
+
+" }}}
+" Tex_IncrementNumber: returns an incremented number each time {{{
+" Description:
+let s:incnum = 0
+function! Tex_IncrementNumber(increm)
+ let s:incnum = s:incnum + a:increm
+ return s:incnum
+endfunction
+
+" }}}
+" Tex_ResetIncrementNumber: increments s:incnum to zero {{{
+" Description:
+function! Tex_ResetIncrementNumber(val)
+ let s:incnum = a:val
+endfunction " }}}
+" Tex_FindInRtp: check if file exists in &rtp {{{
+" Description: Checks if file exists in globpath(&rtp, ...) and cuts off the
+" rest of returned names. This guarantees that sourced file is
+" from $HOME.
+" If an optional argument is given, it specifies how to expand
+" each filename found. For example, '%:p' will return a list of
+" the complete paths to the files. By default returns trailing
+" path-names without extenions.
+" NOTE: This function is very slow when a large number of
+" matches are found because of a while loop which modifies
+" each filename found. Some speedup was acheived by using
+" a tokenizer approach rather than using Tex_Strntok which
+" would have been more obvious.
+function! Tex_FindInRtp(filename, directory, ...)
+ " how to expand each filename. ':p:t:r' modifies each filename to its
+ " trailing part without extension.
+ let expand = (a:0 > 0 ? a:1 : ':p:t:r')
+ " The pattern used... An empty filename should be regarded as '*'
+ let pattern = (a:filename != '' ? a:filename : '*')
+
+ let filelist = globpath(&rtp, 'ftplugin/latex-suite/'.a:directory.'/'.pattern)."\n"
+
+ if filelist == "\n"
+ return ''
+ endif
+
+ if a:filename != ''
+ return fnamemodify(Tex_Strntok(filelist, "\n", 1), expand)
+ endif
+
+ " Now cycle through the files modifying each filename in the desired
+ " manner.
+ let retfilelist = ''
+ let i = 1
+ while 1
+ " Extract the portion till the next newline. Then shorten the filelist
+ " by removing till the newline.
+ let nextnewline = stridx(filelist, "\n")
+ if nextnewline == -1
+ break
+ endif
+ let filename = strpart(filelist, 0, nextnewline)
+ let filelist = strpart(filelist, nextnewline+1)
+
+ " The actual modification.
+ if fnamemodify(filename, expand) != ''
+ let retfilelist = retfilelist.fnamemodify(filename, expand).","
+ endif
+ let i = i + 1
+ endwhile
+
+ return substitute(retfilelist, ',$', '', '')
+endfunction
+
+" }}}
+" Tex_GetErrorList: returns vim's clist {{{
+" Description: returns the contents of the error list available via the :clist
+" command.
+function! Tex_GetErrorList()
+ let _a = @a
+ redir @a | silent! clist | redir END
+ let errlist = @a
+ let @a = _a
+
+ if errlist =~ 'E42: '
+ let errlist = ''
+ endif
+
+ return errlist
+endfunction " }}}
+" Tex_GetTempName: get the name of a temporary file in specified directory {{{
+" Description: Unlike vim's native tempname(), this function returns the name
+" of a temporary file in the directory specified. This enables
+" us to create temporary files in a specified directory.
+function! Tex_GetTempName(dirname)
+ let prefix = 'latexSuiteTemp'
+ let slash = (a:dirname =~ '\\\|/$' ? '' : '/')
+ let i = 0
+ while filereadable(a:dirname.slash.prefix.i.'.tex') && i < 1000
+ let i = i + 1
+ endwhile
+ if filereadable(a:dirname.slash.prefix.i.'.tex')
+ echoerr "Temporary file could not be created in ".a:dirname
+ return ''
+ endif
+ return expand(a:dirname.slash.prefix.i.'.tex', ':p')
+endfunction
+" }}}
+" Tex_MakeMap: creates a mapping from lhs to rhs if rhs is not already mapped {{{
+" Description:
+function! Tex_MakeMap(lhs, rhs, mode, extraargs)
+ if !hasmapto(a:rhs, a:mode)
+ exec a:mode.'map '.a:extraargs.' '.a:lhs.' '.a:rhs
+ endif
+endfunction " }}}
+" Tex_CD: cds to given directory escaping spaces if necessary {{{
+" " Description:
+function! Tex_CD(dirname)
+ exec 'cd '.Tex_EscapeSpaces(a:dirname)
+endfunction " }}}
+" Tex_EscapeSpaces: escapes unescaped spaces from a path name {{{
+" Description:
+function! Tex_EscapeSpaces(path)
+ return substitute(a:path, '[^\\]\(\\\\\)*\zs ', '\\ ', 'g')
+endfunction " }}}
+" Tex_FindFile: finds a file in the vim's 'path' {{{
+" Description: finds a file in vim's 'path'
+function! Tex_FindFile(fname, path, suffixesadd)
+ if exists('*findfile')
+ let _suffixesadd = &suffixesadd
+ let &suffixesadd = a:suffixesadd
+ let retval = findfile(a:fname, a:path)
+ let &suffixesadd = _suffixesadd
+ else
+ " split a new window so we do not screw with the current buffer. We
+ " want to use the same filename each time so that multiple scratch
+ " buffers are not created.
+ let retval = ''
+ silent! split __HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__
+ let _suffixesadd = &suffixesadd
+ let _path = &path
+ let &suffixesadd = a:suffixesadd
+ let &path = a:path
+ exec 'silent! find '.a:fname
+ if bufname('%') != '__HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__'
+ let retval = expand('%:p')
+ end
+ silent! bdelete!
+ let &suffixesadd = _suffixesadd
+ let &path = _path
+ endif
+ return retval
+endfunction " }}}
+
+" ==============================================================================
+" Smart key-mappings
+" ==============================================================================
+" TexQuotes: inserts `` or '' instead of " {{{
+if g:Tex_SmartKeyQuote
+
+ " TexQuotes: inserts `` or '' instead of "
+ " Taken from texmacro.vim by Benji Fisher <benji@e-math.AMS.org>
+ " TODO: Deal with nested quotes.
+ " The :imap that calls this function should insert a ", move the cursor to
+ " the left of that character, then call this with <C-R>= .
+ function! s:TexQuotes()
+ let l = line(".")
+ let c = col(".")
+ let restore_cursor = l . "G" . virtcol(".") . "|"
+ normal! H
+ let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+ execute restore_cursor
+ " In math mode, or when preceded by a \, just move the cursor past the
+ " already-inserted " character.
+ if synIDattr(synID(l, c, 1), "name") =~ "^texMath"
+ \ || (c > 1 && getline(l)[c-2] == '\')
+ return "\<Right>"
+ endif
+ " Find the appropriate open-quote and close-quote strings.
+ if exists("b:Tex_SmartQuoteOpen")
+ let open = b:Tex_SmartQuoteOpen
+ elseif exists("g:Tex_SmartQuoteOpen")
+ let open = g:Tex_SmartQuoteOpen
+ else
+ let open = "``"
+ endif
+ if exists("b:Tex_SmartQuoteClose")
+ let close = b:Tex_SmartQuoteClose
+ elseif exists("g:Tex_SmartQuoteClose")
+ let close = g:Tex_SmartQuoteClose
+ else
+ let close = "''"
+ endif
+ let boundary = '\|'
+ " This code seems to be obsolete, since this script variable is never
+ " set. The idea is that some languages use ",," as an open- or
+ " close-quote string, and we want to avoid confusing ordinary ","
+ " with a quote boundary.
+ if exists("s:TeX_strictquote")
+ if( s:TeX_strictquote == "open" || s:TeX_strictquote == "both" )
+ let boundary = '\<' . boundary
+ endif
+ if( s:TeX_strictquote == "close" || s:TeX_strictquote == "both" )
+ let boundary = boundary . '\>'
+ endif
+ endif
+
+ " Eventually return q; set it to the default value now.
+ let q = open
+ let pattern =
+ \ escape(open, '\~') .
+ \ boundary .
+ \ escape(close, '\~') .
+ \ '\|^$\|"'
+
+ while 1 " Look for preceding quote (open or close), ignoring
+ " math mode and '\"' .
+ call search(pattern, "bw")
+ if synIDattr(synID(line("."), col("."), 1), "name") !~ "^texMath"
+ \ && strpart(getline('.'), col('.')-2, 2) != '\"'
+ break
+ endif
+ endwhile
+
+ " Now, test whether we actually found a _preceding_ quote; if so, is it
+ " an open quote?
+ if ( line(".") < l || line(".") == l && col(".") < c )
+ if strpart(getline("."), col(".")-1) =~ '\V\^' . escape(open, '\')
+ if line(".") == l && col(".") + strlen(open) == c
+ " Insert "<++>''<++>" instead of just "''".
+ let q = IMAP_PutTextWithMovement("<++>".close."<++>")
+ else
+ let q = close
+ endif
+ endif
+ endif
+
+ " Return to line l, column c:
+ execute restore_cursor
+ " Start with <Del> to remove the " put in by the :imap .
+ return "\<Del>" . q
+
+ endfunction
+
+endif
+" }}}
+" SmartBS: smart backspacing {{{
+if g:Tex_SmartKeyBS
+
+ " SmartBS: smart backspacing
+ " SmartBS lets you treat diacritic characters (those \'{a} thingies) as a
+ " single character. This is useful for example in the following situation:
+ "
+ " \v{s}\v{t}astn\'{y} ('happy' in Slovak language :-) )
+ " If you will delete this normally (without using smartBS() function), you
+ " must press <BS> about 19x. With function smartBS() you must press <BS> only
+ " 7x. Strings like "\v{s}", "\'{y}" are considered like one character and are
+ " deleted with one <BS>.
+ let s:smartBS_pat = Tex_GetVarValue('Tex_SmartBSPattern')
+
+ fun! s:SmartBS_pat()
+ return s:smartBS_pat
+ endfun
+
+ " This function comes from Benji Fisher <benji@e-math.AMS.org>
+ " http://vim.sourceforge.net/scripts/download.php?src_id=409
+ " (modified/patched by Lubomir Host 'rajo' <host8 AT keplerDOTfmphDOTuniba.sk>)
+ function! s:SmartBS(pat)
+ let init = strpart(getline("."), 0, col(".")-1)
+ let matchtxt = matchstr(init, a:pat)
+ if matchtxt != ''
+ let bstxt = substitute(matchtxt, '.', "\<bs>", 'g')
+ return bstxt
+ else
+ return "\<bs>"
+ endif
+ endfun
+
+endif " }}}
+" SmartDots: inserts \cdots instead of ... in math mode otherwise \ldots {{{
+" if amsmath package is detected then just use \dots and let amsmath take care
+" of it.
+if g:Tex_SmartKeyDot
+
+ function! <SID>SmartDots()
+ if strpart(getline('.'), col('.')-3, 2) == '..' &&
+ \ g:Tex_package_detected =~ '\<amsmath\>'
+ return "\<bs>\<bs>\\dots"
+ elseif synIDattr(synID(line('.'),col('.')-1,0),"name") =~ '^texMath'
+ \&& strpart(getline('.'), col('.')-3, 2) == '..'
+ return "\<bs>\<bs>\\cdots"
+ elseif strpart(getline('.'), col('.')-3, 2) == '..'
+ return "\<bs>\<bs>\\ldots"
+ else
+ return '.'
+ endif
+ endfunction
+
+endif
+" }}}
+
+" source texproject.vim before other files
+exe 'source '.s:path.'/texproject.vim'
+
+" source all the relevant files.
+exe 'source '.s:path.'/texmenuconf.vim'
+exe 'source '.s:path.'/envmacros.vim'
+exe 'source '.s:path.'/elementmacros.vim'
+
+" source utf-8 or plain math menus
+if exists("g:Tex_UseUtfMenus") && g:Tex_UseUtfMenus != 0 && has("gui_running")
+ exe 'source '.s:path.'/mathmacros-utf.vim'
+else
+ exe 'source '.s:path.'/mathmacros.vim'
+endif
+
+exe 'source '.s:path.'/multicompile.vim'
+exe 'source '.s:path.'/compiler.vim'
+exe 'source '.s:path.'/folding.vim'
+exe 'source '.s:path.'/templates.vim'
+exe 'source '.s:path.'/custommacros.vim'
+exe 'source '.s:path.'/bibtex.vim'
+
+" source advanced math functions
+if g:Tex_AdvancedMath == 1
+ exe 'source '.s:path.'/brackets.vim'
+ exe 'source '.s:path.'/smartspace.vim'
+endif
+
+if g:Tex_Diacritics != 0
+ exe 'source '.s:path.'/diacritics.vim'
+endif
+
+exe 'source '.s:path.'/texviewer.vim'
+exe 'source '.s:path.'/version.vim'
+
+" ==============================================================================
+" Finally set up the folding, options, mappings and quit.
+" ==============================================================================
+" SetTeXOptions: sets options/mappings for this file. {{{
+function! <SID>SetTeXOptions()
+ " Avoid reinclusion.
+ if exists('b:doneSetTeXOptions')
+ return
+ endif
+ let b:doneSetTeXOptions = 1
+
+ exe 'setlocal dict^='.s:path.'/dictionaries/dictionary'
+
+ call Tex_Debug('SetTeXOptions: sourcing maps', 'main')
+ " smart functions
+ if g:Tex_SmartKeyQuote
+ inoremap <buffer> <silent> " "<Left><C-R>=<SID>TexQuotes()<CR>
+ endif
+ if g:Tex_SmartKeyBS
+ inoremap <buffer> <silent> <BS> <C-R>=<SID>SmartBS(<SID>SmartBS_pat())<CR>
+ endif
+ if g:Tex_SmartKeyDot
+ inoremap <buffer> <silent> . <C-R>=<SID>SmartDots()<CR>
+ endif
+
+ " This line seems to be necessary to source our compiler/tex.vim file.
+ " The docs are unclear why this needs to be done even though this file is
+ " the first compiler plugin in 'runtimepath'.
+ runtime compiler/tex.vim
+
+endfunction
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('main.vim: Catching LatexSuiteFileType event', 'main') |
+ \ call <SID>SetTeXOptions()
+augroup END
+
+" }}}
+
+" ==============================================================================
+" Settings for taglist.vim plugin
+" ==============================================================================
+" Sets Tlist_Ctags_Cmd for taglist.vim and regexps for ctags {{{
+if exists("g:Tex_TaglistSupport") && g:Tex_TaglistSupport == 1
+ if !exists("g:tlist_tex_settings")
+ let g:tlist_tex_settings = 'tex;s:section;c:chapter;l:label;r:ref'
+ endif
+
+ if exists("Tlist_Ctags_Cmd")
+ let s:tex_ctags = Tlist_Ctags_Cmd
+ else
+ let s:tex_ctags = 'ctags' " Configurable in texrc?
+ endif
+
+ if exists("g:Tex_InternalTagsDefinitions") && g:Tex_InternalTagsDefinitions == 1
+ let Tlist_Ctags_Cmd = s:tex_ctags ." --langdef=tex --langmap=tex:.tex.ltx.latex"
+ \.' --regex-tex="/\\\\begin{abstract}/Abstract/s,abstract/"'
+ \.' --regex-tex="/\\\\part[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,part/"'
+ \.' --regex-tex="/\\\\chapter[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,chapter/"'
+ \.' --regex-tex="/\\\\section[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,section/"'
+ \.' --regex-tex="/\\\\subsection[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subsection/"'
+ \.' --regex-tex="/\\\\subsubsection[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subsubsection/"'
+ \.' --regex-tex="/\\\\paragraph[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,paragraph/"'
+ \.' --regex-tex="/\\\\subparagraph[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subparagraph/"'
+ \.' --regex-tex="/\\\\begin{thebibliography}/BIBLIOGRAPHY/s,thebibliography/"'
+ \.' --regex-tex="/\\\\tableofcontents/TABLE OF CONTENTS/s,tableofcontents/"'
+ \.' --regex-tex="/\\\\frontmatter/FRONTMATTER/s,frontmatter/"'
+ \.' --regex-tex="/\\\\mainmatter/MAINMATTER/s,mainmatter/"'
+ \.' --regex-tex="/\\\\backmatter/BACKMATTER/s,backmatter/"'
+ \.' --regex-tex="/\\\\appendix/APPENDIX/s,appendix/"'
+ \.' --regex-tex="/\\\\label[ \t]*\*?\{[ \t]*([^}]*)\}/\1/l,label/"'
+ \.' --regex-tex="/\\\\ref[ \t]*\*?\{[ \t]*([^}]*)\}/\1/r,ref/"'
+ endif
+endif
+
+" }}}
+
+" commands to completion
+let g:Tex_completion_explorer = ','
+
+" Mappings defined in package files will overwrite all other
+exe 'source '.s:path.'/packages.vim'
+
+" ==============================================================================
+" These functions are used to immitate certain operating system type functions
+" (like reading the contents of a file), which are not available in vim. For
+" example, in Vim, its not possible to read the contents of a file without
+" opening a buffer on it, which means that over time, lots of buffers can open
+" up needlessly.
+"
+" If python is available (and allowed), then these functions utilize python
+" library functions without making calls to external programs.
+" ==============================================================================
+" Tex_GotoTempFile: open a temp file. reuse from next time on {{{
+function! Tex_GotoTempFile()
+ if !exists('s:tempFileName')
+ let s:tempFileName = tempname()
+ endif
+ exec 'silent! split '.s:tempFileName
+endfunction " }}}
+" Tex_IsPresentInFile: finds if a string str, is present in filename {{{
+if has('python') && g:Tex_UsePython
+ function! Tex_IsPresentInFile(regexp, filename)
+ exec 'python isPresentInFile(r"'.a:regexp.'", r"'.a:filename.'")'
+
+ return retval
+ endfunction
+else
+ function! Tex_IsPresentInFile(regexp, filename)
+ call Tex_GotoTempFile()
+
+ silent! 1,$ d _
+ let _report = &report
+ let _sc = &sc
+ set report=9999999 nosc
+ exec 'silent! 0r! '.g:Tex_CatCmd.' '.a:filename
+ set nomod
+ let &report = _report
+ let &sc = _sc
+
+ if search(a:regexp, 'w')
+ let retval = 1
+ else
+ let retval = 0
+ endif
+ silent! bd
+ return retval
+ endfunction
+endif " }}}
+" Tex_CatFile: returns the contents of a file in a <NL> seperated string {{{
+if has('*readfile')
+ function! Tex_CatFile(filename)
+ return join(readfile(filename), "\n")
+ endfunction
+elseif has('python') && g:Tex_UsePython
+ function! Tex_CatFile(filename)
+ " catFile assigns a value to retval
+ exec 'python catFile("'.a:filename.'")'
+
+ return retval
+ endfunction
+else
+ function! Tex_CatFile(filename)
+ if glob(a:filename) == ''
+ return ''
+ endif
+
+ call Tex_GotoTempFile()
+
+ silent! 1,$ d _
+
+ let _report = &report
+ let _sc = &sc
+ set report=9999999 nosc
+ exec 'silent! 0r! '.g:Tex_CatCmd.' '.a:filename
+
+ set nomod
+ let _a = @a
+ silent! normal! ggVG"ay
+ let retval = @a
+ let @a = _a
+
+ silent! bd
+ let &report = _report
+ let &sc = _sc
+ return retval
+ endfunction
+endif
+" }}}
+" Tex_DeleteFile: removes a file if present {{{
+" Description:
+if has('python') && g:Tex_UsePython
+ function! Tex_DeleteFile(filename)
+ exec 'python deleteFile(r"'.a:filename.'")'
+
+ if exists('retval')
+ return retval
+ endif
+ endfunction
+else
+ function! Tex_DeleteFile(filename)
+ if filereadable(a:filename)
+ exec '! '.g:Tex_RmCmd.' '.a:filename
+ endif
+ endfunction
+endif
+" }}}
+
+
+let &cpo = s:save_cpo
+
+" Define the functions in python if available.
+if !has('python') || !g:Tex_UsePython
+ finish
+endif
+
+exec 'pyfile '.expand('<sfile>:p:h').'/pytools.py'
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/.vim/ftplugin/latex-suite/mathmacros-utf.vim b/.vim/ftplugin/latex-suite/mathmacros-utf.vim
new file mode 100644
index 0000000..f5b5b85
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/mathmacros-utf.vim
@@ -0,0 +1,729 @@
+"=============================================================================
+" File: mathmacros.vim
+" Author: Mikolaj Machowski
+" Created: Tue Apr 23 06:00 PM 2002 PST
+"
+" Description: macros for everything mathematical in latex.
+"=============================================================================
+
+if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
+ finish
+endif
+
+let s:MathMenuName = g:Tex_MenuPrefix.'Ma&th.'
+
+function! Tex_MathMenuRemove()
+ exe 'silent! aunmenu '.s:MathMenuName
+endfunction
+
+let s:pA = 'amenu <silent> 85 '.s:MathMenuName
+
+" brackets and dollars {{{
+exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
+exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
+exe s:pA.'&$\ $ <plug>$$'
+exe s:pA.'-sepmath1- :'
+" }}}
+" MATH arrows {{{
+let s:pA1 = s:pA."&Arrows."
+exe s:pA1.'Leftarrow<Tab>⇠<plug>\Leftarrow '
+exe s:pA1.'leftarrow<Tab>↠<plug>\leftarrow'
+exe s:pA1.'longleftarrow<Tab>↠<plug>\longleftarrow '
+exe s:pA1.'Longleftarrow<Tab>⇠<plug>\Longleftarrow '
+exe s:pA1.'rightarrow<Tab>→ <plug>\rightarrow '
+exe s:pA1.'longrightarrow<Tab>→ <plug>\longrightarrow '
+exe s:pA1.'Rightarrow<Tab>⇒ <plug>\Rightarrow '
+exe s:pA1.'Longrightarrow<Tab>⇒ <plug>\Longrightarrow '
+exe s:pA1.'leftrightarrow<Tab>⇆ <plug>\leftrightarrow '
+exe s:pA1.'longleftrightarrow<Tab>↔ <plug>\longleftrightarrow '
+exe s:pA1.'Leftrightarrow<Tab>⇔ <plug>\Leftrightarrow '
+exe s:pA1.'Longleftrightarrow<Tab>⇔ <plug>\Longleftrightarrow '
+exe s:pA1.'uparrow<Tab>↑ <plug>\uparrow '
+exe s:pA1.'Uparrow<Tab>⇑ <plug>\Uparrow '
+exe s:pA1.'downarrow<Tab>↓ <plug>\downarrow '
+exe s:pA1.'Downarrow<Tab>⇓ <plug>\Downarrow '
+exe s:pA1.'updownarrow<Tab>↕ <plug>\updownarrow '
+exe s:pA1.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
+exe s:pA1.'nearrow<Tab>↗ <plug>\nearrow '
+exe s:pA1.'searrow<Tab>↘ <plug>\searrow '
+exe s:pA1.'swarrow<Tab>↙ <plug>\swarrow '
+exe s:pA1.'nwarrow<Tab>↖ <plug>\nwarrow '
+exe s:pA1.'mapsto<Tab>↦ <plug>\mapsto '
+exe s:pA1.'leadsto<Tab>↠<plug>\leadsto '
+exe s:pA1.'longmapsto<Tab>⇖ <plug>\longmapsto '
+exe s:pA1.'hookleftarrow<Tab>↩ <plug>\hookleftarrow '
+exe s:pA1.'hookrightarrow<Tab>↪ <plug>\hookrightarrow '
+exe s:pA1.'leftharpoonup<Tab>↼ <plug>\leftharpoonup '
+exe s:pA1.'leftharpoondown<Tab>↽ <plug>\leftharpoondown '
+exe s:pA1.'rightharpoonup<Tab>⇀ <plug>\rightharpoonup '
+exe s:pA1.'rightharpoondown<Tab>⇠<plug>\rightharpoondown '
+exe s:pA1.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
+exe s:pA1.'overleftarrow<Tab> <plug>\overleftarrow '
+exe s:pA1.'overrightarrow<Tab> <plug>\overrightarrow '
+exe s:pA1.'overleftrightarrow<Tab> <plug>\overleftrightarrow '
+exe s:pA1.'underleftarrow<Tab> <plug>\underleftarrow '
+exe s:pA1.'underrightarrow<Tab> <plug>\underrightarrow '
+exe s:pA1.'underleftrightarrow<Tab> <plug>\underleftrightarrow '
+exe s:pA1.'xleftarrow<Tab> <plug>\xleftarrow '
+exe s:pA1.'xrightarrow<Tab> <plug>\xrightarrow '
+" }}}
+" MATH Arrows2 {{{
+let s:pA1a = s:pA."Arrows2."
+exe s:pA1a.'dashleftarrow<Tab>⇠ <plug>\dashleftarrow '
+exe s:pA1a.'leftleftarrows<Tab>⇇ <plug>\leftleftarrows '
+exe s:pA1a.'leftrightarrows<Tab>⇆ <plug>\leftrightarrows '
+exe s:pA1a.'Lleftarrow<Tab>⇚ <plug>\Lleftarrow '
+exe s:pA1a.'twoheadleftarrow<Tab>↞ <plug>\twoheadleftarrow '
+exe s:pA1a.'leftarrowtail<Tab>↢ <plug>\leftarrowtail '
+exe s:pA1a.'leftrightharpoons<Tab>⇋ <plug>\leftrightharpoons '
+exe s:pA1a.'Lsh<Tab>↰ <plug>\Lsh '
+exe s:pA1a.'looparrowleft<Tab>↫ <plug>\looparrowleft '
+exe s:pA1a.'curvearrowleft<Tab>↶ <plug>\curvearrowleft '
+exe s:pA1a.'circlearrowleft<Tab>↺ <plug>\circlearrowleft '
+exe s:pA1a.'dashrightarrow<Tab>⇢ <plug>\dashrightarrow '
+exe s:pA1a.'rightrightarrows<Tab>⇉ <plug>\rightrightarrows '
+exe s:pA1a.'rightleftarrows<Tab>⇄ <plug>\rightleftarrows '
+exe s:pA1a.'Rrightarrow<Tab>⇛ <plug>\Rrightarrow '
+exe s:pA1a.'twoheadrightarrow<Tab>↠ <plug>\twoheadrightarrow '
+exe s:pA1a.'rightarrowtail<Tab>↣ <plug>\rightarrowtail '
+exe s:pA1a.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
+exe s:pA1a.'Rsh<Tab>↱ <plug>\Rsh '
+exe s:pA1a.'looparrowright<Tab>↬ <plug>\looparrowright '
+exe s:pA1a.'curvearrowright<Tab>↷ <plug>\curvearrowright '
+exe s:pA1a.'circlearrowright<Tab>↻ <plug>\circlearrowright '
+exe s:pA1a.'multimap<Tab>⊸ <plug>\multimap '
+exe s:pA1a.'upuparrows<Tab>⇈ <plug>\upuparrows '
+exe s:pA1a.'downdownarrows<Tab>⇊ <plug>\downdownarrows '
+exe s:pA1a.'upharpoonleft<Tab>↿ <plug>\upharpoonleft '
+exe s:pA1a.'upharpoonright<Tab>↾ <plug>\upharpoonright '
+exe s:pA1a.'downharpoonleft<Tab>⇃ <plug>\downharpoonleft '
+exe s:pA1a.'downharpoonright<Tab>⇂ <plug>\downharpoonright '
+exe s:pA1a.'rightsquigarrow<Tab>⇠<plug>\rightsquigarrow '
+exe s:pA1a.'leftrightsquigarrow<Tab>↭ <plug>\leftrightsquigarrow '
+" }}}
+" MATH nArrows {{{
+let s:pA1b = s:pA."&nArrows."
+exe s:pA1b.'nleftarrow<Tab>↚ <plug>\nleftarrow '
+exe s:pA1b.'nLeftarrow<Tab>⇠<plug>\nLeftarrow '
+exe s:pA1b.'nleftrightarrow<Tab>↮ <plug>\nleftrightarrow '
+exe s:pA1b.'nLeftrightarrow<Tab>⇎ <plug>\nleftrightarrow '
+exe s:pA1b.'nrightarrow<Tab>↛ <plug>\nrightarrow '
+exe s:pA1b.'nRightarrow<Tab>⇠<plug>\nRightarrow '
+" }}}
+" MATH Fonts {{{
+let s:pA2a = s:pA."&MathFonts."
+" exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
+exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
+exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
+exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
+exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
+exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
+exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
+exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
+exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
+" }}}
+" Greek Letters small {{{
+let s:pA2 = s:pA."&Greek.&Small."
+exe s:pA2.'alpha<Tab>`a\ \ α <plug>\alpha '
+exe s:pA2.'beta<Tab>`b\ \ β <plug>\beta '
+exe s:pA2.'gamma<Tab>`g\ \ γ <plug>\gamma '
+exe s:pA2.'delta<Tab>`d\ \ δ <plug>\delta '
+exe s:pA2.'epsilon<Tab>∊ <plug>\epsilon '
+exe s:pA2.'varepsilon<Tab>`e\ \ ε <plug>\varepsilon '
+exe s:pA2.'zeta<Tab>`z\ \ ζ <plug>\zeta '
+exe s:pA2.'eta<Tab>`h\ \ η <plug>\eta '
+exe s:pA2.'theta<Tab>`q\ \ θ <plug>\theta '
+exe s:pA2.'vartheta<Tab>Ï‘ <plug>\vartheta '
+exe s:pA2.'iota<Tab>`i\ \ ι <plug>\iota '
+exe s:pA2.'kappa<Tab>`k\ \ κ <plug>\kappa '
+exe s:pA2.'lambda<Tab>`l\ \ λ <plug>\lambda '
+exe s:pA2.'mu<Tab>`m\ \ μ <plug>\mu '
+exe s:pA2.'nu<Tab>`n\ \ ν <plug>\nu '
+exe s:pA2.'xi<Tab>`x\ \ ξ <plug>\xi '
+exe s:pA2.'pi<Tab>`p\ \ π <plug>\pi '
+exe s:pA2.'varpi<Tab>Ï– <plug>\varpi '
+exe s:pA2.'rho<Tab>`r\ \ Ï <plug>\rho '
+exe s:pA2.'varrho<Tab>ϱ <plug>\varrho '
+exe s:pA2.'sigma<Tab>`s\ \ σ <plug>\sigma '
+exe s:pA2.'varsigma<Tab>`v\ \ Ï‚ <plug>\varsigma '
+exe s:pA2.'tau<Tab>`t\ \ Ï„ <plug>\tau '
+exe s:pA2.'upsilon<Tab>`u\ \ Ï… <plug>\upsilon '
+exe s:pA2.'phi<Tab>φ <plug>\phi '
+exe s:pA2.'varphi<Tab>`f\ \ Ï• <plug>\varphi '
+exe s:pA2.'chi<Tab>`c\ \ χ <plug>\chi '
+exe s:pA2.'psi<Tab>`y\ \ ψ <plug>\psi '
+exe s:pA2.'omega<Tab>`w\ \ ω <plug>\omega '
+" }}}
+" Greek Letters big {{{
+let s:pA3 = s:pA.'&Greek.&Big.'
+exe s:pA3.'Alpha<Tab>`A\ \ A <plug>\Alpha '
+exe s:pA3.'Beta<Tab>`B\ \ B <plug>\Beta '
+exe s:pA3.'Gamma<Tab>`G\ \ Γ <plug>\Gamma '
+exe s:pA3.'Delta<Tab>`D\ \ Δ <plug>\Delta '
+exe s:pA3.'Epsilon<Tab>`E\ \ E <plug>\Epsilon '
+exe s:pA3.'Zeta<Tab>`Z\ \ Z <plug>\mathrm{Z} '
+exe s:pA3.'Eta<Tab>`H\ \ H <plug>\Eta '
+exe s:pA3.'Theta<Tab>Θ <plug>\Theta '
+exe s:pA3.'Iota<Tab>I <plug>\mathrm{I} '
+exe s:pA3.'Kappa<Tab>`K\ \ K <plug>\Kappa '
+exe s:pA3.'Lambda<Tab>`L\ \ Λ <plug>\Lambda '
+exe s:pA3.'Mu<Tab>`M\ \ M <plug>\Mu '
+exe s:pA3.'Nu<Tab>`N\ \ N <plug>\Nu '
+exe s:pA3.'Xi<Tab>`X\ \ Ξ <plug>\Xi '
+exe s:pA3.'Pi<Tab>`P\ \ Π <plug>\Pi '
+exe s:pA3.'Rho<Tab>`R\ \ P <plug>\Rho '
+exe s:pA3.'Sigma<Tab>`S\ \ Σ <plug>\Sigma '
+exe s:pA3.'Tau<Tab>`T\ \ T <plug>\Tau '
+exe s:pA3.'Upsilon<Tab>`U\ \ Y <plug>\Upsilon '
+exe s:pA3.'Phi<Tab>Φ <plug>\Phi '
+exe s:pA3.'Chi<Tab>`C\ \ X <plug>\Chi '
+exe s:pA3.'Psi<Tab>`Y\ \ Ψ <plug>\Psi '
+exe s:pA3.'Omega<Tab>`W\ \ Ω <plug>\Omega '
+" }}}
+" BinaryRel1 {{{
+let s:pA4 = s:pA."&BinaryRel1."
+exe s:pA4.'ll<Tab>≪ <plug>\ll '
+exe s:pA4.'lll<Tab>⋘ <plug>\lll '
+exe s:pA4.'leqslant<Tab>≤ <plug>\leqslant '
+exe s:pA4.'leq<Tab>≤ <plug>\leq '
+exe s:pA4.'leqq<Tab>≦ <plug>\leqq '
+exe s:pA4.'eqslantless<Tab>⋜ <plug>\eqslantless '
+exe s:pA4.'lessdot<Tab>â‹– <plug>\lessdot '
+exe s:pA4.'prec<Tab>≺ <plug>\prec '
+exe s:pA4.'preceq<Tab>≼ <plug>\preceq '
+exe s:pA4.'preccurlyeq<Tab>≼ <plug>\preccurlyeq '
+exe s:pA4.'curlyeqprec<Tab>⋞ <plug>\curlyeqprec '
+exe s:pA4.'lesssim<Tab>≲ <plug>\lesssim '
+exe s:pA4.'lessapprox<Tab> <plug>\lessapprox '
+exe s:pA4.'precsim<Tab>≾ <plug>\precsim '
+exe s:pA4.'precapprox<Tab> <plug>\precapprox '
+exe s:pA4.'in<Tab>∈ <plug>\in '
+exe s:pA4.'subset<Tab>`(\ \ ⊂ <plug>\subset '
+exe s:pA4.'Subset<Tab>`)\ \ â‹ <plug>\Subset '
+exe s:pA4.'subseteq<Tab>⊆ <plug>\subseteq '
+exe s:pA4.'subseteqq<Tab> <plug>\subseteqq '
+exe s:pA4.'sqsubset<Tab>⊠<plug>\sqsubset '
+exe s:pA4.'sqsubseteq<Tab>⊑ <plug>\sqsubseteq '
+exe s:pA4.'smile<Tab>⌣ <plug>\smile '
+exe s:pA4.'smallsmile<Tab>⌣ <plug>\smallsmile '
+exe s:pA4.'parallel<Tab>∥ <plug>\parallel '
+exe s:pA4.'shortparallel<Tab>∥ <plug>\shortparallel '
+exe s:pA4.'dashv<Tab>⊣ <plug>\dashv '
+exe s:pA4.'vdash<Tab>⊢ <plug>\vdash '
+exe s:pA4.'vDash<Tab>⊨ <plug>\vDash '
+exe s:pA4.'models<Tab>⊨ <plug>\models '
+exe s:pA4.'therefore<Tab>∴ <plug>\therefore '
+exe s:pA4.'backepsilon<Tab>∠<plug>\backepsilon '
+" }}}
+" nBinaryRel1 {{{
+let s:pA4a = s:pA."&nBinaryRel1."
+exe s:pA4a.'nless<Tab>≮ <plug>\nless '
+exe s:pA4a.'nleqslant<Tab>≰ <plug>\nleqslant '
+exe s:pA4a.'nleq<Tab> <plug>\nleq '
+exe s:pA4a.'lneq<Tab> <plug>\lneq '
+exe s:pA4a.'nleqq<Tab> <plug>\nleqq '
+exe s:pA4a.'lneqq<Tab>≨ <plug>\lneqq '
+exe s:pA4a.'lvertneqq<Tab> <plug>\lvertneqq '
+exe s:pA4a.'nprec<Tab>⊀ <plug>\nprec '
+exe s:pA4a.'npreceq<Tab>â‹  <plug>\npreceq '
+exe s:pA4a.'precneqq<Tab> <plug>\precneqq '
+exe s:pA4a.'lnsim<Tab>⋦ <plug>\lnsim '
+exe s:pA4a.'lnapprox<Tab> <plug>\lnapprox '
+exe s:pA4a.'precnsim<Tab>⋨ <plug>\precnsim '
+exe s:pA4a.'precnapprox<Tab> <plug>\precnapprox '
+exe s:pA4a.'notin<Tab>∉ <plug>\notin '
+exe s:pA4a.'nsubseteq<Tab>⊈ <plug>\nsubseteq '
+exe s:pA4a.'varsubsetneq<Tab> <plug>\varsubsetneq '
+exe s:pA4a.'subsetneq<Tab>⊊ <plug>\subsetneq '
+exe s:pA4a.'nsubseteqq<Tab> <plug>\nsubseteqq '
+exe s:pA4a.'varsubsetneqq<Tab> <plug>\varsubsetneqq '
+exe s:pA4a.'subsetneqq<Tab>⊈ <plug>\subsetneqq '
+exe s:pA4a.'nparallel<Tab>∦ <plug>\nparallel '
+exe s:pA4a.'nshortparallel<Tab> <plug>\nshortparallel '
+exe s:pA4a.'nvdash<Tab>⊬ <plug>\nvdash '
+exe s:pA4a.'nvDash<Tab>⊭ <plug>\nvDash '
+" }}}
+" BinaryRel2 {{{
+let s:pA5 = s:pA."&BinaryRel2."
+exe s:pA5.'gg<Tab>≫ <plug>\gg '
+exe s:pA5.'ggg<Tab>â‹™ <plug>\ggg '
+exe s:pA5.'gggtr<Tab>â‹™ <plug>\gggtr '
+exe s:pA5.'geqslant<Tab> <plug>\geqslant '
+exe s:pA5.'geq<Tab>≥ <plug>\geq '
+exe s:pA5.'geqq<Tab>≧ <plug>\geqq '
+exe s:pA5.'eqslantgtr<Tab> <plug>\eqslantgtr '
+exe s:pA5.'gtrdot<Tab>â‹— <plug>\gtrdot '
+exe s:pA5.'succ<Tab>≻ <plug>\succ '
+exe s:pA5.'succeq<Tab>≽ <plug>\succeq '
+exe s:pA5.'succcurlyeq<Tab>≽ <plug>\succcurlyeq '
+exe s:pA5.'curlyeqsucc<Tab>⋟ <plug>\curlyeqsucc '
+exe s:pA5.'gtrsim<Tab>≳ <plug>\gtrsim '
+exe s:pA5.'gtrapprox<Tab> <plug>\gtrapprox '
+exe s:pA5.'succsim<Tab>≿ <plug>\succsim '
+exe s:pA5.'succapprox<Tab> <plug>\succapprox '
+exe s:pA5.'ni<Tab>∋ <plug>\ni '
+exe s:pA5.'owns<Tab> <plug>\owns '
+exe s:pA5.'supset<Tab>⊃ <plug>\supset '
+exe s:pA5.'Supset<Tab>â‹‘ <plug>\Supset '
+exe s:pA5.'supseteq<Tab>⊇ <plug>\supseteq '
+exe s:pA5.'supseteqq<Tab> <plug>\supseteqq '
+exe s:pA5.'sqsupset<Tab>⊠<plug>\sqsupset '
+exe s:pA5.'sqsupseteq<Tab>⊒ <plug>\sqsupseteq '
+exe s:pA5.'frown<Tab>⌢ <plug>\frown '
+exe s:pA5.'smallfrown<Tab>⌢ <plug>\smallfrown '
+exe s:pA5.'mid<Tab>∣ <plug>\mid '
+exe s:pA5.'shortmid<Tab> <plug>\shortmid '
+exe s:pA5.'between<Tab>≬ <plug>\between '
+exe s:pA5.'Vdash<Tab>⊩ <plug>\Vdash '
+exe s:pA5.'bowtie<Tab>⋈ <plug>\bowtie '
+exe s:pA5.'Join<Tab>⋈ <plug>\Join '
+exe s:pA5.'pitchfork<Tab>â‹” <plug>\pitchfork '
+" }}}
+" {{{ nBinaryRel2
+let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiæ logarytmy
+exe s:pA5a.'ngtr<Tab>≯ <plug>\ngtr '
+exe s:pA5a.'ngeqslant<Tab>≱ <plug>\ngeqslant '
+exe s:pA5a.'ngeq<Tab> <plug>\ngeq '
+exe s:pA5a.'gneq<Tab> <plug>\gneq '
+exe s:pA5a.'ngeqq<Tab> <plug>\ngeqq '
+exe s:pA5a.'gneqq<Tab>≩ <plug>\gneqq '
+exe s:pA5a.'nsucc<Tab>⊠<plug>\nsucc '
+exe s:pA5a.'nsucceq<Tab>â‹¡ <plug>\nsucceq '
+exe s:pA5a.'succneqq<Tab> <plug>\succneqq '
+exe s:pA5a.'gnsim<Tab>â‹§ <plug>\gnsim '
+exe s:pA5a.'gnapprox<Tab> <plug>\gnapprox '
+exe s:pA5a.'succnsim<Tab>â‹© <plug>\succnsim '
+exe s:pA5a.'succnapprox<Tab> <plug>\succnapprox '
+exe s:pA5a.'nsupseteq<Tab>⊉ <plug>\nsupseteq '
+exe s:pA5a.'varsupsetneq<Tab> <plug>\varsupsetneq '
+exe s:pA5a.'supsetneq<Tab>⊋ <plug>\supsetneq '
+exe s:pA5a.'nsupseteqq<Tab> <plug>\nsupseteqq '
+exe s:pA5a.'varsupsetneqq<Tab> <plug>\varsupsetneqq '
+exe s:pA5a.'supsetneqq<Tab> <plug>\supsetneqq '
+exe s:pA5a.'nmid<Tab>∤ <plug>\nmid '
+exe s:pA5a.'nshortmid<Tab> <plug>\nshortmid '
+exe s:pA5a.'nVdash<Tab>⊮ <plug>\nVdash '
+" }}}
+" {{{ BinaryRel3
+let s:pA6 = s:pA."&BinaryRel3."
+exe s:pA6.'doteq<Tab>≠<plug>\doteq '
+exe s:pA6.'circeq<Tab>≗ <plug>\circeq '
+exe s:pA6.'eqcirc<Tab>≖ <plug>\eqcirc '
+exe s:pA6.'risingdotseq<Tab>≓ <plug>\risingdotseq '
+exe s:pA6.'doteqdot<Tab>≑ <plug>\doteqdot '
+exe s:pA6.'Doteq<Tab>≑ <plug>\Doteq '
+exe s:pA6.'fallingdotseq<Tab>≒ <plug>\fallingdotseq '
+exe s:pA6.'triangleq<Tab>≜ <plug>\triangleq '
+exe s:pA6.'bumpeq<Tab>≠<plug>\bumpeq '
+exe s:pA6.'Bumpeq<Tab>≎ <plug>\Bumpeq '
+exe s:pA6.'equiv<Tab>`=\ \ ≡ <plug>\equiv '
+exe s:pA6.'sim<Tab>∼ <plug>\sim '
+exe s:pA6.'thicksim<Tab>∼ <plug>\thicksim '
+exe s:pA6.'backsim<Tab>∽ <plug>\backsim '
+exe s:pA6.'simeq<Tab>≃ <plug>\simeq '
+exe s:pA6.'backsimeq<Tab>â‹ <plug>\backsimeq '
+exe s:pA6.'cong<Tab>≅ <plug>\cong '
+exe s:pA6.'approx<tab>=~\ \ ≈ <plug>\approx '
+exe s:pA6.'thickapprox<Tab>≈ <plug>\thickapprox '
+exe s:pA6.'approxeq<Tab>≊ <plug>\approxeq '
+exe s:pA6.'blacktriangleleft<Tab>â—€ <plug>\blacktriangleleft '
+exe s:pA6.'vartriangleleft<Tab>⊲ <plug>\vartriangleleft '
+exe s:pA6.'trianglelefteq<Tab>⊴ <plug>\trianglelefteq '
+exe s:pA6.'blacktriangleright<Tab>â–¶ <plug>\blacktriangleright '
+exe s:pA6.'vartriangleright<Tab>⊳ <plug>\vartriangleright '
+exe s:pA6.'trianglerighteq<Tab>⊵ <plug>\trianglerighteq '
+exe s:pA6.'perp<Tab>⊥ <plug>\perp '
+exe s:pA6.'asymp<Tab>≠<plug>\asymp '
+exe s:pA6.'Vvdash<Tab>⊪ <plug>\Vvdash '
+exe s:pA6.'propto<Tab>∠<plug>\propto '
+exe s:pA6.'varpropto<Tab>∠<plug>\varpropto '
+exe s:pA6.'because<Tab>∵ <plug>\because '
+" }}}
+" {{{ nBinaryRel3
+let s:pA6a = s:pA."&nBinaryRel3."
+exe s:pA6a.'neq<Tab>≠ <plug>\neq '
+exe s:pA6a.'nsim<Tab>≠<plug>\nsim '
+exe s:pA6a.'ncong<Tab>≆ <plug>\ncong '
+exe s:pA6a.'ntriangleleft<Tab>⋪ <plug>\ntriangleleft '
+exe s:pA6a.'ntrianglelefteq<Tab>⋬ <plug>\ntrianglelefteq '
+exe s:pA6a.'ntriangleright<Tab>â‹« <plug>\ntriangleright '
+exe s:pA6a.'ntrianglerighteq<Tab>â‹­ <plug>\ntrianglerighteq '
+" }}}
+" {{{ BinaryRel4
+let s:pA7 = s:pA."&BinaryRel4."
+exe s:pA7.'lessgtr<Tab>≶ <plug>\lessgtr '
+exe s:pA7.'gtrless<Tab>≷ <plug>\gtrless '
+exe s:pA7.'lesseqgtr<Tab>⋚ <plug>\lesseqgtr '
+exe s:pA7.'gtreqless<Tab>â‹› <plug>\gtreqless '
+exe s:pA7.'lesseqqgtr<Tab> <plug>\lesseqqgtr '
+exe s:pA7.'gtreqqless<Tab> <plug>\gtreqqless '
+" }}}
+" {{{ BigOp
+let s:pA8a = s:pA."&BigOp."
+exe s:pA8a.'limits<Tab> <plug>\limits'
+exe s:pA8a.'nolimits<Tab> <plug>\nolimits'
+exe s:pA8a.'displaylimits<Tab> <plug>\displaylimits'
+exe s:pA8a.'-seplimits- :'
+exe s:pA8a.'bigcap<Tab>`-\ \ â‹‚ <plug>\bigcap'
+exe s:pA8a.'bigcup<Tab>`+\ \ ⋃ <plug>\bigcup'
+exe s:pA8a.'bigodot<Tab>⊙ <plug>\bigodot'
+exe s:pA8a.'bigoplus<Tab>⊕ <plug>\bigoplus'
+exe s:pA8a.'bigotimes<Tab>⊗ <plug>\bigotimes'
+exe s:pA8a.'bigsqcup<Tab>⊔ <plug>\bigsqcup'
+exe s:pA8a.'biguplus<Tab>⊎ <plug>\biguplus'
+exe s:pA8a.'bigvee<Tab>â‹ <plug>\bigvee'
+exe s:pA8a.'bigwedge<Tab>â‹€ <plug>\bigwedge'
+exe s:pA8a.'coprod<Tab>∠<plug>\coprod'
+exe s:pA8a.'int<Tab>∫ <plug>\int'
+exe s:pA8a.'iint<Tab>∬ <plug>\int'
+exe s:pA8a.'iiint<Tab>∭ <plug>\int'
+exe s:pA8a.'oint<Tab>∮ <plug>\oint'
+exe s:pA8a.'prod<Tab>∠<plug>\prod'
+exe s:pA8a.'sum<Tab>∑ <plug>\sum'
+" }}}
+" {{{ BinaryOp
+let s:pA8 = s:pA."&BinaryOp."
+exe s:pA8.'pm<Tab>± <plug>\pm '
+exe s:pA8.'mp<Tab>∓ <plug>\mp '
+exe s:pA8.'dotplus<Tab>∔ <plug>\dotplus '
+exe s:pA8.'cdot<Tab>`.\ \ â‹… <plug>\cdot '
+exe s:pA8.'centerdot<Tab>â‹… <plug>\centerdot '
+exe s:pA8.'times<Tab>`*\ \ × <plug>\times '
+exe s:pA8.'ltimes<Tab>⋉ <plug>\ltimes '
+exe s:pA8.'rtimes<Tab>⋊ <plug>\rtimes '
+exe s:pA8.'leftthreetimes<Tab>â‹‹ <plug>\leftthreetimes '
+exe s:pA8.'rightthreetimes<Tab>⋌ <plug>\rightthreetimes '
+exe s:pA8.'div<Tab>÷ <plug>\div '
+exe s:pA8.'divideontimes<Tab>⋇ <plug>\divideontimes '
+exe s:pA8.'bmod<Tab> <plug>\bmod '
+exe s:pA8.'ast<Tab>∗ <plug>\ast '
+exe s:pA8.'star<Tab>⋆ <plug>\star '
+exe s:pA8.'setminus<Tab>`\\\ \ ∖ <plug>\setminus '
+exe s:pA8.'smallsetminus<Tab>∖ <plug>\smallsetminus '
+exe s:pA8.'diamond<Tab>â‹„ <plug>\diamond '
+exe s:pA8.'wr<Tab>≀ <plug>\wr '
+exe s:pA8.'intercal<Tab>⊺ <plug>\intercal '
+exe s:pA8.'circ<Tab>`@\ \ ∘ <plug>\circ '
+exe s:pA8.'bigcirc<Tab>â—‹ <plug>\bigcirc '
+exe s:pA8.'bullet<Tab>∙ <plug>\bullet '
+exe s:pA8.'cap<Tab>∩ <plug>\cap '
+exe s:pA8.'Cap<Tab>â‹’ <plug>\Cap '
+exe s:pA8.'cup<Tab>∪ <plug>\cup '
+exe s:pA8.'Cup<Tab>â‹“ <plug>\Cup '
+exe s:pA8.'sqcap<Tab>⊓ <plug>\sqcap '
+exe s:pA8.'sqcup<Tab>⊔ <plug>\sqcup'
+exe s:pA8.'amalg<Tab> <plug>\amalg '
+exe s:pA8.'uplus<Tab>⊎ <plug>\uplus '
+exe s:pA8.'triangleleft<Tab>â— <plug>\triangleleft '
+exe s:pA8.'triangleright<Tab>â–· <plug>\triangleright '
+exe s:pA8.'bigtriangleup<Tab>â–³ <plug>\bigtriangleup '
+exe s:pA8.'bigtriangledown<Tab>â–½ <plug>\bigtriangledown '
+exe s:pA8.'vee<Tab>∨ <plug>\vee '
+exe s:pA8.'veebar<Tab>⊻ <plug>\veebar '
+exe s:pA8.'curlyvee<Tab>⋎ <plug>\curlyvee '
+exe s:pA8.'wedge<Tab>`&\ \ ∧ <plug>\wedge '
+exe s:pA8.'barwedge<Tab>⊼ <plug>\barwedge '
+exe s:pA8.'doublebarwedge<Tab>⌆ <plug>\doublebarwedge '
+exe s:pA8.'curlywedge<Tab>â‹ <plug>\curlywedge '
+exe s:pA8.'oplus<Tab>⊕ <plug>\oplus '
+exe s:pA8.'ominus<Tab>⊖ <plug>\ominus '
+exe s:pA8.'otimes<Tab>⊗ <plug>\otimes '
+exe s:pA8.'oslash<Tab>⊘ <plug>\oslash '
+exe s:pA8.'boxplus<Tab>⊞ <plug>\boxplus '
+exe s:pA8.'boxminus<Tab>⊟ <plug>\boxminus '
+exe s:pA8.'boxtimes<Tab>⊠ <plug>\boxtimes '
+exe s:pA8.'boxdot<Tab>⊡ <plug>\boxdot '
+exe s:pA8.'odot<Tab>⊙ <plug>\odot '
+exe s:pA8.'circledast<Tab>⊛ <plug>\circledast '
+exe s:pA8.'circleddash<Tab>⊠<plug>\circleddash '
+exe s:pA8.'circledcirc<Tab>⊚ <plug>\circledcirc '
+exe s:pA8.'dagger<Tab>† <plug>\dagger '
+exe s:pA8.'ddagger<Tab>‡ <plug>\ddagger '
+exe s:pA8.'lhd<Tab>⊲ <plug>\lhd '
+exe s:pA8.'unlhd<Tab>⊴ <plug>\unlhd '
+exe s:pA8.'rhd<Tab>⊳ <plug>\rhd '
+exe s:pA8.'unrhd<Tab>⊵ <plug>\unrhd '
+" }}}
+" {{{ Other1
+let s:pA9 = s:pA."&Other1."
+" exe s:pA9.'hat<Tab>â <plug>\hat '
+exe s:pA9.'check<Tab>ÇŽ <plug>\check '
+exe s:pA9.'grave<Tab>à <plug>\grave '
+exe s:pA9.'acute<Tab>á <plug>\acute '
+exe s:pA9.'dot<Tab>ȧ <plug>\dot '
+exe s:pA9.'ddot<Tab>ä <plug>\ddot '
+exe s:pA9.'tilde<Tab>`,\ \ ã <plug>\tilde '
+exe s:pA9.'breve<Tab>ă <plug>\breve '
+exe s:pA9.'bar<Tab>Ä <plug>\bar '
+exe s:pA9.'vec<Tab>a⃗ <plug>\vec '
+exe s:pA9.'aleph<Tab>× <plug>\aleph '
+exe s:pA9.'hbar<Tab>â„ <plug>\hbar '
+exe s:pA9.'imath<Tab> <plug>\imath '
+exe s:pA9.'jmath<Tab> <plug>\jmath '
+exe s:pA9.'ell<Tab>â„“ <plug>\ell '
+exe s:pA9.'wp<Tab>℘ <plug>\wp '
+exe s:pA9.'Re<Tab>ℜ <plug>\Re '
+exe s:pA9.'Im<Tab>â„‘ <plug>\Im '
+exe s:pA9.'partial<Tab>∂ <plug>\partial '
+exe s:pA9.'infty<Tab>`8\ \ ∞ <plug>\infty '
+exe s:pA9.'prime<Tab>′ <plug>\prime '
+exe s:pA9.'emptyset<Tab>∅ <plug>\emptyset '
+exe s:pA9.'nabla<Tab>∇ <plug>\nabla '
+exe s:pA9.'surd<Tab>√ <plug>\surd '
+exe s:pA9.'top<Tab>⊤ <plug>\top '
+exe s:pA9.'bot<Tab>⊥ <plug>\bot '
+exe s:pA9.'angle<Tab>∠ <plug>\angle '
+exe s:pA9.'triangle<Tab>â–³ <plug>\triangle '
+exe s:pA9.'backslash<Tab>\\ <plug>\backslash '
+exe s:pA9.'forall<Tab>∀ <plug>\forall '
+exe s:pA9.'exists<Tab>∃ <plug>\exists '
+exe s:pA9.'neg<Tab>¬ <plug>\neg '
+exe s:pA9.'flat<Tab>â™­ <plug>\flat '
+exe s:pA9.'natural<Tab>â™® <plug>\natural '
+exe s:pA9.'sharp<Tab>♯ <plug>\sharp '
+exe s:pA9.'clubsuit<Tab>♣ <plug>\clubsuit '
+exe s:pA9.'diamondsuit<Tab>♢ <plug>\diamondsuit '
+exe s:pA9.'heartsuit<Tab>♡ <plug>\heartsuit '
+exe s:pA9.'spadesuit<Tab>â™  <plug>\spadesuit '
+exe s:pA9.'S<Tab>§ <plug>\S '
+exe s:pA9.'P<Tab>¶ <plug>\P'
+" }}}
+" {{{ MathCreating
+let s:pA10 = s:pA."&MathCreating."
+exe s:pA10.'not<Tab> <plug>\not'
+exe s:pA10.'mkern<Tab> <plug>\mkern'
+exe s:pA10.'mathbin<Tab> <plug>\mathbin'
+exe s:pA10.'mathrel<Tab> <plug>\mathrel'
+exe s:pA10.'stackrel<Tab> <plug>\stackrel'
+exe s:pA10.'mathord<Tab> <plug>\mathord'
+" }}}
+" {{{ Styles
+let s:pA11 = s:pA."&Styles."
+exe s:pA11.'displaystyle<Tab> <plug>\displaystyle'
+exe s:pA11.'textstyle<Tab> <plug>\textstyle'
+exe s:pA11.'scritpstyle<Tab> <plug>\scritpstyle'
+exe s:pA11.'scriptscriptstyle<Tab> <plug>\scriptscriptstyle'
+" }}}
+" {{{ MathDiacritics
+let s:pA12 = s:pA."&MathDiacritics."
+exe s:pA12.'acute{}<Tab>á <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
+exe s:pA12.'bar{}<Tab>`_\ \ Ä <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
+exe s:pA12.'breve{}<Tab>ă <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
+exe s:pA12.'check{}<Tab>ÇŽ <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
+exe s:pA12.'ddot{}<Tab>`:\ \ ä <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
+exe s:pA12.'dot{}<Tab>`;\ \ ȧ <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
+exe s:pA12.'grave{}<Tab>à <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
+" exe s:pA12.'hat{}<Tab>`^\ \ â <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
+exe s:pA12.'tilde{}<tab>`~\ \ ã <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
+exe s:pA12.'vec{}<Tab>a⃗ <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
+exe s:pA12.'widehat{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
+exe s:pA12.'widetilde{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
+exe s:pA12.'imath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
+exe s:pA12.'jmath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
+" }}}
+" {{{ OverlineAndCo
+let s:pA13 = s:pA."&OverlineAndCo."
+exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
+exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
+exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
+exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
+exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
+exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
+" }}}
+" {{{ Symbols1
+let s:pA14a = s:pA."&Symbols1."
+exe s:pA14a.'forall<Tab>∀ <plug>\forall '
+exe s:pA14a.'exists<Tab>∃ <plug>\exists '
+exe s:pA14a.'nexists<Tab>∄ <plug>\nexists '
+exe s:pA14a.'neg<Tab>¬ <plug>\neg '
+exe s:pA14a.'top<Tab>⊤ <plug>\top '
+exe s:pA14a.'bot<Tab>⊥ <plug>\bot '
+exe s:pA14a.'emptyset<Tab>∅ <plug>\emptyset '
+exe s:pA14a.'varnothing<Tab>⌀ <plug>\varnothing '
+exe s:pA14a.'infty<Tab>∞ <plug>\infty '
+exe s:pA14a.'aleph<Tab>× <plug>\aleph '
+exe s:pA14a.'beth<Tab>ב <plug>\beth '
+exe s:pA14a.'gimel<Tab>×’ <plug>\gimel '
+exe s:pA14a.'daleth<Tab>ד <plug>\daleth '
+exe s:pA14a.'hbar<Tab> <plug>\hbar '
+exe s:pA14a.'hslash<Tab>â„ <plug>\hslash '
+exe s:pA14a.'diagup<Tab>â„ <plug>\diagup '
+exe s:pA14a.'vert<Tab>\| <plug>\vert '
+exe s:pA14a.'Vert<Tab>∥ <plug>\Vert '
+exe s:pA14a.'backslash<Tab>\\ <plug>\backslash '
+exe s:pA14a.'diagdown<Tab> <plug>\diagdown '
+exe s:pA14a.'Bbbk<Tab>ᵕ <plug>\Bbbk '
+exe s:pA14a.'P<Tab>¶ <plug>\P '
+exe s:pA14a.'S<Tab>§ <plug>\S '
+" }}}
+" {{{ Symbols2
+let s:pA14b = s:pA."&Symbols2."
+exe s:pA14b.'# <plug>\# '
+exe s:pA14b.'% <plug>\% '
+exe s:pA14b.'_<Tab> <plug>\_ '
+exe s:pA14b.'$ <plug>\$ '
+exe s:pA14b.'& <plug>\& '
+exe s:pA14b.'imath<Tab> <plug>\imath '
+exe s:pA14b.'jmath<Tab> <plug>\jmath '
+exe s:pA14b.'ell<Tab>â„“ <plug>\ell '
+exe s:pA14b.'wp<Tab>℘ <plug>\wp '
+exe s:pA14b.'Re<Tab>ℜ <plug>\Re '
+exe s:pA14b.'Im<Tab>â„‘ <plug>\Im '
+exe s:pA14b.'prime<Tab>′ <plug>\prime '
+exe s:pA14b.'backprime<Tab>‵ <plug>\backprime '
+exe s:pA14b.'nabla<Tab>∇ <plug>\nabla '
+exe s:pA14b.'surd<Tab>√ <plug>\surd '
+exe s:pA14b.'flat<Tab>â™­ <plug>\flat '
+exe s:pA14b.'sharp<Tab>♯ <plug>\sharp '
+exe s:pA14b.'natural<Tab>â™® <plug>\natural '
+exe s:pA14b.'eth<Tab>ð <plug>\eth '
+exe s:pA14b.'bigstar<Tab>★ <plug>\bigstar '
+exe s:pA14b.'circledS<Tab>Ⓢ <plug>\circledS '
+exe s:pA14b.'Finv<Tab>Ⅎ <plug>\Finv '
+exe s:pA14b.'dag<Tab>† <plug>\dag '
+exe s:pA14b.'ddag<Tab>‡ <plug>\ddag '
+" }}}
+" {{{ Symbols3
+let s:pA14c = s:pA."&Symbols3."
+exe s:pA14c.'angle<Tab>∠ <plug>\angle '
+exe s:pA14c.'measuredangle<Tab>∡ <plug>\measuredangle '
+exe s:pA14c.'sphericalangle<Tab>∢ <plug>\sphericalangle '
+exe s:pA14c.'spadesuit<Tab>â™  <plug>\spadesuit '
+exe s:pA14c.'heartsuit<Tab>♡ <plug>\heartsuit '
+exe s:pA14c.'diamondsuit<Tab>♢ <plug>\diamondsuit '
+exe s:pA14c.'clubsuit<Tab>♣ <plug>\clubsuit '
+exe s:pA14c.'lozenge<Tab>â—Š <plug>\lozenge '
+exe s:pA14c.'blacklozenge<Tab>â—† <plug>\blacklozenge '
+exe s:pA14c.'Diamond<Tab>â—‡ <plug>\Diamond '
+exe s:pA14c.'triangle<Tab>â–³ <plug>\triangle '
+exe s:pA14c.'vartriangle<Tab>â–³ <plug>\vartriangle '
+exe s:pA14c.'blacktriangle<Tab>â–² <plug>\blacktriangle '
+exe s:pA14c.'triangledown<Tab>â–½ <plug>\triangledown '
+exe s:pA14c.'blacktriangledown<Tab>â–¼ <plug>\blacktriangledown '
+exe s:pA14c.'Box<Tab>â–¡ <plug>\Box '
+exe s:pA14c.'square<Tab>â–¡ <plug>\square '
+exe s:pA14c.'blacksquare<Tab>â–  <plug>\blacksquare '
+exe s:pA14c.'complement<Tab>∠<plug>\complement '
+exe s:pA14c.'mho<Tab>â„§ <plug>\mho '
+exe s:pA14c.'Game<Tab>â… <plug>\Game '
+exe s:pA14c.'partial<Tab>`6\ \ ∂ <plug>\partial '
+exe s:pA14c.'smallint<Tab>∫ <plug>\smallint '
+" }}}
+" {{{ Logic
+let s:pA15 = s:pA."&Logic."
+exe s:pA15.'lnot<Tab>¬ <plug>\lnot '
+exe s:pA15.'lor<Tab>∨ <plug>\lor '
+exe s:pA15.'land<Tab>∧ <plug>\land '
+" }}}
+" {{{ Limits1
+let s:pA16 = s:pA."&Limits1."
+exe s:pA16.'left<Tab>( <plug>\left'
+exe s:pA16.'right<Tab>) <plug>\right'
+exe s:pA16.'-sepbigl- :'
+exe s:pA16.'bigl<Tab> <plug>\bigl'
+exe s:pA16.'Bigl<Tab> <plug>\Bigl'
+exe s:pA16.'biggl<Tab> <plug>\biggl'
+exe s:pA16.'Biggl<Tab> <plug>\Biggl'
+exe s:pA16.'-sepbigr- :'
+exe s:pA16.'bigr<Tab> <plug>\bigr'
+exe s:pA16.'Bigr<Tab> <plug>\Bigr'
+exe s:pA16.'biggr<Tab> <plug>\biggr'
+exe s:pA16.'Biggr<Tab> <plug>\Biggr'
+exe s:pA16.'-sepbig- :'
+exe s:pA16.'big<Tab> <plug>\big'
+exe s:pA16.'bigm<Tab> <plug>\bigm'
+exe s:pA16.'-sepfloor- :'
+exe s:pA16.'lfloor<Tab>⌊ <plug>\lfloor '
+exe s:pA16.'lceil<Tab>⌈ <plug>\lceil '
+exe s:pA16.'rfloor<Tab>⌋ <plug>\rfloor '
+exe s:pA16.'rceil<Tab>⌉ <plug>\rceil '
+exe s:pA16.'-sepangle- :'
+exe s:pA16.'langle<Tab>〈 <plug>\langle '
+exe s:pA16.'rangle<Tab>〉 <plug>\rangle '
+" }}}
+" {{{ Limits2
+let s:pA16a = s:pA."&Limits2."
+exe s:pA16a.'ulcorner<Tab>⌜ <plug>\ulcorner '
+exe s:pA16a.'urcorner<Tab>⌠<plug>\urcorner '
+exe s:pA16a.'llcorner<Tab>⌞ <plug>\llcorner '
+exe s:pA16a.'rlcorner<Tab>⌟ <plug>\rlcorner '
+exe s:pA16a.'-sepcorner- :'
+exe s:pA16a.'vert<Tab>\| <plug>\vert '
+exe s:pA16a.'Vert<Tab>∥ <plug>\Vert '
+exe s:pA16a.'lvert<Tab> <plug>\lvert '
+exe s:pA16a.'lVert<Tab> <plug>\lVert '
+exe s:pA16a.'rvert<Tab> <plug>\rvert '
+exe s:pA16a.'rVert<Tab> <plug>\rVert '
+exe s:pA16a.'uparrow<Tab>↑ <plug>\uparrow '
+exe s:pA16a.'Uparrow<Tab>⇑ <plug>\Uparrow '
+exe s:pA16a.'downarrow<Tab>↓ <plug>\downarrow '
+exe s:pA16a.'Downarrow<Tab>⇓ <plug>\Downarrow '
+exe s:pA16a.'updownarrow<Tab>↕ <plug>\updownarrow '
+exe s:pA16a.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
+exe s:pA16a.'lgroup<Tab> <plug>\lgroup '
+exe s:pA16a.'rgroup<Tab> <plug>\rgroup '
+exe s:pA16a.'lmoustache<Tab>∫ <plug>\lmoustache '
+exe s:pA16a.'rmoustache<Tab> <plug>\rmoustache '
+exe s:pA16a.'arrowvert<Tab> <plug>\arrowvert '
+exe s:pA16a.'Arrowvert<Tab> <plug>\Arrowvert '
+exe s:pA16a.'bracevert<Tab> <plug>\bracevert '
+" }}}
+" {{{ Log-likes
+let s:pA17 = s:pA."Lo&g-likes."
+exe s:pA17.'arccos<Tab> <plug>\arccos '
+exe s:pA17.'arcsin<Tab> <plug>\arcsin '
+exe s:pA17.'arctan<Tab> <plug>\arctan '
+exe s:pA17.'arg<Tab> <plug>\arg '
+exe s:pA17.'cos<Tab> <plug>\cos '
+exe s:pA17.'cosh<Tab> <plug>\cosh '
+exe s:pA17.'cot<Tab> <plug>\cot '
+exe s:pA17.'coth<Tab> <plug>\coth '
+exe s:pA17.'csc<Tab> <plug>\csc '
+exe s:pA17.'deg<Tab> <plug>\deg '
+exe s:pA17.'det<Tab> <plug>\det '
+exe s:pA17.'dim<Tab> <plug>\dim '
+exe s:pA17.'exp<Tab> <plug>\exp '
+exe s:pA17.'gcd<Tab> <plug>\gcd '
+exe s:pA17.'hom<Tab> <plug>\hom '
+exe s:pA17.'inf<Tab> <plug>\inf '
+exe s:pA17.'injlim<Tab> <plug>\injlim '
+exe s:pA17.'ker<Tab> <plug>\ker '
+exe s:pA17.'lg<Tab> <plug>\lg '
+exe s:pA17.'lim<Tab> <plug>\lim '
+exe s:pA17.'liminf<Tab> <plug>\liminf '
+exe s:pA17.'limsup<Tab> <plug>\limsup '
+exe s:pA17.'ln<Tab> <plug>\ln '
+exe s:pA17.'log<Tab> <plug>\log '
+exe s:pA17.'max<Tab> <plug>\max '
+exe s:pA17.'min<Tab> <plug>\min '
+exe s:pA17.'Pr<Tab> <plug>\Pr '
+exe s:pA17.'projlim<Tab> <plug>\projlim '
+exe s:pA17.'sec<Tab> <plug>\sec '
+exe s:pA17.'sin<Tab> <plug>\sin '
+exe s:pA17.'sinh<Tab> <plug>\sinh '
+exe s:pA17.'sup<Tab> <plug>\sup '
+exe s:pA17.'tan<Tab> <plug>\tan '
+exe s:pA17.'tanh<Tab> <plug>\tanh '
+exe s:pA17.'varlimsup<Tab> <plug>\varlimsup '
+exe s:pA17.'varliminf<Tab> <plug>\varliminf '
+exe s:pA17.'varinjlim<Tab> <plug>\varinjlim '
+exe s:pA17.'varprojlim<Tab> <plug>\varprojlim '
+" }}}
+" {{{ MathSpacing
+let s:pA18 = s:pA."MathSpacing."
+exe s:pA18.', <plug>\, '
+exe s:pA18.': <plug>\: '
+exe s:pA18.'; <plug>\; '
+exe s:pA18.'[space] <plug>\ '
+exe s:pA18.'quad<Tab> <plug>\quad '
+exe s:pA18.'qquad<Tab> <plug>\qquad '
+exe s:pA18.'! <plug>\! '
+exe s:pA18.'thinspace<Tab> <plug>\thinspace '
+exe s:pA18.'medspace<Tab> <plug>\medspace '
+exe s:pA18.'thickspace<Tab> <plug>\thickspace '
+exe s:pA18.'negthinspace<Tab> <plug>\negthinspace '
+exe s:pA18.'negmedspace<Tab> <plug>\negmedspace '
+exe s:pA18.'negthickspace<Tab> <plug>\negthickspace '
+" 1}}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:fenc=utf-8
diff --git a/.vim/ftplugin/latex-suite/mathmacros.vim b/.vim/ftplugin/latex-suite/mathmacros.vim
new file mode 100644
index 0000000..f160db5
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/mathmacros.vim
@@ -0,0 +1,730 @@
+"=============================================================================
+" File: mathmacros.vim
+" Author: Mikolaj Machowski
+" Created: Tue Apr 23 06:00 PM 2002 PST
+"
+" Description: macros for everything mathematical in latex.
+"=============================================================================
+
+if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
+ finish
+endif
+
+let s:MathMenuName = g:Tex_MenuPrefix.'&Math.'
+
+function! Tex_MathMenuRemove()
+ exe 'silent! aunmenu '.s:MathMenuName
+endfunction
+
+let s:pA = 'amenu <silent> '.g:Tex_NextMenuLocation.' '.s:MathMenuName
+let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
+
+" brackets and dollars {{{
+exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
+exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
+exe s:pA.'&$\ $ <plug>$$'
+exe s:pA.'-sepmath1- :'
+" }}}
+" MATH arrows {{{
+let s:pA1 = s:pA."&Arrows."
+exe s:pA1.'Leftarrow <plug>\leftarrow '
+exe s:pA1.'leftarrow <plug>\leftarrow'
+exe s:pA1.'longleftarrow <plug>\longleftarrow '
+exe s:pA1.'Leftarrow <plug>\Leftarrow '
+exe s:pA1.'Longleftarrow <plug>\Longleftarrow '
+exe s:pA1.'rightarrow <plug>\rightarrow '
+exe s:pA1.'longrightarrow <plug>\longrightarrow '
+exe s:pA1.'Rightarrow <plug>\Rightarrow '
+exe s:pA1.'Longrightarrow <plug>\Longrightarrow '
+exe s:pA1.'leftrightarrow <plug>\leftrightarrow '
+exe s:pA1.'longleftrightarrow <plug>\longleftrightarrow '
+exe s:pA1.'Leftrightarrow <plug>\Leftrightarrow '
+exe s:pA1.'Longleftrightarrow <plug>\Longleftrightarrow '
+exe s:pA1.'uparrow <plug>\uparrow '
+exe s:pA1.'Uparrow <plug>\Uparrow '
+exe s:pA1.'downarrow <plug>\downarrow '
+exe s:pA1.'Downarrow <plug>\Downarrow '
+exe s:pA1.'updownarrow <plug>\updownarrow '
+exe s:pA1.'Updownarrow <plug>\Updownarrow '
+exe s:pA1.'nearrow <plug>\nearrow '
+exe s:pA1.'searrow <plug>\searrow '
+exe s:pA1.'swarrow <plug>\swarrow '
+exe s:pA1.'nwarrow <plug>\nwarrow '
+exe s:pA1.'mapsto <plug>\mapsto '
+exe s:pA1.'leadsto <plug>\leadsto '
+exe s:pA1.'longmapsto <plug>\longmapsto '
+exe s:pA1.'hookleftarrow <plug>\hookleftarrow '
+exe s:pA1.'hookrightarrow <plug>\hookrightarrow '
+exe s:pA1.'leftharpoonup <plug>\leftharpoonup '
+exe s:pA1.'leftharpoondown <plug>\leftharpoondown '
+exe s:pA1.'rightharpoonup <plug>\rightharpoonup '
+exe s:pA1.'rightharpoondown <plug>\rightharpoondown '
+exe s:pA1.'rightleftharpoons <plug>\rightleftharpoons '
+exe s:pA1.'overleftarrow <plug>\overleftarrow '
+exe s:pA1.'overrightarrow <plug>\overrightarrow '
+exe s:pA1.'overleftrightarrow <plug>\overleftrightarrow '
+exe s:pA1.'underleftarrow <plug>\underleftarrow '
+exe s:pA1.'underrightarrow <plug>\underrightarrow '
+exe s:pA1.'underleftrightarrow <plug>\underleftrightarrow '
+exe s:pA1.'xleftarrow <plug>\xleftarrow '
+exe s:pA1.'xrightarrow <plug>\xrightarrow '
+" }}}
+
+
+" MATH nArrows {{{
+let s:pA1a = s:pA."&nArrows."
+exe s:pA1a.'nleftarrow <plug>\nleftarrow '
+exe s:pA1a.'nLeftarrow <plug>\nLeftarrow '
+exe s:pA1a.'nleftrightarrow <plug>\nleftrightarrow '
+exe s:pA1a.'nrightarrow <plug>\nrightarrow '
+exe s:pA1a.'nRightarrow <plug>\nRightarrow '
+" }}}
+" MATH Arrows2 {{{
+let s:pA1a = s:pA."Arrows2."
+exe s:pA1a.'dashleftarrow <plug>\dashleftarrow '
+exe s:pA1a.'leftleftarrows <plug>\leftleftarrows '
+exe s:pA1a.'leftrightarrows <plug>\leftrightarrows '
+exe s:pA1a.'Lleftarrow <plug>\Lleftarrow '
+exe s:pA1a.'twoheadleftarrow <plug>\twoheadleftarrow '
+exe s:pA1a.'leftarrowtail <plug>\leftarrowtail '
+exe s:pA1a.'leftrightharpoons <plug>\leftrightharpoons '
+exe s:pA1a.'Lsh <plug>\Lsh '
+exe s:pA1a.'looparrowleft <plug>\looparrowleft '
+exe s:pA1a.'curvearrowleft <plug>\curvearrowleft '
+exe s:pA1a.'circlearrowleft <plug>\circlearrowleft '
+exe s:pA1a.'dashrightarrow <plug>\dashrightarrow '
+exe s:pA1a.'rightrightarrows <plug>\rightrightarrows '
+exe s:pA1a.'rightleftarrows <plug>\rightleftarrows '
+exe s:pA1a.'Rrightarrow <plug>\Rrightarrow '
+exe s:pA1a.'twoheadrightarrow <plug>\twoheadrightarrow '
+exe s:pA1a.'rightarrowtail <plug>\rightarrowtail '
+exe s:pA1a.'rightleftharpoons <plug>\rightleftharpoons '
+exe s:pA1a.'Rsh <plug>\Rsh '
+exe s:pA1a.'looparrowright <plug>\looparrowright '
+exe s:pA1a.'curvearrowright <plug>\curvearrowright '
+exe s:pA1a.'circlearrowright <plug>\circlearrowright '
+exe s:pA1a.'multimap <plug>\multimap '
+exe s:pA1a.'upuparrows <plug>\upuparrows '
+exe s:pA1a.'downdownarrows <plug>\downdownarrows '
+exe s:pA1a.'upharpoonleft <plug>\upharpoonleft '
+exe s:pA1a.'upharpoonright <plug>\upharpoonright '
+exe s:pA1a.'downharpoonleft <plug>\downharpoonleft '
+exe s:pA1a.'downharpoonright <plug>\downharpoonright '
+exe s:pA1a.'rightsquigarrow <plug>\rightsquigarrow '
+exe s:pA1a.'leftrightsquigarrow <plug>\leftrightsquigarrow '
+" }}}
+" MATH Fonts {{{
+let s:pA2a = s:pA."&MathFonts."
+" exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
+exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
+exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
+exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
+exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
+exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
+exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
+exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
+exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
+" }}}
+" Greek Letters small {{{
+let s:pA2 = s:pA."&Greek.&Small."
+exe s:pA2.'alpha<Tab>`a <plug>\alpha '
+exe s:pA2.'beta<Tab>`b <plug>\beta '
+exe s:pA2.'gamma<Tab>`g <plug>\gamma '
+exe s:pA2.'delta<Tab>`d <plug>\delta '
+exe s:pA2.'epsilon <plug>\epsilon '
+exe s:pA2.'varepsilon<Tab>`e <plug>\varepsilon '
+exe s:pA2.'zeta<Tab>`z <plug>\zeta '
+exe s:pA2.'eta<Tab>`h <plug>\eta '
+exe s:pA2.'theta<Tab>`q <plug>\theta '
+exe s:pA2.'vartheta <plug>\vartheta '
+exe s:pA2.'iota<Tab>`i <plug>\iota '
+exe s:pA2.'kappa<Tab>`k <plug>\kappa '
+exe s:pA2.'lambda<Tab>`l <plug>\lambda '
+exe s:pA2.'mu<Tab>`m <plug>\mu '
+exe s:pA2.'nu<Tab>`n <plug>\nu '
+exe s:pA2.'xi<Tab>`x <plug>\xi '
+exe s:pA2.'pi<Tab>`p <plug>\pi '
+exe s:pA2.'varpi <plug>\varpi '
+exe s:pA2.'rho<Tab>`r <plug>\rho '
+exe s:pA2.'varrho <plug>\varrho '
+exe s:pA2.'sigma<Tab>`s <plug>\sigma '
+exe s:pA2.'varsigma<Tab>`v <plug>\varsigma '
+exe s:pA2.'tau<Tab>`t <plug>\tau '
+exe s:pA2.'upsilon<Tab>`u <plug>\upsilon '
+exe s:pA2.'phi <plug>\phi '
+exe s:pA2.'varphi<Tab>`f <plug>\varphi '
+exe s:pA2.'chi<Tab>`c <plug>\chi '
+exe s:pA2.'psi<Tab>`y <plug>\psi '
+exe s:pA2.'omega<Tab>`w <plug>\omega '
+" }}}
+" Greek Letters big {{{
+let s:pA3 = s:pA.'&Greek.&Big.'
+exe s:pA3.'Alpha<Tab>`A <plug>\Alpha '
+exe s:pA3.'Beta<Tab>`B <plug>\Beta '
+exe s:pA3.'Gamma<Tab>`G <plug>\Gamma '
+exe s:pA3.'Delta<Tab>`D <plug>\Delta '
+exe s:pA3.'Epsilon<Tab>`E <plug>\Epsilon '
+exe s:pA3.'Zeta<Tab>`Z <plug>\mathrm{Z} '
+exe s:pA3.'Eta<Tab>`H <plug>\Eta '
+exe s:pA3.'Theta <plug>\Theta '
+exe s:pA3.'Iota <plug>\mathrm{I} '
+exe s:pA3.'Kappa<Tab>`K <plug>\Kappa '
+exe s:pA3.'Lambda<Tab>`L <plug>\Lambda '
+exe s:pA3.'Mu<Tab>`M <plug>\Mu '
+exe s:pA3.'Nu<Tab>`N <plug>\Nu '
+exe s:pA3.'Xi<Tab>`X <plug>\Xi '
+exe s:pA3.'Pi<Tab>`P <plug>\Pi '
+exe s:pA3.'Rho<Tab>`R <plug>\Rho '
+exe s:pA3.'Sigma<Tab>`S <plug>\Sigma '
+exe s:pA3.'Tau<Tab>`T <plug>\Tau '
+exe s:pA3.'Upsilon<Tab>`U <plug>\Upsilon '
+exe s:pA3.'Phi <plug>\Phi '
+exe s:pA3.'Chi<Tab>`C <plug>\Chi '
+exe s:pA3.'Psi<Tab>`Y <plug>\Psi '
+exe s:pA3.'Omega<Tab>`W <plug>\Omega '
+" }}}
+" BinaryRel1 {{{
+let s:pA4 = s:pA."&BinaryRel1."
+exe s:pA4.'ll <plug>\ll '
+exe s:pA4.'lll <plug>\lll '
+exe s:pA4.'leqslant <plug>\leqslant '
+exe s:pA4.'leq <plug>\leq '
+exe s:pA4.'leqq <plug>\leqq '
+exe s:pA4.'eqslantless <plug>\eqslantless '
+exe s:pA4.'lessdot <plug>\lessdot '
+exe s:pA4.'prec <plug>\prec '
+exe s:pA4.'preceq <plug>\preceq '
+exe s:pA4.'preccurlyeq <plug>\preccurlyeq '
+exe s:pA4.'curlyeqprec <plug>\curlyeqprec '
+exe s:pA4.'lesssim <plug>\lesssim '
+exe s:pA4.'lessapprox <plug>\lessapprox '
+exe s:pA4.'precsim <plug>\precsim '
+exe s:pA4.'precapprox <plug>\precapprox '
+exe s:pA4.'in <plug>\in '
+exe s:pA4.'subset<Tab>`( <plug>\subset '
+exe s:pA4.'Subset<Tab>`) <plug>\Subset '
+exe s:pA4.'subseteq <plug>\subseteq '
+exe s:pA4.'subseteqq <plug>\subseteqq '
+exe s:pA4.'sqsubset <plug>\sqsubset '
+exe s:pA4.'sqsubseteq <plug>\sqsubseteq '
+exe s:pA4.'smile <plug>\smile '
+exe s:pA4.'smallsmile <plug>\smallsmile '
+exe s:pA4.'parallel <plug>\parallel '
+exe s:pA4.'shortparallel <plug>\shortparallel '
+exe s:pA4.'dashv <plug>\dashv '
+exe s:pA4.'vdash <plug>\vdash '
+exe s:pA4.'vDash <plug>\vDash '
+exe s:pA4.'models <plug>\models '
+exe s:pA4.'therefore <plug>\therefore '
+exe s:pA4.'backepsilon <plug>\backepsilon '
+" }}}
+" nBinaryRel1 {{{
+let s:pA4a = s:pA."&nBinaryRel1."
+exe s:pA4a.'nless <plug>\nless '
+exe s:pA4a.'nleqslant <plug>\nleqslant '
+exe s:pA4a.'nleq <plug>\nleq '
+exe s:pA4a.'lneq <plug>\lneq '
+exe s:pA4a.'nleqq <plug>\nleqq '
+exe s:pA4a.'lneqq <plug>\lneqq '
+exe s:pA4a.'lvertneqq <plug>\lvertneqq '
+exe s:pA4a.'nprec <plug>\nprec '
+exe s:pA4a.'npreceq <plug>\npreceq '
+exe s:pA4a.'precneqq <plug>\precneqq '
+exe s:pA4a.'lnsim <plug>\lnsim '
+exe s:pA4a.'lnapprox <plug>\lnapprox '
+exe s:pA4a.'precnsim <plug>\precnsim '
+exe s:pA4a.'precnapprox <plug>\precnapprox '
+exe s:pA4a.'notin <plug>\notin '
+exe s:pA4a.'nsubseteq <plug>\nsubseteq '
+exe s:pA4a.'varsubsetneq <plug>\varsubsetneq '
+exe s:pA4a.'subsetneq <plug>\subsetneq '
+exe s:pA4a.'nsubseteqq <plug>\nsubseteqq '
+exe s:pA4a.'varsubsetneqq <plug>\varsubsetneqq '
+exe s:pA4a.'subsetneqq <plug>\subsetneqq '
+exe s:pA4a.'nparallel <plug>\nparallel '
+exe s:pA4a.'nshortparallel <plug>\nshortparallel '
+exe s:pA4a.'nvdash <plug>\nvdash '
+exe s:pA4a.'nvDash <plug>\nvDash '
+" }}}
+" BinaryRel2 {{{
+let s:pA5 = s:pA."&BinaryRel2."
+exe s:pA5.'gg <plug>\gg '
+exe s:pA5.'ggg <plug>\ggg '
+exe s:pA5.'gggtr <plug>\gggtr '
+exe s:pA5.'geqslant <plug>\geqslant '
+exe s:pA5.'geq <plug>\geq '
+exe s:pA5.'geqq <plug>\geqq '
+exe s:pA5.'eqslantgtr <plug>\eqslantgtr '
+exe s:pA5.'gtrdot <plug>\gtrdot '
+exe s:pA5.'succ <plug>\succ '
+exe s:pA5.'succeq <plug>\succeq '
+exe s:pA5.'succcurlyeq <plug>\succcurlyeq '
+exe s:pA5.'curlyeqsucc <plug>\curlyeqsucc '
+exe s:pA5.'gtrsim <plug>\gtrsim '
+exe s:pA5.'gtrapprox <plug>\gtrapprox '
+exe s:pA5.'succsim <plug>\succsim '
+exe s:pA5.'succapprox <plug>\succapprox '
+exe s:pA5.'ni <plug>\ni '
+exe s:pA5.'owns <plug>\owns '
+exe s:pA5.'supset <plug>\supset '
+exe s:pA5.'Supset <plug>\Supset '
+exe s:pA5.'supseteq <plug>\supseteq '
+exe s:pA5.'supseteqq <plug>\supseteqq '
+exe s:pA5.'sqsupset <plug>\sqsupset '
+exe s:pA5.'sqsupseteq <plug>\sqsupseteq '
+exe s:pA5.'frown <plug>\frown '
+exe s:pA5.'smallfrown <plug>\smallfrown '
+exe s:pA5.'mid <plug>\mid '
+exe s:pA5.'shortmid <plug>\shortmid '
+exe s:pA5.'between <plug>\between '
+exe s:pA5.'Vdash <plug>\Vdash '
+exe s:pA5.'bowtie <plug>\bowtie '
+exe s:pA5.'Join <plug>\Join '
+exe s:pA5.'pitchfork <plug>\pitchfork '
+" }}}
+" {{{ nBinaryRel2
+let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiæ logarytmy
+exe s:pA5a.'ngtr <plug>\ngtr '
+exe s:pA5a.'ngeqslant <plug>\ngeqslant '
+exe s:pA5a.'ngeq <plug>\ngeq '
+exe s:pA5a.'gneq <plug>\gneq '
+exe s:pA5a.'ngeqq <plug>\ngeqq '
+exe s:pA5a.'gneqq <plug>\gneqq '
+exe s:pA5a.'nsucc <plug>\nsucc '
+exe s:pA5a.'nsucceq <plug>\nsucceq '
+exe s:pA5a.'succneqq <plug>\succneqq '
+exe s:pA5a.'gnsim <plug>\gnsim '
+exe s:pA5a.'gnapprox <plug>\gnapprox '
+exe s:pA5a.'succnsim <plug>\succnsim '
+exe s:pA5a.'succnapprox <plug>\succnapprox '
+exe s:pA5a.'nsupseteq <plug>\nsupseteq '
+exe s:pA5a.'varsupsetneq <plug>\varsupsetneq '
+exe s:pA5a.'supsetneq <plug>\supsetneq '
+exe s:pA5a.'nsupseteqq <plug>\nsupseteqq '
+exe s:pA5a.'varsupsetneqq <plug>\varsupsetneqq '
+exe s:pA5a.'supsetneqq <plug>\supsetneqq '
+exe s:pA5a.'nmid <plug>\nmid '
+exe s:pA5a.'nshortmid <plug>\nshortmid '
+exe s:pA5a.'nVdash <plug>\nVdash '
+" }}}
+" {{{ BinaryRel3
+let s:pA6 = s:pA."&BinaryRel3."
+exe s:pA6.'doteq <plug>\doteq '
+exe s:pA6.'circeq <plug>\circeq '
+exe s:pA6.'eqcirc <plug>\eqcirc '
+exe s:pA6.'risingdotseq <plug>\risingdotseq '
+exe s:pA6.'doteqdot <plug>\doteqdot '
+exe s:pA6.'Doteq <plug>\Doteq '
+exe s:pA6.'fallingdotseq <plug>\fallingdotseq '
+exe s:pA6.'triangleq <plug>\triangleq '
+exe s:pA6.'bumpeq <plug>\bumpeq '
+exe s:pA6.'Bumpeq <plug>\Bumpeq '
+exe s:pA6.'equiv<Tab>`= <plug>\equiv '
+exe s:pA6.'sim <plug>\sim '
+exe s:pA6.'thicksim <plug>\thicksim '
+exe s:pA6.'backsim <plug>\backsim '
+exe s:pA6.'simeq <plug>\simeq '
+exe s:pA6.'backsimeq <plug>\backsimeq '
+exe s:pA6.'cong <plug>\cong '
+exe s:pA6.'approx<tab>=~ <plug>\approx '
+exe s:pA6.'thickapprox <plug>\thickapprox '
+exe s:pA6.'approxeq <plug>\approxeq '
+exe s:pA6.'blacktriangleleft <plug>\blacktriangleleft '
+exe s:pA6.'vartriangleleft <plug>\vartriangleleft '
+exe s:pA6.'trianglelefteq <plug>\trianglelefteq '
+exe s:pA6.'blacktriangleright <plug>\blacktriangleright '
+exe s:pA6.'vartriangleright <plug>\vartriangleright '
+exe s:pA6.'trianglerighteq <plug>\trianglerighteq '
+exe s:pA6.'perp <plug>\perp '
+exe s:pA6.'asymp <plug>\asymp '
+exe s:pA6.'Vvdash <plug>\Vvdash '
+exe s:pA6.'propto <plug>\propto '
+exe s:pA6.'varpropto <plug>\varpropto '
+exe s:pA6.'because <plug>\because '
+" }}}
+" {{{ nBinaryRel3
+let s:pA6a = s:pA."&nBinaryRel3."
+exe s:pA6a.'neq <plug>\neq '
+exe s:pA6a.'nsim <plug>\nsim '
+exe s:pA6a.'ncong <plug>\ncong '
+exe s:pA6a.'ntriangleleft <plug>\ntriangleleft '
+exe s:pA6a.'ntrianglelefteq <plug>\ntrianglelefteq '
+exe s:pA6a.'ntriangleright <plug>\ntriangleright '
+exe s:pA6a.'ntrianglerighteq <plug>\ntrianglerighteq '
+" }}}
+" {{{ BinaryRel4
+let s:pA7 = s:pA."&BinaryRel4."
+exe s:pA7.'lessgtr <plug>\lessgtr '
+exe s:pA7.'gtrless <plug>\gtrless '
+exe s:pA7.'lesseqgtr <plug>\lesseqgtr '
+exe s:pA7.'gtreqless <plug>\gtreqless '
+exe s:pA7.'lesseqqgtr <plug>\lesseqqgtr '
+exe s:pA7.'gtreqqless <plug>\gtreqqless '
+" }}}
+" {{{ BigOp
+let s:pA8a = s:pA."&BigOp."
+exe s:pA8a.'limits <plug>\limits'
+exe s:pA8a.'nolimits <plug>\nolimits'
+exe s:pA8a.'displaylimits <plug>\displaylimits'
+exe s:pA8a.'-seplimits- :'
+exe s:pA8a.'bigcap<Tab>`- <plug>\bigcap'
+exe s:pA8a.'bigcup<Tab>`+ <plug>\bigcup'
+exe s:pA8a.'bigodot <plug>\bigodot'
+exe s:pA8a.'bigoplus <plug>\bigoplus'
+exe s:pA8a.'bigotimes <plug>\bigotimes'
+exe s:pA8a.'bigsqcup <plug>\bigsqcup'
+exe s:pA8a.'biguplus <plug>\biguplus'
+exe s:pA8a.'bigvee <plug>\bigvee'
+exe s:pA8a.'bigwedge <plug>\bigwedge'
+exe s:pA8a.'coprod <plug>\coprod'
+exe s:pA8a.'int <plug>\int'
+exe s:pA8a.'oint <plug>\oint'
+exe s:pA8a.'prod <plug>\prod'
+exe s:pA8a.'sum <plug>\sum'
+" }}}
+" {{{ BinaryOp
+let s:pA8 = s:pA."&BinaryOp."
+exe s:pA8.'pm <plug>\pm '
+exe s:pA8.'mp <plug>\mp '
+exe s:pA8.'dotplus <plug>\dotplus '
+exe s:pA8.'cdot<Tab>`. <plug>\cdot '
+exe s:pA8.'centerdot <plug>\centerdot '
+exe s:pA8.'times<Tab>`* <plug>\times '
+exe s:pA8.'ltimes <plug>\ltimes '
+exe s:pA8.'rtimes <plug>\rtimes '
+exe s:pA8.'leftthreetimes <plug>\leftthreetimes '
+exe s:pA8.'rightthreetimes <plug>\rightthreetimes '
+exe s:pA8.'div <plug>\div '
+exe s:pA8.'divideontimes <plug>\divideontimes '
+exe s:pA8.'bmod <plug>\bmod '
+exe s:pA8.'ast <plug>\ast '
+exe s:pA8.'star <plug>\star '
+exe s:pA8.'setminus<Tab>`\\ <plug>\setminus '
+exe s:pA8.'smallsetminus <plug>\smallsetminus '
+exe s:pA8.'diamond <plug>\diamond '
+exe s:pA8.'wr <plug>\wr '
+exe s:pA8.'intercal <plug>\intercal '
+exe s:pA8.'circ<Tab>`@ <plug>\circ '
+exe s:pA8.'bigcirc <plug>\bigcirc '
+exe s:pA8.'bullet <plug>\bullet '
+exe s:pA8.'cap <plug>\cap '
+exe s:pA8.'Cap <plug>\Cap '
+exe s:pA8.'cup <plug>\cup '
+exe s:pA8.'Cup <plug>\Cup '
+exe s:pA8.'sqcap <plug>\sqcap '
+exe s:pA8.'sqcup <plug>\sqcup'
+exe s:pA8.'amalg <plug>\amalg '
+exe s:pA8.'uplus <plug>\uplus '
+exe s:pA8.'triangleleft <plug>\triangleleft '
+exe s:pA8.'triangleright <plug>\triangleright '
+exe s:pA8.'bigtriangleup <plug>\bigtriangleup '
+exe s:pA8.'bigtriangledown <plug>\bigtriangledown '
+exe s:pA8.'vee <plug>\vee '
+exe s:pA8.'veebar <plug>\veebar '
+exe s:pA8.'curlyvee <plug>\curlyvee '
+exe s:pA8.'wedge<Tab>`& <plug>\wedge '
+exe s:pA8.'barwedge <plug>\barwedge '
+exe s:pA8.'doublebarwedge <plug>\doublebarwedge '
+exe s:pA8.'curlywedge <plug>\curlywedge '
+exe s:pA8.'oplus <plug>\oplus '
+exe s:pA8.'ominus <plug>\ominus '
+exe s:pA8.'otimes <plug>\otimes '
+exe s:pA8.'oslash <plug>\oslash '
+exe s:pA8.'boxplus <plug>\boxplus '
+exe s:pA8.'boxminus <plug>\boxminus '
+exe s:pA8.'boxtimes <plug>\boxtimes '
+exe s:pA8.'boxdot <plug>\boxdot '
+exe s:pA8.'odot <plug>\odot '
+exe s:pA8.'circledast <plug>\circledast '
+exe s:pA8.'circleddash <plug>\circleddash '
+exe s:pA8.'circledcirc <plug>\circledcirc '
+exe s:pA8.'dagger <plug>\dagger '
+exe s:pA8.'ddagger <plug>\ddagger '
+exe s:pA8.'lhd <plug>\lhd '
+exe s:pA8.'unlhd <plug>\unlhd '
+exe s:pA8.'rhd <plug>\rhd '
+exe s:pA8.'unrhd <plug>\unrhd '
+" }}}
+" {{{ Other1
+let s:pA9 = s:pA."&Other1."
+exe s:pA9.'hat <plug>\hat '
+exe s:pA9.'check <plug>\check '
+exe s:pA9.'grave <plug>\grave '
+exe s:pA9.'acute <plug>\acute '
+exe s:pA9.'dot <plug>\dot '
+exe s:pA9.'ddot <plug>\ddot '
+exe s:pA9.'tilde<Tab>`, <plug>\tilde '
+exe s:pA9.'breve <plug>\breve '
+exe s:pA9.'bar <plug>\bar '
+exe s:pA9.'vec <plug>\vec '
+exe s:pA9.'aleph <plug>\aleph '
+exe s:pA9.'hbar <plug>\hbar '
+exe s:pA9.'imath <plug>\imath '
+exe s:pA9.'jmath <plug>\jmath '
+exe s:pA9.'ell <plug>\ell '
+exe s:pA9.'wp <plug>\wp '
+exe s:pA9.'Re <plug>\Re '
+exe s:pA9.'Im <plug>\Im '
+exe s:pA9.'partial <plug>\partial '
+exe s:pA9.'infty<Tab>`8 <plug>\infty '
+exe s:pA9.'prime <plug>\prime '
+exe s:pA9.'emptyset <plug>\emptyset '
+exe s:pA9.'nabla <plug>\nabla '
+exe s:pA9.'surd <plug>\surd '
+exe s:pA9.'top <plug>\top '
+exe s:pA9.'bot <plug>\bot '
+exe s:pA9.'angle <plug>\angle '
+exe s:pA9.'triangle <plug>\triangle '
+exe s:pA9.'backslash <plug>\backslash '
+exe s:pA9.'forall <plug>\forall '
+exe s:pA9.'exists <plug>\exists '
+exe s:pA9.'neg <plug>\neg '
+exe s:pA9.'flat <plug>\flat '
+exe s:pA9.'natural <plug>\natural '
+exe s:pA9.'sharp <plug>\sharp '
+exe s:pA9.'clubsuit <plug>\clubsuit '
+exe s:pA9.'diamondsuit <plug>\diamondsuit '
+exe s:pA9.'heartsuit <plug>\heartsuit '
+exe s:pA9.'spadesuit <plug>\spadesuit '
+exe s:pA9.'S <plug>\S '
+exe s:pA9.'P <plug>\P'
+" }}}
+" {{{ MathCreating
+let s:pA10 = s:pA."&MathCreating."
+exe s:pA10.'not <plug>\not'
+exe s:pA10.'mkern <plug>\mkern'
+exe s:pA10.'mathbin <plug>\mathbin'
+exe s:pA10.'mathrel <plug>\mathrel'
+exe s:pA10.'stackrel <plug>\stackrel'
+exe s:pA10.'mathord <plug>\mathord'
+" }}}
+" {{{ Styles
+let s:pA11 = s:pA."&Styles."
+exe s:pA11.'displaystyle <plug>\displaystyle'
+exe s:pA11.'textstyle <plug>\textstyle'
+exe s:pA11.'scritpstyle <plug>\scritpstyle'
+exe s:pA11.'scriptscriptstyle <plug>\scriptscriptstyle'
+" }}}
+" {{{ MathDiacritics
+let s:pA12 = s:pA."&MathDiacritics."
+exe s:pA12.'acute{} <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
+exe s:pA12.'bar{}<Tab>`_ <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
+exe s:pA12.'breve{} <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
+exe s:pA12.'check{} <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
+exe s:pA12.'ddot{}<Tab>`: <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
+exe s:pA12.'dot{}<Tab>`; <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
+exe s:pA12.'grave{} <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
+exe s:pA12.'hat{}<Tab>`^ <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
+exe s:pA12.'tilde{}<tab>`~ <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
+exe s:pA12.'vec{} <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
+exe s:pA12.'widehat{} <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
+exe s:pA12.'widetilde{} <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
+exe s:pA12.'imath <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
+exe s:pA12.'jmath <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
+" }}}
+" {{{ OverlineAndCo
+let s:pA13 = s:pA."&OverlineAndCo."
+exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
+exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
+exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
+exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
+exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
+exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
+" }}}
+" {{{ Symbols1
+let s:pA14a = s:pA."&Symbols1."
+exe s:pA14a.'forall <plug>\forall '
+exe s:pA14a.'exists <plug>\exists '
+exe s:pA14a.'nexists <plug>\nexists '
+exe s:pA14a.'neg <plug>\neg '
+exe s:pA14a.'top <plug>\top '
+exe s:pA14a.'bot <plug>\bot '
+exe s:pA14a.'emptyset <plug>\emptyset '
+exe s:pA14a.'varnothing <plug>\varnothing '
+exe s:pA14a.'infty <plug>\infty '
+exe s:pA14a.'aleph <plug>\aleph '
+exe s:pA14a.'beth <plug>\beth '
+exe s:pA14a.'gimel <plug>\gimel '
+exe s:pA14a.'daleth <plug>\daleth '
+exe s:pA14a.'hbar <plug>\hbar '
+exe s:pA14a.'hslash <plug>\hslash '
+exe s:pA14a.'diagup <plug>\diagup '
+exe s:pA14a.'vert <plug>\vert '
+exe s:pA14a.'Vert <plug>\Vert '
+exe s:pA14a.'backslash <plug>\backslash '
+exe s:pA14a.'diagdown <plug>\diagdown '
+exe s:pA14a.'Bbbk <plug>\Bbbk '
+exe s:pA14a.'P <plug>\P '
+exe s:pA14a.'S <plug>\S '
+" }}}
+" {{{ Symbols2
+let s:pA14b = s:pA."&Symbols2."
+exe s:pA14b.'# <plug>\# '
+exe s:pA14b.'% <plug>\% '
+exe s:pA14b.'_ <plug>\_ '
+exe s:pA14b.'$ <plug>\$ '
+exe s:pA14b.'& <plug>\& '
+exe s:pA14b.'imath <plug>\imath '
+exe s:pA14b.'jmath <plug>\jmath '
+exe s:pA14b.'ell <plug>\ell '
+exe s:pA14b.'wp <plug>\wp '
+exe s:pA14b.'Re <plug>\Re '
+exe s:pA14b.'Im <plug>\Im '
+exe s:pA14b.'prime <plug>\prime '
+exe s:pA14b.'backprime <plug>\backprime '
+exe s:pA14b.'nabla <plug>\nabla '
+exe s:pA14b.'surd <plug>\surd '
+exe s:pA14b.'flat <plug>\flat '
+exe s:pA14b.'sharp <plug>\sharp '
+exe s:pA14b.'natural <plug>\natural '
+exe s:pA14b.'eth <plug>\eth '
+exe s:pA14b.'bigstar <plug>\bigstar '
+exe s:pA14b.'circledS <plug>\circledS '
+exe s:pA14b.'Finv <plug>\Finv '
+exe s:pA14b.'dag <plug>\dag '
+exe s:pA14b.'ddag <plug>\ddag '
+" }}}
+" {{{ Symbols3
+let s:pA14c = s:pA."&Symbols3."
+exe s:pA14c.'angle <plug>\angle '
+exe s:pA14c.'measuredangle <plug>\measuredangle '
+exe s:pA14c.'sphericalangle <plug>\sphericalangle '
+exe s:pA14c.'spadesuit <plug>\spadesuit '
+exe s:pA14c.'heartsuit <plug>\heartsuit '
+exe s:pA14c.'diamondsuit <plug>\diamondsuit '
+exe s:pA14c.'clubsuit <plug>\clubsuit '
+exe s:pA14c.'lozenge <plug>\lozenge '
+exe s:pA14c.'blacklozenge <plug>\blacklozenge '
+exe s:pA14c.'Diamond <plug>\Diamond '
+exe s:pA14c.'triangle <plug>\triangle '
+exe s:pA14c.'vartriangle <plug>\vartriangle '
+exe s:pA14c.'blacktriangle <plug>\blacktriangle '
+exe s:pA14c.'triangledown <plug>\triangledown '
+exe s:pA14c.'blacktriangledown <plug>\blacktriangledown '
+exe s:pA14c.'Box <plug>\Box '
+exe s:pA14c.'square <plug>\square '
+exe s:pA14c.'blacksquare <plug>\blacksquare '
+exe s:pA14c.'complement <plug>\complement '
+exe s:pA14c.'mho <plug>\mho '
+exe s:pA14c.'Game <plug>\Game '
+exe s:pA14c.'partial<Tab>`6 <plug>\partial '
+exe s:pA14c.'smallint <plug>\smallint '
+" }}}
+" {{{ Logic
+let s:pA15 = s:pA."&Logic."
+exe s:pA15.'lnot <plug>\lnot '
+exe s:pA15.'lor <plug>\lor '
+exe s:pA15.'land <plug>\land '
+" }}}
+" {{{ Limits1
+let s:pA16 = s:pA."&Limits1."
+exe s:pA16.'left <plug>\left'
+exe s:pA16.'right <plug>\right'
+exe s:pA16.'-sepbigl- :'
+exe s:pA16.'bigl <plug>\bigl'
+exe s:pA16.'Bigl <plug>\Bigl'
+exe s:pA16.'biggl <plug>\biggl'
+exe s:pA16.'Biggl <plug>\Biggl'
+exe s:pA16.'-sepbigr- :'
+exe s:pA16.'bigr <plug>\bigr'
+exe s:pA16.'Bigr <plug>\Bigr'
+exe s:pA16.'biggr <plug>\biggr'
+exe s:pA16.'Biggr <plug>\Biggr'
+exe s:pA16.'-sepbig- :'
+exe s:pA16.'big <plug>\big'
+exe s:pA16.'bigm <plug>\bigm'
+exe s:pA16.'-sepfloor- :'
+exe s:pA16.'lfloor <plug>\lfloor '
+exe s:pA16.'lceil <plug>\lceil '
+exe s:pA16.'rfloor <plug>\rfloor '
+exe s:pA16.'rceil <plug>\rceil '
+exe s:pA16.'-sepangle- :'
+exe s:pA16.'langle <plug>\langle '
+exe s:pA16.'rangle <plug>\rangle '
+" }}}
+" {{{ Limits2
+let s:pA16a = s:pA."&Limits2."
+exe s:pA16a.'ulcorner <plug>\ulcorner '
+exe s:pA16a.'urcorner <plug>\urcorner '
+exe s:pA16a.'llcorner <plug>\llcorner '
+exe s:pA16a.'rlcorner <plug>\rlcorner '
+exe s:pA16a.'-sepcorner- :'
+exe s:pA16a.'vert <plug>\vert '
+exe s:pA16a.'Vert <plug>\Vert '
+exe s:pA16a.'lvert <plug>\lvert '
+exe s:pA16a.'lVert <plug>\lVert '
+exe s:pA16a.'rvert <plug>\rvert '
+exe s:pA16a.'rVert <plug>\rVert '
+exe s:pA16a.'uparrow <plug>\uparrow '
+exe s:pA16a.'Uparrow <plug>\Uparrow '
+exe s:pA16a.'downarrow <plug>\downarrow '
+exe s:pA16a.'Downarrow <plug>\Downarrow '
+exe s:pA16a.'updownarrow <plug>\updownarrow '
+exe s:pA16a.'Updownarrow <plug>\Updownarrow '
+exe s:pA16a.'lgroup <plug>\lgroup '
+exe s:pA16a.'rgroup <plug>\rgroup '
+exe s:pA16a.'lmoustache <plug>\lmoustache '
+exe s:pA16a.'rmoustache <plug>\rmoustache '
+exe s:pA16a.'arrowvert <plug>\arrowvert '
+exe s:pA16a.'Arrowvert <plug>\Arrowvert '
+exe s:pA16a.'bracevert <plug>\bracevert '
+" }}}
+" {{{ Log-likes
+let s:pA17 = s:pA."Lo&g-likes."
+exe s:pA17.'arccos <plug>\arccos '
+exe s:pA17.'arcsin <plug>\arcsin '
+exe s:pA17.'arctan <plug>\arctan '
+exe s:pA17.'arg <plug>\arg '
+exe s:pA17.'cos <plug>\cos '
+exe s:pA17.'cosh <plug>\cosh '
+exe s:pA17.'cot <plug>\cot '
+exe s:pA17.'coth <plug>\coth '
+exe s:pA17.'csc <plug>\csc '
+exe s:pA17.'deg <plug>\deg '
+exe s:pA17.'det <plug>\det '
+exe s:pA17.'dim <plug>\dim '
+exe s:pA17.'exp <plug>\exp '
+exe s:pA17.'gcd <plug>\gcd '
+exe s:pA17.'hom <plug>\hom '
+exe s:pA17.'inf <plug>\inf '
+exe s:pA17.'injlim <plug>\injlim '
+exe s:pA17.'ker <plug>\ker '
+exe s:pA17.'lg <plug>\lg '
+exe s:pA17.'lim <plug>\lim '
+exe s:pA17.'liminf <plug>\liminf '
+exe s:pA17.'limsup <plug>\limsup '
+exe s:pA17.'ln <plug>\ln '
+exe s:pA17.'log <plug>\log '
+exe s:pA17.'max <plug>\max '
+exe s:pA17.'min <plug>\min '
+exe s:pA17.'Pr <plug>\Pr '
+exe s:pA17.'projlim <plug>\projlim '
+exe s:pA17.'sec <plug>\sec '
+exe s:pA17.'sin <plug>\sin '
+exe s:pA17.'sinh <plug>\sinh '
+exe s:pA17.'sup <plug>\sup '
+exe s:pA17.'tan <plug>\tan '
+exe s:pA17.'tanh <plug>\tanh '
+exe s:pA17.'varlimsup <plug>\varlimsup '
+exe s:pA17.'varliminf <plug>\varliminf '
+exe s:pA17.'varinjlim <plug>\varinjlim '
+exe s:pA17.'varprojlim <plug>\varprojlim '
+" }}}
+" {{{ MathSpacing
+let s:pA18 = s:pA."MathSpacing."
+exe s:pA18.', <plug>\, '
+exe s:pA18.': <plug>\: '
+exe s:pA18.'; <plug>\; '
+exe s:pA18.'[space] <plug>\ '
+exe s:pA18.'quad <plug>\quad '
+exe s:pA18.'qquad <plug>\qquad '
+exe s:pA18.'! <plug>\! '
+exe s:pA18.'thinspace <plug>\thinspace '
+exe s:pA18.'medspace <plug>\medspace '
+exe s:pA18.'thickspace <plug>\thickspace '
+exe s:pA18.'negthinspace <plug>\negthinspace '
+exe s:pA18.'negmedspace <plug>\negmedspace '
+exe s:pA18.'negthickspace <plug>\negthickspace '
+" 1}}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/multicompile.vim b/.vim/ftplugin/latex-suite/multicompile.vim
new file mode 100644
index 0000000..f5598cc
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/multicompile.vim
@@ -0,0 +1,17 @@
+" ============================================================================
+" File: multicompile.vim
+" Author: Srinath Avadhanula
+" Created: Sat Jul 05 03:00 PM 2003
+" Description: compile a .tex file multiple times to get cross references
+" right.
+" License: Vim Charityware License
+" Part of vim-latexSuite: http://vim-latex.sourceforge.net
+" CVS: $Id: multicompile.vim 997 2006-03-20 09:45:45Z srinathava $
+" ============================================================================
+
+" The contents of this file have been moved to compiler.vim, the file which
+" contains all functions relevant to compiling and viewing.
+" This file is kept empty on purpose so that it will over-write previous
+" versions of multicompile.vim, therby preventing conflicts.
+
+" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/outline.py b/.vim/ftplugin/latex-suite/outline.py
new file mode 100644
index 0000000..7bb6896
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/outline.py
@@ -0,0 +1,186 @@
+#!/usr/bin/python
+
+# Part of Latex-Suite
+#
+# Copyright: Srinath Avadhanula
+# Description:
+# This file implements a simple outline creation for latex documents.
+
+import re
+import os
+import sys
+import StringIO
+
+# getFileContents {{{
+def getFileContents(argin, ext=''):
+ if type(argin) is str:
+ fname = argin + ext
+ else:
+ fname = argin.group(3) + ext
+
+ # This longish thing is to make sure that all files are converted into
+ # \n seperated lines.
+ contents = '\n'.join(open(fname).read().splitlines())
+
+ # TODO what are all the ways in which a tex file can include another?
+ pat = re.compile(r'^\\(@?)(include|input){(.*?)}', re.M)
+ contents = re.sub(pat, lambda input: getFileContents(input, ext), contents)
+
+ return ('%%==== FILENAME: %s' % fname) + '\n' + contents
+
+# }}}
+# stripComments {{{
+def stripComments(contents):
+ # remove all comments except those of the form
+ # %%==== FILENAME: <filename.tex>
+ uncomm = [re.sub('%(?!==== FILENAME: ).*', '', line) for line in contents.splitlines()]
+ # also remove all only-whitespace lines.
+ nonempty = [line for line in uncomm if line.strip()]
+
+ return nonempty
+# }}}
+# addFileNameAndNumber {{{
+def addFileNameAndNumber(lines):
+ filename = ''
+ retval = ''
+ for line in lines:
+ if re.match('%==== FILENAME: ', line):
+ filename = line.split('%==== FILENAME: ')[1]
+ else:
+ retval += '<%s>%s\n' % (filename, line)
+
+ return retval
+# }}}
+# getSectionLabels_Root {{{
+def getSectionLabels_Root(lineinfo, section_prefix, label_prefix):
+ prev_txt = ''
+ inside_env = 0
+ prev_env = ''
+ outstr = StringIO.StringIO('')
+ pres_depth = len(section_prefix)
+
+ #print '+getSectionLabels_Root: lineinfo = [%s]' % lineinfo
+ for line in lineinfo.splitlines():
+ if not line:
+ continue
+
+ # throw away leading white-space
+ m = re.search('<(.*?)>(.*)', line)
+
+ fname = m.group(1)
+ line = m.group(2).lstrip()
+
+ # we found a label!
+ m = re.search(r'\\label{(%s.*?)}' % label_prefix, line)
+ if m:
+ # add the current line (except the \label command) to the text
+ # which will be displayed below this label
+ prev_txt += re.search(r'(^.*?)\\label{', line).group(1)
+
+ # for the figure environment however, just display the caption.
+ # instead of everything since the \begin command.
+ if prev_env == 'figure':
+ cm = re.search(r'\caption(\[.*?\]\s*)?{(.*?)}', prev_txt)
+ if cm:
+ prev_txt = cm.group(2)
+
+ # print a nice formatted text entry like so
+ #
+ # > eqn:label
+ # : e^{i\pi} + 1 = 0
+ #
+ # Use the current "section depth" for the leading indentation.
+ print >>outstr, '>%s%s\t\t<%s>' % (' '*(2*pres_depth+2),
+ m.group(1), fname)
+ print >>outstr, ':%s%s' % (' '*(2*pres_depth+4), prev_txt)
+ prev_txt = ''
+
+ # If we just encoutered the start or end of an environment or a
+ # label, then do not remember this line.
+ # NOTE: This assumes that there is no equation text on the same
+ # line as the \begin or \end command. The text on the same line as
+ # the \label was already handled.
+ if re.search(r'\\begin{(equation|eqnarray|align|figure)', line):
+ prev_txt = ''
+ prev_env = re.search(r'\\begin{(.*?)}', line).group(1)
+ inside_env = 1
+
+ elif re.search(r'\\label', line):
+ prev_txt = ''
+
+ elif re.search(r'\\end{(equation|eqnarray|align|figure)', line):
+ inside_env = 0
+ prev_env = ''
+
+ else:
+ # If we are inside an environment, then the text displayed with
+ # the label is the complete text within the environment,
+ # otherwise its just the previous line.
+ if inside_env:
+ prev_txt += line
+ else:
+ prev_txt = line
+
+ return outstr.getvalue()
+
+# }}}
+# getSectionLabels {{{
+def getSectionLabels(lineinfo,
+ sectypes=['chapter', 'section', 'subsection', 'subsubsection'],
+ section_prefix='', label_prefix=''):
+
+ if not sectypes:
+ return getSectionLabels_Root(lineinfo, section_prefix, label_prefix)
+
+ ##print 'sectypes[0] = %s, section_prefix = [%s], lineinfo = [%s]' % (
+ ## sectypes[0], section_prefix, lineinfo)
+
+ sections = re.split(r'(<.*?>\\%s{.*})' % sectypes[0], lineinfo)
+
+ # there will 1+2n sections, the first containing the "preamble" and the
+ # others containing the child sections as paris of [section_name,
+ # section_text]
+
+ rettext = getSectionLabels(sections[0], sectypes[1:], section_prefix, label_prefix)
+
+ for i in range(1,len(sections),2):
+ sec_num = (i+1)/2
+ section_name = re.search(r'\\%s{(.*?)}' % sectypes[0], sections[i]).group(1)
+ section_label_text = getSectionLabels(sections[i] + sections[i+1], sectypes[1:],
+ section_prefix+('%d.' % sec_num), label_prefix)
+
+ if section_label_text:
+ sec_heading = 2*' '*len(section_prefix) + section_prefix
+ sec_heading += '%d. %s' % (sec_num, section_name)
+ sec_heading += '<<<%d\n' % (len(section_prefix)/2+1)
+
+ rettext += sec_heading + section_label_text
+
+ return rettext
+
+# }}}
+
+# main {{{
+def main(fname, label_prefix):
+ [head, tail] = os.path.split(fname)
+ if head:
+ os.chdir(head)
+
+ [root, ext] = os.path.splitext(tail)
+ contents = getFileContents(root, ext)
+ nonempty = stripComments(contents)
+ lineinfo = addFileNameAndNumber(nonempty)
+
+ return getSectionLabels(lineinfo, label_prefix=label_prefix)
+# }}}
+
+if __name__ == "__main__":
+ if len(sys.argv) > 2:
+ prefix = sys.argv[2]
+ else:
+ prefix = ''
+
+ print main(sys.argv[1], prefix)
+
+
+# vim: fdm=marker
diff --git a/.vim/ftplugin/latex-suite/outline.pyc b/.vim/ftplugin/latex-suite/outline.pyc
new file mode 100644
index 0000000..8049cdc
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/outline.pyc
Binary files differ
diff --git a/.vim/ftplugin/latex-suite/packages.vim b/.vim/ftplugin/latex-suite/packages.vim
new file mode 100644
index 0000000..c3bf2b1
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages.vim
@@ -0,0 +1,669 @@
+"=============================================================================
+" File: packages.vim
+" Author: Mikolaj Machowski
+" Created: Tue Apr 23 06:00 PM 2002 PST
+" CVS: $Id: packages.vim 997 2006-03-20 09:45:45Z srinathava $
+"
+" Description: handling packages from within vim
+"=============================================================================
+
+" avoid reinclusion.
+if !g:Tex_PackagesMenu || exists('s:doneOnce')
+ finish
+endif
+let s:doneOnce = 1
+
+let s:path = expand("<sfile>:p:h")
+
+let s:menu_div = 20
+
+com! -nargs=0 TPackageUpdate :silent! call Tex_pack_updateall(1)
+com! -nargs=0 TPackageUpdateAll :silent! call Tex_pack_updateall(1)
+
+" Custom command-line completion of Tcommands is very useful but this feature
+" is available only in Vim 6.2 and above. Check number of version and choose
+" proper command and function.
+if v:version >= 602
+ com! -complete=custom,Tex_CompletePackageName -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
+
+ " Tex_CompletePackageName: for completing names in TPackage command {{{
+ " Description: get list of package names with globpath(), remove full path
+ " and return list of names separated with newlines.
+ "
+ function! Tex_CompletePackageName(A,P,L)
+ " Get name of packages from all runtimepath directories
+ let packnames = Tex_FindInRtp('', 'packages')
+ let packnames = substitute(packnames, '^,', '', 'e')
+ " Separate names with \n not ,
+ let packnames = substitute(packnames,',','\n','g')
+ return packnames
+ endfunction
+ " }}}
+
+else
+ com! -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
+
+endif
+
+imap <silent> <plug> <Nop>
+nmap <silent> <plug> i
+
+let g:Tex_package_supported = ''
+let g:Tex_package_detected = ''
+" Remember the defaults because we want g:Tex_PromptedEnvironments to contain
+" in addition to the default, \newenvironments, and the \newenvironments might
+" change...
+let g:Tex_PromptedEnvironmentsDefault = g:Tex_PromptedEnvironments
+let g:Tex_PromptedCommandsDefault = g:Tex_PromptedCommands
+
+
+" Tex_pack_check: creates the package menu and adds to 'dict' setting. {{{
+"
+function! Tex_pack_check(package)
+ " Use Tex_FindInRtp() function to get first name from packages list in all
+ " rtp directories conforming with latex-suite directories hierarchy
+ " Store names in variables to process functions only once.
+ let packname = Tex_FindInRtp(a:package, 'packages')
+ if packname != ''
+ exe 'runtime! ftplugin/latex-suite/packages/' . a:package
+ if has("gui_running")
+ call Tex_pack(a:package)
+ endif
+ if g:Tex_package_supported !~ a:package
+ let g:Tex_package_supported = g:Tex_package_supported.','.a:package
+ endif
+ endif
+ " Return full list of dictionaries (separated with ,) for package in &rtp
+ call Tex_Debug("Tex_pack_check: searching for ".a:package." in dictionaries/ in &rtp", "pack")
+ let dictname = Tex_FindInRtp(a:package, 'dictionaries', ':p')
+ if dictname != ''
+ exe 'setlocal dict^=' . dictname
+ call Tex_Debug('Tex_pack_check: setlocal dict^=' . dictname, 'pack')
+ if g:Tex_package_supported !~ a:package
+ let g:Tex_package_supported = g:Tex_package_supported.','.a:package
+ endif
+ endif
+ if g:Tex_package_detected !~ '\<'.a:package.'\>'
+ let g:Tex_package_detected = g:Tex_package_detected.','.a:package
+ endif
+ let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
+ let g:Tex_package_supported = substitute(g:Tex_package_supported, '^,', '', '')
+endfunction
+
+" }}}
+" Tex_pack_uncheck: removes package from menu and 'dict' settings. {{{
+function! Tex_pack_uncheck(package)
+ if has("gui_running") && Tex_FindInRtp(a:package, 'packages') != ''
+ exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.'-sep'.a:package.'-'
+ exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Options'
+ exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Commands'
+ endif
+ if Tex_FindInRtp(a:package, 'dictionaries') != ''
+ exe 'setlocal dict-='.Tex_FindInRtp(a:package, 'dictionaries')
+ endif
+endfunction
+
+" }}}
+" Tex_pack_updateall: updates the TeX-Packages menu {{{
+" Description:
+" This function first calls Tex_pack_all to scan for \usepackage's etc if
+" necessary. After that, it 'supports' and 'unsupports' packages as needed
+" in such a way as to not repeat work.
+function! Tex_pack_updateall(force)
+ call Tex_Debug('+Tex_pack_updateall', 'pack')
+
+ " Find out which file we need to scan.
+ let fname = Tex_GetMainFileName(':p')
+
+ " If this is the same as last time, don't repeat.
+ if !a:force && exists('s:lastScannedFile') &&
+ \ s:lastScannedFile == fname
+ return
+ endif
+ " Remember which file we scanned for next time.
+ let s:lastScannedFile = fname
+
+ " Remember which packages we detected last time.
+ if exists('g:Tex_package_detected')
+ let oldpackages = g:Tex_package_detected
+ else
+ let oldpackages = ''
+ endif
+
+ " This sets up a global variable of all detected packages.
+ let g:Tex_package_detected = ''
+ " reset the environments and commands.
+ let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironmentsDefault
+ let g:Tex_PromptedCommands = g:Tex_PromptedCommandsDefault
+
+ if expand('%:p') != fname
+ call Tex_Debug(':Tex_pack_updateall: sview '.Tex_EscapeSpaces(fname), 'pack')
+ exe 'sview '.Tex_EscapeSpaces(fname)
+ else
+ call Tex_Debug(':Tex_pack_updateall: split', 'pack')
+ split
+ endif
+
+ call Tex_ScanForPackages()
+ q
+
+ call Tex_Debug(':Tex_pack_updateall: detected ['.g:Tex_package_detected.'] in first run', 'pack')
+
+ " Now for each package find out if this is a custom package and if so,
+ " scan that as well. We will use the ':find' command in vim to let vim
+ " search through the file paths for us.
+ "
+ " NOTE: This while loop will also take into account packages included
+ " within packages to any level of recursion as long as
+ " g:Tex_package_detected is always padded with new package names
+ " from the end.
+ "
+ " First set the &path setting to the user's TEXINPUTS setting.
+ let _path = &path
+ let _suffixesadd = &suffixesadd
+
+ let &path = '.,'.g:Tex_TEXINPUTS
+ let &suffixesadd = '.sty,.tex'
+
+ let scannedPackages = ''
+
+ let i = 1
+ let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
+ while packname != ''
+
+ call Tex_Debug(':Tex_pack_updateall: scanning package '.packname, 'pack')
+
+ " Scan this package only if we have not scanned it before in this
+ " run.
+ if scannedPackages =~ '\<'.packname.'\>'
+ let i = i + 1
+
+ call Tex_Debug(':Tex_pack_updateall: '.packname.' already scanned', 'pack')
+ let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
+ continue
+ endif
+
+ " Split this window in two. The packages/files being found will open
+ " in this new window and we also need not bother with files being
+ " modified etc.
+ split
+
+ call Tex_Debug(':Tex_pack_updateall: silent! find '.Tex_EscapeSpaces(packname).'.sty', 'pack')
+ let thisbufnum = bufnr('%')
+ exec 'silent! find '.Tex_EscapeSpaces(packname).'.sty'
+ call Tex_Debug(':Tex_pack_updateall: present file = '.bufname('%'), 'pack')
+
+ " If this file was not found, assume that it means its not a
+ " custom package and mark it "scanned".
+ " A package is not found if we stay in the same buffer as before and
+ " its not the one where we want to go.
+ if bufnr('%') == thisbufnum && bufnr('%') != bufnr(packname.'.sty')
+ let scannedPackages = scannedPackages.','.packname
+ q
+
+ call Tex_Debug(':Tex_pack_updateall: '.packname.' not found anywhere', 'pack')
+ let i = i + 1
+ let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
+ continue
+ endif
+
+ " otherwise we are presently editing a custom package, scan it for
+ " more \usepackage lines from the first line to the last.
+ let packpath = expand('%:p')
+ let &complete = &complete.'s'.packpath
+
+ call Tex_Debug(':Tex_pack_updateall: found custom package '.packpath, 'pack')
+ call Tex_ScanForPackages(line('$'), line('$'))
+ call Tex_Debug(':Tex_pack_updateall: After scanning, g:Tex_package_detected = '.g:Tex_package_detected, 'pack')
+
+ let scannedPackages = scannedPackages.','.packname
+ " Do not use bwipe, but that leads to excessive buffer number
+ " consumption. Besides, its intuitive for a custom package to remain
+ " on the buffer list.
+ q
+
+ let i = i + 1
+ let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
+ endwhile
+
+ let &path = _path
+ let &suffixesadd = _suffixesadd
+
+ " Now only support packages we didn't last time.
+ " First remove packages which were used last time but are no longer used.
+ let i = 1
+ let oldPackName = Tex_Strntok(oldpackages, ',', i)
+ while oldPackName != ''
+ if g:Tex_package_detected !~ oldPackName
+ call Tex_pack_uncheck(oldPackName)
+ endif
+ let i = i + 1
+ let oldPackName = Tex_Strntok(oldpackages, ',', i)
+ endwhile
+
+ " Then support packages which are used this time but weren't used last
+ " time.
+ let i = 1
+ let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
+ while newPackName != ''
+ if oldpackages !~ newPackName
+ call Tex_pack_one(newPackName)
+ endif
+ let i = i + 1
+ let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
+ endwhile
+
+ " Throw an event that we are done scanning packages. Some packages might
+ " use this to change behavior based on which options have been used etc.
+ call Tex_Debug(":Tex_pack_updateall: throwing LatexSuiteScannedPackages event", "pack")
+ silent! do LatexSuite User LatexSuiteScannedPackages
+
+ call Tex_Debug("-Tex_pack_updateall", "pack")
+endfunction
+
+" }}}
+" Tex_pack_one: supports each package in the argument list.{{{
+" Description:
+" If no arguments are supplied, then the user is asked to choose from the
+" packages found in the packages/ directory
+function! Tex_pack_one(...)
+ if a:0 == 0 || (a:0 > 0 && a:1 == '')
+ let packlist = Tex_FindInRtp('', 'packages')
+ let packname = Tex_ChooseFromPrompt(
+ \ "Choose a package: \n" .
+ \ Tex_CreatePrompt(packlist, '3', ',') .
+ \ "\nEnter number or filename :",
+ \ packlist, ',')
+ if packname != ''
+ return Tex_pack_one(packname)
+ else
+ return ''
+ endif
+ else
+ " Support the packages supplied. This function can be called with
+ " multiple arguments in which case, support each of them in turn.
+ let retVal = ''
+ let omega = 1
+ while omega <= a:0
+ let packname = a:{omega}
+ if Tex_FindInRtp(packname, 'packages') != ''
+ call Tex_pack_check(packname)
+ if exists('g:TeX_package_option_'.packname)
+ \ && g:TeX_package_option_{packname} != ''
+ let retVal = retVal.'\usepackage[<++>]{'.packname.'}<++>'
+ else
+ let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
+ endif
+ else
+ let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
+ endif
+ let omega = omega + 1
+ endwhile
+ return IMAP_PutTextWithMovement(substitute(retVal, "\<CR>$", '', ''), '<+', '+>')
+ endif
+endfunction
+" }}}
+" Tex_ScanForPackages: scans the current file for \usepackage{} lines {{{
+" and if supported, loads the options and commands found in the
+" corresponding package file. Also scans for \newenvironment and
+" \newcommand lines and adds names to g:Tex_Prompted variables, they can be
+" easy available through <F5> and <F7> shortcuts
+function! Tex_ScanForPackages(...)
+ call Tex_Debug("+Tex_ScanForPackages", "pack")
+
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+
+ " For package files without \begin and \end{document}, we might be told to
+ " search from beginning to end.
+ if a:0 < 2
+ 0
+ let beginline = search('\\begin{document}', 'W')
+ let endline = search('\\end{document}', 'W')
+ 0
+ else
+ let beginline = a:1
+ let endline = a:2
+ endif
+
+ call Tex_Debug(":Tex_ScanForPackages: Begining scans in [".bufname('%')."], beginline = ".beginline, "pack")
+
+
+ " Scan the file. First open up all the folds, because the command
+ " /somepattern
+ " issued in a closed fold _always_ goes to the first match.
+ let erm = v:errmsg
+ silent! normal! ggVGzO
+ let v:errmsg = erm
+
+ call Tex_Debug(":Tex_ScanForPackages: beginning scan for \\usepackage lines", "pack")
+ " The wrap trick enables us to match \usepackage on the first line as
+ " well.
+ let wrap = 'w'
+ while search('^\s*\\usepackage\_.\{-}{\_.\+}', wrap)
+ let wrap = 'W'
+
+ if line('.') > beginline
+ break
+ endif
+
+ let saveA = @a
+
+ " If there are options, then find those.
+ if getline('.') =~ '\\usepackage\[.\{-}\]'
+ let options = matchstr(getline('.'), '\\usepackage\[\zs.\{-}\ze\]')
+ elseif getline('.') =~ '\\usepackage\['
+ " Entering here means that the user has split the \usepackage
+ " across newlines. Therefore, use yank.
+ exec "normal! /{\<CR>\"ayi}"
+ let options = @a
+ else
+ let options = ''
+ endif
+
+ " The following statement puts the stuff between the { }'s of a
+ " \usepackage{stuff,foo} into @a. Do not use matchstr() and the like
+ " because we can have things split across lines and such.
+ exec "normal! /{\<CR>\"ay/}\<CR>"
+
+ " now remove all whitespace from @a. We need to remove \n and \r
+ " because we can encounter stuff like
+ " \usepackage{pack1,
+ " newpackonanotherline}
+ let @a = substitute(@a, "[ \t\n\r]", '', 'g')
+
+ " Now we have something like pack1,pack2,pack3 with possibly commas
+ " and stuff before the first package and after the last package name.
+ " Remove those.
+ let @a = substitute(@a, '\(^\W*\|\W*$\)', '', 'g')
+
+ " This gets us a string like 'pack1,pack2,pack3'
+ " TODO: This will contain duplicates if the user has duplicates.
+ " Should we bother taking care of this?
+ let g:Tex_package_detected = g:Tex_package_detected.','.@a
+
+ " For each package found, form a global variable of the form
+ " g:Tex_{packagename}_options
+ " which contains a list of the options.
+ let j = 1
+ while Tex_Strntok(@a, ',', j) != ''
+ let g:Tex_{Tex_Strntok(@a, ',', j)}_options = options
+ let j = j + 1
+ endwhile
+
+ " Finally convert @a into something like '"pack1","pack2"'
+ let @a = substitute(@a, '^\|$', '"', 'g')
+ let @a = substitute(@a, ',', '","', 'g')
+
+ call Tex_Debug(":Tex_ScanForPackages: found package(s) [".@a."] on line ".line('.'), "pack")
+
+ " restore @a
+ let @a = saveA
+ endwhile
+ call Tex_Debug(":Tex_ScanForPackages: End scan \\usepackage, detected packages = ".g:Tex_package_detected, "pack")
+
+ " TODO: This needs to be changed. In the future, we might have
+ " functionality to remember the fold-state before opening up all the folds
+ " and then re-creating them. Use mkview.vim.
+ let erm = v:errmsg
+ silent! normal! ggVGzC
+ let v:errmsg = erm
+
+ " Because creating list of detected packages gives string
+ " ',pack1,pack2,pack3' remove leading ,
+ let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
+
+ call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newcommand's", "pack")
+ " Scans whole file (up to \end{document}) for \newcommand and adds this
+ " commands to g:Tex_PromptedCommands variable, it is easily available
+ " through <F7>
+ 0
+ while search('^\s*\\newcommand\*\?{.\{-}}', 'W')
+
+ if line('.') > endline
+ break
+ endif
+
+ let newcommand = matchstr(getline('.'), '\\newcommand\*\?{\\\zs.\{-}\ze}')
+ let g:Tex_PromptedCommands = g:Tex_PromptedCommands . ',' . newcommand
+
+ endwhile
+
+ " Scans whole file (up to \end{document}) for \newenvironment and adds this
+ " environments to g:Tex_PromptedEnvironments variable, it is easily available
+ " through <F5>
+ 0
+ call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newenvironment's", 'pack')
+
+ while search('^\s*\\newenvironment\*\?{.\{-}}', 'W')
+ call Tex_Debug('found newenvironment on '.line('.'), 'pack')
+
+ if line('.') > endline
+ break
+ endif
+
+ let newenvironment = matchstr(getline('.'), '\\newenvironment\*\?{\zs.\{-}\ze}')
+ let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironments . ',' . newenvironment
+
+ endwhile
+
+ exe pos
+ " first make a random search so that we push at least one item onto the
+ " search history. Since vim puts only one item in the history per function
+ " call, this way we make sure that one and only item is put into the
+ " search history.
+ normal! /^<CR>
+ " now delete it...
+ call histdel('/', -1)
+
+ call Tex_Debug("-Tex_ScanForPackages", "pack")
+endfunction
+
+" }}}
+" Tex_pack_supp_menu: sets up a menu for package files {{{
+" found in the packages directory groups the packages thus found into groups
+" of 20...
+function! Tex_pack_supp_menu()
+ let suplist = Tex_FindInRtp('', 'packages')
+
+ call Tex_MakeSubmenu(suplist, g:Tex_PackagesMenuLocation.'Supported.',
+ \ '<plug><C-r>=Tex_pack_one("', '")<CR>')
+endfunction
+
+" }}}
+" Tex_pack: loads the options (and commands) for the given package {{{
+function! Tex_pack(pack)
+ if exists('g:TeX_package_'.a:pack)
+
+ let optionList = g:TeX_package_option_{a:pack}.','
+ let commandList = g:TeX_package_{a:pack}.','
+
+ " Don't create separator if in package file are only Vim commands.
+ " Rare but possible.
+ if !(commandList == ',' && optionList == ',')
+ exec 'amenu '.g:Tex_PackagesMenuLocation.'-sep'.a:pack.'- <Nop>'
+ endif
+
+ if optionList != ''
+
+ let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Options.'
+ call s:GroupPackageMenuItems(optionList, mainMenuName,
+ \ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>')
+
+ endif
+
+ if commandList != ''
+
+ let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Commands.'
+ call s:GroupPackageMenuItems(commandList, mainMenuName,
+ \ '<plug><C-r>=Tex_ProcessPackageCommand("', '")<CR>',
+ \ '<SID>FilterPackageMenuLHS')
+ endif
+ endif
+endfunction
+
+" }}}
+
+" ==============================================================================
+" Menu Functions
+" Creating menu items for the all the package files found in the packages/
+" directory as well as creating menus for each supported package found in the
+" preamble.
+" ==============================================================================
+" Tex_MakeSubmenu: makes a submenu given a list of items {{{
+" Description:
+" This function takes a comma seperated list of menu items and creates a
+" 'grouped' menu. i.e, it groups the items into s:menu_div items each and
+" puts them in submenus of the given mainMenu.
+" Each menu item is linked to the HandlerFunc.
+" If an additional argument is supplied, then it is used to filter each of
+" the menu items to generate better names for the menu display.
+"
+function! Tex_MakeSubmenu(menuList, mainMenuName,
+ \ handlerFuncLHS, handlerFuncRHS, ...)
+
+ let extractFunction = (a:0 > 0 ? a:1 : '' )
+ let menuList = substitute(a:menuList, '[^,]$', ',', '')
+
+ let doneMenuSubmenu = 0
+
+ while menuList != ''
+
+ " Extract upto s:menu_div menus at once.
+ let menuBunch = matchstr(menuList, '\v(.{-},){,'.s:menu_div.'}')
+
+ " The remaining menus go into the list.
+ let menuList = strpart(menuList, strlen(menuBunch))
+
+ let submenu = ''
+ " If there is something remaining, then we got s:menu_div items.
+ " therefore put these menu items into a submenu.
+ if strlen(menuList) || doneMenuSubmenu
+ exec 'let firstMenu = '.extractFunction."(matchstr(menuBunch, '\\v^.{-}\\ze,'))"
+ exec 'let lastMenu = '.extractFunction."(matchstr(menuBunch, '\\v[^,]{-}\\ze,$'))"
+
+ let submenu = firstMenu.'\ \-\ '.lastMenu.'.'
+
+ let doneMenuSubmenu = 1
+ endif
+
+ " Now for each menu create a menu under the submenu
+ let i = 1
+ let menuName = Tex_Strntok(menuBunch, ',', i)
+ while menuName != ''
+ exec 'let menuItem = '.extractFunction.'(menuName)'
+ execute 'amenu '.a:mainMenuName.submenu.menuItem
+ \ ' '.a:handlerFuncLHS.menuName.a:handlerFuncRHS
+
+ let i = i + 1
+ let menuName = Tex_Strntok(menuBunch, ',', i)
+ endwhile
+ endwhile
+endfunction
+
+" }}}
+" GroupPackageMenuItems: uses the sbr: to split menus into groups {{{
+" Description:
+" This function first splits up the menuList into groups based on the
+" special sbr: tag and then calls Tex_MakeSubmenu
+"
+function! <SID>GroupPackageMenuItems(menuList, menuName,
+ \ handlerFuncLHS, handlerFuncRHS,...)
+
+ if a:0 > 0
+ let extractFunction = a:1
+ else
+ let extractFunction = ''
+ endif
+ let menuList = a:menuList
+
+ while matchstr(menuList, 'sbr:') != ''
+ let groupName = matchstr(menuList, '\v^sbr:\zs.{-}\ze,')
+ let menuList = strpart(menuList, strlen('sbr:'.groupName.','))
+ if matchstr(menuList, 'sbr:') != ''
+ let menuGroup = matchstr(menuList, '\v^.{-},\zesbr:')
+ else
+ let menuGroup = menuList
+ endif
+
+ call Tex_MakeSubmenu(menuGroup, a:menuName.groupName.'.',
+ \ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
+
+ let menuList = strpart(menuList, strlen(menuGroup))
+ endwhile
+
+ call Tex_MakeSubmenu(menuList, a:menuName,
+ \ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
+
+endfunction " }}}
+" Definition of what to do for various package commands {{{
+let s:CommandSpec_bra = '\<+replace+>{<++>}<++>'
+let s:CommandSpec_brs = '\<+replace+><++>'
+let s:CommandSpec_brd = '\<+replace+>{<++>}{<++>}<++>'
+let s:CommandSpec_env = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
+let s:CommandSpec_ens = '\begin{<+replace+>}<+extra+>'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
+let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'
+let s:CommandSpec_nor = '\<+replace+>'
+let s:CommandSpec_noo = '\<+replace+>[<++>]'
+let s:CommandSpec_nob = '\<+replace+>[<++>]{<++>}{<++>}<++>'
+let s:CommandSpec_spe = '<+replace+>'
+let s:CommandSpec_ = '\<+replace+>'
+
+let s:MenuLHS_bra = '\\&<+replace+>{}'
+let s:MenuLHS_brs = '\\&<+replace+>{}'
+let s:MenuLHS_brd = '\\&<+replace+>{}{}'
+let s:MenuLHS_env = '&<+replace+>\ (E)'
+let s:MenuLHS_ens = '&<+replace+>\ (E)'
+let s:MenuLHS_eno = '&<+replace+>\ (E)'
+let s:MenuLHS_nor = '\\&<+replace+>'
+let s:MenuLHS_noo = '\\&<+replace+>[]'
+let s:MenuLHS_nob = '\\&<+replace+>[]{}{}'
+let s:MenuLHS_spe = '&<+replace+>'
+let s:MenuLHS_sep = '-sep<+replace+>-'
+let s:MenuLHS_ = '\\&<+replace+>'
+" }}}
+" Tex_ProcessPackageCommand: processes a command from the package menu {{{
+" Description:
+function! Tex_ProcessPackageCommand(command)
+ if a:command =~ ':'
+ let commandType = matchstr(a:command, '^\w\+\ze:')
+ let commandName = matchstr(a:command, '^\w\+:\zs[^:]\+\ze:\?')
+ let extrapart = strpart(a:command, strlen(commandType.':'.commandName.':'))
+ else
+ let commandType = ''
+ let commandName = a:command
+ let extrapart = ''
+ endif
+
+ let command = s:CommandSpec_{commandType}
+ let command = substitute(command, '<+replace+>', commandName, 'g')
+ let command = substitute(command, '<+extra+>', extrapart, 'g')
+ return IMAP_PutTextWithMovement(command)
+endfunction
+" }}}
+" FilterPackageMenuLHS: filters the command description to provide a better menu item {{{
+" Description:
+function! <SID>FilterPackageMenuLHS(command)
+ let commandType = matchstr(a:command, '^\w\+\ze:')
+ if commandType != ''
+ let commandName = strpart(a:command, strlen(commandType.':'))
+ else
+ let commandName = a:command
+ endif
+
+ return substitute(s:MenuLHS_{commandType}, '<+replace+>', commandName, 'g')
+endfunction " }}}
+
+if g:Tex_Menus
+ exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdatePackage :call Tex_pack(expand("<cword>"))<cr>'
+ exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdateAll :call Tex_pack_updateall(1)<cr>'
+
+ call Tex_pack_supp_menu()
+endif
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('packages.vim: Catching LatexSuiteFileType event', 'pack') |
+ \ call Tex_pack_updateall(0)
+augroup END
+
+" vim:fdm=marker:ts=4:sw=4:noet:ff=unix
diff --git a/.vim/ftplugin/latex-suite/packages/SIunits b/.vim/ftplugin/latex-suite/packages/SIunits
new file mode 100644
index 0000000..ba110fa
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/SIunits
@@ -0,0 +1,315 @@
+if exists("SIunits_package_file")
+ finish
+endif
+let SIunits_package_file = 1
+
+let g:TeX_package_SIunits =
+\'nor:addprefix,'.
+\'nor:addunit,'.
+\'nor:ampere,'.
+\'nor:amperemetresecond,'.
+\'nor:amperepermetre,'.
+\'nor:amperepermetrenp,'.
+\'nor:amperepersquaremetre,'.
+\'nor:amperepersquaremetrenp,'.
+\'nor:angstrom,'.
+\'nor:arad,'.
+\'nor:arcminute,'.
+\'nor:arcsecond,'.
+\'nor:are,'.
+\'nor:atomicmass,'.
+\'nor:atto,'.
+\'nor:attod,'.
+\'nor:barn,'.
+\'nor:bbar,'.
+\'nor:becquerel,'.
+\'nor:becquerelbase,'.
+\'nor:bel,'.
+\'nor:candela,'.
+\'nor:candelapersquaremetre,'.
+\'nor:candelapersquaremetrenp,'.
+\'nor:celsius,'.
+\'nor:Celsius,'.
+\'nor:celsiusbase,'.
+\'nor:centi,'.
+\'nor:centid,'.
+\'nor:coulomb,'.
+\'nor:coulombbase,'.
+\'nor:coulombpercubicmetre,'.
+\'nor:coulombpercubicmetrenp,'.
+\'nor:coulombperkilogram,'.
+\'nor:coulombperkilogramnp,'.
+\'nor:coulombpermol,'.
+\'nor:coulombpermolnp,'.
+\'nor:coulombpersquaremetre,'.
+\'nor:coulombpersquaremetrenp,'.
+\'nor:cubed,'.
+\'nor:cubic,'.
+\'nor:cubicmetre,'.
+\'nor:cubicmetreperkilogram,'.
+\'nor:cubicmetrepersecond,'.
+\'nor:curie,'.
+\'nor:dday,'.
+\'nor:deca,'.
+\'nor:decad,'.
+\'nor:deci,'.
+\'nor:decid,'.
+\'nor:degree,'.
+\'nor:degreecelsius,'.
+\'nor:deka,'.
+\'nor:dekad,'.
+\'nor:derbecquerel,'.
+\'nor:dercelsius,'.
+\'nor:dercoulomb,'.
+\'nor:derfarad,'.
+\'nor:dergray,'.
+\'nor:derhenry,'.
+\'nor:derhertz,'.
+\'nor:derjoule,'.
+\'nor:derkatal,'.
+\'nor:derlumen,'.
+\'nor:derlux,'.
+\'nor:dernewton,'.
+\'nor:derohm,'.
+\'nor:derpascal,'.
+\'nor:derradian,'.
+\'nor:dersiemens,'.
+\'nor:dersievert,'.
+\'nor:dersteradian,'.
+\'nor:dertesla,'.
+\'nor:dervolt,'.
+\'nor:derwatt,'.
+\'nor:derweber,'.
+\'nor:electronvolt,'.
+\'nor:exa,'.
+\'nor:exad,'.
+\'nor:farad,'.
+\'nor:faradbase,'.
+\'nor:faradpermetre,'.
+\'nor:faradpermetrenp,'.
+\'nor:femto,'.
+\'nor:femtod,'.
+\'nor:fourth,'.
+\'nor:gal,'.
+\'nor:giga,'.
+\'nor:gigad,'.
+\'nor:gram,'.
+\'nor:graybase,'.
+\'nor:graypersecond,'.
+\'nor:graypersecondnp,'.
+\'nor:hectare,'.
+\'nor:hecto,'.
+\'nor:hectod,'.
+\'nor:henry,'.
+\'nor:henrybase,'.
+\'nor:henrypermetre,'.
+\'nor:henrypermetrenp,'.
+\'nor:hertz,'.
+\'nor:hertzbase,'.
+\'nor:hour,'.
+\'nor:joule,'.
+\'nor:joulebase,'.
+\'nor:joulepercubicmetre,'.
+\'nor:joulepercubicmetrenp,'.
+\'nor:jouleperkelvin,'.
+\'nor:jouleperkelvinnp,'.
+\'nor:jouleperkilogram,'.
+\'nor:jouleperkilogramkelvin,'.
+\'nor:jouleperkilogramkelvinnp,'.
+\'nor:jouleperkilogramnp,'.
+\'nor:joulepermole,'.
+\'nor:joulepermolekelvin,'.
+\'nor:joulepermolekelvinnp,'.
+\'nor:joulepermolenp,'.
+\'nor:joulepersquaremetre,'.
+\'nor:joulepersquaremetrenp,'.
+\'nor:joulepertesla,'.
+\'nor:jouleperteslanp,'.
+\'nor:katal,'.
+\'nor:katalbase,'.
+\'nor:katalpercubicmetre,'.
+\'nor:katalpercubicmetrenp,'.
+\'nor:kelvin,'.
+\'nor:kilo,'.
+\'nor:kilod,'.
+\'nor:kilogram,'.
+\'nor:kilogrammetrepersecond,'.
+\'nor:kilogrammetrepersecondnp,'.
+\'nor:kilogrammetrepersquaresecond,'.
+\'nor:kilogrammetrepersquaresecondnp,'.
+\'nor:kilogrampercubicmetre,'.
+\'nor:kilogrampercubicmetrecoulomb,'.
+\'nor:kilogrampercubicmetrecoulombnp,'.
+\'nor:kilogrampercubicmetrenp,'.
+\'nor:kilogramperkilomole,'.
+\'nor:kilogramperkilomolenp,'.
+\'nor:kilogrampermetre,'.
+\'nor:kilogrampermetrenp,'.
+\'nor:kilogrampersecond,'.
+\'nor:kilogrampersecondcubicmetre,'.
+\'nor:kilogrampersecondcubicmetrenp,'.
+\'nor:kilogrampersecondnp,'.
+\'nor:kilogrampersquaremetre,'.
+\'nor:kilogrampersquaremetrenp,'.
+\'nor:kilogrampersquaremetresecond,'.
+\'nor:kilogrampersquaremetresecondnp,'.
+\'nor:kilogramsquaremetre,'.
+\'nor:kilogramsquaremetrenp,'.
+\'nor:kilogramsquaremetrepersecond,'.
+\'nor:kilogramsquaremetrepersecondnp,'.
+\'nor:kilowatthour,'.
+\'nor:liter,'.
+\'nor:litre,'.
+\'nor:lumen,'.
+\'nor:lumenbase,'.
+\'nor:lux,'.
+\'nor:luxbase,'.
+\'nor:mega,'.
+\'nor:megad,'.
+\'nor:meter,'.
+\'nor:metre,'.
+\'nor:metrepersecond,'.
+\'nor:metrepersecondnp,'.
+\'nor:metrepersquaresecond,'.
+\'nor:metrepersquaresecondnp,'.
+\'nor:micro,'.
+\'nor:microd,'.
+\'nor:milli,'.
+\'nor:millid,'.
+\'nor:minute,'.
+\'nor:mole,'.
+\'nor:molepercubicmetre,'.
+\'nor:molepercubicmetrenp,'.
+\'nor:nano,'.
+\'nor:nanod,'.
+\'nor:neper,'.
+\'nor:newton,'.
+\'nor:newtonbase,'.
+\'nor:newtonmetre,'.
+\'nor:newtonpercubicmetre,'.
+\'nor:newtonpercubicmetrenp,'.
+\'nor:newtonperkilogram,'.
+\'nor:newtonperkilogramnp,'.
+\'nor:newtonpermetre,'.
+\'nor:newtonpermetrenp,'.
+\'nor:newtonpersquaremetre,'.
+\'nor:newtonpersquaremetrenp,'.
+\'nor:NoAMS,'.
+\'nor:no@qsk,'.
+\'nor:ohm,'.
+\'nor:ohmbase,'.
+\'nor:ohmmetre,'.
+\'nor:one,'.
+\'nor:paminute,'.
+\'nor:pascal,'.
+\'nor:pascalbase,'.
+\'nor:pascalsecond,'.
+\'nor:pasecond,'.
+\'nor:per,'.
+\'nor:period@active,'.
+\'nor:persquaremetresecond,'.
+\'nor:persquaremetresecondnp,'.
+\'nor:peta,'.
+\'nor:petad,'.
+\'nor:pico,'.
+\'nor:picod,'.
+\'nor:power,'.
+\'nor:@qsk,'.
+\'nor:quantityskip,'.
+\'nor:rad,'.
+\'nor:radian,'.
+\'nor:radianbase,'.
+\'nor:radianpersecond,'.
+\'nor:radianpersecondnp,'.
+\'nor:radianpersquaresecond,'.
+\'nor:radianpersquaresecondnp,'.
+\'nor:reciprocal,'.
+\'nor:rem,'.
+\'nor:roentgen,'.
+\'nor:rp,'.
+\'nor:rpcubed,'.
+\'nor:rpcubic,'.
+\'nor:rpcubicmetreperkilogram,'.
+\'nor:rpcubicmetrepersecond,'.
+\'nor:rperminute,'.
+\'nor:rpersecond,'.
+\'nor:rpfourth,'.
+\'nor:rpsquare,'.
+\'nor:rpsquared,'.
+\'nor:rpsquaremetreperkilogram,'.
+\'nor:second,'.
+\'nor:siemens,'.
+\'nor:siemensbase,'.
+\'nor:sievert,'.
+\'nor:sievertbase,'.
+\'nor:square,'.
+\'nor:squared,'.
+\'nor:squaremetre,'.
+\'nor:squaremetrepercubicmetre,'.
+\'nor:squaremetrepercubicmetrenp,'.
+\'nor:squaremetrepercubicsecond,'.
+\'nor:squaremetrepercubicsecondnp,'.
+\'nor:squaremetreperkilogram,'.
+\'nor:squaremetrepernewtonsecond,'.
+\'nor:squaremetrepernewtonsecondnp,'.
+\'nor:squaremetrepersecond,'.
+\'nor:squaremetrepersecondnp,'.
+\'nor:squaremetrepersquaresecond,'.
+\'nor:squaremetrepersquaresecondnp,'.
+\'nor:steradian,'.
+\'nor:steradianbase,'.
+\'nor:tera,'.
+\'nor:terad,'.
+\'nor:tesla,'.
+\'nor:teslabase,'.
+\'nor:ton,'.
+\'nor:tonne,'.
+\'nor:unit,'.
+\'nor:unitskip,'.
+\'nor:usk,'.
+\'nor:volt,'.
+\'nor:voltbase,'.
+\'nor:voltpermetre,'.
+\'nor:voltpermetrenp,'.
+\'nor:watt,'.
+\'nor:wattbase,'.
+\'nor:wattpercubicmetre,'.
+\'nor:wattpercubicmetrenp,'.
+\'nor:wattperkilogram,'.
+\'nor:wattperkilogramnp,'.
+\'nor:wattpermetrekelvin,'.
+\'nor:wattpermetrekelvinnp,'.
+\'nor:wattpersquaremetre,'.
+\'nor:wattpersquaremetrenp,'.
+\'nor:wattpersquaremetresteradian,'.
+\'nor:wattpersquaremetresteradiannp,'.
+\'nor:weber,'.
+\'nor:weberbase,'.
+\'nor:yocto,'.
+\'nor:yoctod,'.
+\'nor:yotta,'.
+\'nor:yottad,'.
+\'nor:zepto,'.
+\'nor:zeptod,'.
+\'nor:zetta,'.
+\'nor:zettad'
+
+let g:TeX_package_option_SIunits =
+\'amssymb,'.
+\'binary,'.
+\'cdot,'.
+\'derived,'.
+\'derivedinbase,'.
+\'Gray,'.
+\'mediumqspace,'.
+\'mediumspace,'.
+\'noams,'.
+\'pstricks,'.
+\'squaren,'.
+\'textstyle,'.
+\'thickqspace,'.
+\'thickspace,'.
+\'thinqspace,'.
+\'thinspace'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/accents b/.vim/ftplugin/latex-suite/packages/accents
new file mode 100644
index 0000000..706d95e
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/accents
@@ -0,0 +1,28 @@
+if exists("accents_package_file")
+ finish
+endif
+let accents_package_file = 1
+
+let g:TeX_package_option_accents =
+\ 'nonscript,'
+\.'single'
+
+let g:TeX_package_accents =
+\ 'bra:grave,'
+\.'bra:acute,'
+\.'bra:check,'
+\.'bra:breve,'
+\.'bra:bar,'
+\.'bra:ring,'
+\.'bra:hat,'
+\.'bra:dot,'
+\.'bra:tilde,'
+\.'bra:undertilde,'
+\.'bra:ddot,'
+\.'bra:dddot,'
+\.'bra:ddddot,'
+\.'bra:vec,'
+\.'brd:accentset,'
+\.'brd:underaccent'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/acromake b/.vim/ftplugin/latex-suite/packages/acromake
new file mode 100644
index 0000000..2130f61
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/acromake
@@ -0,0 +1,10 @@
+if exists("acromake_package_file")
+ finish
+endif
+let acromake_package_file = 1
+
+let g:TeX_package_option_acromake = ''
+
+let g:TeX_package_acromake = 'brs:acromake{<++>}{<++>}{<++>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/afterpage b/.vim/ftplugin/latex-suite/packages/afterpage
new file mode 100644
index 0000000..5087321
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/afterpage
@@ -0,0 +1,10 @@
+if exists("afterpage_package_file")
+ finish
+endif
+let afterpage_package_file = 1
+
+let g:TeX_package_option_afterpage = ''
+
+let g:TeX_package_afterpage = 'bra:afterpage'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/alltt b/.vim/ftplugin/latex-suite/packages/alltt
new file mode 100644
index 0000000..c30b684
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/alltt
@@ -0,0 +1,12 @@
+if exists("alltt_package_file")
+ finish
+endif
+let alltt_package_file = 1
+
+let g:TeX_package_option_alltt = ''
+
+let g:TeX_package_alltt = 'env:alltt'
+
+syn region texZone start="\\begin{alltt}" end="\\end{alltt}\|%stopzone\>" fold
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/amsmath b/.vim/ftplugin/latex-suite/packages/amsmath
new file mode 100644
index 0000000..fd7dcda
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/amsmath
@@ -0,0 +1,106 @@
+if exists("amsmath_package_file")
+ finish
+endif
+let amsmath_package_file = 1
+
+let g:TeX_package_option_amsmath =
+\ 'centertags,'
+\.'tbtags,'
+\.'sumlimits,'
+\.'nosumlimits,'
+\.'intlimits,'
+\.'nointlimits,'
+\.'namelimits,'
+\.'nonamelimits,'
+\.'leqno,'
+\.'reqno,'
+\.'fleqno'
+
+let g:TeX_package_amsmath =
+\ 'sbr:Environments,'
+\.'env:equation,'
+\.'env:equation*,'
+\.'env:align,'
+\.'env:align*,'
+\.'env:gather,'
+\.'env:gather*,'
+\.'env:flalign,'
+\.'env:flalign*,'
+\.'env:multline,'
+\.'env:multline*,'
+\.'ens:alignat:{<+arg1+>}{<+arg2+>},'
+\.'env:alignat,'
+\.'ens:alignat*:{<+arg1+>}{<+arg2+>},,'
+\.'env:alignat*,'
+\.'env:subequations,'
+\.'env:subarray,'
+\.'env:split,'
+\.'env:cases,'
+\.'sbr:Matrices,'
+\.'env:matrix,'
+\.'env:pmatrix,'
+\.'env:bmatrix,'
+\.'env:Bmatrix,'
+\.'env:vmatrix,'
+\.'env:Vmatrix,'
+\.'env:smallmatrix,'
+\.'bra:hdotsfor,'
+\.'sbr:Dots,'
+\.'dotsc,'
+\.'dotsb,'
+\.'dotsm,'
+\.'dotsi,'
+\.'dotso,'
+\.'sbr:ItalicGreek,'
+\.'nor:varGamma,'
+\.'nor:varDelta,'
+\.'nor:varTheta,'
+\.'nor:varLambda,'
+\.'nor:varXi,'
+\.'nor:varPi,'
+\.'nor:varSigma,'
+\.'nor:varUpsilon,'
+\.'nor:varPhi,'
+\.'nor:varPsi,'
+\.'nor:varOmega,'
+\.'sbr:Mod,'
+\.'nor:mod,'
+\.'nor:bmod,'
+\.'nor:pmod,'
+\.'nor:pod,'
+\.'sbr:CreatingSymbols,'
+\.'brd:overset,'
+\.'brd:underset,'
+\.'brd:sideset,'
+\.'sbr:Fractions,'
+\.'brd:frac,'
+\.'brd:dfrac,'
+\.'brd:tfrac,'
+\.'brd:cfrac,'
+\.'brd:binom,'
+\.'brd:dbinom,'
+\.'brd:tbinom,'
+\.'brs:genfrac{<+ldelim+>}{<+rdelim+>}{<+thick+>}{<+style+>}{<+numer+>}{<+denom+>},'
+\.'sbr:Commands,'
+\.'nob:smash,'
+\.'bra:substack,'
+\.'bra:tag,'
+\.'bra:tag*,'
+\.'nor:notag,'
+\.'bra:raisetag,'
+\.'bra:shoveleft,'
+\.'bra:shoveright,'
+\.'bra:intertext,'
+\.'bra:text,'
+\.'nor:displaybreak,'
+\.'noo:displaybreak,'
+\.'noo:allowdisplaybreaks,'
+\.'nor:nobreakdash,'
+\.'brs:numberwithin{<+env+>}{<+parent+>},'
+\.'bra:leftroot,'
+\.'bra:uproot,'
+\.'bra:boxed,'
+\.'brs:DeclareMathSymbol{<++>}{<++>}{<++>}{<++>},'
+\.'bra:eqref'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/amsthm b/.vim/ftplugin/latex-suite/packages/amsthm
new file mode 100644
index 0000000..6bae018
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/amsthm
@@ -0,0 +1,21 @@
+if exists("amsthm_package_file")
+ finish
+endif
+let amsthm_package_file = 1
+
+let TeX_package_option_amsthm = ''
+
+let TeX_package_amsthm =
+\ 'env:proof,'
+\.'nor:swapnumbers,'
+\.'brd:newtheorem,'
+\.'brd:newtheorem*,'
+\.'nor:theoremstyle{plain},'
+\.'nor:theoremstyle{definition},'
+\.'nor:theoremstyle{remark},'
+\.'nor:newtheoremstyle,'
+\.'nor:qedsymbol,'
+\.'nor:qed,'
+\.'nor:qedhere'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/amsxtra b/.vim/ftplugin/latex-suite/packages/amsxtra
new file mode 100644
index 0000000..3875cc3
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/amsxtra
@@ -0,0 +1,12 @@
+if exists("amsxtra_package_file")
+ finish
+endif
+let amsxtra_package_file = 1
+
+let g:TeX_package_option_amsxtra = ''
+
+let g:TeX_package_amsxtra =
+\ 'nor:sphat,'
+\.'nor:sptilde'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/arabic b/.vim/ftplugin/latex-suite/packages/arabic
new file mode 100644
index 0000000..46f8314
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/arabic
@@ -0,0 +1,10 @@
+if exists("arabic_package_file")
+ finish
+endif
+let arabic_package_file = 1
+
+let g:TeX_package_option_arabic = ''
+
+let g:TeX_package_arabic = 'bra:arabicnumeral'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/array b/.vim/ftplugin/latex-suite/packages/array
new file mode 100644
index 0000000..99f3dbc
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/array
@@ -0,0 +1,17 @@
+if exists("array_package_file")
+ finish
+endif
+let array_package_file = 1
+
+let g:TeX_package_option_array = ''
+
+let g:TeX_package_array =
+\ 'brs:newcolumntype{<+type+>}[<+no+>]{<+preamble+>},'
+\.'arraycolsep,'
+\.'tabcolsep,'
+\.'arrayrulewidth,'
+\.'doublerulesep,'
+\.'arraystretch,'
+\.'extrarowheight'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/babel b/.vim/ftplugin/latex-suite/packages/babel
new file mode 100644
index 0000000..cdb76ec
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/babel
@@ -0,0 +1,98 @@
+if exists("babel_package_file")
+ finish
+endif
+let babel_package_file = 1
+
+" This package sets some language specific options.
+" Since it needs to find out which options the user used with the babel
+" package, it needs to wait till latex-suite is done scanning packages. It
+" then catches the LatexSuiteScannedPackages event which
+" Tex_pack_updateall() throws at which time g:Tex_pack_detected and
+" g:Tex_babel_options contain the necessary information.
+
+let g:TeX_package_option_babel =
+\ 'afrikaans,'
+\.'bahasa,'
+\.'basque,'
+\.'breton,'
+\.'bulgarian,'
+\.'catalan,'
+\.'croatian,'
+\.'chech,'
+\.'danish,'
+\.'dutch,'
+\.'english,USenglish,american,UKenglish,british,canadian,'
+\.'esperanto,'
+\.'estonian,'
+\.'finnish,'
+\.'french,francais,canadien,acadian,'
+\.'galician,'
+\.'austrian,german,germanb,ngerman,naustrian,'
+\.'greek,polutonikogreek,'
+\.'hebrew,'
+\.'magyar,hungarian,'
+\.'icelandic,'
+\.'irish,'
+\.'italian,'
+\.'latin,'
+\.'lowersorbian,'
+\.'samin,'
+\.'norsk,nynorsk,'
+\.'polish,'
+\.'portuges,portuguese,brazilian,brazil,'
+\.'romanian,'
+\.'russian,'
+\.'scottish,'
+\.'spanish,'
+\.'slovak,'
+\.'slovene,'
+\.'swedish,'
+\.'serbian,'
+\.'turkish,'
+\.'ukrainian,'
+\.'uppersorbian,'
+\.'welsh'
+
+let g:TeX_package_babel =
+\ 'bra:selectlanguage,'
+\.'env:otherlanguage,'
+\.'env:otherlanguage*,'
+\.'env:hyphenrules,'
+\.'brd:foreignlanguage,'
+\.'spe:iflanguage{<+name+>}{<+true+>}{<+false+>},'
+\.'languagename,'
+\.'bra:useshorthands,'
+\.'brd:defineshorthand,'
+\.'brd:aliasshorthand,'
+\.'bra:languageshorthans,'
+\.'bra:shorthandon,'
+\.'bra:shorthandoff,'
+\.'brd:languageattribute'
+
+" vim:ft=vim:ff=unix:
+if exists('s:doneOnce')
+ finish
+endif
+let s:doneOnce = 1
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteScannedPackages
+ \ call Tex_Debug('babel: catching LatexSuiteScannedPackages event') |
+ \ call s:SetQuotes()
+augroup END
+
+let s:path = expand('<sfile>:p:h')
+
+" SetQuotes: sets quotes for various languages {{{
+" Description:
+function! <SID>SetQuotes()
+ if g:Tex_package_detected =~ '\<babel\>'
+ if g:Tex_babel_options =~ '\<german\>'
+ exec 'so '.s:path.'/german'
+ elseif g:Tex_babel_options =~ '\<ngerman\>'
+ exec 'so '.s:path.'/ngerman'
+ endif
+ endif
+endfunction " }}}
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/bar b/.vim/ftplugin/latex-suite/packages/bar
new file mode 100644
index 0000000..0087b95
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/bar
@@ -0,0 +1,27 @@
+if exists("bar_package_file")
+ finish
+endif
+let bar_package_file = 1
+
+let g:TeX_package_option_bar = ''
+
+let g:TeX_package_bar =
+\ 'env:barenv,'
+\.'brs:bar{<+height+>}{<+index+>}[<+desc+>],'
+\.'hlineon,'
+\.'brs:legend{<+index+>}{<+text+>},'
+\.'bra:setdepth,'
+\.'bra:sethspace,'
+\.'brs:setlinestyle{<+solid-dotted+>},'
+\.'brs:setnumberpos{<+empty-axis-down-inside-outside-up+>},'
+\.'bra:setprecision,'
+\.'bra:setstretch,'
+\.'bra:setstyle,'
+\.'bra:setwidth,'
+\.'brs:setxaxis{<+w1+>}{<+w2+>}{<+step+>},'
+\.'brs:setyaxis[<+n+>]{<+w1+>}{<+w2+>}{<+step+>},'
+\.'brs:setxname[<+lrbt+>]{<+etiquette+>},'
+\.'brs:setyname[<+lrbt+>]{<+etiquette+>},'
+\.'brs:setxvaluetyp{<+day-month+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/bm b/.vim/ftplugin/latex-suite/packages/bm
new file mode 100644
index 0000000..1cd5109
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/bm
@@ -0,0 +1,10 @@
+if exists("bm_package_file")
+ finish
+endif
+let bm_package_file = 1
+
+let g:TeX_package_option_bm = ''
+
+let g:TeX_package_bm = 'bra:bm'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/bophook b/.vim/ftplugin/latex-suite/packages/bophook
new file mode 100644
index 0000000..16ca8b0
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/bophook
@@ -0,0 +1,12 @@
+if exists("bophook_package_file")
+ finish
+endif
+let bophook_package_file = 1
+
+let g:TeX_package_option_bophook = ''
+
+let g:TeX_package_bophook =
+\ 'bra:AtBeginPage,'
+\.'bra:PageLayout'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/boxedminipage b/.vim/ftplugin/latex-suite/packages/boxedminipage
new file mode 100644
index 0000000..0917352
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/boxedminipage
@@ -0,0 +1,10 @@
+if exists("boxedminipage_package_file")
+ finish
+endif
+let boxedminipage_package_file = 1
+
+let g:TeX_package_option_boxedminipage = ''
+
+let g:TeX_package_boxedminipage = 'ens:boxedminipage:[<+pos+>]{<+size+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/caption2 b/.vim/ftplugin/latex-suite/packages/caption2
new file mode 100644
index 0000000..7e16031
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/caption2
@@ -0,0 +1,43 @@
+if exists("caption2_package_file")
+ finish
+endif
+let caption2_package_file = 1
+
+let g:TeX_package_option_caption2 =
+\ 'scriptsize,'
+\.'footnotesize,'
+\.'small,'
+\.'normalsize,'
+\.'large,'
+\.'Large,'
+\.'up,'
+\.'it,'
+\.'sl,'
+\.'sc,'
+\.'md,'
+\.'bf,'
+\.'rm,'
+\.'sf,'
+\.'tt,'
+\.'ruled,'
+\.'boxed,'
+\.'centerlast,'
+\.'anne,'
+\.'center,'
+\.'flushleft,'
+\.'flushright,'
+\.'oneline,'
+\.'nooneline,'
+\.'hang,'
+\.'isu,'
+\.'indent,'
+\.'longtable'
+
+let g:TeX_package_caption2 =
+\ 'bra:captionsize,'
+\.'bra:captionfont,'
+\.'bra:captionlabelfont,'
+\.'bra:setcaptionmargin,'
+\.'bra:setcaptionwidth'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/cases b/.vim/ftplugin/latex-suite/packages/cases
new file mode 100644
index 0000000..a2deafe
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/cases
@@ -0,0 +1,12 @@
+if exists("cases_package_file")
+ finish
+endif
+let cases_package_file = 1
+
+let g:TeX_package_option_cases = ''
+
+let g:TeX_package_cases =
+\ 'ens:numcases:{<+label+>},'
+\.'ens:subnumcases:{<+label+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/ccaption b/.vim/ftplugin/latex-suite/packages/ccaption
new file mode 100644
index 0000000..2ec3f2f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/ccaption
@@ -0,0 +1,20 @@
+if exists("ccaption_package_file")
+ finish
+endif
+let ccaption_package_file = 1
+
+let g:TeX_package_option_ccaption = ''
+
+let g:TeX_package_ccaption =
+\ 'bra:contcaption,'
+\.'bra:legend,'
+\.'bra:namedlegend,'
+\.'abovelegendskip,'
+\.'belowlegendskip,'
+\.'brd:newfixedcaption,'
+\.'brd:renewfixedcaption,'
+\.'brd:providefixedcaption,'
+\.'brs:newfloatenv[<+counter+>]{<+name+>}{<+ext+>}{<+etiq+>},'
+\.'brd:listfloats'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/changebar b/.vim/ftplugin/latex-suite/packages/changebar
new file mode 100644
index 0000000..e5002cf
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/changebar
@@ -0,0 +1,35 @@
+if exists("changebar_package_file")
+ finish
+endif
+let changebar_package_file = 1
+
+let g:TeX_package_option_changebar =
+\ 'DVItoLN03,'
+\.'dvitoln03,'
+\.'DVItoPS,'
+\.'dvitops,'
+\.'DVIps,'
+\.'dvips,'
+\.'emTeX,'
+\.'emtex,'
+\.'textures,'
+\.'Textures,'
+\.'outerbars,'
+\.'innerbars,'
+\.'leftbars,'
+\.'rightbars,'
+\.'traceon,'
+\.'traceoff'
+
+let g:TeX_package_changebar =
+\ 'ens:changebar:[<+thickness+>],'
+\.'noo:cbstart,'
+\.'cbend,'
+\.'cbdelete,'
+\.'changebarwidth,'
+\.'deletebarwidth,'
+\.'changebarsep,'
+\.'spe:changebargrey,'
+\.'nochangebars'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/chapterbib b/.vim/ftplugin/latex-suite/packages/chapterbib
new file mode 100644
index 0000000..331e901
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/chapterbib
@@ -0,0 +1,24 @@
+if exists("chapterbib_package_file")
+ finish
+endif
+let chapterbib_package_file = 1
+
+let g:TeX_package_option_chapterbib =
+\ 'sectionbib,'
+\.'rootbib,'
+\.'gather,'
+\.'duplicate'
+
+let g:TeX_package_chapterbib =
+\ 'env:cbunit,'
+\.'brd:sectionbib,'
+\.'bra:cbinput,'
+\.'sep:redefine,'
+\.'bra:citeform,'
+\.'bra:citepunct,'
+\.'bra:citeleft,'
+\.'bra:citeright,'
+\.'bra:citemid,'
+\.'bra:citedash'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/cite b/.vim/ftplugin/latex-suite/packages/cite
new file mode 100644
index 0000000..aa43e5b
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/cite
@@ -0,0 +1,32 @@
+if exists("cite_package_file")
+ finish
+endif
+let cite_package_file = 1
+
+let g:TeX_package_option_cite =
+\ 'verbose,'
+\.'nospace,'
+\.'space,'
+\.'nosort,'
+\.'sort,'
+\.'noadjust'
+
+let g:TeX_package_cite =
+\ 'bra:cite,'
+\.'bra:citen,'
+\.'bra:citenum,'
+\.'bra:citeonline,'
+\.'bra:nocite,'
+\.'sep:redefine,'
+\.'bra:citeform,'
+\.'bra:citepunct,'
+\.'bra:citeleft,'
+\.'bra:citeright,'
+\.'bra:citemid,'
+\.'bra:citedash'
+
+syn region texRefZone matchgroup=texStatement start="\\citen\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+syn region texRefZone matchgroup=texStatement start="\\citenum\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+syn region texRefZone matchgroup=texStatement start="\\citeonline\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/color b/.vim/ftplugin/latex-suite/packages/color
new file mode 100644
index 0000000..7f3aeac
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/color
@@ -0,0 +1,43 @@
+if exists("color_package_file")
+ finish
+endif
+let color_package_file = 1
+
+let g:TeX_package_option_color =
+\ 'monochrome,'
+\.'debugshow,'
+\.'dvips,'
+\.'xdvi,'
+\.'dvipdf,'
+\.'pdftex,'
+\.'dvipsone,'
+\.'dviwindo,'
+\.'emtex,'
+\.'dviwin,'
+\.'oztex,'
+\.'textures,'
+\.'pctexps,'
+\.'pctexwin,'
+\.'pctexhp,'
+\.'pctex32,'
+\.'truetex,'
+\.'tcidvi,'
+\.'dvipsnames,'
+\.'nodvipsnames,'
+\.'usenames'
+
+let g:TeX_package_color =
+\ 'brs:definecolor{<++>}{<++>}{<++>},'
+\.'brs:DefineNamedColor{<++>}{<++>}{<++>}{<++>},'
+\.'bra:color,'
+\.'nob:color,'
+\.'brd:textcolor,'
+\.'brs:textcolor[<++>]{<++>}{<++>},'
+\.'brd:colorbox,'
+\.'brs:colorbox[<++>]{<++>}{<++>},'
+\.'brs:fcolorbox{<++>}{<++>}{<++>},'
+\.'brs:fcolorbox[<++>]{<++>}{<++>}{<++>},'
+\.'brd:pagecolor,'
+\.'nob:pagecolor'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/comma b/.vim/ftplugin/latex-suite/packages/comma
new file mode 100644
index 0000000..5ec8d70
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/comma
@@ -0,0 +1,12 @@
+if exists("comma_package_file")
+ finish
+endif
+let comma_package_file = 1
+
+let g:TeX_package_option_comma = ''
+
+let g:TeX_package_comma =
+\ 'bra:commaform,'
+\.'bra:commaformtoken'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/deleq b/.vim/ftplugin/latex-suite/packages/deleq
new file mode 100644
index 0000000..58426d2
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/deleq
@@ -0,0 +1,36 @@
+if exists("deleq_package_file")
+ finish
+endif
+let deleq_package_file = 1
+
+let g:TeX_package_option_deleq = ''
+
+let g:TeX_package_deleq =
+\.'env:deqn,'
+\.'env:ddeqn,'
+\.'env:deqarr,'
+\.'env:ddeqar,'
+\.'env:deqrarr,'
+\.'nor:nydeqno,'
+\.'nor:heqno,'
+\.'bra:reqno,'
+\.'bra:rndeqno,'
+\.'bra:rdeqno,'
+\.'nob:eqreqno,'
+\.'nob:deqreqno,'
+\.'nob:ddeqreqno,'
+\.'bra:arrlabel,'
+\.'nor:where,'
+\.'bra:remtext,'
+\.'nor:nydeleqno,'
+\.'nor:deleqno,'
+\.'nor:jotbaseline'
+
+if !exists("tex_no_math")
+ syn region texMathZoneA start="\\begin\s*{\s*deqn\*\s*}" end="\\end\s*{\s*deqn\*\s*}" keepend fold contains=@texMathZoneGroup
+ syn region texMathZoneB start="\\begin\s*{\s*ddeqn\*\s*}" end="\\end\s*{\s*ddeqn\*\s*}" keepend fold contains=@texMathZoneGroup
+ syn region texMathZoneC start="\\begin\s*{\s*deqarr\s*}" end="\\end\s*{\s*deqarr\s*}" keepend fold contains=@texMathZoneGroup
+ syn region texMathZoneD start="\\begin\s*{\s*ddeqar\s*}" end="\\end\s*{\s*ddeqar\s*}" keepend fold contains=@texMathZoneGroup
+ syn region texMathZoneE start="\\begin\s*{\s*deqrarr\*\s*}" end="\\end\s*{\s*deqrarr\*\s*}" keepend fold contains=@texMathZoneGroup
+endif
+" vim:ft=vim:ff=unix:noet:ts=4:
diff --git a/.vim/ftplugin/latex-suite/packages/drftcite b/.vim/ftplugin/latex-suite/packages/drftcite
new file mode 100644
index 0000000..8c30447
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/drftcite
@@ -0,0 +1,29 @@
+if exists("drftcite_package_file")
+ finish
+endif
+let drftcite_package_file = 1
+
+let g:TeX_package_option_drftcite =
+\ 'verbose,'
+\.'nospace,'
+\.'space,'
+\.'breakcites,'
+\.'manualsort,'
+\.'tt,'
+\.'shownumbers,'
+\.'nocitecount'
+
+let g:TeX_package_drftcite =
+\ 'bra:cite,'
+\.'bra:citen,'
+\.'sep:redefine,'
+\.'bra:citeform,'
+\.'bra:citepunct,'
+\.'bra:citeleft,'
+\.'bra:citeright,'
+\.'bra:citemid,'
+\.'bra:citedash'
+
+syn region texRefZone matchgroup=texStatement start="\\citen\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/dropping b/.vim/ftplugin/latex-suite/packages/dropping
new file mode 100644
index 0000000..bcfc11f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/dropping
@@ -0,0 +1,12 @@
+if exists("dropping_package_file")
+ finish
+endif
+let dropping_package_file = 1
+
+let g:TeX_package_option_dropping = ''
+
+let g:TeX_package_dropping =
+\ 'brs:bigdrop{<+indent+>}{<+big+>}{<+font+>}{<+text+>},'
+\.'brs:dropping[<+indent+>]{<+big+>}{<+text+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/enumerate b/.vim/ftplugin/latex-suite/packages/enumerate
new file mode 100644
index 0000000..40c3f7c
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/enumerate
@@ -0,0 +1,10 @@
+if exists("enumerate_package_file")
+ finish
+endif
+let enumerate_package_file = 1
+
+let g:TeX_package_option_enumerate = ''
+
+let g:TeX_package_enumerate = 'ens:enumerate:[<+prefix+>]'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/eqlist b/.vim/ftplugin/latex-suite/packages/eqlist
new file mode 100644
index 0000000..e1e249e
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/eqlist
@@ -0,0 +1,19 @@
+if exists("eqlist_package_file")
+ finish
+endif
+let eqlist_package_file = 1
+
+let g:TeX_package_option_eqlist = ''
+
+let g:TeX_package_eqlist =
+\ 'env:eqlist,'
+\.'env:eqlist*,'
+\.'env:Eqlist,'
+\.'env:Eqlist*,'
+\.'sep:modificators,'
+\.'eqlistinit,'
+\.'eqliststarinit,'
+\.'eqlistinitpar,'
+\.'eqlistlabel'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/eqparbox b/.vim/ftplugin/latex-suite/packages/eqparbox
new file mode 100644
index 0000000..a05061b
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/eqparbox
@@ -0,0 +1,12 @@
+if exists("eqparbox_package_file")
+ finish
+endif
+let eqparbox_package_file = 1
+
+let g:TeX_package_option_eqparbox = ''
+
+let g:TeX_package_eqparbox =
+\ 'brs:eqparbox[<+pos+>][<+height+>][<+inner-pos+>]{<+tag+>}{<+text+>},'
+\.'bra:eqboxwidth'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/everyshi b/.vim/ftplugin/latex-suite/packages/everyshi
new file mode 100644
index 0000000..e42a3d5
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/everyshi
@@ -0,0 +1,10 @@
+if exists("everyshi_package_file")
+ finish
+endif
+let everyshi_package_file = 1
+
+let g:TeX_package_option_everyshi = ''
+
+let g:TeX_package_everyshi = 'bra:EveryShipOut'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/exmpl b/.vim/ftplugin/latex-suite/packages/exmpl
new file mode 100644
index 0000000..e9e37fc
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/exmpl
@@ -0,0 +1,55 @@
+if exists("exmpl_package_file")
+ finish
+endif
+let exmpl_package_file = 1
+
+" Author: Mikolaj Machowski
+" Date: 10.04.2002
+" Example plugin for packages in latexSuite
+"
+
+" This variable creates Options submenu in package menu. Even when no options are
+" given for this package it HAS to exist in form
+" let TeX_package_option_exmpl = ""
+" Options and commands are delimited with comma ,
+
+let g:TeX_package_option_exmpl = "OpcjaA=,OpcjaB,OpcjaC"
+
+" Most command should have some definition before. Package menu system can
+" recognize type of command and behave in good manner:
+" env: (environment) creates simple environment template
+" \begin{command}
+" x <- cursor here
+" \end{command}
+"
+" bra: (brackets) useful when inserting brackets commands
+" \command{x}<<>> <- cursor at x, and placeholders as in other menu entries
+"
+" nor: (normal) nor: and pla: are `highlighted' in menu with `''
+" \command<Space>
+"
+" pla: (plain)
+" command<Space>
+"
+" spe: (special)
+" command <-literal insertion of command, in future here should go
+" commands with special characters
+"
+" sep: (separator) creates separator. Good for aesthetics and usability :)
+"
+" Command can be also given with no prefix:. The result is
+" \command (as in nor: but without <Space>)
+
+
+let g:TeX_package_exmpl = "env:AEnvFirst,env:aEnvSec,env:BThi,"
+ \ . "sep:a,env:zzzz,"
+ \ . "bra:aBraFirst,bra:bBraSec,bra:cBraThi,"
+ \ . "sep:b,"
+ \ . "nor:aNorPri,nor:bNorSec,nor:cNorTer,"
+ \ . "sep:c,"
+ \ . "pla:aPla1,pla:bPla2,pla:cPla3,"
+ \ . "sep:d,"
+ \ . "spe:aSpe1,spe:bSpe2,spe:cSpe3,"
+ \ . "sep:e,"
+ \ . "aNo1,bNo2,cNo3"
+" vim:ft=vim
diff --git a/.vim/ftplugin/latex-suite/packages/flafter b/.vim/ftplugin/latex-suite/packages/flafter
new file mode 100644
index 0000000..8859397
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/flafter
@@ -0,0 +1,10 @@
+if exists("flafter_package_file")
+ finish
+endif
+let flafter_package_file = 1
+
+let g:TeX_package_option_flafter = ''
+
+let g:TeX_package_flafter = 'noo:suppressfloats,noo:suppress'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/float b/.vim/ftplugin/latex-suite/packages/float
new file mode 100644
index 0000000..7c1cf46
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/float
@@ -0,0 +1,16 @@
+if exists("float_package_file")
+ finish
+endif
+let float_package_file = 1
+
+let g:TeX_package_option_float = ''
+
+let g:TeX_package_float =
+\ 'bra:floatstyle,'
+\.'brs:newfloat{<++>}{<++>}{<++>}[<++>],'
+\.'brd:floatname,'
+\.'brd:listof,'
+\.'bra:restylefloat,'
+\.'brd:floatplacement'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/floatflt b/.vim/ftplugin/latex-suite/packages/floatflt
new file mode 100644
index 0000000..4902d89
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/floatflt
@@ -0,0 +1,12 @@
+if exists("floatflt_package_file")
+ finish
+endif
+let floatflt_package_file = 1
+
+let g:TeX_package_option_floatflt = 'rflt,lflt,vflt'
+
+let g:TeX_package_floatflt =
+\ 'ens:floatingfigure:[<+loc+>]{<+spec+>},'
+\.'ens:floatingtable:[<+loc+>]{<+spec+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/fn2end b/.vim/ftplugin/latex-suite/packages/fn2end
new file mode 100644
index 0000000..aac4184
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/fn2end
@@ -0,0 +1,10 @@
+if exists("fn2end_package_file")
+ finish
+endif
+let fn2end_package_file = 1
+
+let g:TeX_package_option_fn2end = ''
+
+let g:TeX_package_fn2end = 'makeendnotes,theendnotes'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/footmisc b/.vim/ftplugin/latex-suite/packages/footmisc
new file mode 100644
index 0000000..04723f6
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/footmisc
@@ -0,0 +1,21 @@
+if exists("footmisc_package_file")
+ finish
+endif
+let footmisc_package_file = 1
+
+let g:TeX_package_option_footmisc =
+\ 'bottom,'
+\.'flushmargin,'
+\.'marginal,'
+\.'multiple,'
+\.'norule,'
+\.'para,'
+\.'perpage,'
+\.'splitrule,'
+\.'stable,'
+\.'symbol,'
+\.'symbol+'
+
+let g:TeX_package_footmisc = ''
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/geometry b/.vim/ftplugin/latex-suite/packages/geometry
new file mode 100644
index 0000000..667a289
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/geometry
@@ -0,0 +1,93 @@
+if exists("geometry_package_file")
+ finish
+endif
+let geometry_package_file = 1
+
+let g:TeX_package_option_geometry =
+\ 'sbr:Boolean,'
+\.'verbose,'
+\.'landscape,'
+\.'portrait,'
+\.'twoside,'
+\.'includemp,'
+\.'reversemp,'
+\.'reversemarginpar,'
+\.'nohead,'
+\.'nofoot,'
+\.'noheadfoot,'
+\.'dvips,'
+\.'pdftex,'
+\.'vtex,'
+\.'truedimen,'
+\.'reset,'
+\.'sbr:BooleanDimensions,'
+\.'a0paper,'
+\.'a1paper,'
+\.'a2paper,'
+\.'a3paper,'
+\.'a4paper,'
+\.'a5paper,'
+\.'a6paper,'
+\.'b0paper,'
+\.'b1paper,'
+\.'b2paper,'
+\.'b3paper,'
+\.'b4paper,'
+\.'b5paper,'
+\.'b6paper,'
+\.'letterpaper,'
+\.'executivepaper,'
+\.'legalpaper,'
+\.'sbr:SingleValueOption,'
+\.'paper=,'
+\.'papername=,'
+\.'paperwidth=,'
+\.'paperheight=,'
+\.'width=,'
+\.'totalwidth=,'
+\.'height=,'
+\.'totalheight=,'
+\.'left=,'
+\.'lmargin=,'
+\.'right=,'
+\.'rmargin=,'
+\.'top=,'
+\.'tmargin=,'
+\.'bottom=,'
+\.'bmargin=,'
+\.'hscale=,'
+\.'vscale=,'
+\.'textwidth=,'
+\.'textheight=,'
+\.'marginparwidth=,'
+\.'marginpar=,'
+\.'marginparsep=,'
+\.'headheight=,'
+\.'head=,'
+\.'headsep=,'
+\.'footskip=,'
+\.'hoffset=,'
+\.'voffset=,'
+\.'twosideshift=,'
+\.'mag=,'
+\.'columnsep=,'
+\.'footnotesep=,'
+\.'sbr:TwoValueOptions,'
+\.'papersize={<++>},'
+\.'total={<++>},'
+\.'body={<++>},'
+\.'text={<++>},'
+\.'scale={<++>},'
+\.'hmargin={<++>},'
+\.'vmargin={<++>},'
+\.'margin={<++>},'
+\.'offset={<++>},'
+\.'sbr:ThreeValueOptions,'
+\.'hdivide={<++>},'
+\.'vdivide={<++>},'
+\.'divide={<++>}'
+
+let g:TeX_package_geometry =
+\ 'bra:geometry'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/german b/.vim/ftplugin/latex-suite/packages/german
new file mode 100644
index 0000000..9aa7519
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/german
@@ -0,0 +1,12 @@
+if exists("german_package_file")
+ finish
+endif
+let german_package_file = 1
+
+let g:TeX_package_german = ''
+let g:TeX_package_option_german = ''
+" For now just define the smart quotes.
+let b:Tex_SmartQuoteOpen = '"`'
+let b:Tex_SmartQuoteClose = "\"'"
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/graphicx b/.vim/ftplugin/latex-suite/packages/graphicx
new file mode 100644
index 0000000..4aa7571
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/graphicx
@@ -0,0 +1,69 @@
+if exists("graphicx_package_file")
+ finish
+endif
+let graphicx_package_file = 1
+
+let g:TeX_package_option_graphicx =
+\ 'sbr:Drivers,'
+\.'xdvi,'
+\.'dvipdf,'
+\.'dvipdfm,'
+\.'pdftex,'
+\.'dvipsone,'
+\.'dviwindo,'
+\.'emtex,'
+\.'dviwin,'
+\.'oztex,'
+\.'textures,'
+\.'pctexps,'
+\.'pctexwin,'
+\.'pctexhp,'
+\.'pctex32,'
+\.'truetex,'
+\.'tcidvi,'
+\.'vtex,'
+\.'sbr:Rest,'
+\.'debugshow,'
+\.'draft,'
+\.'final,'
+\.'hiderotate,'
+\.'hiresbb,'
+\.'hidescale,'
+\.'unknownkeysallowed,'
+\.'unknownkeyserror'
+
+let g:TeX_package_graphicx =
+\ 'sbr:Includegraphics,'
+\.'brs:includegraphics[<++>]{<++>},'
+\.'spe:height=,'
+\.'spe:width=,'
+\.'spe:keepaspectratio=,'
+\.'spe:totalheight=,'
+\.'spe:angle=,'
+\.'spe:scale=,'
+\.'spe:origin=,'
+\.'spe:clip,'
+\.'spe:bb=,'
+\.'spe:viewport=,'
+\.'spe:trim=,'
+\.'spe:draft,'
+\.'spe:hiresbb,'
+\.'spe:type=,'
+\.'spe:ext=,'
+\.'spe:read=,'
+\.'spe:command=,'
+\.'sbr:Rotatebox,'
+\.'brs:rotatebox[<++>]{<++>}{<++>},'
+\.'spe:origin=,'
+\.'spe:x=,'
+\.'spe:y=,'
+\.'spe:units=,'
+\.'sbr:Rest,'
+\.'brs:scalebox{<++>}[<++>]{<++>},'
+\.'brs:resizebox{<++>}{<++>}{<++>},'
+\.'brs:resizebox*{<++>}{<++>}{<++>},'
+\.'bra:DeclareGraphicsExtensions,'
+\.'brs:DeclareGraphicsRule{<++>}{<++>}{<++>}{<++>},'
+\.'bra:graphicspath'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/graphpap b/.vim/ftplugin/latex-suite/packages/graphpap
new file mode 100644
index 0000000..ebbd268
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/graphpap
@@ -0,0 +1,10 @@
+if exists("graphpap_package_file")
+ finish
+endif
+let graphpap_package_file = 1
+
+let g:TeX_package_option_graphpap = ''
+
+let g:TeX_package_graphpap = 'brs:graphpaper[<+step+>](<+x1,y1+>)(<+x2,y2+>)'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/harpoon b/.vim/ftplugin/latex-suite/packages/harpoon
new file mode 100644
index 0000000..994801d
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/harpoon
@@ -0,0 +1,18 @@
+if exists("harpoon_package_file")
+ finish
+endif
+let harpoon_package_file = 1
+
+let g:TeX_package_option_harpoon = ''
+
+let g:TeX_package_harpoon =
+\ 'bra:overleftharp,'
+\.'bra:overrightharp,'
+\.'bra:overleftharpdown,'
+\.'bra:overrightharpdown,'
+\.'bra:underleftharp,'
+\.'bra:underrightharp,'
+\.'bra:underleftharpdown,'
+\.'bra:underrightharpdown'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/hhline b/.vim/ftplugin/latex-suite/packages/hhline
new file mode 100644
index 0000000..a024c19
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/hhline
@@ -0,0 +1,21 @@
+if exists("hhline_package_file")
+ finish
+endif
+let hhline_package_file = 1
+
+let g:TeX_package_option_hhline = ''
+
+let g:TeX_package_hhline =
+\ 'bra:hhline,'
+\.'sep:a,'
+\.'spe:=,'
+\.'spe:-,'
+\.'spe:~,'
+\."spe:\\\|,"
+\.'spe::,'
+\.'spe:#,'
+\.'spe:t,'
+\.'spe:b,'
+\.'spe:*'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/histogram b/.vim/ftplugin/latex-suite/packages/histogram
new file mode 100644
index 0000000..b18fc07
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/histogram
@@ -0,0 +1,13 @@
+if exists("histogram_package_file")
+ finish
+endif
+let histogram_package_file = 1
+
+let g:TeX_package_option_histogram = ''
+
+let g:TeX_package_histogram =
+\ 'histogram,'
+\.'noverticallines,'
+\.'verticallines'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/hyperref b/.vim/ftplugin/latex-suite/packages/hyperref
new file mode 100644
index 0000000..a82aac3
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/hyperref
@@ -0,0 +1,167 @@
+if exists("hyperref_package_file")
+ finish
+endif
+let hyperref_package_file = 1
+
+let g:TeX_package_option_hyperref =
+\ '4=,'
+\.'a4paper,'
+\.'a5paper,'
+\.'anchorcolor=,'
+\.'b5paper,'
+\.'backref=,'
+\.'baseurl={<++>},'
+\.'bookmarks=,'
+\.'bookmarksnumbered=,'
+\.'bookmarksopen=,'
+\.'bookmarksopenlevel=,'
+\.'bookmarkstype=,'
+\.'breaklinks=,'
+\.'citebordercolor=,'
+\.'citecolor=,'
+\.'colorlinks=,'
+\.'debug=,'
+\.'draft,'
+\.'dvipdf,'
+\.'dvipdfm,'
+\.'dvips,'
+\.'dvipsone,'
+\.'dviwindo,'
+\.'executivepaper,'
+\.'extension=,'
+\.'filebordercolor=,'
+\.'filecolor=,'
+\.'frenchlinks=,'
+\.'hyperfigures=,'
+\.'hyperindex=,'
+\.'hypertex,'
+\.'hypertexnames=,'
+\.'implicit=,'
+\.'latex2html,'
+\.'legalpaper,'
+\.'letterpaper,'
+\.'linkbordercolor=,'
+\.'linkcolor=,'
+\.'linktocpage=,'
+\.'menubordercolor=,'
+\.'menucolor=,'
+\.'naturalnames,'
+\.'nesting=,'
+\.'pageanchor=,'
+\.'pagebackref=,'
+\.'pagebordercolor=,'
+\.'pagecolor=,'
+\.'pdfauthor={<++>},'
+\.'pdfborder=,'
+\.'pdfcenterwindow=,'
+\.'pdfcreator={<++>},'
+\.'pdffitwindow,'
+\.'pdfhighlight=,'
+\.'pdfkeywords={<++>},'
+\.'pdfmenubar=,'
+\.'pdfnewwindow=,'
+\.'pdfpagelabels=,'
+\.'pdfpagelayout=,'
+\.'pdfpagemode=,'
+\.'pdfpagescrop=,'
+\.'pdfpagetransition=,'
+\.'pdfproducer={<++>},'
+\.'pdfstartpage={<++>},'
+\.'pdfstartview={<++>},'
+\.'pdfsubject={<++>},'
+\.'pdftex,'
+\.'pdftitle={<++>},'
+\.'pdftoolbar=,'
+\.'pdfusetitle=,'
+\.'pdfview,'
+\.'pdfwindowui=,'
+\.'plainpages=,'
+\.'ps2pdf,'
+\.'raiselinks=,'
+\.'runbordercolor,'
+\.'tex4ht,'
+\.'textures,'
+\.'unicode=,'
+\.'urlbordercolor=,'
+\.'urlcolor=,'
+\.'verbose=,'
+\.'vtex'
+
+let g:TeX_package_hyperref =
+\ 'sbr:Preamble,'
+\.'bra:hypersetup,'
+\.'wwwbrowser,'
+\.'sbr:Links,'
+\.'bra:hyperbaseurl,'
+\.'brs:href{<+URL+>}{<+text+>},'
+\.'bra:hyperimage,'
+\.'brs:hyperdef{<+category+>}{<+name+>}{<+text+>},'
+\.'brs:hyperref{<+URL+>}{<+category+>}{<+name+>}{<+text+>},'
+\.'brs:hyperlink{<+name+>}{<+text+>},'
+\.'brs:hypertarget{<+name+>}{<+text+>},'
+\.'bra:url,'
+\.'bra:htmladdnormallink,'
+\.'brs:Acrobatmenu{<+option+>}{<+tekst+>},'
+\.'brs:pdfbookmark[<++>]{<++>}{<++>},'
+\.'bra:thispdfpagelabel,'
+\.'sbr:Forms,'
+\.'env:Form,'
+\.'sep:Forms1,'
+\.'brs:TextField[<+parameters+>]{<+label+>},'
+\.'brs:CheckBox[<+parameters+>]{<+label+>},'
+\.'brs:ChoiceMenu[<+parameters+>]{<+label+>}{<+choices+>},'
+\.'brs:PushButton[<+parameters+>]{<+label+>},'
+\.'brs:Submit[<+parameters+>]{<+label+>},'
+\.'brs:Reset[<+parameters+>]{<+label+>},'
+\.'sep:Forms2,'
+\.'brs:LayoutTextField{<+label+>}{<+field+>},'
+\.'brs:LayoutChoiceField{<+label+>}{<+field+>},'
+\.'brs:LayoutCheckboxField{<+label+>}{<+field+>},'
+\.'sep:Forms3,'
+\.'brs:MakeRadioField{<+width+>}{<+height+>},'
+\.'brs:MakeCheckField{<+width+>}{<+height+>},'
+\.'brs:MakeTextField{<+width+>}{<+height+>},'
+\.'brs:MakeChoiceField{<+width+>}{<+height+>},'
+\.'brs:MakeButtonField{<+text+>},'
+\.'sbr:Parameters,'
+\.'spe:accesskey,'
+\.'spe:align,'
+\.'spe:backgroundcolor,'
+\.'spe:bordercolor,'
+\.'spe:bordersep,'
+\.'spe:borderwidth,'
+\.'spe:charsize,'
+\.'spe:checked,'
+\.'spe:color,'
+\.'spe:combo,'
+\.'spe:default,'
+\.'spe:disabled,'
+\.'spe:height,'
+\.'spe:hidden,'
+\.'spe:maxlen,'
+\.'spe:menulength,'
+\.'spe:multiline,'
+\.'spe:name,'
+\.'spe:onblur,'
+\.'spe:onchange,'
+\.'spe:onclick,'
+\.'spe:ondblclick,'
+\.'spe:onfocus,'
+\.'spe:onkeydown,'
+\.'spe:onkeypress,'
+\.'spe:onkeyup,'
+\.'spe:onmousedown,'
+\.'spe:onmousemove,'
+\.'spe:onmouseout,'
+\.'spe:onmouseover,'
+\.'spe:onmouseup,'
+\.'spe:onselect,'
+\.'spe:password,'
+\.'spe:popdown,'
+\.'spe:radio,'
+\.'spe:readonly,'
+\.'spe:tabkey,'
+\.'spe:value,'
+\.'spe:width'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/ifthen b/.vim/ftplugin/latex-suite/packages/ifthen
new file mode 100644
index 0000000..82dbe69
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/ifthen
@@ -0,0 +1,21 @@
+if exists("ifthen_package_file")
+ finish
+endif
+let ifthen_package_file = 1
+
+let g:TeX_package_option_ifthen = ''
+
+let g:TeX_package_ifthen =
+\ 'brs:ifthenelse{<++>}{<++>}{<++>},'
+\.'brd:equal,'
+\.'bra:boolean,'
+\.'bra:lengthtest,'
+\.'bra:isodd,'
+\.'brd:whiledo,'
+\.'bra:newboolean,'
+\.'brd:setboolean,'
+\.'nor:and,'
+\.'nor:or,'
+\.'nor:not'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/inputenc b/.vim/ftplugin/latex-suite/packages/inputenc
new file mode 100644
index 0000000..73abe9a
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/inputenc
@@ -0,0 +1,29 @@
+if exists("inputenc_package_file")
+ finish
+endif
+let inputenc_package_file = 1
+
+let g:TeX_package_option_inputenc =
+\ 'ascii,'
+\.'latin1,'
+\.'latin2,'
+\.'latin3,'
+\.'latin4,'
+\.'latin5,'
+\.'latin9,'
+\.'decmulti,'
+\.'cp850,'
+\.'cp852,'
+\.'cp437,'
+\.'cp437de,'
+\.'cp865,'
+\.'applemac,'
+\.'next,'
+\.'ansinew,'
+\.'cp1250,'
+\.'cp1252'
+
+let g:TeX_package_inputenc =
+\ 'bra:inputencoding'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/letterspace b/.vim/ftplugin/latex-suite/packages/letterspace
new file mode 100644
index 0000000..9a53eaa
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/letterspace
@@ -0,0 +1,10 @@
+if exists("letterspace_package_file")
+ finish
+endif
+let letterspace_package_file = 1
+
+let g:TeX_package_option_letterspace = ''
+
+let g:TeX_package_letterspace = 'nor:letterspace'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/lineno b/.vim/ftplugin/latex-suite/packages/lineno
new file mode 100644
index 0000000..4567602
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/lineno
@@ -0,0 +1,60 @@
+if exists("lineno_package_file")
+ finish
+endif
+let lineno_package_file = 1
+
+let g:TeX_package_option_lineno =
+\ 'left,'
+\.'right,'
+\.'switch,'
+\.'switch*,'
+\.'pagewise,'
+\.'running,'
+\.'modulo,'
+\.'mathlines,'
+\.'displaymath,'
+\.'hyperref'
+
+let g:TeX_package_lineno =
+\ 'sbr:Environments,'
+\.'env:linenumbers,'
+\.'env:linenumbers*,'
+\.'env:numquote,'
+\.'env:numquote*,'
+\.'env:numquotation,'
+\.'env:numquotation*,'
+\.'env:bframe,'
+\.'env:linenomath,'
+\.'env:linenomath*,'
+\.'bra:linelabel,'
+\.'sbr:Commands,'
+\.'nor:linenumbers,'
+\.'nor:linenumbers*,'
+\.'noo:linenumbers,'
+\.'nor:nolinenumbers,'
+\.'nor:runninglinenumbers,'
+\.'nor:runninglinenumbers*,'
+\.'noo:runninglinenumbers,'
+\.'nor:pagewiselinenumbers,'
+\.'nor:resetlinenumber,'
+\.'noo:resetlinenumber,'
+\.'nor:setrunninglinenumbers,'
+\.'nor:setpagewiselinenumbers,'
+\.'nor:switchlinenumbers,'
+\.'nor:switchlinenumbers*,'
+\.'nor:leftlinenumbers,'
+\.'nor:leftlinenumbers*,'
+\.'nor:rightlinenumbers,'
+\.'nor:rightlinenumbers*,'
+\.'nor:runningpagewiselinenumbers,'
+\.'nor:realpagewiselinenumbers,'
+\.'nor:modulolinenumbers,'
+\.'noo:modulolinenumbers,'
+\.'nor:linenumberdisplaymath,'
+\.'nor:nolinenumberdisplaymath,'
+\.'nor:thelinenumber,'
+\.'nob:linerefp,'
+\.'nob:linerefr,'
+\.'nob:lineref'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/longtable b/.vim/ftplugin/latex-suite/packages/longtable
new file mode 100644
index 0000000..6644862
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/longtable
@@ -0,0 +1,35 @@
+if exists("longtable_package_file")
+ finish
+endif
+let longtable_package_file = 1
+
+let g:TeX_package_option_longtable =
+\ 'errorshow,'
+\.'pausing,'
+\.'set,'
+\.'final'
+
+let g:TeX_package_longtable =
+\ 'sbr:Commands,'
+\.'nor:setlongtables,'
+\.'bra:LTleft,'
+\.'bra:LTright,'
+\.'bra:LTpre,'
+\.'bra:LTpost,'
+\.'bra:LTchunksize,'
+\.'bra:LTcapwidth,'
+\.'bra:LTcapwidth,'
+\.'sbr:Longtable,'
+\.'env:longtable,'
+\.'sep:lt,'
+\.'nor:endhead,'
+\.'nor:endfirsthead,'
+\.'nor:endfoot,'
+\.'nor:endlastfoot,'
+\.'nor:kill,'
+\.'bra:caption,'
+\.'nob:caption,'
+\.'bra:caption*,'
+\.'nor:newpage'
+
+" vim:ft=vim:ts=4:sw=4:noet:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/lscape b/.vim/ftplugin/latex-suite/packages/lscape
new file mode 100644
index 0000000..33976ea
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/lscape
@@ -0,0 +1,10 @@
+if exists("lscape_package_file")
+ finish
+endif
+let lscape_package_file = 1
+
+let g:TeX_package_option_lscape = ''
+
+let g:TeX_package_lscape = 'env:landscape'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/manyfoot b/.vim/ftplugin/latex-suite/packages/manyfoot
new file mode 100644
index 0000000..7cab55f
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/manyfoot
@@ -0,0 +1,15 @@
+if exists("manyfoot_package_file")
+ finish
+endif
+let manyfoot_package_file = 1
+
+let g:TeX_package_option_manyfoot = 'para'
+
+let g:TeX_package_manyfoot =
+\ 'bra:newfootnote,bra:newfootnote[para],'
+\.'bra:footnoteA,bra:footnoteB,'
+\.'bra:FootnoteA,bra:FootnoteB,'
+\.'bra:Footnotemark,bra:Footnotetext,'
+\.'SplitNote'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/moreverb b/.vim/ftplugin/latex-suite/packages/moreverb
new file mode 100644
index 0000000..8614e3b
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/moreverb
@@ -0,0 +1,28 @@
+if exists("moreverb_package_file")
+ finish
+endif
+let moreverb_package_file = 1
+
+let g:TeX_package_option_moreverb = ''
+
+let g:TeX_package_moreverb =
+\ 'ens:verbatimwrite:{<++>},'
+\.'ens:verbatimtab:[<++>],'
+\.'ens:listing:[<+step+>]{<+number+>},'
+\.'ens:listing*:[<+step+>]{<+number+>},'
+\.'env:boxedverbatim,'
+\.'bra:verbatimtabsize,'
+\.'bra:listingoffset,'
+\.'brs:listinginput[<++>]{<++>}{<++>},'
+\.'brs:verbatimtabinput[<++>]{<++>}'
+
+let g:Tex_completion_explorer = g:Tex_completion_explorer.'verbatimtabinput,'
+
+syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" fold
+syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" fold
+syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" fold
+syn region texZone start="\\begin{listing}" end="\\end{listing}\|%stopzone\>" fold
+syn region texZone start="\\begin{listing*}" end="\\end{listing*}\|%stopzone\>" fold
+
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/multibox b/.vim/ftplugin/latex-suite/packages/multibox
new file mode 100644
index 0000000..00bccb2
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/multibox
@@ -0,0 +1,10 @@
+if exists("multibox_package_file")
+ finish
+endif
+let multibox_package_file = 1
+
+let g:TeX_package_option_multibox = ''
+
+let g:TeX_package_multibox = 'multimake,multiframe'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/multicol b/.vim/ftplugin/latex-suite/packages/multicol
new file mode 100644
index 0000000..ca93189
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/multicol
@@ -0,0 +1,21 @@
+if exists("multicol_package_file")
+ finish
+endif
+let multicol_package_file = 1
+
+let g:TeX_package_option_multicol = ''
+
+let g:TeX_package_multicol =
+\ 'ens:multicols:{<+cols+>}[<+text+>][<+sep+>],'
+\.'columnbreak,'
+\.'premulticols,'
+\.'postmulticols,'
+\.'multicolsep,'
+\.'columnsep,'
+\.'linewidth,'
+\.'columnseprule,'
+\.'flushcolumnt,'
+\.'raggedcolumns,'
+\.'unbalanced'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/newalg b/.vim/ftplugin/latex-suite/packages/newalg
new file mode 100644
index 0000000..1480bb6
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/newalg
@@ -0,0 +1,26 @@
+if exists("newalg_package_file")
+ finish
+endif
+let newalg_package_file = 1
+
+let g:TeX_package_option_newalg = ''
+
+let g:TeX_package_newalg =
+\ 'ens:algorithm:{<+name+>}{<++>},'
+\.'ens:IF:{<+cond+>},'
+\.'ens:FOR:{<+loop+>},'
+\.'ens:WHILE:{<+cond+>},'
+\.'bra:ERROR,'
+\.'nor:ELSE,'
+\.'nor:RETURN,'
+\.'nor:NIL,'
+\.'nor:TO,'
+\.'bra:CALL,'
+\.'bra:text,'
+\.'env:REPEAT,'
+\.'env:SWITCH,'
+\.'nor:=,'
+\.'bra:item,'
+\.'nor:algkey'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/ngerman b/.vim/ftplugin/latex-suite/packages/ngerman
new file mode 100644
index 0000000..534ac30
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/ngerman
@@ -0,0 +1,10 @@
+if exists("ngerman_package_file")
+ finish
+endif
+let ngerman_package_file = 1
+
+" For now just define the smart quotes.
+let b:Tex_SmartQuoteOpen = '"`'
+let b:Tex_SmartQuoteClose = "\"'"
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/numprint b/.vim/ftplugin/latex-suite/packages/numprint
new file mode 100644
index 0000000..4eab5a2
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/numprint
@@ -0,0 +1,18 @@
+if exists("numprint_package_file")
+ finish
+endif
+let numprint_package_file = 1
+
+let g:TeX_package_option_numprint = ''
+
+let g:TeX_package_numprint =
+\ 'bra:numprint,'
+\.'nob:numprint,'
+\.'bra:thousandsep,'
+\.'bra:decimalsign,'
+\.'bra:productsign,'
+\.'bra:unitseparator,'
+\.'brd:expnumprint,'
+\.'global'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/oldstyle b/.vim/ftplugin/latex-suite/packages/oldstyle
new file mode 100644
index 0000000..72b2774
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/oldstyle
@@ -0,0 +1,12 @@
+if exists("oldstyle_package_file")
+ finish
+endif
+let oldstyle_package_file = 1
+
+let g:TeX_package_option_oldstyle = ''
+
+let g:TeX_package_oldstyle =
+\ 'bra:textos,'
+\.'bra:mathos'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/outliner b/.vim/ftplugin/latex-suite/packages/outliner
new file mode 100644
index 0000000..ca64322
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/outliner
@@ -0,0 +1,19 @@
+if exists("outliner_package_file")
+ finish
+endif
+let outliner_package_file = 1
+
+let g:TeX_package_option_outliner = ''
+
+let g:TeX_package_outliner =
+\ 'env:Outline,'
+\.'bra:Level,'
+\.'bra:SetBaseLevel,'
+\.'sep:preamble,'
+\.'bra:OutlinePageBreaks,'
+\.'bra:OutlinePageBreaks,'
+\.'bra:OutlineLevelStart,'
+\.'bra:OutlineLevelCont,'
+\.'bra:OutlineLevelEnd'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/overcite b/.vim/ftplugin/latex-suite/packages/overcite
new file mode 100644
index 0000000..25bc17d
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/overcite
@@ -0,0 +1,34 @@
+if exists("overcite_package_file")
+ finish
+endif
+let overcite_package_file = 1
+
+let g:TeX_package_option_overcite =
+\ 'verbose,'
+\.'ref,'
+\.'nospace,'
+\.'space,'
+\.'nosort,'
+\.'sort,'
+\.'nomove,'
+\.'noadjust'
+
+let g:TeX_package_overcite =
+\ 'bra:cite,'
+\.'bra:citen,'
+\.'bra:citenum,'
+\.'bra:citeonline,'
+\.'bra:nocite,'
+\.'sep:redefine,'
+\.'bra:citeform,'
+\.'bra:citepunct,'
+\.'bra:citeleft,'
+\.'bra:citeright,'
+\.'bra:citemid,'
+\.'bra:citedash'
+
+syn region texRefZone matchgroup=texStatement start="\\citen\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+syn region texRefZone matchgroup=texStatement start="\\citenum\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+syn region texRefZone matchgroup=texStatement start="\\citeonline\([tp]\*\=\)\={" keepend end="}\|%stopzone\>" contains=texComment,texDelimiter
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/parallel b/.vim/ftplugin/latex-suite/packages/parallel
new file mode 100644
index 0000000..19dfe8e
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/parallel
@@ -0,0 +1,15 @@
+if exists("parallel_package_file")
+ finish
+endif
+let parallel_package_file = 1
+
+let g:TeX_package_option_parallel = ''
+
+let g:TeX_package_parallel =
+\ 'env:Parallel,'
+\.'bra:ParallelLText,'
+\.'bra:ParallelRText,'
+\.'nor:ParallelPar,'
+\.'nor:tolerance'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/plain b/.vim/ftplugin/latex-suite/packages/plain
new file mode 100644
index 0000000..6a3d092
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/plain
@@ -0,0 +1,10 @@
+if exists("plain_package_file")
+ finish
+endif
+let plain_package_file = 1
+
+let g:TeX_package_option_plain = ''
+
+let g:TeX_package_plain = 'env:plain'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/plates b/.vim/ftplugin/latex-suite/packages/plates
new file mode 100644
index 0000000..e22817e
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/plates
@@ -0,0 +1,16 @@
+if exists("plates_package_file")
+ finish
+endif
+let plates_package_file = 1
+
+let g:TeX_package_option_plates = 'figures,onefloatperpage,memoir'
+
+let g:TeX_package_plates =
+\ 'env:plate,'
+\.'listofplates,'
+\.'ProcessPlates,'
+\.'bra:setplatename,'
+\.'bra:setplatename,'
+\.'bra:atBeginPlates'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/polski b/.vim/ftplugin/latex-suite/packages/polski
new file mode 100644
index 0000000..e2c4efe
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/polski
@@ -0,0 +1,165 @@
+" Author: Mikolaj Machowski <mikmach@wp.pl>
+" (c) Copyright by Mikolaj Machowski 2002-2003
+" License: Vim Charityware
+" Version: 1.6
+"
+" Plik jest w kodowaniu iso-8859-2. Je¶li chcesz go uzywac w MS-Windows musisz
+" go przekonwertowac na cp-1250.
+"
+" Plik ten jest czê¶ci± vim-latexSuite, ale:
+" Nie u¿ywaj±cy vim-latexSuite (http://vim-latex.sourceforge.net) mog± wyci±æ
+" oznaczon± czê¶æ. Reszta mo¿e byæ kopiowana jako osobny plik pod warunkiem
+" niezmieniania tej notki i informacji o prawach autorskich.
+"
+" This file is in iso-8859-2 encoding. If you want to use it in MS-Windows you
+" have to convert it to cp-1250.
+"
+" This file is part of vim-latexSuite but:
+" Those who do not use vim-latexSuite (http://vim-latex.sourceforge.net) can
+" cut off marked part. Rest of the file can be copied as separate file under
+" condition of leaving this notice and information about copyrights unchanged.
+
+if exists("acromake_package_file")
+ finish
+endif
+let acromake_package_file = 1
+
+" --------8<-------------
+" Czesc odpowiedzialna za menu
+let g:TeX_package_option_polski =
+\'OT1,OT4,T1,QX,plmath,nomathsymbols,MeX,prefixingverb,noprefixingverb'
+let g:TeX_package_polski =
+\'sbr:Dywiz&Ska,'.
+\'nor:dywiz,'.
+\'nor:ppauza,'.
+\'nor:pauza,'.
+\'nor:prefixing,'.
+\'nor:nonprefixing,'.
+\'nor:PLdateending,'.
+\'sbr:Matematyka,'.
+\'nor:arccos,'.
+\'nor:arcctan,'.
+\'nor:arcsin,'.
+\'nor:arctan,'.
+\'nor:cot,'.
+\'nor:ctanh,'.
+\'nor:tan,'.
+\'nor:tanh,'.
+\'bra:arc,'.
+\'nor:ctg,'.
+\'nor:ctgh,'.
+\'nor:tg,'.
+\'nor:tgh,'.
+\'nor:nwd'
+
+" To wymaga calego pakietu vim-latexSuite - zakomentuj lub wytnij je¶li nie
+" u¿ywasz (albo go ¶ci±gnij z http://vim-latex.sf.net)
+function! TPackagePolskiTylda()
+ call IMAP (" ---", "~---", "tex")
+endfunction
+call TPackagePolskiTylda()
+" --------8<-------------
+
+" Polskie znaki cudzyslowow
+TexLet g:Tex_SmartQuoteOpen = ",,"
+TexLet g:Tex_SmartQuoteClose = "''"
+
+" Zmodyfikowana i rozwinieta funkcja Andrzeja Ostruszki
+" Z dodatkiem od Benjiego Fishera (sprawdzanie sk³adni)
+"
+" Spacja
+inoremap <buffer> <silent> <Space> <C-R>=<SID>Tex_polish_space()<CR>
+inoremap <buffer> <silent> <CR> <C-R>=<SID>Tex_polish_space()<CR><BS><CR>
+
+" Wymuszenie tyldy
+inoremap <buffer> <silent> <S-Space> ~
+
+" Wymuszenie zwyklej spacji
+inoremap <buffer> <silent> <C-Space> <Space>
+
+" Latwe przelaczanie sie miedzy magiczna spacja a zwykla
+inoremap <buffer> <silent> <F8> <C-R>=<SID>TogglePolishSpace()<CR>
+
+function! s:TogglePolishSpace()
+ if !exists("b:polishspace")
+ iunmap <buffer> <Space>
+ iunmap <buffer> <CR>
+ let b:polishspace = 1
+ return ''
+ else
+ inoremap <buffer> <silent> <Space> <C-R>=<SID>Tex_polish_space()<CR>
+ inoremap <buffer> <silent> <CR> <C-R>=<SID>Tex_polish_space()<CR><BS><CR>
+ unlet b:polishspace
+ return ''
+ endif
+endfunction
+
+
+function! s:Tex_polish_space()
+ "Nic magicznego w matematyce
+ if synIDattr(synID(line('.'),col('.')-1,0),"name") =~ '^texMath\|^texZone\^texRefZone'
+ return ' '
+ else
+ let s:col = col('.')
+ let s:linelength = strlen(getline('.')) + 1
+ " Wstaw tylde po spojnikach
+ if strpart(getline('.'), col('.') - 3, 2) =~? '^[[:space:]~(\[{]\?[aiouwz]$'
+ return '~'
+ " Wstaw tylde po inicjalach - konkretnie po pojedynczych wielkich
+ " literach i kropce. Obs³uguje poprawnie wiekszosc sytuacji.
+ elseif strpart(getline('.'), col('.') - 4, 3) =~? '^[[:space:]~(\[{]\?\u\.$'
+ return '~'
+ " Wstaw tylde po tytulach, skrotach bibliograficznych, podpisach
+ elseif strpart(getline('.'), col('.') - 9, 8) =~? '\(\s\|^\|\~\)\(str\.\|ryc\.\|rys\.\|tab\.\|art\.\|vol\.\|nr\|tabl\.\|rozdz\.\|ss\.\|s\.\|t\.\|z\.\|sir\|prof\.\|hab\.\|red\.\|min\.\|gen\.\|kpt\.\|przew\.\|p³k\|mjr\|mgr\|bp\|ks\.\|o\+\.\|¶w\.\|dr\)$'
+ return '~'
+ " Wstaw tylde miedzy rokiem, wiekiem, a odpowiednim skrotem
+ elseif strpart(getline('.'), col('.') - 8, 7) =~? '[0-9IVXLCM]\s\+\(r\|w\)\.[^a-z±æê³ñó¶¿¼]\{-}$'
+ s/[0-9IVXLCM]\zs\s\+\ze\(w\|r\)\.[^a-z±æê³ñó¶¿¼]\{-}\%#/\~/ei
+ exe 'normal '.s:col.'|'
+ if s:col == s:linelength
+ startinsert!
+ else
+ startinsert
+ endif
+ return ' '
+ " Wstaw tylde miedzy liczba a miara, itd.
+ elseif strpart(getline('.'), col('.') - 10, 9) =~? '\(\d\|mln\|mld\|tys\.\)\s\+\(z³\|gr\|ha\|t\|mies\|godz\|min\|sek\|cm\|km\|mln\|mld\|tys\.\)[^a-z±æê³ñó¶¿¼]\{-}$'
+ s/\(\d\|mln\|mld\|tys\.\)\zs\s\+\ze\(z³\|gr\|ha\|m\|t\|mies\|godz\|min\|sek\|cm\|km\|mln\|mld\|tys\.\)[^a-z±æê³ñó¶¿¼]\{-}\%#/\~/ei
+ exe 'normal '.s:col.'|'
+ if s:col == s:linelength
+ startinsert!
+ else
+ startinsert
+ endif
+ return ' '
+ " Rozwin myslnik w zbitkach w '\dywiz ':
+ " bialo-czerwony -> bialo\dywiz czerwony
+ elseif strpart(getline('.'), col('.') - 20, 19) =~? '[a-z±æê³ñó¶¿¼]-[a-z±æê³ñó¶¿¼]\{-}[^a-z±æê³ñó¶¿¼]\{-}$'
+ s/[a-z±æê³ñó¶¿¼]\zs-\ze[a-z±æê³ñó¶¿¼]\{-}[^a-z±æê³ñó¶¿¼]\{-}\%#/\\dywiz /ei
+ let colb = s:col + 6
+ exe 'normal '.colb.'|'
+ if s:col == s:linelength
+ startinsert!
+ else
+ startinsert
+ endif
+ return ' '
+ " Rozwin '--' miedzy liczbami w '\ppauza ':
+ " 39--45 -> 39\ppauza 45
+ elseif strpart(getline('.'), col('.') - 10, 9) =~? '[0-9IVXLCM]--[0-9IVXLCM]\{-}[^0-9IVXLCM]\{-}$'
+ s/[0-9IVXLCM]\zs--\ze[0-9IVXLCM]\{-}[^0-9IVXLCM]\{-}\%#/\\ppauza /ei
+ let colb = s:col + 6
+ exe 'normal '.colb.'|'
+ if s:col == s:linelength
+ startinsert!
+ else
+ startinsert
+ endif
+ return ' '
+ endif
+ " Tu koncz komentowanie ostatniej sekcji
+ endif
+ return " "
+endfunction
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/psgo b/.vim/ftplugin/latex-suite/packages/psgo
new file mode 100644
index 0000000..1ef852c
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/psgo
@@ -0,0 +1,27 @@
+if exists("psgo_package_file")
+ finish
+endif
+let psgo_package_file = 1
+
+let g:TeX_package_option_psgo = ''
+
+let g:TeX_package_psgo =
+\ 'env:psgogoard,'
+\.'env:psgoboard*,'
+\.'brs:stone{<+color+>}{<+letter+>}{<+number+>},'
+\.'brs:stone[<+marker+>]{<+color+>}{<+letter+>}{<+number+>},'
+\.'brs:move{<+letter+>}{<+number+>},'
+\.'brs:move*{<+letter+>}{<+number+>},'
+\.'brs:goline{<+letter1+>}{<+number1+>}{<+letter2+>}{<+number2+>},'
+\.'brs:goarrow{<+letter1+>}{<+number1+>}{<+letter2+>}{<+number2+>},'
+\.'sbr:Markers,'
+\.'brs:markpos{<+marker+>}{<+letter+>}{<+number+>},'
+\.'markma,'
+\.'marktr,'
+\.'markcr,'
+\.'marksq,'
+\.'bra:marklb,'
+\.'marksl,'
+\.'markdd'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/schedule b/.vim/ftplugin/latex-suite/packages/schedule
new file mode 100644
index 0000000..7d58f6d
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/schedule
@@ -0,0 +1,20 @@
+if exists("schedule_package_file")
+ finish
+endif
+let schedule_package_file = 1
+
+let g:TeX_package_option_schedule = ''
+
+let g:TeX_package_schedule =
+\ 'ens:schedule:[<+title+>],'
+\.'bra:CellHeight,'
+\.'bra:CellWidth,'
+\.'bra:TimeRange,'
+\.'bra:SubUnits,'
+\.'bra:BeginOn,'
+\.'bra:TextSize,'
+\.'nor:FiveDay,'
+\.'nor:SevenDay,'
+\.'brs:NewAppointment{<+name+>}{<+bg+>}{<+fg+>}'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/textfit b/.vim/ftplugin/latex-suite/packages/textfit
new file mode 100644
index 0000000..4d52785
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/textfit
@@ -0,0 +1,12 @@
+if exists("textfit_package_file")
+ finish
+endif
+let textfit_package_file = 1
+
+let g:TeX_package_option_textfit = ''
+
+let g:TeX_package_textfit =
+\ 'brd:scaletowidth,'
+\.'brd:scaletoheight'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/times b/.vim/ftplugin/latex-suite/packages/times
new file mode 100644
index 0000000..499a13b
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/times
@@ -0,0 +1,10 @@
+if exists("times_package_file")
+ finish
+endif
+let times_package_file = 1
+
+let g:TeX_package_option_times = ''
+
+let g:TeX_package_times = ''
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/tipa b/.vim/ftplugin/latex-suite/packages/tipa
new file mode 100644
index 0000000..c89cc5d
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/tipa
@@ -0,0 +1,364 @@
+if exists("tipa_package_file")
+ finish
+endif
+let tipa_package_file = 1
+
+let g:TeX_package_option_tipa =
+\ 'T1,'
+\.'noenc,'
+\.'tone,'
+\.'extra,'
+\.'safe'
+
+let g:TeX_package_tipa =
+\ 'sbr:Common,'
+\.'bra:textipa,'
+\.'env:IPA,'
+\.'tipaencoding,'
+\.'bra:super,'
+\.'nor:ipabar,'
+\.'brd:tipalowaraccent,'
+\.'brd:tipaupperaccent,'
+\.'brd:tipaLowaraccent,'
+\.'brd:tipaUpperaccent,'
+\.'brd:ipaclap,'
+\.'sbr:VowelsandConsonants,'
+\.'nor:textturna,'
+\.'nor:textrhooka,'
+\.'nor:textlhookfour,'
+\.'nor:textscripta,'
+\.'nor:textturnscripta,'
+\.'nor:textinvscripta,'
+\.'ae,'
+\.'nor:textaolig,'
+\.'nor:textsca,'
+\.'nor:textinvsca,'
+\.'nor:textscaolig,'
+\.'nor:textturnv,'
+\.'nor:textsoftsign,'
+\.'nor:texthardsign,'
+\.'nor:texthtb,'
+\.'nor:textscb,'
+\.'nor:textcrb,'
+\.'nor:textbarb,'
+\.'nor:textbeta,'
+\.'nor:textbarc,'
+\.'nor:texthtc,'
+\.'bra:v,'
+\.'bra:c,'
+\.'nor:textctc,'
+\.'nor:textstretchc,'
+\.'nor:textstretchcvar,'
+\.'nor:textctstretchc,'
+\.'nor:textctstretchcvar,'
+\.'nor:textcrd,'
+\.'nor:textbard,'
+\.'nor:texthtd,'
+\.'nor:textrtaild,'
+\.'nor:texthtrtaild,'
+\.'nor:textctd,'
+\.'nor:textfrhookd,'
+\.'nor:textfrhookdvar,'
+\.'nor:textdblig,'
+\.'nor:textdzlig,'
+\.'nor:textdctzlig,'
+\.'nor:textdyoghlig,'
+\.'nor:textctdctzlig,'
+\.'nor:textscdelta,'
+\.'nor:dh,'
+\.'nor:textrhooke,'
+\.'nor:textschwa,'
+\.'nor:textrhookschwa,'
+\.'nor:textreve,'
+\.'nor:textsce,'
+\.'nor:textepsilon,'
+\.'nor:textrhookepsilon,'
+\.'nor:textcloseepsilon,'
+\.'nor:textrevepsilon,'
+\.'nor:textrhookrevepsilon,'
+\.'nor:textcloserevepsilon,'
+\.'nor:textscf,'
+\.'nor:textscriptg,'
+\.'nor:textbarg,'
+\.'nor:textcrg,'
+\.'nor:texthtg,'
+\.'nor:textg,'
+\.'nor:textscg,'
+\.'nor:texthtscg,'
+\.'nor:textgamma,'
+\.'nor:textgrgamma,'
+\.'nor:textfrtailgamma,'
+\.'nor:textbktailgamma,'
+\.'nor:textbabygamma,'
+\.'nor:textramshorns,'
+\.'nor:texthvlig,'
+\.'nor:textcrh,'
+\.'nor:texthth,'
+\.'nor:textrtailhth,'
+\.'nor:textheng,'
+\.'nor:texththeng,'
+\.'nor:textturnh,'
+\.'nor:textsch,'
+\.'nor:i,'
+\.'nor:textbari,'
+\.'nor:textiota,'
+\.'nor:textlhti,'
+\.'nor:textlhtlongi,'
+\.'nor:textvibyi,'
+\.'nor:textraisevibyi,'
+\.'nor:textsci,'
+\.'nor:j,'
+\.'nor:textctj,'
+\.'nor:textctjvar,'
+\.'nor:textscj,'
+\.'bra:v,'
+\.'nor:textbardotlessj,'
+\.'nor:textObardotlessj,'
+\.'nor:texthtbardotlessj,'
+\.'nor:texthtbardotlessjvar,'
+\.'nor:texthtk,'
+\.'nor:textturnk,'
+\.'nor:textsck,'
+\.'nor:textturnsck,'
+\.'nor:textltilde,'
+\.'nor:textbarl,'
+\.'nor:textbeltl,'
+\.'nor:textrtaill,'
+\.'nor:textlyoghlig,'
+\.'nor:textOlyoghlig,'
+\.'nor:textscl,'
+\.'nor:textrevscl,'
+\.'nor:textlambda,'
+\.'nor:textcrlambda,'
+\.'nor:textltailm,'
+\.'nor:textturnm,'
+\.'nor:textturnmrleg,'
+\.'nor:texthmlig,'
+\.'nor:textscm,'
+\.'nor:textnrleg,'
+\.'~,'
+\.'nor:textltailn,'
+\.'nor:textfrbarn,'
+\.'nor:ng,'
+\.'nor:textrtailn,'
+\.'nor:textctn,'
+\.'nor:textnrleg,'
+\.'nor:textscn,'
+\.'nor:textbullseye,'
+\.'nor:textObullseye,'
+\.'nor:textbaro,'
+\.'nor:o,'
+\.'nor:textfemale,'
+\.'nor:textuncrfemale,'
+\.'nor:oe,'
+\.'nor:textscoelig,'
+\.'nor:textopeno,'
+\.'nor:textrhookopeno,'
+\.'nor:textturncelig,'
+\.'nor:textomega,'
+\.'nor:textinvomega,'
+\.'nor:textscomega,'
+\.'nor:textcloseomega,'
+\.'nor:textlhookp,'
+\.'nor:textscp,'
+\.'nor:textwynn,'
+\.'nor:textthorn,'
+\.'nor:textthornvari,'
+\.'nor:textthornvarii,'
+\.'nor:textthornvariii,'
+\.'nor:textthornvariv,'
+\.'nor:texthtp,'
+\.'nor:textphi,'
+\.'nor:texthtq,'
+\.'nor:textqplig,'
+\.'nor:textscq,'
+\.'nor:textfishhookr,'
+\.'nor:textlonglegr,'
+\.'nor:textrtailr,'
+\.'nor:textturnr,'
+\.'nor:textturnrrtail,'
+\.'nor:textturnlonglegr,'
+\.'nor:textscr,'
+\.'nor:textinvscr,'
+\.'nor:textrevscr,'
+\.'bra:v,'
+\.'nor:textrtails,'
+\.'nor:textesh,'
+\.'nor:textdoublebaresh,'
+\.'nor:textctesh,'
+\.'nor:textlooptoprevesh,'
+\.'nor:texthtt,'
+\.'nor:textlhookt,'
+\.'nor:textrtailt,'
+\.'nor:textfrhookt,'
+\.'nor:textctturnt,'
+\.'nor:texttctclig,'
+\.'nor:texttslig,'
+\.'nor:textteshlig,'
+\.'nor:textturnt,'
+\.'nor:textctt,'
+\.'nor:textcttctclig,'
+\.'nor:texttheta,'
+\.'nor:textbaru,'
+\.'nor:textupsilon,'
+\.'nor:textscu,'
+\.'nor:textturnscu,'
+\.'nor:textscriptv,'
+\.'nor:textturnw,'
+\.'nor:textchi,'
+\.'nor:textturny,'
+\.'nor:textscy,'
+\.'nor:textlhtlongy,'
+\.'nor:textvibyy,'
+\.'nor:textcommatailz,'
+\.'bra:v,'
+\.'nor:textctz,'
+\.'nor:textrtailz,'
+\.'nor:textcrtwo,'
+\.'nor:textturntwo,'
+\.'nor:textyogh,'
+\.'nor:textbenttailyogh,'
+\.'nor:textrevyogh,'
+\.'nor:textctyogh,'
+\.'nor:textturnthree,'
+\.'nor:textglotstop,'
+\.'nor:textraiseglotstop,'
+\.'nor:textbarglotstop,'
+\.'nor:textinvglotstop,'
+\.'nor:textcrinvglotstop,'
+\.'nor:textctinvglotstop,'
+\.'nor:textrevglotstop,'
+\.'nor:textturnglotstop,'
+\.'nor:textbarrevglotstop,'
+\.'nor:textpipe,'
+\.'nor:textpipevar,'
+\.'nor:textdoublebarpipe,'
+\.'nor:textdoublebarpipevar,'
+\.'nor:textdoublepipevar,'
+\.'nor:textdoublepipe,'
+\.'nor:textdoublebarslash,'
+\.'sbr:Suprasegmentals,'
+\.'nor:textprimstress,'
+\.'nor:textsecstress,'
+\.'nor:textlengthmark,'
+\.'nor:texthalflength,'
+\.'nor:textvertline,'
+\.'nor:textdoublevertline,'
+\.'bra:textbottomtiebar,'
+\.'nor:textdownstep,'
+\.'nor:textupstep,'
+\.'nor:textglobfall,'
+\.'nor:textglobrise,'
+\.'nor:textspleftarrow,'
+\.'nor:textdownfullarrow,'
+\.'nor:textupfullarrow,'
+\.'nor:textsubrightarrow,'
+\.'nor:textsubdoublearrow,'
+\.'sbr:AccentsandDiacritics,'
+\.'`,'
+\."',"
+\.'^,'
+\.'~,'
+\.'",'
+\.'bra:H,'
+\.'bra:r,'
+\.'bra:v,'
+\.'bra:u,'
+\.'=,'
+\.'.,'
+\.'bra:c,'
+\.'bra:textpolhook,'
+\.'nor:textrevpolhook{o,'
+\.'bra:textdoublegrave,'
+\.'bra:textsubgrave,'
+\.'bra:textsubacute,'
+\.'bra:textsubcircum,'
+\.'bra:textroundcap,'
+\.'bra:textacutemacron,'
+\.'bra:textgravemacron,'
+\.'bra:textvbaraccent,'
+\.'bra:textdoublevbaraccent,'
+\.'bra:textgravedot,'
+\.'bra:textdotacute,'
+\.'bra:textcircumdot,'
+\.'bra:texttildedot,'
+\.'bra:textbrevemacron,'
+\.'bra:textringmacron,'
+\.'bra:textacutewedge,'
+\.'bra:textdotbreve,'
+\.'bra:textsubbridge,'
+\.'bra:textinvsubbridge,'
+\.'sbr:SubscriptSquare,'
+\.'bra:textsubrhalfring,'
+\.'bra:textsublhalfring,'
+\.'bra:textsubw,'
+\.'bra:textoverw,'
+\.'bra:textseagull,'
+\.'bra:textovercross,'
+\.'bra:textsubplus,'
+\.'bra:textraising,'
+\.'bra:textlowering,'
+\.'bra:textadvancing,'
+\.'bra:textretracting,'
+\.'bra:textsubtilde,'
+\.'bra:textsubumlaut,'
+\.'bra:textsubring,'
+\.'bra:textsubwedge,'
+\.'bra:textsubbar,'
+\.'bra:textsubdot,'
+\.'bra:textsubarch,'
+\.'bra:textsyllabic,'
+\.'bra:textsuperimposetilde,'
+\.'nor:textcorner,'
+\.'nor:textopencorner,'
+\.'nor:textrhoticity,'
+\.'nor:textceltpal,'
+\.'nor:textlptr,'
+\.'nor:textrptr,'
+\.'nor:textrectangle,'
+\.'nor:textretractingvar,'
+\.'bra:texttoptiebar,'
+\.'nor:textrevapostrophe,'
+\.'nor:texthooktop,'
+\.'nor:textrthook,'
+\.'nor:textrthooklong,'
+\.'nor:textpalhook,'
+\.'nor:textpalhooklong,'
+\.'nor:textpalhookvar,'
+\.'bra:textsuperscript,'
+\.'sbr:ToneLetters,'
+\.'bra:tone,'
+\.'bra:stone,'
+\.'bra:rtone,'
+\.'nor:tone{55},'
+\.'nor:tone{44},'
+\.'nor:tone{33},'
+\.'nor:tone{22},'
+\.'nor:tone{11},'
+\.'nor:tone{51},'
+\.'nor:tone{15},'
+\.'nor:tone{45},'
+\.'nor:tone{12},'
+\.'nor:tone{454},'
+\.'sbr:DiacriticsExtIPA,'
+\.'bra:spreadlips,'
+\.'bra:overbridge,'
+\.'bra:bibridge,'
+\.'bra:subdoublebar,'
+\.'bra:subdoublevert,'
+\.'bra:subcorner,'
+\.'bra:whistle,'
+\.'bra:sliding,'
+\.'bra:crtilde,'
+\.'bra:dottedtilde,'
+\.'bra:doubletilde,'
+\.'bra:partvoiceless,'
+\.'bra:inipartvoiceless,'
+\.'bra:finpartvoiceless,'
+\.'bra:partvoice,'
+\.'bra:inipartvoice,'
+\.'bra:finpartvoice,'
+\.'bra:sublptr,'
+\.'bra:subrptr'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/ulem b/.vim/ftplugin/latex-suite/packages/ulem
new file mode 100644
index 0000000..9257713
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/ulem
@@ -0,0 +1,21 @@
+if exists("ulem_package_file")
+ finish
+endif
+let ulem_package_file = 1
+
+let g:TeX_package_option_ulem =
+\ 'normalem,'
+\.'ULforem,'
+\.'normalbf,'
+\.'UWforbf'
+
+let g:TeX_package_ulem =
+\ 'bra:uwave,'
+\.'bra:uline,'
+\.'bra:uuline,'
+\.'bra:sout,'
+\.'bra:xout,'
+\.'ULthickness,'
+\.'ULdepth'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/url b/.vim/ftplugin/latex-suite/packages/url
new file mode 100644
index 0000000..642148a
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/url
@@ -0,0 +1,24 @@
+if exists("url_package_file")
+ finish
+endif
+let url_package_file = 1
+
+let g:TeX_package_option_url =
+\ 'hyphens,'
+\.'obeyspaces,'
+\.'spaces,'
+\.'T1'
+
+let g:TeX_package_url =
+\ 'bra:urlstyle,'
+\.'bra:url,'
+\.'bra:path,'
+\.'bra:urldef'
+
+" TODO uncomment if you figure out
+" 1. how to get this syn command to work every time instead of only the
+" first time this file is sourced.
+" syn region texZone start="\\url{" end="}\|%stopzone\>"
+" syn region texZone start="\\path{" end="}\|%stopzone\>"
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/verbatim b/.vim/ftplugin/latex-suite/packages/verbatim
new file mode 100644
index 0000000..f2137ff
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/verbatim
@@ -0,0 +1,18 @@
+if exists("verbatim_package_file")
+ finish
+endif
+let verbatim_package_file = 1
+
+let g:TeX_package_option_verbatim = ''
+
+let g:TeX_package_verbatim =
+\ 'env:comment,'
+\.'env:verbatim,'
+\.'env:verbatim*,'
+\.'bra:verbatiminput,'
+\.'bra:verbatiminput'
+
+syn region texZone start="\\begin{comment}" end="\\end{comment}\|%stopzone\>" fold
+syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>" fold
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/packages/version b/.vim/ftplugin/latex-suite/packages/version
new file mode 100644
index 0000000..4de9da8
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/packages/version
@@ -0,0 +1,12 @@
+if exists("version_package_file")
+ finish
+endif
+let version_package_file = 1
+
+let g:TeX_package_option_version = ''
+
+let g:TeX_package_version =
+\ 'bra:includeversion,'
+\.'bra:excludeversion'
+
+" vim:ft=vim:ff=unix:
diff --git a/.vim/ftplugin/latex-suite/projecttemplate.vim b/.vim/ftplugin/latex-suite/projecttemplate.vim
new file mode 100644
index 0000000..1ab4be0
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/projecttemplate.vim
@@ -0,0 +1,11 @@
+" Project name
+" let g:projName = ''
+"
+" Project files
+" let g:projFiles = ''
+
+
+" Vim settings/maps/abbrs specific for this project
+
+" Modeline for this file
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:ft=vim
diff --git a/.vim/ftplugin/latex-suite/pytools.py b/.vim/ftplugin/latex-suite/pytools.py
new file mode 100644
index 0000000..1934e23
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/pytools.py
@@ -0,0 +1,52 @@
+import string, vim, re, os, glob
+# catFile: assigns a local variable retval to the contents of a file {{{
+def catFile(filename):
+ try:
+ file = open(filename)
+ lines = ''.join(file.readlines())
+ file.close()
+ except:
+ lines = ''
+
+ # escape double quotes and backslashes before quoting the string so
+ # everything passes throught.
+ vim.command("""let retval = "%s" """ % re.sub(r'"|\\', r'\\\g<0>', lines))
+ return lines
+
+# }}}
+# isPresentInFile: check if regexp is present in the file {{{
+def isPresentInFile(regexp, filename):
+ try:
+ fp = open(filename)
+ fcontents = string.join(fp.readlines(), '')
+ fp.close()
+ if re.search(regexp, fcontents):
+ vim.command('let retval = 1')
+ return 1
+ else:
+ vim.command('let retval = 0')
+ return None
+ except:
+ vim.command('let retval = 0')
+ return None
+
+# }}}
+# deleteFile: deletes a file if present {{{
+# If the file does not exist, check if its a filepattern rather than a
+# filename. If its a pattern, then deletes all files matching the
+# pattern.
+def deleteFile(filepattern):
+ if os.path.exists(filepattern):
+ try:
+ os.remove(filepattern)
+ except:
+ vim.command('let retval = -1')
+ else:
+ if glob.glob(filepattern):
+ for filename in glob.glob(filepattern):
+ os.remove(filename)
+ else:
+ vim.command('let retval = -1')
+
+# }}}
+# vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/.vim/ftplugin/latex-suite/smartspace.vim b/.vim/ftplugin/latex-suite/smartspace.vim
new file mode 100644
index 0000000..07526d8
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/smartspace.vim
@@ -0,0 +1,102 @@
+"=============================================================================
+" File: smartspace.vim
+" Author: Carl Muller
+" Created: Fri Dec 06 12:00 AM 2002 PST
+"
+" Description:
+" Maps the <space> key in insert mode so that mathematical formulaes are
+" always kept on the same line. i.e, $$'s dont get broken across multiple
+" lines.
+"=============================================================================
+
+" Avoid reinclusion or if the user doesn't want us.
+if exists('b:done_smartspace')
+ \ || (exists('g:Tex_SmartKeySpace') && !g:Tex_SmartKeySpace)
+ finish
+endif
+let b:done_smartspace = 1
+
+" Smart space relies on taking over vim's insertion of carriage returns in
+" order to keep $$'s on the same line. The only way to get vim not to break
+" lines is to set tw=0.
+"
+" NOTE: setting tw != 0 will break smartspace
+" the user's 'tw' setting is still respected in the insert mode.
+" However, normal mode actions which rely on 'tw' such as gqap will be
+" broken because of the faulty 'tw' setting.
+let b:tw = &l:tw
+setlocal tw=0
+
+inoremap <buffer> <silent> <Space> <Space><Esc>:call <SID>TexFill(b:tw)<CR>a
+
+" Do not redefine the function.
+if exists('*s:TexFill')
+ finish
+endif
+
+" TexFormatLine: format line retaining $$'s on the same line. {{{
+function! s:TexFill(width)
+ if a:width != 0 && col(".") > a:width
+ " For future use, record the current line and the number of the current column
+ let current_line = getline(".")
+ let current_column = col(".")
+ exe "normal! a##\<Esc>"
+ call <SID>TexFormatLine(a:width,current_line,current_column)
+ exe "normal! ?##\<CR>2s\<Esc>"
+ " Remove ## from the search history.
+ call histdel("/", -1)|let @/=histget("/", -1)
+ endif
+endfunction
+
+" }}}
+function! s:TexFormatLine(width, current_line, current_column) " {{{
+ " get the first non-blank character.
+ let first = matchstr(getline('.'), '\S')
+ normal! $
+ let length = col('.')
+ let go = 1
+ while length > a:width+2 && go
+ let between = 0
+ let string = strpart(getline('.'), 0, a:width)
+ " Count the dollar signs
+ let number_of_dollars = 0
+ let evendollars = 1
+ let counter = 0
+ while counter <= a:width-1
+ " Pay attention to '$$'.
+ if string[counter] == '$' && string[counter-1] != '$'
+ let evendollars = 1 - evendollars
+ let number_of_dollars = number_of_dollars + 1
+ endif
+ let counter = counter + 1
+ endwhile
+ " Get ready to split the line.
+ exe 'normal! ' . (a:width + 1) . '|'
+ if evendollars
+ " Then you are not between dollars.
+ exe "normal! ?\\$\\+\\| \<CR>W"
+ else
+ " Then you are between dollars.
+ normal! F$
+ if col(".") == 1 || getline('.')[col(".")-1] != "$"
+ let go = 0
+ endif
+ endif
+ if first == '$' && number_of_dollars == 1
+ let go = 0
+ else
+ exe "normal! i\<CR>\<Esc>$"
+ " get the first non-blank character.
+ let first = matchstr(getline('.'), '\S')
+ endif
+ let length = col(".")
+ endwhile
+ if go == 0 && strpart(a:current_line, 0, a:current_column) =~ '.*\$.*\$.*'
+ exe "normal! ^f$a\<CR>\<Esc>"
+ call <SID>TexFormatLine(a:width, a:current_line, a:current_column)
+ endif
+endfunction
+
+" }}}
+
+" vim:fdm=marker:ts=4:sw=4:noet
diff --git a/.vim/ftplugin/latex-suite/templates.vim b/.vim/ftplugin/latex-suite/templates.vim
new file mode 100644
index 0000000..e28e429
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/templates.vim
@@ -0,0 +1,149 @@
+"=============================================================================
+" File: templates.vim
+" Author: Gergely Kontra
+" (minor modifications by Srinath Avadhanula)
+" (plus other modifications by Mikolaj Machowski)
+" Version: 1.0
+" Created: Tue Apr 23 05:00 PM 2002 PST
+" CVS: $Id: templates.vim 1002 2006-03-23 04:02:21Z srinathava $
+"
+" Description: functions for handling templates in latex-suite/templates
+" directory.
+"=============================================================================
+
+let s:path = expand("<sfile>:p:h")
+
+" SetTemplateMenu: sets up the menu for templates {{{
+function! <SID>SetTemplateMenu()
+ let flist = Tex_FindInRtp('', 'templates')
+ let i = 1
+ while 1
+ let fname = Tex_Strntok(flist, ',', i)
+ if fname == ''
+ break
+ endif
+ exe "amenu ".g:Tex_TemplatesMenuLocation."&".i.":<Tab>".fname." ".
+ \":call <SID>ReadTemplate('".fname."')<CR>"
+ let i = i + 1
+ endwhile
+endfunction
+
+if g:Tex_Menus
+ call <SID>SetTemplateMenu()
+endif
+
+" }}}
+" ReadTemplate: reads in the template file from the template directory. {{{
+function! <SID>ReadTemplate(...)
+ if a:0 > 0
+ let filename = a:1
+ else
+ let filelist = Tex_FindInRtp('', 'templates')
+ let filename =
+ \ Tex_ChooseFromPrompt("Choose a template file:\n" .
+ \ Tex_CreatePrompt(filelist, 2, ',') .
+ \ "\nEnter number or name of file :",
+ \ filelist, ',')
+ endif
+
+ let fname = Tex_FindInRtp(filename.'.tex', 'templates', ':p')
+ call Tex_Debug("0read ".fname, 'templates')
+
+ silent! exe "0read ".fname
+
+ " The first line of the file contains the specifications of what the
+ " placeholder characters and the other special characters are.
+ let pattern = '\v(\S+)\t(\S+)\t(\S+)\t(\S+)'
+
+ let s:phsTemp = substitute(getline(1), pattern, '\1', '')
+ let s:pheTemp = substitute(getline(1), pattern, '\2', '')
+ let s:exeTemp = substitute(getline(1), pattern, '\3', '')
+ let s:comTemp = substitute(getline(1), pattern, '\4', '')
+
+ 0 d_
+
+ call s:ProcessTemplate()
+ call Tex_pack_updateall(1)
+
+ " Do not handle the placeholders here. Let IMAP_PutTextWithMovement do it
+ " because it handles UTF-8 character substitutions etc. Therefore delete
+ " the text into @a and paste it using IMAP_PutTextWithMovement().
+ let _a = @a
+ normal! ggVG"ax
+
+ let _fo = &fo
+ " Since IMAP_PutTextWithMovement simulates the key-presses, leading
+ " indendatation can get duplicated in strange ways if ``fo`` is non-empty.
+ " NOTE: the indentexpr thingie is still respected with an empty fo so that
+ " environments etc are properly indented.
+ set fo=
+
+ call Tex_Debug("normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>", 'templates')
+ exec "normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>"
+
+ let &fo = _fo
+ let @a = _a
+
+ call Tex_Debug('phs = '.s:phsTemp.', phe = '.s:pheTemp.', exe = '.s:exeTemp.', com = '.s:comTemp, 'templates')
+
+endfunction
+
+" }}}
+" ProcessTemplate: processes the special characters in template file. {{{
+" This implementation follows from Gergely Kontra's
+" mu-template.vim
+" http://vim.sourceforge.net/scripts/script.php?script_id=222
+function! <SID>ProcessTemplate()
+ if exists('s:phsTemp') && s:phsTemp != ''
+
+ exec 'silent! %s/^'.s:comTemp.'\(\_.\{-}\)'.s:comTemp.'$/\=<SID>Compute(submatch(1))/ge'
+ exec 'silent! %s/'.s:exeTemp.'\(.\{-}\)'.s:exeTemp.'/\=<SID>Exec(submatch(1))/ge'
+ exec 'silent! g/'.s:comTemp.s:comTemp.'/d'
+
+ " A function only puts one item into the search history...
+ call Tex_CleanSearchHistory()
+ endif
+endfunction
+
+function! <SID>Exec(what)
+ exec 'return '.a:what
+endfunction
+
+" Back-Door to trojans !!!
+function! <SID>Compute(what)
+ exe a:what
+ if exists('s:comTemp')
+ return s:comTemp.s:comTemp
+ else
+ return ''
+ endif
+endfunction
+
+" }}}
+" Command definitions {{{
+if v:version >= 602
+ com! -complete=custom,Tex_CompleteTemplateName -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
+ \| :startinsert
+
+ " Tex_CompleteTemplateName: for completing names in TTemplate command {{{
+ " Description: get list of template names with Tex_FindInRtp(), remove full path
+ " and return list of names separated with newlines.
+ "
+ function! Tex_CompleteTemplateName(A,P,L)
+ " Get name of macros from all runtimepath directories
+ let tmplnames = Tex_FindInRtp('', 'templates')
+ " Separate names with \n not ,
+ let tmplnames = substitute(tmplnames,',','\n','g')
+ return tmplnames
+ endfunction
+ " }}}
+
+else
+ com! -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
+ \| :startinsert
+
+endif
+
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/templates/IEEEtran.tex b/.vim/ftplugin/latex-suite/templates/IEEEtran.tex
new file mode 100644
index 0000000..104f9b2
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/templates/IEEEtran.tex
@@ -0,0 +1,142 @@
+<+ +> !comp! !exe!
+%% Based on <bare_jrnl.tex> in the ieee package available from CTAN,
+%% I have changed the options so that most useful ones are clubbed together,
+%% Have a look at <bare_jrnl.tex> to understand the function of each package.
+
+%% This code is offered as-is - no warranty - user assumes all risk.
+%% Free to use, distribute and modify.
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. IEEE's font choices can trigger bugs that do ***
+% *** not appear when using other class files. ***
+% Testflow can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/testflow
+
+% File: !comp!expand("%:p:t")!comp!
+% Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+% Last Change: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+%
+\documentclass[journal]{IEEEtran}
+
+\usepackage{cite, graphicx, subfigure, amsmath}
+\interdisplaylinepenalty=2500
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+
+<++>
+% correct bad hyphenation here
+\hyphenation{<+op-tical net-works semi-conduc-tor+>}
+
+
+\begin{document}
+%
+% paper title
+\title{<+Skeleton of IEEEtran.cls for Journals in VIM-Latex+>}
+%
+%
+% author names and IEEE memberships
+% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break
+% a structure at a ~ so this keeps an author's name from being broken across
+% two lines.
+% use \thanks{} to gain access to the first footnote area
+% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks
+% was not built to handle multiple paragraphs
+\author{<+Sumit Bhardwaj+>~\IEEEmembership{<+Student~Member,~IEEE,+>}
+<+John~Doe+>,~\IEEEmembership{<+Fellow,~OSA,+>}
+<+and~Jane~Doe,+>~\IEEEmembership{<+Life~Fellow,~IEEE+>}}% <-this % stops a space
+\thanks{<+Manuscript received January 20, 2002; revised August 13, 2002.
+This work was supported by the IEEE.+>}% <-this % stops a space
+\thanks{<+S. Bhardwaj is with the Indian Institute of Technology, Delhi.+>}
+%
+% The paper headers
+\markboth{<+Journal of VIM-\LaTeX\ Class Files,~Vol.~1, No.~8,~August~2002+>}{
+<+Bhardwaj \MakeLowercase{\textit{et al.}+>}: <+Skeleton of IEEEtran.cls for Journals in VIM-Latex+>}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+
+
+% If you want to put a publisher's ID mark on the page
+% (can leave text blank if you just want to see how the
+% text height on the first page will be reduced by IEEE)
+%\pubid{0000--0000/00\$00.00~\copyright~2002 IEEE}
+
+% use only for invited papers
+%\specialpapernotice{(Invited Paper)}
+
+% make the title area
+\maketitle
+
+
+\begin{abstract}
+<+The abstract goes here.+>
+\end{abstract}
+
+\begin{keywords}
+<+IEEEtran, journal, \LaTeX, paper, template, VIM, VIM-\LaTeX+>.
+\end{keywords}
+
+\section{Introduction}
+\PARstart{<+T+>}{<+his+>} <+demo file is intended to serve as a ``starter file"
+for IEEE journal papers produced under \LaTeX\ using IEEEtran.cls version
+1.6 and later.+>
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+<+May all your publication endeavors be successful.+>
+
+% needed in second column of first page if using \pubid
+%\pubidadjcol
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+%\bibliographystyle{IEEEtran.bst}
+%\bibliography{IEEEabrv,../bib/paper}
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to {\LaTeX}}, 3rd~ed.\hskip 1em plus
+0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+\begin{biography}{Sumit Bhardwaj}
+Biography text here.
+\end{biography}
+
+% if you will not have a photo
+\begin{biographynophoto}{John Doe}
+Biography text here.
+\end{biographynophoto}
+
+% insert where needed to balance the two columns on the last page
+%\newpage
+
+\begin{biographynophoto}{Jane Doe}
+Biography text here.
+\end{biographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+\end{document}
diff --git a/.vim/ftplugin/latex-suite/templates/article.tex b/.vim/ftplugin/latex-suite/templates/article.tex
new file mode 100644
index 0000000..ea7e1d1
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/templates/article.tex
@@ -0,0 +1,9 @@
+<+ +> !comp! !exe!
+% File: !comp!expand("%:p:t")!comp!
+% Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+% Last Change: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+%
+\documentclass[a4paper]{article}
+\begin{document}
+<++>
+\end{document}
diff --git a/.vim/ftplugin/latex-suite/templates/report.tex b/.vim/ftplugin/latex-suite/templates/report.tex
new file mode 100644
index 0000000..479c7b3
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/templates/report.tex
@@ -0,0 +1,9 @@
+<+ +> !comp! !exe!
+% File: !comp!expand("%")!comp!
+% Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+% Last Change: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+%
+\documentclass[a4paper]{report}
+\begin{document}
+<++>
+\end{document}
diff --git a/.vim/ftplugin/latex-suite/templates/report_two_column.tex b/.vim/ftplugin/latex-suite/templates/report_two_column.tex
new file mode 100644
index 0000000..15bd95e
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/templates/report_two_column.tex
@@ -0,0 +1,9 @@
+<+ +> !comp! !exe!
+% File: !comp!expand("%:p:t")!comp!
+% Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+% Last Change: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
+%
+\documentclass[a4paper,twocolumn]{report}
+\begin{document}
+<++>
+\end{document}
diff --git a/.vim/ftplugin/latex-suite/texmenuconf.vim b/.vim/ftplugin/latex-suite/texmenuconf.vim
new file mode 100644
index 0000000..405e46a
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/texmenuconf.vim
@@ -0,0 +1,131 @@
+"=============================================================================
+" File: texmenuconf.vim
+" Author: Srinath Avadhanula
+" Copyright: Vim charityware license. :help license
+" Description:
+" CVS: $Id: texmenuconf.vim 997 2006-03-20 09:45:45Z srinathava $
+"
+"=============================================================================
+
+" Paths, crucial for functions
+let s:path = expand("<sfile>:p:h")
+let s:up_path = expand("<sfile>:p:h:h")
+let s:mainmenuname = g:Tex_MenuPrefix.'S&uite.'
+let s:mapleader = exists('mapleader') ? mapleader : "\\"
+
+" This glboal variable is incremented each time a top-level latex-suite menu
+" is created. We should always use this variable for setting the locations of
+" newly created top-level menus.
+let g:Tex_NextMenuLocation = g:Tex_MainMenuLocation
+
+" The templates and macros menus are always nested within the main latex-suit
+" menu.
+let g:Tex_TemplatesMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Templates.'
+let g:Tex_MacrosMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Macros.'
+
+" The packages menu can either be a child of the main menu or be a top-level
+" menu by itself.
+if g:Tex_NestPackagesMenu
+ let g:Tex_PackagesMenuLocation = (g:Tex_MainMenuLocation).'.10 '.s:mainmenuname.'&Packages.'
+else
+ let g:Tex_PackagesMenuLocation = (g:Tex_NextMenuLocation).'.10 '.g:Tex_MenuPrefix.'Packages.'
+ let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
+endif
+
+" Environments are always a top-level menu.
+let g:Tex_EnvMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&nvironments.'
+let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
+
+" Elements are always a top-level menu.
+" If we choose to nest elements, then the top-level &TeX-Elements menu
+" contains <Fonts / Counters / Dimensions>
+" otherwise, the Fonts, Counters and Dimensions menus become top-level menus.
+if g:Tex_NestElementMenus
+ let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&lements.'
+else
+ let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix
+endif
+let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
+
+
+" Set up the compiler/viewer menus. {{{
+"
+if has('gui_running') && g:Tex_Menus
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.25 '. s:mainmenuname.'-sepsuite0- :'
+
+ " menus for compiling / viewing etc.
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.30 '.s:mainmenuname.'&Compile<tab>'.s:mapleader.'ll'.
+ \' :silent! call Tex_RunLaTeX()<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.40 '.s:mainmenuname.'&View<tab>'.s:mapleader.'lv'.
+ \' :silent! call Tex_ViewLaTeX()<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.50 '.s:mainmenuname.'&Search<tab>'.s:mapleader.'ls'.
+ \' :silent! call ForwardSearchLaTeX()<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.60 '.s:mainmenuname.'&Target\ Format<tab>:TTarget'.
+ \' :call SetTeXTarget()<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.70 '.s:mainmenuname.'&Compiler\ Target<tab>:TCTarget'.
+ \' :call Tex_SetTeXCompilerTarget("Compile", "")<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.80 '.s:mainmenuname.'&Viewer\ Target<tab>:TVTarget'.
+ \' :call Tex_SetTeXCompilerTarget("View", "")<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.90 '.s:mainmenuname.'Set\ &Ignore\ Level<tab>:TCLevel'.
+ \' :TCLevel<CR>'
+ exec 'imenu '.g:Tex_MainMenuLocation.'.100 '.s:mainmenuname.'C&omplete\ Ref/Cite'.
+ \' <Plug>Tex_Completion'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.110 '.s:mainmenuname.'-sepsuite1- :'
+ " refreshing folds
+ if g:Tex_Folding
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.120 '.s:mainmenuname.'&Refresh\ Folds<tab>'.s:mapleader.'rf'.
+ \' :call MakeTexFolds(1)<CR>'
+ exec 'anoremenu '.g:Tex_MainMenuLocation.'.130 '.s:mainmenuname.'-sepsuite2- :'
+ endif
+endif
+
+" }}}
+
+" ==============================================================================
+" MenuConf: configure the menus as compact/extended, with/without math
+" ==============================================================================
+function! Tex_MenuConfigure(type, action) " {{{
+ let menuloc = s:mainmenuname.'Configure\ Menu.'
+ if a:type == 'math'
+ if a:action == 1
+ let g:Tex_MathMenus = 1
+ exe 'so '.s:path.'/mathmacros.vim'
+ exe 'amenu disable '.menuloc.'Add\ Math\ Menu'
+ exe 'amenu enable '.menuloc.'Remove\ Math\ Menu'
+ elseif a:action == 0
+ call Tex_MathMenuRemove()
+ exe 'amenu enable '.menuloc.'Add\ Math\ Menu'
+ exe 'amenu disable '.menuloc.'Remove\ Math\ Menu'
+ endif
+ elseif a:type == 'elements'
+ if a:action == 'expand'
+ let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix
+ exe 'amenu disable '.menuloc.'Expand\ Elements'
+ exe 'amenu enable '.menuloc.'Compress\ Elements'
+ elseif a:action == 'nest'
+ let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix.'Elements.'
+ exe 'amenu enable '.menuloc.'Expand\ Elements'
+ exe 'amenu disable '.menuloc.'Compress\ Elements'
+ endif
+ exe 'source '.s:path.'/elementmacros.vim'
+ elseif a:type == 'packages'
+ if a:action == 1
+ let g:Tex_PackagesMenu = 1
+ exe 'so '.s:path.'/packages.vim'
+ exe 'amenu disable '.menuloc.'Load\ Packages\ Menu'
+ endif
+ endif
+endfunction
+
+" }}}
+
+" configuration menu.
+if g:Tex_Menus
+ exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Add\ Math\ Menu :call Tex_MenuConfigure("math", 1)<cr>'
+ exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Remove\ Math\ Menu :call Tex_MenuConfigure("math", 0)<cr>'
+ exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Expand\ Elements :call Tex_MenuConfigure("elements", "expand")<cr>'
+ exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Compress\ Elements :call Tex_MenuConfigure("elements", "nest")<cr>'
+ exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Load\ Packages\ Menu :call Tex_MenuConfigure("packages", 1)<cr>'
+endif
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/texproject.vim b/.vim/ftplugin/latex-suite/texproject.vim
new file mode 100644
index 0000000..bed9ed3
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/texproject.vim
@@ -0,0 +1,54 @@
+"=============================================================================
+" File: texproject.vim
+" Author: Mikolaj Machowski
+" Version: 1.0
+" Created: Wen Apr 16 05:00 PM 2003
+"
+" Description: Handling tex projects.
+"=============================================================================
+
+let s:path = expand("<sfile>:p:h")
+
+command! -nargs=0 TProjectEdit :call <SID>Tex_ProjectEdit()
+
+" Tex_ProjectEdit: Edit project file " {{{
+" Description: If project file exists (*.latexmain) open it in window created
+" with ':split', if no create ':new' window and read there
+" project template
+"
+function! s:Tex_ProjectEdit()
+
+ let file = expand("%:p")
+ let mainfname = Tex_GetMainFileName()
+ if glob(mainfname.'.latexmain') != ''
+ exec 'split '.Tex_EscapeSpaces(mainfname.'.latexmain')
+ else
+ echohl WarningMsg
+ echomsg "Master file not found."
+ echomsg " :help latex-master-file"
+ echomsg "for more information"
+ echohl None
+ endif
+
+endfunction " }}}
+" Tex_ProjectLoad: loads the .latexmain file {{{
+" Description: If a *.latexmain file exists, then sources it
+function! Tex_ProjectLoad()
+ let curd = getcwd()
+ call Tex_CD(expand('%:p:h'))
+
+ if glob(Tex_GetMainFileName(':p').'.latexmain') != ''
+ call Tex_Debug("Tex_ProjectLoad: sourcing [".Tex_GetMainFileName().".latexmain]", "proj")
+ exec 'source '.Tex_GetMainFileName().'.latexmain'
+ endif
+
+ call Tex_CD(curd)
+endfunction " }}}
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug("texproject.vim: catching LatexSuiteFileType event", "proj") |
+ \ call Tex_ProjectLoad()
+augroup END
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/texrc b/.vim/ftplugin/latex-suite/texrc
new file mode 100644
index 0000000..79068a8
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/texrc
@@ -0,0 +1,738 @@
+"=============================================================================
+" vim:ft=vim:ts=4:sw=4:noet:fdm=marker:commentstring=\"\ %s:ff=unix
+" File: texrc.vim
+" Author: Srinath Avadhanula
+" Created: Mon Apr 01 11:00 AM 2002 PST
+" CVS: $Id: texrc 998 2006-03-20 09:52:12Z srinathava $
+"
+" Description: This file contains resource configuration information for the
+" latex-suite package.
+"
+" NOTE: Do NOT be edit this file directly:
+" this file will be over-written each time you install a new copy
+" of latex-suite.
+"
+" You can do one of the following:
+" 1. Copy this file into $VIMFILES/ftplugin/tex/texrc
+" and edit the values in that file.
+" $VIMFILES is ~/.vim for UNIX systems and ~/vimfiles for
+" WINDOWS systems.
+"
+" 2. Just set values of each setting individually in your
+" $VIMFILES/ftplugin/tex.vim file. (See above for what
+" $VIMFILES is). You will need to use :let instead of :TexLet
+" in this case.
+"
+" NOTE: This file is best viewed with Vim-6.0+ with folding turned on.
+" CVS: $Id: texrc 998 2006-03-20 09:52:12Z srinathava $
+"=============================================================================
+
+" ==============================================================================
+" SafeLet: checks for value before giving default value {{{
+" Description: The function takes in a single argument and splits it into 2
+" parts, the first being the first <CWORD> found. this is taken
+" as a variable name and the next part is assigned to it
+" depending on whether the variable already exists or not.
+" handles the case where the next part is quoted or not.
+" All these calls work:
+" TexLet g:varname = 1
+" TexLet g:varname = '1'
+" TexLet g:varname = 'foo bar'
+" TexLet g:varname = "foo\nbar"
+" TexLet g:varname = foo bar
+function! <SID>SafeLet(arg)
+ let name = matchstr(a:arg, '^\s*\zs\(\S\+\)\ze\s*=')
+ let value = matchstr(a:arg, '=\s*\zs.*\ze')
+ let value = substitute(value, '\s*$', '', '')
+ if !exists(name)
+ if value =~ "^'\\|^\""
+ exec "let ".name." = ".value
+ else
+ exe "let ".name." = value"
+ endif
+ endif
+endfunction
+com! -nargs=+ TexLet :call <SID>SafeLet(<q-args>)
+" }}}
+" ==============================================================================
+
+" ==============================================================================
+" General settings {{{
+
+TexLet g:Tex_UsePython = 1
+
+" the system command which pulls in a file.
+if &shell =~ 'sh'
+ TexLet g:Tex_CatCmd = 'cat'
+ TexLet g:Tex_RmCmd = 'rm'
+else
+ TexLet g:Tex_CatCmd = 'type'
+ TexLet g:Tex_RmCmd = 'del'
+endif
+
+" whether to turn on debugging
+TexLet g:Tex_Debug = 0
+" If non empty, all the debugging information will be written to a file of
+" this name.
+TexLet g:Tex_DebugLog = ''
+
+" }}}
+" ==============================================================================
+" Rules: specifications of programs for compiling and viewing {{{
+"
+
+" By default, when you compile a tex file using \ll, then you will be
+" generating a .dvi file. Change this line if you want to set another default.
+" NOTE: Make sure that a target for this format exists in the 'Compiler rules'
+" section below and is set up properly for your system.
+if has('macunix')
+ TexLet g:Tex_DefaultTargetFormat = 'pdf'
+else
+ TexLet g:Tex_DefaultTargetFormat = 'dvi'
+endif
+
+" A comma seperated list of formats which need multiple compilations to be
+" correctly compiled.
+TexLet g:Tex_MultipleCompileFormats = 'dvi'
+
+" Uncomment this line if you compile ps files via dvi files.
+" TexLet g:Tex_FormatDependency_ps = 'dvi,ps'
+
+" ------------------------------------------------------------------------------
+" Compiler rules {{{
+" This is the first thing you should customize. It is set up for most common
+" values, but if use some other compiler, then you will want to change this.
+" As CompileFlags value you'd perhaps like to use, e.g., '-src-specials',
+" but it is known that it can sometimes give different results in the output,
+" so use it with care.
+TexLet g:Tex_CompileRule_dvi = 'latex -interaction=nonstopmode $*'
+TexLet g:Tex_EscapeChars = '{}\'
+
+TexLet g:Tex_CompileRule_ps = 'dvips -Ppdf -o $*.ps $*.dvi'
+
+" ways to generate pdf files. there are soo many...
+" NOTE: pdflatex generates the same output as latex. therefore quickfix is
+" possible.
+TexLet g:Tex_CompileRule_pdf = 'pdflatex -interaction=nonstopmode $*'
+
+" TexLet g:Tex_CompileRule_pdf = 'ps2pdf $*.ps'
+" TexLet g:Tex_CompileRule_pdf = 'dvipdfm $*.dvi'
+" TexLet g:Tex_CompileRule_pdf = 'dvipdf $*.dvi'
+
+TexLet g:Tex_CompileRule_html = 'latex2html $*.tex'
+
+TexLet g:Tex_CompileRule_bib = g:Tex_BibtexFlavor . ' $*'
+
+" Set Tex_UseMakefile to 0 if you want to ignore the presence of a Makefile
+" when deciding how to compile
+TexLet g:Tex_UseMakefile = 1
+
+" }}}
+" ------------------------------------------------------------------------------
+" Viewer rules {{{
+" these programs are for viewing other formats.
+" NOTE: latex-suite will automatically append file.<format> to these functions
+" when calling them. The viewer therefore cannot accept arguments after
+" the filename.
+" NOTE: Windows users:
+" Set your $PATH variable to include the full path to these programs.
+if has('win32')
+ TexLet g:Tex_ViewRule_ps = 'gsview32'
+ TexLet g:Tex_ViewRule_pdf = 'AcroRd32'
+ TexLet g:Tex_ViewRule_dvi = 'yap -1'
+elseif has('macunix')
+ " Let the system pick. If you want, you can override the choice here.
+ TexLet g:Tex_ViewRule_ps = ''
+ TexLet g:Tex_ViewRule_pdf = ''
+ " TexLet g:Tex_ViewRule_pdf = 'Acrobat\ Reader\ 5.1'
+ TexLet g:Tex_ViewRule_dvi = ''
+else
+ TexLet g:Tex_ViewRule_ps = 'ghostview'
+ TexLet g:Tex_ViewRule_pdf = 'xpdf'
+ TexLet g:Tex_ViewRule_dvi = 'xdvi'
+ " the option below specifies an editor for the dvi viewer while starting
+ " up the dvi viewer according to Dimitri Antoniou's tip on vim.sf.net (tip
+ " #225)
+ TexLet g:Tex_UseEditorSettingInDVIViewer = 0
+endif
+
+" Tex_ViewRuleComplete_{format}
+"
+" If a variable like this is specified, then it takes precedence over the
+" variable with the same suffix defined above. i.e, Tex_ViewRuleComplete_dvi
+" takes precedence over Tex_ViewRule_dvi.
+"
+" If only Tex_ViewRule_{format} is specified, then latex-suite constructs the
+" actual system command which calls that program automatically. For example,
+" if you specify Tex_ViewRule_dvi = 'kdvi', then latex-suite will issue the
+" command
+" !kdvi --unique file.dvi &
+"
+" However, if your viewer program accepts the file to be viewed in a way which
+" doesn't fit with the way latex-suite constructs the system command, then
+" specify it using this variable. You can use the same format here which
+" 'makeprg' accepts. So $* can be used in place of the main file name.
+"
+" IMPORTANT: Make sure you make the process go into the background otherwise
+" vim will wait for the viewer to terminate before letting you edit
+" the file again.
+"
+" Example:
+" Suppose you have a latex->html converter which converts a file say foo.tex
+" to a file foo/index.html. Then you would use:
+"
+" let g:Tex_ViewRuleComplete_html = 'MozillaFirebird $*/index.html &'
+"
+" Doing something like this would not be possible using Tex_ViewRule_html
+TexLet g:Tex_ViewRuleComplete_dvi = ''
+
+" }}}
+" ------------------------------------------------------------------------------
+" }}}
+" ==============================================================================
+" Compiler: latex-suite comes with a customizable compiler plugin. {{{
+" :help latex-compiling for a detailed description of these options.
+"
+" this is the list of patterns which will be ignored from the compiler output.
+" This is a handy way of specifying which warnings/errors to ignore. This is a
+" list of patterns seperated by '¡'
+TexLet g:Tex_IgnoredWarnings =
+ \'Underfull'."\n".
+ \'Overfull'."\n".
+ \'specifier changed to'."\n".
+ \'You have requested'."\n".
+ \'Missing number, treated as zero.'."\n".
+ \'There were undefined references'."\n".
+ \'Citation %.%# undefined'
+
+" the 'ignore level' of the 'efm'. A value of 4 says that the first 4 kinds of
+" warnings in the list above will be ignored. Use the command TCLevel to set a
+" level dynamically.
+TexLet g:Tex_IgnoreLevel = 7
+
+" NOTE: The values of g:Tex_Flavor and g:Tex_CompilerFlags are provided as a
+" way to make compiler/tex.vim standalone. i.e independent of the rest
+" of latex-suite. These variables are NOT used if you have already
+" defined g:Tex_CompileRule_dvi above.
+"
+" specifies the current latex flavor.
+TexLet g:Tex_Flavor = 'latex'
+
+" specifies the BibTeX flavor and if necessary options. If you use $* in this
+" setting, it will be replaced by the *root* of the main file name, i.e, if
+" the main file is "thesis.tex", $* will be "thesis".
+TexLet g:Tex_BibtexFlavor = 'bibtex'
+
+" specifies the MakeIndedx flavor and if necessary options. $* will be
+" replaced by the *root* of the main file name. See above.
+TexLet g:Tex_MakeIndexFlavor = 'makeindex $*.idx'
+
+" By default the program described by g:Tex_Flavor above is called with the
+" flags '--src-specials --interaction=nonstopmode'. If your particular version
+" of latex does not accept these arguments, you will need to set this variable
+" to the appropriate value.
+" NOTE: leave commented for using the default flags.
+" TODO: Is it necessary (or even desirable) to use 2 variables to specify a
+" flavor and flags seperately? --SA
+" TexLet g:Tex_CompilerFlags = ''
+
+" If disabled (set to 0) LaTeX-Suite doesn't go immediately to warnings or
+" errors after compilation
+TexLet g:Tex_GotoError = 1
+
+" If set to 1, then latex-suite shows the context of the error in a preview
+" window beneath the window showing the actual errors.
+TexLet g:Tex_ShowErrorContext = 1
+
+" Remove temp files created during part compilations when vim exits.
+TexLet g:Tex_RemoveTempFiles = 1
+
+" }}}
+" ==============================================================================
+" Project: how to deal with multi file projects via latex-suite {{{
+
+" Use a valid vim expression here if you want to customize the way latex-suite
+" searches for a master file from within another file.
+TexLet g:Tex_MainFileExpression = ''
+
+" }}}
+" ==============================================================================
+" Macros: latex-suite comes with a large number of macros to speed up typing {{{
+" latex.
+"
+" Place Holder Options: {{{
+" (See |placeholders| for a description of what place-holders are).
+"
+" these options are actually used by imaps.vim, therefore the prefix is Imap_
+" and not Tex_. See |placeholders| for a description of how to use
+" place-holders. You can either completely disable placeholders (not
+" recommended) and/or you can change the place holder characters.
+
+TexLet g:Imap_UsePlaceHolders = 1
+TexLet g:Imap_PlaceHolderStart = '<+'
+TexLet g:Imap_PlaceHolderEnd = '+>'
+
+" This option when set to 1 makes <C-J> in insert mode delete
+" non-descriptive (empty) placeholders and enters insert mode.
+" NOTE: This option _has_ to be set in the .vimrc. Setting this in a filetype
+" plugin file such as ftplugin/tex.vim will not have any affect.
+TexLet g:Imap_DeleteEmptyPlaceHolders = 0
+
+" When set to 1, in visual mode, <C-J> takes you to the next placeholder
+" without deleting the current placeholder.
+" NOTE: This option _has_ to be set in the .vimrc. Setting this in a filetype
+" plugin file such as ftplugin/tex.vim will not have any affect.
+TexLet g:Imap_StickyPlaceHolders = 1
+
+
+" }}}
+" Menu Wizard Option: {{{
+" If the following variable is set to 1, then when an enviroment is chosen
+" from the menu then for selected environments, latex-suite asks a series of
+" questions on the command line and inserts a template with the corresponding
+" fields already filled in.
+" Setting this to zero will insert a template with |placeholders| marking off
+" the places where fields need to be filled.
+TexLet g:Tex_UseMenuWizard = 0
+
+" }}}
+" Visual Mode Mapping Correction: {{{
+" With so many visual maps, its helpful to have a way of catching typing
+" errors made in visual mode. What this does is to prompt you to correct your
+" visual mode mapping if you start out with g:Tex_Leader and then type some
+" illegal keys.
+" It basically maps just the g:Tex_Leader character to a function
+TexLet g:Tex_CatchVisMapErrors = 1
+
+" }}}
+" Diacritics: {{{
+" whether or not you want to use diacritics
+" (diacritics speed up typing some languages. the way they are set up in
+" latex-suite is
+" =char> = \'{<char>}
+" +char> = \v{<char>}
+" +} = \"a
+" :o = \^o
+" Default: 0
+TexLet g:Tex_Diacritics = 0
+
+" }}}
+" Leader Options: {{{
+" The mappings in latex-suite are by default prefixed with the back-tick
+" character. For example, `/ inserts \frac{<++>}{<++>}<++> etc. You can change the
+" prefix with the following setting.
+" ',', '/', '`' are preferred values. '' or '\' will lead to a _lot_ of
+" trouble.
+" g:Tex_Leader is also used for visual mode mappings for fonts.
+TexLet g:Tex_Leader = '`'
+
+" In order to avoid ambiguity between the large number of visual mode macros
+" provided, the visual mode macros for environments and sections start with a
+" character different from '`'.
+TexLet g:Tex_Leader2 = ','
+
+" }}}
+" Environment Macros: {{{
+" These mappings insert LaTeX "environments" such as
+" \begin{center}
+" <++>
+" \end{center}<++>
+" with the cursor left at the first place-holder.
+" (See |placeholders| for what these are.)
+" Mnemonic:
+" 1. All environment mappings begin with 'E'
+" 2. The next two capital letters are (for the common environments) the
+" first 2 letters of the environment name converted into upper case. For
+" example, for the center environment above, use ECE. There are a few
+" necessary exceptions such as:
+" equation --> EEQ
+" eqnarray --> EEA
+" Please see texmaps.vim for the complete list.
+"
+" Along with the insert mode mappings, a set of visual mode mappings is
+" provided which encloses the visually selected region in an environment.
+" These maps are related to the corresponding insert mode mappings by the
+" following rule:
+" EFI --> ,fi
+" and so on. i.e, the leading E becomes '`' and the next 2 letters are small
+" case. Some of the visual mode mappings are sensetive to whether you choose
+" line-wise or character wise. For example, if you choose a word and press
+" `ve, then you get \verb|word|, whereas if you press `ve on a line-wise
+" selection, you get:
+" \begin{verbatim}
+" line
+" \end{verbatim}
+"
+" these 2 options give finer control on which aspect of the macros you want
+" to enable.
+TexLet g:Tex_EnvironmentMaps = 1
+TexLet g:Tex_EnvironmentMenus = 1
+
+
+" }}}
+" Font Macros: {{{
+" These mappings insert font descriptions such as:
+" \textsf{<++>}<++>
+" again with the cursor at the first place-holder.
+" Mnemonic:
+" 1. first letter is always F (F for font)
+" 2. next 2 letters are the 2 letters describing the font.
+"
+" Example: the above mapping is triggered by FSF.
+"
+" Just like environment mappings, you can visually select an area and press
+" `sf to have it enclosed in:
+" \textsf{word}
+" or
+" {\sffamily
+" line
+" }
+" depending on character-wise or line-wise selection.
+TexLet g:Tex_FontMaps = 1
+TexLet g:Tex_FontMenus = 1
+
+" }}}
+" Section Macros: {{{
+" Inserts LaTeX sections:
+" \section
+" etc. Just as in the case of environments and fonts, can be enclosed with a
+" visual selection. The enclosing is not sensetive to character or line-wise
+" selection.
+" NOTE: In visual mode, you are supposed to select the name of the section
+" etc, not the whole section.
+" In the following case, select just the first line, not lines 1-3.
+" 1 section name
+" 2 some lines in this section
+" 3 and some more lines
+" Mnemonic: (make your own!)
+" SPA for part
+" SCH for chapter
+" SSE for section
+" SSS for subsection
+" SS2 for subsubsection
+" SPG for paragraph
+" SSP for subparagraph
+TexLet g:Tex_SectionMaps = 1
+TexLet g:Tex_SectionMenus = 1
+
+" }}}
+" Auctex Style Mappings: {{{
+" Auctex.vim has heavily inspired various portions of latex-suite providing
+" various new ways of conviniently inserting environments.
+"
+" If you press <F5> in the insert mode while on an empty line, latex-suite
+" prompts you with a list of environments you might want to insert. You can
+" either choose one from the list or type in a new environment name.
+" The variable below (which is a comma seperated list of environment names)
+" decides the prompt which latex-suite generates.
+" You can place as many items as you want here. If the environment name is a
+" standard latex environment such as table or figure, then latex-suite will
+" insert a template with additional fields, if not, just a bare bones
+" \begin{env}
+" <++>
+" \end{env}
+" is inserted.
+" \[ and $$ are also recognized.
+" NOTE: Setting this variable to the empty string is a way of leaving the
+" <F5> key unmapped
+
+TexLet g:Tex_PromptedEnvironments =
+ \ 'eqnarray*,eqnarray,equation,equation*,\[,$$,align,align*'
+
+" Another quick way of inserting environments is to press one of the shifted
+" function keys from <F1> through <F4>.
+" Each environment in the following list is mapped to a corresponding shifted
+" function key.
+" NOTE: Setting this variable to the empty string is a way of leaving all the
+" shifted function keys untouched by latex-suite.
+" NOTE: Only the first 4 items of the list are used. The rest will be silently
+" ignored.
+" The number of items in this list decides how many shifted function keys are
+" mapped.
+TexLet g:Tex_HotKeyMappings =
+ \ 'eqnarray*,eqnarray,bmatrix'
+
+" Similar to above mechanisms works <F7> key. It prompts for command with list
+" of commands from g:Tex_PromptedCommands. There are not HotKeys for commands.
+" It works for commands of style \com{}. Changing of current command is done
+" with <S-F7>
+
+TexLet g:Tex_PromptedCommands =
+ \ 'footnote,cite,pageref,label'
+
+" }}}
+" Smart Key Mappings: {{{
+" Latex-suite shites with a number of 'smart' maps, where the behavior of
+" standard keys is modified in a way which makes editing tex files easy.
+
+" Pressing <BS> in insert mode checks to see whether we are just after
+" something like \'{a} and if so, deletes all of it. i.e, diacritics are
+" treated as single characters for backspacing.
+" Setting this to zero will leave the <BS> key unmapped.
+" Default: 1
+TexLet g:Tex_SmartKeyBS = 1
+" The pattern used to detect whether the previous characters comprise a
+" diacritic character. This default pattern detects the standard LaTeX
+" diacritics
+TexLet g:Tex_SmartBSPattern =
+ \ '\(' .
+ \ "\\\\[\"^'=v]{\\S}" . '\|' .
+ \ "\\\\[\"^'=]\\S" . '\|' .
+ \ '\\v \S' . '\|' .
+ \ "\\\\[\"^'=v]{\\\\[iI]}" . '\|' .
+ \ '\\v \\[iI]' . '\|' .
+ \ '\\q \S' . '\|' .
+ \ '\\-' .
+ \ '\)' . "$"
+
+" Pressing " (english double quote) will insert `` or '' by making an
+" intelligent guess about whether we intended to open or close a quote.
+" Default: 1
+TexLet g:Tex_SmartKeyQuote = 1
+
+" Users of other languages might want to change the quote characters to suit
+" their locale. These global values will be ignored if there are buffer-local
+" versions, which may be set in the language-specific package files, such as
+" ftplugin/latex-suite/packages/german
+TexLet g:Tex_SmartQuoteOpen = "``"
+TexLet g:Tex_SmartQuoteClose = "''"
+
+" Latex-suite maps the <space> key in such a way that $ characters are not
+" broken across lines.
+" NOTE: Setting this to 1 has the side-effect of making the 'tw' setting be 0.
+" Default:
+TexLet g:Tex_SmartKeySpace = 0
+
+" Pressing ... (3 dots) results in \ldots outside math mode and \cdots in math
+" mode.
+"
+" TODO: Make it more intelligent within math mode. For example
+" $1+...+3$ should expand to $1+\cdots+n$, whereas $1,...,n$ should expand
+" to $1,\ldots,n$. The amsmath package actually provides a command \dots
+" which does this. Maybe use that if amsmath is detected?
+" Default: 1
+TexLet g:Tex_SmartKeyDot = 1
+
+" }}}
+" Advanced Math: {{{
+" These mappings allow for fast inserting of math constructions
+" brackets, better handling of space in math mode, unfortunately
+" they use <M-> mappings which conflicts with some encodings. This is easy way
+" of turning them off.
+"
+" <M-b> encloses the previous character in \mathbf{}
+" <M-c> is polymorphic as follows:
+" Insert mode:
+" 1. If the previous character is a letter or number, then capitalize it and
+" enclose it in \mathcal{}
+" 2. otherwise insert \cite{}
+" Visual Mode:
+" 1. Enclose selection in \mathcal{}
+" <M-l> is also polymorphic as follows:
+" If the character before typing <M-l> is one of '([{|<q', then do the
+" following:
+" 1. (<M-l> \left(\right
+" similarly for [, |
+" {<M-l> \left\{\right\}
+" 2. <<M-l> \langle\rangle
+" 3. q<M-l> \lefteqn{}
+" otherwise insert \label{}
+" <M-i> inserts \item commands at the current cursor location depending on
+" the surrounding environment. For example, inside itemize, it will
+" insert a simple \item, but within a description, it will insert
+" \item[<+label+>] etc.
+"
+" Default: 1
+TexLet g:Tex_AdvancedMath = 1
+
+" }}}
+
+" }}}
+" ==============================================================================
+" TeX Completion: {{{
+
+" Options for controlling the window sizes of the completion windows {{{
+
+" The height of the window which contains the \label's (when completing a
+" \ref) or bibtex entries (when completing a \cite). This option is used in
+" the newer methods of completing \ref's and \cite's.
+TexLet g:Tex_OutlineWindowHeight = 15
+
+" Options for preview window for ref/cite completion. The next two options
+" are used only when g:Tex_UseOutlineCompletion = 0 or
+" g:Tex_UseCiteCompletionVer2 = 0, i.e, when we use a classic method of
+" completing \refs and \cites.
+" Height of cwindow
+TexLet g:Tex_ViewerCwindowHeight = 5
+" Height of preview window
+TexLet g:Tex_ViewerPreviewHeight = 10
+
+" Options for explorer completion.
+" Height of explorer window
+TexLet g:Tex_ExplorerHeight = 10
+
+" Directory for images. Read |latex-completion-explorer| before changing
+TexLet g:Tex_ImageDir = ''
+
+" }}}
+" Options for completing a \ref {{{
+
+" Whether to use the "outline mode" for displaying the \label's while doing
+" \ref completion. In this mode, each label is displayed within the
+" document element it resides in. The entire thing is folded to ease
+" navigation. Should be easier/faster than the classical mode.
+TexLet g:Tex_UseOutlineCompletion = 1
+
+" This option should be set via the .latexmain file. It should be a newline
+" seperated list of files which make up all the "source" files in the
+" current project. This enables latex-suite to skip the more complicated
+" algorithm of finding the source files by recursively searching for
+" \input'ed files from the |latex-master-file|.
+"
+" Only used when g:Tex_UseOutlineCompletion = 0.
+TexLet g:Tex_ProjectSourceFiles = ''
+
+" Whether latex-suite simply searches for \\label's in all the .tex file
+" found in the current directory or whether it will use a more complex
+" algorithm. This is used only g:Tex_UseOutlineCompletion = 0 and
+" g:Tex_ProjectSourceFiles = ''.
+" See
+" :help Tex_UseSimpleLabelSearch
+" for more information
+TexLet g:Tex_UseSimpleLabelSearch = 0
+
+" }}}
+" Options for completing a \cite'ation {{{
+
+" If set to 1, then the newer way of presenting the bibtex entries is used.
+" Instead of a |cwindow| showing just the keys and a synced |preview|
+" window beneath, show a single window containing a nicely formatted list
+" of bibtex entries. This should be faster and easier to use than the
+" classic mode
+TexLet g:Tex_UseCiteCompletionVer2 = 1
+
+" This is a string which is displayed to the user when he wants to sort or
+" filter the bibtex entries. This string also serves to define acronyms for
+" the various fields of a bibtex entry.
+TexLet g:Tex_BibFieldPrompt =
+ \ "Field acronyms: (`:let g:Tex_EchoBibFields = 0` to avoid this message)\n" .
+ \ " [t] title [a] author [b] booktitle \n" .
+ \ " [j] journal [y] year [p] bibtype \n" .
+ \ " (you can also enter the complete field name) \n"
+
+" Whether or not to display the string above to aid the user in choosing
+" the field to filter/sort with.
+TexLet g:Tex_EchoBibFields = 1
+
+" A setting of this form defines the letter 'a' as standing for the field
+" 'author'. Thus when the user types
+" a ellington
+" when asked to enter a filter, it is equivalent to the user specifying the
+" filter
+" author ellington
+" TexLet g:Tex_BibAcronym_a = 'author'
+
+" Whether or not to use Jabref to complete citations
+" See
+" :help latex-suite-jabref
+" for more infomration
+TexLet g:Tex_UseJabref = 0
+
+" whether or not searches for \cite's are cached.
+TexLet g:Tex_RememberCiteSearch = 0
+" Paths to the bibliography files and custom packages.
+TexLet g:Tex_BIBINPUTS = ''
+TexLet g:Tex_TEXINPUTS = ''
+
+" }}}
+
+" }}}
+" ==============================================================================
+" Menus: set the kinds of menus which you would like to see. {{{
+"
+" Setting this variable to zero will immediately disable _all_ menus.
+" for finer control set this to 1 and then play with the other options.
+" Default: 1
+TexLet g:Tex_Menus = 1
+
+" The location of the main menu
+TexLet g:Tex_MainMenuLocation = 80
+
+" Math contains a large number of tex math elemets such as arrows,
+" mathematical fonts (\mathrm), mathematical diacritics (\dot), binary
+" relational operators etc. This menu compromises about 75% of the menus.
+" Default: 1
+TexLet g:Tex_MathMenus = 1
+
+" The following options control the "compactness" of the menus.
+"
+" Setting this option to 1 makes the Font, Counter and Dimensioning menus to
+" be collected together into a single 'Tex-Elements' menu. Setting this to 0
+" creates seperate menus for each of them.
+" Default: 1
+TexLet g:Tex_NestElementMenus = 1
+
+" Sometimes when you are using a lot of packages with lots of options etc,
+" then a lot of time might be spent at startup loading the menus.
+" Setting the following variable to 0 will stop autoloading the packages menu.
+" You can still goto TeX-Suite.Configure Menu and load this after startup.
+" Default: 1
+TexLet g:Tex_PackagesMenu = 1
+" The following option will create the packages option within the TeX-Suite
+" menu.
+" Default: 1
+TexLet g:Tex_NestPackagesMenu = 1
+
+" This is the prefix added to the menu names created by latex suite. Add a
+" dot to the following option to nest the menus under the menu name before the
+" dot.
+" NOTE: With a '.' as the last character of the following setting, every
+" single menu created by latex suite will be nested under the same menu.
+" Default: 'TeX-'
+TexLet g:Tex_MenuPrefix = 'TeX-'
+
+" Use utf-8 menus. There is plenty of math symbols in LaTeX. It is hard to
+" remember them. You can display them with utf-8. Your system/GUI interface
+" have to support utf-8. This addition is necessary for resetting 'encoding'.
+TexLet g:Tex_UseUtfMenus = 0
+
+if g:Tex_UseUtfMenus != 0 && has("gui_running")
+ set encoding=utf-8
+endif
+
+" }}}
+" ==============================================================================
+" Folding: latex-suite comes with 'fake' syntax folding. {{{
+"
+" specifies whether the MakeTeXFolds() function will be defined. If this is
+" set to zero, then esentially you have disabled all of latex-suite's folding
+" functions. no maps for refreshing folds will be set up etc.
+" NOTE: However, the function TexFoldTextFunction() is still avaiable
+" and 'foldexpr' is set to point to it. This is so you can continue
+" using another folding scheme but still use the fold text function.
+TexLet g:Tex_Folding = 1
+
+" specifies whether a latex file is automatically folded up when opened.
+" Setting this to zero means that a file is not folded up as soon as its
+" opened.
+" NOTE: the MakeTeXFolds() function will still be available (unless disabled
+" by g:Tex_Folding), so you can do <F6> or \rf to refresh/create folds.
+TexLet g:Tex_AutoFolding = 1
+
+" }}}
+" ==============================================================================
+" Taglist: Support for taglist.vim {{{
+"
+" LaTeX-Suite offers now support for taglist.vim, the most popular Vim
+" interface for ctags. You should use ctags version >= 5.0 and taglist >= 3.0.
+TexLet g:Tex_TaglistSupport = 1
+
+" This option turns on definition of tags for LaTeX.
+" NOTE: In taglist window you may see duplicate entries for the same tag. It
+" means some definitions are repeated somewhere else. You can turn off
+" internal definitions or remove external (read ctags description
+" where).
+TexLet g:Tex_InternalTagsDefinitions = 1
+
+" }}}
+" ==============================================================================
diff --git a/.vim/ftplugin/latex-suite/texviewer.vim b/.vim/ftplugin/latex-suite/texviewer.vim
new file mode 100644
index 0000000..4dc8861
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/texviewer.vim
@@ -0,0 +1,1052 @@
+" ============================================================================
+" File: texviewer.vim
+" Author: Mikolaj Machowski
+" Created: Sun Jan 26 06:00 PM 2003
+" Description: make a viewer for various purposes: \cite{, \ref{
+" License: Vim Charityware License
+" Part of vim-latexSuite: http://vim-latex.sourceforge.net
+" CVS: $Id: texviewer.vim 1004 2006-03-25 08:40:15Z srinathava $
+" ============================================================================
+" Tex_SetTexViewerMaps: sets maps for this ftplugin {{{
+function! Tex_SetTexViewerMaps()
+ inoremap <silent> <Plug>Tex_Completion <Esc>:call Tex_Complete("default","text")<CR>
+ if !hasmapto('<Plug>Tex_Completion', 'i')
+ if has('gui_running')
+ imap <buffer> <silent> <F9> <Plug>Tex_Completion
+ else
+ imap <buffer> <F9> <Plug>Tex_Completion
+ endif
+ endif
+endfunction
+
+augroup LatexSuite
+ au LatexSuite User LatexSuiteFileType
+ \ call Tex_Debug('texviewer.vim: Catching LatexSuiteFileType event', 'view') |
+ \ call Tex_SetTexViewerMaps()
+augroup END
+
+command -nargs=1 TLook call Tex_Complete(<q-args>, 'tex')
+command -nargs=1 TLookAll call Tex_Complete(<q-args>, 'all')
+command -nargs=1 TLookBib call Tex_Complete(<q-args>, 'bib')
+
+" }}}
+
+" ==============================================================================
+" Main completion function
+" ==============================================================================
+" Tex_Complete: main function {{{
+" Description:
+function! Tex_Complete(what, where)
+
+ " Get info about current window and position of cursor in file
+ let s:winnum = winnr()
+
+ " Change to the directory of the file being edited before running all the
+ " :grep commands. We will change back to the original directory after we
+ " finish with the grep.
+ let s:origdir = getcwd()
+ cd %:p:h
+
+ let s:pos = line('.').' | normal! '.virtcol('.').'|'
+
+ unlet! s:type
+ unlet! s:typeoption
+
+ if Tex_GetVarValue('Tex_WriteBeforeCompletion') == 1
+ wall
+ endif
+
+ if a:where == "text"
+ " What to do after <F9> depending on context
+ let s:curfile = expand("%:p")
+ let s:curline = strpart(getline('.'), 0, col('.'))
+ let s:prefix = matchstr(s:curline, '.*{\zs.\{-}\(}\|$\)')
+ " a command is of the type
+ " \psfig[option=value]{figure=}
+ " Thus
+ " s:curline = '\psfig[option=value]{figure='
+ " (with possibly some junk before \psfig)
+ " from which we need to extract
+ " s:type = 'psfig'
+ " s:typeoption = '[option=value]'
+ let pattern = '.*\\\(\w\{-}\)\(\[.\{-}\]\)\?{\(\S\+\)\?$'
+ if s:curline =~ pattern
+ let s:type = substitute(s:curline, pattern, '\1', 'e')
+ let s:typeoption = substitute(s:curline, pattern, '\2', 'e')
+ call Tex_Debug('Tex_Complete: s:type = '.s:type.', typeoption = '.s:typeoption, 'view')
+ endif
+
+ if exists("s:type") && s:type =~ 'ref'
+ if Tex_GetVarValue('Tex_UseOutlineCompletion') == 1
+ call Tex_Debug("Tex_Complete: using outline search method", "view")
+ call Tex_StartOutlineCompletion()
+
+ elseif Tex_GetVarValue('Tex_UseSimpleLabelSearch') == 1
+ call Tex_Debug("Tex_Complete: searching for \\labels in all .tex files in the present directory", "view")
+ call Tex_Debug("Tex_Complete: silent! grep! ".Tex_EscapeForGrep('\\label{'.s:prefix)." *.tex", 'view')
+ call Tex_Grep('\\label{'.s:prefix, '*.tex')
+ call <SID>Tex_SetupCWindow()
+
+ elseif Tex_GetVarValue('Tex_ProjectSourceFiles') != ''
+ call Tex_Debug('Tex_Complete: searching for \\labels in all Tex_ProjectSourceFiles', 'view')
+ call Tex_CD(Tex_GetMainFileName(':p:h'))
+ call Tex_Grep('\\label{'.s:prefix, Tex_GetVarValue('Tex_ProjectSourceFiles'))
+ call <SID>Tex_SetupCWindow()
+
+ else
+ call Tex_Debug("Tex_Complete: calling Tex_GrepHelper", "view")
+ silent! grep! ____HIGHLY_IMPROBABLE___ %
+ call Tex_GrepHelper(s:prefix, 'label')
+ call <SID>Tex_SetupCWindow()
+ endif
+
+ redraw!
+
+ elseif exists("s:type") && s:type =~ 'cite'
+
+ let s:prefix = matchstr(s:prefix, '\([^,]\+,\)*\zs\([^,]\+\)\ze$')
+ call Tex_Debug(":Tex_Complete: using s:prefix = ".s:prefix, "view")
+
+ if has('python') && Tex_GetVarValue('Tex_UsePython')
+ \ && Tex_GetVarValue('Tex_UseCiteCompletionVer2') == 1
+
+ call Tex_CD(s:origdir)
+ silent! call Tex_StartCiteCompletion()
+
+ elseif Tex_GetVarValue('Tex_UseJabref') == 1
+
+ call Tex_CD(s:origdir)
+ let g:Remote_WaitingForCite = 1
+ let citation = input('Enter citation from jabref (<enter> to leave blank): ')
+ let g:Remote_WaitingForCite = 0
+ call Tex_CompleteWord(citation)
+
+ else
+ " grep! nothing %
+ " does _not_ clear the search history contrary to what the
+ " help-docs say. This was expected. So use something improbable.
+ " TODO: Is there a way to clear the search-history w/o making a
+ " useless, inefficient search?
+ silent! grep! ____HIGHLY_IMPROBABLE___ %
+ if g:Tex_RememberCiteSearch && exists('s:citeSearchHistory')
+ call <SID>Tex_SetupCWindow(s:citeSearchHistory)
+ else
+ call Tex_GrepHelper(s:prefix, 'bib')
+ redraw!
+ call <SID>Tex_SetupCWindow()
+ endif
+ if g:Tex_RememberCiteSearch && &ft == 'qf'
+ let _a = @a
+ silent! normal! ggVG"ay
+ let s:citeSearchHistory = @a
+ let @a = _a
+ endif
+ endif
+
+ elseif exists("s:type") && (s:type =~ 'includegraphics' || s:type == 'psfig')
+ call Tex_SetupFileCompletion(
+ \ '',
+ \ '^\.\\|\.tex$\\|\.bib$\\|\.bbl$\\|\.zip$\\|\.gz$',
+ \ 'noext')
+
+ elseif exists("s:type") && s:type == 'bibliography'
+ call Tex_SetupFileCompletion(
+ \ '\.b..$',
+ \ '',
+ \ 'noext')
+
+ elseif exists("s:type") && s:type =~ 'include\(only\)\='
+ call Tex_SetupFileCompletion(
+ \ '\.t..$',
+ \ '',
+ \ 'noext')
+
+ elseif exists("s:type") && s:type == 'input'
+ call Tex_SetupFileCompletion(
+ \ '',
+ \ '',
+ \ 'ext')
+
+ elseif exists('s:type') && exists("g:Tex_completion_".s:type)
+ call <SID>Tex_CompleteRefCiteCustom('plugin_'.s:type)
+
+ else
+ let s:word = expand('<cword>')
+ if s:word == ''
+ if col('.') == strlen(getline('.'))
+ startinsert!
+ return
+ else
+ normal! l
+ startinsert
+ return
+ endif
+ endif
+ call Tex_Debug("silent! grep! ".Tex_EscapeForGrep('\<'.s:word.'\>')." *.tex", 'view')
+ call Tex_Grep('\<'.s:word.'\>', '*.tex')
+
+ call <SID>Tex_SetupCWindow()
+ endif
+
+ elseif a:where == 'tex'
+ " Process :TLook command
+ call Tex_Grep(a:what, "*.tex")
+ call <SID>Tex_SetupCWindow()
+
+ elseif a:where == 'bib'
+ " Process :TLookBib command
+ call Tex_Grep(a:what, "*.bib")
+ call Tex_Grepadd(a:what, "*.bbl")
+ call <SID>Tex_SetupCWindow()
+
+ elseif a:where == 'all'
+ " Process :TLookAll command
+ call Tex_Grep(a:what, "*")
+ call <SID>Tex_SetupCWindow()
+ endif
+
+endfunction
+" }}}
+" Tex_CompleteWord: inserts a word at the chosen location {{{
+" Description: This function is meant to be called when the user press
+" ``<enter>`` in one of the [Error List] windows which shows the list of
+" matches. completeword is the rest of the word which needs to be inserted.
+function! Tex_CompleteWord(completeword)
+ exe s:pos
+
+ " Complete word, check if add closing }
+ exe 'normal! a'.a:completeword."\<Esc>"
+
+ if getline('.')[col('.')-1] !~ '{' && getline('.')[col('.')] !~ '}'
+ exe "normal! a}\<Esc>"
+ endif
+
+ " Return to Insert mode
+ if col('.') == strlen(getline('.'))
+ startinsert!
+ else
+ normal! l
+ startinsert
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" File name completion helper functons
+" ==============================================================================
+" Tex_SetupFileCompletion: {{{
+" Description:
+function! Tex_SetupFileCompletion(accept, reject, ext)
+ call FB_SetVar('FB_AllowRegexp', a:accept)
+ call FB_SetVar('FB_RejectRegexp', a:reject)
+ call FB_SetVar('FB_CallBackFunction', 'Tex_CompleteFileName')
+ call FB_SetVar('FB_CallBackFunctionArgs', '"'.a:ext.'"')
+
+ call FB_OpenFileBrowser('.')
+endfunction " }}}
+" Tex_CompleteFileName: {{{
+" Description:
+function! Tex_CompleteFileName(filename, ext)
+ call Tex_Debug('+Tex_CompleteFileName: getting filename '.a:filename, 'view')
+
+ if a:ext == 'noext'
+ let completeword = fnamemodify(a:filename, ':r')
+ endif
+ let completeword = Tex_RelPath(completeword, Tex_GetMainFileName(':p:h'))
+
+ call Tex_Debug(":Tex_CompleteFileName: completing with ".completeword, "view")
+ call Tex_CompleteWord(completeword)
+endfunction " }}}
+" Tex_Common: common part of strings {{{
+function! s:Tex_Common(path1, path2)
+ " Assume the caller handles 'ignorecase'
+ if a:path1 == a:path2
+ return a:path1
+ endif
+ let n = 0
+ while a:path1[n] == a:path2[n]
+ let n = n+1
+ endwhile
+ return strpart(a:path1, 0, n)
+endfunction " }}}
+" Tex_NormalizePath: {{{
+" Description:
+function! Tex_NormalizePath(path)
+ let retpath = a:path
+ if has("win32") || has("win16") || has("dos32") || has("dos16")
+ let retpath = substitute(retpath, '\\', '/', 'ge')
+ endif
+ if isdirectory(retpath) && retpath !~ '/$'
+ let retpath = retpath.'/'
+ endif
+ return retpath
+endfunction " }}}
+" Tex_RelPath: ultimate file name {{{
+function! Tex_RelPath(explfilename,texfilename)
+ let path1 = Tex_NormalizePath(a:explfilename)
+ let path2 = Tex_NormalizePath(a:texfilename)
+
+ let n = matchend(<SID>Tex_Common(path1, path2), '.*/')
+ let path1 = strpart(path1, n)
+ let path2 = strpart(path2, n)
+ if path2 !~ '/'
+ let subrelpath = ''
+ else
+ let subrelpath = substitute(path2, '[^/]\{-}/', '../', 'ge')
+ let subrelpath = substitute(subrelpath, '[^/]*$', '', 'ge')
+ endif
+ let relpath = subrelpath.path1
+ return escape(Tex_NormalizePath(relpath), ' ')
+endfunction " }}}
+
+" ==============================================================================
+" Helper functions for dealing with the 'quickfix' and 'preview' windows.
+" ==============================================================================
+" Tex_SetupCWindow: set maps and local settings for cwindow {{{
+" Description: Set local maps jkJKq<cr> for cwindow. Also size and basic
+" settings
+"
+function! s:Tex_SetupCWindow(...)
+ call Tex_Debug('+Tex_SetupCWindow', 'view')
+ cclose
+ exe 'copen '. g:Tex_ViewerCwindowHeight
+ " If called with an argument, it means we want to re-use some search
+ " history from last time. Therefore, just paste it here and proceed.
+ if a:0 == 1
+ set modifiable
+ % d _
+ silent! 0put!=a:1
+ $ d _
+ endif
+ setlocal nonumber
+ setlocal nowrap
+
+ let s:scrollOffVal = &scrolloff
+ call <SID>Tex_SyncPreviewWindow()
+
+ " If everything went well, then we should be situated in the quickfix
+ " window. If there were problems, (no matches etc), then we will not be.
+ " Therefore return.
+ if &ft != 'qf'
+ call Tex_Debug('not in quickfix window, quitting', 'view')
+ return
+ endif
+
+ nnoremap <buffer> <silent> j j:call <SID>Tex_SyncPreviewWindow()<CR>
+ nnoremap <buffer> <silent> k k:call <SID>Tex_SyncPreviewWindow()<CR>
+ nnoremap <buffer> <silent> <up> <up>:call <SID>Tex_SyncPreviewWindow()<CR>
+ nnoremap <buffer> <silent> <down> <down>:call <SID>Tex_SyncPreviewWindow()<CR>
+
+ " Change behaviour of <cr> only for 'ref' and 'cite' context.
+ if exists("s:type") && s:type =~ 'ref\|cite'
+ exec 'nnoremap <buffer> <silent> <cr> '
+ \ .':set scrolloff='.s:scrollOffVal.'<CR>'
+ \ .':cd '.s:origdir.'<CR>'
+ \ .':silent! call <SID>Tex_CompleteRefCiteCustom("'.s:type.'")<CR>'
+
+ else
+ " In other contexts jump to place described in cwindow and close small
+ " windows
+ exec 'nnoremap <buffer> <silent> <cr> '
+ \ .':set scrolloff='.s:scrollOffVal.'<CR>'
+ \ .':cd '.s:origdir.'<CR>'
+ \ .':call <SID>Tex_GoToLocation()<cr>'
+
+ endif
+
+ " Scroll the preview window while in the quickfix window
+ nnoremap <buffer> <silent> J :wincmd j<cr><c-e>:wincmd k<cr>
+ nnoremap <buffer> <silent> K :wincmd j<cr><c-y>:wincmd k<cr>
+
+ " Exit the quickfix window without doing anything.
+ exe 'nnoremap <buffer> <silent> q '
+ \ .':set scrolloff='.s:scrollOffVal.'<CR>'
+ \ .':cd '.s:origdir.'<CR>'
+ \ .':call Tex_CloseSmallWindows()<CR>'
+
+endfunction " }}}
+" Tex_CompleteRefCiteCustom: complete/insert name for current item {{{
+" Description: handle completion of items depending on current context
+"
+function! s:Tex_CompleteRefCiteCustom(type)
+
+ if a:type =~ 'cite'
+ if getline('.') =~ '\\bibitem{'
+ let bibkey = matchstr(getline('.'), '\\bibitem{\zs.\{-}\ze}')
+ else
+ let bibkey = matchstr(getline('.'), '{\zs.\{-}\ze\(,\|$\)')
+ endif
+ let completeword = strpart(bibkey, strlen(s:prefix))
+
+ elseif a:type =~ 'ref'
+ let label = matchstr(getline('.'), '\\label{\zs.\{-}\ze}')
+ let completeword = strpart(label, strlen(s:prefix))
+
+ elseif a:type =~ '^plugin_'
+ let type = substitute(a:type, '^plugin_', '', '')
+ let completeword = <SID>Tex_DoCompletion(type)
+
+ endif
+
+ call Tex_CloseSmallWindows()
+ call Tex_Debug(":Tex_CompleteRefCiteCustom: completing with ".completeword, "view")
+ call Tex_CompleteWord(completeword)
+endfunction " }}}
+" Tex_SyncPreviewWindow: synchronize quickfix and preview window {{{
+" Description: Usually quickfix engine takes care about most of these things
+" but we discard it for better control of events.
+"
+function! s:Tex_SyncPreviewWindow()
+ call Tex_Debug('+Tex_SyncPreviewWindow', 'view')
+
+ let viewfile = matchstr(getline('.'), '^\f*\ze|\d')
+ let viewline = matchstr(getline('.'), '|\zs\d\+\ze')
+
+ " Hilight current line in cwindow
+ " Normally hightlighting is done with quickfix engine but we use something
+ " different and have to do it separately
+ syntax clear
+ runtime syntax/qf.vim
+ exe 'syn match vTodo /\%'. line('.') .'l.*/'
+ hi link vTodo Todo
+
+ " Close preview window and open it again in new place
+ pclose
+ exe 'silent! bot pedit +'.viewline.' '.viewfile
+
+ " Vanilla 6.1 has bug. This additional setting of cwindow height prevents
+ " resizing of this window
+ exe g:Tex_ViewerCwindowHeight.' wincmd _'
+
+ " Handle situation if there is no item beginning with s:prefix.
+ " Unfortunately, because we know it late we have to close everything and
+ " return as in complete process
+ if v:errmsg =~ 'E32\>'
+ exe s:winnum.' wincmd w'
+ pclose!
+ cclose
+ if exists("s:prefix")
+ echomsg 'No bibkey, label or word beginning with "'.s:prefix.'"'
+ endif
+ if col('.') == strlen(getline('.'))
+ startinsert!
+ else
+ normal! l
+ startinsert
+ endif
+ let v:errmsg = ''
+ call Tex_Debug('Tex_SyncPreviewWindow: got error E32, no matches found, quitting', 'view')
+ return 0
+ endif
+
+ " Move to preview window. Really is it under cwindow?
+ wincmd j
+
+ " Settings of preview window
+ exe g:Tex_ViewerPreviewHeight.' wincmd _'
+ setlocal nofoldenable
+
+ if exists('s:type') && s:type =~ 'cite'
+ " In cite context place bibkey at the top of preview window.
+ setlocal scrolloff=0
+ normal! zt
+ else
+ " In other contexts in the middle. Highlight this line?
+ setlocal scrolloff=100
+ normal! z.
+ endif
+
+ " Return to cwindow
+ wincmd p
+
+endfunction " }}}
+" Tex_CloseSmallWindows: {{{
+" Description:
+"
+function! Tex_CloseSmallWindows()
+ exe s:winnum.' wincmd w'
+ pclose!
+ cclose
+ exe s:pos
+endfunction " }}}
+" Tex_GoToLocation: Go to chosen location {{{
+" Description: Get number of current line and go to this number
+"
+function! s:Tex_GoToLocation()
+ pclose!
+ let errmsg = v:errmsg
+ let v:errmsg = ''
+ exe 'silent! cc ' . line('.')
+ " If the current buffer is modified, then split
+ if v:errmsg =~ '^E37:'
+ split
+ exe 'silent! cc ' . line('.')
+ endif
+ cclose
+ let v:errmsg = errmsg
+endfunction " }}}
+
+" ==============================================================================
+" Functions for finding \\label's or \\bibitem's in the main file.
+" ==============================================================================
+" Tex_GrepHelper: grep main filename for \\bibitem's or \\label's {{{
+" Description:
+function! Tex_GrepHelper(prefix, what)
+ let _path = &path
+ let _suffixesadd = &suffixesadd
+ let _hidden = &hidden
+
+ let mainfname = Tex_GetMainFileName(':p')
+ " If we are already editing the file, then use :split without any
+ " arguments so it works even if the file is modified.
+ " FIXME: If mainfname is being presently edited in another window and
+ " is 'modified', then the second split statement will not work.
+ " We will need to travel to that window and back.
+ if mainfname == expand('%:p')
+ split
+ else
+ exec 'split '.Tex_EscapeSpaces(mainfname)
+ endif
+
+ let pos = line('.').'| normal! '.virtcol('.').'|'
+ if a:what =~ 'bib'
+ call Tex_ScanFileForCite(a:prefix)
+ else
+ call Tex_ScanFileForLabels(a:prefix)
+ endif
+ exec pos
+
+ q
+ let &path = _path
+ let &suffixesadd = _suffixesadd
+
+endfunction " }}}
+" Tex_ScanFileForCite: search for \bibitem's in .bib or .bbl or tex files {{{
+" Description:
+" Search for bibliographic entries in the presently edited file in the
+" following manner:
+" 1. First see if the file has a \bibliography command.
+" If YES:
+" 1. If a .bib file corresponding to the \bibliography command can be
+" found, then search for '@.*'.a:prefix inside it.
+" 2. Otherwise, if a .bbl file corresponding to the \bibliography command
+" can be found, then search for '\bibitem'.a:prefix inside it.
+" 2. Next see if the file has a \thebibliography environment
+" If YES:
+" 1. Search for '\bibitem'.a:prefix in this file.
+"
+" If neither a \bibliography or \begin{thebibliography} are found, then repeat
+" steps 1 and 2 for every file \input'ed into this file. Abort any searching
+" as soon as the first \bibliography or \begin{thebibliography} is found.
+function! Tex_ScanFileForCite(prefix)
+ call Tex_Debug('+Tex_ScanFileForCite: searching for bibkeys in '.bufname('%').' (buffer #'.bufnr('%').')', 'view')
+ let presBufNum = bufnr('%')
+
+ let foundCiteFile = 0
+ " First find out if this file has a \bibliography command in it. If so,
+ " assume that this is the only file in the project which defines a
+ " bibliography.
+ if search('\\\(no\)\?bibliography{', 'w')
+ call Tex_Debug('Tex_ScanFileForCite: found bibliography command in '.bufname('%'), 'view')
+ " convey that we have found a bibliography command. we do not need to
+ " proceed any further.
+ let foundCiteFile = 1
+
+ " extract the bibliography filenames from the command.
+ let bibnames = matchstr(getline('.'), '\\\(no\)\?bibliography{\zs.\{-}\ze}')
+ let bibnames = substitute(bibnames, '\s', '', 'g')
+
+ call Tex_Debug('trying to search through ['.bibnames.']', 'view')
+
+ let &path = '.,'.g:Tex_BIBINPUTS
+
+ let i = 1
+ while 1
+ let bibname = Tex_Strntok(bibnames, ',', i)
+ if bibname == ''
+ break
+ endif
+
+ " first try to find if a .bib file exists. If so do not search in
+ " the corresponding .bbl file. (because the .bbl file will most
+ " probly be generated automatically from the .bib file with
+ " bibtex).
+
+ let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib')
+ if fname != ''
+ call Tex_Debug('finding .bib file ['.bufname('%').']', 'view')
+ exec 'split '.Tex_EscapeSpaces(fname)
+ call Tex_Grepadd('@.*{'.a:prefix, "%")
+ q
+ else
+ let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bbl')
+ if fname != ''
+ exec 'split '.Tex_EscapeSpaces(fname)
+ call Tex_Debug('finding .bbl file ['.bufname('.').']', 'view')
+ call Tex_Grepadd('\\bibitem{'.a:prefix, "%")
+ q
+ endif
+ endif
+
+ let i = i + 1
+ endwhile
+
+ if foundCiteFile
+ return 1
+ endif
+ endif
+
+ " If we have a thebibliography environment, then again assume that this is
+ " the only file which defines the bib-keys. Aand convey this information
+ " upwards by returning 1.
+ if search('^\s*\\begin{thebibliography}', 'w')
+ call Tex_Debug('got a thebibliography environment in '.bufname('%'), 'view')
+
+ let foundCiteFile = 1
+
+ split
+ lcd %:p:h
+ call Tex_Debug("silent! grepadd! ".Tex_EscapeForGrep('\\bibitem{'.a:prefix)." %", 'view')
+ call Tex_Grepadd('\\bibitem{'.a:prefix, "%")
+ q
+
+ return 1
+ endif
+
+ " If we have not found any \bibliography or \thebibliography environment
+ " in this file, search for these environments in all the files which this
+ " file includes.
+
+ exec 0
+ let wrap = 'w'
+ while search('^\s*\\\(input\|include\)', wrap)
+ let wrap = 'W'
+
+ let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}')
+
+ let foundfile = Tex_FindFile(filename, '.,'.g:Tex_TEXINPUTS, '.tex')
+ if foundfile != ''
+ exec 'split '.Tex_EscapeSpaces(foundfile)
+ call Tex_Debug('scanning recursively in ['.foundfile.']', 'view')
+ let foundCiteFile = Tex_ScanFileForCite(a:prefix)
+ q
+ endif
+
+ if foundCiteFile
+ return 1
+ endif
+ endwhile
+
+
+ return 0
+endfunction " }}}
+" Tex_ScanFileForLabels: greps present file and included files for \\label's {{{
+" Description:
+" Grep the presently edited file for \\label's. If the present file \include's
+" or \input's other files, then recursively scan those as well, i.e we support
+" arbitrary levels of \input'ed-ness.
+function! Tex_ScanFileForLabels(prefix)
+ call Tex_Debug("+Tex_ScanFileForLabels: grepping in file [".bufname('%')."]", "view")
+
+ lcd %:p:h
+ call Tex_Grepadd('\\label{'.a:prefix, "%")
+
+ " Then recursively grep for all \include'd or \input'ed files.
+ exec 0
+ let wrap = 'w'
+ while search('^\s*\\\(input\|include\)', wrap)
+ let wrap = 'W'
+
+ let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}')
+ let foundfile = Tex_FindFile(filename, '.,'.Tex_TEXINPUTS, '.tex')
+ if foundfile != ''
+ exec 'split '.Tex_EscapeSpaces(foundfile)
+ call Tex_Debug('Tex_ScanFileForLabels: scanning recursively in ['.foundfile.']', 'view')
+ call Tex_ScanFileForLabels(a:prefix)
+ q
+ endif
+ endwhile
+
+endfunction " }}}
+
+" ==============================================================================
+" Functions for custom command completion
+" ==============================================================================
+" Tex_completion_{var}: similar variables can be set in package files {{{
+let g:Tex_completion_bibliographystyle = 'abbr,alpha,plain,unsrt'
+let g:Tex_completion_addtocontents = 'lof}{,lot}{,toc}{'
+let g:Tex_completion_addcontentsline = 'lof}{figure}{,lot}{table}{,toc}{chapter}{,toc}{part}{,'.
+ \ 'toc}{section}{,toc}{subsection}{,toc}{paragraph}{,'.
+ \ 'toc}{subparagraph}{'
+" }}}
+" Tex_PromptForCompletion: prompts for a completion {{{
+" Description:
+function! s:Tex_PromptForCompletion(texcommand,ask)
+
+ let common_completion_prompt =
+ \ Tex_CreatePrompt(g:Tex_completion_{a:texcommand}, 2, ',') . "\n" .
+ \ 'Enter number or completion: '
+
+ let inp = input(a:ask."\n".common_completion_prompt)
+ if inp =~ '^[0-9]\+$'
+ let completion = Tex_Strntok(g:Tex_completion_{a:texcommand}, ',', inp)
+ else
+ let completion = inp
+ endif
+
+ return completion
+endfunction " }}}
+" Tex_DoCompletion: fast insertion of completion {{{
+" Description:
+"
+function! s:Tex_DoCompletion(texcommand)
+ let completion = <SID>Tex_PromptForCompletion(a:texcommand, 'Choose a completion to insert: ')
+ if completion != ''
+ return completion
+ else
+ return ''
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" Functions for presenting an outlined version for completion
+" ==============================================================================
+" Tex_StartOutlineCompletion: sets up an outline window {{{
+
+" get the place where this plugin resides for setting cpt and dict options.
+" these lines need to be outside the function.
+let s:path = expand('<sfile>:p:h')
+if has('python') && Tex_GetVarValue('Tex_UsePython')
+ python import sys, re
+ exec "python sys.path += [r'". s:path . "']"
+ python import outline
+endif
+
+function! Tex_StartOutlineCompletion()
+ let mainfname = Tex_GetMainFileName(':p')
+
+ " open the buffer
+ let _report = &report
+ let _cmdheight=&cmdheight
+ let _lazyredraw = &lazyredraw
+ set report=1000
+ set cmdheight=1
+ set lazyredraw
+
+ bot split __OUTLINE__
+ exec Tex_GetVarValue('Tex_OutlineWindowHeight', 15).' wincmd _'
+
+ setlocal modifiable
+ setlocal noswapfile
+ setlocal buftype=nowrite
+ setlocal bufhidden=delete
+ setlocal nowrap
+ setlocal foldmethod=marker
+ setlocal foldmarker=<<<,>>>
+
+ " delete everything in it to the blackhole
+ % d _
+
+ if has('python') && Tex_GetVarValue('Tex_UsePython')
+ exec 'python retval = outline.main('
+ \. 'r"' . fnamemodify(mainfname, ':p') . '", '
+ \. 'r"' . s:prefix . '")'
+
+ " transfer variable from python to a local variable.
+ python vim.command("""let retval = "%s" """ % re.sub(r'"|\\', r'\\\g<0>', retval))
+
+ 0put!=retval
+ else
+ exec '0r!'.s:path.'/outline.py '.mainfname.' '.s:prefix
+ endif
+
+ 0
+
+ call Tex_SetupOutlineSyntax()
+
+ exec 'nnoremap <buffer> <cr> '
+ \ .':cd '.s:origdir.'<CR>'
+ \ .':call Tex_FinishOutlineCompletion()<CR>'
+ exec 'nnoremap <buffer> q '
+ \ .':cd '.s:origdir.'<CR>'
+ \ .':close<CR>'
+
+ " once the buffer is initialized, go back to the original settings.
+ setlocal nomodifiable
+ setlocal nomodified
+ let &report = _report
+ let &cmdheight = _cmdheight
+ let &lazyredraw = _lazyredraw
+
+endfunction " }}}
+" Tex_SetupOutlineSyntax: sets up the syntax items for the outline {{{
+" Description:
+function! Tex_SetupOutlineSyntax()
+ syn match outlineFileName "<\f\+>$" contained
+ syn match foldMarkers "<<<\d$" contained
+ syn match firstSemiColon '^:' contained
+ syn match firstAngle '^>' contained
+
+ syn match sectionNames '\(\d\.\)\+ .*' contains=foldMarkers
+ syn match previousLine '^:.*' contains=firstSemiColon
+ syn match labelLine '^>.*' contains=firstAngle,outlineFileName
+
+ hi def link outlineFileName Ignore
+ hi def link foldMarkers Ignore
+ hi def link firstSemiColon Ignore
+ hi def link firstAngle Ignore
+
+ hi def link sectionNames Type
+ hi def link previousLine Special
+ hi def link labelLine Comment
+endfunction " }}}
+" Tex_FinishOutlineCompletion: inserts the reference back in the text {{{
+function! Tex_FinishOutlineCompletion()
+ if getline('.') !~ '^[>:]'
+ return
+ endif
+
+ if getline('.') =~ '^>'
+ let ref_complete = matchstr(getline('.'), '^>\s\+\zs\S\+\ze')
+ elseif getline('.') =~ '^:'
+ let ref_complete = matchstr(getline(line('.')-1), '^>\s\+\zs\S\+\ze')
+ endif
+
+ let ref_remaining = strpart(ref_complete, strlen(s:prefix))
+ close
+ call Tex_CompleteWord(ref_remaining)
+endfunction " }}}
+
+" ==============================================================================
+" Functions for presenting a nicer list of bibtex entries
+" ==============================================================================
+" Tex_FindBibFiles: finds all .bib files used by the main file {{{
+" Description:
+function! Tex_FindBibFiles()
+
+ let mainfname = Tex_GetMainFileName(':p')
+ wincmd n
+ exec 'silent! e '.mainfname
+
+ if search('\\\(no\)\?bibliography{', 'w')
+
+ call Tex_Debug('Tex_FindBibFiles: found bibliography command in '.bufname('%'), 'view')
+
+ " extract the bibliography filenames from the command.
+ let bibnames = matchstr(getline('.'), '\\\(no\)\?bibliography{\zs.\{-}\ze}')
+ let bibnames = substitute(bibnames, '\s', '', 'g')
+
+ call Tex_Debug(':Tex_FindBibFiles: trying to search through ['.bibnames.']', 'view')
+
+ let bibfiles = ''
+ let i = 1
+ while 1
+ let bibname = Tex_Strntok(bibnames, ',', i)
+ if bibname == ''
+ break
+ endif
+ let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib')
+ if fname != ''
+ let bibfiles = bibfiles.fname."\n"
+ endif
+ let i = i + 1
+ endwhile
+
+ call Tex_Debug(":Tex_FindBibFiles: returning [".bibfiles."]", "view")
+ q
+ return bibfiles
+
+ else
+ q
+ return ''
+ endif
+
+endfunction " }}}
+" Tex_StartBibtexOutline: sets up an outline window {{{
+
+" get the place where this plugin resides for setting cpt and dict options.
+" these lines need to be outside the function.
+if has('python') && Tex_GetVarValue('Tex_UsePython')
+ python import sys, re
+ exec "python sys.path += [r'". s:path . "']"
+ python import bibtools
+endif
+
+function! Tex_StartCiteCompletion()
+ let bibfiles = Tex_FindBibFiles()
+ if bibfiles !~ '\S'
+ echohl WarningMsg
+ echomsg 'No bibfiles found! Sorry'
+ echohl None
+ return
+ endif
+
+ bot split __OUTLINE__
+ exec Tex_GetVarValue('Tex_OutlineWindowHeight', 15).' wincmd _'
+
+ exec 'python Tex_BibFile = bibtools.BibFile("""'.bibfiles.'""")'
+ exec 'python Tex_BibFile.addfilter("key ^'.s:prefix.'")'
+ call Tex_DisplayBibList()
+
+ nnoremap <Plug>Tex_JumpToNextBibEntry :call search('^\S.*\]$', 'W')<CR>:call Tex_EchoBibShortcuts()<CR>z.
+ nnoremap <Plug>Tex_JumpToPrevBibEntry :call search('^\S.*\]$', 'bW')<CR>:call Tex_EchoBibShortcuts()<CR>z.
+ nnoremap <Plug>Tex_FilterBibEntries :call Tex_HandleBibShortcuts('filter')<CR>
+ nnoremap <Plug>Tex_RemoveBibFilters :call Tex_HandleBibShortcuts('remove_filters')<CR>
+ nnoremap <Plug>Tex_SortBibEntries :call Tex_HandleBibShortcuts('sort')<CR>
+ nnoremap <Plug>Tex_CompleteCiteEntry :call Tex_CompleteCiteEntry()<CR>
+
+ nmap <buffer> <silent> n <Plug>Tex_JumpToNextBibEntry
+ nmap <buffer> <silent> p <Plug>Tex_JumpToPrevBibEntry
+ nmap <buffer> <silent> f <Plug>Tex_FilterBibEntries
+ nmap <buffer> <silent> s <Plug>Tex_SortBibEntries
+ nmap <buffer> <silent> a <Plug>Tex_RemoveBibFilters
+ nmap <buffer> <silent> q :close<CR>
+ nmap <buffer> <silent> <CR> <Plug>Tex_CompleteCiteEntry
+
+endfunction " }}}
+" Tex_DisplayBibList: displays the list of bibtex entries {{{
+" Description:
+function! Tex_DisplayBibList()
+ " open the buffer
+ let _report = &report
+ let _cmdheight=&cmdheight
+ let _lazyredraw = &lazyredraw
+ set report=1000
+ set cmdheight=1
+ set lazyredraw
+
+ setlocal modifiable
+ setlocal noswapfile
+ setlocal buftype=nowrite
+ setlocal bufhidden=delete
+ setlocal nowrap
+ setlocal foldmethod=marker
+ setlocal foldmarker=<<<,>>>
+
+
+ " delete everything in it to the blackhole
+ % d _
+
+ exec 'python Tex_CurBuf = vim.current.buffer'
+ exec 'python Tex_CurBuf[:] = str(Tex_BibFile).splitlines()'
+
+ call Tex_SetupBibSyntax()
+
+ 0
+ call Tex_EchoBibShortcuts()
+
+ " once the buffer is initialized, go back to the original settings.
+ setlocal nomodifiable
+ setlocal nomodified
+ let &report = _report
+ let &cmdheight = _cmdheight
+ let &lazyredraw = _lazyredraw
+
+endfunction " }}}
+" Tex_EchoBibShortcuts: echos all the shortcuts in the status line {{{
+" Description:
+function! Tex_EchoBibShortcuts()
+ echomsg '(a) all (f) filter (s) sort (n) next (p) previous (q) quit (<CR>) choose'
+endfunction " }}}
+" Tex_SetupBibSyntax: sets up the syntax items for the outline {{{
+" Description:
+function! Tex_SetupBibSyntax()
+ syn match BibTitleHeader "^TI" contained
+ syn match BibAuthorHeader "^AU" contained
+ syn match BibLocationHeader "^IN" contained
+ syn match BibMiscHeader "^MI" contained
+
+ syn match BibKeyLine '^\S.*\]$' contains=BibKey
+ syn match BibTitle "^TI .*" contains=BibTitleHeader
+ syn match BibAuthor "^AU .*" contains=BibAuthorHeader
+ syn match BibLocation "^IN .*" contains=BibLocationHeader
+ syn match BibMisc "^MI .*" contains=BibMiscHeader
+
+ hi def link BibTitleHeader Ignore
+ hi def link BibAuthorHeader Ignore
+ hi def link BibLocationHeader Ignore
+ hi def link BibMiscHeader Ignore
+
+ hi def link BibKeyLine Visual
+ hi def link BibTitle Type
+ hi def link BibAuthor Special
+ hi def link BibLocation Comment
+ hi def link BibMisc Comment
+endfunction " }}}
+" Tex_HandleBibShortcuts: handles user keypresses {{{
+" Description:
+function! Tex_HandleBibShortcuts(command)
+
+ if a:command == 'filter' || a:command == 'sort'
+
+ let fieldprompt =
+ \ "Field acronyms: (`:let g:Tex_EchoBibFields = 0` to avoid this message)\n" .
+ \ " [t] title [a] author [b] booktitle \n" .
+ \ " [j] journal [y] year [p] bibtype \n" .
+ \ " (you can also enter the complete field name) \n"
+
+ let fieldprompt = Tex_GetVarValue('Tex_BibFieldPrompt', fieldprompt)
+
+ if Tex_GetVarValue('Tex_EchoBibFields', 1) == 1
+ echo fieldprompt
+ endif
+
+ let inp = input('Enter '.a:command.' criterion [field<space>value]: ')
+ if inp !~ '\v^\S+\s+\S.*'
+ echohl WarningMsg
+ echomsg 'Invalid filter specification. Use "field<space>value"'
+ echohl None
+ return
+ endif
+
+ if inp != ''
+ " If the field is specified as a single character, then replace
+ " it with the corresponding 'full form'.
+ if inp =~ '^[a-z]\>'
+ if Tex_GetVarValue('Tex_BibAcronym_'.inp[0]) != ''
+ let inp = substitute(inp, '.', Tex_GetVarValue('Tex_BibAcronym_'.inp[0]), '')
+ elseif fieldprompt =~ '\['.inp[0].'\]'
+ let full = matchstr(fieldprompt, '\['.inp[0].'\] \zs\w\+\ze')
+ let inp = substitute(inp, '.', full, '')
+ endif
+ endif
+ call Tex_Debug(":Tex_HandleBibShortcuts: using inp = [".inp."]", "view")
+ if a:command == 'filter'
+ exec 'python Tex_BibFile.addfilter("'.inp.'")'
+ elseif a:command == 'sort'
+ exec "python Tex_BibFile.addsortfield(\"".inp."\")"
+ exec 'python Tex_BibFile.sort()'
+ endif
+ silent! call Tex_DisplayBibList()
+ endif
+
+ elseif a:command == 'remove_filters'
+
+ exec 'python Tex_BibFile.rmfilters()'
+ exec 'python Tex_BibFile.addfilter("key ^'.s:prefix.'")'
+ call Tex_DisplayBibList()
+
+ endif
+
+endfunction " }}}
+" Tex_CompleteCiteEntry: completes cite entry {{{
+" Description:
+function! Tex_CompleteCiteEntry()
+ normal! 0
+ call search('\[\S\+\]$', 'W')
+ if getline('.') !~ '\[\S\+\]$'
+ call search('\[\S\+\]$', 'bW')
+ endif
+
+ if getline('.') !~ '\[\S\+\]$'
+ return
+ endif
+
+ let ref = matchstr(getline('.'), '\[\zs\S\+\ze\]$')
+ close
+ call Tex_Debug(":Tex_CompleteCiteEntry: completing with ".ref, "view")
+ call Tex_CompleteWord(strpart(ref, strlen(s:prefix)))
+endfunction " }}}
+
+com! -nargs=0 TClearCiteHist unlet! s:citeSearchHistory
+
+" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4
diff --git a/.vim/ftplugin/latex-suite/version.vim b/.vim/ftplugin/latex-suite/version.vim
new file mode 100644
index 0000000..41089cf
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/version.vim
@@ -0,0 +1,30 @@
+" Tex_Version: returns a string which gives the current version number of latex-suite
+" Description:
+" Each time a bug fix/addition is done in any source file in latex-suite,
+" not just this file, the number below has to be incremented by the author.
+" This will ensure that there is a single 'global' version number for all of
+" latex-suite.
+"
+" If a change is done in the doc/ directory, i.e an addition/change in the
+" documentation, then this number should NOT be incremented.
+"
+" Latex-suite will follow a 3-tier system of versioning just as Vim. A
+" version number will be of the form:
+"
+" X.Y.ZZ
+"
+" 'X' will only be incremented for a major over-haul or feature addition.
+" 'Y' will be incremented for significant changes which do not qualify
+" as major.
+" 'ZZ' will be incremented for bug-fixes and very trivial additions such
+" as adding an option etc. Once ZZ reaches 50, then Y will be
+" incremented and ZZ will be reset to 01. Each time we have a
+" version number of the form X.Y.01, then we'll make a release on
+" vim.sf.net and also create a cvs tag at that point. We'll try to
+" "stabilize" that version by releasing a few pre-releases and then
+" keep that as a stable point.
+function! Tex_Version()
+ return "Latex-Suite: version 1.8.13"
+endfunction
+
+com! -nargs=0 TVersion echo Tex_Version()
diff --git a/.vim/ftplugin/latex-suite/wizardfuncs.vim b/.vim/ftplugin/latex-suite/wizardfuncs.vim
new file mode 100644
index 0000000..113271c
--- /dev/null
+++ b/.vim/ftplugin/latex-suite/wizardfuncs.vim
@@ -0,0 +1,377 @@
+" File: wizardfuncs.vim
+" Author: Mikolaj Machowski <mikmach@wp.pl>
+" Description:
+"
+" Installation:
+" History: pluginized by Srinath Avadhanula
+"=============================================================================
+
+if exists('s:doneOnce')
+ finish
+endif
+let s:doneOnce = 1
+
+let s:mapleader = exists('mapleader') ? mapleader : "\\"
+" ==============================================================================
+" Specialized functions for handling sections from command line
+" ==============================================================================
+
+com! -nargs=? TSection call Tex_section(<f-args>)
+com! -nargs=? TSectionAdvanced call Tex_section_adv(<f-args>)
+
+" Tex_VisSecAdv: handles visual selection for sections {{{
+function! Tex_VisSecAdv(section)
+ let shorttitle = input("Short title? ")
+ let toc = input("Include in table of contents [y]/n ? ")
+ let sstructure = "\\".a:section
+ if ( toc == "" || toc == "y" )
+ let toc = ""
+ else
+ let toc = "*"
+ endif
+ if shorttitle != ""
+ let shorttitle = '['.shorttitle.']'
+ endif
+ exe "normal `>a}\<cr>\<esc>`<i".sstructure.toc.shorttitle."{"
+endfunction
+
+" }}}
+" Tex_InsSecAdv: section wizard in insert mode {{{
+function! Tex_InsSecAdv(structure)
+ let ttitle = input("Title? ")
+ let shorttitle = input("Short title? ")
+ let toc = input("Include in table of contents [y]/n ? ")
+ "Structure
+ let sstructure = "\\".a:structure
+ "TOC
+ if ( toc == "" || toc == "y" )
+ let toc = ""
+ else
+ let toc = "*"
+ endif
+ "Shorttitle
+ if shorttitle != ""
+ let shorttitle = '['.shorttitle.']'
+ endif
+ "Title
+ let ttitle = '{'.ttitle.'}'
+ "Happy end?
+ return sstructure.toc.shorttitle.ttitle
+endfunction
+
+
+" }}}
+function! Tex_section(...) "{{{
+ silent let pos = line('.').' | normal! '.virtcol('.').'|'
+ silent let last_section_value = s:Tex_section_detection()
+ if a:0 == 0
+ silent let last_section_name = s:Tex_section_name(last_section_value)
+ silent call s:Tex_section_call(last_section_name)
+ elseif a:1 =~ "[+=\-]"
+ silent let sec_arg = a:1
+ silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
+ silent let curr_section_name = s:Tex_section_name(curr_section_value)
+ silent call s:Tex_section_call(curr_section_name)
+ elseif a:1 == "?"
+ echo s:last_section_line
+ else
+ silent let curr_section_value = s:Tex_section_curr_value(a:1)
+ silent let curr_section_name = s:Tex_section_name(curr_section_value)
+ silent call s:Tex_section_call(curr_section_name)
+ endif
+ silent exe pos
+endfunction "}}}
+function! Tex_section_adv(...) "{{{
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+ silent let last_section_value = s:Tex_section_detection()
+ if a:0 == 0
+ silent let last_section_name = s:Tex_section_name(last_section_value)
+ let section = Tex_InsSecAdv(last_section_name)
+ elseif a:1 =~ "[+=\-]"
+ silent let sec_arg = a:1
+ silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
+ silent let curr_section_name = s:Tex_section_name(curr_section_value)
+ let section = Tex_InsSecAdv(curr_section_name)
+ else
+ silent let curr_section_value = s:Tex_section_curr_value(a:1)
+ silent let curr_section_name = s:Tex_section_name(curr_section_value)
+ silent call s:Tex_section_call(curr_section_name)
+ let section = Tex_InsSecAdv(curr_section_name)
+ endif
+ exe "normal i".section
+ exe pos
+endfunction "}}}
+function! s:Tex_section_detection() "{{{
+ let pos = line('.').' | normal! '.virtcol('.').'|'
+ let last_section1 = search("\\\\\subparagraph\\|\\\\paragraph\\|\\\\subsubsection\\|\\\\subsection\\|\\\\section\\|\\\\chapter\\|\\\part\)", "b")
+ exe pos
+ let last_section2 = search("\\\\\part\\|\\\\chapter\\|\\\\section\\|\\\\subsection\\|\\\\subsubsection\\|\\\\paragraph\\|\\\subparagraph\)", "b")
+ if last_section1 > last_section2
+ let last_section = last_section1
+ else
+ let last_section = last_section2
+ endif
+ if last_section != 0
+ exe last_section
+ if getline(".") =~ "\\\\part"
+ let last_section_value = 0
+ elseif getline(".") =~ "\\\\chapter"
+ let last_section_value = 1
+ elseif getline(".") =~ "\\\\section"
+ let last_section_value = 2
+ elseif getline(".") =~ "\\\\subsection"
+ let last_section_value = 3
+ elseif getline(".") =~ "\\\\subsubsection"
+ let last_section_value = 4
+ elseif getline(".") =~ "\\\\paragraph"
+ let last_section_value = 5
+ elseif getline(".") =~ "\\\\subparagraph"
+ let last_section_value = 6
+ endif
+ let s:last_section_line = getline(".")
+ else
+ let last_section_value = 0
+ endif
+ exe pos
+ return last_section_value
+endfunction "}}}
+function! s:Tex_section_curr_value(sec_arg) "{{{
+ if a:sec_arg == "pa" || a:sec_arg == "0" || a:sec_arg == "part"
+ let curr_section_value = 0
+ elseif a:sec_arg == "ch" || a:sec_arg == "1" || a:sec_arg == "chapter"
+ let curr_section_value = 1
+ elseif a:sec_arg == "se" || a:sec_arg == "2" || a:sec_arg == "section"
+ let curr_section_value = 2
+ elseif a:sec_arg == "ss" || a:sec_arg == "3" || a:sec_arg == "subsection"
+ let curr_section_value = 3
+ elseif a:sec_arg == "s2" || a:sec_arg == "4" || a:sec_arg == "subsubsection"
+ let curr_section_value = 4
+ elseif a:sec_arg == "pr" || a:sec_arg == "5" || a:sec_arg == "paragraph"
+ let curr_section_value = 5
+ elseif a:sec_arg == "sp" || a:sec_arg == "6" || a:sec_arg == "subparagraph"
+ let curr_section_value = 6
+ endif
+ return curr_section_value
+endfunction "}}}
+function! s:Tex_section_curr_rel_value(sec_arg, last_section_value) "{{{
+ let last_section_value = a:last_section_value
+ if a:sec_arg == "+" || a:sec_arg == "+1"
+ let curr_section_value = last_section_value + 1
+ elseif a:sec_arg == "++" || a:sec_arg == "+2"
+ let curr_section_value = last_section_value + 2
+ elseif a:sec_arg == "-" || a:sec_arg == "-1"
+ let curr_section_value = last_section_value - 1
+ elseif a:sec_arg == "--" || a:sec_arg == "-2"
+ let curr_section_value = last_section_value - 2
+ elseif a:sec_arg == "="
+ let curr_section_value = last_section_value
+ else
+ exe "let curr_section_value = last_section_value".a:sec_arg
+ endif
+ if curr_section_value < 0
+ let curr_section_value = 0
+ elseif curr_section_value > 6
+ let curr_section_value = 6
+ endif
+ return curr_section_value
+endfunction "}}}
+function! s:Tex_section_name(section_value) "{{{
+ if a:section_value == 0
+ let section_name = "part"
+ elseif a:section_value == 1
+ let section_name = "chapter"
+ elseif a:section_value == 2
+ let section_name = "section"
+ elseif a:section_value == 3
+ let section_name = "subsection"
+ elseif a:section_value == 4
+ let section_name = "subsubsection"
+ elseif a:section_value == 5
+ let section_name = "paragraph"
+ elseif a:section_value == 6
+ let section_name = "subparagraph"
+ endif
+ return section_name
+endfunction "}}}
+function! s:Tex_section_call(section_name) "{{{
+ exe "normal! i\\".a:section_name."{<++>}<++>\<Esc>0\<C-j>"
+" let ret_section = "\\".a:section_name."{<++>}<++>"
+" exe "normal! i\<C-r>=IMAP_PutTextWithMovement(ret_section)\<CR>"
+" normal f}i
+endfunction "}}}
+
+" ==============================================================================
+" Add looking help into latexhelp.txt
+" ==============================================================================
+
+inoremap <silent> <Plug>Tex_Help <C-o>:call <SID>TexHelp()<CR>
+nnoremap <silent> <Plug>Tex_Help :call <SID>TexHelp()<CR>
+command! -nargs=0 THelp call <SID>TexHelp()
+call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'i', '')
+call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'n', '')
+
+" TexHelp: Cursor being on LaTeX item check if exists help tag about it " {{{
+function! s:TexHelp()
+ let syntax_item = synIDattr(synID(line('.'),col('.')-1,0),"name")
+ if syntax_item =~ '^tex'
+ setlocal isk+=\
+ let curword = expand('<cword>')
+ setlocal isk-=\
+ let v:errmsg = ''
+ if curword =~ "^\\" || syntax_item == 'texSectionName'
+ exe 'silent! help '.curword
+ if v:errmsg =~ '^E149:'
+ echohl ErrorMsg
+ exe "echomsg 'Sorry, no help for LaTeX: ".curword."'"
+ echohl None
+ let v:errmsg = ''
+ endif
+ else
+ help
+ endif
+ else
+ help
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" Tables of shortcuts
+" ==============================================================================
+"
+command! -nargs=? Tshortcuts call Tex_shortcuts(<f-args>)<CR>
+
+" Tex_shortcuts: Show shortcuts in terminal after : command {{{
+function! Tex_shortcuts(...)
+ if a:0 == 0
+ let shorts = input(" Allowed arguments are:"
+ \."\n g General"
+ \."\n e Environments"
+ \."\n f Fonts"
+ \."\n s Sections"
+ \."\n m Math"
+ \."\n a All"
+ \."\n Enter your choice (<Enter> quits) : ")
+ call Tex_shortcuts(shorts)
+ elseif a:1 == 'g'
+ echo g:generalshortcuts
+ elseif a:1 == 'e'
+ echo g:environmentshortcuts
+ elseif a:1 == 'f'
+ echo g:fontshortcuts
+ elseif a:1 == 's'
+ echo g:sectionshortcuts
+ elseif a:1 == 'm'
+ echo g:mathshortcuts
+ elseif a:1 == 'a'
+ echo g:generalshortcuts
+ echo g:environmentshortcuts
+ echo g:fontshortcuts
+ echo g:sectionshortcuts
+ echo g:mathshortcuts
+ endif
+
+endfunction
+" }}}
+
+" General shortcuts {{{
+let g:generalshortcuts = ''
+\."\n General shortcuts"
+\."\n <mapleader> is a value of <Leader>"
+\."\n ".s:mapleader.'ll compile whole document'
+\."\n ".s:mapleader.'lv view compiled document'
+\."\n ".s:mapleader.'ls forward searching (if possible)'
+\."\n ".s:mapleader.'rf refresh folds'
+" }}}
+" Environment shortcuts {{{
+let g:environmentshortcuts = ''
+\."\n Environment shortcuts"
+\."\n <mapleader> is a value of g:Tex_Leader2"
+\."\n I v&V I v&V"
+\."\n ELI ".g:Tex_Leader2."li list EQN ".g:Tex_Leader2."qn quotation"
+\."\n EDE ".g:Tex_Leader2."de description ESB ".g:Tex_Leader2."sb sloppybar"
+\."\n EEN ".g:Tex_Leader2."en enumerate ETI ".g:Tex_Leader2."ti theindex"
+\."\n EIT ".g:Tex_Leader2."it itemize ETP ".g:Tex_Leader2."tp titlepage"
+\."\n ETI ".g:Tex_Leader2."ti theindex EVM ".g:Tex_Leader2."vm verbatim"
+\."\n ETL ".g:Tex_Leader2."tl trivlist EVE ".g:Tex_Leader2."ve verse"
+\."\n ETE ".g:Tex_Leader2."te table ETB ".g:Tex_Leader2."tb thebibliography"
+\."\n ETG ".g:Tex_Leader2."tg tabbing ENO ".g:Tex_Leader2."no note"
+\."\n ETR ".g:Tex_Leader2."tr tabular EOV ".g:Tex_Leader2."ov overlay"
+\."\n EAR ".g:Tex_Leader2."ar array ESL ".g:Tex_Leader2."sl slide"
+\."\n EDM ".g:Tex_Leader2."dm displaymath EAB ".g:Tex_Leader2."ab abstract"
+\."\n EEA ".g:Tex_Leader2."ea eqnarray EAP ".g:Tex_Leader2."ap appendix"
+\."\n EEQ ".g:Tex_Leader2."eq equation ECE ".g:Tex_Leader2."ce center"
+\."\n EDO ".g:Tex_Leader2."do document EFI ".g:Tex_Leader2."fi figure"
+\."\n EFC ".g:Tex_Leader2."fc filecontents ELR ".g:Tex_Leader2."lr lrbox"
+\."\n EFL ".g:Tex_Leader2."fl flushleft EMP ".g:Tex_Leader2."mp minipage"
+\."\n EFR ".g:Tex_Leader2."fr flushright EPI ".g:Tex_Leader2."pi picture"
+\."\n EMA ".g:Tex_Leader2."ma math EQE ".g:Tex_Leader2."qe quote"
+" }}}
+" Font shortcuts {{{
+let g:fontshortcuts = ''
+\."\n Font shortcuts"
+\."\n <mapleader> is a value of g:Tex_Leader"
+\."\n Shortcuts Effects"
+\."\n I v&V I&v V"
+\."\n FBF ".g:Tex_Leader."bf \\textbf{} {\\bfseries }"
+\."\n FMD ".g:Tex_Leader."md \\textmd{} {\\mdseries }"
+\."\n"
+\."\n FTT ".g:Tex_Leader."tt \\texttt{} {\\ttfamily }"
+\."\n FSF ".g:Tex_Leader."sf \\textsf{} {\\sffamily }"
+\."\n FRM ".g:Tex_Leader."rm \\textrm{} {\\rmfamily }"
+\."\n"
+\."\n FUP ".g:Tex_Leader."up \\textup{} {\\upshape }"
+\."\n FSL ".g:Tex_Leader."sl \\textsl{} {\\slshape }"
+\."\n FSC ".g:Tex_Leader."sc \\textsc{} {\\scshape }"
+\."\n FIT ".g:Tex_Leader."it \\textit{} {\\itshape }"
+" }}}
+" Section shortcuts {{{
+let g:sectionshortcuts = ''
+\."\n Section shortcuts"
+\."\n <mapleader> is a value of g:Tex_Leader2"
+\."\n I v&V"
+\."\n SPA ".g:Tex_Leader2."pa part"
+\."\n SCH ".g:Tex_Leader2."ch chapter"
+\."\n SSE ".g:Tex_Leader2."se section"
+\."\n SSS ".g:Tex_Leader2."ss subsection"
+\."\n SS2 ".g:Tex_Leader2."s2 subsubsection"
+\."\n SPG ".g:Tex_Leader2."pg paragraph"
+\."\n SSP ".g:Tex_Leader2."sp subparagraph"
+" }}}
+" Math shortcuts {{{
+let g:mathshortcuts = ''
+\."\n Math shortcuts - Insert mode"
+\."\n `a \\alpha `b \\beta"
+\."\n `g \\gamma `d \\delta"
+\."\n `e \\varepsilon `z \\zeta"
+\."\n `h \\eta `q \\theta"
+\."\n `i \\iota `k \\kappa"
+\."\n `l \\lambda `m \\mu"
+\."\n `n \\nu `x \\xi"
+\."\n `p \\pi `r \\rho"
+\."\n `s \\sigma `v \\varsigma"
+\."\n `t \\tau `u \\upsilon"
+\."\n `f \\varphi `c \\chi"
+\."\n `y \\psi `w \\omega"
+\."\n `A \\Alpha `B \\Beta"
+\."\n `G \\Gamma `D \\Delta"
+\."\n `E \\Epsilon `Z \\mathrm{Z}"
+\."\n `H \\Eta `K \\Kappa"
+\."\n `L \\Lambda `M \\Mu"
+\."\n `N \\Nu `X \\Xi"
+\."\n `P \\Pi `R \\Rho"
+\."\n `S \\Sigma `T \\Tau"
+\."\n `U \\Upsilon `C \\Chi"
+\."\n `Y \\Psi `W \\Omega"
+\."\n `( \\subset `) \\Subset"
+\."\n `= \\equiv =~ \\approx"
+\."\n `- \\bigcap `+ \\bigcup"
+\."\n `. \\cdot `* \\times"
+\."\n `\\ \\setminus `@ \\circ"
+\."\n `& \\wedge `, \\nonumber"
+\."\n `8 \\infty `_ \\bar{}"
+\."\n `: \\ddot{} `; \\dot{}"
+\."\n `^ \\hat{} `~ \\tilde{}"
+\."\n `6 \\partial"
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/.vim/ftplugin/pythoncomplete.vim b/.vim/ftplugin/pythoncomplete.vim
new file mode 100644
index 0000000..57add71
--- /dev/null
+++ b/.vim/ftplugin/pythoncomplete.vim
@@ -0,0 +1,625 @@
+"pythoncomplete.vim - Omni Completion for python
+" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
+" Version: 0.9
+" Last Updated: 18 Jun 2009
+"
+" Changes
+" TODO:
+" 'info' item output can use some formatting work
+" Add an "unsafe eval" mode, to allow for return type evaluation
+" Complete basic syntax along with import statements
+" i.e. "import url<c-x,c-o>"
+" Continue parsing on invalid line??
+"
+" v 0.9
+" * Fixed docstring parsing for classes and functions
+" * Fixed parsing of *args and **kwargs type arguments
+" * Better function param parsing to handle things like tuples and
+" lambda defaults args
+"
+" v 0.8
+" * Fixed an issue where the FIRST assignment was always used instead of
+" using a subsequent assignment for a variable
+" * Fixed a scoping issue when working inside a parameterless function
+"
+"
+" v 0.7
+" * Fixed function list sorting (_ and __ at the bottom)
+" * Removed newline removal from docs. It appears vim handles these better in
+" recent patches
+"
+" v 0.6:
+" * Fixed argument completion
+" * Removed the 'kind' completions, as they are better indicated
+" with real syntax
+" * Added tuple assignment parsing (whoops, that was forgotten)
+" * Fixed import handling when flattening scope
+"
+" v 0.5:
+" Yeah, I skipped a version number - 0.4 was never public.
+" It was a bugfix version on top of 0.3. This is a complete
+" rewrite.
+"
+
+if !has('python')
+ echo "Error: Required vim compiled with +python"
+ finish
+endif
+
+function! pythoncomplete#Complete(findstart, base)
+ "findstart = 1 when we need to get the text length
+ if a:findstart == 1
+ let line = getline('.')
+ let idx = col('.')
+ while idx > 0
+ let idx -= 1
+ let c = line[idx]
+ if c =~ '\w'
+ continue
+ elseif ! c =~ '\.'
+ let idx = -1
+ break
+ else
+ break
+ endif
+ endwhile
+
+ return idx
+ "findstart = 0 when we need to return the list of completions
+ else
+ "vim no longer moves the cursor upon completion... fix that
+ let line = getline('.')
+ let idx = col('.')
+ let cword = ''
+ while idx > 0
+ let idx -= 1
+ let c = line[idx]
+ if c =~ '\w' || c =~ '\.'
+ let cword = c . cword
+ continue
+ elseif strlen(cword) > 0 || idx == 0
+ break
+ endif
+ endwhile
+ execute "python vimcomplete('" . cword . "', '" . a:base . "')"
+ return g:pythoncomplete_completions
+ endif
+endfunction
+
+function! s:DefPython()
+python << PYTHONEOF
+import sys, tokenize, cStringIO, types
+from token import NAME, DEDENT, NEWLINE, STRING
+
+debugstmts=[]
+def dbg(s): debugstmts.append(s)
+def showdbg():
+ for d in debugstmts: print "DBG: %s " % d
+
+def vimcomplete(context,match):
+ global debugstmts
+ debugstmts = []
+ try:
+ import vim
+ def complsort(x,y):
+ try:
+ xa = x['abbr']
+ ya = y['abbr']
+ if xa[0] == '_':
+ if xa[1] == '_' and ya[0:2] == '__':
+ return xa > ya
+ elif ya[0:2] == '__':
+ return -1
+ elif y[0] == '_':
+ return xa > ya
+ else:
+ return 1
+ elif ya[0] == '_':
+ return -1
+ else:
+ return xa > ya
+ except:
+ return 0
+ cmpl = Completer()
+ cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')"))
+ all = cmpl.get_completions(context,match)
+ all.sort(complsort)
+ dictstr = '['
+ # have to do this for double quoting
+ for cmpl in all:
+ dictstr += '{'
+ for x in cmpl: dictstr += '"%s":"%s",' % (x,cmpl[x])
+ dictstr += '"icase":0},'
+ if dictstr[-1] == ',': dictstr = dictstr[:-1]
+ dictstr += ']'
+ #dbg("dict: %s" % dictstr)
+ vim.command("silent let g:pythoncomplete_completions = %s" % dictstr)
+ #dbg("Completion dict:\n%s" % all)
+ except vim.error:
+ dbg("VIM Error: %s" % vim.error)
+
+class Completer(object):
+ def __init__(self):
+ self.compldict = {}
+ self.parser = PyParser()
+
+ def evalsource(self,text,line=0):
+ sc = self.parser.parse(text,line)
+ src = sc.get_code()
+ dbg("source: %s" % src)
+ try: exec(src) in self.compldict
+ except: dbg("parser: %s, %s" % (sys.exc_info()[0],sys.exc_info()[1]))
+ for l in sc.locals:
+ try: exec(l) in self.compldict
+ except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l))
+
+ def _cleanstr(self,doc):
+ return doc.replace('"',' ').replace("'",' ')
+
+ def get_arguments(self,func_obj):
+ def _ctor(obj):
+ try: return class_ob.__init__.im_func
+ except AttributeError:
+ for base in class_ob.__bases__:
+ rc = _find_constructor(base)
+ if rc is not None: return rc
+ return None
+
+ arg_offset = 1
+ if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj)
+ elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
+ else: arg_offset = 0
+
+ arg_text=''
+ if type(func_obj) in [types.FunctionType, types.LambdaType]:
+ try:
+ cd = func_obj.func_code
+ real_args = cd.co_varnames[arg_offset:cd.co_argcount]
+ defaults = func_obj.func_defaults or ''
+ defaults = map(lambda name: "=%s" % name, defaults)
+ defaults = [""] * (len(real_args)-len(defaults)) + defaults
+ items = map(lambda a,d: a+d, real_args, defaults)
+ if func_obj.func_code.co_flags & 0x4:
+ items.append("...")
+ if func_obj.func_code.co_flags & 0x8:
+ items.append("***")
+ arg_text = (','.join(items)) + ')'
+
+ except:
+ dbg("arg completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1]))
+ pass
+ if len(arg_text) == 0:
+ # The doc string sometimes contains the function signature
+ # this works for alot of C modules that are part of the
+ # standard library
+ doc = func_obj.__doc__
+ if doc:
+ doc = doc.lstrip()
+ pos = doc.find('\n')
+ if pos > 0:
+ sigline = doc[:pos]
+ lidx = sigline.find('(')
+ ridx = sigline.find(')')
+ if lidx > 0 and ridx > 0:
+ arg_text = sigline[lidx+1:ridx] + ')'
+ if len(arg_text) == 0: arg_text = ')'
+ return arg_text
+
+ def get_completions(self,context,match):
+ dbg("get_completions('%s','%s')" % (context,match))
+ stmt = ''
+ if context: stmt += str(context)
+ if match: stmt += str(match)
+ try:
+ result = None
+ all = {}
+ ridx = stmt.rfind('.')
+ if len(stmt) > 0 and stmt[-1] == '(':
+ result = eval(_sanitize(stmt[:-1]), self.compldict)
+ doc = result.__doc__
+ if doc is None: doc = ''
+ args = self.get_arguments(result)
+ return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}]
+ elif ridx == -1:
+ match = stmt
+ all = self.compldict
+ else:
+ match = stmt[ridx+1:]
+ stmt = _sanitize(stmt[:ridx])
+ result = eval(stmt, self.compldict)
+ all = dir(result)
+
+ dbg("completing: stmt:%s" % stmt)
+ completions = []
+
+ try: maindoc = result.__doc__
+ except: maindoc = ' '
+ if maindoc is None: maindoc = ' '
+ for m in all:
+ if m == "_PyCmplNoType": continue #this is internal
+ try:
+ dbg('possible completion: %s' % m)
+ if m.find(match) == 0:
+ if result is None: inst = all[m]
+ else: inst = getattr(result,m)
+ try: doc = inst.__doc__
+ except: doc = maindoc
+ typestr = str(inst)
+ if doc is None or doc == '': doc = maindoc
+
+ wrd = m[len(match):]
+ c = {'word':wrd, 'abbr':m, 'info':self._cleanstr(doc)}
+ if "function" in typestr:
+ c['word'] += '('
+ c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
+ elif "method" in typestr:
+ c['word'] += '('
+ c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
+ elif "module" in typestr:
+ c['word'] += '.'
+ elif "class" in typestr:
+ c['word'] += '('
+ c['abbr'] += '('
+ completions.append(c)
+ except:
+ i = sys.exc_info()
+ dbg("inner completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt))
+ return completions
+ except:
+ i = sys.exc_info()
+ dbg("completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt))
+ return []
+
+class Scope(object):
+ def __init__(self,name,indent,docstr=''):
+ self.subscopes = []
+ self.docstr = docstr
+ self.locals = []
+ self.parent = None
+ self.name = name
+ self.indent = indent
+
+ def add(self,sub):
+ #print 'push scope: [%s@%s]' % (sub.name,sub.indent)
+ sub.parent = self
+ self.subscopes.append(sub)
+ return sub
+
+ def doc(self,str):
+ """ Clean up a docstring """
+ d = str.replace('\n',' ')
+ d = d.replace('\t',' ')
+ while d.find(' ') > -1: d = d.replace(' ',' ')
+ while d[0] in '"\'\t ': d = d[1:]
+ while d[-1] in '"\'\t ': d = d[:-1]
+ dbg("Scope(%s)::docstr = %s" % (self,d))
+ self.docstr = d
+
+ def local(self,loc):
+ self._checkexisting(loc)
+ self.locals.append(loc)
+
+ def copy_decl(self,indent=0):
+ """ Copy a scope's declaration only, at the specified indent level - not local variables """
+ return Scope(self.name,indent,self.docstr)
+
+ def _checkexisting(self,test):
+ "Convienance function... keep out duplicates"
+ if test.find('=') > -1:
+ var = test.split('=')[0].strip()
+ for l in self.locals:
+ if l.find('=') > -1 and var == l.split('=')[0].strip():
+ self.locals.remove(l)
+
+ def get_code(self):
+ str = ""
+ if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n'
+ for l in self.locals:
+ if l.startswith('import'): str += l+'\n'
+ str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n'
+ for sub in self.subscopes:
+ str += sub.get_code()
+ for l in self.locals:
+ if not l.startswith('import'): str += l+'\n'
+
+ return str
+
+ def pop(self,indent):
+ #print 'pop scope: [%s] to [%s]' % (self.indent,indent)
+ outer = self
+ while outer.parent != None and outer.indent >= indent:
+ outer = outer.parent
+ return outer
+
+ def currentindent(self):
+ #print 'parse current indent: %s' % self.indent
+ return ' '*self.indent
+
+ def childindent(self):
+ #print 'parse child indent: [%s]' % (self.indent+1)
+ return ' '*(self.indent+1)
+
+class Class(Scope):
+ def __init__(self, name, supers, indent, docstr=''):
+ Scope.__init__(self,name,indent, docstr)
+ self.supers = supers
+ def copy_decl(self,indent=0):
+ c = Class(self.name,self.supers,indent, self.docstr)
+ for s in self.subscopes:
+ c.add(s.copy_decl(indent+1))
+ return c
+ def get_code(self):
+ str = '%sclass %s' % (self.currentindent(),self.name)
+ if len(self.supers) > 0: str += '(%s)' % ','.join(self.supers)
+ str += ':\n'
+ if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
+ if len(self.subscopes) > 0:
+ for s in self.subscopes: str += s.get_code()
+ else:
+ str += '%spass\n' % self.childindent()
+ return str
+
+
+class Function(Scope):
+ def __init__(self, name, params, indent, docstr=''):
+ Scope.__init__(self,name,indent, docstr)
+ self.params = params
+ def copy_decl(self,indent=0):
+ return Function(self.name,self.params,indent, self.docstr)
+ def get_code(self):
+ str = "%sdef %s(%s):\n" % \
+ (self.currentindent(),self.name,','.join(self.params))
+ if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
+ str += "%spass\n" % self.childindent()
+ return str
+
+class PyParser:
+ def __init__(self):
+ self.top = Scope('global',0)
+ self.scope = self.top
+
+ def _parsedotname(self,pre=None):
+ #returns (dottedname, nexttoken)
+ name = []
+ if pre is None:
+ tokentype, token, indent = self.next()
+ if tokentype != NAME and token != '*':
+ return ('', token)
+ else: token = pre
+ name.append(token)
+ while True:
+ tokentype, token, indent = self.next()
+ if token != '.': break
+ tokentype, token, indent = self.next()
+ if tokentype != NAME: break
+ name.append(token)
+ return (".".join(name), token)
+
+ def _parseimportlist(self):
+ imports = []
+ while True:
+ name, token = self._parsedotname()
+ if not name: break
+ name2 = ''
+ if token == 'as': name2, token = self._parsedotname()
+ imports.append((name, name2))
+ while token != "," and "\n" not in token:
+ tokentype, token, indent = self.next()
+ if token != ",": break
+ return imports
+
+ def _parenparse(self):
+ name = ''
+ names = []
+ level = 1
+ while True:
+ tokentype, token, indent = self.next()
+ if token in (')', ',') and level == 1:
+ if '=' not in name: name = name.replace(' ', '')
+ names.append(name.strip())
+ name = ''
+ if token == '(':
+ level += 1
+ name += "("
+ elif token == ')':
+ level -= 1
+ if level == 0: break
+ else: name += ")"
+ elif token == ',' and level == 1:
+ pass
+ else:
+ name += "%s " % str(token)
+ return names
+
+ def _parsefunction(self,indent):
+ self.scope=self.scope.pop(indent)
+ tokentype, fname, ind = self.next()
+ if tokentype != NAME: return None
+
+ tokentype, open, ind = self.next()
+ if open != '(': return None
+ params=self._parenparse()
+
+ tokentype, colon, ind = self.next()
+ if colon != ':': return None
+
+ return Function(fname,params,indent)
+
+ def _parseclass(self,indent):
+ self.scope=self.scope.pop(indent)
+ tokentype, cname, ind = self.next()
+ if tokentype != NAME: return None
+
+ super = []
+ tokentype, next, ind = self.next()
+ if next == '(':
+ super=self._parenparse()
+ elif next != ':': return None
+
+ return Class(cname,super,indent)
+
+ def _parseassignment(self):
+ assign=''
+ tokentype, token, indent = self.next()
+ if tokentype == tokenize.STRING or token == 'str':
+ return '""'
+ elif token == '(' or token == 'tuple':
+ return '()'
+ elif token == '[' or token == 'list':
+ return '[]'
+ elif token == '{' or token == 'dict':
+ return '{}'
+ elif tokentype == tokenize.NUMBER:
+ return '0'
+ elif token == 'open' or token == 'file':
+ return 'file'
+ elif token == 'None':
+ return '_PyCmplNoType()'
+ elif token == 'type':
+ return 'type(_PyCmplNoType)' #only for method resolution
+ else:
+ assign += token
+ level = 0
+ while True:
+ tokentype, token, indent = self.next()
+ if token in ('(','{','['):
+ level += 1
+ elif token in (']','}',')'):
+ level -= 1
+ if level == 0: break
+ elif level == 0:
+ if token in (';','\n'): break
+ assign += token
+ return "%s" % assign
+
+ def next(self):
+ type, token, (lineno, indent), end, self.parserline = self.gen.next()
+ if lineno == self.curline:
+ #print 'line found [%s] scope=%s' % (line.replace('\n',''),self.scope.name)
+ self.currentscope = self.scope
+ return (type, token, indent)
+
+ def _adjustvisibility(self):
+ newscope = Scope('result',0)
+ scp = self.currentscope
+ while scp != None:
+ if type(scp) == Function:
+ slice = 0
+ #Handle 'self' params
+ if scp.parent != None and type(scp.parent) == Class:
+ slice = 1
+ newscope.local('%s = %s' % (scp.params[0],scp.parent.name))
+ for p in scp.params[slice:]:
+ i = p.find('=')
+ if len(p) == 0: continue
+ pvar = ''
+ ptype = ''
+ if i == -1:
+ pvar = p
+ ptype = '_PyCmplNoType()'
+ else:
+ pvar = p[:i]
+ ptype = _sanitize(p[i+1:])
+ if pvar.startswith('**'):
+ pvar = pvar[2:]
+ ptype = '{}'
+ elif pvar.startswith('*'):
+ pvar = pvar[1:]
+ ptype = '[]'
+
+ newscope.local('%s = %s' % (pvar,ptype))
+
+ for s in scp.subscopes:
+ ns = s.copy_decl(0)
+ newscope.add(ns)
+ for l in scp.locals: newscope.local(l)
+ scp = scp.parent
+
+ self.currentscope = newscope
+ return self.currentscope
+
+ #p.parse(vim.current.buffer[:],vim.eval("line('.')"))
+ def parse(self,text,curline=0):
+ self.curline = int(curline)
+ buf = cStringIO.StringIO(''.join(text) + '\n')
+ self.gen = tokenize.generate_tokens(buf.readline)
+ self.currentscope = self.scope
+
+ try:
+ freshscope=True
+ while True:
+ tokentype, token, indent = self.next()
+ #dbg( 'main: token=[%s] indent=[%s]' % (token,indent))
+
+ if tokentype == DEDENT or token == "pass":
+ self.scope = self.scope.pop(indent)
+ elif token == 'def':
+ func = self._parsefunction(indent)
+ if func is None:
+ print "function: syntax error..."
+ continue
+ dbg("new scope: function")
+ freshscope = True
+ self.scope = self.scope.add(func)
+ elif token == 'class':
+ cls = self._parseclass(indent)
+ if cls is None:
+ print "class: syntax error..."
+ continue
+ freshscope = True
+ dbg("new scope: class")
+ self.scope = self.scope.add(cls)
+
+ elif token == 'import':
+ imports = self._parseimportlist()
+ for mod, alias in imports:
+ loc = "import %s" % mod
+ if len(alias) > 0: loc += " as %s" % alias
+ self.scope.local(loc)
+ freshscope = False
+ elif token == 'from':
+ mod, token = self._parsedotname()
+ if not mod or token != "import":
+ print "from: syntax error..."
+ continue
+ names = self._parseimportlist()
+ for name, alias in names:
+ loc = "from %s import %s" % (mod,name)
+ if len(alias) > 0: loc += " as %s" % alias
+ self.scope.local(loc)
+ freshscope = False
+ elif tokentype == STRING:
+ if freshscope: self.scope.doc(token)
+ elif tokentype == NAME:
+ name,token = self._parsedotname(token)
+ if token == '=':
+ stmt = self._parseassignment()
+ dbg("parseassignment: %s = %s" % (name, stmt))
+ if stmt != None:
+ self.scope.local("%s = %s" % (name,stmt))
+ freshscope = False
+ except StopIteration: #thrown on EOF
+ pass
+ except:
+ dbg("parse error: %s, %s @ %s" %
+ (sys.exc_info()[0], sys.exc_info()[1], self.parserline))
+ return self._adjustvisibility()
+
+def _sanitize(str):
+ val = ''
+ level = 0
+ for c in str:
+ if c in ('(','{','['):
+ level += 1
+ elif c in (']','}',')'):
+ level -= 1
+ elif level == 0:
+ val += c
+ return val
+
+sys.path.extend(['.','..'])
+PYTHONEOF
+endfunction
+
+call s:DefPython()
+" vim: set et ts=4:
diff --git a/.vim/ftplugin/tex.vim b/.vim/ftplugin/tex.vim
new file mode 100644
index 0000000..e1d7438
--- /dev/null
+++ b/.vim/ftplugin/tex.vim
@@ -0,0 +1,10 @@
+" this is mostly a matter of taste. but LaTeX looks good with just a bit
+" of indentation.
+set sw=2
+" TIP: if you write your \label's as \label{fig:something}, then if you
+" type in \ref{fig: and press <C-n> you will automatically cycle through
+" all the figure labels. Very useful!
+set iskeyword+=:
+
+" So I can use e-acute
+imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine
diff --git a/.vim/ftplugin/tex_latexSuite.vim b/.vim/ftplugin/tex_latexSuite.vim
new file mode 100644
index 0000000..582d014
--- /dev/null
+++ b/.vim/ftplugin/tex_latexSuite.vim
@@ -0,0 +1,13 @@
+" LaTeX filetype
+" Language: LaTeX (ft=tex)
+" Maintainer: Srinath Avadhanula
+" Email: srinath@fastmail.fm
+
+if !exists('s:initLatexSuite')
+ let s:initLatexSuite = 1
+ exec 'so '.expand('<sfile>:p:h').'/latex-suite/main.vim'
+
+ silent! do LatexSuite User LatexSuiteInitPost
+endif
+
+silent! do LatexSuite User LatexSuiteFileType
diff --git a/.vim/haskellmode-20081031.vba b/.vim/haskellmode-20081031.vba
new file mode 100644
index 0000000..1a33424
--- /dev/null
+++ b/.vim/haskellmode-20081031.vba
@@ -0,0 +1,1850 @@
+" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.
+UseVimball
+finish
+compiler/ghc.vim [[[1
+445
+
+" Vim Compiler File
+" Compiler: GHC
+" Maintainer: Claus Reinke <claus.reinke@talk21.com>
+" Last Change: 06/07/2008
+"
+" part of haskell plugins: http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/Vim/
+
+" ------------------------------ paths & quickfix settings first
+"
+
+if exists("current_compiler") && current_compiler == "ghc"
+ finish
+endif
+let current_compiler = "ghc"
+
+let s:scriptname = "ghc.vim"
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname.": can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+let ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+let b:ghc_staticoptions = ''
+
+" set makeprg (for quickfix mode)
+execute 'setlocal makeprg=' . g:ghc .'\ -e\ :q\ %'
+"execute 'setlocal makeprg=' . g:ghc .'\ --make\ %'
+
+" quickfix mode:
+" fetch file/line-info from error message
+" TODO: how to distinguish multiline errors from warnings?
+" (both have the same header, and errors have no common id-tag)
+" how to get rid of first empty message in result list?
+setlocal errorformat=
+ \%-Z\ %#,
+ \%W%f:%l:%c:\ Warning:\ %m,
+ \%E%f:%l:%c:\ %m,
+ \%E%>%f:%l:%c:,
+ \%+C\ \ %#%m,
+ \%W%>%f:%l:%c:,
+ \%+C\ \ %#%tarning:\ %m,
+
+" oh, wouldn't you guess it - ghc reports (partially) to stderr..
+setlocal shellpipe=2>
+
+" ------------------------- but ghc can do a lot more for us..
+"
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+" initialize map of identifiers to their types
+" associate type map updates to changedtick
+if !exists("b:ghc_types")
+ let b:ghc_types = {}
+ let b:my_changedtick = b:changedtick
+endif
+
+if exists("g:haskell_functions")
+ finish
+endif
+let g:haskell_functions = "ghc"
+
+" avoid hit-enter prompts
+set cmdheight=3
+
+" edit static GHC options
+" TODO: add completion for options/packages?
+command! GHCStaticOptions call GHC_StaticOptions()
+function! GHC_StaticOptions()
+ let b:ghc_staticoptions = input('GHC static options: ',b:ghc_staticoptions)
+ execute 'setlocal makeprg=' . g:ghc . '\ ' . escape(b:ghc_staticoptions,' ') .'\ -e\ :q\ %'
+ let b:my_changedtick -=1
+endfunction
+
+map <LocalLeader>T :call GHC_ShowType(1)<cr>
+map <LocalLeader>t :call GHC_ShowType(0)<cr>
+function! GHC_ShowType(addTypeDecl)
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = ( symb ? '('.name.')' : name )
+ call GHC_HaveTypes()
+ if !has_key(b:ghc_types,name)
+ redraw
+ echo pname "type not known"
+ else
+ redraw
+ for type in split(b:ghc_types[name],' -- ')
+ echo pname "::" type
+ if a:addTypeDecl
+ call append( line(".")-1, pname . " :: " . type )
+ endif
+ endfor
+ endif
+endfunction
+
+" show type of identifier under mouse pointer in balloon
+if has("balloon_eval")
+ set ballooneval
+ set balloondelay=600
+ set balloonexpr=GHC_TypeBalloon()
+ function! GHC_TypeBalloon()
+ if exists("b:current_compiler") && b:current_compiler=="ghc"
+ let [line] = getbufline(v:beval_bufnr,v:beval_lnum)
+ let namsym = Haskell_GetNameSymbol(line,v:beval_col,0)
+ if namsym==[]
+ return ''
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = name " ( symb ? '('.name.')' : name )
+ silent call GHC_HaveTypes()
+ if has("balloon_multiline")
+ return (has_key(b:ghc_types,pname) ? split(b:ghc_types[pname],' -- ') : '')
+ else
+ return (has_key(b:ghc_types,pname) ? b:ghc_types[pname] : '')
+ endif
+ else
+ return ''
+ endif
+ endfunction
+endif
+
+map <LocalLeader>si :call GHC_ShowInfo()<cr>
+function! GHC_ShowInfo()
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : (qual.'.'.unqual)
+ let output = GHC_Info(name)
+ redraw
+ echo output
+endfunction
+
+" fill the type map, unless nothing has changed since the last attempt
+function! GHC_HaveTypes()
+ if b:ghc_types == {} && (b:my_changedtick != b:changedtick)
+ let b:my_changedtick = b:changedtick
+ return GHC_BrowseAll()
+ endif
+endfunction
+
+" update b:ghc_types after successful make
+au QuickFixCmdPost make if GHC_CountErrors()==0 | silent call GHC_BrowseAll() | endif
+
+" count only error entries in quickfix list, ignoring warnings
+function! GHC_CountErrors()
+ let c=0
+ for e in getqflist() | if e.type=='E' && e.text !~ "^[ \n]*Warning:" | let c+=1 | endif | endfor
+ return c
+endfunction
+
+command! GHCReload call GHC_BrowseAll()
+function! GHC_BrowseAll()
+ " let imports = Haskell_GatherImports()
+ " let modules = keys(imports[0]) + keys(imports[1])
+ let imports = {} " no need for them at the moment
+ let current = GHC_NameCurrent()
+ let module = current==[] ? 'Main' : current[0]
+ if GHC_VersionGE([6,8,1])
+ return GHC_BrowseBangStar(module)
+ else
+ return GHC_BrowseMultiple(imports,['*'.module])
+ endif
+endfunction
+
+function! GHC_VersionGE(target)
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>=target[0]))
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+
+function! GHC_NameCurrent()
+ let last = line("$")
+ let l = 1
+ while l<last
+ let ml = matchlist( getline(l), '^module\s*\([^ (]*\)')
+ if ml != []
+ let [_,module;x] = ml
+ return [module]
+ endif
+ let l += 1
+ endwhile
+ redraw
+ echo "cannot find module header for file " . expand("%")
+ return []
+endfunction
+
+function! GHC_BrowseBangStar(module)
+ redraw
+ echo "browsing module " a:module
+ let command = ":browse! *" . a:module
+ let orig_shellredir = &shellredir
+ let &shellredir = ">" " ignore error/warning messages, only output or lack of it
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ let &shellredir = orig_shellredir
+ return GHC_ProcessBang(a:module,output)
+endfunction
+
+function! GHC_BrowseMultiple(imports,modules)
+ redraw
+ echo "browsing modules " a:modules
+ let command = ":browse " . join( a:modules, " \n :browse ")
+ let command = substitute(command,'\(:browse \(\S*\)\)','putStrLn "-- \2" \n \1','g')
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ return GHC_Process(a:imports,output)
+endfunction
+
+function! GHC_Info(what)
+ " call GHC_HaveTypes()
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%"), ":i ". a:what)
+ return output
+endfunction
+
+function! GHC_ProcessBang(module,output)
+ let module = a:module
+ let b = a:output
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\)\(\S*\)\s*::\(.*\)'
+ let commentPat = '^-- \(\S*\)'
+ let definedPat = '^-- defined locally'
+ let importedPat = '^-- imported via \(.*\)'
+ if !(b=~commentPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute( id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse! *<current>, we get both unqualified and qualified ids
+ let qualified = (id =~ '\.') && (id =~ '[A-Z]')
+ let b:ghc_types[id] = type
+ if !qualified
+ for qual in qualifiers
+ let b:ghc_types[qual.'.'.id] = type
+ endfor
+ endif
+ else
+ let mlImported = matchlist( l, importedPat )
+ let mlDefined = matchlist( l, definedPat )
+ if mlImported != []
+ let [_,modules;x] = mlImported
+ let qualifiers = split( modules, ', ' )
+ elseif mlDefined != []
+ let qualifiers = [module]
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+function! GHC_Process(imports,output)
+ let b = a:output
+ let imports = a:imports
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\s*\)\(\S*\)\s*::\(.*\)'
+ let modPat = '^-- \(\S*\)'
+ " add '-- defined locally' and '-- imported via ..'
+ if !(b=~modPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute(id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse *<current>, we get both unqualified and qualified ids
+ if current_module " || has_key(imports[0],module)
+ if has_key(b:ghc_types,id) && !(matchstr(b:ghc_types[id],escape(type,'[].'))==type)
+ let b:ghc_types[id] .= ' -- '.type
+ else
+ let b:ghc_types[id] = type
+ endif
+ endif
+ if 0 " has_key(imports[1],module)
+ let qualid = module.'.'.id
+ let b:ghc_types[qualid] = type
+ endif
+ else
+ let mlMod = matchlist( l, modPat )
+ if mlMod != []
+ let [_,module;x] = mlMod
+ let current_module = module[0]=='*'
+ let module = current_module ? module[1:] : module
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+let s:ghc_templates = ["module _ () where","class _ where","class _ => _ where","instance _ where","instance _ => _ where","type family _","type instance _ = ","data _ = ","newtype _ = ","type _ = "]
+
+" use ghci :browse index for insert mode omnicompletion (CTRL-X CTRL-O)
+function! GHC_CompleteImports(findstart, base)
+ if a:findstart
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ call GHC_HaveTypes()
+ for key in keys(b:ghc_types)
+ if key[0 : l]==a:base
+ let res += [{"word":key,"menu":":: ".b:ghc_types[key],"dup":1}]
+ endif
+ endfor
+ return res
+ endif
+endfunction
+set omnifunc=GHC_CompleteImports
+set completeopt=menu,menuone,longest
+
+map <LocalLeader>ct :call GHC_CreateTagfile()<cr>
+function! GHC_CreateTagfile()
+ redraw
+ echo "creating tags file"
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -e ":ctags" ' . expand("%"))
+ " for ghcs older than 6.6, you would need to call another program
+ " here, such as hasktags
+ echo output
+endfunction
+
+command! -nargs=1 GHCi redraw | echo system(g:ghc. ' ' . b:ghc_staticoptions .' '.expand("%").' -e <f-args>')
+
+" use :make 'not in scope' errors to explicitly list imported ids
+" cursor needs to be on import line, in correctly loadable module
+map <LocalLeader>ie :call GHC_MkImportsExplicit()<cr>
+function! GHC_MkImportsExplicit()
+ let save_cursor = getpos(".")
+ let line = getline('.')
+ let lineno = line('.')
+ let ml = matchlist(line,'^import\(\s*qualified\)\?\s*\([^( ]\+\)')
+ if ml!=[]
+ let [_,q,mod;x] = ml
+ silent make
+ if getqflist()==[]
+ call setline(lineno,'-- '.line)
+ silent write
+ silent make
+ let qflist = getqflist()
+ call setline(lineno,line)
+ silent write
+ let ids = []
+ for d in qflist
+ let ml = matchlist(d.text,'Not in scope: `\([^'']*\)''')
+ if ml!=[]
+ let [_,qid;x] = ml
+ let id = ( qid =~ "^[A-Z]" ? substitute(qid,'.*\.\([^.]*\)$','\1','') : qid )
+ let pid = ( id =~ "[a-zA-Z0-9_']\\+" ? id : '('.id.')' )
+ let ids += [pid]
+ endif
+ endfor
+ call setline(lineno,'import'.q.' '.mod.'('.join(ids,',').')')
+ endif
+ endif
+ call setpos('.', save_cursor)
+endfunction
+
+if GHC_VersionGE([6,8,2])
+ let opts = filter(split(substitute(system(g:ghc . ' -v0 --interactive', ':set'), ' ', '','g'), '\n'), 'v:val =~ "-f"')
+else
+ let opts = ["-fglasgow-exts","-fallow-undecidable-instances","-fallow-overlapping-instances","-fno-monomorphism-restriction","-fno-mono-pat-binds","-fno-cse","-fbang-patterns","-funbox-strict-fields"]
+endif
+
+amenu ]OPTIONS_GHC.- :echo '-'<cr>
+aunmenu ]OPTIONS_GHC
+for o in opts
+ exe 'amenu ]OPTIONS_GHC.'.o.' :call append(0,"{-# OPTIONS_GHC '.o.' #-}")<cr>'
+endfor
+if has("gui_running")
+ map <LocalLeader>opt :popup ]OPTIONS_GHC<cr>
+else
+ map <LocalLeader>opt :emenu ]OPTIONS_GHC.
+endif
+
+amenu ]LANGUAGES_GHC.- :echo '-'<cr>
+aunmenu ]LANGUAGES_GHC
+if GHC_VersionGE([6,8])
+ let ghc_supported_languages = split(system(g:ghc . ' --supported-languages'),'\n')
+ for l in ghc_supported_languages
+ exe 'amenu ]LANGUAGES_GHC.'.l.' :call append(0,"{-# LANGUAGE '.l.' #-}")<cr>'
+ endfor
+ if has("gui_running")
+ map <LocalLeader>lang :popup ]LANGUAGES_GHC<cr>
+ else
+ map <LocalLeader>lang :emenu ]LANGUAGES_GHC.
+ endif
+endif
+ftplugin/haskell.vim [[[1
+149
+
+" todo: allow disabling and undo
+" (Claus Reinke, last modified: 18/07/2008)
+"
+" part of haskell plugins: http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/Vim/
+" please send patches to <claus.reinke@talk21.com>
+
+" try gf on import line, or ctrl-x ctrl-i, or [I, [i, ..
+set include=^import\\s*\\(qualified\\)\\?\\s*
+set includeexpr=substitute(v:fname,'\\.','/','g').'.hs'
+
+
+" find start/extent of name/symbol under cursor;
+" return start, symbolic flag, qualifier, unqualified id
+" (this is used in both haskell_doc.vim and in GHC.vim)
+function! Haskell_GetNameSymbol(line,col,off)
+ let name = "[a-zA-Z0-9_']"
+ let symbol = "[-!#$%&\*\+/<=>\?@\\^|~:.]"
+ "let [line] = getbufline(a:buf,a:lnum)
+ let line = a:line
+
+ " find the beginning of unqualified id or qualified id component
+ let start = (a:col - 1) + a:off
+ if line[start] =~ name
+ let pattern = name
+ elseif line[start] =~ symbol
+ let pattern = symbol
+ else
+ return []
+ endif
+ while start > 0 && line[start - 1] =~ pattern
+ let start -= 1
+ endwhile
+ let id = matchstr(line[start :],pattern.'*')
+ " call confirm(id)
+
+ " expand id to left and right, to get full id
+ let idPos = id[0] == '.' ? start+2 : start+1
+ let posA = match(line,'\<\(\([A-Z]'.name.'*\.\)\+\)\%'.idPos.'c')
+ let start = posA>-1 ? posA+1 : idPos
+ let posB = matchend(line,'\%'.idPos.'c\(\([A-Z]'.name.'*\.\)*\)\('.name.'\+\|'.symbol.'\+\)')
+ let end = posB>-1 ? posB : idPos
+
+ " special case: symbolic ids starting with .
+ if id[0]=='.' && posA==-1
+ let start = idPos-1
+ let end = posB==-1 ? start : end
+ endif
+
+ " classify full id and split into qualifier and unqualified id
+ let fullid = line[ (start>1 ? start-1 : 0) : (end-1) ]
+ let symbolic = fullid[-1:-1] =~ symbol " might also be incomplete qualified id ending in .
+ let qualPos = matchend(fullid, '\([A-Z]'.name.'*\.\)\+')
+ let qualifier = qualPos>-1 ? fullid[ 0 : (qualPos-2) ] : ''
+ let unqualId = qualPos>-1 ? fullid[ qualPos : -1 ] : fullid
+ " call confirm(start.'/'.end.'['.symbolic.']:'.qualifier.' '.unqualId)
+
+ return [start,symbolic,qualifier,unqualId]
+endfunction
+
+function! Haskell_GatherImports()
+ let imports={0:{},1:{}}
+ let i=1
+ while i<=line('$')
+ let res = Haskell_GatherImport(i)
+ if !empty(res)
+ let [i,import] = res
+ let prefixPat = '^import\s*\(qualified\)\?\s\+'
+ let modulePat = '\([A-Z][a-zA-Z0-9_''.]*\)'
+ let asPat = '\(\s\+as\s\+'.modulePat.'\)\?'
+ let hidingPat = '\(\s\+hiding\s*\((.*)\)\)\?'
+ let listPat = '\(\s*\((.*)\)\)\?'
+ let importPat = prefixPat.modulePat.asPat.hidingPat.listPat ".'\s*$'
+
+ let ml = matchlist(import,importPat)
+ if ml!=[]
+ let [_,qualified,module,_,as,_,hiding,_,explicit;x] = ml
+ let what = as=='' ? module : as
+ let hidings = split(hiding[1:-2],',')
+ let explicits = split(explicit[1:-2],',')
+ let empty = {'lines':[],'hiding':hidings,'explicit':[],'modules':[]}
+ let entry = has_key(imports[1],what) ? imports[1][what] : deepcopy(empty)
+ let imports[1][what] = Haskell_MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ if !(qualified=='qualified')
+ let imports[0][what] = Haskell_MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ endif
+ else
+ echoerr "Haskell_GatherImports doesn't understand: ".import
+ endif
+ endif
+ let i+=1
+ endwhile
+ if !has_key(imports[1],'Prelude')
+ let imports[0]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ let imports[1]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ endif
+ return imports
+endfunction
+
+function! Haskell_ListElem(list,elem)
+ for e in a:list | if e==a:elem | return 1 | endif | endfor
+ return 0
+endfunction
+
+function! Haskell_ListIntersect(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)!=-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! Haskell_ListUnion(list1,list2)
+ let l = []
+ for e in a:list2 | if index(a:list1,e)==-1 | let l += [e] | endif | endfor
+ return a:list1 + l
+endfunction
+
+function! Haskell_ListWithout(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)==-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! Haskell_MergeImport(entry,line,hiding,explicit,module)
+ let lines = a:entry['lines'] + [ a:line ]
+ let hiding = a:explicit==[] ? Haskell_ListIntersect(a:entry['hiding'], a:hiding)
+ \ : Haskell_ListWithout(a:entry['hiding'],a:explicit)
+ let explicit = Haskell_ListUnion(a:entry['explicit'], a:explicit)
+ let modules = Haskell_ListUnion(a:entry['modules'], [ a:module ])
+ return {'lines':lines,'hiding':hiding,'explicit':explicit,'modules':modules}
+endfunction
+
+" collect lines belonging to a single import statement;
+" return number of last line and collected import statement
+" (assume opening parenthesis, if any, is on the first line)
+function! Haskell_GatherImport(lineno)
+ let lineno = a:lineno
+ let import = getline(lineno)
+ if !(import=~'^import') | return [] | endif
+ let open = strlen(substitute(import,'[^(]','','g'))
+ let close = strlen(substitute(import,'[^)]','','g'))
+ while open!=close
+ let lineno += 1
+ let linecont = getline(lineno)
+ let open += strlen(substitute(linecont,'[^(]','','g'))
+ let close += strlen(substitute(linecont,'[^)]','','g'))
+ let import .= linecont
+ endwhile
+ return [lineno,import]
+endfunction
+ftplugin/haskell_doc.vim [[[1
+734
+"
+" use haddock docs and index files
+" show documentation, complete & qualify identifiers
+"
+" (Claus Reinke; last modified: 21/10/2008)
+"
+" part of haskell plugins: http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/Vim/
+" please send patches to <claus.reinke@talk21.com>
+
+" :Doc <name> and :IDoc <name> open haddocks for <name> in opera
+"
+" :Doc needs qualified name (default Prelude) and package (default base)
+" :IDoc needs unqualified name, looks up possible links in g:haddock_index
+"
+" :DocIndex populates g:haddock_index from haddock's index files
+" :ExportDocIndex saves g:haddock_index to cache file
+" :ImportDocIndex reloads g:haddock_index from cache file
+"
+" all the following use the haddock index (g:haddock_index)
+"
+" _? opens haddocks for unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _. fully qualifies unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _i add import <module>(<name>) statement for unqualified <name> under cursor,
+" _im add import <module> statement for unqualified <name> under cursor,
+" suggesting alternative full qualifications in popup menu
+" (this currently adds one statement per call, instead of
+" merging into existing import statements, but it's a start;-)
+"
+" CTRL-X CTRL-U (user-defined insert mode completion)
+" suggests completions of unqualified names in popup menu
+
+let s:scriptname = "haskell_doc.vim"
+
+" script parameters
+" g:haddock_browser *mandatory* which browser to call
+" g:haddock_browser_callformat [optional] how to call browser
+" g:haddock_indexfiledir [optional] where to put 'haddock_index.vim'
+" g:haddock_docdir [optional] where to find html docs
+" g:ghc [optional] which ghc to call
+" g:ghc_pkg [optional] which ghc_pkg to call
+
+" been here before?
+if exists("g:haddock_index")
+ finish
+endif
+
+" initialise nested dictionary, to be populated
+" - from haddock index files via :DocIndex
+" - from previous cached version via :ImportDocIndex
+let g:haddock_index = {}
+
+" initialise dictionary, mapping modules with haddocks to their packages,
+" populated via MkHaddockModuleIndex() or HaveModuleIndex()
+let g:haddock_moduleindex = {}
+
+" program to open urls, please set this in your vimrc
+ "examples (for windows):
+ "let g:haddock_browser = "C:/Program Files/Opera/Opera.exe"
+ "let g:haddock_browser = "C:/Program Files/Mozilla Firefox/firefox.exe"
+ "let g:haddock_browser = "C:/Program Files/Internet Explorer/IEXPLORE.exe"
+if !exists("g:haddock_browser")
+ echoerr s:scriptname." WARNING: please set g:haddock_browser!"
+endif
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname." can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+
+if (!exists("g:ghc_pkg") || !executable(g:ghc_pkg))
+ let g:ghc_pkg = substitute(g:ghc,'\(.*\)ghc','\1ghc-pkg','')
+endif
+
+if exists("g:haddock_docdir") && isdirectory(g:haddock_docdir)
+ let s:docdir = g:haddock_docdir
+elseif executable(g:ghc_pkg)
+" try to figure out location of html docs
+" first choice: where the base docs are
+ let field = substitute(system(g:ghc_pkg . ' field base haddock-html'),'\n','','')
+ let field = substitute(field,'haddock-html: \(.*\)libraries.base','\1','')
+ let field = substitute(field,'\\','/','g')
+ let alternate = substitute(field,'html','doc/html','')
+ if isdirectory(field)
+ let s:docdir = field
+ elseif isdirectory(alternate)
+ let s:docdir = alternate
+ endif
+else
+ echoerr s:scriptname." can't find ghc-pkg (set g:ghc_pkg ?)."
+endif
+
+" second choice: try some known suspects for windows/unix
+if !exists('s:docdir') || !isdirectory(s:docdir)
+ let s:ghc_libdir = substitute(system(g:ghc . ' --print-libdir'),'\n','','')
+ let location1a = s:ghc_libdir . '/doc/html/'
+ let location1b = s:ghc_libdir . '/doc/'
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let location2 = '/usr/share/doc/ghc-' . s:ghc_version . '/html/'
+ if isdirectory(location1a)
+ let s:docdir = location1a
+ elseif isdirectory(location1b)
+ let s:docdir = location1b
+ elseif isdirectory(location2)
+ let s:docdir = location2
+ else " give up
+ echoerr s:scriptname." can't find locaton of html documentation (set g:haddock_docdir)."
+ finish
+ endif
+endif
+
+" todo: can we turn s:docdir into a list of paths, and
+" include docs for third-party libs as well?
+
+let s:libraries = s:docdir . 'libraries/'
+let s:guide = s:docdir . 'users_guide/'
+let s:index = 'index.html'
+if exists("g:haddock_indexfiledir") && filewritable(g:haddock_indexfiledir)
+ let s:haddock_indexfiledir = g:haddock_indexfiledir
+elseif filewritable(s:libraries)
+ let s:haddock_indexfiledir = s:libraries
+elseif filewritable($HOME)
+ let s:haddock_indexfiledir = $HOME.'/'
+else "give up
+ echoerr s:scriptname." can't locate index file. please set g:haddock_indexfiledir"
+ finish
+endif
+let s:haddock_indexfile = s:haddock_indexfiledir . 'haddock_index.vim'
+
+" different browser setups require different call formats;
+" you might want to call the browser synchronously or
+" asynchronously, and the latter is os-dependent;
+"
+" by default, the browser is started in the background when on
+" windows or if running in a gui, and in the foreground otherwise
+" (eg, console-mode for remote sessions, with text-mode browsers).
+"
+" you can override these defaults in your vimrc, via a format
+" string including 2 %s parameters (the first being the browser
+" to call, the second being the url).
+if !exists("g:haddock_browser_callformat")
+ if has("win32") || has("win64")
+ let g:haddock_browser_callformat = 'start %s "file://%s"'
+ else
+ if has("gui_running")
+ let g:haddock_browser_callformat = '%s file://%s '.printf(&shellredir,'/dev/null').' &'
+ else
+ let g:haddock_browser_callformat = '%s file://%s'
+ endif
+ endif
+endif
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+command! DocSettings call DocSettings()
+function! DocSettings()
+ for v in ["g:haddock_browser","g:haddock_browser_callformat","g:haddock_docdir","g:haddock_indexfiledir","s:ghc_libdir","s:ghc_version","s:docdir","s:libraries","s:guide","s:haddock_indexfile"]
+ if exists(v)
+ echo v '=' eval(v)
+ else
+ echo v '='
+ endif
+ endfor
+endfunction
+
+function! DocBrowser(url)
+ "echomsg "DocBrowser(".url.")"
+ if (!exists("g:haddock_browser") || !executable(g:haddock_browser))
+ echoerr s:scriptname." can't find documentation browser. please set g:haddock_browser"
+ return
+ endif
+ " start browser to open url, according to specified format
+ silent exe '!'.printf(g:haddock_browser_callformat,g:haddock_browser,escape(a:url,'#%'))
+endfunction
+
+"usage examples:
+" :Doc length
+" :Doc Control.Monad.when
+" :Doc Data.List.
+" :Doc Control.Monad.State.runState mtl
+" :Doc -top
+" :Doc -libs
+" :Doc -guide
+command! -nargs=+ Doc call Doc('v',<f-args>)
+command! -nargs=+ Doct call Doc('t',<f-args>)
+
+function! Doc(kind,qualname,...)
+ let suffix = '.html'
+ let relative = '#'.a:kind.'%3A'
+
+ if a:qualname=="-top"
+ call DocBrowser(s:docdir . s:index)
+ return
+ elseif a:qualname=="-libs"
+ call DocBrowser(s:libraries . s:index)
+ return
+ elseif a:qualname=="-guide"
+ call DocBrowser(s:guide . s:index)
+ return
+ endif
+
+ if a:0==0 " no package specified
+ let package = 'base/'
+ else
+ let package = a:1 . '/'
+ endif
+
+ if match(a:qualname,'\.')==-1 " unqualified name
+ let [qual,name] = [['Prelude'],a:qualname]
+ let file = join(qual,'-') . suffix . relative . name
+ elseif a:qualname[-1:]=='.' " module qualifier only
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-1
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix
+ else " qualified name
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-2
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix . relative . name
+ endif
+
+" let path = s:libraries . package . file
+ let path = file
+ call DocBrowser(path)
+endfunction
+
+" TODO: add commandline completion for :IDoc
+" indexed variant of Doc, looking up links in g:haddock_index
+" usage:
+" 1. :IDoc length
+" 2. click on one of the choices, or select by number (starting from 0)
+command! -nargs=+ IDoc call IDoc(<f-args>)
+function! IDoc(name,...)
+ let choices = HaddockIndexLookup(a:name)
+ if choices=={} | return | endif
+ if a:0==0
+ let keylist = map(deepcopy(keys(choices)),'substitute(v:val,"\\[.\\]","","")')
+ let choice = inputlist(keylist)
+ else
+ let choice = a:1
+ endif
+
+" let path = s:libraries . values(choices)[choice]
+ let path = values(choices)[choice] " assumes same order for keys/values..
+ call DocBrowser(path)
+endfunction
+
+let s:flagref = s:guide . 'flag-reference.html'
+if filereadable(s:flagref)
+ " extract the generated fragment ids for the
+ " flag reference sections
+ let s:headerPat = '.\{-}<h3 class="title"><a name="\([^"]*\)"><\/a>\([^<]*\)<\/h3>\(.*\)'
+ let s:flagheaders = []
+ let s:flagheaderids = {}
+ let s:contents = join(readfile(s:flagref))
+ let s:ml = matchlist(s:contents,s:headerPat)
+ while s:ml!=[]
+ let [_,s:id,s:title,s:r;s:x] = s:ml
+ let s:flagheaders = add(s:flagheaders, s:title)
+ let s:flagheaderids[s:title] = s:id
+ let s:ml = matchlist(s:r,s:headerPat)
+ endwhile
+ command! -nargs=1 -complete=customlist,CompleteFlagHeaders
+ \ FlagReference call FlagReference(<f-args>)
+ function! FlagReference(section)
+ let relativeUrl = a:section==""||!exists("s:flagheaderids['".a:section."']") ?
+ \ "" : "#".s:flagheaderids[a:section]
+ call DocBrowser(s:flagref.relativeUrl)
+ endfunction
+ function! CompleteFlagHeaders(al,cl,cp)
+ let s:choices = s:flagheaders
+ return CompleteAux(a:al,a:cl,a:cp)
+ endfunction
+endif
+
+command! -nargs=1 -complete=customlist,CompleteHaddockModules MDoc call MDoc(<f-args>)
+function! MDoc(module)
+ let suffix = '.html'
+ call HaveModuleIndex()
+ if !has_key(g:haddock_moduleindex,a:module)
+ echoerr a:module 'not found in haddock module index'
+ return
+ endif
+ let package = g:haddock_moduleindex[a:module]['package']
+ let file = substitute(a:module,'\.','-','g') . suffix
+" let path = s:libraries . package . '/' . file
+ let path = g:haddock_moduleindex[a:module]['html']
+ call DocBrowser(path)
+endfunction
+
+function! CompleteHaddockModules(al,cl,cp)
+ call HaveModuleIndex()
+ let s:choices = keys(g:haddock_moduleindex)
+ return CompleteAux(a:al,a:cl,a:cp)
+endfunction
+
+" create a dictionary g:haddock_index, containing the haddoc index
+command! DocIndex call DocIndex()
+function! DocIndex()
+ let files = split(globpath(s:libraries,'doc-index*.html'),'\n')
+ "let files = [s:libraries.'doc-index-33.html']
+ let g:haddock_index = {}
+ call ProcessHaddockIndexes2(s:libraries,files)
+ if GHC_VersionGE([6,8,2])
+ " TODO: escape * when?
+ let s:addon_libraries = split(system(g:ghc_pkg . ' field * haddock-html'),'\n')
+ for addon in s:addon_libraries
+ let ml = matchlist(addon,'haddock-html: \("\)\?\(file:///\)\?\([^"]*\)\("\)\?')
+ if ml!=[]
+ let [_,quote,file,addon_path;x] = ml
+ let addon_path = substitute(addon_path,'\(\\\\\|\\\)','/','g')
+ let addon_files = split(globpath(addon_path,'doc-index*.html'),'\n')
+ call ProcessHaddockIndexes2(addon_path,addon_files)
+ endif
+ endfor
+ endif
+ return 1
+endfunction
+
+function! ProcessHaddockIndexes(location,files)
+ let entryPat= '.\{-}"indexentry"[^>]*>\([^<]*\)<\(\%([^=]\{-}TD CLASS="\%(indexentry\)\@!.\{-}</TD\)*\)[^=]\{-}\(\%(="indexentry\|TABLE\).*\)'
+ let linkPat = '.\{-}HREF="\([^"]*\)".>\([^<]*\)<\(.*\)'
+
+ redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let contents = join(readfile(f))
+ let ml = matchlist(contents,entryPat)
+ while ml!=[]
+ let [_,entry,links,r;x] = ml
+ "echo entry links
+ let ml2 = matchlist(links,linkPat)
+ let link = {}
+ while ml2!=[]
+ let [_,l,m,links;x] = ml2
+ "echo l m
+ let link[m] = a:location . '/' . l
+ let ml2 = matchlist(links,linkPat)
+ endwhile
+ let g:haddock_index[DeHTML(entry)] = deepcopy(link)
+ "echo entry g:haddock_index[entry]
+ let ml = matchlist(r,entryPat)
+ endwhile
+ endfor
+endfunction
+
+" concatenating all lines is too slow for a big file, process lines directly
+function! ProcessHaddockIndexes2(location,files)
+ let entryPat= '^>\([^<]*\)</'
+ let linkPat = '.\{-}A HREF="\([^"]*\)"'
+ let kindPat = '#\(.\)'
+
+ redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let isEntry = 0
+ let isLink = ''
+ let link = {}
+ let entry = ''
+ for line in readfile(f)
+ if line=~'CLASS="indexentry'
+ if (link!={}) && (entry!='')
+ let g:haddock_index[DeHTML(entry)] = deepcopy(link)
+ let link = {}
+ let entry = ''
+ endif
+ let isEntry=1
+ continue
+ endif
+ if isEntry==1
+ let ml = matchlist(line,entryPat)
+ if ml!=[] | let [_,entry;x] = ml | let isEntry=0 | continue | endif
+ endif
+ if entry!=''
+ let ml = matchlist(line,linkPat)
+ if ml!=[] | let [_,isLink;x]=ml | continue | endif
+ endif
+ if isLink!=''
+ let ml = matchlist(line,entryPat)
+ if ml!=[]
+ let [_,module;x] = ml
+ let [_,kind;x] = matchlist(isLink,kindPat)
+ let last = a:location[strlen(a:location)-1]
+ let link[module."[".kind."]"] = a:location . (last=='/'?'':'/') . isLink
+ let isLink=''
+ continue
+ endif
+ endif
+ endfor
+ if link!={} | let g:haddock_index[DeHTML(entry)] = deepcopy(link) | endif
+ endfor
+endfunction
+
+command! ExportDocIndex call ExportDocIndex()
+function! ExportDocIndex()
+ call HaveIndex()
+ let entries = []
+ for key in keys(g:haddock_index)
+ let entries += [key,string(g:haddock_index[key])]
+ endfor
+ call writefile(entries,s:haddock_indexfile)
+ redir end
+endfunction
+
+command! ImportDocIndex call ImportDocIndex()
+function! ImportDocIndex()
+ if filereadable(s:haddock_indexfile)
+ let lines = readfile(s:haddock_indexfile)
+ let i=0
+ while i<len(lines)
+ let [key,dict] = [lines[i],lines[i+1]]
+ sandbox let g:haddock_index[key] = eval(dict)
+ let i+=2
+ endwhile
+ return 1
+ else
+ return 0
+ endif
+endfunction
+
+function! HaveIndex()
+ return (g:haddock_index!={} || ImportDocIndex() || DocIndex() )
+endfunction
+
+function! MkHaddockModuleIndex()
+ let g:haddock_moduleindex = {}
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let dict = g:haddock_index[key]
+ for module in keys(dict)
+ let html = dict[module]
+ let ml = matchlist(html,'libraries/\([^\/]*\)\/')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ let ml = matchlist(html,'/\([^\/]*\)\/html/[A-Z]')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ endfor
+ endfor
+endfunction
+
+function! HaveModuleIndex()
+ return (g:haddock_moduleindex!={} || MkHaddockModuleIndex() )
+endfunction
+
+" decode HTML symbol encodings (are these all we need?)
+function! DeHTML(entry)
+ let res = a:entry
+ let decode = { '&lt;': '<', '&gt;': '>', '&amp;': '\\&' }
+ for enc in keys(decode)
+ exe 'let res = substitute(res,"'.enc.'","'.decode[enc].'","g")'
+ endfor
+ return res
+endfunction
+
+" find haddocks for word under cursor
+" also lists possible definition sites
+map <LocalLeader>? :call Haddock()<cr>
+function! Haddock()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let imports = Haskell_GatherImports()
+ let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let name = unqual
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ let keys = ((qual=='')||(asm==[])||(qual==asm[0])) ? keys(dict)
+ \ : Haskell_ListIntersect(keylist,asm)
+ if (qual!='') && (asm!=[]) && (qual==asm[0])
+ for key in keys
+ if key==qual
+ " call DocBrowser(s:libraries . dict[key])
+ call DocBrowser(dict[key])
+ endif
+ endfor
+ elseif has("gui_running")
+ let i=0
+ for key in keys
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call IDoc("'.escape(name,'|').'",'.i.')<cr>'
+ let i+=1
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keys
+ let key = input('browse docs for '.name.' in: ','','customlist,CompleteAux')
+ if key!=''
+ " call DocBrowser(s:libraries . dict[key])
+ call DocBrowser(dict[key])
+ endif
+ endif
+endfunction
+
+" used to pass on choices to CompleteAux
+let s:choices=[]
+
+" if there's no gui, use commandline completion instead of :popup
+" completion function CompleteAux suggests completions for a:al, wrt to s:choices
+function! CompleteAux(al,cl,cp)
+ "echomsg '|'.a:al.'|'.a:cl.'|'.a:cp.'|'
+ let res = []
+ let l = len(a:al)-1
+ for r in s:choices
+ if l==-1 || r[0 : l]==a:al
+ let res += [r]
+ endif
+ endfor
+ return res
+endfunction
+
+" CamelCase shorthand matching:
+" favour upper-case letters and module qualifier separators (.) for disambiguation
+function! CamelCase(shorthand,string)
+ let s1 = a:shorthand
+ let s2 = a:string
+ let notFirst = 0 " don't elide before first pattern letter
+ while ((s1!="")&&(s2!=""))
+ let head1 = s1[0]
+ let head2 = s2[0]
+ let elide = notFirst && ( ((head1=~'[A-Z]') && (head2!~'[A-Z.]'))
+ \ ||((head1=='.') && (head2!='.')) )
+ if elide
+ let s2=s2[1:]
+ elseif (head1==head2)
+ let s1=s1[1:]
+ let s2=s2[1:]
+ else
+ return 0
+ endif
+ let notFirst = (head1!='.')||(head2!='.') " treat separators as new beginnings
+ endwhile
+ return (s1=="")
+endfunction
+
+" use haddock name index for insert mode completion (CTRL-X CTRL-U)
+function! CompleteHaddock(findstart, base)
+ if a:findstart
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ let qual = a:base =~ '^[A-Z][a-zA-Z0-9_'']*\(\.[A-Z][a-zA-Z0-9_'']*\)*\(\.[a-zA-Z0-9_'']*\)\?$'
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if (key[0 : l]==a:base)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if word[0 : l]==a:base
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ if res==[] " no prefix matches, try CamelCase shortcuts
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if CamelCase(a:base,key)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if CamelCase(a:base,word)
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ endif
+ return res
+ endif
+endfunction
+set completefunc=CompleteHaddock
+set completeopt=menu,menuone,longest
+
+" fully qualify an unqualified name
+map <LocalLeader>. :call Qualify()<cr>
+function! Qualify()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ if qual!='' " TODO: should we support re-qualification?
+ redraw
+ echo 'already qualified'
+ return 0
+ endif
+ let name = unqual
+ let line = line('.')
+ let prefix = (start<=1 ? '' : getline(line)[0:start-2] )
+ let i=0
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ let imports = Haskell_GatherImports()
+ for qualifiedImport in keys(imports[1])
+ let c=0
+ for module in imports[1][qualifiedImport]['modules']
+ if Haskell_ListElem(keylist,module) | let c+=1 | endif
+ endfor
+ if c>0 | let keylist=[qualifiedImport]+keylist | endif
+ endfor
+ "let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ if has("gui_running")
+ for key in keylist
+ let lhs=escape(prefix.name,'/.|\')
+ let rhs=escape(prefix.key.'.'.name,'/&|\')
+ exe 'amenu ]Popup.'.escape(key,'\.').' :'.line.'s/'.lhs.'/'.rhs.'/<cr>:noh<cr>'
+ let i+=1
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keylist
+ let key = input('qualify '.name.' with: ','','customlist,CompleteAux')
+ if key!=''
+ let lhs=escape(prefix.name,'/.\')
+ let rhs=escape(prefix.key.'.'.name,'/&\')
+ exe line.'s/'.lhs.'/'.rhs.'/'
+ noh
+ endif
+ endif
+endfunction
+
+" create (qualified) import for a (qualified) name
+map <LocalLeader>i :call Import(0,0)<cr>
+map <LocalLeader>im :call Import(1,0)<cr>
+map <LocalLeader>iq :call Import(0,1)<cr>
+map <LocalLeader>iqm :call Import(1,1)<cr>
+function! Import(module,qualified)
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = Haskell_GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = unqual
+ let pname = ( symb ? '('.name.')' : name )
+ let importlist = a:module ? '' : '('.pname.')'
+ let qualified = a:qualified ? 'qualified ' : ''
+
+ if qual!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.qual.importlist.''')'
+ return
+ endif
+
+ let line = line('.')
+ let prefix = getline(line)[0:start-1]
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ if has("gui_running")
+ for key in keylist
+ " exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search("\\%1c\\(import\\\\|module\\\\|{-# OPTIONS\\)","nb"),"import '.key.importlist.'")<cr>'
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search(''\%1c\(\<import\>\\|\<module\>\\|{-# OPTIONS\\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.escape(importlist,'|').''')<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keylist
+ let key = input('import '.name.' from: ','','customlist,CompleteAux')
+ if key!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.importlist.''')'
+ endif
+ endif
+endfunction
+
+function! HaddockIndexLookup(name)
+ call HaveIndex()
+ if !has_key(g:haddock_index,a:name)
+ echoerr a:name 'not found in haddock index'
+ return {}
+ endif
+ return g:haddock_index[a:name]
+endfunction
+
+" copied from ghc.vim :-( should we move everything to using autoload instead?
+" we query the ghc version here, as we don't otherwise need it..
+function! GHC_VersionGE(target)
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>=target[0]))
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+ftplugin/haskell_hpaste.vim [[[1
+75
+" rudimentary hpaste support for vim
+" (using netrw for reading, wget for posting/annotating)
+"
+" claus reinke, last modified: 19/08/2007
+"
+" part of haskell plugins: http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/Vim/
+
+" unless wget is in your PATH, you need to set g:wget
+" before loading this script. windows users are out of
+" luck, unless they have wget installed (such as the
+" cygwin one looked for here), or adapt this script to
+" whatever alternative they have at hand (perhaps using
+" vim's perl/python bindings?)
+if !exists("g:wget")
+ if executable("wget")
+ let g:wget = "!wget -q"
+ else
+ let g:wget = "!c:\\cygwin\\bin\\wget -q"
+ endif
+endif
+
+" read (recent) hpaste files
+" show index in new buffer, where ,r will open current entry
+" and ,p will annotate current entry with current buffer
+command! HpasteIndex call HpasteIndex()
+function! HpasteIndex()
+ new
+ read http://hpaste.org
+ %s/\_$\_.//g
+ %s/<tr[^>]*>//g
+ %s/<\/tr>/ /g
+ g/<\/table>/d
+ g/DOCTYPE/d
+ %s/<td><a href="\/\([0-9]*\)">view<\/a><\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td>/\1 \2 (\3) "\4" \5/
+ map <buffer> ,r 0ye:noh<cr>:call HpasteEditEntry('"')<cr>
+endfunction
+
+" load an existing entry for editing
+command! -nargs=1 HpasteEditEntry call HpasteEditEntry(<f-args>)
+function! HpasteEditEntry(entry)
+ exe 'edit! http://hpaste.org/'.a:entry.'/0/plain'
+ exe 'map <buffer> ,p :call HpasteAnnotate('''.a:entry.''')<cr>'
+endfunction
+
+" annotate existing entry (only to be called via ,p in HpasteIndex)
+function! HpasteAnnotate(entry)
+ let nick = input("nick? ")
+ let title = input("title? ")
+ if nick=='' || title==''
+ echo "nick or title missing. aborting annotation"
+ return
+ endif
+ call HpastePost('annotate/'.a:entry,nick,title)
+endfunction
+
+" post new hpaste entry
+" using 'wget --post-data' and url-encoded content
+command! HpastePostNew call HpastePost('new',<args>)
+function! HpastePost(mode,nick,title,...)
+ let lines = getbufline("%",1,"$")
+ let pat = '\([^[:alnum:]]\)'
+ let code = '\=printf("%%%02X",char2nr(submatch(1)))'
+ let lines = map(lines,'substitute(v:val."\r\n",'''.pat.''','''.code.''',''g'')')
+
+ let url = 'http://hpaste.org/' . a:mode
+ let nick = substitute(a:nick,pat,code,'g')
+ let title = substitute(a:title,pat,code,'g')
+ if a:0==0
+ let announce = 'false'
+ else
+ let announce = a:1
+ endif
+ let cmd = g:wget.' --post-data="content='.join(lines,'').'&nick='.nick.'&title='.title.'&announce='.announce.'" '.url
+ exe escape(cmd,'%')
+endfunction
+doc/haskellmode.txt [[[1
+434
+*haskellmode.txt* Haskell Mode Plugins 18/07/2008
+
+Authors:
+ Claus Reinke <claus.reinke@talk21.com> ~
+
+Homepage:
+ http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/Vim/
+
+CONTENTS *haskellmode*
+
+ 1. Overview |haskellmode-overview|
+ 1.1 Runtime Requirements |haskellmode-requirements|
+ 1.2 Quick Reference |haskellmode-quickref|
+ 2. Settings |haskellmode-settings|
+ 2.1 GHC and web browser |haskellmode-settings-main|
+ 2.2 Fine tuning - more configuration options |haskellmode-settings-fine|
+ 3. GHC Compiler Integration |haskellmode-compiler|
+ 4. Haddock Integration |haskellmode-haddock|
+ 4.1 Indexing |haskellmode-indexing|
+ 4.2 Lookup |haskellmode-lookup|
+ 4.3 Editing |haskellmode-editing|
+ 5. Hpaste Integration |haskellmode-hpaste|
+ 6. Additional Resources |haskellmode-resources|
+
+==============================================================================
+ *haskellmode-overview*
+1. Overview ~
+
+ The Haskell mode plugins provide advanced support for Haskell development
+ using GHC/GHCi on Windows and Unix-like systems. The functionality is
+ based on Haddock-generated library indices, on GHCi's interactive
+ commands, or on simply activating (some of) Vim's built-in program editing
+ support in Haskell-relevant fashion. These plugins live side-by-side with
+ the pre-defined |syntax-highlighting| support for |haskell| sources, and
+ any other Haskell-related plugins you might want to install (see
+ |haskellmode-resources|).
+
+ The Haskell mode plugins consist of three filetype plugins (haskell.vim,
+ haskell_doc.vim, haskell_hpaste.vim), which by Vim's |filetype| detection
+ mechanism will be auto-loaded whenever files with the extension '.hs' are
+ opened, and one compiler plugin (ghc.vim) which you will need to load from
+ your vimrc file (see |haskellmode-settings|).
+
+
+ *haskellmode-requirements*
+1.1 Runtime Requirements ~
+
+ The plugins require a recent installation of GHC/GHCi. The functionality
+ derived from Haddock-generated library indices also requires a local
+ installation of the Haddock documentation for GHC's libraries (if there is
+ no documentation package for your system, you can download a tar-ball from
+ haskell.org), as well as an HTML browser (see |haddock_browser|). If you
+ want to use the experimental hpaste interface, you will also need Wget.
+
+ * GHC/GHCi ~
+ Provides core functionality. http://www.haskell.org/ghc
+
+ * HTML library documentation files and indices generated by Haddock ~
+ These usually come with your GHC installation, possibly as a separate
+ package. If you cannot get them this way, you can download a tar-ball
+ from http://www.haskell.org/ghc/docs/latest/
+
+ * HTML browser with basic CSS support ~
+ For browsing Haddock docs.
+
+ * Wget ~
+ For interfacing with http://hpaste.org.
+
+ Wget is widely available for modern Unix-like operating systems. Several
+ ports also exist for Windows, including:
+
+ - Official GNU Wget (natively compiled for Win32)
+ http://www.gnu.org/software/wget/#downloading
+
+ - UnxUtils Wget (natively compiled for Win32, bundled with other ported
+ Unix utilities)
+ http://sourceforge.net/projects/unxutils/
+
+ - Cygwin Wget (emulated POSIX in Win32, must be run under Cygwin)
+ http://cygwin.com/packages/wget/
+
+ *haskellmode-quickref*
+1.2 Quick Reference ~
+
+|:make| load into GHCi, show errors (|quickfix| |:copen|)
+|_ct| create |tags| file
+|_si| show info for id under cursor
+|_t| show type for id under cursor
+|_T| insert type declaration for id under cursor
+|balloon| show type for id under mouse pointer
+|_?| browse Haddock entry for id under cursor
+|:IDoc| {identifier} browse Haddock entry for unqualified {identifier}
+|:MDoc| {module} browse Haddock entry for {module}
+|:FlagReference| {s} browse Users Guide Flag Reference for section {s}
+|_.| qualify unqualified id under cursor
+|_i| add 'import <module>(<identifier>)' for id under cursor
+|_im| add 'import <module>' for id under cursor
+|_iq| add 'import qualified <module>(<identifier>)' for id under cursor
+|_iqm| add 'import qualified <module>' for id under cursor
+|_ie| make imports explit for import statement under cursor
+|_opt| add OPTIONS_GHC pragma
+|_lang| add LANGUAGE pragma
+|i_CTRL-X_CTRL-O| insert-mode completion based on imported ids (|haskellmode-XO|)
+|i_CTRL-X_CTRL-U| insert-mode completion based on documented ids (|haskellmode-XU|)
+|i_CTRL-N| insert-mode completion based on imported sources
+|:GHCi|{command/expr} run GHCi command/expr in current module
+
+|:GHCStaticOptions| edit static GHC options for this buffer
+|:DocSettings| show current Haddock-files-related plugin settings
+|:DocIndex| populate Haddock index
+|:ExportDocIndex| cache current Haddock index to a file
+|:HpasteIndex| Read index of most recent entries from hpaste.org
+|:HpastePostNew| Submit current buffer as a new hpaste
+
+
+==============================================================================
+ *haskellmode-settings*
+2. Settings ~
+
+ The plugins try to find their dependencies in standard locations, so if
+ you're lucky, you will only need to set |compiler| to ghc, and configure
+ the location of your favourite web browser. Given the variety of things to
+ guess, however, some dependencies might not be found correctly, or the
+ defaults might not be to your liking, in which case you can do some more
+ fine tuning. All of this configuration should happen in your |vimrc|.
+
+ *haskellmode-settings-main*
+2.1 GHC and web browser ~
+
+ *compiler-ghc* *ghc-compiler*
+ To use the features provided by the GHC |compiler| plugin, use the
+ following |autocommand| in your vimrc:
+>
+ au BufEnter *.hs compiler ghc
+<
+ *g:ghc*
+ If the compiler plugin can't locate your GHC binary, or if you have
+ several versions of GHC installed and have a preference as to which binary
+ is used, set |g:ghc|:
+>
+ :let g:ghc="/usr/bin/ghc-6.6.1"
+<
+
+ *:GHCStaticOptions*
+:GHCStaticOptions Edit the static GHC options for the current buffer.
+ Useful for adding hidden packages (-package ghc).
+
+ *g:haddock_browser*
+ The preferred HTML browser for viewing Haddock documentation can be set as
+ follows:
+>
+ :let g:haddock_browser="/usr/bin/firefox"
+<
+
+ *haskellmode-settings-fine*
+2.2 Fine tuning - more configuration options ~
+
+ Most of the fine tuning is likely to happen for the haskellmode_doc.vim
+ plugin, so you can check the current settings for this plugin via the
+ command |:DocSettings|. If all the settings reported there are to your
+ liking, you probably won't need to do any fine tuning.
+
+ *g:haddock_browser_callformat*
+ By default, the web browser|g:haddock_browser| will be started
+ asynchronously (in the background) on Windows or when vim is running in a
+ GUI, and synchronously (in the foreground) otherwise. These settings seem
+ to work fine if you are using a console mode browser (eg, when editing in
+ a remote session), or if you are starting a GUI browser that will launch
+ itself in the background. But if these settings do not work for you, you
+ can change the default browser launching behavior.
+
+ This is controlled by |g:haddock_browser_callformat|. It specifies a
+ format string which uses two '%s' parameters, the first representing the
+ path of the browser to launch, and the second is the documentation URL
+ (minus the protocol specifier, i.e. file://) passed to it by the Haddock
+ plugin. For instance, to launch a GUI browser on Unix-like systems and
+ force it to the background (see also |shellredir|):
+>
+ :let g:haddock_browser_callformat = '%s file://%s '.printf(&shellredir,'/dev/null').' &'
+<
+ *g:haddock_docdir*
+ Your system's installed Haddock documentation for GHC and its libraries
+ should be automatically detected. If the plugin can't locate them, you
+ must point |g:haddock_docdir| to the path containing the master index.html
+ file for the subdirectories 'libraries', 'Cabal', 'users_guide', etc.:
+>
+ :let g:haddock_docdir="/usr/local/share/doc/ghc/html/"
+<
+ *g:haddock_indexfiledir*
+ The information gathered from Haddock's index files will be stored in a
+ file called 'haddock_index.vim' in a directory derived from the Haddock
+ location, or in $HOME. To configure another directory for the index file,
+ use:
+>
+ :let g:haddock_indexfiledir="~/.vim"
+<
+ *g:wget*
+ If you also want to try the experimental hpaste functionality, you might
+ you need to set |g:wget| before the |hpaste| plugin is loaded (unless wget
+ is in your PATH):
+>
+ :let g:wget="C:\Program Files\wget\wget.exe"
+<
+
+ Finally, the mappings actually use|<LocalLeader>|behind the scenes, so if
+ you have to, you can redefine|maplocalleader|to something other than '_'.
+ Just remember that the docs still refer to mappings starting with '_', to
+ avoid confusing the majority of users!-)
+
+==============================================================================
+ *haskellmode-compiler* *ghc*
+3. GHC Compiler Integration ~
+
+ The GHC |compiler| plugin sets the basic |errorformat| and |makeprg| to
+ enable |quickfix| mode using GHCi, and provides functionality for show
+ info (|_si|), show type (|_t| or mouse |balloon|), add type declaration
+ (|_T|), create tag file (|_ct|), and insert-mode completion
+ (|i_CTRL-X_CTRL-O|) based on GHCi browsing of the current and imported
+ modules.
+
+ To avoid frequent calls to GHCi, type information is cached in Vim. The
+ cache will be populated the first time a command depends on it, and will
+ be refreshed every time a |:make| goes through without generating errors
+ (if the |:make| does not succeed, the old types will remain available in
+ Vim). You can also unconditionally force reloading of type info using
+ |:GHCReload| (if GHCi cannot load your file, the type info will be empty).
+
+
+ In addition to the standard|quickfix| commands, the GHC compiler plugin
+ provides:
+
+ *:GHCReload*
+:GHCReload Reload modules and unconditionally refresh cache of
+ type info. Usually, |:make| is prefered, as that will
+ refresh the cache only if GHCi reports no errors, and
+ show the errors otherwise.
+
+ *:GHCi*
+:GHCi {command/expr} Run GHCi commands/expressions in the current module.
+
+ *_ct*
+_ct Create |tags| file for the current Haskell source
+ file. This uses GHCi's :ctags command, so it will work
+ recursively, but will only list tags for exported
+ entities.
+
+ *_opt*
+_opt Shows a menu of frequently used GHC compiler options
+ (selecting an entry adds the option as a pragma to the
+ start of the file). Uses popup menu (GUI) or :emenu
+ and command-line completion (CLI).
+
+ *_lang*
+_lang Shows a menu of the LANGUAGE options supported by GHC
+ (selecting an entry adds the language as a pragma to
+ the start of the file). Uses popup menu (GUI) or
+ :emenu and command-line completion (CLI).
+
+ *_si*
+_si Show extended information for the name under the
+ cursor. Uses GHCi's :info command.
+
+ *_t*
+_t Show type for the name under the cursor. Uses cached
+ info from GHCi's :browse command.
+
+ *_T*
+_T Insert type declaration for the name under the cursor.
+ Uses cached info from GHCi's :browse command.
+
+ *haskellmode-XO* *haskellmode-omni-completion*
+CTRL-X CTRL-O Standard insert-mode omni-completion based on the
+ cached type info from GHCi browsing current and
+ imported modules. Only names from the current and from
+ imported modules are included (the completion menu
+ also show the type of each identifier).
+
+==============================================================================
+ *haskellmode-haddock* *haddock*
+4. Haddock Integration ~
+
+ Haskell mode integrates with Haddock-generated HTML documentation,
+ providing features such as navigating to the Haddock entry for the
+ identifier under the cursor (|_?|), completion for the identifier under
+ the cursor (|i_CTRL-X_CTRL-U|), and adding import statements (|_i| |_im|
+ |_iq| |_iqm|) or module qualifier (|_.|) for the identifier under the
+ cursor.
+
+ These commands operate on an internal Haddock index built from the
+ platform's installed Haddock documentation for GHC's libraries. Since
+ populating this index takes several seconds, it should be stored as a
+ file called 'haddock_index.vim' in the directory specified by
+ |g:haddock_indexfiledir|.
+
+ Some commands present a different interface (popup menu or command-line
+ completion) according to whether the current Vim instance is graphical or
+ console-based (actually: whether or not the GUI is running). Such
+ differences are marked below with the annotations (GUI) and (CLI),
+ respectively.
+
+ |:DocSettings| shows the settings for this plugin. If you are happy with
+ them, you can call |:ExportDocIndex| to populate and write out the
+ documentation index (should be called once for every new version of GHC).
+
+ *:DocSettings*
+:DocSettings Show current Haddock-files-related plugin settings.
+
+
+ *haskellmode-indexing*
+4.1 Indexing ~
+
+ *:DocIndex*
+:DocIndex Populate the Haddock index from the GHC library
+ documentation.
+
+ *:ExportDocIndex*
+:ExportDocIndex Cache the current Haddock index to a file (populate
+ index first, if empty).
+
+
+ *haskellmode-lookup*
+4.2 Lookup ~
+
+ *_?*
+_? Open the Haddock entry (in |haddock_browser|) for an
+ identifier under the cursor, selecting full
+ qualifications from a popup menu (GUI) or via
+ command-line completion (CLI), if the identifier is
+ not qualified.
+
+ *:IDoc*
+:IDoc {identifier} Open the Haddock entry for the unqualified
+ {identifier} in |haddock_browser|, suggesting possible
+ full qualifications.
+
+ *:MDoc*
+:MDoc {module} Open the Haddock entry for {module} in
+ |haddock_browser| (with command-line completion for
+ the fully qualified module name).
+
+ *:FlagReference*
+:FlagReference {s} Browse Users Guide Flag Reference for section {s}
+ (with command-line completion for section headers).
+
+
+ *haskellmode-editing*
+4.3 Editing ~
+
+ *_.*
+_. Fully qualify the unqualified name under the cursor
+ selecting full qualifications from a popup menu (GUI)
+ or via command-line completion (CLI).
+
+ *_iq* *_i*
+_i _iq Add 'import [qualified] <module>(<identifier>)'
+ statement for the identifier under the cursor,
+ selecting fully qualified modules from a popup menu
+ (GUI) or via command-line completion (CLI), if the
+ identifier is not qualified. This currently adds one
+ import statement per call instead of merging into
+ existing import statements.
+
+ *_iqm* *_im*
+_im Add 'import [qualified] <module>' statement for the
+ identifier under the cursor, selecting fully qualified
+ modules from a popup menu (GUI) or via command-line
+ completion (CLI), if the identifier is not qualified.
+ This currently adds one import statement per call
+ instead of merging into existing import statements.
+
+ *_ie*
+_ie On an 'import <module>' line, in a correctly loadable
+ module, temporarily comment out import and use :make
+ 'not in scope' errors to explicitly list imported
+ identifiers.
+
+ *haskellmode-XU* *haskellmode-user-completion*
+CTRL-X CTRL-U User-defined insert mode name completion based on all
+ names known to the Haddock index, including package
+ names. Completions are presented in a popup menu which
+ also displays the fully qualified module from which
+ each entry may be imported.
+
+ CamelCode shortcuts are supported, meaning that
+ lower-case letters can be elided, using only
+ upper-case letters and module qualifier separators (.)
+ for disambiguation:
+
+ pSL -> putStrLn
+ C.E.t -> Control.Exception.t
+ C.M.MP -> Control.Monad.MonadPlus
+
+ To reduce unwanted matches, the first letter of such
+ shortcuts and the first letter after each '.' have to
+ match directly.
+
+==============================================================================
+ *haskellmode-hpaste* *hpaste*
+5. Hpaste Integration ~
+
+ This experimental feature allows browsing and posting to
+ http://hpaste.org, a Web-based pastebin tailored for Haskell code.
+
+
+ *:HpasteIndex*
+:HpasteIndex Read the most recent entries from hpaste.org. Show an
+ index of the entries in a new buffer, where ',r' will
+ open the current highlighted entry and ',p' will
+ annotate it with the current buffer.
+
+ *:HpastePostNew*
+:HpastePostNew Submit current buffer as a new hpaste entry.
+
+==============================================================================
+ *haskellmode-resources*
+6. Additional Resources ~
+
+ An illustrated walk-through of these plugins is available at:
+
+ http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/Vim/vim.html
+
+ Other Haskell-related Vim plugins can be found here:
+
+ http://www.haskell.org/haskellwiki/Libraries_and_tools/Program_development#Vim
+
+ Make sure to read about Vim's other program-editing features in its online
+ |user-manual|. Also have a look at Vim tips and plugins at www.vim.org -
+ two other plugins I tend to use when editing Haskell are AlignPlugin.vim
+ (to line up regexps for definitions, keywords, comments, etc. in
+ consecutive lines) and surround.vim (to surround text with quotes,
+ brackets, parentheses, comments, etc.).
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:
diff --git a/.vim/haskellmode-20090424.vba b/.vim/haskellmode-20090424.vba
new file mode 100644
index 0000000..e096c85
--- /dev/null
+++ b/.vim/haskellmode-20090424.vba
@@ -0,0 +1,2005 @@
+" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.
+UseVimball
+finish
+compiler/ghc.vim [[[1
+470
+
+" Vim Compiler File
+" Compiler: GHC
+" Maintainer: Claus Reinke <claus.reinke@talk21.com>
+" Last Change: 21/04/2009
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+
+" ------------------------------ paths & quickfix settings first
+"
+
+if exists("current_compiler") && current_compiler == "ghc"
+ finish
+endif
+let current_compiler = "ghc"
+
+let s:scriptname = "ghc.vim"
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname.": can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+let ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+if (!exists("b:ghc_staticoptions"))
+ let b:ghc_staticoptions = ''
+endif
+
+" set makeprg (for quickfix mode)
+execute 'setlocal makeprg=' . g:ghc . '\ ' . escape(b:ghc_staticoptions,' ') .'\ -e\ :q\ %'
+"execute 'setlocal makeprg=' . g:ghc .'\ -e\ :q\ %'
+"execute 'setlocal makeprg=' . g:ghc .'\ --make\ %'
+
+" quickfix mode:
+" fetch file/line-info from error message
+" TODO: how to distinguish multiline errors from warnings?
+" (both have the same header, and errors have no common id-tag)
+" how to get rid of first empty message in result list?
+setlocal errorformat=
+ \%-Z\ %#,
+ \%W%f:%l:%c:\ Warning:\ %m,
+ \%E%f:%l:%c:\ %m,
+ \%E%>%f:%l:%c:,
+ \%+C\ \ %#%m,
+ \%W%>%f:%l:%c:,
+ \%+C\ \ %#%tarning:\ %m,
+
+" oh, wouldn't you guess it - ghc reports (partially) to stderr..
+setlocal shellpipe=2>
+
+" ------------------------- but ghc can do a lot more for us..
+"
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+" initialize map of identifiers to their types
+" associate type map updates to changedtick
+if !exists("b:ghc_types")
+ let b:ghc_types = {}
+ let b:my_changedtick = b:changedtick
+endif
+
+if exists("g:haskell_functions")
+ finish
+endif
+let g:haskell_functions = "ghc"
+
+" avoid hit-enter prompts
+set cmdheight=3
+
+" edit static GHC options
+" TODO: add completion for options/packages?
+command! GHCStaticOptions call GHC_StaticOptions()
+function! GHC_StaticOptions()
+ let b:ghc_staticoptions = input('GHC static options: ',b:ghc_staticoptions)
+ execute 'setlocal makeprg=' . g:ghc . '\ ' . escape(b:ghc_staticoptions,' ') .'\ -e\ :q\ %'
+ let b:my_changedtick -=1
+endfunction
+
+map <LocalLeader>T :call GHC_ShowType(1)<cr>
+map <LocalLeader>t :call GHC_ShowType(0)<cr>
+function! GHC_ShowType(addTypeDecl)
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = ( symb ? '('.name.')' : name )
+ call GHC_HaveTypes()
+ if !has_key(b:ghc_types,name)
+ redraw
+ echo pname "type not known"
+ else
+ redraw
+ for type in split(b:ghc_types[name],' -- ')
+ echo pname "::" type
+ if a:addTypeDecl
+ call append( line(".")-1, pname . " :: " . type )
+ endif
+ endfor
+ endif
+endfunction
+
+" show type of identifier under mouse pointer in balloon
+if has("balloon_eval")
+ set ballooneval
+ set balloondelay=600
+ set balloonexpr=GHC_TypeBalloon()
+ function! GHC_TypeBalloon()
+ if exists("b:current_compiler") && b:current_compiler=="ghc"
+ let [line] = getbufline(v:beval_bufnr,v:beval_lnum)
+ let namsym = haskellmode#GetNameSymbol(line,v:beval_col,0)
+ if namsym==[]
+ return ''
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : qual.'.'.unqual
+ let pname = name " ( symb ? '('.name.')' : name )
+ silent call GHC_HaveTypes()
+ if has("balloon_multiline")
+ return (has_key(b:ghc_types,pname) ? split(b:ghc_types[pname],' -- ') : '')
+ else
+ return (has_key(b:ghc_types,pname) ? b:ghc_types[pname] : '')
+ endif
+ else
+ return ''
+ endif
+ endfunction
+endif
+
+map <LocalLeader>si :call GHC_ShowInfo()<cr>
+function! GHC_ShowInfo()
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [_,symb,qual,unqual] = namsym
+ let name = qual=='' ? unqual : (qual.'.'.unqual)
+ let output = GHC_Info(name)
+ pclose | new
+ setlocal previewwindow
+ setlocal buftype=nofile
+ setlocal noswapfile
+ put =output
+ wincmd w
+ "redraw
+ "echo output
+endfunction
+
+" fill the type map, unless nothing has changed since the last attempt
+function! GHC_HaveTypes()
+ if b:ghc_types == {} && (b:my_changedtick != b:changedtick)
+ let b:my_changedtick = b:changedtick
+ return GHC_BrowseAll()
+ endif
+endfunction
+
+" update b:ghc_types after successful make
+au QuickFixCmdPost make if GHC_CountErrors()==0 | silent call GHC_BrowseAll() | endif
+
+" count only error entries in quickfix list, ignoring warnings
+function! GHC_CountErrors()
+ let c=0
+ for e in getqflist() | if e.type=='E' && e.text !~ "^[ \n]*Warning:" | let c+=1 | endif | endfor
+ return c
+endfunction
+
+command! GHCReload call GHC_BrowseAll()
+function! GHC_BrowseAll()
+ " let imports = haskellmode#GatherImports()
+ " let modules = keys(imports[0]) + keys(imports[1])
+ let imports = {} " no need for them at the moment
+ let current = GHC_NameCurrent()
+ let module = current==[] ? 'Main' : current[0]
+ if GHC_VersionGE([6,8,1])
+ return GHC_BrowseBangStar(module)
+ else
+ return GHC_BrowseMultiple(imports,['*'.module])
+ endif
+endfunction
+
+function! GHC_VersionGE(target)
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>target[0]))
+ return 1
+ elseif (i==target[0])
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+
+function! GHC_NameCurrent()
+ let last = line("$")
+ let l = 1
+ while l<last
+ let ml = matchlist( getline(l), '^module\s*\([^ (]*\)')
+ if ml != []
+ let [_,module;x] = ml
+ return [module]
+ endif
+ let l += 1
+ endwhile
+ redraw
+ echo "cannot find module header for file " . expand("%")
+ return []
+endfunction
+
+function! GHC_BrowseBangStar(module)
+ redraw
+ echo "browsing module " a:module
+ let command = ":browse! *" . a:module
+ let orig_shellredir = &shellredir
+ let &shellredir = ">" " ignore error/warning messages, only output or lack of it
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ let &shellredir = orig_shellredir
+ return GHC_ProcessBang(a:module,output)
+endfunction
+
+function! GHC_BrowseMultiple(imports,modules)
+ redraw
+ echo "browsing modules " a:modules
+ let command = ":browse " . join( a:modules, " \n :browse ")
+ let command = substitute(command,'\(:browse \(\S*\)\)','putStrLn "-- \2" \n \1','g')
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%") , command )
+ return GHC_Process(a:imports,output)
+endfunction
+
+function! GHC_Info(what)
+ " call GHC_HaveTypes()
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -v0 --interactive ' . expand("%"), ":i ". a:what)
+ return output
+endfunction
+
+function! GHC_ProcessBang(module,output)
+ let module = a:module
+ let b = a:output
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\)\(\S*\)\s*::\(.*\)'
+ let commentPat = '^-- \(\S*\)'
+ let definedPat = '^-- defined locally'
+ let importedPat = '^-- imported via \(.*\)'
+ if !(b=~commentPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute( id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse! *<current>, we get both unqualified and qualified ids
+ let qualified = (id =~ '\.') && (id =~ '[A-Z]')
+ let b:ghc_types[id] = type
+ if !qualified
+ for qual in qualifiers
+ let b:ghc_types[qual.'.'.id] = type
+ endfor
+ endif
+ else
+ let mlImported = matchlist( l, importedPat )
+ let mlDefined = matchlist( l, definedPat )
+ if mlImported != []
+ let [_,modules;x] = mlImported
+ let qualifiers = split( modules, ', ' )
+ elseif mlDefined != []
+ let qualifiers = [module]
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+function! GHC_Process(imports,output)
+ let b = a:output
+ let imports = a:imports
+ let linePat = '^\(.\{-}\)\n\(.*\)'
+ let contPat = '\s\+\(.\{-}\)\n\(.*\)'
+ let typePat = '^\(\s*\)\(\S*\)\s*::\(.*\)'
+ let modPat = '^-- \(\S*\)'
+ " add '-- defined locally' and '-- imported via ..'
+ if !(b=~modPat)
+ echo s:scriptname.": GHCi reports errors (try :make?)"
+ return 0
+ endif
+ let b:ghc_types = {}
+ let ml = matchlist( b , linePat )
+ while ml != []
+ let [_,l,rest;x] = ml
+ let mlDecl = matchlist( l, typePat )
+ if mlDecl != []
+ let [_,indent,id,type;x] = mlDecl
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ while ml2 != []
+ let [_,c,rest;x] = ml2
+ let type .= c
+ let ml2 = matchlist( rest , '^'.indent.contPat )
+ endwhile
+ let id = substitute(id, '^(\(.*\))$', '\1', '')
+ let type = substitute( type, '\s\+', " ", "g" )
+ " using :browse *<current>, we get both unqualified and qualified ids
+ if current_module " || has_key(imports[0],module)
+ if has_key(b:ghc_types,id) && !(matchstr(b:ghc_types[id],escape(type,'[].'))==type)
+ let b:ghc_types[id] .= ' -- '.type
+ else
+ let b:ghc_types[id] = type
+ endif
+ endif
+ if 0 " has_key(imports[1],module)
+ let qualid = module.'.'.id
+ let b:ghc_types[qualid] = type
+ endif
+ else
+ let mlMod = matchlist( l, modPat )
+ if mlMod != []
+ let [_,module;x] = mlMod
+ let current_module = module[0]=='*'
+ let module = current_module ? module[1:] : module
+ endif
+ endif
+ let ml = matchlist( rest , linePat )
+ endwhile
+ return 1
+endfunction
+
+let s:ghc_templates = ["module _ () where","class _ where","class _ => _ where","instance _ where","instance _ => _ where","type family _","type instance _ = ","data _ = ","newtype _ = ","type _ = "]
+
+" use ghci :browse index for insert mode omnicompletion (CTRL-X CTRL-O)
+function! GHC_CompleteImports(findstart, base)
+ if a:findstart
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ call GHC_HaveTypes()
+ for key in keys(b:ghc_types)
+ if key[0 : l]==a:base
+ let res += [{"word":key,"menu":":: ".b:ghc_types[key],"dup":1}]
+ endif
+ endfor
+ return res
+ endif
+endfunction
+set omnifunc=GHC_CompleteImports
+set completeopt=menu,menuone,longest
+
+map <LocalLeader>ct :call GHC_CreateTagfile()<cr>
+function! GHC_CreateTagfile()
+ redraw
+ echo "creating tags file"
+ let output = system(g:ghc . ' ' . b:ghc_staticoptions . ' -e ":ctags" ' . expand("%"))
+ " for ghcs older than 6.6, you would need to call another program
+ " here, such as hasktags
+ echo output
+endfunction
+
+command! -nargs=1 GHCi redraw | echo system(g:ghc. ' ' . b:ghc_staticoptions .' '.expand("%").' -e "'.escape(<f-args>,'"').'"')
+
+" use :make 'not in scope' errors to explicitly list imported ids
+" cursor needs to be on import line, in correctly loadable module
+map <LocalLeader>ie :call GHC_MkImportsExplicit()<cr>
+function! GHC_MkImportsExplicit()
+ let save_cursor = getpos(".")
+ let line = getline('.')
+ let lineno = line('.')
+ let ml = matchlist(line,'^import\(\s*qualified\)\?\s*\([^( ]\+\)')
+ if ml!=[]
+ let [_,q,mod;x] = ml
+ silent make
+ if getqflist()==[]
+ if line=~"import[^(]*Prelude"
+ call setline(lineno,substitute(line,"(.*","","").'()')
+ else
+ call setline(lineno,'-- '.line)
+ endif
+ silent write
+ silent make
+ let qflist = getqflist()
+ call setline(lineno,line)
+ silent write
+ let ids = {}
+ for d in qflist
+ let ml = matchlist(d.text,'Not in scope: \([^`]*\)`\([^'']*\)''')
+ if ml!=[]
+ let [_,what,qid;x] = ml
+ let id = ( qid =~ "^[A-Z]" ? substitute(qid,'.*\.\([^.]*\)$','\1','') : qid )
+ let pid = ( id =~ "[a-zA-Z0-9_']\\+" ? id : '('.id.')' )
+ if what =~ "data"
+ call GHC_HaveTypes()
+ if has_key(b:ghc_types,id)
+ let pid = substitute(b:ghc_types[id],'^.*->\s*\(\S*\).*$','\1','').'('.pid.')'
+ else
+ let pid = '???('.pid.')'
+ endif
+ endif
+ let ids[pid] = 1
+ endif
+ endfor
+ call setline(lineno,'import'.q.' '.mod.'('.join(keys(ids),',').')')
+ else
+ copen
+ endif
+ endif
+ call setpos('.', save_cursor)
+endfunction
+
+if GHC_VersionGE([6,8,2])
+ let opts = filter(split(substitute(system(g:ghc . ' -v0 --interactive', ':set'), ' ', '','g'), '\n'), 'v:val =~ "-f"')
+else
+ let opts = ["-fglasgow-exts","-fallow-undecidable-instances","-fallow-overlapping-instances","-fno-monomorphism-restriction","-fno-mono-pat-binds","-fno-cse","-fbang-patterns","-funbox-strict-fields"]
+endif
+
+amenu ]OPTIONS_GHC.- :echo '-'<cr>
+aunmenu ]OPTIONS_GHC
+for o in opts
+ exe 'amenu ]OPTIONS_GHC.'.o.' :call append(0,"{-# OPTIONS_GHC '.o.' #-}")<cr>'
+endfor
+if has("gui_running")
+ map <LocalLeader>opt :popup ]OPTIONS_GHC<cr>
+else
+ map <LocalLeader>opt :emenu ]OPTIONS_GHC.
+endif
+
+amenu ]LANGUAGES_GHC.- :echo '-'<cr>
+aunmenu ]LANGUAGES_GHC
+if GHC_VersionGE([6,8])
+ let ghc_supported_languages = split(system(g:ghc . ' --supported-languages'),'\n')
+ for l in ghc_supported_languages
+ exe 'amenu ]LANGUAGES_GHC.'.l.' :call append(0,"{-# LANGUAGE '.l.' #-}")<cr>'
+ endfor
+ if has("gui_running")
+ map <LocalLeader>lang :popup ]LANGUAGES_GHC<cr>
+ else
+ map <LocalLeader>lang :emenu ]LANGUAGES_GHC.
+ endif
+endif
+ftplugin/haskell.vim [[[1
+13
+"
+" general Haskell source settings
+" (shared functions are in autoload/haskellmode.vim)
+"
+" (Claus Reinke, last modified: 21/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+" try gf on import line, or ctrl-x ctrl-i, or [I, [i, ..
+set include=^import\\s*\\(qualified\\)\\?\\s*
+set includeexpr=substitute(v:fname,'\\.','/','g').'.hs'
+
+ftplugin/haskell_doc.vim [[[1
+817
+"
+" use haddock docs and index files
+" show documentation, complete & qualify identifiers
+"
+" (Claus Reinke; last modified: 24/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+" :Doc <name> and :IDoc <name> open haddocks for <name> in opera
+"
+" :Doc needs qualified name (default Prelude) and package (default base)
+" :IDoc needs unqualified name, looks up possible links in g:haddock_index
+"
+" :DocIndex populates g:haddock_index from haddock's index files
+" :ExportDocIndex saves g:haddock_index to cache file
+" :ImportDocIndex reloads g:haddock_index from cache file
+"
+" all the following use the haddock index (g:haddock_index)
+"
+" _? opens haddocks for unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _. fully qualifies unqualified name under cursor,
+" suggesting alternative full qualifications in popup menu
+"
+" _i add import <module>(<name>) statement for unqualified <name> under cursor,
+" _im add import <module> statement for unqualified <name> under cursor,
+" suggesting alternative full qualifications in popup menu
+" (this currently adds one statement per call, instead of
+" merging into existing import statements, but it's a start;-)
+"
+" CTRL-X CTRL-U (user-defined insert mode completion)
+" suggests completions of unqualified names in popup menu
+
+let s:scriptname = "haskell_doc.vim"
+
+" script parameters
+" g:haddock_browser *mandatory* which browser to call
+" g:haddock_browser_callformat [optional] how to call browser
+" g:haddock_indexfiledir [optional] where to put 'haddock_index.vim'
+" g:haddock_docdir [optional] where to find html docs
+" g:ghc [optional] which ghc to call
+" g:ghc_pkg [optional] which ghc_pkg to call
+
+" been here before?
+if exists("g:haddock_index")
+ finish
+endif
+
+" initialise nested dictionary, to be populated
+" - from haddock index files via :DocIndex
+" - from previous cached version via :ImportDocIndex
+let g:haddock_index = {}
+
+" initialise dictionary, mapping modules with haddocks to their packages,
+" populated via MkHaddockModuleIndex() or HaveModuleIndex()
+let g:haddock_moduleindex = {}
+
+" program to open urls, please set this in your vimrc
+ "examples (for windows):
+ "let g:haddock_browser = "C:/Program Files/Opera/Opera.exe"
+ "let g:haddock_browser = "C:/Program Files/Mozilla Firefox/firefox.exe"
+ "let g:haddock_browser = "C:/Program Files/Internet Explorer/IEXPLORE.exe"
+if !exists("g:haddock_browser")
+ echoerr s:scriptname." WARNING: please set g:haddock_browser!"
+endif
+
+if (!exists("g:ghc") || !executable(g:ghc))
+ if !executable('ghc')
+ echoerr s:scriptname." can't find ghc. please set g:ghc, or extend $PATH"
+ finish
+ else
+ let g:ghc = 'ghc'
+ endif
+endif
+
+if (!exists("g:ghc_pkg") || !executable(g:ghc_pkg))
+ let g:ghc_pkg = substitute(g:ghc,'\(.*\)ghc','\1ghc-pkg','')
+endif
+
+if exists("g:haddock_docdir") && isdirectory(g:haddock_docdir)
+ let s:docdir = g:haddock_docdir
+elseif executable(g:ghc_pkg)
+" try to figure out location of html docs
+" first choice: where the base docs are (from the first base listed)
+ let [field;x] = split(system(g:ghc_pkg . ' field base haddock-html'),'\n')
+ let field = substitute(field,'haddock-html: \(.*\)libraries.base','\1','')
+ let field = substitute(field,'\\','/','g')
+ let alternate = substitute(field,'html','doc/html','')
+ if isdirectory(field)
+ let s:docdir = field
+ elseif isdirectory(alternate)
+ let s:docdir = alternate
+ endif
+else
+ echoerr s:scriptname." can't find ghc-pkg (set g:ghc_pkg ?)."
+endif
+
+" second choice: try some known suspects for windows/unix
+if !exists('s:docdir') || !isdirectory(s:docdir)
+ let s:ghc_libdir = substitute(system(g:ghc . ' --print-libdir'),'\n','','')
+ let location1a = s:ghc_libdir . '/doc/html/'
+ let location1b = s:ghc_libdir . '/doc/'
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let location2 = '/usr/share/doc/ghc-' . s:ghc_version . '/html/'
+ if isdirectory(location1a)
+ let s:docdir = location1a
+ elseif isdirectory(location1b)
+ let s:docdir = location1b
+ elseif isdirectory(location2)
+ let s:docdir = location2
+ else " give up
+ echoerr s:scriptname." can't find locaton of html documentation (set g:haddock_docdir)."
+ finish
+ endif
+endif
+
+" todo: can we turn s:docdir into a list of paths, and
+" include docs for third-party libs as well?
+
+let s:libraries = s:docdir . 'libraries/'
+let s:guide = s:docdir . 'users_guide/'
+let s:index = 'index.html'
+if exists("g:haddock_indexfiledir") && filewritable(g:haddock_indexfiledir)
+ let s:haddock_indexfiledir = g:haddock_indexfiledir
+elseif filewritable(s:libraries)
+ let s:haddock_indexfiledir = s:libraries
+elseif filewritable($HOME)
+ let s:haddock_indexfiledir = $HOME.'/'
+else "give up
+ echoerr s:scriptname." can't locate index file. please set g:haddock_indexfiledir"
+ finish
+endif
+let s:haddock_indexfile = s:haddock_indexfiledir . 'haddock_index.vim'
+
+" different browser setups require different call formats;
+" you might want to call the browser synchronously or
+" asynchronously, and the latter is os-dependent;
+"
+" by default, the browser is started in the background when on
+" windows or if running in a gui, and in the foreground otherwise
+" (eg, console-mode for remote sessions, with text-mode browsers).
+"
+" you can override these defaults in your vimrc, via a format
+" string including 2 %s parameters (the first being the browser
+" to call, the second being the url).
+if !exists("g:haddock_browser_callformat")
+ if has("win32") || has("win64")
+ let g:haddock_browser_callformat = 'start %s "%s"'
+ else
+ if has("gui_running")
+ let g:haddock_browser_callformat = '%s %s '.printf(&shellredir,'/dev/null').' &'
+ else
+ let g:haddock_browser_callformat = '%s %s'
+ endif
+ endif
+endif
+
+" allow map leader override
+if !exists("maplocalleader")
+ let maplocalleader='_'
+endif
+
+command! DocSettings call DocSettings()
+function! DocSettings()
+ for v in ["g:haddock_browser","g:haddock_browser_callformat","g:haddock_docdir","g:haddock_indexfiledir","s:ghc_libdir","s:ghc_version","s:docdir","s:libraries","s:guide","s:haddock_indexfile"]
+ if exists(v)
+ echo v '=' eval(v)
+ else
+ echo v '='
+ endif
+ endfor
+endfunction
+
+function! DocBrowser(url)
+ "echomsg "DocBrowser(".url.")"
+ if (!exists("g:haddock_browser") || !executable(g:haddock_browser))
+ echoerr s:scriptname." can't find documentation browser. please set g:haddock_browser"
+ return
+ endif
+ " start browser to open url, according to specified format
+ let url = a:url=~'^\(file://\|http://\)' ? a:url : 'file://'.a:url
+ silent exe '!'.printf(g:haddock_browser_callformat,g:haddock_browser,escape(url,'#%'))
+endfunction
+
+"usage examples:
+" :Doc length
+" :Doc Control.Monad.when
+" :Doc Data.List.
+" :Doc Control.Monad.State.runState mtl
+" :Doc -top
+" :Doc -libs
+" :Doc -guide
+command! -nargs=+ Doc call Doc('v',<f-args>)
+command! -nargs=+ Doct call Doc('t',<f-args>)
+
+function! Doc(kind,qualname,...)
+ let suffix = '.html'
+ let relative = '#'.a:kind.'%3A'
+
+ if a:qualname=="-top"
+ call DocBrowser(s:docdir . s:index)
+ return
+ elseif a:qualname=="-libs"
+ call DocBrowser(s:libraries . s:index)
+ return
+ elseif a:qualname=="-guide"
+ call DocBrowser(s:guide . s:index)
+ return
+ endif
+
+ if a:0==0 " no package specified
+ let package = 'base/'
+ else
+ let package = a:1 . '/'
+ endif
+
+ if match(a:qualname,'\.')==-1 " unqualified name
+ let [qual,name] = [['Prelude'],a:qualname]
+ let file = join(qual,'-') . suffix . relative . name
+ elseif a:qualname[-1:]=='.' " module qualifier only
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-1
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix
+ else " qualified name
+ let parts = split(a:qualname,'\.')
+ let quallen = len(parts)-2
+ let [qual,name] = [parts[0:quallen],parts[-1]]
+ let file = join(qual,'-') . suffix . relative . name
+ endif
+
+" let path = s:libraries . package . file
+ let path = file
+ call DocBrowser(path)
+endfunction
+
+" TODO: add commandline completion for :IDoc
+" indexed variant of Doc, looking up links in g:haddock_index
+" usage:
+" 1. :IDoc length
+" 2. click on one of the choices, or select by number (starting from 0)
+command! -nargs=+ IDoc call IDoc(<f-args>)
+function! IDoc(name,...)
+ let choices = HaddockIndexLookup(a:name)
+ if choices=={} | return | endif
+ if a:0==0
+ let keylist = map(deepcopy(keys(choices)),'substitute(v:val,"\\[.\\]","","")')
+ let choice = inputlist(keylist)
+ else
+ let choice = a:1
+ endif
+ let path = values(choices)[choice] " assumes same order for keys/values..
+ call DocBrowser(path)
+endfunction
+
+let s:flagref = s:guide . 'flag-reference.html'
+if filereadable(s:flagref)
+ " extract the generated fragment ids for the
+ " flag reference sections
+ let s:headerPat = '.\{-}<h3 class="title"><a name="\([^"]*\)"><\/a>\([^<]*\)<\/h3>\(.*\)'
+ let s:flagheaders = []
+ let s:flagheaderids = {}
+ let s:contents = join(readfile(s:flagref))
+ let s:ml = matchlist(s:contents,s:headerPat)
+ while s:ml!=[]
+ let [_,s:id,s:title,s:r;s:x] = s:ml
+ let s:flagheaders = add(s:flagheaders, s:title)
+ let s:flagheaderids[s:title] = s:id
+ let s:ml = matchlist(s:r,s:headerPat)
+ endwhile
+ command! -nargs=1 -complete=customlist,CompleteFlagHeaders FlagReference call FlagReference(<f-args>)
+ function! FlagReference(section)
+ let relativeUrl = a:section==""||!exists("s:flagheaderids['".a:section."']") ?
+ \ "" : "#".s:flagheaderids[a:section]
+ call DocBrowser(s:flagref.relativeUrl)
+ endfunction
+ function! CompleteFlagHeaders(al,cl,cp)
+ let s:choices = s:flagheaders
+ return CompleteAux(a:al,a:cl,a:cp)
+ endfunction
+endif
+
+command! -nargs=1 -complete=customlist,CompleteHaddockModules MDoc call MDoc(<f-args>)
+function! MDoc(module)
+ let suffix = '.html'
+ call HaveModuleIndex()
+ if !has_key(g:haddock_moduleindex,a:module)
+ echoerr a:module 'not found in haddock module index'
+ return
+ endif
+ let package = g:haddock_moduleindex[a:module]['package']
+ let file = substitute(a:module,'\.','-','g') . suffix
+" let path = s:libraries . package . '/' . file
+ let path = g:haddock_moduleindex[a:module]['html']
+ call DocBrowser(path)
+endfunction
+
+function! CompleteHaddockModules(al,cl,cp)
+ call HaveModuleIndex()
+ let s:choices = keys(g:haddock_moduleindex)
+ return CompleteAux(a:al,a:cl,a:cp)
+endfunction
+
+" create a dictionary g:haddock_index, containing the haddoc index
+command! DocIndex call DocIndex()
+function! DocIndex()
+ let files = split(globpath(s:libraries,'doc-index*.html'),'\n')
+ let g:haddock_index = {}
+ call ProcessHaddockIndexes2(s:libraries,files)
+ if GHC_VersionGE([6,8,2])
+ if &shell =~ 'sh' " unix-type shell
+ let s:addon_libraries = split(system(g:ghc_pkg . ' field \* haddock-html'),'\n')
+ else " windows cmd.exe and the like
+ let s:addon_libraries = split(system(g:ghc_pkg . ' field * haddock-html'),'\n')
+ endif
+ for addon in s:addon_libraries
+ let ml = matchlist(addon,'haddock-html: \("\)\?\(file:///\)\?\([^"]*\)\("\)\?')
+ if ml!=[]
+ let [_,quote,file,addon_path;x] = ml
+ let addon_path = substitute(addon_path,'\(\\\\\|\\\)','/','g')
+ let addon_files = split(globpath(addon_path,'doc-index*.html'),'\n')
+ call ProcessHaddockIndexes2(addon_path,addon_files)
+ endif
+ endfor
+ endif
+ return 1
+endfunction
+
+function! ProcessHaddockIndexes(location,files)
+ let entryPat= '.\{-}"indexentry"[^>]*>\([^<]*\)<\(\%([^=]\{-}TD CLASS="\%(indexentry\)\@!.\{-}</TD\)*\)[^=]\{-}\(\%(="indexentry\|TABLE\).*\)'
+ let linkPat = '.\{-}HREF="\([^"]*\)".>\([^<]*\)<\(.*\)'
+
+ redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let contents = join(readfile(f))
+ let ml = matchlist(contents,entryPat)
+ while ml!=[]
+ let [_,entry,links,r;x] = ml
+ "echo entry links
+ let ml2 = matchlist(links,linkPat)
+ let link = {}
+ while ml2!=[]
+ let [_,l,m,links;x] = ml2
+ "echo l m
+ let link[m] = a:location . '/' . l
+ let ml2 = matchlist(links,linkPat)
+ endwhile
+ let g:haddock_index[DeHTML(entry)] = deepcopy(link)
+ "echo entry g:haddock_index[entry]
+ let ml = matchlist(r,entryPat)
+ endwhile
+ endfor
+endfunction
+
+" concatenating all lines is too slow for a big file, process lines directly
+function! ProcessHaddockIndexes2(location,files)
+ let entryPat= '^>\([^<]*\)</'
+ let linkPat = '.\{-}A HREF="\([^"]*\)"'
+ let kindPat = '#\(.\)'
+
+ " redraw
+ echo 'populating g:haddock_index from haddock index files in ' a:location
+ for f in a:files
+ echo f[len(a:location):]
+ let isEntry = 0
+ let isLink = ''
+ let link = {}
+ let entry = ''
+ for line in readfile(f)
+ if line=~'CLASS="indexentry'
+ if (link!={}) && (entry!='')
+ if has_key(g:haddock_index,DeHTML(entry))
+ let dict = extend(g:haddock_index[DeHTML(entry)],deepcopy(link))
+ else
+ let dict = deepcopy(link)
+ endif
+ let g:haddock_index[DeHTML(entry)] = dict
+ let link = {}
+ let entry = ''
+ endif
+ let isEntry=1
+ continue
+ endif
+ if isEntry==1
+ let ml = matchlist(line,entryPat)
+ if ml!=[] | let [_,entry;x] = ml | let isEntry=0 | continue | endif
+ endif
+ if entry!=''
+ let ml = matchlist(line,linkPat)
+ if ml!=[] | let [_,isLink;x]=ml | continue | endif
+ endif
+ if isLink!=''
+ let ml = matchlist(line,entryPat)
+ if ml!=[]
+ let [_,module;x] = ml
+ let [_,kind;x] = matchlist(isLink,kindPat)
+ let last = a:location[strlen(a:location)-1]
+ let link[module."[".kind."]"] = a:location . (last=='/'?'':'/') . isLink
+ let isLink=''
+ continue
+ endif
+ endif
+ endfor
+ if link!={}
+ if has_key(g:haddock_index,DeHTML(entry))
+ let dict = extend(g:haddock_index[DeHTML(entry)],deepcopy(link))
+ else
+ let dict = deepcopy(link)
+ endif
+ let g:haddock_index[DeHTML(entry)] = dict
+ endif
+ endfor
+endfunction
+
+command! ExportDocIndex call ExportDocIndex()
+function! ExportDocIndex()
+ call HaveIndex()
+ let entries = []
+ for key in keys(g:haddock_index)
+ let entries += [key,string(g:haddock_index[key])]
+ endfor
+ call writefile(entries,s:haddock_indexfile)
+ redir end
+endfunction
+
+command! ImportDocIndex call ImportDocIndex()
+function! ImportDocIndex()
+ if filereadable(s:haddock_indexfile)
+ let lines = readfile(s:haddock_indexfile)
+ let i=0
+ while i<len(lines)
+ let [key,dict] = [lines[i],lines[i+1]]
+ sandbox let g:haddock_index[key] = eval(dict)
+ let i+=2
+ endwhile
+ return 1
+ else
+ return 0
+ endif
+endfunction
+
+function! HaveIndex()
+ return (g:haddock_index!={} || ImportDocIndex() || DocIndex() )
+endfunction
+
+function! MkHaddockModuleIndex()
+ let g:haddock_moduleindex = {}
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let dict = g:haddock_index[key]
+ for module in keys(dict)
+ let html = dict[module]
+ let html = substitute(html ,'#.*$','','')
+ let module = substitute(module,'\[.\]','','')
+ let ml = matchlist(html,'libraries/\([^\/]*\)\/')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ let ml = matchlist(html,'/\([^\/]*\)\/html/[A-Z]')
+ if ml!=[]
+ let [_,package;x] = ml
+ let g:haddock_moduleindex[module] = {'package':package,'html':html}
+ endif
+ endfor
+ endfor
+endfunction
+
+function! HaveModuleIndex()
+ return (g:haddock_moduleindex!={} || MkHaddockModuleIndex() )
+endfunction
+
+" decode HTML symbol encodings (are these all we need?)
+function! DeHTML(entry)
+ let res = a:entry
+ let decode = { '&lt;': '<', '&gt;': '>', '&amp;': '\\&' }
+ for enc in keys(decode)
+ exe 'let res = substitute(res,"'.enc.'","'.decode[enc].'","g")'
+ endfor
+ return res
+endfunction
+
+" find haddocks for word under cursor
+" also lists possible definition sites
+" - needs to work for both qualified and unqualified items
+" - for 'import qualified M as A', consider M.item as source of A.item
+" - offer sources from both type [t] and value [v] namespaces
+" - for unqualified items, list all possible sites
+" - for qualified items, list imported sites only
+" keep track of keys with and without namespace tags:
+" the former are needed for lookup, the latter for matching against source
+map <LocalLeader>? :call Haddock()<cr>
+function! Haddock()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let imports = haskellmode#GatherImports()
+ let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let name = unqual
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ " for qualified items, narrow results to possible imports that provide qualifier
+ let filteredKeys = filter(copy(keys(dict))
+ \ ,'match(asm,substitute(v:val,''\[.\]'','''',''''))!=-1')
+ let keys = (qual!='') ? filteredKeys : keys(dict)
+ if (keys==[]) && (qual!='')
+ echoerr qual.'.'.unqual.' not found in imports'
+ return 0
+ endif
+ if len(keys)==1 && exists("g:haskell_avoid_singleton_menus")
+ call DocBrowser(dict[keys[0]])
+ elseif has("gui_running")
+ for key in keys
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call DocBrowser('''.dict[key].''')<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keys
+ let key = input('browse docs for '.name.' in: ','','customlist,CompleteAux')
+ if key!=''
+ call DocBrowser(dict[key])
+ endif
+ endif
+endfunction
+
+if !exists("g:haskell_search_engines")
+ let g:haskell_search_engines =
+ \ {'hoogle':'http://www.haskell.org/hoogle/?hoogle=%s'
+ \ ,'hayoo!':'http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=%s'
+ \ }
+endif
+
+map <LocalLeader>?? :let es=g:haskell_search_engines
+ \ \|echo "g:haskell_search_engines"
+ \ \|for e in keys(es)
+ \ \|echo e.' : '.es[e]
+ \ \|endfor<cr>
+map <LocalLeader>?1 :call HaskellSearchEngine('hoogle')<cr>
+map <LocalLeader>?2 :call HaskellSearchEngine('hayoo!')<cr>
+
+" query one of the Haskell search engines for the thing under cursor
+" - unqualified symbols need to be url-escaped
+" - qualified ids need to be fed as separate qualifier and id for
+" both hoogle (doesn't handle qualified symbols) and hayoo! (no qualified
+" ids at all)
+" - qualified ids referring to import-qualified-as qualifiers need to be
+" translated to the multi-module searches over the list of original modules
+function! HaskellSearchEngine(engine)
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let imports = haskellmode#GatherImports()
+ let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let unqual = haskellmode#UrlEncode(unqual)
+ if a:engine=='hoogle'
+ let name = asm!=[] ? unqual.'+'.join(map(copy(asm),'"%2B".v:val'),'+')
+ \ : qual!='' ? unqual.'+'.haskellmode#UrlEncode('+').qual
+ \ : unqual
+ elseif a:engine=='hayoo!'
+ let name = asm!=[] ? unqual.'+module:('.join(copy(asm),' OR ').')'
+ \ : qual!='' ? unqual.'+module:'.qual
+ \ : unqual
+ else
+ let name = qual=="" ? unqual : qual.".".unqual
+ endif
+ if has_key(g:haskell_search_engines,a:engine)
+ call DocBrowser(printf(g:haskell_search_engines[a:engine],name))
+ else
+ echoerr "unknown search engine: ".a:engine
+ endif
+endfunction
+
+" used to pass on choices to CompleteAux
+let s:choices=[]
+
+" if there's no gui, use commandline completion instead of :popup
+" completion function CompleteAux suggests completions for a:al, wrt to s:choices
+function! CompleteAux(al,cl,cp)
+ "echomsg '|'.a:al.'|'.a:cl.'|'.a:cp.'|'
+ let res = []
+ let l = len(a:al)-1
+ for r in s:choices
+ if l==-1 || r[0 : l]==a:al
+ let res += [r]
+ endif
+ endfor
+ return res
+endfunction
+
+" CamelCase shorthand matching:
+" favour upper-case letters and module qualifier separators (.) for disambiguation
+function! CamelCase(shorthand,string)
+ let s1 = a:shorthand
+ let s2 = a:string
+ let notFirst = 0 " don't elide before first pattern letter
+ while ((s1!="")&&(s2!=""))
+ let head1 = s1[0]
+ let head2 = s2[0]
+ let elide = notFirst && ( ((head1=~'[A-Z]') && (head2!~'[A-Z.]'))
+ \ ||((head1=='.') && (head2!='.')) )
+ if elide
+ let s2=s2[1:]
+ elseif (head1==head2)
+ let s1=s1[1:]
+ let s2=s2[1:]
+ else
+ return 0
+ endif
+ let notFirst = (head1!='.')||(head2!='.') " treat separators as new beginnings
+ endwhile
+ return (s1=="")
+endfunction
+
+" use haddock name index for insert mode completion (CTRL-X CTRL-U)
+function! CompleteHaddock(findstart, base)
+ if a:findstart
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),-1) " insert-mode: we're 1 beyond the text
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return -1
+ endif
+ let [start,symb,qual,unqual] = namsym
+ return (start-1)
+ else " find keys matching with "a:base"
+ let res = []
+ let l = len(a:base)-1
+ let qual = a:base =~ '^[A-Z][a-zA-Z0-9_'']*\(\.[A-Z][a-zA-Z0-9_'']*\)*\(\.[a-zA-Z0-9_'']*\)\?$'
+ call HaveIndex()
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if (key[0 : l]==a:base)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if word[0 : l]==a:base
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ if res==[] " no prefix matches, try CamelCase shortcuts
+ for key in keys(g:haddock_index)
+ let keylist = map(deepcopy(keys(g:haddock_index[key])),'substitute(v:val,"\\[.\\]","","")')
+ if CamelCase(a:base,key)
+ for m in keylist
+ let res += [{"word":key,"menu":m,"dup":1}]
+ endfor
+ elseif qual " this tends to be slower
+ for m in keylist
+ let word = m . '.' . key
+ if CamelCase(a:base,word)
+ let res += [{"word":word,"menu":m,"dup":1}]
+ endif
+ endfor
+ endif
+ endfor
+ endif
+ return res
+ endif
+endfunction
+set completefunc=CompleteHaddock
+set completeopt=menu,menuone,longest
+
+" fully qualify an unqualified name
+" TODO: - standardise commandline versions of menus
+map <LocalLeader>. :call Qualify()<cr>
+function! Qualify()
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ if qual!='' " TODO: should we support re-qualification?
+ redraw
+ echo 'already qualified'
+ return 0
+ endif
+ let name = unqual
+ let line = line('.')
+ let prefix = (start<=1 ? '' : getline(line)[0:start-2] )
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ let imports = haskellmode#GatherImports()
+ let qualifiedImports = []
+ for qualifiedImport in keys(imports[1])
+ let c=0
+ for module in imports[1][qualifiedImport]['modules']
+ if haskellmode#ListElem(keylist,module) | let c+=1 | endif
+ endfor
+ if c>0 | let qualifiedImports=[qualifiedImport]+qualifiedImports | endif
+ endfor
+ "let asm = has_key(imports[1],qual) ? imports[1][qual]['modules'] : []
+ let keylist = filter(copy(keylist),'index(qualifiedImports,v:val)==-1')
+ if has("gui_running")
+ " amenu ]Popup.-imported- :
+ for key in qualifiedImports
+ let lhs=escape(prefix.name,'/.|\')
+ let rhs=escape(prefix.key.'.'.name,'/&|\')
+ exe 'amenu ]Popup.'.escape(key,'\.').' :'.line.'s/'.lhs.'/'.rhs.'/<cr>:noh<cr>'
+ endfor
+ amenu ]Popup.-not\ imported- :
+ for key in keylist
+ let lhs=escape(prefix.name,'/.|\')
+ let rhs=escape(prefix.key.'.'.name,'/&|\')
+ exe 'amenu ]Popup.'.escape(key,'\.').' :'.line.'s/'.lhs.'/'.rhs.'/<cr>:noh<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = qualifiedImports+keylist
+ let key = input('qualify '.name.' with: ','','customlist,CompleteAux')
+ if key!=''
+ let lhs=escape(prefix.name,'/.\')
+ let rhs=escape(prefix.key.'.'.name,'/&\')
+ exe line.'s/'.lhs.'/'.rhs.'/'
+ noh
+ endif
+ endif
+endfunction
+
+" create (qualified) import for a (qualified) name
+" TODO: refine search patterns, to avoid misinterpretation of
+" oddities like import'Neither or not'module
+map <LocalLeader>i :call Import(0,0)<cr>
+map <LocalLeader>im :call Import(1,0)<cr>
+map <LocalLeader>iq :call Import(0,1)<cr>
+map <LocalLeader>iqm :call Import(1,1)<cr>
+function! Import(module,qualified)
+ amenu ]Popup.- :echo '-'<cr>
+ aunmenu ]Popup
+ let namsym = haskellmode#GetNameSymbol(getline('.'),col('.'),0)
+ if namsym==[]
+ redraw
+ echo 'no name/symbol under cursor!'
+ return 0
+ endif
+ let [start,symb,qual,unqual] = namsym
+ let name = unqual
+ let pname = ( symb ? '('.name.')' : name )
+ let importlist = a:module ? '' : '('.pname.')'
+ let qualified = a:qualified ? 'qualified ' : ''
+
+ if qual!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.qual.importlist.''')'
+ return
+ endif
+
+ let line = line('.')
+ let prefix = getline(line)[0:start-1]
+ let dict = HaddockIndexLookup(name)
+ if dict=={} | return | endif
+ let keylist = map(deepcopy(keys(dict)),'substitute(v:val,"\\[.\\]","","")')
+ if has("gui_running")
+ for key in keylist
+ " exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search("\\%1c\\(import\\\\|module\\\\|{-# OPTIONS\\)","nb"),"import '.key.importlist.'")<cr>'
+ exe 'amenu ]Popup.'.escape(key,'\.').' :call append(search(''\%1c\(\<import\>\\|\<module\>\\|{-# OPTIONS\\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.escape(importlist,'|').''')<cr>'
+ endfor
+ popup ]Popup
+ else
+ let s:choices = keylist
+ let key = input('import '.name.' from: ','','customlist,CompleteAux')
+ if key!=''
+ exe 'call append(search(''\%1c\(\<import\>\|\<module\>\|{-# OPTIONS\|{-# LANGUAGE\)'',''nb''),''import '.qualified.key.importlist.''')'
+ endif
+ endif
+endfunction
+
+function! HaddockIndexLookup(name)
+ call HaveIndex()
+ if !has_key(g:haddock_index,a:name)
+ echoerr a:name 'not found in haddock index'
+ return {}
+ endif
+ return g:haddock_index[a:name]
+endfunction
+
+" copied from ghc.vim :-( should we move everything to using autoload instead?
+" we query the ghc version here, as we don't otherwise need it..
+function! GHC_VersionGE(target)
+ let s:ghc_version = substitute(system(g:ghc . ' --numeric-version'),'\n','','')
+ let current = split(g:ghc_version, '\.' )
+ let target = a:target
+ for i in current
+ if ((target==[]) || (i>target[0]))
+ return 1
+ elseif (i==target[0])
+ let target = target[1:]
+ else
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+ftplugin/haskell_hpaste.vim [[[1
+79
+" rudimentary hpaste support for vim
+" (using netrw for reading, wget for posting/annotating)
+"
+" claus reinke, last modified: 07/04/2009
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+
+" unless wget is in your PATH, you need to set g:wget
+" before loading this script. windows users are out of
+" luck, unless they have wget installed (such as the
+" cygwin one looked for here), or adapt this script to
+" whatever alternative they have at hand (perhaps using
+" vim's perl/python bindings?)
+if !exists("g:wget")
+ if executable("wget")
+ let g:wget = "!wget -q"
+ else
+ let g:wget = "!c:\\cygwin\\bin\\wget -q"
+ endif
+endif
+
+" read (recent) hpaste files
+" show index in new buffer, where ,r will open current entry
+" and ,p will annotate current entry with current buffer
+command! HpasteIndex call HpasteIndex()
+function! HpasteIndex()
+ new
+ read http://hpaste.org
+ %s/\_$\_.//g
+ %s/<tr[^>]*>//g
+ %s/<\/tr>/ /g
+ g/<\/table>/d
+ g/DOCTYPE/d
+ %s/<td>\([^<]*\)<\/td><td><a href="\/fastcgi\/hpaste\.fcgi\/view?id=\([0-9]*\)">\([^<]*\)<\/a><\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td><td>\([^<]*\)<\/td>/\2 [\1] "\3" \4 \5 \6/
+ map <buffer> ,r 0yE:noh<cr>:call HpasteEditEntry('"')<cr>
+endfunction
+
+" load an existing entry for editing
+command! -nargs=1 HpasteEditEntry call HpasteEditEntry(<f-args>)
+function! HpasteEditEntry(entry)
+ new
+ exe 'Nread http://hpaste.org/fastcgi/hpaste.fcgi/raw?id='.a:entry
+ "exe 'map <buffer> ,p :call HpasteAnnotate('''.a:entry.''')<cr>'
+endfunction
+
+" " posting temporarily disabled -- needs someone to look into new
+" " hpaste.org structure
+
+" " annotate existing entry (only to be called via ,p in HpasteIndex)
+" function! HpasteAnnotate(entry)
+" let nick = input("nick? ")
+" let title = input("title? ")
+" if nick=='' || title==''
+" echo "nick or title missing. aborting annotation"
+" return
+" endif
+" call HpastePost('annotate/'.a:entry,nick,title)
+" endfunction
+"
+" " post new hpaste entry
+" " using 'wget --post-data' and url-encoded content
+" command! HpastePostNew call HpastePost('new',<args>)
+" function! HpastePost(mode,nick,title,...)
+" let lines = getbufline("%",1,"$")
+" let pat = '\([^[:alnum:]]\)'
+" let code = '\=printf("%%%02X",char2nr(submatch(1)))'
+" let lines = map(lines,'substitute(v:val."\r\n",'''.pat.''','''.code.''',''g'')')
+"
+" let url = 'http://hpaste.org/' . a:mode
+" let nick = substitute(a:nick,pat,code,'g')
+" let title = substitute(a:title,pat,code,'g')
+" if a:0==0
+" let announce = 'false'
+" else
+" let announce = a:1
+" endif
+" let cmd = g:wget.' --post-data="content='.join(lines,'').'&nick='.nick.'&title='.title.'&announce='.announce.'" '.url
+" exe escape(cmd,'%')
+" endfunction
+autoload/haskellmode.vim [[[1
+155
+"
+" utility functions for haskellmode plugins
+"
+" (Claus Reinke; last modified: 23/04/2009)
+"
+" part of haskell plugins: http://projects.haskell.org/haskellmode-vim
+" please send patches to <claus.reinke@talk21.com>
+
+
+
+" find start/extent of name/symbol under cursor;
+" return start, symbolic flag, qualifier, unqualified id
+" (this is used in both haskell_doc.vim and in GHC.vim)
+function! haskellmode#GetNameSymbol(line,col,off)
+ let name = "[a-zA-Z0-9_']"
+ let symbol = "[-!#$%&\*\+/<=>\?@\\^|~:.]"
+ "let [line] = getbufline(a:buf,a:lnum)
+ let line = a:line
+
+ " find the beginning of unqualified id or qualified id component
+ let start = (a:col - 1) + a:off
+ if line[start] =~ name
+ let pattern = name
+ elseif line[start] =~ symbol
+ let pattern = symbol
+ else
+ return []
+ endif
+ while start > 0 && line[start - 1] =~ pattern
+ let start -= 1
+ endwhile
+ let id = matchstr(line[start :],pattern.'*')
+ " call confirm(id)
+
+ " expand id to left and right, to get full id
+ let idPos = id[0] == '.' ? start+2 : start+1
+ let posA = match(line,'\<\(\([A-Z]'.name.'*\.\)\+\)\%'.idPos.'c')
+ let start = posA>-1 ? posA+1 : idPos
+ let posB = matchend(line,'\%'.idPos.'c\(\([A-Z]'.name.'*\.\)*\)\('.name.'\+\|'.symbol.'\+\)')
+ let end = posB>-1 ? posB : idPos
+
+ " special case: symbolic ids starting with .
+ if id[0]=='.' && posA==-1
+ let start = idPos-1
+ let end = posB==-1 ? start : end
+ endif
+
+ " classify full id and split into qualifier and unqualified id
+ let fullid = line[ (start>1 ? start-1 : 0) : (end-1) ]
+ let symbolic = fullid[-1:-1] =~ symbol " might also be incomplete qualified id ending in .
+ let qualPos = matchend(fullid, '\([A-Z]'.name.'*\.\)\+')
+ let qualifier = qualPos>-1 ? fullid[ 0 : (qualPos-2) ] : ''
+ let unqualId = qualPos>-1 ? fullid[ qualPos : -1 ] : fullid
+ " call confirm(start.'/'.end.'['.symbolic.']:'.qualifier.' '.unqualId)
+
+ return [start,symbolic,qualifier,unqualId]
+endfunction
+
+function! haskellmode#GatherImports()
+ let imports={0:{},1:{}}
+ let i=1
+ while i<=line('$')
+ let res = haskellmode#GatherImport(i)
+ if !empty(res)
+ let [i,import] = res
+ let prefixPat = '^import\s*\(qualified\)\?\s\+'
+ let modulePat = '\([A-Z][a-zA-Z0-9_''.]*\)'
+ let asPat = '\(\s\+as\s\+'.modulePat.'\)\?'
+ let hidingPat = '\(\s\+hiding\s*\((.*)\)\)\?'
+ let listPat = '\(\s*\((.*)\)\)\?'
+ let importPat = prefixPat.modulePat.asPat.hidingPat.listPat ".'\s*$'
+
+ let ml = matchlist(import,importPat)
+ if ml!=[]
+ let [_,qualified,module,_,as,_,hiding,_,explicit;x] = ml
+ let what = as=='' ? module : as
+ let hidings = split(hiding[1:-2],',')
+ let explicits = split(explicit[1:-2],',')
+ let empty = {'lines':[],'hiding':hidings,'explicit':[],'modules':[]}
+ let entry = has_key(imports[1],what) ? imports[1][what] : deepcopy(empty)
+ let imports[1][what] = haskellmode#MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ if !(qualified=='qualified')
+ let imports[0][what] = haskellmode#MergeImport(deepcopy(entry),i,hidings,explicits,module)
+ endif
+ else
+ echoerr "haskellmode#GatherImports doesn't understand: ".import
+ endif
+ endif
+ let i+=1
+ endwhile
+ if !has_key(imports[1],'Prelude')
+ let imports[0]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ let imports[1]['Prelude'] = {'lines':[],'hiding':[],'explicit':[],'modules':[]}
+ endif
+ return imports
+endfunction
+
+function! haskellmode#ListElem(list,elem)
+ for e in a:list | if e==a:elem | return 1 | endif | endfor
+ return 0
+endfunction
+
+function! haskellmode#ListIntersect(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)!=-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! haskellmode#ListUnion(list1,list2)
+ let l = []
+ for e in a:list2 | if index(a:list1,e)==-1 | let l += [e] | endif | endfor
+ return a:list1 + l
+endfunction
+
+function! haskellmode#ListWithout(list1,list2)
+ let l = []
+ for e in a:list1 | if index(a:list2,e)==-1 | let l += [e] | endif | endfor
+ return l
+endfunction
+
+function! haskellmode#MergeImport(entry,line,hiding,explicit,module)
+ let lines = a:entry['lines'] + [ a:line ]
+ let hiding = a:explicit==[] ? haskellmode#ListIntersect(a:entry['hiding'], a:hiding)
+ \ : haskellmode#ListWithout(a:entry['hiding'],a:explicit)
+ let explicit = haskellmode#ListUnion(a:entry['explicit'], a:explicit)
+ let modules = haskellmode#ListUnion(a:entry['modules'], [ a:module ])
+ return {'lines':lines,'hiding':hiding,'explicit':explicit,'modules':modules}
+endfunction
+
+" collect lines belonging to a single import statement;
+" return number of last line and collected import statement
+" (assume opening parenthesis, if any, is on the first line)
+function! haskellmode#GatherImport(lineno)
+ let lineno = a:lineno
+ let import = getline(lineno)
+ if !(import=~'^import\s') | return [] | endif
+ let open = strlen(substitute(import,'[^(]','','g'))
+ let close = strlen(substitute(import,'[^)]','','g'))
+ while open!=close
+ let lineno += 1
+ let linecont = getline(lineno)
+ let open += strlen(substitute(linecont,'[^(]','','g'))
+ let close += strlen(substitute(linecont,'[^)]','','g'))
+ let import .= linecont
+ endwhile
+ return [lineno,import]
+endfunction
+
+function! haskellmode#UrlEncode(string)
+ let pat = '\([^[:alnum:]]\)'
+ let code = '\=printf("%%%02X",char2nr(submatch(1)))'
+ let url = substitute(a:string,pat,code,'g')
+ return url
+endfunction
+
+doc/haskellmode.txt [[[1
+456
+*haskellmode.txt* Haskell Mode Plugins 23/04/2009
+
+Authors:
+ Claus Reinke <claus.reinke@talk21.com> ~
+
+Homepage:
+ http://projects.haskell.org/haskellmode-vim
+
+CONTENTS *haskellmode*
+
+ 1. Overview |haskellmode-overview|
+ 1.1 Runtime Requirements |haskellmode-requirements|
+ 1.2 Quick Reference |haskellmode-quickref|
+ 2. Settings |haskellmode-settings|
+ 2.1 GHC and web browser |haskellmode-settings-main|
+ 2.2 Fine tuning - more configuration options |haskellmode-settings-fine|
+ 3. GHC Compiler Integration |haskellmode-compiler|
+ 4. Haddock Integration |haskellmode-haddock|
+ 4.1 Indexing |haskellmode-indexing|
+ 4.2 Lookup |haskellmode-lookup|
+ 4.3 Editing |haskellmode-editing|
+ 5. Hpaste Integration |haskellmode-hpaste|
+ 6. Additional Resources |haskellmode-resources|
+
+==============================================================================
+ *haskellmode-overview*
+1. Overview ~
+
+ The Haskell mode plugins provide advanced support for Haskell development
+ using GHC/GHCi on Windows and Unix-like systems. The functionality is
+ based on Haddock-generated library indices, on GHCi's interactive
+ commands, or on simply activating (some of) Vim's built-in program editing
+ support in Haskell-relevant fashion. These plugins live side-by-side with
+ the pre-defined |syntax-highlighting| support for |haskell| sources, and
+ any other Haskell-related plugins you might want to install (see
+ |haskellmode-resources|).
+
+ The Haskell mode plugins consist of three filetype plugins (haskell.vim,
+ haskell_doc.vim, haskell_hpaste.vim), which by Vim's |filetype| detection
+ mechanism will be auto-loaded whenever files with the extension '.hs' are
+ opened, and one compiler plugin (ghc.vim) which you will need to load from
+ your vimrc file (see |haskellmode-settings|).
+
+
+ *haskellmode-requirements*
+1.1 Runtime Requirements ~
+
+ The plugins require a recent installation of GHC/GHCi. The functionality
+ derived from Haddock-generated library indices also requires a local
+ installation of the Haddock documentation for GHC's libraries (if there is
+ no documentation package for your system, you can download a tar-ball from
+ haskell.org), as well as an HTML browser (see |haddock_browser|). If you
+ want to use the experimental hpaste interface, you will also need Wget.
+
+ * GHC/GHCi ~
+ Provides core functionality. http://www.haskell.org/ghc
+
+ * HTML library documentation files and indices generated by Haddock ~
+ These usually come with your GHC installation, possibly as a separate
+ package. If you cannot get them this way, you can download a tar-ball
+ matching your GHC version from http://www.haskell.org/ghc/docs/
+
+ * HTML browser with basic CSS support ~
+ For browsing Haddock docs.
+
+ * Wget ~
+ For interfacing with http://hpaste.org.
+
+ Wget is widely available for modern Unix-like operating systems. Several
+ ports also exist for Windows, including:
+
+ - Official GNU Wget (natively compiled for Win32)
+ http://www.gnu.org/software/wget/#downloading
+
+ - UnxUtils Wget (natively compiled for Win32, bundled with other ported
+ Unix utilities)
+ http://sourceforge.net/projects/unxutils/
+
+ - Cygwin Wget (emulated POSIX in Win32, must be run under Cygwin)
+ http://cygwin.com/packages/wget/
+
+ *haskellmode-quickref*
+1.2 Quick Reference ~
+
+|:make| load into GHCi, show errors (|quickfix| |:copen|)
+|_ct| create |tags| file
+|_si| show info for id under cursor
+|_t| show type for id under cursor
+|_T| insert type declaration for id under cursor
+|balloon| show type for id under mouse pointer
+|_?| browse Haddock entry for id under cursor
+|_?1| search Hoogle for id under cursor
+|_?2| search Hayoo! for id under cursor
+|:IDoc| {identifier} browse Haddock entry for unqualified {identifier}
+|:MDoc| {module} browse Haddock entry for {module}
+|:FlagReference| {s} browse Users Guide Flag Reference for section {s}
+|_.| qualify unqualified id under cursor
+|_i| add 'import <module>(<identifier>)' for id under cursor
+|_im| add 'import <module>' for id under cursor
+|_iq| add 'import qualified <module>(<identifier>)' for id under cursor
+|_iqm| add 'import qualified <module>' for id under cursor
+|_ie| make imports explit for import statement under cursor
+|_opt| add OPTIONS_GHC pragma
+|_lang| add LANGUAGE pragma
+|i_CTRL-X_CTRL-O| insert-mode completion based on imported ids (|haskellmode-XO|)
+|i_CTRL-X_CTRL-U| insert-mode completion based on documented ids (|haskellmode-XU|)
+|i_CTRL-N| insert-mode completion based on imported sources
+|:GHCi|{command/expr} run GHCi command/expr in current module
+
+|:GHCStaticOptions| edit static GHC options for this buffer
+|:DocSettings| show current Haddock-files-related plugin settings
+|:DocIndex| populate Haddock index
+|:ExportDocIndex| cache current Haddock index to a file
+|:HpasteIndex| Read index of most recent entries from hpaste.org
+|:HpastePostNew| Submit current buffer as a new hpaste
+
+
+==============================================================================
+ *haskellmode-settings*
+2. Settings ~
+
+ The plugins try to find their dependencies in standard locations, so if
+ you're lucky, you will only need to set |compiler| to ghc, and configure
+ the location of your favourite web browser. You will also want to make
+ sure that |filetype| detection and |syntax| highlighting are on. Given the
+ variety of things to guess, however, some dependencies might not be found
+ correctly, or the defaults might not be to your liking, in which case you
+ can do some more fine tuning. All of this configuration should happen in
+ your |vimrc|.
+>
+ " enable syntax highlighting
+ syntax on
+
+ " enable filetype detection and plugin loading
+ filetype plugin on
+<
+
+ *haskellmode-settings-main*
+2.1 GHC and web browser ~
+
+ *compiler-ghc* *ghc-compiler*
+ To use the features provided by the GHC |compiler| plugin, use the
+ following |autocommand| in your vimrc:
+>
+ au BufEnter *.hs compiler ghc
+<
+ *g:ghc*
+ If the compiler plugin can't locate your GHC binary, or if you have
+ several versions of GHC installed and have a preference as to which binary
+ is used, set |g:ghc|:
+>
+ :let g:ghc="/usr/bin/ghc-6.6.1"
+<
+ *g:haddock_browser*
+ The preferred HTML browser for viewing Haddock documentation can be set as
+ follows:
+>
+ :let g:haddock_browser="/usr/bin/firefox"
+<
+
+ *haskellmode-settings-fine*
+2.2 Fine tuning - more configuration options ~
+
+ Most of the fine tuning is likely to happen for the haskellmode_doc.vim
+ plugin, so you can check the current settings for this plugin via the
+ command |:DocSettings|. If all the settings reported there are to your
+ liking, you probably won't need to do any fine tuning.
+
+ *g:haddock_browser_callformat*
+ By default, the web browser|g:haddock_browser| will be started
+ asynchronously (in the background) on Windows or when vim is running in a
+ GUI, and synchronously (in the foreground) otherwise. These settings seem
+ to work fine if you are using a console mode browser (eg, when editing in
+ a remote session), or if you are starting a GUI browser that will launch
+ itself in the background. But if these settings do not work for you, you
+ can change the default browser launching behavior.
+
+ This is controlled by |g:haddock_browser_callformat|. It specifies a
+ format string which uses two '%s' parameters, the first representing the
+ path of the browser to launch, and the second is the documentation URL
+ (minus the protocol specifier, i.e. file://) passed to it by the Haddock
+ plugin. For instance, to launch a GUI browser on Unix-like systems and
+ force it to the background (see also |shellredir|):
+>
+ :let g:haddock_browser_callformat = '%s file://%s '.printf(&shellredir,'/dev/null').' &'
+<
+ *g:haddock_docdir*
+ Your system's installed Haddock documentation for GHC and its libraries
+ should be automatically detected. If the plugin can't locate them, you
+ must point |g:haddock_docdir| to the path containing the master index.html
+ file for the subdirectories 'libraries', 'Cabal', 'users_guide', etc.:
+>
+ :let g:haddock_docdir="/usr/local/share/doc/ghc/html/"
+<
+ *g:haddock_indexfiledir*
+ The information gathered from Haddock's index files will be stored in a
+ file called 'haddock_index.vim' in a directory derived from the Haddock
+ location, or in $HOME. To configure another directory for the index file,
+ use:
+>
+ :let g:haddock_indexfiledir="~/.vim/"
+<
+ *g:wget*
+ If you also want to try the experimental hpaste functionality, you might
+ you need to set |g:wget| before the |hpaste| plugin is loaded (unless wget
+ is in your PATH):
+>
+ :let g:wget="C:\Program Files\wget\wget.exe"
+<
+
+ Finally, the mappings actually use|<LocalLeader>|behind the scenes, so if
+ you have to, you can redefine|maplocalleader|to something other than '_'.
+ Just remember that the docs still refer to mappings starting with '_', to
+ avoid confusing the majority of users!-)
+
+==============================================================================
+ *haskellmode-compiler* *ghc*
+3. GHC Compiler Integration ~
+
+ The GHC |compiler| plugin sets the basic |errorformat| and |makeprg| to
+ enable |quickfix| mode using GHCi, and provides functionality for show
+ info (|_si|), show type (|_t| or mouse |balloon|), add type declaration
+ (|_T|), create tag file (|_ct|), and insert-mode completion
+ (|i_CTRL-X_CTRL-O|) based on GHCi browsing of the current and imported
+ modules.
+
+ To avoid frequent calls to GHCi, type information is cached in Vim. The
+ cache will be populated the first time a command depends on it, and will
+ be refreshed every time a |:make| goes through without generating errors
+ (if the |:make| does not succeed, the old types will remain available in
+ Vim). You can also unconditionally force reloading of type info using
+ |:GHCReload| (if GHCi cannot load your file, the type info will be empty).
+
+
+ In addition to the standard|quickfix| commands, the GHC compiler plugin
+ provides:
+
+ *:GHCReload*
+:GHCReload Reload modules and unconditionally refresh cache of
+ type info. Usually, |:make| is prefered, as that will
+ refresh the cache only if GHCi reports no errors, and
+ show the errors otherwise.
+
+ *:GHCStaticOptions*
+:GHCStaticOptions Edit the static GHC options for the current buffer.
+ Useful for adding hidden packages (-package ghc).
+
+ *:GHCi*
+:GHCi {command/expr} Run GHCi commands/expressions in the current module.
+
+ *_ct*
+_ct Create |tags| file for the current Haskell source
+ file. This uses GHCi's :ctags command, so it will work
+ recursively, but will only list tags for exported
+ entities.
+
+ *_opt*
+_opt Shows a menu of frequently used GHC compiler options
+ (selecting an entry adds the option as a pragma to the
+ start of the file). Uses popup menu (GUI) or :emenu
+ and command-line completion (CLI).
+
+ *_lang*
+_lang Shows a menu of the LANGUAGE options supported by GHC
+ (selecting an entry adds the language as a pragma to
+ the start of the file). Uses popup menu (GUI) or
+ :emenu and command-line completion (CLI).
+
+ *_si*
+_si Show extended information for the name under the
+ cursor. Uses GHCi's :info command. Output appears in
+ |preview-window| (when done, close with |:pclose|).
+
+ *_t*
+_t Show type for the name under the cursor. Uses cached
+ info from GHCi's :browse command.
+
+ *_T*
+_T Insert type declaration for the name under the cursor.
+ Uses cached info from GHCi's :browse command.
+
+ *haskellmode-XO* *haskellmode-omni-completion*
+CTRL-X CTRL-O Standard insert-mode omni-completion based on the
+ cached type info from GHCi browsing current and
+ imported modules. Only names from the current and from
+ imported modules are included (the completion menu
+ also show the type of each identifier).
+
+==============================================================================
+ *haskellmode-haddock* *haddock*
+4. Haddock Integration ~
+
+ Haskell mode integrates with Haddock-generated HTML documentation,
+ providing features such as navigating to the Haddock entry for the
+ identifier under the cursor (|_?|), completion for the identifier under
+ the cursor (|i_CTRL-X_CTRL-U|), and adding import statements (|_i| |_im|
+ |_iq| |_iqm|) or module qualifier (|_.|) for the identifier under the
+ cursor.
+
+ These commands operate on an internal Haddock index built from the
+ platform's installed Haddock documentation for GHC's libraries. Since
+ populating this index takes several seconds, it should be stored as a
+ file called 'haddock_index.vim' in the directory specified by
+ |g:haddock_indexfiledir|.
+
+ Some commands present a different interface (popup menu or command-line
+ completion) according to whether the current Vim instance is graphical or
+ console-based (actually: whether or not the GUI is running). Such
+ differences are marked below with the annotations (GUI) and (CLI),
+ respectively.
+
+ |:DocSettings| shows the settings for this plugin. If you are happy with
+ them, you can call |:ExportDocIndex| to populate and write out the
+ documentation index (should be called once for every new version of GHC).
+
+ *:DocSettings*
+:DocSettings Show current Haddock-files-related plugin settings.
+
+
+ *haskellmode-indexing*
+4.1 Indexing ~
+
+ *:DocIndex*
+:DocIndex Populate the Haddock index from the GHC library
+ documentation.
+
+ *:ExportDocIndex*
+:ExportDocIndex Cache the current Haddock index to a file (populate
+ index first, if empty).
+
+
+ *haskellmode-lookup*
+4.2 Lookup ~
+
+ *_?*
+_? Open the Haddock entry (in |haddock_browser|) for an
+ identifier under the cursor, selecting full
+ qualifications from a popup menu (GUI) or via
+ command-line completion (CLI), if the identifier is
+ not qualified.
+
+ *_?1*
+_?1 Search Hoogle (using |haddock_browser|) for an
+ identifier under the cursor.
+
+
+ *_?2*
+_?2 Search Hayoo! (using |haddock_browser|) for an
+ identifier under the cursor.
+
+ *:IDoc*
+:IDoc {identifier} Open the Haddock entry for the unqualified
+ {identifier} in |haddock_browser|, suggesting possible
+ full qualifications.
+
+ *:MDoc*
+:MDoc {module} Open the Haddock entry for {module} in
+ |haddock_browser| (with command-line completion for
+ the fully qualified module name).
+
+ *:FlagReference*
+:FlagReference {s} Browse Users Guide Flag Reference for section {s}
+ (with command-line completion for section headers).
+
+
+ *haskellmode-editing*
+4.3 Editing ~
+
+ *_.*
+_. Fully qualify the unqualified name under the cursor
+ selecting full qualifications from a popup menu (GUI)
+ or via command-line completion (CLI).
+
+ *_iq* *_i*
+_i _iq Add 'import [qualified] <module>(<identifier>)'
+ statement for the identifier under the cursor,
+ selecting fully qualified modules from a popup menu
+ (GUI) or via command-line completion (CLI), if the
+ identifier is not qualified. This currently adds one
+ import statement per call instead of merging into
+ existing import statements.
+
+ *_iqm* *_im*
+_im Add 'import [qualified] <module>' statement for the
+ identifier under the cursor, selecting fully qualified
+ modules from a popup menu (GUI) or via command-line
+ completion (CLI), if the identifier is not qualified.
+ This currently adds one import statement per call
+ instead of merging into existing import statements.
+
+ *_ie*
+_ie On an 'import <module>' line, in a correctly loadable
+ module, temporarily comment out import and use :make
+ 'not in scope' errors to explicitly list imported
+ identifiers.
+
+ *haskellmode-XU* *haskellmode-user-completion*
+CTRL-X CTRL-U User-defined insert mode name completion based on all
+ names known to the Haddock index, including package
+ names. Completions are presented in a popup menu which
+ also displays the fully qualified module from which
+ each entry may be imported.
+
+ CamelCode shortcuts are supported, meaning that
+ lower-case letters can be elided, using only
+ upper-case letters and module qualifier separators (.)
+ for disambiguation:
+
+ pSL -> putStrLn
+ C.E.t -> Control.Exception.t
+ C.M.MP -> Control.Monad.MonadPlus
+
+ To reduce unwanted matches, the first letter of such
+ shortcuts and the first letter after each '.' have to
+ match directly.
+
+==============================================================================
+ *haskellmode-hpaste* *hpaste*
+5. Hpaste Integration ~
+
+ This experimental feature allows browsing and posting to
+ http://hpaste.org, a Web-based pastebin tailored for Haskell code.
+
+
+ *:HpasteIndex*
+:HpasteIndex Read the most recent entries from hpaste.org. Show an
+ index of the entries in a new buffer, where ',r' will
+ open the current highlighted entry [and ',p' will
+ annotate it with the current buffer].
+
+ *:HpastePostNew*
+:HpastePostNew Submit current buffer as a new hpaste entry.
+ [This, and ',p' above, are temporarily disabled,
+ needs update to new hpaste.org layout]
+
+==============================================================================
+ *haskellmode-resources*
+6. Additional Resources ~
+
+ An quick screencast tour through of these plugins is available at:
+
+ http://projects.haskell.org/haskellmode-vim/screencasts.html
+
+ Other Haskell-related Vim plugins can be found here:
+
+ http://www.haskell.org/haskellwiki/Libraries_and_tools/Program_development#Vim
+
+ Make sure to read about Vim's other program-editing features in its online
+ |user-manual|. Also have a look at Vim tips and plugins at www.vim.org -
+ two other plugins I tend to use when editing Haskell are AlignPlugin.vim
+ (to line up regexps for definitions, keywords, comments, etc. in
+ consecutive lines) and surround.vim (to surround text with quotes,
+ brackets, parentheses, comments, etc.).
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:
diff --git a/.vim/indent/indent-r.vim b/.vim/indent/indent-r.vim
new file mode 100644
index 0000000..30c03c5
--- /dev/null
+++ b/.vim/indent/indent-r.vim
@@ -0,0 +1,50 @@
+" Vim indent file
+" Language: R
+" Author: Jeremy Stephens <jeremy.f.stephens@vanderbilt.edu>
+" URL:
+" Last Change:
+" Version:
+" Notes:
+" Changes:
+" Options:
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetRIndent()
+"setlocal indentkeys+=0=,0),=EO
+setlocal indentkeys+=0=,0),=EO,=>
+
+" Only define the function once.
+if exists("*GetRIndent")
+ finish
+endif
+
+function GetRIndent()
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let line = getline(lnum) " last line
+ let cline = getline(v:lnum) " current line
+ let pline = getline(lnum - 1) " previous to last line
+ let ind = indent(lnum)
+
+ " Indent blocks enclosed by {} or ()
+ "if line =~ '[{(]\s*\(#[^)}]*\)\=$'
+ if line =~ '[{(]\s*[^)}]*$'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[)}]'
+ let ind = ind - &sw
+ endif
+
+ return ind
+endfunction
+" vim: set ts=4 sw=4:
diff --git a/.vim/indent/tex.vim b/.vim/indent/tex.vim
new file mode 100644
index 0000000..5823dae
--- /dev/null
+++ b/.vim/indent/tex.vim
@@ -0,0 +1,139 @@
+" Vim indent file
+" Language: LaTeX
+" Maintainer: Johannes Tanzler <jtanzler@yline.com>
+" Created: Sat, 16 Feb 2002 16:50:19 +0100
+" Last Change: Sun, 17 Feb 2002 00:09:11 +0100
+" Last Update: 18th feb 2002, by LH :
+" (*) better support for the option
+" (*) use some regex instead of several '||'.
+" Version: 0.02
+" URL: comming soon: http://www.unet.univie.ac.at/~a9925098/vim/indent/tex.vim
+
+" --> If you're a Vim guru & and you find something that could be done in a
+" better (perhaps in a more Vim-ish or Vi-ish) way, please let me know!
+
+" Options: {{{
+"
+" To set the following options (ok, currently it's just one), add a line like
+" let g:tex_indent_items = 1
+" to your ~/.vimrc.
+"
+" * g:tex_indent_items
+"
+" If this variable is set, item-environments are indented like Emacs does
+" it, i.e., continuation lines are indented with a shiftwidth.
+"
+" NOTE: I've already set the variable below; delete the corresponding line
+" if you don't like this behaviour.
+"
+" Per default, it is unset.
+"
+" set unset
+" ----------------------------------------------------------------
+" \begin{itemize} \begin{itemize}
+" \item blablabla \item blablabla
+" bla bla bla bla bla bla
+" \item blablabla \item blablabla
+" bla bla bla bla bla bla
+" \end{itemize} \end{itemize}
+"
+"
+" This option applies to itemize, description, enumerate, and
+" thebibliography.
+"
+" }}}
+
+" Delete the next line to avoid the special indention of items
+if !exists("g:tex_indent_items")
+ let g:tex_indent_items = 1
+endif
+
+if exists("b:did_indent") | finish
+endif
+let b:did_indent = 1
+
+
+setlocal indentexpr=GetTeXIndent()
+setlocal nolisp
+setlocal nosmartindent
+setlocal autoindent
+setlocal indentkeys+=},=\\item,=\\bibitem
+
+
+" Only define the function once
+if exists("*GetTeXIndent") | finish
+endif
+
+
+
+function GetTeXIndent()
+
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " At the start of the file use zero indent.
+ if lnum == 0 | return 0
+ endif
+
+ let ind = indent(lnum)
+ let line = getline(lnum) " last line
+ let cline = getline(v:lnum) " current line
+
+ " Do not change indentation of commented lines.
+ if line =~ '^\s*%'
+ return ind
+ endif
+
+ " Add a 'shiftwidth' after beginning of environments.
+ " Don't add it for \begin{document} and \begin{verbatim}
+ ""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim'
+ " LH modification : \begin does not always start a line
+ if line =~ '\\begin{\(.*\)}' && line !~ 'verbatim'
+ \ && line !~ 'document'
+
+ let ind = ind + &sw
+
+ if g:tex_indent_items == 1
+ " Add another sw for item-environments
+ if line =~ 'itemize\|description\|enumerate\|thebibliography'
+ let ind = ind + &sw
+ endif
+ endif
+ endif
+
+
+ " Subtract a 'shiftwidth' when an environment ends
+ if cline =~ '^\s*\\end' && cline !~ 'verbatim'
+ \&& cline !~ 'document'
+
+ if g:tex_indent_items == 1
+ " Remove another sw for item-environments
+ if cline =~ 'itemize\|description\|enumerate\|thebibliography'
+ let ind = ind - &sw
+ endif
+ endif
+
+ let ind = ind - &sw
+ endif
+
+
+ " Special treatment for 'item'
+ " ----------------------------
+
+ if g:tex_indent_items == 1
+
+ " '\item' or '\bibitem' itself:
+ if cline =~ '^\s*\\\(bib\)\=item'
+ let ind = ind - &sw
+ endif
+
+ " lines following to '\item' are intented once again:
+ if line =~ '^\s*\\\(bib\)\=item'
+ let ind = ind + &sw
+ endif
+
+ endif
+
+ return ind
+endfunction
+
diff --git a/.vim/kde-devel-vim.vim b/.vim/kde-devel-vim.vim
new file mode 100644
index 0000000..7ce39a9
--- /dev/null
+++ b/.vim/kde-devel-vim.vim
@@ -0,0 +1,1029 @@
+" To use this file, add this line to your ~/.vimrc:, w/o the dquote
+" source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim
+"
+" For CreateChangeLogEntry() : If you don't want to re-enter your
+" Name/Email in each vim session then make sure to have the viminfo
+" option enabled in your ~/.vimrc, with the '!' flag, enabling persistent
+" storage of global variables. Something along the line of
+" set viminfo=%,!,'50,\"100,:100,n~/.viminfo
+" should do the trick.
+"
+" To make use of the ,ll and ,lg shortcuts you need to have the files
+" GPLHEADER and LGPLHEADER in your home directory. Their content will be
+" copied as license header then.
+
+" Don't include these in filename completions
+set suffixes+=.lo,.o,.moc,.la,.closure,.loT
+
+" Search for headers here
+set path=.,/usr/include,/usr/local/include,
+if $QTDIR != ''
+ let &path = &path . $QTDIR . '/include/,'
+ let &path = &path . $QTDIR . '/include/Qt/,'
+ let &path = &path . $QTDIR . '/include/QtCore/,'
+ let &path = &path . $QTDIR . '/include/Qt3Support/,'
+ let &path = &path . $QTDIR . '/include/QtAssistant/,'
+ let &path = &path . $QTDIR . '/include/QtDBus/,'
+ let &path = &path . $QTDIR . '/include/QtDesigner/,'
+ let &path = &path . $QTDIR . '/include/QtGui/,'
+ let &path = &path . $QTDIR . '/include/QtNetwork/,'
+ let &path = &path . $QTDIR . '/include/QtOpenGL/,'
+ let &path = &path . $QTDIR . '/include/QtSql/,'
+ let &path = &path . $QTDIR . '/include/QtSvg/,'
+ let &path = &path . $QTDIR . '/include/QtTest/,'
+ let &path = &path . $QTDIR . '/include/QtUiTools/,'
+ let &path = &path . $QTDIR . '/include/QtXml/,'
+endif
+if $KDEDIR != ''
+ let &path = &path . $KDEDIR . '/include/,'
+endif
+if $KDEDIRS != ''
+ let &path = &path . substitute( $KDEDIRS, '\(:\|$\)', '/include,', 'g' )
+endif
+set path+=,
+
+" Use makeobj to build
+set mp=makeobj
+
+" If TagList is Loaded then get a funny statusline
+" Only works if kde-devel-vim.vim is loaded after taglist.
+" Droping this script in ~/.vim/plugin works fine
+if exists('loaded_taglist')
+ let Tlist_Process_File_Always=1
+ set statusline=%<%f:[\ %{Tlist_Get_Tag_Prototype_By_Line()}\ ]\ %h%m%r%=%-14.(%l,%c%V%)\ %P
+endif
+
+" Insert tab character in whitespace-only lines, complete otherwise
+inoremap <Tab> <C-R>=SmartTab()<CR>
+
+if !exists("DisableSmartParens")
+" Insert a space after ( or [ and before ] or ) unless preceded by a matching
+" paren/bracket or space or inside a string or comment. Comments are only
+" recognized as such if they start on the current line :-(
+inoremap ( <C-R>=SmartParens( '(' )<CR>
+inoremap [ <C-R>=SmartParens( '[' )<CR>
+inoremap ] <C-R>=SmartParens( ']', '[' )<CR>
+inoremap ) <C-R>=SmartParens( ')', '(' )<CR>
+endif
+
+" Insert an #include statement for the current/last symbol
+inoremap <F5> <C-O>:call AddHeader()<CR>
+
+" Insert a forward declaration for the current/last symbol
+inoremap <S-F5> <C-O>:call AddForward()<CR>
+
+" Switch between header and implementation files on ,h
+nmap <silent> ,h :call SwitchHeaderImpl()<CR>
+nmap <silent> ,p :call SwitchPrivateHeaderImpl()<CR>
+
+" Comment selected lines on ,c in visual mode
+vmap ,c :s,^,//X ,<CR>:noh<CR>
+" Uncomment selected lines on ,u in visual mode
+vmap ,u :s,^//X ,,<CR>
+
+" Insert an include guard based on the file name on ,i
+nmap ,i :call IncludeGuard()<CR>
+
+" Insert license headers at the top of the file
+nmap ,lg :call LicenseHeader( "GPL" )<CR>
+nmap ,ll :call LicenseHeader( "LGPL" )<CR>
+nmap ,lm :call LicenseHeader( "MIT" )<CR>
+
+" Insert simple debug statements into each method
+nmap ,d :call InsertMethodTracer()<CR>
+
+" Expand #i to #include <.h> or #include ".h". The latter is chosen
+" if the character typed after #i is a dquote
+" If the character is > #include <> is inserted (standard C++ headers w/o .h)
+iab #i <C-R>=SmartInclude()<CR>
+
+" Insert a stripped down CVS diff
+iab DIFF <Esc>:call RunDiff()<CR>
+
+" mark 'misplaced' tab characters
+set listchars=tab:·\ ,trail:·
+set list
+
+set incsearch
+
+function! SetCodingStyle()
+ if &syntax == 'cmake'
+ call SmartParensOff()
+ set sw=3
+ set ts=3
+ set et
+ set tw=0
+ return
+ endif
+ if ( &syntax !~ '^\(c\|cpp\|java\)$' )
+ return
+ endif
+ "the path for the file
+ let pathfn = expand( '%:p:h' )
+ if pathfn =~ 'nmm'
+ call SmartParensOff()
+ inoremap ( <C-R>=SpaceBetweenKeywordAndParens()<CR>
+ let g:need_brace_on_next_line = '\<\(class\|namespace\|struct\)\>'
+ let g:need_brace_on_same_line = '\<\(if\|else\|while\|switch\|do\|enum\|for\|try\|catch\)\>'
+ set sw=4
+ set ts=4
+ set noet
+ set tw=100
+ elseif pathfn =~ 'kdepim'
+ if strlen(mapcheck('(','i')) > 0
+ iunmap (
+ endif
+ call SmartParensOn()
+ let g:need_brace_on_next_line = '\<\(class\|namespace\|struct\)\>'
+ let g:need_brace_on_same_line = '\<\(if\|else\|while\|switch\|do\|foreach\|forever\|enum\|for\|try\|catch\)\>'
+ set sw=2
+ set sts=2
+ set et
+ set tw=100
+ elseif pathfn =~ 'kdemultimedia\/juk'
+ call SmartParensOff()
+ let g:need_brace_on_next_line = '\<\(class\|namespace\|struct\|if\|else\|while\|switch\|do\|foreach\|forever\|enum\|for\|try\|catch\)\>'
+ let g:need_brace_on_same_line = ''
+ set sw=4
+ set sts=4
+ set et
+ set tw=100
+ else "if pathfn =~ '\(kdelibs\|qt-copy\)'
+ call SmartParensOff()
+ inoremap ( <C-R>=SpaceBetweenKeywordAndParens()<CR>
+ let g:need_brace_on_next_line = '\<\(class\|namespace\|struct\)\>'
+ let g:need_brace_on_same_line = '\<\(if\|else\|while\|switch\|do\|foreach\|forever\|enum\|for\|try\|catch\)\>'
+ set sw=4
+ set sts=4
+ set et
+ set tw=100
+ endif
+ if ( !exists("g:noautobrace") )
+ call EnableSmartLineBreak()
+ endif
+endfunction
+
+function! DisableSmartLineBreak()
+ iunmap <CR>
+ iuna else
+endfunction
+function! EnableSmartLineBreak()
+ if exists("*pumvisible")
+ inoremap <CR> <C-R>=pumvisible() ? "\<lt>CR>" : "\<lt>ESC>:call SmartLineBreak()\<lt>CR>a\<lt>CR>"<CR>
+ else
+ inoremap <CR> <ESC>:call SmartLineBreak()<CR>a<CR>
+ endif
+ iab else <C-R>=SmartElse()<CR>
+endfunction
+
+function! SmartElse()
+ "let next = nr2char( getchar( 0 ) )
+ let prefix = ''
+ if strlen(g:need_brace_on_same_line) > 0 && 'else' =~ g:need_brace_on_same_line
+ if getline('.') =~ '^\s*$'
+ if getline(line('.') - 1) =~ '}$'
+ let prefix = prefix . "\<ESC>kmMjdd`MA "
+ elseif getline(line('.') - 1) =~ '}\s*$'
+ let prefix = prefix . "\<ESC>kmMjdd`MA"
+ endif
+ endif
+ endif
+ return prefix . "else\<Right>"
+endfunction
+
+" automatic indenting is required for SmartLineBreak to work correctly
+filetype indent on
+
+function! CreateMatchLine()
+ let linenum = line( '.' )
+ let current_line = getline( linenum )
+ " don't do magic if the cursor isn't at the end of the line or if it's
+ " inside a // comment
+ if col( '.' ) != strlen( current_line ) || match( current_line, '//' ) >= 0
+ return ''
+ endif
+ " remove whitespace at the end
+ if match( current_line, '\s\+$' ) >= 0
+ :execute ':s/\s*$//'
+ " the following is needed if return '' is called
+ :execute "normal $"
+ endif
+ let current_line = getline( linenum )
+ " remove all /* */ comments
+ let current_line = substitute( current_line, '/\*.\{-}\*/', '', 'g' )
+ " remove all strings
+ let current_line = substitute( current_line, "'[^']*'", '', 'g' )
+ let current_line = substitute( current_line, '"\(\\"\|[^"]\)*"', '', 'g' )
+ " remove all ( )
+ while current_line =~ '(.*)'
+ let current_line = substitute( current_line, '([^()]*)', '', 'g' )
+ endwhile
+ " prepend earlier lines until we find a ; or {
+ while linenum > 1 && current_line !~ ';' && current_line !~ '{.\+$'
+ let linenum = linenum - 1
+ let prev_line = getline(linenum)
+ if synIDattr(synID(linenum, 1, 1), "name") == 'cComment' "inside a /* */ comment at the beginning of the line
+ if stridx(prev_line, '*/') == -1
+ " next line please
+ let prev_line = ''
+ else
+ " remove everything before */
+ let prev_line = substitute(prev_line, '^.*\*/', '*/', '')
+ endif
+ endif
+ " remove // comment
+ let prev_line = substitute(prev_line, '//.*$', '', '' )
+ " concatenate the lines with a space in between
+ let current_line = prev_line.' '.current_line
+ " remove all /* */ comments
+ let current_line = substitute( current_line, '/\*.\{-}\*/', '', 'g' )
+ " remove all strings
+ let current_line = substitute( current_line, "'[^']*'", '', 'g' )
+ let current_line = substitute( current_line, '"\(\\"\|[^"]\)*"', '', 'g' )
+ " remove all ( )
+ while current_line =~ '(.*)'
+ let current_line = substitute( current_line, '([^()]*)', '', 'g' )
+ endwhile
+ endwhile
+ " remove everything until the last ;
+ let current_line = substitute( current_line, '^.*;', '', '' )
+ " remove everything until the last { which is not at the end of the line
+ let current_line = substitute( current_line, '^.*{\(.\+\)$', '\1', '' )
+ " remove all [ ]
+ while current_line =~ '\[.*\]'
+ let current_line = substitute( current_line, '\[[^\[\]]*\]', '', 'g' )
+ endwhile
+ " if <CR> was pressed inside ( ), [ ] or /* */ don't add braces
+ if current_line =~ '[(\[]' || current_line =~ '/\*'
+ return ''
+ endif
+ return current_line
+endfunction
+
+function! AddClosingBrace(current_line)
+ if a:current_line =~ '\<enum\|class\|struct\>'
+ :execute "normal o};\<ESC>k"
+ elseif a:current_line =~ '\<namespace\>'
+ let namespace = substitute( a:current_line, '^.*namespace\s\+', '', '' )
+ let namespace = substitute( namespace, '\s.*$', '', '' )
+ :execute "normal o} // namespace " . namespace . "\<ESC>k"
+ else
+ :execute "normal o}\<ESC>k"
+ endif
+endfunction
+
+function! SmartLineBreak()
+ if synIDattr(synID(line("."), col("."), 1), "name") == 'cComment' "inside a /* */ comment at the point where the line break occurs
+ return
+ endif
+ let match_line = CreateMatchLine()
+ if match_line == ''
+ return
+ endif
+
+ let match_position1 = -1
+ let match_position2 = -1
+ if strlen(g:need_brace_on_same_line) > 0
+ let match_position1 = match(match_line, g:need_brace_on_same_line)
+ if match_position1 > 0
+ while strpart(match_line, match_position1 - 1, 1) == '#'
+ let old_position = match_position1
+ let match_position1 = match(match_line, g:need_brace_on_same_line, match_position1 + 1)
+ if match_position1 == -1
+ if strpart(match_line, old_position, 2) == 'if'
+ :execute "normal o#endif\<ESC>k$"
+ endif
+ return
+ endif
+ endwhile
+ endif
+ endif
+ if strlen(g:need_brace_on_next_line) > 0 && match_position1 == -1
+ let match_position2 = match(match_line, g:need_brace_on_next_line)
+ if match_position2 > 0
+ while strpart(match_line, match_position2 - 1, 1) == '#'
+ let old_position = match_position2
+ let match_position2 = match(match_line, g:need_brace_on_same_line, match_position2 + 1)
+ if match_position2 == -1
+ if strpart(match_line, old_position, 2) == 'if'
+ :execute "normal o#endif\<ESC>k$"
+ endif
+ return
+ endif
+ endwhile
+ endif
+ endif
+
+ if match_position1 > -1
+ if match_line =~ '}\s*else\>'
+ " make sure else is on the same line as the closing brace
+ if getline('.') =~ '^\s*else'
+ if getline(line('.') - 1) =~ '}$'
+ :execute "normal kA \<ESC>J"
+ elseif getline(line('.') - 1) =~ '}\s*$'
+ :execute "normal kJ"
+ endif
+ endif
+ endif
+ while getline('.') =~ '^\s*{$'
+ " opening brace is on its own line: move it up
+ :execute "normal kJ"
+ endwhile
+ if match_line =~ '{$'
+ if getline('.') =~ '[^ ]{$'
+ :execute ':s/{$/ {/'
+ endif
+ else
+ :execute ':s/$/ {/'
+ endif
+ call AddClosingBrace(match_line)
+ elseif getline('.') =~ '^\s*{$'
+ call AddClosingBrace('')
+ elseif match_position2 > -1
+ if match_line =~ '{$'
+ :execute ':s/\s*{$//'
+ endif
+ :execute "normal o{"
+ call AddClosingBrace(match_line)
+ endif
+ :execute "normal $"
+endfunction
+
+function! SmartParensOn()
+ inoremap ( <C-R>=SmartParens( '(' )<CR>
+ inoremap [ <C-R>=SmartParens( '[' )<CR>
+ inoremap ] <C-R>=SmartParens( ']', '[' )<CR>
+ inoremap ) <C-R>=SmartParens( ')', '(' )<CR>
+endfunction
+
+function! SmartParensOff()
+ if strlen(mapcheck('[','i')) > 0
+ iunmap (
+ iunmap [
+ iunmap ]
+ iunmap )
+ endif
+endfunction
+
+function! SmartTab()
+ let col = col('.') - 1
+ if !col || getline('.')[col-1] !~ '\k'
+ return "\<Tab>"
+ else
+ return "\<C-P>"
+ endif
+endfunction
+
+function! SmartParens( char, ... )
+ if ! ( &syntax =~ '^\(c\|cpp\|java\)$' )
+ return a:char
+ endif
+ let s = strpart( getline( '.' ), 0, col( '.' ) - 1 )
+ if s =~ '//'
+ return a:char
+ endif
+ let s = substitute( s, '/\*\([^*]\|\*\@!/\)*\*/', '', 'g' )
+ let s = substitute( s, "'[^']*'", '', 'g' )
+ let s = substitute( s, '"\(\\"\|[^"]\)*"', '', 'g' )
+ if s =~ "\\([\"']\\|/\\*\\)"
+ return a:char
+ endif
+ if a:0 > 0
+ if strpart( getline( '.' ), col( '.' ) - 3, 2 ) == a:1 . ' '
+ return "\<BS>" . a:char
+ endif
+ if strpart( getline( '.' ), col( '.' ) - 2, 1 ) == ' '
+ return a:char
+ endif
+ return ' ' . a:char
+ endif
+ if !exists("g:DisableSpaceBeforeParen")
+ if a:char == '('
+ if strpart( getline( '.' ), col( '.' ) - 3, 2 ) == 'if' ||
+ \strpart( getline( '.' ), col( '.' ) - 4, 3 ) == 'for' ||
+ \strpart( getline( '.' ), col( '.' ) - 6, 5 ) == 'while' ||
+ \strpart( getline( '.' ), col( '.' ) - 7, 6 ) == 'switch'
+ return ' ( '
+ endif
+ endif
+ endif
+ return a:char . ' '
+endfunction
+
+function! SpaceBetweenKeywordAndParens()
+ if ! ( &syntax =~ '^\(c\|cpp\|java\)$' )
+ return '('
+ endif
+ let s = strpart( getline( '.' ), 0, col( '.' ) - 1 )
+ if s =~ '//'
+ " text inside a comment
+ return '('
+ endif
+ let s = substitute( s, '/\*\([^*]\|\*\@!/\)*\*/', '', 'g' )
+ let s = substitute( s, "'[^']*'", '', 'g' )
+ let s = substitute( s, '"\(\\"\|[^"]\)*"', '', 'g' )
+ if s =~ "\\([\"']\\|/\\*\\)"
+ " text inside a string
+ return '('
+ endif
+ if a:0 > 0
+ if strpart( getline( '.' ), col( '.' ) - 3, 2 ) == a:1 . ' '
+ return "\<BS>" . a:char
+ endif
+ if strpart( getline( '.' ), col( '.' ) - 2, 1 ) == ' '
+ return a:char
+ endif
+ return ' ' . a:char
+ endif
+ if strpart( getline( '.' ), col( '.' ) - 3, 2 ) == 'if' ||
+ \strpart( getline( '.' ), col( '.' ) - 4, 3 ) == 'for' ||
+ \strpart( getline( '.' ), col( '.' ) - 6, 5 ) == 'while' ||
+ \strpart( getline( '.' ), col( '.' ) - 7, 6 ) == 'switch' ||
+ \strpart( getline( '.' ), col( '.' ) - 8, 7 ) == 'foreach' ||
+ \strpart( getline( '.' ), col( '.' ) - 8, 7 ) == 'forever'
+ return ' ('
+ endif
+ return '('
+endfunction
+
+function! SwitchHeaderImpl()
+ let privateheaders = '_p\.\([hH]\|hpp\|hxx\)$'
+ let headers = '\.\([hH]\|hpp\|hxx\)$'
+ let impl = '\.\([cC]\|cpp\|cc\|cxx\)$'
+ let fn = expand( '%' )
+ if fn =~ privateheaders
+ let list = glob( substitute( fn, privateheaders, '.*', '' ) )
+ elseif fn =~ headers
+ let list = glob( substitute( fn, headers, '.*', '' ) )
+ elseif fn =~ impl
+ let list = glob( substitute( fn, impl, '.*', '' ) )
+ endif
+ while strlen( list ) > 0
+ let file = substitute( list, "\n.*", '', '' )
+ let list = substitute( list, "[^\n]*", '', '' )
+ let list = substitute( list, "^\n", '', '' )
+ if ( ( fn =~ headers || fn =~ privateheaders ) && file =~ impl ) || ( fn =~ impl && file =~ headers )
+ call AskToSave()
+ execute( "edit " . file )
+ return
+ endif
+ endwhile
+ if ( fn =~ headers )
+ call AskToSave()
+ if exists( "$implextension" )
+ let file = substitute( fn, headers, '.' . $implextension, '' )
+ else
+ let file = substitute( fn, headers, '.cpp', '' )
+ endif
+ " check for modified state of current buffer and if modified ask:
+ " save, discard, cancel
+ execute( 'edit '.file )
+ call append( 0, "#include \"".fn."\"" )
+ call append( 2, "// vim: sw=4 sts=4 et tw=100" )
+ execute( "set sw=4" )
+ execute( "set sts=4" )
+ execute( "set et" )
+ execute( "set tw=100" )
+ elseif fn =~ impl
+ call AskToSave()
+ let file = substitute( fn, impl, '.h', '' )
+ execute( "edit ".file )
+ endif
+endfunction
+
+function! SwitchPrivateHeaderImpl()
+ let privateheaders = '_p\.\([hH]\|hpp\|hxx\)$'
+ let headers = '\.\([hH]\|hpp\|hxx\)$'
+ let impl = '\.\([cC]\|cpp\|cc\|cxx\)$'
+ let fn = expand( '%' )
+ if fn =~ privateheaders
+ let list = glob( substitute( fn, privateheaders, '.*', '' ) )
+ elseif fn =~ headers
+ let list = glob( substitute( fn, headers, '_p.*', '' ) )
+ elseif fn =~ impl
+ let list = glob( substitute( fn, impl, '_p.*', '' ) )
+ endif
+ while strlen( list ) > 0
+ let file = substitute( list, "\n.*", '', '' )
+ let list = substitute( list, "[^\n]*", '', '' )
+ let list = substitute( list, "^\n", '', '' )
+ if ( fn =~ privateheaders && file =~ impl ) || ( fn =~ impl && file =~ privateheaders ) || ( fn =~ headers && file =~ privateheaders )
+ call AskToSave()
+ execute( "edit " . file )
+ return
+ endif
+ endwhile
+ if ( fn =~ privateheaders )
+ call AskToSave()
+ if exists( "$implextension" )
+ let file = substitute( fn, privateheaders, '.' . $implextension, '' )
+ else
+ let file = substitute( fn, privateheaders, '.cpp', '' )
+ endif
+ " check for modified state of current buffer and if modified ask:
+ " save, discard, cancel
+ execute( 'edit '.file )
+ call append( 0, "#include \"".fn."\"" )
+ call append( 2, "// vim: sw=4 ts=4 noet" )
+ execute( "set sw=4" )
+ execute( "set ts=4" )
+ elseif fn =~ impl
+ let file = substitute( fn, impl, '_p.h', '' )
+ call CreatePrivateHeader( file )
+ elseif fn =~ headers
+ let file = substitute( fn, headers, '_p.h', '' )
+ call CreatePrivateHeader( file )
+ endif
+endfunction
+
+function! AskToSave()
+ if &modified
+ let yesorno = input("Save changes before switching file? [Y/n]")
+ if yesorno == 'y' || yesorno == '' || yesorno == 'Y'
+ :execute 'w'
+ return 1
+ else
+ return 0
+ endif
+ endif
+ return 1
+endfunction
+
+function! CreatePrivateHeader( privateHeader )
+ let privateheaders = '_p\.\([hH]\|hpp\|hxx\)$'
+ let headers = '\.\([hH]\|hpp\|hxx\)$'
+ let impl = '\.\([cC]\|cpp\|cc\|cxx\)$'
+ let fn = expand( '%' )
+ if fn =~ headers
+ let className = ClassNameFromHeader()
+ elseif fn =~ impl
+ let className = ClassNameFromImpl()
+ endif
+
+ if AskToSave() && fn =~ headers
+ :normal gg
+ " check whether a Q_DECLARE_PRIVATE is needed
+ let dp = search( '\(^\|\s\+\)Q_DECLARE_PRIVATE\s*(\s*'.className.'\s*)' )
+ if dp == 0 "nothing found
+ call search( '^\s*class\s\+\([A-Za-z0-9]\+_EXPORT\s\+\)[A-Za-z_]\+\s*\(:\s*[,\t A-Za-z_]\+\)\?\s*\n\?\s*{' )
+ call search( '{' )
+ let @c = className
+ if match(getline(line('.')+1), 'Q_OBJECT')
+ :normal joQ_DECLARE_PRIVATE(c)
+ else
+ :normal oQ_DECLARE_PRIVATE(c)
+ endif
+ :execute 'w'
+ endif
+ endif
+ execute( "edit ".a:privateHeader )
+ let privateClassName = className . 'Private'
+ let header = substitute( a:privateHeader, privateheaders, '.h', '' )
+
+ call IncludeGuard()
+ " FIXME: find out what license to use
+ call LicenseHeader( "LGPL" )
+ :set sw=4
+ :set sts=4
+ :set et
+ :set tw=100
+ :normal Go// vim: sw=4 sts=4 et tw=100
+ let @h = header
+ let @p = privateClassName
+ let @c = className
+ :normal kkko #include "h" class p { Q_DECLARE_PUBLIC(c) protected: c* q_ptr; };
+endfunction
+
+function! ClassNameFromHeader()
+ :normal gg
+ call search( '^\s*class\s\+\([A-Za-z0-9]\+_EXPORT\s\+\)\?[A-Za-z_]\+\s*\(:\s*[,\t A-Za-z_]\+\)\?\s*\n\?\s*{' )
+ "\zs and \ze mark start and end of the matching
+ return matchstr( getline('.'), '\s\+\zs\w\+\ze\s*\(:\|{\|$\)' )
+endfunction
+
+function! ClassNameFromImpl()
+ :normal gg
+ call search( '\s*\([A-Za-z_]\+\)::\1\s*(' )
+ :normal "cye
+ return @c
+endfunction
+
+function! IncludeGuard()
+ let guard = toupper( substitute( substitute( expand( '%' ), '\([^.]*\)\.h', '\1_h', '' ), '/', '_', '' ) )
+ call append( '^', '#define ' . guard )
+ +
+ call append( '^', '#ifndef ' . guard )
+ call append( '$', '#endif // ' . guard )
+ +
+endfunction
+
+function! LicenseHeader( license )
+ let filename = $HOME . "/" . a:license . "HEADER"
+ execute ":0r " . filename
+" call append( 0, system( "cat " . filename ) )
+endfunction
+
+function! SmartInclude()
+ let next = nr2char( getchar( 0 ) )
+ if next == '"'
+ return "#include \".h\"\<Left>\<Left>\<Left>"
+ endif
+ if next == '>'
+ return "#include <>\<Left>"
+ endif
+ return "#include <.h>\<Left>\<Left>\<Left>"
+endfunction
+
+function! MapIdentHeader( ident )
+ let header = tolower(substitute(a:ident, '::', '/', 'g')).'.h'
+ if a:ident =~ 'Private$'
+ let header = substitute(header, 'private', '_p', '')
+ endif
+ " always prefer the headers in the same directory
+ let check = header
+ let slash = 1
+ while slash != -1
+ if filereadable( check )
+ return '"' . check . '"'
+ endif
+ let slash = match( check, '/' )
+ let check = strpart( check, slash + 1 )
+ endwhile
+ let check = tolower(substitute(a:ident, '::', '/', 'g')).'_p.h'
+ let slash = 1
+ while slash != -1
+ if filereadable(check)
+ return '"' . check . '"'
+ endif
+ let slash = match(check, '/')
+ let check = strpart(check, slash + 1)
+ endwhile
+
+ " Qt stuff
+ if a:ident =~ '^Q[A-Z]'
+ " let's try to find the module
+ let module = ''
+ if $QTDIR != ''
+ if filereadable($QTDIR.'/include/QtCore/'.a:ident)
+ let module = 'QtCore/'
+ elseif filereadable($QTDIR.'/include/QtGui/'.a:ident)
+ let module = 'QtGui/'
+ elseif filereadable($QTDIR.'/include/Qt3Support/'.a:ident)
+ let module = 'Qt3Support/'
+ elseif filereadable($QTDIR.'/include/QtAssistant/'.a:ident)
+ let module = 'QtAssistant/'
+ elseif filereadable($QTDIR.'/include/QtDBus/'.a:ident)
+ let module = 'QtDBus/'
+ elseif filereadable($QTDIR.'/include/QtDesigner/'.a:ident)
+ let module = 'QtDesigner/'
+ elseif filereadable($QTDIR.'/include/QtNetwork/'.a:ident)
+ let module = 'QtNetwork/'
+ elseif filereadable($QTDIR.'/include/QtOpenGL/'.a:ident)
+ let module = 'QtOpenGL/'
+ elseif filereadable($QTDIR.'/include/QtSql/'.a:ident)
+ let module = 'QtSql/'
+ elseif filereadable($QTDIR.'/include/QtSvg/'.a:ident)
+ let module = 'QtSvg/'
+ elseif filereadable($QTDIR.'/include/QtTest/'.a:ident)
+ let module = 'QtTest/'
+ elseif filereadable($QTDIR.'/include/QtUiTools/'.a:ident)
+ let module = 'QtUiTools/'
+ elseif filereadable($QTDIR.'/include/QtXml/'.a:ident)
+ let module = 'QtXml/'
+ endif
+ endif
+ return '<'.module.a:ident.'>'
+ elseif a:ident == 'qDebug' ||
+ \a:ident == 'qWarning' ||
+ \a:ident == 'qCritical' ||
+ \a:ident == 'qFatal'
+ return '<QtCore/QtDebug>'
+ elseif a:ident =~ 'Q_DECLARE_INTERFACE'
+ return '<QtCore/QObject>'
+ elseif a:ident =~ '^QT_VERSION' ||
+ \a:ident =~ '^Q_\(W\|O\)S_' ||
+ \a:ident =~ '^Q_CC_' ||
+ \a:ident =~ '^Q_.*STRUCTOR_FUNCTION$' ||
+ \a:ident =~ '^qu\?int' ||
+ \a:ident =~ '^Q_.*_RESOURCE$' ||
+ \a:ident == 'qreal' ||
+ \a:ident == 'qAbs' ||
+ \a:ident == 'qRound' ||
+ \a:ident == 'qRound64' ||
+ \a:ident == 'qMin' ||
+ \a:ident == 'qMax' ||
+ \a:ident == 'qBound' ||
+ \a:ident == 'qVersion' ||
+ \a:ident == 'qSharedBuild' ||
+ \a:ident == 'Q_UNUSED' ||
+ \a:ident == 'Q_ASSERT' ||
+ \a:ident == 'qInstallMsgHandler' ||
+ \a:ident == 'Q_GLOBAL_STATIC' ||
+ \a:ident == 'Q_GLOBAL_STATIC_WITH_ARGS' ||
+ \a:ident == 'qFuzzyCompare' ||
+ \a:ident == 'qIsNull' ||
+ \a:ident == 'qSwap' ||
+ \a:ident =~ 'Q_DECLARE_\(FLAGS\|OPERATORS_FOR_FLAGS\|PRIVATE\|PUBLIC\)' ||
+ \a:ident == 'Q_D' ||
+ \a:ident == 'Q_Q' ||
+ \a:ident == 'Q_DISABLE_COPY' ||
+ \a:ident == 'qsrand' ||
+ \a:ident == 'qrand'
+ return '<QtCore/QtGlobal>'
+
+ " Phonon stuff
+ elseif a:ident =~ '^Phonon::[A-Z]'
+ if a:ident =~ '^Phonon::\(NoDisc\|Cd\|Dvd\|Vcd\|.\+MetaData\|.*State\|.*Category\|.\+Error\)'
+ return '<Phonon/Global>'
+ endif
+ return '<'.substitute(a:ident, '::', '/', 'g').'>'
+ endif
+
+ " KDE stuff
+ let kdeincdir = substitute(system('kde4-config --prefix'), '[\n\r]*', '', 'g').'/include/KDE/'
+ let classname = substitute(a:ident, '^.*:', '', '')
+ let pathfn = expand('%:p:h')
+ if filereadable(kdeincdir.classname) && !pathfn =~ 'kdelibs'
+ return '<'.classname.'>'
+ elseif filereadable(kdeincdir.'Phonon/'.classname)
+ return '<Phonon/'.classname.'>'
+ elseif filereadable(kdeincdir.'Solid/'.classname)
+ return '<Solid/'.classname.'>'
+ elseif filereadable(kdeincdir.'KIO/'.classname)
+ return '<KIO/'.classname.'>'
+ elseif filereadable(kdeincdir.'KParts/'.classname)
+ return '<KParts/'.classname.'>'
+ elseif a:ident == 'K\(Double\|Int\)\(NumInput\|SpinBox\)'
+ return '<knuminput.h>'
+ elseif a:ident == 'KSharedConfig'
+ return '<kconfig.h>'
+ elseif a:ident == 'KConfigGroup'
+ return '<kconfiggroup.h>'
+ elseif a:ident == 'KListViewItem'
+ return '<klistview.h>'
+ elseif a:ident =~ 'kd\(Debug\|Warning\|Error\|Fatal\|Backtrace\)'
+ return '<kdebug.h>'
+ elseif a:ident == 'kapp'
+ return '<kapplication.h>'
+ elseif a:ident == 'i18n' ||
+ \a:ident == 'I18N_NOOP'
+ return '<klocale.h>'
+ elseif a:ident == 'locate' ||
+ \a:ident == 'locateLocal'
+ return '<kstandarddirs.h>'
+ elseif a:ident =~ '\(Small\|Desktop\|Bar\|MainBar\|User\)Icon\(Set\)\?' ||
+ \a:ident == 'IconSize'
+ return '<kiconloader.h>'
+
+ " aRts stuff
+ elseif a:ident =~ '\arts_\(debug\|info\|warning\|fatal\)'
+ return '<debug.h>'
+
+ " Standard Library stuff
+ elseif a:ident =~ '\(std::\)\?\(cout\|cerr\|endl\)'
+ return '<iostream>'
+ elseif a:ident =~ '\(std::\)\?is\(alnum\|alpha\|ascii\|blank\|graph\|lower\|print\|punct\|space\|upper\|xdigit\)'
+ return '<cctype>'
+ elseif a:ident == 'printf'
+ return '<cstdio>'
+ endif
+
+ let check = header
+ while 1
+ if filereadable( check )
+ return '"' . check . '"'
+ endif
+ let slash = match( check, '/' )
+ if slash == -1
+ return '<' . header . '>'
+ endif
+ let check = strpart( check, slash + 1 )
+ endwhile
+endfunction
+
+" This is a rather dirty hack, but seems to work somehow :-) (malte)
+function! AddHeader()
+ let s = getline( '.' )
+ let i = col( '.' ) - 1
+ while i > 0 && strpart( s, i, 1 ) !~ '[A-Za-z0-9_:]'
+ let i = i - 1
+ endwhile
+ while i > 0 && strpart( s, i, 1 ) =~ '[A-Za-z0-9_:]'
+ let i = i - 1
+ endwhile
+ let start = match( s, '[A-Za-z0-9_]\+\(::[A-Z][A-Za-z0-9_]*\)*', i )
+ let end = matchend( s, '[A-Za-z0-9_]\+\(::[A-Z][A-Za-z0-9_]*\)*', i )
+" if end > col( '.' )
+" let end = matchend( s, '[A-Za-z0-9_]\+', i )
+" endif
+ let ident = strpart( s, start, end - start )
+ let header = MapIdentHeader(ident)
+ let include = '#include '.header
+
+ let line = 1
+ let incomment = 0
+ let appendpos = 0
+ let codestart = 0
+ let similarpos = 0
+ let similarity = 0
+ while line <= line( '$' )
+ let s = getline( line )
+ if incomment == 1
+ let end = matchend( s, '\*/' )
+ if end == -1
+ let line = line + 1
+ continue
+ else
+ let s = strpart( s, end )
+ let incomment = 0
+ endif
+ endif
+ let s = substitute( s, '//.*', '', '' )
+ let s = substitute( s, '/\*\([^*]\|\*\@!/\)*\*/', '', 'g' )
+ if s =~ '/\*'
+ let incomment = 1
+ elseif s =~ '^' . include
+ break
+ elseif s =~ '^#include' && s !~ '\.moc"'
+ let appendpos = line
+ if s =~ '^#include '.header[0:similarity+1]
+ let similarpos = line
+ let similarity = similarity + 1
+ while s =~ '^#include '.header[0:similarity+1]
+ let similarity = similarity + 1
+ endwhile
+ if s[9:strlen(s)-2] > header[0:strlen(header)-2]
+ let similarpos = similarpos - 1
+ let similarity = 100 "this include belongs one line higher (assuming the order of includes already is alphabetically)
+ endif
+ endif
+ elseif codestart == 0 && s !~ '^$'
+ let codestart = line
+ endif
+ let line = line + 1
+ endwhile
+ if similarpos > 0
+ let appendpos = similarpos
+ endif
+ if line == line( '$' ) + 1
+ if appendpos == 0
+ call append( codestart - 1, include )
+ call append( codestart, '' )
+ else
+ call append( appendpos, include )
+ endif
+ endif
+endfunction
+
+function! AddForward()
+ let s = getline( '.' )
+ let i = col( '.' ) - 1
+ while i > 0 && strpart( s, i, 1 ) !~ '[A-Za-z0-9_:]'
+ let i = i - 1
+ endwhile
+ while i > 0 && strpart( s, i, 1 ) =~ '[A-Za-z0-9_:]'
+ let i = i - 1
+ endwhile
+ let start = match( s, '[A-Za-z0-9_]\+\(::[A-Za-z0-9_]\+\)*', i )
+ let end = matchend( s, '[A-Za-z0-9_]\+\(::[A-Za-z0-9_]\+\)*', i )
+ if end > col( '.' )
+ let end = matchend( s, '[A-Za-z0-9_]\+', i )
+ endif
+ let ident = strpart( s, start, end - start )
+ let forward = 'class ' . ident . ';'
+
+ let line = 1
+ let incomment = 0
+ let appendpos = 0
+ let codestart = 0
+ while line <= line( '$' )
+ let s = getline( line )
+ if incomment == 1
+ let end = matchend( s, '\*/' )
+ if end == -1
+ let line = line + 1
+ continue
+ else
+ let s = strpart( s, end )
+ let incomment = 0
+ endif
+ endif
+ let s = substitute( s, '//.*', '', '' )
+ let s = substitute( s, '/\*\([^*]\|\*\@!/\)*\*/', '', 'g' )
+ if s =~ '/\*'
+ let incomment = 1
+ elseif s =~ '^' . forward
+ break
+ elseif s =~ '^\s*class [A-za-z0-9_]\+;' || (s =~ '^#include' && s !~ '\.moc"')
+ let appendpos = line
+ elseif codestart == 0 && s !~ '^$'
+ let codestart = line
+ endif
+ let line = line + 1
+ endwhile
+ if line == line( '$' ) + 1
+ if appendpos == 0
+ call append( codestart - 1, forward )
+ call append( codestart, '' )
+ else
+ call append( appendpos, forward )
+ endif
+ endif
+endfunction
+
+function! RunDiff()
+ echo 'Diffing....'
+ read! cvs diff -bB -I \\\#include | egrep -v '(^Index:|^=+$|^RCS file:|^retrieving revision|^diff -u|^[+-]{3})'
+endfunction
+
+function! CreateChangeLogEntry()
+ let currentBuffer = expand( "%" )
+
+ if exists( "g:EMAIL" )
+ let mail = g:EMAIL
+ elseif exists( "$EMAIL" )
+ let mail = $EMAIL
+ else
+ let mail = inputdialog( "Enter Name/Email for Changelog entry: " )
+ if mail == ""
+ echo "Aborted ChangeLog edit..."
+ return
+ endif
+ let g:EMAIL = mail
+ endif
+
+ if bufname( "ChangeLog" ) != "" && bufwinnr( bufname( "ChangeLog" ) ) != -1
+ execute bufwinnr( bufname( "ChangeLog" ) ) . " wincmd w"
+ else
+ execute "split ChangeLog"
+ endif
+
+ let lastEntry = getline( nextnonblank( 1 ) )
+ let newEntry = strftime("%Y-%m-%d") . " " . mail
+
+ if lastEntry != newEntry
+ call append( 0, "" )
+ call append( 0, "" )
+ call append( 0, newEntry )
+ endif
+
+ " like emacs, prepend the current buffer name to the entry. but unlike
+ " emacs I have no idea how to figure out the current function name :(
+ " (Simon)
+ if currentBuffer != ""
+ let newLine = "\t* " . currentBuffer . ": "
+ else
+ let newLine = "\t* "
+ endif
+
+ call append( 2, newLine )
+
+ execute "normal 3G$"
+endfunction
+
+function! AddQtSyntax()
+ if expand( "<amatch>" ) == "cpp"
+ syn keyword qtKeywords signals slots emit Q_SLOTS Q_SIGNALS
+ syn keyword qtMacros Q_OBJECT Q_WIDGET Q_PROPERTY Q_ENUMS Q_OVERRIDE Q_CLASSINFO Q_SETS SIGNAL SLOT Q_DECLARE_PUBLIC Q_DECLARE_PRIVATE Q_D Q_Q Q_DISABLE_COPY Q_DECLARE_METATYPE Q_PRIVATE_SLOT Q_FLAGS Q_INTERFACES Q_DECLARE_INTERFACE Q_EXPORT_PLUGIN2 Q_GADGET Q_SCRIPTABLE Q_INVOKABLE METHOD Q_ARG Q_RETURN_ARG
+ syn keyword qtCast qt_cast qobject_cast qvariant_cast qstyleoption_cast
+ syn keyword qtTypedef uchar uint ushort ulong Q_INT8 Q_UINT8 Q_INT16 Q_UINT16 Q_INT32 Q_UINT32 Q_LONG Q_ULONG Q_INT64 Q_UINT64 Q_LLONG Q_ULLONG pchar puchar pcchar qint8 quint8 qint16 quint16 qint32 quint32 qint64 quint64 qlonglong qulonglong qreal
+ syn keyword kdeKeywords k_dcop k_dcop_signals
+ syn keyword kdeMacros K_DCOP ASYNC PHONON_ABSTRACTBASE PHONON_OBJECT PHONON_HEIR PHONON_ABSTRACTBASE_IMPL PHONON_OBJECT_IMPL PHONON_HEIR_IMPL PHONON_PRIVATECLASS PHONON_PRIVATEABSTRACTCLASS K_DECLARE_PRIVATE K_D
+ syn keyword cRepeat foreach
+ syn keyword cRepeat forever
+
+ hi def link qtKeywords Statement
+ hi def link qtMacros Type
+ hi def link qtCast Statement
+ hi def link qtTypedef Type
+ hi def link kdeKeywords Statement
+ hi def link kdeMacros Type
+ endif
+endfunction
+
+function! InsertMethodTracer()
+ :normal [[kf(yBjokDebug() << ""()" << endl;
+endfunction
+
+function! UpdateMocFiles()
+ if &syntax == "cpp"
+ let i = 1
+ while i < 80
+ let s = getline( i )
+ if s =~ '^#include ".*\.moc"'
+ let s = substitute( s, '.*"\(.*\)\.moc"', '\1.h', '' )
+ if stridx( &complete, s ) == -1
+ let &complete = &complete . ',k' . s
+ endif
+ break
+ endif
+ let i = i + 1
+ endwhile
+ endif
+endfunction
+
+autocmd Syntax * call AddQtSyntax()
+autocmd CursorHold * call UpdateMocFiles()
+autocmd BufNewFile,BufRead * call SetCodingStyle()
+
+" vim: sw=4 sts=4 et
diff --git a/.vim/ltags b/.vim/ltags
new file mode 100644
index 0000000..bec7c56
--- /dev/null
+++ b/.vim/ltags
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+# Author: Dimitri Antoniou <dimitri@risc2.aecom.yu.edu>
+# usage: ltags filename
+# handles: \label and \cite{ } with one or more arguments
+# fails if arguments of cite spread over more than one line
+# also searches in files that are \include or \input in the main file
+
+# get main LaTeX source file from command line:
+$mainfile = shift;
+
+# get names of included files and store them in an array
+open MAIN, $mainfile or die "$!" ;
+@mainfile=<MAIN>;
+@allsrcfiles = map{ /^\\(?:input|include){(.*?)}/ } @mainfile;
+unshift @allsrcfiles, $mainfile;
+
+# loop over all source files
+for $srcfile (@allsrcfiles) {
+ # if \input{fname} append .tex to fname
+ unless ( $srcfile =~ m/\.tex/ ) { $srcfile = $srcfile . "\.tex" }
+ open SRC, $srcfile or die "$!" ;
+ # store contents of source file in array @texfile
+ @texfile=<SRC>;
+
+ # store lines with \label and \cite (or \citeonline) in arrays
+ @labelList = grep{ /\\label{/ } @texfile;
+ @citeList = grep{ /\\(cite|citeonline){/ } @texfile;
+
+ # see if we use an external database; if yes, store its name in $bibfile
+ ($dbase) = grep{ /^\\bibliography{/ } @texfile;
+ if ($dbase) {
+ $dbase =~ m/\\bibliography{(.*?)}/;
+ $bibfile = $1;
+ }
+
+ # write \bibitem in tags file
+ @mrefs=();
+ @refs=();
+ @multirefs=();
+ foreach (@citeList) {
+ while ( m/\\(?:cite|citeonline){(.*?)}/g ) {
+ $refs = $1;
+ # if \cite has more than one argument, split them:
+ if ($refs =~ /,/) {
+ @mrefs = split /,/, $refs;
+ # there might be more than one \cite in a line:
+ push (@multirefs, @mrefs);
+ }
+ else {
+ @refs = ($refs);
+ push (@multirefs, @refs);
+ }
+ }
+ # in BibTeX, format is @ARTICLE{Name, }; in source file, \bibitem{Name}
+ for $ref (@multirefs) {
+ if ( $dbase ) {
+ push @unsorttag, "$ref\t$bibfile\t/{$ref,/\n"
+ }
+ else {
+ push @unsorttag, "$ref\t$srcfile\t/bibitem{$ref}/\n"
+ }
+ }
+ }
+
+ # write \label in tag file
+ foreach (@labelList) {
+ m/\\label{(.*?)}/;
+ push @unsorttag, "$1\t$srcfile\t/label{$1}/\n";
+ }
+}
+
+# sort tag file; then, eliminate duplicates
+@sortedtag = sort @unsorttag;
+%seen = ();
+@uniqtag = grep { ! $seen{$_} ++ } @sortedtag;
+
+open(TAGS, "> tags");
+print TAGS @uniqtag;
diff --git a/.vim/moin1_6.vim b/.vim/moin1_6.vim
new file mode 100644
index 0000000..f654af6
--- /dev/null
+++ b/.vim/moin1_6.vim
@@ -0,0 +1,83 @@
+" MoinMoin structured text syntax file
+" Filename: moin.vim
+" Language: MoinMoin structured text
+" Maintainer: Gustavo Niemeyer <niemeyer@conectiva.com>
+" Last Change: Sun, 02 Mar 2008 23:42:31 -0300
+
+" remove any old syntax stuff hanging around
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn sync lines=30
+
+syn region moinSettings start="\%^@@ Syntax:" end="^[^@]"me=e-1 end="^$" nextgroup=moinPragma
+syn region moinPragma start="^#" end="^$" contained
+syn region moinItalic start="''" end="''"
+syn region moinBold start="'''" end="'''"
+syn region moinUnderline start="__" end="__"
+syn match moinSub ",,.{1,40},,"
+syn match moinSup "\^.\{-}\^"
+syn region moinCode start="^{{{\z([^#]*\)" keepend end="\z1}}}"
+syn match moinCode "{{{[^$]\{-}}}}"
+syn region moinCode start="`" end="`"
+syn cluster moinTextMarkup contains=moinItalic,moinBold,moinCode,moinUnderline,moinSup,moinSub
+syn match moinComment "^##.*$"
+syn region moinInlineComment start="/\*" end="\*/"
+syn region moinMacro start="<<" end=">>"
+syn region moinStrike start="--(" end=")--"
+syn region moinHeader start="^\z(=\{1,5}\) " end=" \z1$" oneline
+syn match moinRule "^-\{4,}$"
+syn match moinSmileys "\(\s\|\_^\)\(%)\|(!)\|(./)\|/!\\\|:(\|:)\|:))\|:-(\|:-)\|:-))\|:-?\|:D\|:\\\|:o\|;)\|;-)\|<!>\|<:(\|>:>\|B)\|B-)\|X-(\|{\*}\|{1}\|{2}\|{3}\|{OK}\|{X}\|{da}\|{de}\|{en}\|{es}\|{fi}\|{fr}\|{it}\|{i}\|{ja}\|{ko}\|{nl}\|{o}\|{pt}\|{sv}\|{us}\|{zh}\||)\||-)\)\(\s\|\_$\)"
+syn match moinLinkMoin "\([^!]\@<=\|^\)\<\(/\?\([[:upper:]][[:lower:][:digit:]]\+\)\{2,}\)\+\>"
+syn match moinLinkMoinBang "!\ze\(/\?\([[:upper:]][[:lower:][:digit:]]\+\)\{2,}\)\+"
+syn region moinLinkExplicit start="\[\[" end="\]\]"
+syn region moinLinkEmbedded start="{{[^{]" end="}}"
+syn match moinLinkEmail "<\?[[:alnum:]-._+]\+@[[:alnum:]-]\+\.[[:alnum:]-.]\+>\?"
+syn match moinLinkUrl "\(http\|https\|ftp\|file\|mailto\|nntp\|news\|telnet\|irc\|ircs\|xmpp\|drawing\):\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
+syn match moinLinkInter "[A-Z][a-zA-Z]\+:[^[:space:]'\":<]\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
+syn cluster moinLinks contains=moinLinkMoin,moinLinkExplicit,moinLinkEmbedded,moinLinkEmail,moinLinkUrl,moinLinkInter
+syn cluster moinMarkup contains=@moinTextMarkup,@moinLinks,moinMacro,moinStrike,moinSmileys
+syn match moinTableOpt "<[^>]*>" contained
+syn match moinTableMark "||\(<[^>]*>\)\?" contained contains=moinTableOpt
+syn region moinTable start="^\s*||"rs=s end="||$"re=e oneline contains=moinTableMark,@moinMarkup
+syn match moinDefinition "^\s\+.\{-}::\ze\(\s.*\)\?$"
+syn match moinList "^\s\+\*\s"
+
+if !exists("did_dic_syntax_inits")
+ let did_dic_syntax_inits = 1
+ hi link moinComment Comment
+ hi link moinInlineComment Comment
+ hi def moinBold term=bold cterm=bold gui=bold
+ hi def moinItalic ctermfg=darkcyan gui=italic
+ hi link moinUnderline moinItalic
+ hi link moinSub moinItalic
+ hi link moinSup moinItalic
+ hi def moinSettings ctermfg=green guifg=green
+ hi def moinPragma ctermfg=darkred guifg=darkred
+ hi link moinMacro Macro
+ hi def moinStrike ctermfg=darkgray guifg=darkgray
+ hi link moinHeader Title
+ hi def moinTableMark ctermfg=yellow guifg=yellow
+ hi def moinTableOpt ctermfg=darkyellow guifg=darkyellow
+ hi link moinDefinition moinBold
+ hi link moinList moinBold
+ hi link moinRule Title
+ hi def moinCode ctermfg=cyan guifg=cyan
+ hi def moinLink ctermfg=red guifg=red
+ hi link moinLinkExplicit moinLink
+ hi link moinLinkEmbedded moinLink
+ hi link moinLinkMoin moinLink
+ hi link moinLinkMoinBang moinLink
+ hi link moinLinkEmail moinLink
+ hi link moinLinkUrl moinLink
+ hi link moinLinkBUrl moinLinkUrl
+ hi link moinLinkQUrl moinLinkUrl
+ hi link moinLinkInter moinLink
+ hi def moinSmileys ctermfg=yellow guifg=yellow
+endif
+
+let b:current_syntax = "moin"
+
diff --git a/.vim/plugin/SyntaxFolds.vim b/.vim/plugin/SyntaxFolds.vim
new file mode 100644
index 0000000..27c622c
--- /dev/null
+++ b/.vim/plugin/SyntaxFolds.vim
@@ -0,0 +1,323 @@
+" ==============================================================================
+" File: syntaxFolds.vim
+" Author: Srinath Avadhanula
+" ( srinath@fastmail.fm )
+" Last Change: Sun Oct 27 01:00 AM 2002 PST
+" Description: Emulation of the syntax folding capability of vim using manual
+" folding
+"
+" This script provides an emulation of the syntax folding of vim using manual
+" folding. Just as in syntax folding, the folds are defined by regions. Each
+" region is specified by a call to FoldRegions() which accepts 4 parameters:
+"
+" call FoldRegions(startpat, endpat, startoff, endoff)
+"
+" startpat: a line matching this pattern defines the beginning of a fold.
+" endpat : a line matching this pattern defines the end of a fold.
+" startoff: this is the offset from the starting line at which folding will
+" actually start
+" endoff : like startoff, but gives the offset of the actual fold end from
+" the line satisfying endpat.
+" startoff and endoff are necessary when the folding region does
+" not have a specific end pattern corresponding to a start
+" pattern. for example in latex,
+" \begin{section}
+" defines the beginning of a section, but its not necessary to
+" have a corresponding
+" \end{section}
+" the section is assumed to end 1 line _before_ another section
+" starts.
+" startskip: a pattern which defines the beginning of a "skipped" region.
+"
+" For example, suppose we define a \itemize fold as follows:
+" startpat = '^\s*\\item',
+" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+" startoff = 0,
+" endoff = -1
+"
+" This defines a fold which starts with a line beginning with an
+" \item and ending one line before a line beginning with an
+" \item or \end{enumerate} etc.
+"
+" Then, as long as \item's are not nested things are fine.
+" However, once items begin to nest, the fold started by one
+" \item can end because of an \item in an \itemize
+" environment within this \item. i.e, the following can happen:
+"
+" \begin{itemize}
+" \item Some text <------- fold will start here
+" This item will contain a nested item
+" \begin{itemize} <----- fold will end here because next line contains \item...
+" \item Hello
+" \end{itemize} <----- ... instead of here.
+" \item Next item of the parent itemize
+" \end{itemize}
+"
+" Therefore, in order to completely define a folding item which
+" allows nesting, we need to also define a "skip" pattern.
+" startskip and end skip do that.
+" Leave '' when there is no nesting.
+" endskip: the pattern which defines the end of the "skip" pattern for
+" nested folds.
+"
+" Example:
+" 1. A syntax fold region for a latex section is
+" startpat = "\\section{"
+" endpat = "\\section{"
+" startoff = 0
+" endoff = -1
+" startskip = ''
+" endskip = ''
+" Note that the start and end patterns are thus the same and endoff has a
+" negative value to capture the effect of a section ending one line before
+" the next starts.
+" 2. A syntax fold region for the \itemize environment is:
+" startpat = '^\s*\\item',
+" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
+" startoff = 0,
+" endoff = -1,
+" startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
+" endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
+" Note the use of startskip and endskip to allow nesting.
+"
+"
+" Each time a call is made to FoldRegions(), all the regions (which might be
+" disjoint, but not nested) are folded up.
+" Nested folds can be created by successive calls to FoldRegions(). The first
+" call defines the region which is deepest in the folding. See MakeTexFolds()
+" for an idea of how this works for latex files.
+
+" Function: AddSyntaxFoldItem (start, end, startoff, endoff [, skipStart, skipEnd]) {{{
+function! AddSyntaxFoldItem(start, end, startoff, endoff, ...)
+ if a:0 > 0
+ let skipStart = a:1
+ let skipEnd = a:2
+ else
+ let skipStart = ''
+ let skipEnd = ''
+ end
+ if !exists('b:numFoldItems')
+ let b:numFoldItems = 0
+ end
+ let b:numFoldItems = b:numFoldItems + 1
+
+ exe 'let b:startPat_'.b:numFoldItems.' = a:start'
+ exe 'let b:endPat_'.b:numFoldItems.' = a:end'
+ exe 'let b:startOff_'.b:numFoldItems.' = a:startoff'
+ exe 'let b:endOff_'.b:numFoldItems.' = a:endoff'
+ exe 'let b:skipStartPat_'.b:numFoldItems.' = skipStart'
+ exe 'let b:skipEndPat_'.b:numFoldItems.' = skipEnd'
+endfunction
+
+
+" }}}
+" Function: MakeSyntaxFolds (force) {{{
+" Description: This function calls FoldRegions() several times with the
+" parameters specifying various regions resulting in a nested fold
+" structure for the file.
+function! MakeSyntaxFolds(force, ...)
+ if exists('b:doneFolding') && a:force == 0
+ return
+ end
+
+ let skipEndPattern = ''
+ if a:0 > 0
+ let line1 = a:1
+ let skipEndPattern = '\|'.a:2
+ else
+ let line1 = 1
+ let r = line('.')
+ let c = virtcol('.')
+
+ setlocal fdm=manual
+ normal! zE
+ end
+ if !exists('b:numFoldItems')
+ b:numFoldItems = 1000000
+ end
+
+ let i = 1
+
+ let maxline = line('.')
+
+ while exists('b:startPat_'.i) && i <= b:numFoldItems
+ exe 'let startPat = b:startPat_'.i
+ exe 'let endPat = b:endPat_'.i
+ exe 'let startOff = b:startOff_'.i
+ exe 'let endOff = b:endOff_'.i
+
+ let skipStart = ''
+ let skipEnd = ''
+ if exists('b:skipStartPat_'.i)
+ exe 'let skipStart = b:skipStartPat_'.i
+ exe 'let skipEnd = b:skipEndPat_'.i
+ end
+ exe line1
+ let lastLoc = line1
+
+ if skipStart != ''
+ call InitStack('BeginSkipArray')
+ call FoldRegionsWithSkip(startPat, endPat, startOff, endOff, skipStart, skipEnd, 1, line('$'))
+ " call PrintError('done folding ['.startPat.']')
+ else
+ call FoldRegionsWithNoSkip(startPat, endPat, startOff, endOff, 1, line('$'), '')
+ end
+
+ let i = i + 1
+ endwhile
+
+ exe maxline
+
+ if a:0 == 0
+ exe r
+ exe "normal! ".c."|"
+ if foldlevel(r) > 1
+ exe "normal! ".(foldlevel(r) - 1)."zo"
+ end
+ let b:doneFolding = 0
+ end
+endfunction
+
+
+" }}}
+" FoldRegionsWithSkip: folding things such as \item's which can be nested. {{{
+function! FoldRegionsWithSkip(startpat, endpat, startoff, endoff, startskip, endskip, line1, line2)
+ exe a:line1
+ " count the regions which have been skipped as we go along. do not want to
+ " create a fold which with a beginning or end line in one of the skipped
+ " regions.
+ let skippedRegions = ''
+
+ " start searching for either the starting pattern or the end pattern.
+ while search(a:startskip.'\|'.a:endskip, 'W')
+
+ if getline('.') =~ a:endskip
+
+ let lastBegin = Pop('BeginSkipArray')
+ " call PrintError('popping '.lastBegin.' from stack and folding till '.line('.'))
+ call FoldRegionsWithNoSkip(a:startpat, a:endpat, a:startoff, a:endoff, lastBegin, line('.'), skippedRegions)
+ let skippedRegions = skippedRegions.lastBegin.','.line('.').'|'
+
+
+ " if this is the beginning of a skip region, then, push this line as
+ " the beginning of a skipped region.
+ elseif getline('.') =~ a:startskip
+
+ " call PrintError('pushing '.line('.').' ['.getline('.').'] into stack')
+ call Push('BeginSkipArray', line('.'))
+
+ end
+ endwhile
+
+ " call PrintError('with skip starting at '.a:line1.' returning at line# '.line('.'))
+endfunction
+
+" }}}
+" FoldRegionsWithNoSkip: folding things such as \sections which do not nest. {{{
+function! FoldRegionsWithNoSkip(startpat, endpat, startoff, endoff, line1, line2, skippedRegions)
+ exe a:line1
+
+ " call PrintError('line1 = '.a:line1.', searching from '.line('.').'... for ['.a:startpat.'')
+ let lineBegin = s:MySearch(a:startpat, 'in')
+ " call PrintError('... and finding it at '.lineBegin)
+
+ while lineBegin <= a:line2
+ if IsInSkippedRegion(lineBegin, a:skippedRegions)
+ let lineBegin = s:MySearch(a:startpat, 'out')
+ " call PrintError(lineBegin.' is being skipped')
+ continue
+ end
+ let lineEnd = s:MySearch(a:endpat, 'out')
+ while IsInSkippedRegion(lineEnd, a:skippedRegions) && lineEnd <= a:line2
+ let lineEnd = s:MySearch(a:endpat, 'out')
+ endwhile
+ if lineEnd > a:line2
+ exe (lineBegin + a:startoff).','.a:line2.' fold'
+ break
+ else
+ " call PrintError ('for ['.a:startpat.'] '.(lineBegin + a:startoff).','.(lineEnd + a:endoff).' fold')
+ exe (lineBegin + a:startoff).','.(lineEnd + a:endoff).' fold'
+ end
+
+ " call PrintError('line1 = '.a:line1.', searching from '.line('.').'... for ['.a:startpat.'')
+ let lineBegin = s:MySearch(a:startpat, 'in')
+ " call PrintError('... and finding it at '.lineBegin)
+ endwhile
+
+ exe a:line2
+ return
+endfunction
+
+" }}}
+" InitStack: initialize a stack {{{
+function! InitStack(name)
+ exe 'let s:'.a:name.'_numElems = 0'
+endfunction
+" }}}
+" Push: push element into stack {{{
+function! Push(name, elem)
+ exe 'let numElems = s:'.a:name.'_numElems'
+ let numElems = numElems + 1
+ exe 'let s:'.a:name.'_Element_'.numElems.' = a:elem'
+ exe 'let s:'.a:name.'_numElems = numElems'
+endfunction
+" }}}
+" Pop: pops element off stack {{{
+function! Pop(name)
+ exe 'let numElems = s:'.a:name.'_numElems'
+ if numElems == 0
+ return ''
+ else
+ exe 'let ret = s:'.a:name.'_Element_'.numElems
+ let numElems = numElems - 1
+ exe 'let s:'.a:name.'_numElems = numElems'
+ return ret
+ end
+endfunction
+" }}}
+" MySearch: just like search(), but returns large number on failure {{{
+function! <SID>MySearch(pat, opt)
+ if a:opt == 'in'
+ if getline('.') =~ a:pat
+ let ret = line('.')
+ else
+ let ret = search(a:pat, 'W')
+ end
+ else
+ normal! $
+ let ret = search(a:pat, 'W')
+ end
+
+ if ret == 0
+ let ret = line('$') + 1
+ end
+ return ret
+endfunction
+" }}}
+" Function: IsInSkippedRegion (lnum, regions) {{{
+" Description: finds whether a given line number is within one of the regions
+" skipped.
+function! IsInSkippedRegion(lnum, regions)
+ let i = 1
+ let subset = s:Strntok(a:regions, '|', i)
+ while subset != ''
+ let n1 = s:Strntok(subset, ',', 1)
+ let n2 = s:Strntok(subset, ',', 2)
+ if a:lnum >= n1 && a:lnum <= n2
+ return 1
+ end
+
+ let subset = s:Strntok(a:regions, '|', i)
+ let i = i + 1
+ endwhile
+
+ return 0
+endfunction " }}}
+" Function: Strntok (string, tok, n) {{{
+" extract the n^th token from s seperated by tok.
+" example: Strntok('1,23,3', ',', 2) = 23
+fun! <SID>Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun " }}}
+
+" vim600:fdm=marker
diff --git a/.vim/plugin/c.vim b/.vim/plugin/c.vim
new file mode 100644
index 0000000..bb9390f
--- /dev/null
+++ b/.vim/plugin/c.vim
@@ -0,0 +1,2678 @@
+"###############################################################################################
+"
+" Filename: c.vim
+"
+" Description: C/C++-IDE. Write programs by inserting complete statements,
+" comments, idioms, code snippets, templates and comments.
+" Compile, link and run one-file-programs without a makefile.
+" See also help file csupport.txt .
+"
+" GVIM Version: 7.0+
+"
+" Configuration: There are some personal details which should be configured
+" (see the files README.csupport and csupport.txt).
+"
+" Author: Dr.-Ing. Fritz Mehner, FH Südwestfalen, 58644 Iserlohn, Germany
+" Email: mehner@fh-swf.de
+"
+" Version: see variable g:C_Version below
+" Created: 04.11.2000
+" License: Copyright (c) 2000-2007, Fritz Mehner
+" This program is free software; you can redistribute it and/or
+" modify it under the terms of the GNU General Public License as
+" published by the Free Software Foundation, version 2 of the
+" License.
+" This program is distributed in the hope that it will be
+" useful, but WITHOUT ANY WARRANTY; without even the implied
+" warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+" PURPOSE.
+" See the GNU General Public License version 2 for more details.
+" Revision: $Id: c.vim,v 1.35 2007/11/21 09:14:16 mehner Exp $
+"
+"------------------------------------------------------------------------------
+"
+if v:version < 700
+ echohl WarningMsg | echo 'The plugin c-support.vim needs Vim version >= 7 .'| echohl None
+ finish
+endif
+"
+" Prevent duplicate loading:
+"
+if exists("g:C_Version") || &cp
+ finish
+endif
+let g:C_Version= "5.0.5" " version number of this script; do not change
+"
+"###############################################################################################
+"
+" Global variables (with default values) which can be overridden.
+"
+" Platform specific items: {{{1
+" - root directory
+" - characters that must be escaped for filenames
+"
+let s:MSWIN = has("win16") || has("win32") || has("win64") ||
+ \ has("win95") || has("win32unix")
+"
+if s:MSWIN
+ "
+ let s:escfilename = ''
+ let s:plugin_dir = $VIM.'\vimfiles\'
+ let s:C_CodeSnippets = s:plugin_dir.'c-support/codesnippets/'
+ let s:C_IndentErrorLog = $HOME.'.indent.errorlog'
+ let s:installation = 'system'
+ "
+ let s:C_Display = ''
+ "
+else
+ "
+ let s:escfilename = ' \%#[]'
+ let s:installation = 'local'
+ "
+ " user / system wide installation (Linux/Unix)
+ "
+ if match( expand("<sfile>"), $VIM ) >= 0
+ " system wide installation
+ let s:plugin_dir = $VIM.'/vimfiles/'
+ let s:installation = 'system'
+ else
+ " user installation assumed
+ let s:plugin_dir = $HOME.'/.vim/'
+ endif
+ "
+ let s:C_CodeSnippets = $HOME.'/.vim/c-support/codesnippets/'
+ let s:C_IndentErrorLog = $HOME.'/.indent.errorlog'
+ "
+ let s:C_Display = system("echo -n $DISPLAY")
+ "
+endif
+" Use of dictionaries {{{1
+" Key word completion is enabled by the filetype plugin 'c.vim'
+" g:C_Dictionary_File must be global
+"
+if !exists("g:C_Dictionary_File")
+ let g:C_Dictionary_File = s:plugin_dir.'c-support/wordlists/c-c++-keywords.list,'.
+ \ s:plugin_dir.'c-support/wordlists/k+r.list,'.
+ \ s:plugin_dir.'c-support/wordlists/stl_index.list'
+endif
+"
+" Modul global variables (with default values) which can be overridden. {{{1
+"
+if s:MSWIN
+ let s:C_CCompiler = 'gcc.exe' " the C compiler
+ let s:C_CplusCompiler = 'g++.exe' " the C++ compiler
+ let s:C_ExeExtension = '.exe' " file extension for executables (leading point required)
+ let s:C_ObjExtension = '.obj' " file extension for objects (leading point required)
+else
+ let s:C_CCompiler = 'gcc' " the C compiler
+ let s:C_CplusCompiler = 'g++' " the C++ compiler
+ let s:C_ExeExtension = '' " file extension for executables (leading point required)
+ let s:C_ObjExtension = '.o' " file extension for objects (leading point required)
+endif
+"
+let s:C_CExtension = 'c' " C file extension; everything else is C++
+let s:C_CFlags = '-Wall -g -O0 -c' " compiler flags: compile, don't optimize
+let s:C_CodeCheckExeName = 'check'
+let s:C_CodeCheckOptions = '-K13'
+let s:C_LFlags = '-Wall -g -O0' " compiler flags: link , don't optimize
+let s:C_Libs = '-lm' " libraries to use
+let s:C_LineEndCommColDefault = 49
+let s:C_LoadMenus = 'yes'
+let s:C_MenuHeader = 'yes'
+let s:C_OutputGvim = 'vim'
+let s:C_Printheader = "%<%f%h%m%< %=%{strftime('%x %X')} Page %N"
+let s:C_Root = '&C\/C\+\+.' " the name of the root menu of this plugin
+let s:C_TypeOfH = 'cpp'
+let s:C_Wrapper = s:plugin_dir.'c-support/scripts/wrapper.sh'
+let s:C_XtermDefaults = '-fa courier -fs 12 -geometry 80x24'
+"
+let s:C_GlobalTemplateFile = s:plugin_dir.'c-support/templates/Templates'
+let s:C_GlobalTemplateDir = fnamemodify( s:C_GlobalTemplateFile, ":p:h" ).'/'
+let s:C_LocalTemplateFile = $HOME.'/.vim/c-support/templates/Templates'
+let s:C_LocalTemplateDir = fnamemodify( s:C_LocalTemplateFile, ":p:h" ).'/'
+let s:C_TemplateOverwrittenMsg= 'yes'
+"
+let s:C_FormatDate = '%x'
+let s:C_FormatTime = '%X'
+let s:C_FormatYear = '%Y'
+"
+"------------------------------------------------------------------------------
+"
+" Look for global variables (if any), to override the defaults.
+"
+function! C_CheckGlobal ( name )
+ if exists('g:'.a:name)
+ exe 'let s:'.a:name.' = g:'.a:name
+ endif
+endfunction " ---------- end of function C_CheckGlobal ----------
+"
+call C_CheckGlobal('C_CCompiler ')
+call C_CheckGlobal('C_CExtension ')
+call C_CheckGlobal('C_CFlags ')
+call C_CheckGlobal('C_CodeCheckExeName ')
+call C_CheckGlobal('C_CodeCheckOptions ')
+call C_CheckGlobal('C_CodeSnippets ')
+call C_CheckGlobal('C_CplusCompiler ')
+call C_CheckGlobal('C_ExeExtension ')
+call C_CheckGlobal('C_FormatDate ')
+call C_CheckGlobal('C_FormatTime ')
+call C_CheckGlobal('C_FormatYear ')
+call C_CheckGlobal('C_GlobalTemplateFile ')
+call C_CheckGlobal('C_IndentErrorLog ')
+call C_CheckGlobal('C_LFlags ')
+call C_CheckGlobal('C_Libs ')
+call C_CheckGlobal('C_LineEndCommColDefault ')
+call C_CheckGlobal('C_LoadMenus ')
+call C_CheckGlobal('C_LocalTemplateFile ')
+call C_CheckGlobal('C_MenuHeader ')
+call C_CheckGlobal('C_ObjExtension ')
+call C_CheckGlobal('C_OutputGvim ')
+call C_CheckGlobal('C_Printheader ')
+call C_CheckGlobal('C_Root ')
+call C_CheckGlobal('C_TemplateOverwrittenMsg ')
+call C_CheckGlobal('C_TypeOfH ')
+call C_CheckGlobal('C_XtermDefaults ')
+"
+"----- some variables for internal use only -----------------------------------
+"
+"
+" set default geometry if not specified
+"
+if match( s:C_XtermDefaults, "-geometry\\s\\+\\d\\+x\\d\\+" ) < 0
+ let s:C_XtermDefaults = s:C_XtermDefaults." -geometry 80x24"
+endif
+"
+" escape the printheader
+"
+let s:C_Printheader = escape( s:C_Printheader, ' %' )
+"
+let s:C_HlMessage = ""
+"
+" characters that must be escaped for filenames
+"
+let s:C_If0_Counter = 0
+let s:C_If0_Txt = "If0Label_"
+"
+let s:C_SplintIsExecutable = 0
+if executable( "splint" )
+ let s:C_SplintIsExecutable = 1
+endif
+"
+let s:C_CodeCheckIsExecutable = 0
+if executable( s:C_CodeCheckExeName )
+ let s:C_CodeCheckIsExecutable = 1
+endif
+"
+"------------------------------------------------------------------------------
+" Control variables (not user configurable)
+"------------------------------------------------------------------------------
+let s:Attribute = { 'below':'', 'above':'', 'start':'', 'append':'', 'insert':'' }
+let s:C_Attribute = {}
+let s:C_ExpansionLimit = 10
+let s:C_FileVisited = []
+"
+let s:C_MacroNameRegex = '\([a-zA-Z][a-zA-Z0-9_]*\)'
+let s:C_MacroLineRegex = '^\s*|'.s:C_MacroNameRegex.'|\s*=\s*\(.*\)'
+let s:C_ExpansionRegex = '|?'.s:C_MacroNameRegex.'\(:\a\)\?|'
+let s:C_NonExpansionRegex = '|'.s:C_MacroNameRegex.'\(:\a\)\?|'
+"
+let s:C_TemplateNameDelimiter = '-+_,\. '
+let s:C_TemplateLineRegex = '^==\s*\([a-zA-Z][0-9a-zA-Z'.s:C_TemplateNameDelimiter
+let s:C_TemplateLineRegex .= ']\+\)\s*==\s*\([a-z]\+\s*==\)\?'
+"
+let s:C_ExpansionCounter = {}
+let s:C_Template = {}
+let s:C_Macro = {'|AUTHOR|' : 'first name surname',
+ \ '|AUTHORREF|' : '',
+ \ '|EMAIL|' : '',
+ \ '|COMPANY|' : '',
+ \ '|PROJECT|' : '',
+ \ '|COPYRIGHTHOLDER|': ''
+ \ }
+let s:C_MacroFlag = { ':l' : 'lowercase' ,
+ \ ':u' : 'uppercase' ,
+ \ ':c' : 'capitalize' ,
+ \ ':L' : 'legalize name' ,
+ \ }
+
+"------------------------------------------------------------------------------
+" C : C_InitMenus {{{1
+" Initialization of C support menus
+"------------------------------------------------------------------------------
+"
+function! C_InitMenus ()
+ "
+ "===============================================================================================
+ "----- Menu : C main menu entry ------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_Root != ""
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'-Sep00- :'
+ endif
+ endif
+ "
+ "===============================================================================================
+ "----- Menu : C-Comments -------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'&Comments.&Comments<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.-Sep00- :'
+ endif
+ exe "amenu <silent> ".s:C_Root.'&Comments.end-of-&line\ comment <Esc><Esc><Esc>:call C_LineEndComment( )<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.end-of-&line\ comment <Esc><Esc><Esc>:call C_MultiLineEndComments( )<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'&Comments.ad&just\ end-of-line\ com\. <Esc><Esc>:call C_AdjustLineEndComm("a")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.ad&just\ end-of-line\ com\. <Esc><Esc>:call C_AdjustLineEndComm("v")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'&Comments.&set\ end-of-line\ com\.\ col\. <Esc><Esc>:call C_GetLineEndCommCol()<CR>'
+
+ exe "amenu ".s:C_Root.'&Comments.-SEP10- :'
+ exe "amenu <silent> ".s:C_Root.'&Comments.code\ ->\ comment\ \/&*\ *\/ <Esc><Esc>:call C_CodeComment("a","yes")<CR><Esc>:nohlsearch<CR>j'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.code\ ->\ comment\ \/&*\ *\/ <Esc><Esc>:call C_CodeComment("v","yes")<CR><Esc>:nohlsearch<CR>j'
+ exe "amenu <silent> ".s:C_Root.'&Comments.code\ ->\ comment\ &\/\/ <Esc><Esc>:call C_CodeComment("a","no")<CR><Esc>:nohlsearch<CR>j'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.code\ ->\ comment\ &\/\/ <Esc><Esc>:call C_CodeComment("v","no")<CR><Esc>:nohlsearch<CR>j'
+ exe "amenu <silent> ".s:C_Root.'&Comments.c&omment\ ->\ code <Esc><Esc>:call C_CommentCode("a")<CR><Esc>:nohlsearch<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.c&omment\ ->\ code <Esc><Esc>:call C_CommentCode("v")<CR><Esc>:nohlsearch<CR>'
+
+ exe "amenu ".s:C_Root.'&Comments.-SEP0- :'
+ exe "amenu <silent> ".s:C_Root.'&Comments.&frame\ comment <Esc><Esc>:call C_InsertTemplate("comment.frame")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Comments.f&unction\ description <Esc><Esc>:call C_InsertTemplate("comment.function")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.-SEP1- :'
+ exe "amenu <silent> ".s:C_Root.'&Comments.&method\ description <Esc><Esc>:call C_InsertTemplate("comment.method")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Comments.cl&ass\ description <Esc><Esc>:call C_InsertTemplate("comment.class")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.-SEP2- :'
+ exe "amenu <silent> ".s:C_Root.'&Comments.file\ description <Esc><Esc>:call C_InsertTemplate("comment.file-description")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.-SEP3- :'
+ "
+ "----- Submenu : C-Comments : file sections -------------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.file\ sections<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.-Sep0- :'
+ "
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.&Header\ File\ Includes <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-header-includes")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Macros <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-macros")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Type\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-typedefs")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Data\ Types <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-data-types")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Variables <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-class-defs")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Prototypes <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-local-variables")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.&Exp\.\ Function\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-prototypes")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.&Local\ Function\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-function-defs-exported")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.-SEP6- :'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.Local\ &Class\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-function-defs-local")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.E&xp\.\ Class\ Impl\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-class-implementations-exported")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.L&ocal\ Class\ Impl\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-cpp-class-implementations-local")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.-SEP7- :'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.&All\ sections,\ C '
+ \'<Esc><Esc>:call C_Comment_C_SectionAll("c")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&C\/C\+\+-file\ sections.All\ &sections,\ C++ '
+ \'<Esc><Esc>:call C_Comment_C_SectionAll("cpp")<CR>'
+ "
+ "
+ "----- Submenu : H-Comments : file sections -------------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.H-file\ sections<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.-Sep0- :'
+ "'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.&Header\ File\ Includes <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-header-includes")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.Exported\ &Macros <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-macros")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.Exported\ &Type\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-exported-typedefs")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.Exported\ &Data\ Types <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-exported-data-types")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.Exported\ &Variables <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-exported-class-defs")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.Exported\ &Funct\.\ Decl\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-exported-variables")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.-SEP4- :'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.E&xported\ Class\ Def\. <Esc><Esc>:call C_InsertTemplate("comment.file-section-hpp-exported-function-declarations")<CR>'
+
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.-SEP5- :'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.&All\ sections,\ C '
+ \'<Esc><Esc>:call C_Comment_H_SectionAll("c")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&H-file\ sections.All\ &sections,\ C++ '
+ \'<Esc><Esc>:call C_Comment_H_SectionAll("cpp")<CR>'
+ "
+ exe "amenu ".s:C_Root.'&Comments.-SEP8- :'
+ "
+ "----- Submenu : C-Comments : keyword comments ----------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..keyw\.+comm\.<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..-Sep0- :'
+"
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:&BUG\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-bug")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:&COMPILER\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-compiler")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:&TODO\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-todo")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:T&RICKY\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-tricky")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:&WARNING\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-warning")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:W&ORKAROUND\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-workaround")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.&KEYWORD+comm\..\:&new\ keyword\: <Esc><Esc>$<Esc>:call C_InsertTemplate("comment.keyword-keyword")<CR>'
+ "
+ "----- Submenu : C-Comments : special comments ----------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..special\ comm\.<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..-Sep0- :'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..&EMPTY <Esc><Esc>$<Esc>:call C_CommentSpecial("EMPTY") <CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..&FALL\ THROUGH <Esc><Esc>$<Esc>:call C_CommentSpecial("FALL THROUGH") <CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..&IMPL\.\ TYPE\ CONV <Esc><Esc>$<Esc>:call C_CommentSpecial("IMPLICIT TYPE CONVERSION") <CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..&NO\ RETURN <Esc><Esc>$<Esc>:call C_CommentSpecial("NO RETURN") <CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..NOT\ &REACHED <Esc><Esc>$<Esc>:call C_CommentSpecial("NOT REACHED") <CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..&TO\ BE\ IMPL\. <Esc><Esc>$<Esc>:call C_CommentSpecial("REMAINS TO BE IMPLEMENTED")<CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..-SEP81- :'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..constant\ type\ is\ &long\ (L) <Esc><Esc>$<Esc>:call C_CommentSpecial("constant type is long")<CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..constant\ type\ is\ &unsigned\ (U) <Esc><Esc>$<Esc>:call C_CommentSpecial("constant type is unsigned")<CR>kgJA'
+ exe "amenu ".s:C_Root.'&Comments.&special\ comm\..constant\ type\ is\ unsigned\ l&ong\ (UL) <Esc><Esc>$<Esc>:call C_CommentSpecial("constant type is unsigned long")<CR>kgJA'
+
+ "
+ "----- Submenu : C-Comments : Tags ----------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).tags\ (plugin)<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).-Sep0- :'
+ "
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&AUTHOR <Esc><Esc>:call C_InsertMacroValue("AUTHOR")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).AUTHOR&REF <Esc><Esc>:call C_InsertMacroValue("AUTHORREF")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&COMPANY <Esc><Esc>:call C_InsertMacroValue("COMPANY")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).C&OPYRIGHTHOLDER <Esc><Esc>:call C_InsertMacroValue("COPYRIGHTHOLDER")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&EMAIL <Esc><Esc>:call C_InsertMacroValue("EMAIL")<CR>'
+ exe "amenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&PROJECT <Esc><Esc>:call C_InsertMacroValue("PROJECT")<CR>'
+
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&AUTHOR <Esc><Esc>:call C_InsertMacroValue("AUTHOR")<CR>a'
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).AUTHOR&REF <Esc><Esc>:call C_InsertMacroValue("AUTHORREF")<CR>a'
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&COMPANY <Esc><Esc>:call C_InsertMacroValue("COMPANY")<CR>a'
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).C&OPYRIGHTHOLDER <Esc><Esc>:call C_InsertMacroValue("COPYRIGHTHOLDER")<CR>a'
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&EMAIL <Esc><Esc>:call C_InsertMacroValue("EMAIL")<CR>a'
+ exe "imenu ".s:C_Root.'&Comments.ta&gs\ (plugin).&PROJECT <Esc><Esc>:call C_InsertMacroValue("PROJECT")<CR>a'
+ "
+ "
+ exe "amenu ".s:C_Root.'&Comments.-SEP9- :'
+ "
+ exe " menu ".s:C_Root.'&Comments.&date a<C-R>=C_InsertDateAndTime("d")<CR>'
+ exe "imenu ".s:C_Root.'&Comments.&date <C-R>=C_InsertDateAndTime("d")<CR>'
+ exe " menu ".s:C_Root.'&Comments.date\ &time a<C-R>=C_InsertDateAndTime("dt")<CR>'
+ exe "imenu ".s:C_Root.'&Comments.date\ &time <C-R>=C_InsertDateAndTime("dt")<CR>'
+
+ exe "amenu ".s:C_Root.'&Comments.-SEP12- :'
+ exe "amenu <silent> ".s:C_Root.'&Comments.\/\/\ xxx\ \ \ \ \ &->\ \ \/*\ xxx\ *\/ <Esc><Esc>:call C_CommentCppToC()<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.\/\/\ xxx\ \ \ \ \ &->\ \ \/*\ xxx\ *\/ <Esc><Esc>:'."'<,'>".'call C_CommentCppToC()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Comments.\/*\ xxx\ *\/\ \ -&>\ \ \/\/\ xxx <Esc><Esc>:call C_CommentCToCpp()<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Comments.\/*\ xxx\ *\/\ \ -&>\ \ \/\/\ xxx <Esc><Esc>:'."'<,'>".'call C_CommentCToCpp()<CR>'
+ "
+ "===============================================================================================
+ "----- Menu : C-Statements------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'&Statements.&Statements<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Statements.-Sep00- :'
+ endif
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.&do\ \{\ \}\ while <Esc><Esc>:call C_InsertTemplate("statements.do-while")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.&do\ \{\ \}\ while <Esc><Esc>:call C_InsertTemplate("statements.do-while", "v")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.f&or <Esc><Esc>:call C_InsertTemplate("statements.for")<CR>'
+ "
+ exe "anoremenu <silent>".s:C_Root.'&Statements.fo&r\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.for-block")<CR>'
+ exe "vnoremenu <silent>".s:C_Root.'&Statements.fo&r\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.for-block", "v")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.&if <Esc><Esc>:call C_InsertTemplate("statements.if")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.i&f\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.if-block")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.i&f\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.if-block", "v")<CR>'
+
+ exe "amenu <silent>".s:C_Root.'&Statements.if\ &else <Esc><Esc>:call C_InsertTemplate("statements.if-else")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.if\ &else <Esc><Esc>:call C_InsertTemplate("statements.if-else", "v")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.if\ \{\ \}\ e&lse\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.if-block-else")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.if\ \{\ \}\ e&lse\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.if-block-else", "v")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.&while <Esc><Esc>:call C_InsertTemplate("statements.while")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.w&hile\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.while-block")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.w&hile\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.while-block", "v")<CR>'
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.&switch\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.switch")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.&switch\ \{\ \} <Esc><Esc>:call C_InsertTemplate("statements.switch", "v")<CR>'
+ "
+ exe "amenu ".s:C_Root.'&Statements.&case\ \.\.\.\ break <<Esc><Esc>:call C_InsertTemplate("statements.case")<CR>'
+ "
+ "
+ exe "amenu <silent>".s:C_Root.'&Statements.&\{\ \} <Esc><Esc>:call C_InsertTemplate("statements.block")<CR>'
+ exe "vmenu <silent>".s:C_Root.'&Statements.&\{\ \} <Esc><Esc>:call C_InsertTemplate("statements.block", "v")<CR>'
+ "
+ "
+ "===============================================================================================
+ "----- Menu : C-Idioms ---------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'&Idioms.&Idioms<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Idioms.-Sep00- :'
+ endif
+ exe "amenu <silent> ".s:C_Root.'&Idioms.&function <Esc><Esc>:call C_InsertTemplate("idioms.function")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.&function <Esc><Esc>:call C_InsertTemplate("idioms.function", "v")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.s&tatic\ function <Esc><Esc>:call C_InsertTemplate("idioms.function-static")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.s&tatic\ function <Esc><Esc>:call C_InsertTemplate("idioms.function-static", "v")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.&main <Esc><Esc>:call C_InsertTemplate("idioms.main")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.&main <Esc><Esc>:call C_InsertTemplate("idioms.main", "v")<CR>'
+
+ exe "amenu ".s:C_Root.'&Idioms.-SEP1- :'
+ exe "amenu ".s:C_Root.'&Idioms.for(x=&0;\ x<n;\ x\+=1) <Esc><Esc>:call C_CodeFor("up" , "a")<CR>a'
+ exe "amenu ".s:C_Root.'&Idioms.for(x=&n-1;\ x>=0;\ x\-=1) <Esc><Esc>:call C_CodeFor("down", "a")<CR>a'
+ exe "vmenu ".s:C_Root.'&Idioms.for(x=&0;\ x<n;\ x\+=1) <Esc><Esc>:call C_CodeFor("up" , "v")<CR>'
+ exe "vmenu ".s:C_Root.'&Idioms.for(x=&n-1;\ x>=0;\ x\-=1) <Esc><Esc>:call C_CodeFor("down", "v")<CR>'
+
+ exe "amenu ".s:C_Root.'&Idioms.-SEP2- :'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.&enum\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.enum")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.&struct\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.struct")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.&union\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.union")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.&enum\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.enum" , "v")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.&struct\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.struct", "v")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Idioms.&union\+typedef <Esc><Esc>:call C_InsertTemplate("idioms.union" , "v")<CR>'
+ exe "amenu ".s:C_Root.'&Idioms.-SEP3- :'
+ "
+ exe " noremenu ".s:C_Root.'&Idioms.&printf <Esc><Esc>oprintf("\n");<Esc>2F"a'
+ exe "inoremenu ".s:C_Root.'&Idioms.&printf printf("\n");<Esc>2F"a'
+
+ exe " noremenu ".s:C_Root.'&Idioms.s&canf <Esc><Esc>oscanf("", & );<Esc>F"i'
+ exe "inoremenu ".s:C_Root.'&Idioms.s&canf scanf("", & );<Esc>F"i'
+ "
+ exe "amenu ".s:C_Root.'&Idioms.-SEP4- :'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.p=ca&lloc\(n,sizeof(type)\) <Esc><Esc>:call C_InsertTemplate("idioms.calloc")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.p=m&alloc\(sizeof(type)\) <Esc><Esc>:call C_InsertTemplate("idioms.malloc")<CR>'
+ "
+ exe "anoremenu <silent> ".s:C_Root.'&Idioms.si&zeof(\ \) isizeof()<Left>'
+ exe "inoremenu <silent> ".s:C_Root.'&Idioms.si&zeof(\ \) sizeof()<Left>'
+ exe "vnoremenu <silent> ".s:C_Root.'&Idioms.si&zeof(\ \) ssizeof()<Esc>P'
+ "
+ exe "anoremenu <silent> ".s:C_Root.'&Idioms.asse&rt(\ \) oassert();<Left><Left>'
+ exe "vnoremenu <silent> ".s:C_Root.'&Idioms.asse&rt(\ \) sassert();<Esc>F(p'
+ exe "amenu ".s:C_Root.'&Idioms.-SEP5- :'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.open\ &input\ file <Esc><Esc>:call C_InsertTemplate("idioms.open-input-file")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.open\ &output\ file <Esc><Esc>:call C_InsertTemplate("idioms.open-output-file")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.fscanf <Esc><Esc>:call C_InsertTemplate("idioms.fscanf")<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Idioms.fprintf <Esc><Esc>:call C_InsertTemplate("idioms.fprintf")<CR>'
+ "
+ "===============================================================================================
+ "----- Menu : C-Preprocessor ---------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'&Preprocessor.&Preprocessor<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Preprocessor.-Sep00- :'
+ endif
+ "
+ "----- Submenu : C-Idioms: standard library -------------------------------------------------------
+ "'
+ exe "amenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..Std\.Lib\.<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..-Sep0- :'
+ "
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&assert\.h <Esc><Esc>o#include<Tab><assert.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&ctype\.h <Esc><Esc>o#include<Tab><ctype.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&errno\.h <Esc><Esc>o#include<Tab><errno.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&float\.h <Esc><Esc>o#include<Tab><float.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&limits\.h <Esc><Esc>o#include<Tab><limits.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..l&ocale\.h <Esc><Esc>o#include<Tab><locale.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&math\.h <Esc><Esc>o#include<Tab><math.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..set&jmp\.h <Esc><Esc>o#include<Tab><setjmp.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..s&ignal\.h <Esc><Esc>o#include<Tab><signal.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..stdar&g\.h <Esc><Esc>o#include<Tab><stdarg.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..st&ddef\.h <Esc><Esc>o#include<Tab><stddef.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&stdio\.h <Esc><Esc>o#include<Tab><stdio.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..stdli&b\.h <Esc><Esc>o#include<Tab><stdlib.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..st&ring\.h <Esc><Esc>o#include<Tab><string.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &Std\.Lib\..&time\.h <Esc><Esc>o#include<Tab><time.h>'
+ "
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.C99<Tab>C\/C\+\+ <Esc>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.-Sep0- :'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.&complex\.h <Esc><Esc>o#include<Tab><complex.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.&fenv\.h <Esc><Esc>o#include<Tab><fenv.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.&inttypes\.h <Esc><Esc>o#include<Tab><inttypes.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.is&o646\.h <Esc><Esc>o#include<Tab><iso646.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.&stdbool\.h <Esc><Esc>o#include<Tab><stdbool.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.s&tdint\.h <Esc><Esc>o#include<Tab><stdint.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.tg&math\.h <Esc><Esc>o#include<Tab><tgmath.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.&wchar\.h <Esc><Esc>o#include<Tab><wchar.h>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ C&99.wct&ype\.h <Esc><Esc>o#include<Tab><wctype.h>'
+ "
+ exe "amenu ".s:C_Root.'&Preprocessor.-SEP2- :'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &\<\.\.\.\> <Esc><Esc>o#include<Tab><><Left>'
+ exe "anoremenu ".s:C_Root.'&Preprocessor.#include\ &\"\.\.\.\" <Esc><Esc>o#include<Tab>""<Left>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#&define <Esc><Esc>:call C_InsertTemplate("preprocessor.define")<CR>'
+ exe "amenu ".s:C_Root.'&Preprocessor.&#undef <Esc><Esc>:call C_InsertTemplate("preprocessor.undefine")<CR>'
+ "
+ exe "amenu ".s:C_Root.'&Preprocessor.#&if\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.if-else-endif")<CR>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#i&fdef\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#if&ndef\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#ifnd&ef\ #def\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR>'
+ exe "amenu ".s:C_Root.'&Preprocessor.#if\ &0\ #endif <Esc><Esc>:call C_PPIf0("a")<CR>2ji'
+ "
+ exe "vmenu ".s:C_Root.'&Preprocessor.#&if\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.if-else-endif", "v")<CR>'
+ exe "vmenu ".s:C_Root.'&Preprocessor.#i&fdef\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif", "v")<CR>'
+ exe "vmenu ".s:C_Root.'&Preprocessor.#if&ndef\ #else\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif", "v")<CR>'
+ exe "vmenu ".s:C_Root.'&Preprocessor.#ifnd&ef\ #def\ #endif <Esc><Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif", "v")<CR>'
+ exe "vmenu ".s:C_Root.'&Preprocessor.#if\ &0\ #endif <Esc><Esc>:call C_PPIf0("v")<CR>'
+ "
+ exe "amenu <silent> ".s:C_Root.'&Preprocessor.&remove\ #if\ 0\ #endif <Esc><Esc>:call C_PPIf0Remove()<CR>'
+ "
+ "===============================================================================================
+ "----- Menu : Snippets ---------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'S&nippets.S&nippets<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'S&nippets.-Sep00- :'
+ endif
+ if s:C_CodeSnippets != ""
+ exe "amenu <silent> ".s:C_Root.'S&nippets.&read\ code\ snippet <C-C>:call C_CodeSnippet("r")<CR>'
+ exe "amenu <silent> ".s:C_Root.'S&nippets.&write\ code\ snippet <C-C>:call C_CodeSnippet("w")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'S&nippets.&write\ code\ snippet <C-C>:call C_CodeSnippet("wv")<CR>'
+ exe "amenu <silent> ".s:C_Root.'S&nippets.&edit\ code\ snippet <C-C>:call C_CodeSnippet("e")<CR>'
+ exe " menu <silent> ".s:C_Root.'S&nippets.-SEP1- :'
+ endif
+ exe " menu <silent> ".s:C_Root.'S&nippets.&pick\ up\ prototype <C-C>:call C_ProtoPick("n")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'S&nippets.&pick\ up\ prototype <C-C>:call C_ProtoPick("v")<CR>'
+ exe " menu <silent> ".s:C_Root.'S&nippets.&insert\ prototype(s) <C-C>:call C_ProtoInsert()<CR>'
+ exe " menu <silent> ".s:C_Root.'S&nippets.&clear\ prototype(s) <C-C>:call C_ProtoClear()<CR>'
+ exe " menu <silent> ".s:C_Root.'S&nippets.&show\ prototype(s) <C-C>:call C_ProtoShow()<CR>'
+
+ "
+ "===============================================================================================
+ "----- Menu : C++ --------------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'C&++.C&\+\+<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.-Sep00- :'
+ endif
+ exe " noremenu ".s:C_Root.'C&++.c&in <Esc><Esc>ocin<Tab>>> ;<Esc>i'
+ exe " noremenu ".s:C_Root.'C&++.cout\ &variable <Esc><Esc>ocout<Tab><< << endl;<Esc>2F<hi'
+ exe " noremenu ".s:C_Root.'C&++.cout\ &string <Esc><Esc>ocout<Tab><< "\n";<Esc>2F"a'
+ exe " noremenu ".s:C_Root.'C&++.<<\ &\"\" i<< "" <Left><Left>'
+ "
+ exe "inoremenu ".s:C_Root.'C&++.c&in cin<Tab>>> ;<Esc>i'
+ exe "inoremenu ".s:C_Root.'C&++.cout\ &variable cout<Tab><< << endl;<Esc>2F<hi'
+ exe "inoremenu ".s:C_Root.'C&++.cout\ &string cout<Tab><< "\n";<Esc>2F"a'
+ exe "inoremenu ".s:C_Root.'C&++.<<\ &\"\" << "" <Left><Left>'
+ "
+ "----- Submenu : C++ : output manipulators -------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.&output\ manipulators.output\ manip\.<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.&output\ manipulators.-Sep0- :'
+ "
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &boolalpha i<< boolalpha<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &dec i<< dec<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &endl i<< endl<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &fixed i<< fixed<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ fl&ush i<< flush<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &hex i<< hex<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &internal i<< internal<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &left i<< left<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &oct i<< oct<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &right i<< right<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ s&cientific i<< scientific<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &setbase\(\ \) i<< setbase(10) <Left><Left>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ se&tfill\(\ \) i<< setfill() <Left><Left>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ setiosfla&g\(\ \) i<< setiosflags() <Left><Left>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ set&precision\(\ \) i<< setprecision(6) <Left><Left>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ set&w\(\ \) i<< setw(0) <Left><Left>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showb&ase i<< showbase<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showpoi&nt i<< showpoint<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showpos\ \(&1\) i<< showpos<Space>'
+ exe " noremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ uppercase\ \(&2\) i<< uppercase<Space>'
+ "
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &boolalpha << boolalpha<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &dec << dec<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &endl << endl<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &fixed << fixed<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ fl&ush << flush<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &hex << hex<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &internal << internal<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &left << left<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ o&ct << oct<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &right << right<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ s&cientific << scientific<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ &setbase\(\ \) << setbase(10) <Left><Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ se&tfill\(\ \) << setfill() <Left><Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ setiosfla&g\(\ \) << setiosflags() <Left><Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ set&precision\(\ \) << setprecision(6) <Left><Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ set&w\(\ \) << setw(0) <Left><Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showb&ase << showbase<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showpoi&nt << showpoint<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ showpos\ \(&1\) << showpos<Space>'
+ exe "inoremenu ".s:C_Root.'C&++.&output\ manipulators.\<\<\ uppercase\ \(&2\) << uppercase<Space>'
+ "
+ "----- Submenu : C++ : ios flag bits -------------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.ios\ flag&bits.ios\ flags<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.ios\ flag&bits.-Sep0- :'
+ "
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&adjustfield iios::adjustfield'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::bas&efield iios::basefield'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&boolalpha iios::boolalpha'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&dec iios::dec'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&fixed iios::fixed'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::floa&tfield iios::floatfield'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&hex iios::hex'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&internal iios::internal'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&left iios::left'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&oct iios::oct'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&right iios::right'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::s&cientific iios::scientific'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::sho&wbase iios::showbase'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::showpoint\ \(&1\) iios::showpoint'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::show&pos iios::showpos'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&skipws iios::skipws'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::u&nitbuf iios::unitbuf'
+ exe " noremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&uppercase iios::uppercase'
+ "
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&adjustfield ios::adjustfield'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::bas&efield ios::basefield'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&boolalpha ios::boolalpha'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&dec ios::dec'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&fixed ios::fixed'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::floa&tfield ios::floatfield'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&hex ios::hex'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&internal ios::internal'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&left ios::left'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&oct ios::oct'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&right ios::right'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::s&cientific ios::scientific'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::sho&wbase ios::showbase'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::showpoint\ \(&1\) ios::showpoint'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::show&pos ios::showpos'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&skipws ios::skipws'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::u&nitbuf ios::unitbuf'
+ exe "inoremenu ".s:C_Root.'C&++.ios\ flag&bits.ios::&uppercase ios::uppercase'
+ "
+ "----- Submenu : C++ library (algorithm - locale) ----------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).alg\.\.loc<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).-Sep0- :'
+ "
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&algorithm <Esc><Esc>o#include<Tab><algorithm>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&bitset <Esc><Esc>o#include<Tab><bitset>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&complex <Esc><Esc>o#include<Tab><complex>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&deque <Esc><Esc>o#include<Tab><deque>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&exception <Esc><Esc>o#include<Tab><exception>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&fstream <Esc><Esc>o#include<Tab><fstream>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).f&unctional <Esc><Esc>o#include<Tab><functional>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).iomani&p <Esc><Esc>o#include<Tab><iomanip>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&ios <Esc><Esc>o#include<Tab><ios>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).iosf&wd <Esc><Esc>o#include<Tab><iosfwd>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).io&stream <Esc><Esc>o#include<Tab><iostream>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).istrea&m <Esc><Esc>o#include<Tab><istream>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).iterato&r <Esc><Esc>o#include<Tab><iterator>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).&limits <Esc><Esc>o#include<Tab><limits>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).lis&t <Esc><Esc>o#include<Tab><list>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <alg\.\.loc>\ \(&1\).l&ocale <Esc><Esc>o#include<Tab><locale>'
+ "
+ "----- Submenu : C++ library (map - vector) ----------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).map\.\.vec<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).-Sep0- :'
+
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&map <Esc><Esc>o#include<Tab><map>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).memor&y <Esc><Esc>o#include<Tab><memory>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&new <Esc><Esc>o#include<Tab><new>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).numeri&c <Esc><Esc>o#include<Tab><numeric>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&ostream <Esc><Esc>o#include<Tab><ostream>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&queue <Esc><Esc>o#include<Tab><queue>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&set <Esc><Esc>o#include<Tab><set>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).sst&ream <Esc><Esc>o#include<Tab><sstream>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).st&ack <Esc><Esc>o#include<Tab><stack>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).stde&xcept <Esc><Esc>o#include<Tab><stdexcept>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).stream&buf <Esc><Esc>o#include<Tab><streambuf>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).str&ing <Esc><Esc>o#include<Tab><string>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&typeinfo <Esc><Esc>o#include<Tab><typeinfo>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&utility <Esc><Esc>o#include<Tab><utility>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).&valarray <Esc><Esc>o#include<Tab><valarray>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <map\.\.vec>\ \(&2\).v&ector <Esc><Esc>o#include<Tab><vector>'
+ "
+ "----- Submenu : C library (cassert - ctime) -------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cX<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).-Sep0- :'
+ "
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&assert <Esc><Esc>o#include<Tab><cassert>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&ctype <Esc><Esc>o#include<Tab><cctype>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&errno <Esc><Esc>o#include<Tab><cerrno>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&float <Esc><Esc>o#include<Tab><cfloat>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&limits <Esc><Esc>o#include<Tab><climits>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cl&ocale <Esc><Esc>o#include<Tab><clocale>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&math <Esc><Esc>o#include<Tab><cmath>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cset&jmp <Esc><Esc>o#include<Tab><csetjmp>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cs&ignal <Esc><Esc>o#include<Tab><csignal>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cstdar&g <Esc><Esc>o#include<Tab><cstdarg>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cst&ddef <Esc><Esc>o#include<Tab><cstddef>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&stdio <Esc><Esc>o#include<Tab><cstdio>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cstdli&b <Esc><Esc>o#include<Tab><cstdlib>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).cst&ring <Esc><Esc>o#include<Tab><cstring>'
+ exe "anoremenu ".s:C_Root.'C&++.#include\ <cX>\ \(&3\).c&time <Esc><Esc>o#include<Tab><ctime>'
+ "
+ "----- End Submenu : C library (cassert - ctime) ---------------------------------------------
+ "
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP2- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.&method\ implement\. <Esc><Esc>:call C_InsertTemplate("cpp.method-implementation")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'C&++.&class <Esc><Esc>:call C_InsertTemplate("cpp.class")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.class\ (w\.\ &new) <Esc><Esc>:call C_InsertTemplate("cpp.class-using-new")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP3- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.tem&pl\.\ method\ impl\. <Esc><Esc>:call C_InsertTemplate("cpp.template-method-implementation")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.&templ\.\ class <Esc><Esc>:call C_InsertTemplate("cpp.template-class")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.templ\.\ class\ (w\.\ ne&w) <Esc><Esc>:call C_InsertTemplate("cpp.template-class-using-new")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP31- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.templ\.\ &function <Esc><Esc>:call C_InsertTemplate("cpp.template-function")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.&error\ class <Esc><Esc>:call C_InsertTemplate("cpp.error-class")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP4- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.operator\ &<< <Esc><Esc>:call C_InsertTemplate("cpp.operator-in")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.operator\ &>> <Esc><Esc>:call C_InsertTemplate("cpp.operator-out")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP5- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.tr&y\ \.\.\ catch <Esc><Esc>:call C_InsertTemplate("cpp.try-catch")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'C&++.tr&y\ \.\.\ catch <Esc><Esc>:call C_InsertTemplate("cpp.try-catch", "v")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.catc&h <Esc><Esc>:call C_InsertTemplate("cpp.catch")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'C&++.catc&h <Esc><Esc>:call C_InsertTemplate("cpp.catch", "v")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'C&++.catch\(&\.\.\.\) <Esc><Esc>:call C_InsertTemplate("cpp.catch-points")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'C&++.catch\(&\.\.\.\) <Esc><Esc>:call C_InsertTemplate("cpp.catch-points", "v")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP6- :'
+ exe "amenu <silent> ".s:C_Root.'C&++.open\ input\ file\ \ \(&4\) <Esc><Esc>:call C_InsertTemplate("cpp.open-input-file")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.open\ output\ file\ \(&5\) <Esc><Esc>:call C_InsertTemplate("cpp.open-output-file")<CR>'
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP7- :'
+
+ exe " menu <silent> ".s:C_Root.'C&++.&using\ namespace\ std; <Esc><Esc>ousing namespace std;<CR>'
+ exe " menu <silent> ".s:C_Root.'C&++.usin&g\ namespace\ ; <Esc><Esc>ousing namespace ;<Esc>$i'
+ exe "amenu <silent> ".s:C_Root.'C&++.namespace\ &\{\ \} <Esc><Esc>:call C_InsertTemplate("cpp.namespace")<CR>'
+
+ exe "imenu <silent> ".s:C_Root.'C&++.&using\ namespace\ std; using namespace std;<CR>'
+ exe "imenu <silent> ".s:C_Root.'C&++.usin&g\ namespace\ ; using namespace ;<Esc>$i'
+ exe "vmenu <silent> ".s:C_Root.'C&++.namespace\ &\{\ \} <Esc><Esc>:call C_InsertTemplate("cpp.namespace", "v")<CR>'
+
+ exe "amenu <silent> ".s:C_Root.'C&++.-SEP8- :'
+ "
+ "----- Submenu : RTTI ----------------------------------------------------------------------------
+ "
+ exe "amenu ".s:C_Root.'C&++.&RTTI.RTTI<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'C&++.&RTTI.-Sep0- :'
+ "
+ exe " noremenu ".s:C_Root.'C&++.&RTTI.&typeid atypeid()<Esc>hr(a'
+ exe " noremenu ".s:C_Root.'C&++.&RTTI.&static_cast astatic_cast<>()<Left>'
+ exe " noremenu ".s:C_Root.'C&++.&RTTI.&const_cast aconst_cast<>()<Left>'
+ exe " noremenu ".s:C_Root.'C&++.&RTTI.&reinterpret_cast areinterpret_cast<>()<Left>'
+ exe " noremenu ".s:C_Root.'C&++.&RTTI.&dynamic_cast adynamic_cast<>()<Left>'
+ "
+ exe "vnoremenu ".s:C_Root.'C&++.&RTTI.&typeid stypeid()<Esc>hr(p'
+ exe "vnoremenu ".s:C_Root.'C&++.&RTTI.&static_cast sstatic_cast<>()<Esc>P'
+ exe "vnoremenu ".s:C_Root.'C&++.&RTTI.&const_cast sconst_cast<>()<Esc>P'
+ exe "vnoremenu ".s:C_Root.'C&++.&RTTI.&reinterpret_cast sreinterpret_cast<>()<Esc>P'
+ exe "vnoremenu ".s:C_Root.'C&++.&RTTI.&dynamic_cast sdynamic_cast<>()<Esc>P'
+ "
+ exe "inoremenu ".s:C_Root.'C&++.&RTTI.&typeid typeid()<Esc>hr(a'
+ exe "inoremenu ".s:C_Root.'C&++.&RTTI.&static_cast static_cast<>()<Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&RTTI.&const_cast const_cast<>()<Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&RTTI.&reinterpret_cast reinterpret_cast<>()<Left>'
+ exe "inoremenu ".s:C_Root.'C&++.&RTTI.&dynamic_cast dynamic_cast<>()<Left>'
+ "
+ "----- End Submenu : RTTI ------------------------------------------------------------------------
+ "
+ exe "amenu <silent>".s:C_Root.'C&++.e&xtern\ \"C\"\ \{\ \} <Esc><Esc>:call C_InsertTemplate("cpp.extern")<CR>'
+ exe "vmenu <silent>".s:C_Root.'C&++.e&xtern\ \"C\"\ \{\ \} <Esc><Esc>:call C_InsertTemplate("cpp.extern", "v")<CR>'
+ "
+ "===============================================================================================
+ "----- Menu : run ----- -------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_MenuHeader == 'yes'
+ exe "amenu ".s:C_Root.'&Run.&Run<Tab>C\/C\+\+ <Esc>'
+ exe "amenu ".s:C_Root.'&Run.-Sep00- :'
+ endif
+ "
+ exe "amenu <silent> ".s:C_Root.'&Run.save\ and\ &compile<Tab>\<A-F9\> <C-C>:call C_Compile()<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.&link<Tab>\<F9\> <C-C>:call C_Link()<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.&run<Tab>\<C-F9\> <C-C>:call C_Run()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.cmd\.\ line\ &arg\.<Tab>\<S-F9\> <C-C>:call C_Arguments()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.-SEP0- :'
+ exe "amenu <silent> ".s:C_Root.'&Run.&make <C-C>:call C_Make()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.cmd\.\ line\ ar&g\.\ for\ make <C-C>:call C_MakeArguments()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.-SEP1- :'
+ if s:C_SplintIsExecutable==1
+ exe "amenu <silent> ".s:C_Root.'&Run.s&plint <C-C>:call C_SplintCheck()<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.cmd\.\ line\ arg\.\ for\ spl&int <C-C>:call C_SplintArguments()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.-SEP2- :'
+ endif
+ "
+ if s:C_CodeCheckIsExecutable==1
+ exe "amenu <silent> ".s:C_Root.'&Run.CodeChec&k <C-C>:call C_CodeCheck()<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.cmd\.\ line\ arg\.\ for\ Cod&eCheck <C-C>:call C_CodeCheckArguments()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.-SEP3- :'
+ endif
+ "
+ exe "amenu ".s:C_Root.'&Run.in&dent <C-C>:call C_Indent("a")<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ exe "vmenu ".s:C_Root.'&Run.in&dent <C-C>:call C_Indent("v")<CR>:redraw<CR>:call C_HlMessage()<CR>'
+ if s:MSWIN
+ exe "amenu <silent> ".s:C_Root.'&Run.&hardcopy\ to\ printer <C-C>:call C_Hardcopy("n")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Run.&hardcopy\ to\ printer <C-C>:call C_Hardcopy("v")<CR>'
+ else
+ exe "amenu <silent> ".s:C_Root.'&Run.&hardcopy\ to\ FILENAME\.ps <C-C>:call C_Hardcopy("n")<CR>'
+ exe "vmenu <silent> ".s:C_Root.'&Run.&hardcopy\ to\ FILENAME\.ps <C-C>:call C_Hardcopy("v")<CR>'
+ endif
+ exe "imenu <silent> ".s:C_Root.'&Run.-SEP4- :'
+
+ exe "amenu <silent> ".s:C_Root.'&Run.rebuild\ &templates <C-C>:call C_RebuildTemplates()<CR>'
+ exe "amenu <silent> ".s:C_Root.'&Run.&settings <C-C>:call C_Settings()<CR>'
+ exe "imenu <silent> ".s:C_Root.'&Run.-SEP5- :'
+
+ if !s:MSWIN
+ exe "amenu <silent> ".s:C_Root.'&Run.&xterm\ size <C-C>:call C_XtermSize()<CR>'
+ endif
+ if s:C_OutputGvim == "vim"
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ VIM->buffer->xterm <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ else
+ if s:C_OutputGvim == "buffer"
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ BUFFER->xterm->vim <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ else
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ XTERM->vim->buffer <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ endif
+ endif
+ "
+ "===============================================================================================
+ "----- Menu : help ------------------------------------------------------- {{{2
+ "===============================================================================================
+ "
+ if s:C_Root != ""
+ exe "menu <silent> ".s:C_Root.'&help\ \(plugin\) <C-C><C-C>:call C_HelpCsupport()<CR>'
+ endif
+
+endfunction " ---------- end of function C_InitMenus ----------
+"
+"===============================================================================================
+"----- Menu Functions --------------------------------------------------------------------------
+"===============================================================================================
+"
+"------------------------------------------------------------------------------
+" C_Input: Input after a highlighted prompt {{{1
+"------------------------------------------------------------------------------
+function! C_Input ( promp, text )
+ echohl Search " highlight prompt
+ call inputsave() " preserve typeahead
+ let retval=input( a:promp, a:text ) " read input
+ call inputrestore() " restore typeahead
+ echohl None " reset highlighting
+ let retval = substitute( retval, '^\s\+', "", "" ) " remove leading whitespaces
+ let retval = substitute( retval, '\s\+$', "", "" ) " remove trailing whitespaces
+ return retval
+endfunction " ---------- end of function C_Input ----------
+"
+"------------------------------------------------------------------------------
+" C_AdjustLineEndComm: adjust line-end comments {{{1
+"------------------------------------------------------------------------------
+function! C_AdjustLineEndComm ( mode ) range
+ "
+ if !exists("b:C_LineEndCommentColumn")
+ let b:C_LineEndCommentColumn = s:C_LineEndCommColDefault
+ endif
+
+ let save_cursor = getpos(".")
+
+ let save_expandtab = &expandtab
+ exe ":set expandtab"
+
+ if a:mode == 'v'
+ let pos0 = line("'<")
+ let pos1 = line("'>")
+ else
+ let pos0 = line(".")
+ let pos1 = pos0
+ endif
+
+ let linenumber = pos0
+ exe ":".pos0
+
+ while linenumber <= pos1
+ let line= getline(".")
+ " look for a C comment
+ let idx1 = 1 + match( line, '\s*\/\*.\{-}\*\/' )
+ let idx2 = 1 + match( line, '\/\*.\{-}\*\/' )
+ if idx2 == 0
+ " look for a C++ comment
+ let idx1 = 1 + match( line, '\s*\/\/.*$' )
+ let idx2 = 1 + match( line, '\/\/.*$' )
+ endif
+
+ let ln = line(".")
+ call setpos(".", [ 0, ln, idx1, 0 ] )
+ let vpos1 = virtcol(".")
+ call setpos(".", [ 0, ln, idx2, 0 ] )
+ let vpos2 = virtcol(".")
+
+ if ! ( vpos2 == b:C_LineEndCommentColumn
+ \ || vpos1 > b:C_LineEndCommentColumn
+ \ || idx2 == 0 )
+
+ exe ":.,.retab"
+ " insert some spaces
+ if vpos2 < b:C_LineEndCommentColumn
+ let diff = b:C_LineEndCommentColumn-vpos2
+ call setpos(".", [ 0, ln, vpos2, 0 ] )
+ let @" = ' '
+ exe "normal ".diff."P"
+ endif
+
+ " remove some spaces
+ if vpos1 < b:C_LineEndCommentColumn && vpos2 > b:C_LineEndCommentColumn
+ let diff = vpos2 - b:C_LineEndCommentColumn
+ call setpos(".", [ 0, ln, b:C_LineEndCommentColumn, 0 ] )
+ exe "normal ".diff."x"
+ endif
+
+ endif
+ let linenumber=linenumber+1
+ normal j
+ endwhile
+ " restore tab expansion settings and cursor position
+ let &expandtab = save_expandtab
+ call setpos('.', save_cursor)
+
+endfunction " ---------- end of function C_AdjustLineEndComm ----------
+"
+"------------------------------------------------------------------------------
+" C_GetLineEndCommCol: get line-end comment position {{{1
+"------------------------------------------------------------------------------
+function! C_GetLineEndCommCol ()
+ let actcol = virtcol(".")
+ if actcol+1 == virtcol("$")
+ let b:C_LineEndCommentColumn = C_Input( 'start line-end comment at virtual column : ', actcol )
+ else
+ let b:C_LineEndCommentColumn = virtcol(".")
+ endif
+ echomsg "line end comments will start at column ".b:C_LineEndCommentColumn
+endfunction " ---------- end of function C_GetLineEndCommCol ----------
+"
+"------------------------------------------------------------------------------
+" C_LineEndComment: single line-end comment {{{1
+"------------------------------------------------------------------------------
+function! C_LineEndComment ( )
+ if !exists("b:C_LineEndCommentColumn")
+ let b:C_LineEndCommentColumn = s:C_LineEndCommColDefault
+ endif
+ " ----- trim whitespaces -----
+ exe 's/\s*$//'
+ let linelength= virtcol("$") - 1
+ if linelength < b:C_LineEndCommentColumn
+ let diff = b:C_LineEndCommentColumn -1 -linelength
+ exe "normal ".diff."A "
+ endif
+ " append at least one blank
+ if linelength >= b:C_LineEndCommentColumn
+ exe "normal A "
+ endif
+ call C_InsertTemplate('comment.end-of-line-comment')
+endfunction " ---------- end of function C_LineEndComment ----------
+"
+"------------------------------------------------------------------------------
+" C_MultiLineEndComments: multi line-end comments {{{1
+"------------------------------------------------------------------------------
+function! C_MultiLineEndComments ( )
+ "
+ if !exists("b:C_LineEndCommentColumn")
+ let b:C_LineEndCommentColumn = s:C_LineEndCommColDefault
+ endif
+ "
+ let pos0 = line("'<")
+ let pos1 = line("'>")
+ "
+ " ----- trim whitespaces -----
+ exe pos0.','.pos1.'s/\s*$//'
+ "
+ " ----- find the longest line -----
+ let maxlength = 0
+ let linenumber = pos0
+ normal '<
+ while linenumber <= pos1
+ if getline(".") !~ "^\\s*$" && maxlength<virtcol("$")
+ let maxlength= virtcol("$")
+ endif
+ let linenumber=linenumber+1
+ normal j
+ endwhile
+ "
+ if maxlength < b:C_LineEndCommentColumn
+ let maxlength = b:C_LineEndCommentColumn
+ else
+ let maxlength = maxlength+1 " at least 1 blank
+ endif
+ "
+ " ----- fill lines with blanks -----
+ let linenumber = pos0
+ while linenumber <= pos1
+ exe ":".linenumber
+ if getline(".") !~ "^\\s*$"
+ let diff = maxlength - virtcol("$")
+ exe "normal ".diff."A "
+ call C_InsertTemplate('comment.end-of-line-comment')
+ endif
+ let linenumber=linenumber+1
+ endwhile
+ "
+ " ----- back to the begin of the marked block -----
+ let diff = pos1-pos0
+ normal a
+ if pos1-pos0 > 0
+ exe "normal ".diff."k"
+ end
+endfunction " ---------- end of function C_MultiLineEndComments ----------
+"
+"------------------------------------------------------------------------------
+" C_CommentSpecial : special comments {{{1
+"------------------------------------------------------------------------------
+function! C_CommentSpecial (special)
+ put = ' '.s:C_Com1.' '.a:special.' '.s:C_Com2
+endfunction " ---------- end of function C_CommentSpecial ----------
+"
+"------------------------------------------------------------------------------
+" C_Comment_C_SectionAll: Section Comments {{{1
+"------------------------------------------------------------------------------
+"
+function! C_Comment_C_SectionAll ( type )
+
+ call C_InsertTemplate("comment.file-section-cpp-header-includes")
+ call C_InsertTemplate("comment.file-section-cpp-macros")
+ call C_InsertTemplate("comment.file-section-cpp-typedefs")
+ call C_InsertTemplate("comment.file-section-cpp-data-types")
+ if a:type=="cpp"
+ call C_InsertTemplate("comment.file-section-cpp-class-defs")
+ endif
+ call C_InsertTemplate("comment.file-section-cpp-local-variables")
+ call C_InsertTemplate("comment.file-section-cpp-prototypes")
+ call C_InsertTemplate("comment.file-section-cpp-function-defs-exported")
+ call C_InsertTemplate("comment.file-section-cpp-function-defs-local")
+ if a:type=="cpp"
+ call C_InsertTemplate("comment.file-section-cpp-class-implementations-exported")
+ call C_InsertTemplate("comment.file-section-cpp-class-implementations-local")
+ endif
+
+endfunction " ---------- end of function C_Comment_C_SectionAll ----------
+"
+function! C_Comment_H_SectionAll ( type )
+
+ call C_InsertTemplate("comment.file-section-hpp-header-includes")
+ call C_InsertTemplate("comment.file-section-hpp-macros")
+ call C_InsertTemplate("comment.file-section-hpp-exported-typedefs")
+ call C_InsertTemplate("comment.file-section-hpp-exported-data-types")
+ if a:type=="cpp"
+ call C_InsertTemplate("comment.file-section-hpp-exported-class-defs")
+ endif
+ call C_InsertTemplate("comment.file-section-hpp-exported-variables")
+ call C_InsertTemplate("comment.file-section-hpp-exported-function-declarations")
+
+endfunction " ---------- end of function C_Comment_H_SectionAll ----------
+"
+"----------------------------------------------------------------------
+" C_CodeComment : Code -> Comment {{{1
+"----------------------------------------------------------------------
+function! C_CodeComment( mode, style )
+
+ if a:mode=="a"
+ if a:style == 'yes'
+ silent exe ":s#^#/\* #"
+ silent put = ' */'
+ else
+ silent exe ":s#^#//#"
+ endif
+ endif
+
+ if a:mode=="v"
+ if a:style == 'yes'
+ silent exe ":'<,'>s/^/ \* /"
+ silent exe ":'< s'^ '\/'"
+ silent exe ":'>"
+ silent put = ' */'
+ else
+ silent exe ":'<,'>s#^#//#"
+ endif
+ endif
+
+endfunction " ---------- end of function C_CodeComment ----------
+"
+"----------------------------------------------------------------------
+" C_StartMultilineComment : Comment -> Code {{{1
+"----------------------------------------------------------------------
+let s:C_StartMultilineComment = '^\s*\/\*[\*! ]\='
+
+function! C_RemoveCComment( start, end )
+
+ if a:end-a:start<1
+ return 0 " lines removed
+ endif
+ "
+ " Is the C-comment complete ? Get length.
+ "
+ let check = getline( a:start ) =~ s:C_StartMultilineComment
+ let linenumber = a:start+1
+ while linenumber < a:end && getline( linenumber ) !~ '^\s*\*\/'
+ let check = check && getline( linenumber ) =~ '^\s*\*[ ]\='
+ let linenumber = linenumber+1
+ endwhile
+ let check = check && getline( linenumber ) =~ '^\s*\*\/'
+ "
+ " remove a complete comment
+ "
+ if check
+ exe "silent :".a:start.' s/'.s:C_StartMultilineComment.'//'
+ let linenumber1 = a:start+1
+ while linenumber1 < linenumber
+ exe "silent :".linenumber1.' s/^\s*\*[ ]\=//'
+ let linenumber1 = linenumber1+1
+ endwhile
+ exe "silent :".linenumber1.' s/^\s*\*\///'
+ endif
+
+ return linenumber-a:start+1 " lines removed
+endfunction " ---------- end of function C_RemoveCComment ----------
+"
+"----------------------------------------------------------------------
+" C_CommentCode : Comment -> Code {{{1
+"----------------------------------------------------------------------
+function! C_CommentCode(mode)
+ if a:mode=="a"
+ let pos1 = line(".")
+ let pos2 = pos1
+ endif
+ if a:mode=="v"
+ let pos1 = line("'<")
+ let pos2 = line("'>")
+ endif
+
+ let removed = 0
+ "
+ let linenumber=pos1
+ while linenumber <= pos2
+ " Do we have a C++ comment ?
+ if getline( linenumber ) =~ '^\s*//'
+ exe "silent :".linenumber.' s#^\s*//##'
+ let removed = 1
+ endif
+ " Do we have a C comment ?
+ if removed == 0 && getline( linenumber ) =~ s:C_StartMultilineComment
+ let removed = C_RemoveCComment(linenumber,pos2)
+ endif
+
+ if removed!=0
+ let linenumber = linenumber+removed
+ let removed = 0
+ else
+ let linenumber = linenumber+1
+ endif
+ endwhile
+endfunction " ---------- end of function C_CommentCode ----------
+"
+"----------------------------------------------------------------------
+" C_CommentCppToC : C++ Comment -> C Comment {{{1
+" Removes trailing whitespaces.
+"----------------------------------------------------------------------
+function! C_CommentCppToC()
+ silent! exe ':s#\/\/\s*\(.*\)\s*$#/* \1 */#'
+endfunction " ---------- end of function C_CommentCppToC ----------
+"
+"----------------------------------------------------------------------
+" C_CommentCToCpp : C Comment -> C++ Comment {{{1
+" Changes the first comment in case of multiple comments:
+" xxxx; /* */ /* */
+" xxxx; // /* */
+" Removes trailing whitespaces.
+"----------------------------------------------------------------------
+function! C_CommentCToCpp()
+ silent! exe ':s!\/\*\s*\(.\{-}\)\*\/!\/\/ \1!'
+ silent! exe ':s!\s*$!!'
+endfunction " ---------- end of function C_CommentCToCpp ----------
+"
+"=====================================================================================
+"----- Menu : Statements -----------------------------------------------------------
+"=====================================================================================
+"
+"------------------------------------------------------------------------------
+" C_PPIf0 : #if 0 .. #endif {{{1
+"------------------------------------------------------------------------------
+function! C_PPIf0 (mode)
+ "
+ let s:C_If0_Counter = 0
+ let save_line = line(".")
+ let actual_line = 0
+ "
+ " search for the maximum option number (if any)
+ "
+ normal gg
+ while actual_line < search( s:C_If0_Txt."\\d\\+" )
+ let actual_line = line(".")
+ let actual_opt = matchstr( getline(actual_line), s:C_If0_Txt."\\d\\+" )
+ let actual_opt = strpart( actual_opt, strlen(s:C_If0_Txt),strlen(actual_opt)-strlen(s:C_If0_Txt))
+ if s:C_If0_Counter < actual_opt
+ let s:C_If0_Counter = actual_opt
+ endif
+ endwhile
+ let s:C_If0_Counter = s:C_If0_Counter+1
+ silent exe ":".save_line
+ "
+ if a:mode=='a'
+ let zz= "\n#if 0 ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n"
+ let zz= zz."\n#endif ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n\n"
+ put =zz
+ if v:version >= 700
+ normal 4k
+ endif
+ endif
+
+ if a:mode=='v'
+ let zz= "\n#if 0 ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n"
+ :'<put! =zz
+ let zz= "#endif ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n\n"
+ :'>put =zz
+ :normal '<
+ endif
+
+endfunction " ---------- end of function C_PPIf0 ----------
+"
+"------------------------------------------------------------------------------
+" C_PPIf0Remove : remove #if 0 .. #endif {{{1
+"------------------------------------------------------------------------------
+function! C_PPIf0Remove ()
+
+ let frstline = searchpair( '^\s*#if\s\+0', '', '^\s*#endif\>.\+\<If0Label_', 'bn' )
+ if frstline<=0
+ echohl WarningMsg | echo 'no #if 0 ... #endif found or cursor not inside such a directive'| echohl None
+ return
+ endif
+ let lastline = searchpair( '^\s*#if\s\+0', '', '^\s*#endif\>.\+\<If0Label_', 'n' )
+ if lastline<=0
+ echohl WarningMsg | echo 'no #if 0 ... #endif found or cursor not inside such a directive'| echohl None
+ return
+ endif
+ let actualnumber1 = matchstr( getline(frstline), s:C_If0_Txt."\\d\\+" )
+ let actualnumber2 = matchstr( getline(lastline), s:C_If0_Txt."\\d\\+" )
+ if actualnumber1 != actualnumber2
+ echohl WarningMsg | echo 'lines '.frstline.', '.lastline.': comment tags do not match'| echohl None
+ return
+ endif
+
+ silent exe ':'.lastline.','.lastline.'d'
+ silent exe ':'.frstline.','.frstline.'d'
+
+endfunction " ---------- end of function C_PPIf0Remove ----------
+"
+"-------------------------------------------------------------------------------
+" C_LegalizeName : replace non-word characters by underscores
+" - multiple whitespaces
+" - multiple non-word characters
+" - multiple underscores
+"-------------------------------------------------------------------------------
+function! C_LegalizeName ( name )
+ let identifier = substitute( a:name, '\s\+', '_', 'g' )
+ let identifier = substitute( identifier, '\W\+', '_', 'g' )
+ let identifier = substitute( identifier, '_\+', '_', 'g' )
+ return identifier
+endfunction " ---------- end of function C_LegalizeName ----------
+
+"------------------------------------------------------------------------------
+" C_CodeSnippet : read / edit code snippet {{{1
+"------------------------------------------------------------------------------
+function! C_CodeSnippet(mode)
+
+ if isdirectory(s:C_CodeSnippets)
+ "
+ " read snippet file, put content below current line and indent
+ "
+ if a:mode == "r"
+ if has("gui_running")
+ let l:snippetfile=browse(0,"read a code snippet",s:C_CodeSnippets,"")
+ else
+ let l:snippetfile=input("read snippet ", s:C_CodeSnippets, "file" )
+ end
+ if filereadable(l:snippetfile)
+ let linesread= line("$")
+ let l:old_cpoptions = &cpoptions " Prevent the alternate buffer from being set to this files
+ setlocal cpoptions-=a
+ :execute "read ".l:snippetfile
+ let &cpoptions = l:old_cpoptions " restore previous options
+ let linesread= line("$")-linesread-1
+ if linesread>=0 && match( l:snippetfile, '\.\(ni\|noindent\)$' ) < 0
+ endif
+ endif
+ if line(".")==2 && getline(1)=~"^$"
+ silent exe ":1,1d"
+ endif
+ endif
+ "
+ " update current buffer / split window / edit snippet file
+ "
+ if a:mode == "e"
+ if has("gui_running")
+ let l:snippetfile = browse(0,"edit a code snippet",s:C_CodeSnippets,"")
+ else
+ let l:snippetfile=input("edit snippet ", s:C_CodeSnippets, "file" )
+ end
+ if l:snippetfile != ""
+ :execute "update! | split | edit ".l:snippetfile
+ endif
+ endif
+ "
+ " write whole buffer into snippet file
+ "
+ if a:mode == "w" || a:mode == "wv"
+ if has("gui_running")
+ let l:snippetfile = browse(0,"edit a code snippet",s:C_CodeSnippets,"")
+ else
+ let l:snippetfile=input("edit snippet ", s:C_CodeSnippets, "file" )
+ end
+ if l:snippetfile != ""
+ if filereadable(l:snippetfile)
+ if confirm("File ".l:snippetfile." exists ! Overwrite ? ", "&Cancel\n&No\n&Yes") != 3
+ return
+ endif
+ endif
+ if a:mode == "w"
+ :execute ":write! ".l:snippetfile
+ else
+ :execute ":*write! ".l:snippetfile
+ end
+ endif
+ endif
+
+ else
+ echo "code snippet directory ".s:C_CodeSnippets." does not exist (please create it)"
+ endif
+endfunction " ---------- end of function C_CodeSnippets ----------
+"
+"------------------------------------------------------------------------------
+" C_CodeFor : for (idiom) {{{1
+"------------------------------------------------------------------------------
+function! C_CodeFor( direction, mode )
+ if a:direction=="up"
+ let string = C_Input( " loop var. [ start [ end [ incr. ]]] : ", "" )
+ else
+ let string = C_Input( " loop var. [ start [ end [ decr. ]]] : ", "" )
+ endif
+ let pos = 0
+ let jmp = 0
+ if string != ""
+ "
+ " use internal formatting to avoid conficts when using == below
+ let equalprg_save = &equalprg
+ set equalprg=
+ "
+ " loop variable
+ let loopvar = matchstr( string, '\S\+\s*', pos )
+ let pos = pos + strlen(loopvar)
+ let loopvar = substitute( loopvar, '\s*$', "", "" )
+ "
+ " start value
+ let startval = matchstr( string, '\S\+\s*', pos )
+ let pos = pos + strlen(startval)
+ let startval = substitute( startval, '\s*$', "", "" )
+
+ " end value
+ let endval = matchstr( string, '\S\+\s*', pos )
+ let pos = pos + strlen(endval)
+ let endval = substitute( endval, '\s*$', "", "" )
+
+ " increment
+ let incval = matchstr( string, '\S\+\s*', pos )
+ let pos = pos + strlen(incval)
+ let incval = substitute( incval, '\s*$', "", "" )
+
+ if incval==""
+ let incval = '1'
+ let jmp = 10
+ endif
+
+ if a:direction=="up"
+ if endval==""
+ let endval = 'n'
+ let jmp = 7
+ endif
+ if startval==""
+ let startval = '0'
+ let jmp = 4
+ endif
+ let zz= "for ( ".loopvar." = ".startval."; ".loopvar." < ".endval."; ".loopvar." += ".incval." )"
+ else
+ if endval==""
+ let endval = '0'
+ let jmp = 7
+ endif
+ if startval==""
+ let startval = 'n-1'
+ let jmp = 4
+ endif
+ let zz= "for ( ".loopvar." = ".startval."; ".loopvar." >= ".endval."; ".loopvar." -= ".incval." )"
+ endif
+
+ " ----- normal mode ----------------
+ if a:mode=="a"
+ put =zz
+ normal 2==
+ if jmp!=0
+ exe "normal ".jmp."Wh"
+ else
+ exe 'normal $'
+ endif
+ endif
+
+ " ----- visual mode ----------------
+ if a:mode=="v"
+ let zz = zz." {"
+ :'<put! =zz
+ let zz= "}"
+ :'>put =zz
+ :'<-1
+ :exe "normal =".(line("'>")-line(".")+3)."+"
+ endif
+ "
+ " restore formatter programm
+ let &equalprg = equalprg_save
+ "
+ endif
+endfunction " ---------- end of function C_CodeFor ----------
+"
+"------------------------------------------------------------------------------
+" Handle prototypes {{{1
+"------------------------------------------------------------------------------
+"
+let s:C_Prototype = []
+let s:C_PrototypeShow = []
+let s:C_PrototypeCounter = 0
+let s:C_CComment = '\/\*.\{-}\*\/\s*' " C comment with trailing whitespaces
+ " '.\{-}' any character, non-greedy
+let s:C_CppComment = '\/\/.*$' " C++ comment
+"
+"------------------------------------------------------------------------------
+" C_ProtoPick : pick up (normal/visual) {{{1
+"------------------------------------------------------------------------------
+function! C_ProtoPick (mode)
+ if a:mode=="n"
+ " --- normal mode -------------------
+ let pos1 = line(".")
+ let pos2 = pos1
+ else
+ " --- visual mode -------------------
+ let pos1 = line("'<")
+ let pos2 = line("'>")
+ endif
+ "
+ " remove C/C++-comments, leading and trailing whitespaces, squeeze whitespaces
+ "
+ let prototyp = ''
+ let linenumber = pos1
+ while linenumber <= pos2
+ let newline = getline(linenumber)
+ let newline = substitute( newline, s:C_CppComment, "", "" ) " remove C++ comment
+ let prototyp = prototyp." ".newline
+ let linenumber = linenumber+1
+ endwhile
+ "
+ let prototyp = substitute( prototyp, '^\s\+', "", "" ) " remove leading whitespaces
+ let prototyp = substitute( prototyp, s:C_CComment, "", "g" ) " remove (multiline) C comments
+ let prototyp = substitute( prototyp, '\s\+', " ", "g" ) " squeeze whitespaces
+ let prototyp = substitute( prototyp, '\s\+$', "", "" ) " remove trailing whitespaces
+ "
+ " remove template keyword
+ "
+ let prototyp = substitute( prototyp, '^template\s*<\s*class \w\+\s*>\s*', "", "" )
+ "
+ let parlist = stridx( prototyp, '(' ) " start of the parameter list
+ let part1 = strpart( prototyp, 0, parlist )
+ let part2 = strpart( prototyp, parlist )
+ "
+ " remove the scope res. operator
+ "
+ let part1 = substitute( part1, '<\s*\w\+\s*>', "", "g" )
+ let part1 = substitute( part1, '\<std\s*::', 'std##', 'g' ) " remove the scope res. operator
+ let part1 = substitute( part1, '\<\h\w*\s*::', '', 'g' ) " remove the scope res. operator
+ let part1 = substitute( part1, '\<std##', 'std::', 'g' ) " remove the scope res. operator
+ let prototyp = part1.part2
+ "
+ " remove trailing parts of the function body; add semicolon
+ "
+ let prototyp = substitute( prototyp, '\s*{.*$', "", "" )
+ let prototyp = prototyp.";\n"
+ "
+ " bookkeeping
+ "
+ let s:C_PrototypeCounter += 1
+ let s:C_Prototype += [prototyp]
+ let s:C_PrototypeShow += ["(".s:C_PrototypeCounter.") ".bufname("%")." # ".prototyp]
+ "
+ echo s:C_PrototypeCounter.' prototype(s)'
+ "
+endfunction " --------- end of function C_ProtoPick ----------
+"
+"------------------------------------------------------------------------------
+" C_ProtoInsert : insert {{{1
+"------------------------------------------------------------------------------
+function! C_ProtoInsert ()
+ "
+ " use internal formatting to avoid conficts when using == below
+ let equalprg_save = &equalprg
+ set equalprg=
+ "
+ if s:C_PrototypeCounter > 0
+ for protytype in s:C_Prototype
+ put =protytype
+ endfor
+ let lines = s:C_PrototypeCounter - 1
+ silent exe "normal =".lines."-"
+ call C_ProtoClear()
+ else
+ echo "currently no prototypes available"
+ endif
+ "
+ " restore formatter programm
+ let &equalprg = equalprg_save
+ "
+endfunction " --------- end of function C_ProtoInsert ----------
+"
+"------------------------------------------------------------------------------
+" C_ProtoClear : clear {{{1
+"------------------------------------------------------------------------------
+function! C_ProtoClear ()
+ if s:C_PrototypeCounter > 0
+ let s:C_Prototype = []
+ let s:C_PrototypeShow = []
+ let s:C_PrototypeCounter = 0
+ echo 'prototypes deleted'
+ else
+ echo "currently no prototypes available"
+ endif
+endfunction " --------- end of function C_ProtoClear ----------
+"
+"------------------------------------------------------------------------------
+" C_ProtoShow : show {{{1
+"------------------------------------------------------------------------------
+function! C_ProtoShow ()
+ if s:C_PrototypeCounter > 0
+ for protytype in s:C_PrototypeShow
+ echo protytype
+ endfor
+ else
+ echo "currently no prototypes available"
+ endif
+endfunction " --------- end of function C_ProtoShow ----------
+"
+"------------------------------------------------------------------------------
+" C_EscapeBlanks : C_EscapeBlanks {{{1
+"------------------------------------------------------------------------------
+function! C_EscapeBlanks (arg)
+ return substitute( a:arg, " ", "\\ ", "g" )
+endfunction " --------- end of function C_EscapeBlanks ----------
+"
+"------------------------------------------------------------------------------
+" C_Compile : C_Compile {{{1
+"------------------------------------------------------------------------------
+" The standard make program 'make' called by vim is set to the C or C++ compiler
+" and reset after the compilation (set makeprg=... ).
+" The errorfile created by the compiler will now be read by gvim and
+" the commands cl, cp, cn, ... can be used.
+"------------------------------------------------------------------------------
+function! C_Compile ()
+
+ let l:currentbuffer = bufname("%")
+ let s:C_HlMessage = ""
+ exe ":cclose"
+ let Sou = expand("%:p") " name of the file in the current buffer
+ let Obj = expand("%:p:r").s:C_ObjExtension " name of the object
+ let SouEsc= escape( Sou, s:escfilename )
+ let ObjEsc= escape( Obj, s:escfilename )
+
+ " update : write source file if necessary
+ exe ":update"
+
+ " compilation if object does not exist or object exists and is older then the source
+ if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou)))
+ " &makeprg can be a string containing blanks
+ let makeprg_saved='"'.&makeprg.'"'
+ if expand("%:e") == s:C_CExtension
+ exe "set makeprg=".s:C_CCompiler
+ else
+ exe "set makeprg=".s:C_CplusCompiler
+ endif
+ "
+ " COMPILATION
+ "
+ if s:MSWIN
+ exe "make ".s:C_CFlags." \"".SouEsc."\" -o \"".ObjEsc."\""
+ else
+ exe "make ".s:C_CFlags." ".SouEsc." -o ".ObjEsc
+ endif
+ exe "set makeprg=".makeprg_saved
+ "
+ " open error window if necessary
+ exe ":botright cwindow"
+ else
+ let s:C_HlMessage = " '".Obj."' is up to date "
+ endif
+
+endfunction " ---------- end of function C_Compile ----------
+"
+"------------------------------------------------------------------------------
+" C_Link : C_Link {{{1
+"------------------------------------------------------------------------------
+" The standard make program which is used by gvim is set to the compiler
+" (for linking) and reset after linking.
+"
+" calls: C_Compile
+"------------------------------------------------------------------------------
+function! C_Link ()
+
+ call C_Compile()
+
+ let s:C_HlMessage = ""
+ let Sou = expand("%:p") " name of the file in the current buffer
+ let Obj = expand("%:p:r").s:C_ObjExtension " name of the object file
+ let Exe = expand("%:p:r").s:C_ExeExtension " name of the executable
+ let ObjEsc= escape( Obj, s:escfilename )
+ let ExeEsc= escape( Exe, s:escfilename )
+
+ " no linkage if:
+ " executable exists
+ " object exists
+ " source exists
+ " executable newer then object
+ " object newer then source
+
+ if filereadable(Exe) &&
+ \ filereadable(Obj) &&
+ \ filereadable(Sou) &&
+ \ (getftime(Exe) >= getftime(Obj)) &&
+ \ (getftime(Obj) >= getftime(Sou))
+ let s:C_HlMessage = " '".Exe."' is up to date "
+ return
+ endif
+
+ " linkage if:
+ " object exists
+ " source exists
+ " object newer then source
+
+ if filereadable(Obj) && (getftime(Obj) >= getftime(Sou))
+ let makeprg_saved='"'.&makeprg.'"'
+ if expand("%:e") == s:C_CExtension
+ exe "set makeprg=".s:C_CCompiler
+ else
+ exe "set makeprg=".s:C_CplusCompiler
+ endif
+ let v:statusmsg=""
+ if s:MSWIN
+ silent exe "make ".s:C_LFlags." ".s:C_Libs." -o \"".ExeEsc."\" \"".ObjEsc."\""
+ else
+ silent exe "make ".s:C_LFlags." ".s:C_Libs." -o ".ExeEsc." ".ObjEsc
+ endif
+ if v:statusmsg != ""
+ let s:C_HlMessage = v:statusmsg
+ endif
+ exe "set makeprg=".makeprg_saved
+ endif
+endfunction " ---------- end of function C_Link ----------
+"
+"------------------------------------------------------------------------------
+" C_Run : C_Run {{{1
+" calls: C_Link
+"------------------------------------------------------------------------------
+"
+let s:C_OutputBufferName = "C-Output"
+let s:C_OutputBufferNumber = -1
+"
+function! C_Run ()
+"
+ let Sou = expand("%:p") " name of the source file
+ let Obj = expand("%:p:r").s:C_ObjExtension " name of the object file
+ let Exe = expand("%:p:r").s:C_ExeExtension " name of the executable
+ let ExeEsc = escape( Exe, s:escfilename ) " name of the executable, escaped
+ "
+ let l:arguments = exists("b:C_CmdLineArgs") ? b:C_CmdLineArgs : ''
+ "
+ let l:currentbuffer = bufname("%")
+ "
+ "==============================================================================
+ " run : run from the vim command line
+ "==============================================================================
+ if s:C_OutputGvim == "vim"
+ "
+ silent call C_Link()
+ "
+ if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)
+ if s:MSWIN
+ exe "!\"".ExeEsc."\" ".l:arguments
+ else
+ exe "!".ExeEsc." ".l:arguments
+ endif
+ else
+ echomsg "file ".Exe." does not exist / is not executable"
+ endif
+
+ endif
+ "
+ "==============================================================================
+ " run : redirect output to an output buffer
+ "==============================================================================
+ if s:C_OutputGvim == "buffer"
+ let l:currentbuffernr = bufnr("%")
+ "
+ silent call C_Link()
+ "
+ if l:currentbuffer == bufname("%")
+ "
+ "
+ if bufloaded(s:C_OutputBufferName) != 0 && bufwinnr(s:C_OutputBufferNumber)!=-1
+ exe bufwinnr(s:C_OutputBufferNumber) . "wincmd w"
+ " buffer number may have changed, e.g. after a 'save as'
+ if bufnr("%") != s:C_OutputBufferNumber
+ let s:C_OutputBufferNumber = bufnr(s:C_OutputBufferName)
+ exe ":bn ".s:C_OutputBufferNumber
+ endif
+ else
+ silent exe ":new ".s:C_OutputBufferName
+ let s:C_OutputBufferNumber=bufnr("%")
+ setlocal buftype=nofile
+ setlocal noswapfile
+ setlocal syntax=none
+ setlocal bufhidden=delete
+ setlocal tabstop=8
+ endif
+ "
+ " run programm
+ "
+ setlocal modifiable
+ if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)
+ if s:MSWIN
+ exe "%!\"".ExeEsc."\" ".l:arguments
+ else
+ exe "%!".ExeEsc." ".l:arguments
+ endif
+ endif
+ setlocal nomodifiable
+ "
+ if winheight(winnr()) >= line("$")
+ exe bufwinnr(l:currentbuffernr) . "wincmd w"
+ endif
+ "
+ endif
+ endif
+ "
+ "==============================================================================
+ " run : run in a detached xterm (not available for MS Windows)
+ "==============================================================================
+ if s:C_OutputGvim == "xterm"
+ "
+ silent call C_Link()
+ "
+ if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)
+ if s:MSWIN
+ exe "!\"".ExeEsc."\" ".l:arguments
+ else
+ silent exe '!xterm -title '.ExeEsc.' '.s:C_XtermDefaults.' -e '.s:C_Wrapper.' '.ExeEsc.' '.l:arguments.' &'
+ :redraw!
+ endif
+ endif
+ endif
+
+endfunction " ---------- end of function C_Run ----------
+"
+"------------------------------------------------------------------------------
+" C_Arguments : Arguments for the executable {{{1
+"------------------------------------------------------------------------------
+function! C_Arguments ()
+ let Exe = expand("%:r").s:C_ExeExtension
+ if Exe == ""
+ redraw
+ echohl WarningMsg | echo " no file name " | echohl None
+ return
+ endif
+ let prompt = 'command line arguments for "'.Exe.'" : '
+ if exists("b:C_CmdLineArgs")
+ let b:C_CmdLineArgs= C_Input( prompt, b:C_CmdLineArgs )
+ else
+ let b:C_CmdLineArgs= C_Input( prompt , "" )
+ endif
+endfunction " ---------- end of function C_Arguments ----------
+"
+"----------------------------------------------------------------------
+" C_Toggle_Gvim_Xterm : change output destination {{{1
+"----------------------------------------------------------------------
+function! C_Toggle_Gvim_Xterm ()
+
+ if s:C_OutputGvim == "vim"
+ if has("gui_running")
+ exe "aunmenu <silent> ".s:C_Root.'&Run.&output:\ VIM->buffer->xterm'
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ BUFFER->xterm->vim <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ endif
+ let s:C_OutputGvim = "buffer"
+ else
+ if s:C_OutputGvim == "buffer"
+ if has("gui_running")
+ exe "aunmenu <silent> ".s:C_Root.'&Run.&output:\ BUFFER->xterm->vim'
+ if (!s:MSWIN)
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ XTERM->vim->buffer <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ else
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ VIM->buffer->xterm <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ endif
+ endif
+ if (!s:MSWIN) && (s:C_Display != '')
+ let s:C_OutputGvim = "xterm"
+ else
+ let s:C_OutputGvim = "vim"
+ end
+ else
+ " ---------- output : xterm -> gvim
+ if has("gui_running")
+ exe "aunmenu <silent> ".s:C_Root.'&Run.&output:\ XTERM->vim->buffer'
+ exe "amenu <silent> ".s:C_Root.'&Run.&output:\ VIM->buffer->xterm <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>'
+ endif
+ let s:C_OutputGvim = "vim"
+ endif
+ endif
+ echomsg "output destination is '".s:C_OutputGvim."'"
+
+endfunction " ---------- end of function C_Toggle_Gvim_Xterm ----------
+"
+"------------------------------------------------------------------------------
+" C_XtermSize : xterm geometry {{{1
+"------------------------------------------------------------------------------
+function! C_XtermSize ()
+ let regex = '-geometry\s\+\d\+x\d\+'
+ let geom = matchstr( s:C_XtermDefaults, regex )
+ let geom = matchstr( geom, '\d\+x\d\+' )
+ let geom = substitute( geom, 'x', ' ', "" )
+ let answer= C_Input(" xterm size (COLUMNS LINES) : ", geom )
+ while match(answer, '^\s*\d\+\s\+\d\+\s*$' ) < 0
+ let answer= C_Input(" + xterm size (COLUMNS LINES) : ", geom )
+ endwhile
+ let answer = substitute( answer, '\s\+', "x", "" ) " replace inner whitespaces
+ let s:C_XtermDefaults = substitute( s:C_XtermDefaults, regex, "-geometry ".answer , "" )
+endfunction " ---------- end of function C_XtermSize ----------
+"
+"------------------------------------------------------------------------------
+" C_MakeArguments : run make(1) {{{1
+"------------------------------------------------------------------------------
+
+let s:C_MakeCmdLineArgs = "" " command line arguments for Run-make; initially empty
+
+function! C_MakeArguments ()
+ let s:C_MakeCmdLineArgs= C_Input("make command line arguments : ",s:C_MakeCmdLineArgs)
+endfunction " ---------- end of function C_MakeArguments ----------
+"
+function! C_Make()
+ " update : write source file if necessary
+ exe ":update"
+ " run make
+ exe ":!make ".s:C_MakeCmdLineArgs
+endfunction " ---------- end of function C_Make ----------
+"
+"------------------------------------------------------------------------------
+" C_SplintArguments : splint command line arguments {{{1
+"------------------------------------------------------------------------------
+function! C_SplintArguments ()
+ if s:C_SplintIsExecutable==0
+ let s:C_HlMessage = ' Splint is not executable or not installed! '
+ else
+ let prompt = 'Splint command line arguments for "'.expand("%").'" : '
+ if exists("b:C_SplintCmdLineArgs")
+ let b:C_SplintCmdLineArgs= C_Input( prompt, b:C_SplintCmdLineArgs )
+ else
+ let b:C_SplintCmdLineArgs= C_Input( prompt , "" )
+ endif
+ endif
+endfunction " ---------- end of function C_SplintArguments ----------
+"
+"------------------------------------------------------------------------------
+" C_SplintCheck : run splint(1) {{{1
+"------------------------------------------------------------------------------
+function! C_SplintCheck ()
+ if s:C_SplintIsExecutable==0
+ let s:C_HlMessage = ' Splint is not executable or not installed! '
+ return
+ endif
+ let l:currentbuffer=bufname("%")
+ if &filetype != "c" && &filetype != "cpp"
+ let s:C_HlMessage = ' "'.l:currentbuffer.'" seems not to be a C/C++ file '
+ return
+ endif
+ let s:C_HlMessage = ""
+ exe ":cclose"
+ silent exe ":update"
+ let makeprg_saved='"'.&makeprg.'"'
+ " Windows seems to need this:
+ if s:MSWIN
+ :compiler splint
+ endif
+ :set makeprg=splint
+ "
+ let l:arguments = exists("b:C_SplintCmdLineArgs") ? b:C_SplintCmdLineArgs : ' '
+ silent exe "make ".l:arguments." ".escape(l:currentbuffer,s:escfilename)
+ exe "set makeprg=".makeprg_saved
+ exe ":botright cwindow"
+ "
+ " message in case of success
+ "
+ if l:currentbuffer == bufname("%")
+ let s:C_HlMessage = " Splint --- no warnings for : ".l:currentbuffer
+ endif
+endfunction " ---------- end of function C_SplintCheck ----------
+"
+"------------------------------------------------------------------------------
+" C_CodeCheckArguments : CodeCheck command line arguments {{{1
+"------------------------------------------------------------------------------
+function! C_CodeCheckArguments ()
+ if s:C_CodeCheckIsExecutable==0
+ let s:C_HlMessage = ' CodeCheck is not executable or not installed! '
+ else
+ let prompt = 'CodeCheck command line arguments for "'.expand("%").'" : '
+ if exists("b:C_CodeCheckCmdLineArgs")
+ let b:C_CodeCheckCmdLineArgs= C_Input( prompt, b:C_CodeCheckCmdLineArgs )
+ else
+ let b:C_CodeCheckCmdLineArgs= C_Input( prompt , s:C_CodeCheckOptions )
+ endif
+ endif
+endfunction " ---------- end of function C_CodeCheckArguments ----------
+"
+"------------------------------------------------------------------------------
+" C_CodeCheck : run CodeCheck {{{1
+"------------------------------------------------------------------------------
+function! C_CodeCheck ()
+ if s:C_CodeCheckIsExecutable==0
+ let s:C_HlMessage = ' CodeCheck is not executable or not installed! '
+ return
+ endif
+ let l:currentbuffer=bufname("%")
+ if &filetype != "c" && &filetype != "cpp"
+ let s:C_HlMessage = ' "'.l:currentbuffer.'" seems not to be a C/C++ file '
+ return
+ endif
+ let s:C_HlMessage = ""
+ exe ":cclose"
+ silent exe ":update"
+ let makeprg_saved='"'.&makeprg.'"'
+ exe "set makeprg=".s:C_CodeCheckExeName
+ "
+ " match the splint error messages (quickfix commands)
+ " ignore any lines that didn't match one of the patterns
+ "
+ :setlocal errorformat=%f(%l)%m
+ "
+ let l:arguments = exists("b:C_CodeCheckCmdLineArgs") ? b:C_CodeCheckCmdLineArgs : ""
+ if l:arguments == ""
+ let l:arguments = s:C_CodeCheckOptions
+ endif
+ exe ":make ".l:arguments." ".escape( l:currentbuffer, s:escfilename )
+ exe ':setlocal errorformat='
+ exe "set makeprg=".makeprg_saved
+ exe ":botright cwindow"
+ "
+ " message in case of success
+ "
+ if l:currentbuffer == bufname("%")
+ let s:C_HlMessage = " CodeCheck --- no warnings for : ".l:currentbuffer
+ endif
+endfunction " ---------- end of function C_CodeCheck ----------
+"
+"------------------------------------------------------------------------------
+" C_Indent : run indent(1) {{{1
+"------------------------------------------------------------------------------
+"
+function! C_Indent ( mode )
+ if !executable("indent")
+ let s:C_HlMessage = ' indent is not executable or not installed! '
+ return
+ endif
+ let l:currentbuffer=bufname("%")
+ if &filetype != "c" && &filetype != "cpp"
+ let s:C_HlMessage = ' "'.l:currentbuffer.'" seems not to be a C/C++ file '
+ return
+ endif
+ let s:C_HlMessage = ""
+
+ if a:mode=="a"
+ if C_Input("indent whole file [y/n/Esc] : ", "y" ) != "y"
+ return
+ endif
+ exe ":update"
+ if has("MSWIN")
+ silent exe ":%!indent"
+ else
+ silent exe ":%!indent 2> ".s:C_IndentErrorLog
+ endif
+ let s:C_HlMessage = ' File "'.l:currentbuffer.'" reformatted.'
+ endif
+
+ if a:mode=="v"
+ if has("MSWIN")
+ silent exe ":'<,'>!indent"
+ else
+ silent exe ":'<,'>!indent 2> ".s:C_IndentErrorLog
+ endif
+ let s:C_HlMessage = ' File "'.l:currentbuffer.'" (lines '.line("'<").'-'.line("'>").') reformatted. '
+ endif
+
+ if v:shell_error != 0
+ let s:C_HlMessage = ' Indent reported an error when processing file "'.l:currentbuffer.'". '
+ endif
+
+endfunction " ---------- end of function C_Indent ----------
+"
+"------------------------------------------------------------------------------
+" C_HlMessage : indent message {{{1
+"------------------------------------------------------------------------------
+function! C_HlMessage ()
+ echohl Search
+ echo s:C_HlMessage
+ echohl None
+endfunction " ---------- end of function C_HlMessage ----------
+"
+"------------------------------------------------------------------------------
+" C_Settings : settings {{{1
+"------------------------------------------------------------------------------
+function! C_Settings ()
+ let txt = " C/C++-Support settings\n\n"
+ let txt = txt.' author : "'.s:C_Macro['|AUTHOR|']."\"\n"
+ let txt = txt.' initials : "'.s:C_Macro['|AUTHORREF|']."\"\n"
+ let txt = txt.' email : "'.s:C_Macro['|EMAIL|']."\"\n"
+ let txt = txt.' company : "'.s:C_Macro['|COMPANY|']."\"\n"
+ let txt = txt.' project : "'.s:C_Macro['|PROJECT|']."\"\n"
+ let txt = txt.' copyright holder : "'.s:C_Macro['|COPYRIGHTHOLDER|']."\"\n"
+ let txt = txt.' C / C++ compiler : '.s:C_CCompiler.' / '.s:C_CplusCompiler."\n"
+ let txt = txt.' C file extension : "'.s:C_CExtension.'" (everything else is C++)'."\n"
+ let txt = txt.' extension for objects : "'.s:C_ObjExtension."\"\n"
+ let txt = txt.'extension for executables : "'.s:C_ExeExtension."\"\n"
+ let txt = txt.' compiler flags : "'.s:C_CFlags."\"\n"
+ let txt = txt.' linker flags : "'.s:C_LFlags."\"\n"
+ let txt = txt.' libraries : "'.s:C_Libs."\"\n"
+ let txt = txt.' code snippet directory : '.s:C_CodeSnippets."\n"
+ if s:installation == 'system'
+ let txt = txt.'global template directory : '.s:C_GlobalTemplateDir."\n"
+ if filereadable( s:C_LocalTemplateFile )
+ let txt = txt.' local template directory : '.s:C_LocalTemplateDir."\n"
+ endif
+ else
+ let txt = txt.' local template directory : '.s:C_GlobalTemplateDir."\n"
+ endif
+ if !s:MSWIN
+ let txt = txt.' xterm defaults : '.s:C_XtermDefaults."\n"
+ endif
+ " ----- dictionaries ------------------------
+ if g:C_Dictionary_File != ""
+ let ausgabe= substitute( g:C_Dictionary_File, ",", ",\n + ", "g" )
+ let txt = txt." dictionary file(s) : ".ausgabe."\n"
+ endif
+ let txt = txt.' current output dest. : '.s:C_OutputGvim."\n"
+ " ----- splint ------------------------------
+ if s:C_SplintIsExecutable==1
+ if exists("b:C_SplintCmdLineArgs")
+ let ausgabe = b:C_SplintCmdLineArgs
+ else
+ let ausgabe = ""
+ endif
+ let txt = txt." splint options(s) : ".ausgabe."\n"
+ endif
+ " ----- code check --------------------------
+ if s:C_CodeCheckIsExecutable==1
+ if exists("b:C_CodeCheckCmdLineArgs")
+ let ausgabe = b:C_CodeCheckCmdLineArgs
+ else
+ let ausgabe = s:C_CodeCheckOptions
+ endif
+ let txt = txt."CodeCheck (TM) options(s) : ".ausgabe."\n"
+ endif
+ let txt = txt."\n"
+ let txt = txt."__________________________________________________________________________\n"
+ let txt = txt." C/C++-Support, Version ".g:C_Version." / Dr.-Ing. Fritz Mehner / mehner@fh-swf.de\n\n"
+ echo txt
+endfunction " ---------- end of function C_Settings ----------
+"
+"------------------------------------------------------------------------------
+" C_Hardcopy : hardcopy {{{1
+" MSWIN : a printer dialog is displayed
+" other : print PostScript to file
+"------------------------------------------------------------------------------
+function! C_Hardcopy (arg1)
+ let Sou = expand("%")
+ if Sou == ""
+ redraw
+ echohl WarningMsg | echo " no file name " | echohl None
+ return
+ endif
+ let Sou = escape(Sou,s:escfilename) " name of the file in the current buffer
+ let old_printheader=&printheader
+ exe ':set printheader='.s:C_Printheader
+ " ----- normal mode ----------------
+ if a:arg1=="n"
+ silent exe "hardcopy > ".Sou.".ps"
+ if !s:MSWIN
+ echo "file \"".Sou."\" printed to \"".Sou.".ps\""
+ endif
+ endif
+ " ----- visual mode ----------------
+ if a:arg1=="v"
+ silent exe "*hardcopy > ".Sou.".ps"
+ if !s:MSWIN
+ echo "file \"".Sou."\" (lines ".line("'<")."-".line("'>").") printed to \"".Sou.".ps\""
+ endif
+ endif
+ exe ':set printheader='.escape( old_printheader, ' %' )
+endfunction " ---------- end of function C_Hardcopy ----------
+"
+"------------------------------------------------------------------------------
+" C_HelpCsupport : help csupport {{{1
+"------------------------------------------------------------------------------
+function! C_HelpCsupport ()
+ try
+ :help csupport
+ catch
+ exe ':helptags '.s:plugin_dir.'doc'
+ :help csupport
+ endtry
+endfunction " ---------- end of function C_HelpCsupport ----------
+
+"------------------------------------------------------------------------------
+" C_CreateGuiMenus {{{1
+"------------------------------------------------------------------------------
+let s:C_MenuVisible = 0 " state variable controlling the C-menus
+"
+function! C_CreateGuiMenus ()
+ if s:C_MenuVisible != 1
+ aunmenu <silent> &Tools.Load\ C\ Support
+ amenu <silent> 40.1000 &Tools.-SEP100- :
+ amenu <silent> 40.1030 &Tools.Unload\ C\ Support <C-C>:call C_RemoveGuiMenus()<CR>
+ call C_InitMenus()
+ let s:C_MenuVisible = 1
+ endif
+endfunction " ---------- end of function C_CreateGuiMenus ----------
+
+"------------------------------------------------------------------------------
+" C_ToolMenu {{{1
+"------------------------------------------------------------------------------
+function! C_ToolMenu ()
+ amenu <silent> 40.1000 &Tools.-SEP100- :
+ amenu <silent> 40.1030 &Tools.Load\ C\ Support <C-C>:call C_CreateGuiMenus()<CR>
+endfunction " ---------- end of function C_ToolMenu ----------
+
+"------------------------------------------------------------------------------
+" C_RemoveGuiMenus {{{1
+"------------------------------------------------------------------------------
+function! C_RemoveGuiMenus ()
+ if s:C_MenuVisible == 1
+ if s:C_Root == ""
+ aunmenu <silent> Comments
+ aunmenu <silent> Statements
+ aunmenu <silent> Preprocessor
+ aunmenu <silent> Idioms
+ aunmenu <silent> Snippets
+ aunmenu <silent> C++
+ aunmenu <silent> Run
+ else
+ exe "aunmenu <silent> ".s:C_Root
+ endif
+ "
+ aunmenu <silent> &Tools.Unload\ C\ Support
+ call C_ToolMenu()
+ "
+ let s:C_MenuVisible = 0
+ endif
+endfunction " ---------- end of function C_RemoveGuiMenus ----------
+
+"------------------------------------------------------------------------------
+" C_RebuildTemplates
+" rebuild commands and the menu from the (changed) template file
+"------------------------------------------------------------------------------
+function! C_RebuildTemplates ()
+ let s:C_Template = {}
+ let s:C_FileVisited = []
+ call C_ReadTemplates(s:C_GlobalTemplateFile)
+ echomsg "templates rebuilt from '".s:C_GlobalTemplateFile."'"
+ "
+ if s:installation == 'system' && filereadable( s:C_LocalTemplateFile )
+ call C_ReadTemplates( s:C_LocalTemplateFile )
+ echomsg " and from '".s:C_LocalTemplateFile."'"
+ endif
+endfunction " ---------- end of function C_RebuildTemplates ----------
+
+"------------------------------------------------------------------------------
+" C_ReadTemplates
+" read the template file(s), build the macro and the template dictionary
+"
+"------------------------------------------------------------------------------
+function! C_ReadTemplates ( templatefile )
+
+ if !filereadable( a:templatefile )
+ echohl WarningMsg
+ echomsg "C/C++ template file '".a:templatefile."' does not exist or is not readable"
+ echohl None
+ return
+ endif
+
+ let skipmacros = 0
+ let s:C_FileVisited += [a:templatefile]
+
+ "------------------------------------------------------------------------------
+ " read template file, start with an empty template dictionary
+ "------------------------------------------------------------------------------
+
+ let item = ''
+ for line in readfile( a:templatefile )
+ " if not a comment :
+ if line !~ '^\$'
+ "
+ " macros and file includes
+ "
+
+ let string = matchlist( line, s:C_MacroLineRegex )
+ if !empty(string) && skipmacros == 0
+ let key = '|'.string[1].'|'
+ let val = string[2]
+ let val = substitute( val, '\s\+$', '', '' )
+ let val = substitute( val, "[\"\']$", '', '' )
+ let val = substitute( val, "^[\"\']", '', '' )
+ "
+ if key == '|includefile|' && count( s:C_FileVisited, val ) == 0
+ let path = fnamemodify( a:templatefile, ":p:h" )
+ call C_ReadTemplates( path.'/'.val ) " recursive call
+ else
+ let s:C_Macro[key] = val
+ endif
+ continue " next line
+ endif
+ "
+ " template header
+ "
+ let name = matchstr( line, s:C_TemplateLineRegex )
+ "
+ if name != ''
+ let part = split( name, '\s*==\s*')
+ let item = part[0]
+ if has_key( s:C_Template, item ) && s:C_TemplateOverwrittenMsg == 'yes'
+ echomsg "existing C/C++ template '".item."' overwritten"
+ endif
+ let s:C_Template[item] = ''
+ let skipmacros = 1
+ "
+ let s:C_Attribute[item] = 'below'
+ if has_key( s:Attribute, get( part, 1, 'NONE' ) )
+ let s:C_Attribute[item] = part[1]
+ endif
+ else
+ if item != ''
+ let s:C_Template[item] = s:C_Template[item].line."\n"
+ endif
+ endif
+ endif
+ endfor
+
+ call C_SetSmallCommentStyle()
+endfunction " ---------- end of function C_ReadTemplates ----------
+
+"------------------------------------------------------------------------------
+" C_InsertTemplate
+" insert a template from the template dictionary
+" do macro expansion
+"------------------------------------------------------------------------------
+function! C_InsertTemplate ( key, ... )
+
+ if !has_key( s:C_Template, a:key )
+ echomsg "Template '".a:key."' not found. Please check your template file in '".s:C_GlobalTemplateDir."'"
+ return
+ endif
+
+ "------------------------------------------------------------------------------
+ " insert the user macros
+ "------------------------------------------------------------------------------
+
+ " use internal formatting to avoid conficts when using == below
+ "
+ let equalprg_save = &equalprg
+ set equalprg=
+
+ let mode = s:C_Attribute[a:key]
+
+ " remove <SPLIT> and insert the complete macro
+ "
+ if a:0 == 0
+ let val = C_ExpandUserMacros (a:key)
+ if val == ""
+ return
+ endif
+ let val = C_ExpandSingleMacro( val, '<SPLIT>', '' )
+
+ if mode == 'below'
+ let pos1 = line(".")+1
+ put =val
+ let pos2 = line(".")
+ " proper indenting
+ exe ":".pos1
+ let ins = pos2-pos1+1
+ exe "normal ".ins."=="
+ endif
+
+ if mode == 'above'
+ let pos1 = line(".")
+ put! =val
+ let pos2 = line(".")
+ " proper indenting
+ exe ":".pos1
+ let ins = pos2-pos1+1
+ exe "normal ".ins."=="
+ endif
+
+ if mode == 'start'
+ normal gg
+ let pos1 = 1
+ put! =val
+ let pos2 = line(".")
+ " proper indenting
+ exe ":".pos1
+ let ins = pos2-pos1+1
+ exe "normal ".ins."=="
+ endif
+
+ if mode == 'append'
+ let pos1 = line(".")
+ put =val
+ let pos2 = line(".")-1
+ exe ":".pos1
+ :join!
+ endif
+
+ if mode == 'insert'
+ let val = substitute( val, '\n$', '', '' )
+ let pos1 = line(".")
+ let pos2 = pos1 + count( split(val,'\zs'), "\n" )
+ exe "normal a".val
+ endif
+ "
+ else
+ "
+ " ===== visual mode ===============================
+ "
+ if a:1 == 'v'
+ let val = C_ExpandUserMacros (a:key)
+ if val == ""
+ return
+ endif
+
+ let part = split( val, '<SPLIT>' )
+ if len(part) < 2
+ let part = [ "" ] + part
+ echomsg 'SPLIT missing in template '.a:key
+ endif
+
+ if mode == 'below'
+
+ :'<put! =part[0]
+ :'>put =part[1]
+
+ let pos1 = line("'<") - len(split(part[0], '\n' ))
+ let pos2 = line("'>") + len(split(part[1], '\n' ))
+ "" echo part[0] part[1] pos1 pos2
+ " " proper indenting
+ exe ":".pos1
+ let ins = pos2-pos1+1
+ exe "normal ".ins."=="
+ endif
+
+ "
+ endif
+ endif
+
+ " restore formatter programm
+ let &equalprg = equalprg_save
+
+ "------------------------------------------------------------------------------
+ " position the cursor
+ "------------------------------------------------------------------------------
+ exe ":".pos1
+ let mtch = search( '<CURSOR>', "c", pos2 )
+ if mtch != 0
+ if matchend( getline(mtch) ,'<CURSOR>') == match( getline(mtch) ,"$" )
+ normal 8x
+ :startinsert!
+ else
+ normal 8x
+ :startinsert
+ endif
+ else
+ " to the end of the block; needed for repeated inserts
+ if mode == 'below'
+ exe ":".pos2
+ endif
+ endif
+
+endfunction " ---------- end of function C_InsertTemplate ----------
+
+"------------------------------------------------------------------------------
+" C_ExpandUserMacros
+"------------------------------------------------------------------------------
+function! C_ExpandUserMacros ( key )
+
+ let template = s:C_Template[ a:key ]
+ let s:C_ExpansionCounter = {} " reset the expansion counter
+
+ "------------------------------------------------------------------------------
+ " renew the predefined macros and expand them
+ " can be replaced, with e.g. |?DATE|
+ "------------------------------------------------------------------------------
+ let s:C_Macro['|BASENAME|'] = toupper(expand("%:t:r"))
+ let s:C_Macro['|DATE|'] = C_InsertDateAndTime('d')
+ let s:C_Macro['|FILENAME|'] = expand("%:t")
+ let s:C_Macro['|PATH|'] = expand("%:p:h")
+ let s:C_Macro['|SUFFIX|'] = expand("%:e")
+ let s:C_Macro['|TIME|'] = C_InsertDateAndTime('t')
+ let s:C_Macro['|YEAR|'] = C_InsertDateAndTime('y')
+
+ "------------------------------------------------------------------------------
+ " look for replacements
+ "------------------------------------------------------------------------------
+ while match( template, s:C_ExpansionRegex ) != -1
+ let macro = matchstr( template, s:C_ExpansionRegex )
+ let replacement = substitute( macro, '?', '', '' )
+ let template = substitute( template, macro, replacement, "g" )
+
+ let match = matchlist( macro, s:C_ExpansionRegex )
+
+ if match[1] != ''
+ let macroname = '|'.match[1].'|'
+ "
+ " notify flag action, if any
+ let flagaction = ''
+ if has_key( s:C_MacroFlag, match[2] )
+ let flagaction = ' (-> '.s:C_MacroFlag[ match[2] ].')'
+ endif
+ "
+ " ask for a replacement
+ if has_key( s:C_Macro, macroname )
+ let name = C_Input( match[1].flagaction.' : ', C_ApplyFlag( s:C_Macro[macroname], match[2] ) )
+ else
+ let name = C_Input( match[1].flagaction.' : ', '' )
+ endif
+ if name == ""
+ return ""
+ endif
+ "
+ " keep the modified name
+ let s:C_Macro[macroname] = C_ApplyFlag( name, match[2] )
+ endif
+ endwhile
+
+ "------------------------------------------------------------------------------
+ " do the actual macro expansion
+ " loop over the macros found in the template
+ "------------------------------------------------------------------------------
+ while match( template, s:C_NonExpansionRegex ) != -1
+
+ let macro = matchstr( template, s:C_NonExpansionRegex )
+ let match = matchlist( macro, s:C_NonExpansionRegex )
+
+ if match[1] != ''
+ let macroname = '|'.match[1].'|'
+
+ if has_key( s:C_Macro, macroname )
+ "-------------------------------------------------------------------------------
+ " check for recursion
+ "-------------------------------------------------------------------------------
+ if has_key( s:C_ExpansionCounter, macroname )
+ let s:C_ExpansionCounter[macroname] += 1
+ else
+ let s:C_ExpansionCounter[macroname] = 0
+ endif
+ if s:C_ExpansionCounter[macroname] >= s:C_ExpansionLimit
+ echomsg " recursion terminated for recursive macro ".macroname
+ return template
+ endif
+ "-------------------------------------------------------------------------------
+ " replace
+ "-------------------------------------------------------------------------------
+ let replacement = C_ApplyFlag( s:C_Macro[macroname], match[2] )
+ let template = substitute( template, macro, replacement, "g" )
+ else
+ "
+ " macro not yet defined
+ let s:C_Macro['|'.match[1].'|'] = ''
+ endif
+ endif
+
+ endwhile
+
+ return template
+endfunction " ---------- end of function C_ExpandUserMacros ----------
+
+"------------------------------------------------------------------------------
+" C_ApplyFlag
+"------------------------------------------------------------------------------
+function! C_ApplyFlag ( val, flag )
+ "
+ " l : lowercase
+ if a:flag == ':l'
+ return tolower(a:val)
+ end
+ "
+ " u : uppercase
+ if a:flag == ':u'
+ return toupper(a:val)
+ end
+ "
+ " c : capitalize
+ if a:flag == ':c'
+ return toupper(a:val[0]).a:val[1:]
+ end
+ "
+ " L : legalized name
+ if a:flag == ':L'
+ return C_LegalizeName(a:val)
+ end
+ "
+ " flag not valid
+ return a:val
+endfunction " ---------- end of function C_ApplyFlag ----------
+"
+"------------------------------------------------------------------------------
+" C_ExpandSingleMacro
+"------------------------------------------------------------------------------
+function! C_ExpandSingleMacro ( val, macroname, replacement )
+ return substitute( a:val, escape(a:macroname, '$' ), a:replacement, "g" )
+endfunction " ---------- end of function C_ExpandSingleMacro ----------
+
+"------------------------------------------------------------------------------
+" C_SetSmallCommentStyle
+"------------------------------------------------------------------------------
+function! C_SetSmallCommentStyle ()
+ if has_key( s:C_Template, 'comment.end-of-line-comment' )
+ if match( s:C_Template['comment.end-of-line-comment'], '^\s*/\*' ) != -1
+ let s:C_Com1 = '/*' " C-style : comment start
+ let s:C_Com2 = '*/' " C-style : comment end
+ else
+ let s:C_Com1 = '//' " C++style : comment start
+ let s:C_Com2 = '' " C++style : comment end
+ endif
+ endif
+endfunction " ---------- end of function C_SetSmallCommentStyle ----------
+
+"------------------------------------------------------------------------------
+" C_InsertMacroValue
+"------------------------------------------------------------------------------
+function! C_InsertMacroValue ( key )
+ if col(".") > 1
+ exe 'normal a'.s:C_Macro['|'.a:key.'|']
+ else
+ exe 'normal i'.s:C_Macro['|'.a:key.'|']
+ end
+endfunction " ---------- end of function C_InsertMacroValue ----------
+
+"------------------------------------------------------------------------------
+" date and time
+"------------------------------------------------------------------------------
+function! C_InsertDateAndTime ( format )
+ if a:format == 'd'
+ return strftime( s:C_FormatDate )
+ end
+ if a:format == 't'
+ return strftime( s:C_FormatTime )
+ end
+ if a:format == 'dt'
+ return strftime( s:C_FormatDate ).' '.strftime( s:C_FormatTime )
+ end
+ if a:format == 'y'
+ return strftime( s:C_FormatYear )
+ end
+endfunction " ---------- end of function C_InsertDateAndTime ----------
+
+"------------------------------------------------------------------------------
+" show / hide the c-support menus
+" define key mappings (gVim only)
+"------------------------------------------------------------------------------
+"
+if has("gui_running")
+ "
+ call C_ToolMenu()
+ "
+ if s:C_LoadMenus == 'yes'
+ call C_CreateGuiMenus()
+ endif
+ "
+ nmap <unique> <silent> <Leader>lcs :call C_CreateGuiMenus()<CR>
+ nmap <unique> <silent> <Leader>ucs :call C_RemoveGuiMenus()<CR>
+ "
+endif
+
+"------------------------------------------------------------------------------
+" Automated header insertion
+" Local settings for the quickfix window
+"------------------------------------------------------------------------------
+if has("autocmd")
+ "
+ " Automated header insertion (suffixes from the gcc manual)
+ "
+ autocmd BufNewFile * if (&filetype=='cpp' || &filetype=='c') |
+ \ call C_InsertTemplate("comment.file-description") | endif
+ "
+ " *.h has filetype 'cpp' by default; this can be changed to 'c' :
+ "
+ if s:C_TypeOfH=='c'
+ autocmd BufNewFile,BufEnter *.h :set filetype=c
+ endif
+ "
+ " C/C++ source code files which should not be preprocessed.
+ "
+ autocmd BufNewFile,BufRead *.i :set filetype=c
+ autocmd BufNewFile,BufRead *.ii :set filetype=cpp
+ "
+ " Wrap error descriptions in the quickfix window.
+ "
+ autocmd BufReadPost quickfix setlocal wrap | setlocal linebreak
+ "
+endif " has("autocmd")
+"
+"------------------------------------------------------------------------------
+" READ THE TEMPLATE FILES
+"------------------------------------------------------------------------------
+call C_ReadTemplates(s:C_GlobalTemplateFile)
+if s:installation == 'system' && filereadable( s:C_LocalTemplateFile )
+ call C_ReadTemplates( s:C_LocalTemplateFile )
+endif
+
+"
+"=====================================================================================
+" vim: tabstop=2 shiftwidth=2 foldmethod=marker
diff --git a/.vim/plugin/filebrowser.vim b/.vim/plugin/filebrowser.vim
new file mode 100644
index 0000000..e9de049
--- /dev/null
+++ b/.vim/plugin/filebrowser.vim
@@ -0,0 +1,251 @@
+" filebrowser.vim: utility file for vim 6.2+
+"
+" Copyright: Srinath Avadhanula <srinath AT fastmail DOT fm>
+" Parts of this file are taken from explorer.vim which is a plugin file
+" distributed with vim under the Vim charityware license.
+" License: distributed under the Vim charityware license.
+"
+" Settings:
+" FB_CallBackFunction: the function name which gets called when the user
+" presses <cr> on a file-name in the file browser.
+" FB_AllowRegexp: A filename has to match this regexp to be displayed.
+" FB_RejectRegexp: If a filename matches this regexp, then its not displayed.
+" (Both these regexps are '' by default which means no filtering is
+" done).
+
+" line continuation used here.
+let s:save_cpo = &cpo
+set cpo&vim
+
+"======================================================================
+" Globally visible functions (API)
+"======================================================================
+" FB_OpenFileBrowser: opens a new buffer and displays the file list {{{
+" Description:
+function! FB_OpenFileBrowser(dir)
+ if !isdirectory(a:dir)
+ return
+ endif
+ if exists('s:FB_BufferNumber')
+ if bufwinnr(s:FB_BufferNumber) != -1
+ execute bufwinnr(s:FB_BufferNumber).' wincmd w'
+ return
+ endif
+ execute 'aboveleft split #'.s:FB_BufferNumber
+ else
+ aboveleft split __Choose_File__
+ let s:FB_BufferNumber = bufnr('%')
+ endif
+ call FB_DisplayFiles(a:dir)
+endfunction " }}}
+" FB_DisplayFiles: displays the files in a given directory {{{
+" Description:
+" Call this function only when the cursor is in a temporary buffer
+function! FB_DisplayFiles(dir)
+ if !isdirectory(a:dir)
+ return
+ endif
+ call s:FB_SetSilentSettings()
+ " make this a "scratch" buffer
+ call s:FB_SetScratchSettings()
+
+ let allowRegexp = s:FB_GetVar('FB_AllowRegexp', '')
+ let rejectRegexp = s:FB_GetVar('FB_RejectRegexp', '')
+
+ " change to the directory to make processing simpler.
+ execute "lcd ".a:dir
+ " delete everything in the buffer.
+ " IMPORTANT: we need to be in a scratch buffer
+ 0,$ d_
+
+ let allFilenames = glob('*')
+ let dispFiles = ""
+ let subDirs = "../\n"
+
+ let i = 1
+ while 1
+ let filename = s:FB_Strntok(allFilenames, "\n", i)
+ if filename == ''
+ break
+ endif
+ if isdirectory(filename)
+ let subDirs = subDirs.filename."/\n"
+ else
+ if allowRegexp != '' && filename !~ allowRegexp
+ elseif rejectRegexp != '' && filename =~ rejectRegexp
+ else
+ let dispFiles = dispFiles.filename."\n"
+ endif
+ endif
+ let i = i + 1
+ endwhile
+ 0put!=dispFiles
+ 0put!=subDirs
+ " delte the last empty line resulting from the put
+ $ d_
+
+ call s:FB_SetHighlighting()
+ call s:FB_DisplayHelp()
+ call s:FB_SetMaps()
+
+ " goto the first file/directory
+ 0
+ call search('^"=', 'w')
+ normal! j:<bs>
+
+ set nomodified nomodifiable
+
+ call s:FB_ResetSilentSettings()
+endfunction " }}}
+" FB_SetVar: sets script local variables from outside this script {{{
+" Description:
+function! FB_SetVar(varname, value)
+ let s:{a:varname} = a:value
+endfunction " }}}
+
+" FB_SetHighlighting: sets syntax highlighting for the buffer {{{
+" Description:
+" Origin: from explorer.vim in vim
+function! <SID>FB_SetHighlighting()
+ " Set up syntax highlighting
+ " Something wrong with the evaluation of the conditional though...
+ if has("syntax") && exists("g:syntax_on") && !has("syntax_items")
+ syn match browseSynopsis "^\"[ -].*"
+ syn match browseDirectory "[^\"].*/ "
+ syn match browseDirectory "[^\"].*/$"
+ syn match browseCurDir "^\"= .*$"
+ syn match browseSortBy "^\" Sorted by .*$" contains=browseSuffixInfo
+ syn match browseSuffixInfo "(.*)$" contained
+ syn match browseFilter "^\" Not Showing:.*$"
+ syn match browseFiletime "«\d\+$"
+
+ "hi def link browseSynopsis PreProc
+ hi def link browseSynopsis Special
+ hi def link browseDirectory Directory
+ hi def link browseCurDir Statement
+ hi def link browseSortBy String
+ hi def link browseSuffixInfo Type
+ hi def link browseFilter String
+ hi def link browseFiletime Ignore
+ hi def link browseSuffixes Type
+ endif
+endfunction " }}}
+" FB_SetMaps: sets buffer local maps {{{
+" Description:
+function! <SID>FB_SetMaps()
+ nnoremap <buffer> <silent> q :bdelete<cr>
+ nnoremap <buffer> <silent> C :call FB_DisplayFiles(getcwd())<CR>
+ nnoremap <buffer> <silent> <esc> :bdelete<cr>
+ nnoremap <buffer> <silent> <CR> :call <SID>FB_EditEntry()<CR>
+ nnoremap <buffer> <silent> ? :call <SID>FB_ToggleHelp()<CR>
+
+ " lock the user in this window
+ nnoremap <buffer> <C-w> <nop>
+endfunction " }}}
+" FB_SetSilentSettings: some settings which make things silent {{{
+" Description:
+" Origin: from explorer.vim distributed with vim.
+function! <SID>FB_SetSilentSettings()
+ let s:save_report=&report
+ let s:save_showcmd = &sc
+ set report=10000 noshowcmd
+endfunction
+" FB_ResetSilentSettings: reset settings set by FB_SetSilentSettings
+" Description:
+function! <SID>FB_ResetSilentSettings()
+ let &report=s:save_report
+ let &showcmd = s:save_showcmd
+endfunction " }}}
+" FB_SetScratchSettings: makes the present buffer a scratch buffer {{{
+" Description:
+function! <SID>FB_SetScratchSettings()
+ " Turn off the swapfile, set the buffer type so that it won't get
+ " written, and so that it will get deleted when it gets hidden.
+ setlocal noreadonly modifiable
+ setlocal noswapfile
+ setlocal buftype=nowrite
+ setlocal bufhidden=delete
+ " Don't wrap around long lines
+ setlocal nowrap
+endfunction
+
+" }}}
+" FB_ToggleHelp: toggles verbosity of help {{{
+" Description:
+function! <SID>FB_ToggleHelp()
+ let s:FB_VerboseHelp = 1 - s:FB_GetVar('FB_VerboseHelp', 0)
+
+ call FB_DisplayFiles('.')
+endfunction " }}}
+" FB_DisplayHelp: displays a helpful header {{{
+" Description:
+function! <SID>FB_DisplayHelp()
+ let verboseHelp = s:FB_GetVar('FB_VerboseHelp', 0)
+ if verboseHelp
+ let txt =
+ \ "\" <cr>: on file, choose the file and quit\n"
+ \ ."\" on dir, enter directory\n"
+ \ ."\" q/<esc>: quit without choosing\n"
+ \ ."\" C: change directory to getcwd()\n"
+ \ ."\" ?: toggle help verbosity\n"
+ \ ."\"= ".getcwd()
+ else
+ let txt = "\" ?: toggle help verbosity\n"
+ \ ."\"= ".getcwd()
+ endif
+ 0put!=txt
+endfunction " }}}
+
+" Handles various actions in the file-browser
+" FB_EditEntry: handles the user pressing <enter> on a line {{{
+" Description:
+function! <SID>FB_EditEntry()
+ let line = getline('.')
+
+ if isdirectory(line)
+ call FB_DisplayFiles(line)
+ endif
+
+ " If the user has a call back function defined on choosing a file, handle
+ " it.
+ let cbf = s:FB_GetVar('FB_CallBackFunction', '')
+ if cbf != '' && line !~ '^" ' && filereadable(line)
+ let fname = fnamemodify(line, ':p')
+ bdelete
+
+ let arguments = s:FB_GetVar('FB_CallBackFunctionArgs', '')
+ if arguments != ''
+ let arguments = ','.arguments
+ endif
+ call Tex_Debug('arguments = '.arguments, 'fb')
+ call Tex_Debug("call ".cbf."('".fname."'".arguments.')', 'fb')
+ exec "call ".cbf."('".fname."'".arguments.')'
+ endif
+endfunction " }}}
+
+" FB_Strntok (string, tok, n) {{{
+" extract the n^th token from s seperated by tok.
+" example: FB_Strntok('1,23,3', ',', 2) = 23
+fun! <SID>FB_Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun " }}}
+" FB_GetVar: gets the most local value of a variable {{{
+function! <SID>FB_GetVar(name, default)
+ if exists('s:'.a:name)
+ return s:{a:name}
+ elseif exists('w:'.a:name)
+ return w:{a:name}
+ elseif exists('b:'.a:name)
+ return b:{a:name}
+ elseif exists('g:'.a:name)
+ return g:{a:name}
+ else
+ return a:default
+ endif
+endfunction
+
+" }}}
+
+let &cpo = s:save_cpo
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/.vim/plugin/imaps.vim b/.vim/plugin/imaps.vim
new file mode 100644
index 0000000..d871aa1
--- /dev/null
+++ b/.vim/plugin/imaps.vim
@@ -0,0 +1,831 @@
+" File: imaps.vim
+" Authors: Srinath Avadhanula <srinath AT fastmail.fm>
+" Benji Fisher <benji AT member.AMS.org>
+"
+" WWW: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/vimfiles/plugin/imaps.vim?only_with_tag=MAIN
+"
+" Description: insert mode template expander with cursor placement
+" while preserving filetype indentation.
+"
+" $Id: imaps.vim 997 2006-03-20 09:45:45Z srinathava $
+"
+" Documentation: {{{
+"
+" Motivation:
+" this script provides a way to generate insert mode mappings which do not
+" suffer from some of the problem of mappings and abbreviations while allowing
+" cursor placement after the expansion. It can alternatively be thought of as
+" a template expander.
+"
+" Consider an example. If you do
+"
+" imap lhs something
+"
+" then a mapping is set up. However, there will be the following problems:
+" 1. the 'ttimeout' option will generally limit how easily you can type the
+" lhs. if you type the left hand side too slowly, then the mapping will not
+" be activated.
+" 2. if you mistype one of the letters of the lhs, then the mapping is
+" deactivated as soon as you backspace to correct the mistake.
+"
+" If, in order to take care of the above problems, you do instead
+"
+" iab lhs something
+"
+" then the timeout problem is solved and so is the problem of mistyping.
+" however, abbreviations are only expanded after typing a non-word character.
+" which causes problems of cursor placement after the expansion and invariably
+" spurious spaces are inserted.
+"
+" Usage Example:
+" this script attempts to solve all these problems by providing an emulation
+" of imaps wchich does not suffer from its attendant problems. Because maps
+" are activated without having to press additional characters, therefore
+" cursor placement is possible. furthermore, file-type specific indentation is
+" preserved, because the rhs is expanded as if the rhs is typed in literally
+" by the user.
+"
+" The script already provides some default mappings. each "mapping" is of the
+" form:
+"
+" call IMAP (lhs, rhs, ft)
+"
+" Some characters in the RHS have special meaning which help in cursor
+" placement.
+"
+" Example One:
+"
+" call IMAP ("bit`", "\\begin{itemize}\<cr>\\item <++>\<cr>\\end{itemize}<++>", "tex")
+"
+" This effectively sets up the map for "bit`" whenever you edit a latex file.
+" When you type in this sequence of letters, the following text is inserted:
+"
+" \begin{itemize}
+" \item *
+" \end{itemize}<++>
+"
+" where * shows the cursor position. The cursor position after inserting the
+" text is decided by the position of the first "place-holder". Place holders
+" are special characters which decide cursor placement and movement. In the
+" example above, the place holder characters are <+ and +>. After you have typed
+" in the item, press <C-j> and you will be taken to the next set of <++>'s.
+" Therefore by placing the <++> characters appropriately, you can minimize the
+" use of movement keys.
+"
+" NOTE: Set g:Imap_UsePlaceHolders to 0 to disable placeholders altogether.
+" Set
+" g:Imap_PlaceHolderStart and g:Imap_PlaceHolderEnd
+" to something else if you want different place holder characters.
+" Also, b:Imap_PlaceHolderStart and b:Imap_PlaceHolderEnd override the values
+" of g:Imap_PlaceHolderStart and g:Imap_PlaceHolderEnd respectively. This is
+" useful for setting buffer specific place hoders.
+"
+" Example Two:
+" You can use the <C-r> command to insert dynamic elements such as dates.
+" call IMAP ('date`', "\<c-r>=strftime('%b %d %Y')\<cr>", '')
+"
+" sets up the map for date` to insert the current date.
+"
+"--------------------------------------%<--------------------------------------
+" Bonus: This script also provides a command Snip which puts tearoff strings,
+" '----%<----' above and below the visually selected range of lines. The
+" length of the string is chosen to be equal to the longest line in the range.
+" Recommended Usage:
+" '<,'>Snip
+"--------------------------------------%<--------------------------------------
+" }}}
+
+" line continuation used here.
+let s:save_cpo = &cpo
+set cpo&vim
+
+" ==============================================================================
+" Script Options / Variables
+" ==============================================================================
+" Options {{{
+if !exists('g:Imap_StickyPlaceHolders')
+ let g:Imap_StickyPlaceHolders = 1
+endif
+if !exists('g:Imap_DeleteEmptyPlaceHolders')
+ let g:Imap_DeleteEmptyPlaceHolders = 1
+endif
+" }}}
+" Variables {{{
+" s:LHS_{ft}_{char} will be generated automatically. It will look like
+" s:LHS_tex_o = 'fo\|foo\|boo' and contain all mapped sequences ending in "o".
+" s:Map_{ft}_{lhs} will be generated automatically. It will look like
+" s:Map_c_foo = 'for(<++>; <++>; <++>)', the mapping for "foo".
+"
+" }}}
+
+" ==============================================================================
+" functions for easy insert mode mappings.
+" ==============================================================================
+" IMAP: Adds a "fake" insert mode mapping. {{{
+" For example, doing
+" IMAP('abc', 'def' ft)
+" will mean that if the letters abc are pressed in insert mode, then
+" they will be replaced by def. If ft != '', then the "mapping" will be
+" specific to the files of type ft.
+"
+" Using IMAP has a few advantages over simply doing:
+" imap abc def
+" 1. with imap, if you begin typing abc, the cursor will not advance and
+" long as there is a possible completion, the letters a, b, c will be
+" displayed on on top of the other. using this function avoids that.
+" 2. with imap, if a backspace or arrow key is pressed before completing
+" the word, then the mapping is lost. this function allows movement.
+" (this ofcourse means that this function is only limited to
+" left-hand-sides which do not have movement keys or unprintable
+" characters)
+" It works by only mapping the last character of the left-hand side.
+" when this character is typed in, then a reverse lookup is done and if
+" the previous characters consititute the left hand side of the mapping,
+" the previously typed characters and erased and the right hand side is
+" inserted
+
+" IMAP: set up a filetype specific mapping.
+" Description:
+" "maps" the lhs to rhs in files of type 'ft'. If supplied with 2
+" additional arguments, then those are assumed to be the placeholder
+" characters in rhs. If unspecified, then the placeholder characters
+" are assumed to be '<+' and '+>' These placeholder characters in
+" a:rhs are replaced with the users setting of
+" [bg]:Imap_PlaceHolderStart and [bg]:Imap_PlaceHolderEnd settings.
+"
+function! IMAP(lhs, rhs, ft, ...)
+
+ " Find the place holders to save for IMAP_PutTextWithMovement() .
+ if a:0 < 2
+ let phs = '<+'
+ let phe = '+>'
+ else
+ let phs = a:1
+ let phe = a:2
+ endif
+
+ let hash = s:Hash(a:lhs)
+ let s:Map_{a:ft}_{hash} = a:rhs
+ let s:phs_{a:ft}_{hash} = phs
+ let s:phe_{a:ft}_{hash} = phe
+
+ " Add a:lhs to the list of left-hand sides that end with lastLHSChar:
+ let lastLHSChar = a:lhs[strlen(a:lhs)-1]
+ let hash = s:Hash(lastLHSChar)
+ if !exists("s:LHS_" . a:ft . "_" . hash)
+ let s:LHS_{a:ft}_{hash} = escape(a:lhs, '\')
+ else
+ let s:LHS_{a:ft}_{hash} = escape(a:lhs, '\') .'\|'. s:LHS_{a:ft}_{hash}
+ endif
+
+ " map only the last character of the left-hand side.
+ if lastLHSChar == ' '
+ let lastLHSChar = '<space>'
+ end
+ exe 'inoremap <silent>'
+ \ escape(lastLHSChar, '|')
+ \ '<C-r>=<SID>LookupCharacter("' .
+ \ escape(lastLHSChar, '\|"') .
+ \ '")<CR>'
+endfunction
+
+" }}}
+" IMAP_list: list the rhs and place holders corresponding to a:lhs {{{
+"
+" Added mainly for debugging purposes, but maybe worth keeping.
+function! IMAP_list(lhs)
+ let char = a:lhs[strlen(a:lhs)-1]
+ let charHash = s:Hash(char)
+ if exists("s:LHS_" . &ft ."_". charHash) && a:lhs =~ s:LHS_{&ft}_{charHash}
+ let ft = &ft
+ elseif exists("s:LHS__" . charHash) && a:lhs =~ s:LHS__{charHash}
+ let ft = ""
+ else
+ return ""
+ endif
+ let hash = s:Hash(a:lhs)
+ return "rhs = " . s:Map_{ft}_{hash} . " place holders = " .
+ \ s:phs_{ft}_{hash} . " and " . s:phe_{ft}_{hash}
+endfunction
+" }}}
+" LookupCharacter: inserts mapping corresponding to this character {{{
+"
+" This function extracts from s:LHS_{&ft}_{a:char} or s:LHS__{a:char}
+" the longest lhs matching the current text. Then it replaces lhs with the
+" corresponding rhs saved in s:Map_{ft}_{lhs} .
+" The place-holder variables are passed to IMAP_PutTextWithMovement() .
+function! s:LookupCharacter(char)
+ if IMAP_GetVal('Imap_FreezeImap', 0) == 1
+ return a:char
+ endif
+ let charHash = s:Hash(a:char)
+
+ " The line so far, including the character that triggered this function:
+ let text = strpart(getline("."), 0, col(".")-1) . a:char
+ " Prefer a local map to a global one, even if the local map is shorter.
+ " Is this what we want? Do we care?
+ " Use '\V' (very no-magic) so that only '\' is special, and it was already
+ " escaped when building up s:LHS_{&ft}_{charHash} .
+ if exists("s:LHS_" . &ft . "_" . charHash)
+ \ && text =~ "\\C\\V\\(" . s:LHS_{&ft}_{charHash} . "\\)\\$"
+ let ft = &ft
+ elseif exists("s:LHS__" . charHash)
+ \ && text =~ "\\C\\V\\(" . s:LHS__{charHash} . "\\)\\$"
+ let ft = ""
+ else
+ " If this is a character which could have been used to trigger an
+ " abbreviation, check if an abbreviation exists.
+ if a:char !~ '\k'
+ let lastword = matchstr(getline('.'), '\k\+$', '')
+ call IMAP_Debug('getting lastword = ['.lastword.']', 'imap')
+ if lastword != ''
+ " An extremeley wierd way to get around the fact that vim
+ " doesn't have the equivalent of the :mapcheck() function for
+ " abbreviations.
+ let _a = @a
+ exec "redir @a | silent! iab ".lastword." | redir END"
+ let abbreviationRHS = matchstr(@a."\n", "\n".'i\s\+'.lastword.'\s\+@\?\zs.*\ze'."\n")
+
+ call IMAP_Debug('getting abbreviationRHS = ['.abbreviationRHS.']', 'imap')
+
+ if @a =~ "No abbreviation found" || abbreviationRHS == ""
+ let @a = _a
+ return a:char
+ endif
+
+ let @a = _a
+ let abbreviationRHS = escape(abbreviationRHS, '\<"')
+ exec 'let abbreviationRHS = "'.abbreviationRHS.'"'
+
+ let lhs = lastword.a:char
+ let rhs = abbreviationRHS.a:char
+ let phs = IMAP_GetPlaceHolderStart()
+ let phe = IMAP_GetPlaceHolderEnd()
+ else
+ return a:char
+ endif
+ else
+ return a:char
+ endif
+ endif
+ " Find the longest left-hand side that matches the line so far.
+ " matchstr() returns the match that starts first. This automatically
+ " ensures that the longest LHS is used for the mapping.
+ if !exists('lhs') || !exists('rhs')
+ let lhs = matchstr(text, "\\C\\V\\(" . s:LHS_{ft}_{charHash} . "\\)\\$")
+ let hash = s:Hash(lhs)
+ let rhs = s:Map_{ft}_{hash}
+ let phs = s:phs_{ft}_{hash}
+ let phe = s:phe_{ft}_{hash}
+ endif
+
+ if strlen(lhs) == 0
+ return a:char
+ endif
+ " enough back-spaces to erase the left-hand side; -1 for the last
+ " character typed:
+ let bs = substitute(strpart(lhs, 1), ".", "\<bs>", "g")
+ return bs . IMAP_PutTextWithMovement(rhs, phs, phe)
+endfunction
+
+" }}}
+" IMAP_PutTextWithMovement: returns the string with movement appended {{{
+" Description:
+" If a:str contains "placeholders", then appends movement commands to
+" str in a way that the user moves to the first placeholder and enters
+" insert or select mode. If supplied with 2 additional arguments, then
+" they are assumed to be the placeholder specs. Otherwise, they are
+" assumed to be '<+' and '+>'. These placeholder chars are replaced
+" with the users settings of [bg]:Imap_PlaceHolderStart and
+" [bg]:Imap_PlaceHolderEnd.
+function! IMAP_PutTextWithMovement(str, ...)
+
+ " The placeholders used in the particular input string. These can be
+ " different from what the user wants to use.
+ if a:0 < 2
+ let phs = '<+'
+ let phe = '+>'
+ else
+ let phs = escape(a:1, '\')
+ let phe = escape(a:2, '\')
+ endif
+
+ let text = a:str
+
+ " The user's placeholder settings.
+ let phsUser = IMAP_GetPlaceHolderStart()
+ let pheUser = IMAP_GetPlaceHolderEnd()
+
+ " Problem: depending on the setting of the 'encoding' option, a character
+ " such as "\xab" may not match itself. We try to get around this by
+ " changing the encoding of all our strings. At the end, we have to
+ " convert text back.
+ let phsEnc = s:Iconv(phs, "encode")
+ let pheEnc = s:Iconv(phe, "encode")
+ let phsUserEnc = s:Iconv(phsUser, "encode")
+ let pheUserEnc = s:Iconv(pheUser, "encode")
+ let textEnc = s:Iconv(text, "encode")
+ if textEnc != text
+ let textEncoded = 1
+ else
+ let textEncoded = 0
+ endif
+
+ let pattern = '\V\(\.\{-}\)' .phs. '\(\.\{-}\)' .phe. '\(\.\*\)'
+ " If there are no placeholders, just return the text.
+ if textEnc !~ pattern
+ call IMAP_Debug('Not getting '.phs.' and '.phe.' in '.textEnc, 'imap')
+ return text
+ endif
+ " Break text up into "initial <+template+> final"; any piece may be empty.
+ let initialEnc = substitute(textEnc, pattern, '\1', '')
+ let templateEnc = substitute(textEnc, pattern, '\2', '')
+ let finalEnc = substitute(textEnc, pattern, '\3', '')
+
+ " If the user does not want to use placeholders, then remove all but the
+ " first placeholder.
+ " Otherwise, replace all occurences of the placeholders here with the
+ " user's choice of placeholder settings.
+ if exists('g:Imap_UsePlaceHolders') && !g:Imap_UsePlaceHolders
+ let finalEnc = substitute(finalEnc, '\V'.phs.'\.\{-}'.phe, '', 'g')
+ else
+ let finalEnc = substitute(finalEnc, '\V'.phs.'\(\.\{-}\)'.phe,
+ \ phsUserEnc.'\1'.pheUserEnc, 'g')
+ endif
+
+ " The substitutions are done, so convert back, if necessary.
+ if textEncoded
+ let initial = s:Iconv(initialEnc, "decode")
+ let template = s:Iconv(templateEnc, "decode")
+ let final = s:Iconv(finalEnc, "decode")
+ else
+ let initial = initialEnc
+ let template = templateEnc
+ let final = finalEnc
+ endif
+
+ " Build up the text to insert:
+ " 1. the initial text plus an extra character;
+ " 2. go to Normal mode with <C-\><C-N>, so it works even if 'insertmode'
+ " is set, and mark the position;
+ " 3. replace the extra character with tamplate and final;
+ " 4. back to Normal mode and restore the cursor position;
+ " 5. call IMAP_Jumpfunc().
+ let template = phsUser . template . pheUser
+ " Old trick: insert and delete a character to get the same behavior at
+ " start, middle, or end of line and on empty lines.
+ let text = initial . "X\<C-\>\<C-N>:call IMAP_Mark('set')\<CR>\"_s"
+ let text = text . template . final
+ let text = text . "\<C-\>\<C-N>:call IMAP_Mark('go')\<CR>"
+ let text = text . "i\<C-r>=IMAP_Jumpfunc('', 1)\<CR>"
+
+ call IMAP_Debug('IMAP_PutTextWithMovement: text = ['.text.']', 'imap')
+ return text
+endfunction
+
+" }}}
+" IMAP_Jumpfunc: takes user to next <+place-holder+> {{{
+" Author: Luc Hermitte
+" Arguments:
+" direction: flag for the search() function. If set to '', search forwards,
+" if 'b', then search backwards. See the {flags} argument of the
+" |search()| function for valid values.
+" inclusive: In vim, the search() function is 'exclusive', i.e we always goto
+" next cursor match even if there is a match starting from the
+" current cursor position. Setting this argument to 1 makes
+" IMAP_Jumpfunc() also respect a match at the current cursor
+" position. 'inclusive'ness is necessary for IMAP() because a
+" placeholder string can occur at the very beginning of a map which
+" we want to select.
+" We use a non-zero value only in special conditions. Most mappings
+" should use a zero value.
+function! IMAP_Jumpfunc(direction, inclusive)
+
+ " The user's placeholder settings.
+ let phsUser = IMAP_GetPlaceHolderStart()
+ let pheUser = IMAP_GetPlaceHolderEnd()
+
+ let searchString = ''
+ " If this is not an inclusive search or if it is inclusive, but the
+ " current cursor position does not contain a placeholder character, then
+ " search for the placeholder characters.
+ if !a:inclusive || strpart(getline('.'), col('.')-1) !~ '\V\^'.phsUser
+ let searchString = '\V'.phsUser.'\_.\{-}'.pheUser
+ endif
+
+ " If we didn't find any placeholders return quietly.
+ if searchString != '' && !search(searchString, a:direction)
+ return ''
+ endif
+
+ " Open any closed folds and make this part of the text visible.
+ silent! foldopen!
+
+ " Calculate if we have an empty placeholder or if it contains some
+ " description.
+ let template =
+ \ matchstr(strpart(getline('.'), col('.')-1),
+ \ '\V\^'.phsUser.'\zs\.\{-}\ze\('.pheUser.'\|\$\)')
+ let placeHolderEmpty = !strlen(template)
+
+ " If we are selecting in exclusive mode, then we need to move one step to
+ " the right
+ let extramove = ''
+ if &selection == 'exclusive'
+ let extramove = 'l'
+ endif
+
+ " Select till the end placeholder character.
+ let movement = "\<C-o>v/\\V".pheUser."/e\<CR>".extramove
+
+ " First remember what the search pattern was. s:RemoveLastHistoryItem will
+ " reset @/ to this pattern so we do not create new highlighting.
+ let g:Tex_LastSearchPattern = @/
+
+ " Now either goto insert mode or select mode.
+ if placeHolderEmpty && g:Imap_DeleteEmptyPlaceHolders
+ " delete the empty placeholder into the blackhole.
+ return movement."\"_c\<C-o>:".s:RemoveLastHistoryItem."\<CR>"
+ else
+ return movement."\<C-\>\<C-N>:".s:RemoveLastHistoryItem."\<CR>gv\<C-g>"
+ endif
+
+endfunction
+
+" }}}
+" Maps for IMAP_Jumpfunc {{{
+"
+" These mappings use <Plug> and thus provide for easy user customization. When
+" the user wants to map some other key to jump forward, he can do for
+" instance:
+" nmap ,f <plug>IMAP_JumpForward
+" etc.
+
+" jumping forward and back in insert mode.
+imap <silent> <Plug>IMAP_JumpForward <c-r>=IMAP_Jumpfunc('', 0)<CR>
+imap <silent> <Plug>IMAP_JumpBack <c-r>=IMAP_Jumpfunc('b', 0)<CR>
+
+" jumping in normal mode
+nmap <silent> <Plug>IMAP_JumpForward i<c-r>=IMAP_Jumpfunc('', 0)<CR>
+nmap <silent> <Plug>IMAP_JumpBack i<c-r>=IMAP_Jumpfunc('b', 0)<CR>
+
+" deleting the present selection and then jumping forward.
+vmap <silent> <Plug>IMAP_DeleteAndJumpForward "_<Del>i<c-r>=IMAP_Jumpfunc('', 0)<CR>
+vmap <silent> <Plug>IMAP_DeleteAndJumpBack "_<Del>i<c-r>=IMAP_Jumpfunc('b', 0)<CR>
+
+" jumping forward without deleting present selection.
+vmap <silent> <Plug>IMAP_JumpForward <C-\><C-N>i<c-r>=IMAP_Jumpfunc('', 0)<CR>
+vmap <silent> <Plug>IMAP_JumpBack <C-\><C-N>`<i<c-r>=IMAP_Jumpfunc('b', 0)<CR>
+
+" }}}
+" Default maps for IMAP_Jumpfunc {{{
+" map only if there is no mapping already. allows for user customization.
+" NOTE: Default mappings for jumping to the previous placeholder are not
+" provided. It is assumed that if the user will create such mappings
+" hself if e so desires.
+if !hasmapto('<Plug>IMAP_JumpForward', 'i')
+ imap <C-J> <Plug>IMAP_JumpForward
+endif
+if !hasmapto('<Plug>IMAP_JumpForward', 'n')
+ nmap <C-J> <Plug>IMAP_JumpForward
+endif
+if exists('g:Imap_StickyPlaceHolders') && g:Imap_StickyPlaceHolders
+ if !hasmapto('<Plug>IMAP_JumpForward', 'v')
+ vmap <C-J> <Plug>IMAP_JumpForward
+ endif
+else
+ if !hasmapto('<Plug>IMAP_DeleteAndJumpForward', 'v')
+ vmap <C-J> <Plug>IMAP_DeleteAndJumpForward
+ endif
+endif
+" }}}
+
+nmap <silent> <script> <plug><+SelectRegion+> `<v`>
+
+" ==============================================================================
+" enclosing selected region.
+" ==============================================================================
+" VEnclose: encloses the visually selected region with given arguments {{{
+" Description: allows for differing action based on visual line wise
+" selection or visual characterwise selection. preserves the
+" marks and search history.
+function! VEnclose(vstart, vend, VStart, VEnd)
+
+ " its characterwise if
+ " 1. characterwise selection and valid values for vstart and vend.
+ " OR
+ " 2. linewise selection and invalid values for VStart and VEnd
+ if (visualmode() == 'v' && (a:vstart != '' || a:vend != '')) || (a:VStart == '' && a:VEnd == '')
+
+ let newline = ""
+ let _r = @r
+
+ let normcmd = "normal! \<C-\>\<C-n>`<v`>\"_s"
+
+ exe "normal! \<C-\>\<C-n>`<v`>\"ry"
+ if @r =~ "\n$"
+ let newline = "\n"
+ let @r = substitute(@r, "\n$", '', '')
+ endif
+
+ " In exclusive selection, we need to select an extra character.
+ if &selection == 'exclusive'
+ let movement = 8
+ else
+ let movement = 7
+ endif
+ let normcmd = normcmd.
+ \ a:vstart."!!mark!!".a:vend.newline.
+ \ "\<C-\>\<C-N>?!!mark!!\<CR>v".movement."l\"_s\<C-r>r\<C-\>\<C-n>"
+
+ " this little if statement is because till very recently, vim used to
+ " report col("'>") > length of selected line when `> is $. on some
+ " systems it reports a -ve number.
+ if col("'>") < 0 || col("'>") > strlen(getline("'>"))
+ let lastcol = strlen(getline("'>"))
+ else
+ let lastcol = col("'>")
+ endif
+ if lastcol - col("'<") != 0
+ let len = lastcol - col("'<")
+ else
+ let len = ''
+ endif
+
+ " the next normal! is for restoring the marks.
+ let normcmd = normcmd."`<v".len."l\<C-\>\<C-N>"
+
+ " First remember what the search pattern was. s:RemoveLastHistoryItem
+ " will reset @/ to this pattern so we do not create new highlighting.
+ let g:Tex_LastSearchPattern = @/
+
+ silent! exe normcmd
+ " this is to restore the r register.
+ let @r = _r
+ " and finally, this is to restore the search history.
+ execute s:RemoveLastHistoryItem
+
+ else
+
+ exec 'normal! `<O'.a:VStart."\<C-\>\<C-n>"
+ exec 'normal! `>o'.a:VEnd."\<C-\>\<C-n>"
+ if &indentexpr != ''
+ silent! normal! `<kV`>j=
+ endif
+ silent! normal! `>
+ endif
+endfunction
+
+" }}}
+" ExecMap: adds the ability to correct an normal/visual mode mapping. {{{
+" Author: Hari Krishna Dara <hari_vim@yahoo.com>
+" Reads a normal mode mapping at the command line and executes it with the
+" given prefix. Press <BS> to correct and <Esc> to cancel.
+function! ExecMap(prefix, mode)
+ " Temporarily remove the mapping, otherwise it will interfere with the
+ " mapcheck call below:
+ let myMap = maparg(a:prefix, a:mode)
+ exec a:mode."unmap ".a:prefix
+
+ " Generate a line with spaces to clear the previous message.
+ let i = 1
+ let clearLine = "\r"
+ while i < &columns
+ let clearLine = clearLine . ' '
+ let i = i + 1
+ endwhile
+
+ let mapCmd = a:prefix
+ let foundMap = 0
+ let breakLoop = 0
+ echon "\rEnter Map: " . mapCmd
+ while !breakLoop
+ let char = getchar()
+ if char !~ '^\d\+$'
+ if char == "\<BS>"
+ let mapCmd = strpart(mapCmd, 0, strlen(mapCmd) - 1)
+ endif
+ else " It is the ascii code.
+ let char = nr2char(char)
+ if char == "\<Esc>"
+ let breakLoop = 1
+ else
+ let mapCmd = mapCmd . char
+ if maparg(mapCmd, a:mode) != ""
+ let foundMap = 1
+ let breakLoop = 1
+ elseif mapcheck(mapCmd, a:mode) == ""
+ let mapCmd = strpart(mapCmd, 0, strlen(mapCmd) - 1)
+ endif
+ endif
+ endif
+ echon clearLine
+ echon "\rEnter Map: " . mapCmd
+ endwhile
+ if foundMap
+ if a:mode == 'v'
+ " use a plug to select the region instead of using something like
+ " `<v`> to avoid problems caused by some of the characters in
+ " '`<v`>' being mapped.
+ let gotoc = "\<plug><+SelectRegion+>"
+ else
+ let gotoc = ''
+ endif
+ exec "normal ".gotoc.mapCmd
+ endif
+ exec a:mode.'noremap '.a:prefix.' '.myMap
+endfunction
+
+" }}}
+
+" ==============================================================================
+" helper functions
+" ==============================================================================
+" Strntok: extract the n^th token from a list {{{
+" example: Strntok('1,23,3', ',', 2) = 23
+fun! <SID>Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun
+
+" }}}
+" s:RemoveLastHistoryItem: removes last search item from search history {{{
+" Description: Execute this string to clean up the search history.
+let s:RemoveLastHistoryItem = ':call histdel("/", -1)|let @/=g:Tex_LastSearchPattern'
+
+" }}}
+" s:Hash: Return a version of a string that can be used as part of a variable" {{{
+" name.
+" Converts every non alphanumeric character into _{ascii}_ where {ascii} is
+" the ASCII code for that character...
+fun! s:Hash(text)
+ return substitute(a:text, '\([^[:alnum:]]\)',
+ \ '\="_".char2nr(submatch(1))."_"', 'g')
+endfun
+"" }}}
+" IMAP_GetPlaceHolderStart and IMAP_GetPlaceHolderEnd: "{{{
+" return the buffer local placeholder variables, or the global one, or the default.
+function! IMAP_GetPlaceHolderStart()
+ if exists("b:Imap_PlaceHolderStart") && strlen(b:Imap_PlaceHolderEnd)
+ return b:Imap_PlaceHolderStart
+ elseif exists("g:Imap_PlaceHolderStart") && strlen(g:Imap_PlaceHolderEnd)
+ return g:Imap_PlaceHolderStart
+ else
+ return "<+"
+endfun
+function! IMAP_GetPlaceHolderEnd()
+ if exists("b:Imap_PlaceHolderEnd") && strlen(b:Imap_PlaceHolderEnd)
+ return b:Imap_PlaceHolderEnd
+ elseif exists("g:Imap_PlaceHolderEnd") && strlen(g:Imap_PlaceHolderEnd)
+ return g:Imap_PlaceHolderEnd
+ else
+ return "+>"
+endfun
+" }}}
+" s:Iconv: a wrapper for iconv()" {{{
+" Problem: after
+" let text = "\xab"
+" (or using the raw 8-bit ASCII character in a file with 'fenc' set to
+" "latin1") if 'encoding' is set to utf-8, then text does not match itself:
+" echo text =~ text
+" returns 0.
+" Solution: When this happens, a re-encoded version of text does match text:
+" echo iconv(text, "latin1", "utf8") =~ text
+" returns 1. In this case, convert text to utf-8 with iconv().
+" TODO: Is it better to use &encoding instead of "utf8"? Internally, vim
+" uses utf-8, and can convert between latin1 and utf-8 even when compiled with
+" -iconv, so let's try using utf-8.
+" Arguments:
+" a:text = text to be encoded or decoded
+" a:mode = "encode" (latin1 to utf8) or "decode" (utf8 to latin1)
+" Caution: do not encode and then decode without checking whether the text
+" has changed, becuase of the :if clause in encoding!
+function! s:Iconv(text, mode)
+ if a:mode == "decode"
+ return iconv(a:text, "utf8", "latin1")
+ endif
+ if a:text =~ '\V\^' . escape(a:text, '\') . '\$'
+ return a:text
+ endif
+ let textEnc = iconv(a:text, "latin1", "utf8")
+ if textEnc !~ '\V\^' . escape(a:text, '\') . '\$'
+ call IMAP_Debug('Encoding problems with text '.a:text.' ', 'imap')
+ endif
+ return textEnc
+endfun
+"" }}}
+" IMAP_Debug: interface to Tex_Debug if available, otherwise emulate it {{{
+" Description:
+" Do not want a memory leak! Set this to zero so that imaps always
+" starts out in a non-debugging mode.
+if !exists('g:Imap_Debug')
+ let g:Imap_Debug = 0
+endif
+function! IMAP_Debug(string, pattern)
+ if !g:Imap_Debug
+ return
+ endif
+ if exists('*Tex_Debug')
+ call Tex_Debug(a:string, a:pattern)
+ else
+ if !exists('s:debug_'.a:pattern)
+ let s:debug_{a:pattern} = a:string
+ else
+ let s:debug_{a:pattern} = s:debug_{a:pattern}.a:string
+ endif
+ endif
+endfunction " }}}
+" IMAP_DebugClear: interface to Tex_DebugClear if avaialable, otherwise emulate it {{{
+" Description:
+function! IMAP_DebugClear(pattern)
+ if exists('*Tex_DebugClear')
+ call Tex_DebugClear(a:pattern)
+ else
+ let s:debug_{a:pattern} = ''
+ endif
+endfunction " }}}
+" IMAP_PrintDebug: interface to Tex_DebugPrint if avaialable, otherwise emulate it {{{
+" Description:
+function! IMAP_PrintDebug(pattern)
+ if exists('*Tex_PrintDebug')
+ call Tex_PrintDebug(a:pattern)
+ else
+ if exists('s:debug_'.a:pattern)
+ echo s:debug_{a:pattern}
+ endif
+ endif
+endfunction " }}}
+" IMAP_Mark: Save the cursor position (if a:action == 'set') in a" {{{
+" script-local variable; restore this position if a:action == 'go'.
+let s:Mark = "(0,0)"
+let s:initBlanks = ''
+function! IMAP_Mark(action)
+ if a:action == 'set'
+ let s:Mark = "(" . line(".") . "," . col(".") . ")"
+ let s:initBlanks = matchstr(getline('.'), '^\s*')
+ elseif a:action == 'go'
+ execute "call cursor" s:Mark
+ let blanksNow = matchstr(getline('.'), '^\s*')
+ if strlen(blanksNow) > strlen(s:initBlanks)
+ execute 'silent! normal! '.(strlen(blanksNow) - strlen(s:initBlanks)).'l'
+ elseif strlen(blanksNow) < strlen(s:initBlanks)
+ execute 'silent! normal! '.(strlen(s:initBlanks) - strlen(blanksNow)).'h'
+ endif
+ endif
+endfunction "" }}}
+" IMAP_GetVal: gets the value of a variable {{{
+" Description: first checks window local, then buffer local etc.
+function! IMAP_GetVal(name, ...)
+ if a:0 > 0
+ let default = a:1
+ else
+ let default = ''
+ endif
+ if exists('w:'.a:name)
+ return w:{a:name}
+ elseif exists('b:'.a:name)
+ return b:{a:name}
+ elseif exists('g:'.a:name)
+ return g:{a:name}
+ else
+ return default
+ endif
+endfunction " }}}
+
+" ==============================================================================
+" A bonus function: Snip()
+" ==============================================================================
+" Snip: puts a scissor string above and below block of text {{{
+" Desciption:
+"-------------------------------------%<-------------------------------------
+" this puts a the string "--------%<---------" above and below the visually
+" selected block of lines. the length of the 'tearoff' string depends on the
+" maximum string length in the selected range. this is an aesthetically more
+" pleasing alternative instead of hardcoding a length.
+"-------------------------------------%<-------------------------------------
+function! <SID>Snip() range
+ let i = a:firstline
+ let maxlen = -2
+ " find out the maximum virtual length of each line.
+ while i <= a:lastline
+ exe i
+ let length = virtcol('$')
+ let maxlen = (length > maxlen ? length : maxlen)
+ let i = i + 1
+ endwhile
+ let maxlen = (maxlen > &tw && &tw != 0 ? &tw : maxlen)
+ let half = maxlen/2
+ exe a:lastline
+ " put a string below
+ exe "norm! o\<esc>".(half - 1)."a-\<esc>A%<\<esc>".(half - 1)."a-"
+ " and above. its necessary to put the string below the block of lines
+ " first because that way the first line number doesnt change...
+ exe a:firstline
+ exe "norm! O\<esc>".(half - 1)."a-\<esc>A%<\<esc>".(half - 1)."a-"
+endfunction
+
+com! -nargs=0 -range Snip :<line1>,<line2>call <SID>Snip()
+" }}}
+
+let &cpo = s:save_cpo
+
+" vim:ft=vim:ts=4:sw=4:noet:fdm=marker:commentstring=\"\ %s:nowrap
diff --git a/.vim/plugin/libList.vim b/.vim/plugin/libList.vim
new file mode 100644
index 0000000..7d72c3e
--- /dev/null
+++ b/.vim/plugin/libList.vim
@@ -0,0 +1,249 @@
+" File: libList.vim
+" Last Change: 2001 Dec 10
+" Maintainer: Gontran BAERTS <gbcreation@free.fr>
+" Version: 0.1
+"
+" Please don't hesitate to correct my english :)
+" Send corrections to <gbcreation@free.fr>
+"
+"-----------------------------------------------------------------------------
+" Description: libList.vim is a set of functions to work with lists or one
+" level arrays.
+"
+"-----------------------------------------------------------------------------
+" To Enable: Normally, this file will reside in your plugins directory and be
+" automatically sourced.
+"
+"-----------------------------------------------------------------------------
+" Usage: Lists are strings variable with values separated by g:listSep
+" character (comma" by default). You may redefine g:listSep variable as you
+" wish.
+"
+" Here are available functions :
+"
+" - AddListItem( array, newItem, index ) :
+" Add item "newItem" to array "array" at "index" position
+" - GetListItem( array, index ) :
+" Return item at "index" position in array "array"
+" - GetListMatchItem( array, pattern ) :
+" Return item matching "pattern" in array "array"
+" - GetListCount( array ) :
+" Return the number of items in array "array"
+" - RemoveListItem( array, index ) :
+" Remove item at "index" position from array "array"
+" - ReplaceListItem( array, index, item ) :
+" Remove item at "index" position by "item" in array "array"
+" - ExchangeListItems( array, item1Index, item2Index ) :
+" Exchange item "item1Index" with item "item2Index" in array "array"
+" - QuickSortList( array, beg, end ) :
+" Return array "array" with items between "beg" and "end" sorted
+"
+" Example:
+" let mylist=""
+" echo GetListCount( mylist ) " --> 0
+" let mylist = AddListItem( mylist, "One", 0 ) " mylist == "One"
+" let mylist = AddListItem( mylist, "Three", 1 ) " mylist == "One,Three"
+" let mylist = AddListItem( mylist, "Two", 1 ) " mylist == "One,Two,Three"
+" echo GetListCount( mylist ) " --> 3
+" echo GetListItem( mylist, 2 ) " --> Three
+" echo GetListMatchItem( mylist, "w" ) " --> two
+" echo GetListMatchItem( mylist, "e" ) " --> One
+" let mylist = RemoveListItem( mylist, 2 ) " mylist == "One,Two"
+" echo GetListCount( mylist ) " --> 2
+" let mylist = ReplaceListItem( mylist, 0, "Three" ) " mylist == "Three,Two"
+" let mylist = ExchangeListItems( mylist, 0, 1 ) " mylist == "Two,Three"
+" let mylist = AddListItem( mylist, "One", 0 ) " mylist == "One,Two,Three"
+" let mylist = QuickSortList( mylist, 0, GetListCount(mylist)-1 )
+" " mylist == "One,Three,Two"
+"
+"-----------------------------------------------------------------------------
+" Updates:
+" in version 0.1
+" - First version
+
+" Has this already been loaded ?
+if exists("loaded_libList")
+ finish
+endif
+let loaded_libList=1
+
+"**
+" Separator:
+" You may change the separator character et any time.
+"**
+let g:listSep = ","
+
+"**
+"AddListItem:
+" Add new item at given position.
+" First item index is 0 (zero).
+"Parameters:
+" - array : Array/List (string of values) which receives the new item.
+" - newItem : String containing the item value to add.
+" - index : Integer indicating the position at which the new item is added.
+" It must be greater than or equals to 0 (zero).
+"Return:
+"String containing array values, including newItem.
+"**
+function AddListItem( array, newItem, index )
+ if a:index == 0
+ if a:array == ""
+ return a:newItem
+ endif
+ return a:newItem . g:listSep . a:array
+ endif
+ return substitute( a:array, '\(\%(^\|' . g:listSep . '\)[^' . g:listSep . ']\+\)\{' . a:index . '\}', '\0' . g:listSep . a:newItem , "" )
+endfunction
+
+"**
+"GetListItem:
+" Get item at given position.
+"Parameters:
+" - array : Array/List (string of values).
+" - index : Integer indicating the position of item to return.
+" It must be greater than or equals to 0 (zero).
+"Return:
+"String representing the item.
+"**
+function GetListItem( array, index )
+ if a:index == 0
+ return matchstr( a:array, '^[^' . g:listSep . ']\+' )
+ else
+ return matchstr( a:array, "[^" . g:listSep . "]\\+", matchend( a:array, '\(\%(^\|' . g:listSep . '\)[^' . g:listSep . ']\+\)\{' . a:index . '\}' . g:listSep ) )
+ endif
+endfunction
+
+"**
+"GetListMatchItem:
+" Get the first item matching given pattern.
+"Parameters:
+" - array : Array/List (string of values).
+" - pattern : Regular expression to match with items.
+" Avoid to use ^, $ and listSep characters in pattern, unless you
+" know what you do.
+"Return:
+"String representing the first item that matches the pattern.
+"**
+function GetListMatchItem( array, pattern )
+ return matchstr( a:array, '[^' . g:listSep . ']*' . a:pattern . '[^' . g:listSep . ']*' )
+endfunction
+
+"**
+"ReplaceListItem:
+" Replace item at given position by a new one.
+"Parameters:
+" - array : Array/List (string of values).
+" - index : Integer indicating the position of item to replace.
+" It must be greater than or equals to 0 (zero).
+" - item : String containing the new value of the replaced item.
+"Return:
+"String containing array values.
+"**
+function ReplaceListItem( array, index, item )
+ if a:index == 0
+ return substitute( a:array, '^[^' .g:listSep. ']\+', a:item, "" )
+ else
+ return substitute( a:array, '\(\%(\%(^\|' . g:listSep . '\)[^' . g:listSep . ']\+\)\{' . a:index . '\}\)' . g:listSep . '[^' . g:listSep . ']\+', '\1' . g:listSep . a:item , "" )
+ endif
+endfunction
+
+"**
+"RemoveListItem:
+" Remove item at given position.
+"Parameters:
+" - array : Array/List (string of values) from which remove an item.
+" - index : Integer indicating the position of item to remove.
+" It must be greater than or equals to 0 (zero).
+"Return:
+"String containing array values, except the removed one.
+"**
+function RemoveListItem( array, index )
+ if a:index == 0
+ return substitute( a:array, '^[^' .g:listSep. ']\+\(' . g:listSep . '\|$\)', "", "" )
+ else
+ return substitute( a:array, '\(\%(\%(^\|' . g:listSep . '\)[^' . g:listSep . ']\+\)\{' . a:index . '\}\)' . g:listSep . '[^' . g:listSep . ']\+', '\1', "" )
+ endif
+endfunction
+
+"**
+"ExchangeListItems:
+" Exchange item at position item1Index with item at position item2Index.
+"Parameters:
+" - array : Array/List (string of values).
+" - item1index : Integer indicating the position of the first item to exchange.
+" It must be greater than or equals to 0 (zero).
+" - item2index : Integer indicating the position of the second item to
+" exchange. It must be greater than or equals to 0 (zero).
+"Return:
+"String containing array values.
+"**
+function ExchangeListItems( array, item1Index, item2Index )
+ let item1 = GetListItem( a:array, a:item1Index )
+ let array = ReplaceListItem( a:array, a:item1Index, GetListItem( a:array, a:item2Index ) )
+ return ReplaceListItem( array, a:item2Index, item1 )
+endfunction
+
+"**
+"GetListCount:
+" Number of items in array.
+"Parameters:
+" - array : Array/List (string of values).
+"Return:
+"Integer representing the number of items in array.
+"Index of last item is GetListCount(array)-1.
+"**
+function GetListCount( array )
+ if a:array == "" | return 0 | endif
+ let pos = 0
+ let cnt = 0
+ while pos != -1
+ let pos = matchend( a:array, g:listSep, pos )
+ let cnt = cnt + 1
+ endwhile
+ return cnt
+endfunction
+
+"**
+"QuickSortList:
+" Sort array.
+"Parameters:
+" - array : Array/List (string of values).
+" - beg : Min index of the range of items to sort.
+" - end : Max index of the range of items to sort.
+"Return:
+"String containing array values with indicated range of items sorted.
+"**
+function QuickSortList( array, beg, end )
+ let array = a:array
+ let pivot = GetListItem( array, a:beg )
+ let l = a:beg
+ let r = a:end
+ while l < r
+ while GetListItem( array, r ) > pivot
+ let r = r - 1
+ endwhile
+ if l != r
+ let array = ReplaceListItem( array, l, GetListItem( array, r ) )
+ let array = ReplaceListItem( array, r, pivot )
+ let l = l + 1
+ endif
+
+ while GetListItem( array, l ) < pivot
+ let l = l + 1
+ endwhile
+ if l != r
+ let array = ReplaceListItem( array, r, GetListItem( array, l ) )
+ let array = ReplaceListItem( array, l, pivot )
+ let r = r - 1
+ endif
+ endwhile
+ if a:beg < l-1
+ let array = QuickSortList( array, a:beg, l-1 )
+ endif
+ if a:end > l+1
+ let array = QuickSortList( array, l+1, a:end )
+ endif
+ return array
+endfunction
+
+
diff --git a/.vim/plugin/minibufexpl.vim b/.vim/plugin/minibufexpl.vim
new file mode 100644
index 0000000..4e78063
--- /dev/null
+++ b/.vim/plugin/minibufexpl.vim
@@ -0,0 +1,1838 @@
+" Mini Buffer Explorer <minibufexpl.vim>
+"
+" HINT: Type zR if you don't know how to use folds
+"
+" Script Info and Documentation {{{
+"=============================================================================
+" Copyright: Copyright (C) 2002 & 2003 Bindu Wavell
+" Permission is hereby granted to use and distribute this code,
+" with or without modifications, provided that this copyright
+" notice is copied with it. Like anything else that's free,
+" minibufexplorer.vim is provided *as is* and comes with no
+" warranty of any kind, either expressed or implied. In no
+" event will the copyright holder be liable for any damamges
+" resulting from the use of this software.
+"
+" Name Of File: minibufexpl.vim
+" Description: Mini Buffer Explorer Vim Plugin
+" Maintainer: Bindu Wavell <bindu@wavell.net>
+" URL: http://vim.sourceforge.net/scripts/script.php?script_id=159
+" Last Change: Sunday, June 21, 2004
+" Version: 6.3.2
+" Derived from Jeff Lanzarotta's bufexplorer.vim version 6.0.7
+" Jeff can be reached at (jefflanzarotta@yahoo.com) and the
+" original plugin can be found at:
+" http://lanzarotta.tripod.com/vim/plugin/6/bufexplorer.vim.zip
+"
+" Usage: Normally, this file should reside in the plugins
+" directory and be automatically sourced. If not, you must
+" manually source this file using ':source minibufexplorer.vim'.
+"
+" You may use the default keymappings of
+"
+" <Leader>mbe - Opens MiniBufExplorer
+"
+" or you may want to add something like the following
+" key mapping to your _vimrc/.vimrc file.
+"
+" map <Leader>b :MiniBufExplorer<cr>
+"
+" However, in most cases you won't need any key-bindings at all.
+"
+" <Leader> is usually backslash so type "\mbe" (quickly) to open
+" the -MiniBufExplorer- window.
+"
+" Other keymappings include: <Leader>mbc to close the Explorer
+" window, <Leader>mbu to force the Explorer to Update and
+" <Leader>mbt to toggle the Explorer window; it will open if
+" closed or close if open. Each of these key bindings can be
+" overridden (see the notes on <Leader>mbe above.)
+"
+" You can map these additional commands as follows:
+"
+" map <Leader>c :CMiniBufExplorer<cr>
+" map <Leader>u :UMiniBufExplorer<cr>
+" map <Leader>t :TMiniBufExplorer<cr>
+"
+" NOTE: you can change the key binding used in these mappings
+" so that they fit with your configuration of vim.
+"
+" You can also call each of these features by typing the
+" following in command mode:
+"
+" :MiniBufExplorer " Open and/or goto Explorer
+" :CMiniBufExplorer " Close the Explorer if it's open
+" :UMiniBufExplorer " Update Explorer without navigating
+" :TMiniBufExplorer " Toggle the Explorer window open and
+" closed.
+"
+" To control where the new split window goes relative to the
+" current window, use the setting:
+"
+" let g:miniBufExplSplitBelow=0 " Put new window above
+" " current or on the
+" " left for vertical split
+" let g:miniBufExplSplitBelow=1 " Put new window below
+" " current or on the
+" " right for vertical split
+"
+" The default for this is read from the &splitbelow VIM option.
+"
+" By default we are now (as of 6.0.2) forcing the -MiniBufExplorer-
+" window to open up at the edge of the screen. You can turn this
+" off by setting the following variable in your .vimrc:
+"
+" let g:miniBufExplSplitToEdge = 0
+"
+" If you would like a vertical explorer you can assign the column
+" width (in characters) you want for your explorer window with the
+" following .vimrc variable (this was introduced in 6.3.0):
+"
+" let g:miniBufExplVSplit = 20 " column width in chars
+"
+" IN HORIZONTAL MODE:
+" It is now (as of 6.1.1) possible to set a maximum height for
+" the -MiniBufExplorer- window. You can set the max height by
+" letting the following variable in your .vimrc:
+"
+" let g:miniBufExplMaxSize = <max lines: defualt 0>
+"
+" setting this to 0 will mean the window gets as big as
+" needed to fit all your buffers.
+"
+" NOTE: This was g:miniBufExplMaxHeight before 6.3.0; the old
+" setting is backwards compatible if you don't use MaxSize.
+"
+" As of 6.2.2 it is possible to set a minimum height for the
+" -MiniBufExplorer- window. You can set the min height by
+" letting the following variable in your .vimrc:
+"
+" let g:miniBufExplMinSize = <min height: default 1>
+"
+" NOTE: This was g:miniBufExplMinHeight before 6.3.0; the old
+" setting is backwards compatible if you don't use MinSize.
+"
+" IN VERTICAL MODE: (as of 6.3.0)
+" By default the vertical explorer has a fixed width. If you put:
+"
+" let g:miniBufExplMaxSize = <max width: default 0>
+"
+" into your .vimrc then MBE will attempt to set the width of the
+" MBE window to be as wide as your widest tab. The width will not
+" exceed MaxSize even if you have wider tabs.
+"
+" Accepting the default value of 0 for this will give you a fixed
+" width MBE window.
+"
+" You can specify a MinSize for the vertical explorer window by
+" putting the following in your .vimrc:
+"
+" let g:miniBufExplMinSize = <min width: default 1>
+"
+" This will have no effect unless you also specivy MaxSize.
+"
+" By default we are now (as of 6.0.1) turning on the MoreThanOne
+" option. This stops the -MiniBufExplorer- from opening
+" automatically until more than one eligible buffer is available.
+" You can turn this feature off by setting the following variable
+" in your .vimrc:
+"
+" let g:miniBufExplorerMoreThanOne=1
+"
+" (The following enhancement is as of 6.2.2)
+" Setting this to 0 will cause the MBE window to be loaded even
+" if no buffers are available. Setting it to 1 causes the MBE
+" window to be loaded as soon as an eligible buffer is read. You
+" can also set it to larger numbers. So if you set it to 4 for
+" example the MBE window wouldn't auto-open until 4 eligibles
+" buffers had been loaded. This is nice for folks that don't
+" want an MBE window unless they are editing more than two or
+" three buffers.
+"
+" To enable the optional mapping of Control + Vim Direction Keys
+" [hjkl] to window movement commands, you can put the following into
+" your .vimrc:
+"
+" let g:miniBufExplMapWindowNavVim = 1
+"
+" To enable the optional mapping of Control + Arrow Keys to window
+" movement commands, you can put the following into your .vimrc:
+"
+" let g:miniBufExplMapWindowNavArrows = 1
+"
+" To enable the optional mapping of <C-TAB> and <C-S-TAB> to a
+" function that will bring up the next or previous buffer in the
+" current window, you can put the following into your .vimrc:
+"
+" let g:miniBufExplMapCTabSwitchBufs = 1
+"
+" To enable the optional mapping of <C-TAB> and <C-S-TAB> to mappings
+" that will move to the next and previous (respectively) window, you
+" can put the following into your .vimrc:
+"
+" let g:miniBufExplMapCTabSwitchWindows = 1
+"
+"
+" NOTE: If you set the ...TabSwitchBufs AND ...TabSwitchWindows,
+" ...TabSwitchBufs will be enabled and ...TabSwitchWindows
+" will not.
+"
+" As of MBE 6.3.0, you can put the following into your .vimrc:
+"
+" let g:miniBufExplUseSingleClick = 1
+"
+" If you would like to single click on tabs rather than double
+" clicking on them to goto the selected buffer.
+"
+" NOTE: If you use the single click option in taglist.vim you may
+" need to get an updated version that includes a patch I
+" provided to allow both explorers to provide single click
+" buffer selection.
+"
+" It is possible to customize the the highlighting for the tabs in
+" the MBE by configuring the following highlighting groups:
+"
+" MBENormal - for buffers that have NOT CHANGED and
+" are NOT VISIBLE.
+" MBEChanged - for buffers that HAVE CHANGED and are
+" NOT VISIBLE
+" MBEVisibleNormal - buffers that have NOT CHANGED and are
+" VISIBLE
+" MBEVisibleChanged - buffers that have CHANGED and are VISIBLE
+"
+" You can either link to an existing highlighting group by
+" adding a command like:
+"
+" hi link MBEVisibleChanged Error
+"
+" to your .vimrc or you can specify exact foreground and background
+" colors using the following syntax:
+"
+" hi MBEChanged guibg=darkblue ctermbg=darkblue termbg=white
+"
+" NOTE: If you set a colorscheme in your .vimrc you should do it
+" BEFORE updating the MBE highlighting groups.
+"
+" If you use other explorers like TagList you can (As of 6.2.8) put:
+"
+" let g:miniBufExplModSelTarget = 1
+"
+" into your .vimrc in order to force MBE to try to place selected
+" buffers into a window that does not have a nonmodifiable buffer.
+" The upshot of this should be that if you go into MBE and select
+" a buffer, the buffer should not show up in a window that is
+" hosting an explorer.
+"
+" There is a VIM bug that can cause buffers to show up without
+" their highlighting. The following setting will cause MBE to
+" try and turn highlighting back on (introduced in 6.3.1):
+"
+" let g:miniBufExplForceSyntaxEnable = 1
+"
+" MBE has had a basic debugging capability for quite some time.
+" However, it has not been very friendly in the past. As of 6.0.8,
+" you can put one of each of the following into your .vimrc:
+"
+" let g:miniBufExplorerDebugLevel = 0 " MBE serious errors output
+" let g:miniBufExplorerDebugLevel = 4 " MBE all errors output
+" let g:miniBufExplorerDebugLevel = 10 " MBE reports everything
+"
+" You can also set a DebugMode to cause output to be target as
+" follows (default is mode 3):
+"
+" let g:miniBufExplorerDebugMode = 0 " Errors will show up in
+" " a vim window
+" let g:miniBufExplorerDebugMode = 1 " Uses VIM's echo function
+" " to display on the screen
+" let g:miniBufExplorerDebugMode = 2 " Writes to a file
+" " MiniBufExplorer.DBG
+" let g:miniBufExplorerDebugMode = 3 " Store output in global:
+" " g:miniBufExplorerDebugOutput
+"
+" Or if you are able to start VIM, you might just perform these
+" at a command prompt right before you do the operation that is
+" failing.
+"
+" History: Moved to end of file
+"
+" Known Issues: When debugging is turned on and set to output to a window, there
+" are some cases where the window is opened more than once, there
+" are other cases where an old debug window can be lost.
+"
+" Several MBE commands can break the window history so <C-W>[pnw]
+" might not take you to the expected window.
+"
+" Todo: Add the ability to specify a regexp for eligible buffers
+" allowing the ability to filter out certain buffers that
+" you don't want to control from MBE
+"
+"=============================================================================
+" }}}
+
+" Startup Check
+"
+" Has this plugin already been loaded? {{{
+"
+if exists('loaded_minibufexplorer')
+ finish
+endif
+let loaded_minibufexplorer = 1
+" }}}
+
+" Mappings and Commands
+"
+" MBE Keyboard Mappings {{{
+" If we don't already have keyboard mappings for MBE then create them
+"
+if !hasmapto('<Plug>MiniBufExplorer')
+ map <unique> <Leader>mbe <Plug>MiniBufExplorer
+endif
+if !hasmapto('<Plug>CMiniBufExplorer')
+ map <unique> <Leader>mbc <Plug>CMiniBufExplorer
+endif
+if !hasmapto('<Plug>UMiniBufExplorer')
+ map <unique> <Leader>mbu <Plug>UMiniBufExplorer
+endif
+if !hasmapto('<Plug>TMiniBufExplorer')
+ map <unique> <Leader>mbt <Plug>TMiniBufExplorer
+endif
+
+" }}}
+" MBE <Script> internal map {{{
+"
+noremap <unique> <script> <Plug>MiniBufExplorer :call <SID>StartExplorer(1, -1)<CR>:<BS>
+noremap <unique> <script> <Plug>CMiniBufExplorer :call <SID>StopExplorer(1)<CR>:<BS>
+noremap <unique> <script> <Plug>UMiniBufExplorer :call <SID>AutoUpdate(-1)<CR>:<BS>
+noremap <unique> <script> <Plug>TMiniBufExplorer :call <SID>ToggleExplorer()<CR>:<BS>
+
+" }}}
+" MBE commands {{{
+"
+if !exists(':MiniBufExplorer')
+ command! MiniBufExplorer call <SID>StartExplorer(1, -1)
+endif
+if !exists(':CMiniBufExplorer')
+ command! CMiniBufExplorer call <SID>StopExplorer(1)
+endif
+if !exists(':UMiniBufExplorer')
+ command! UMiniBufExplorer call <SID>AutoUpdate(-1)
+endif
+if !exists(':TMiniBufExplorer')
+ command! TMiniBufExplorer call <SID>ToggleExplorer()
+endif
+if !exists(':MBEbn')
+ command! MBEbn call <SID>CycleBuffer(1)
+endif
+if !exists(':MBEbp')
+ command! MBEbp call <SID>CycleBuffer(0)
+endif " }}}
+
+" Global Configuration Variables
+"
+" Debug Level {{{
+"
+" 0 = no logging
+" 1=5 = errors ; 1 is the most important
+" 5-9 = info ; 5 is the most important
+" 10 = Entry/Exit
+if !exists('g:miniBufExplorerDebugLevel')
+ let g:miniBufExplorerDebugLevel = 0
+endif
+
+" }}}
+" Debug Mode {{{
+"
+" 0 = debug to a window
+" 1 = use vim's echo facility
+" 2 = write to a file named MiniBufExplorer.DBG
+" in the directory where vim was started
+" THIS IS VERY SLOW
+" 3 = Write into g:miniBufExplorerDebugOutput
+" global variable [This is the default]
+if !exists('g:miniBufExplorerDebugMode')
+ let g:miniBufExplorerDebugMode = 3
+endif
+
+" }}}
+" Allow auto update? {{{
+"
+" We start out with this off for startup, but once vim is running we
+" turn this on.
+if !exists('g:miniBufExplorerAutoUpdate')
+ let g:miniBufExplorerAutoUpdate = 0
+endif
+
+" }}}
+" MoreThanOne? {{{
+" Display Mini Buf Explorer when there are 'More Than One' eligible buffers
+"
+if !exists('g:miniBufExplorerMoreThanOne')
+ let g:miniBufExplorerMoreThanOne = 2
+endif
+
+" }}}
+" Split below/above/left/right? {{{
+" When opening a new -MiniBufExplorer- window, split the new windows below or
+" above the current window? 1 = below, 0 = above.
+"
+if !exists('g:miniBufExplSplitBelow')
+ let g:miniBufExplSplitBelow = &splitbelow
+endif
+
+" }}}
+" Split to edge? {{{
+" When opening a new -MiniBufExplorer- window, split the new windows to the
+" full edge? 1 = yes, 0 = no.
+"
+if !exists('g:miniBufExplSplitToEdge')
+ let g:miniBufExplSplitToEdge = 1
+endif
+
+" }}}
+" MaxHeight (depreciated) {{{
+" When sizing the -MiniBufExplorer- window, assign a maximum window height.
+" 0 = size to fit all buffers, otherwise the value is number of lines for
+" buffer. [Depreciated use g:miniBufExplMaxSize]
+"
+if !exists('g:miniBufExplMaxHeight')
+ let g:miniBufExplMaxHeight = 0
+endif
+
+" }}}
+" MaxSize {{{
+" Same as MaxHeight but also works for vertical splits if specified with a
+" vertical split then vertical resizing will be performed. If left at 0
+" then the number of columns in g:miniBufExplVSplit will be used as a
+" static window width.
+if !exists('g:miniBufExplMaxSize')
+ let g:miniBufExplMaxSize = g:miniBufExplMaxHeight
+endif
+
+" }}}
+" MinHeight (depreciated) {{{
+" When sizing the -MiniBufExplorer- window, assign a minumum window height.
+" the value is minimum number of lines for buffer. Setting this to zero can
+" cause strange height behavior. The default value is 1 [Depreciated use
+" g:miniBufExplMinSize]
+"
+if !exists('g:miniBufExplMinHeight')
+ let g:miniBufExplMinHeight = 1
+endif
+
+" }}}
+" MinSize {{{
+" Same as MinHeight but also works for vertical splits. For vertical splits,
+" this is ignored unless g:miniBufExplMax(Size|Height) are specified.
+if !exists('g:miniBufExplMinSize')
+ let g:miniBufExplMinSize = g:miniBufExplMinHeight
+endif
+
+" }}}
+" Horizontal or Vertical explorer? {{{
+" For folks that like vertical explorers, I'm caving in and providing for
+" veritcal splits. If this is set to 0 then the current horizontal
+" splitting logic will be run. If however you want a vertical split,
+" assign the width (in characters) you wish to assign to the MBE window.
+"
+if !exists('g:miniBufExplVSplit')
+ let g:miniBufExplVSplit = 0
+endif
+
+" }}}
+" TabWrap? {{{
+" By default line wrap is used (possibly breaking a tab name between two
+" lines.) Turning this option on (setting it to 1) can take more screen
+" space, but will make sure that each tab is on one and only one line.
+"
+if !exists('g:miniBufExplTabWrap')
+ let g:miniBufExplTabWrap = 0
+endif
+
+" }}}
+" Extended window navigation commands? {{{
+" Global flag to turn extended window navigation commands on or off
+" enabled = 1, dissabled = 0
+"
+if !exists('g:miniBufExplMapWindowNav')
+ " This is for backwards compatibility and may be removed in a
+ " later release, please use the ...NavVim and/or ...NavArrows
+ " settings.
+ let g:miniBufExplMapWindowNav = 0
+endif
+if !exists('g:miniBufExplMapWindowNavVim')
+ let g:miniBufExplMapWindowNavVim = 0
+endif
+if !exists('g:miniBufExplMapWindowNavArrows')
+ let g:miniBufExplMapWindowNavArrows = 0
+endif
+if !exists('g:miniBufExplMapCTabSwitchBufs')
+ let g:miniBufExplMapCTabSwitchBufs = 0
+endif
+" Notice: that if CTabSwitchBufs is turned on then
+" we turn off CTabSwitchWindows.
+if g:miniBufExplMapCTabSwitchBufs == 1 || !exists('g:miniBufExplMapCTabSwitchWindows')
+ let g:miniBufExplMapCTabSwitchWindows = 0
+endif
+
+"
+" If we have enabled control + vim direction key remapping
+" then perform the remapping
+"
+" Notice: I left g:miniBufExplMapWindowNav in for backward
+" compatibility. Eventually this mapping will be removed so
+" please use the newer g:miniBufExplMapWindowNavVim setting.
+if g:miniBufExplMapWindowNavVim || g:miniBufExplMapWindowNav
+ noremap <C-J> <C-W>j
+ noremap <C-K> <C-W>k
+ noremap <C-H> <C-W>h
+ noremap <C-L> <C-W>l
+endif
+
+"
+" If we have enabled control + arrow key remapping
+" then perform the remapping
+"
+if g:miniBufExplMapWindowNavArrows
+ noremap <C-Down> <C-W>j
+ noremap <C-Up> <C-W>k
+ noremap <C-Left> <C-W>h
+ noremap <C-Right> <C-W>l
+endif
+
+" If we have enabled <C-TAB> and <C-S-TAB> to switch buffers
+" in the current window then perform the remapping
+"
+if g:miniBufExplMapCTabSwitchBufs
+ noremap <C-TAB> :call <SID>CycleBuffer(1)<CR>:<BS>
+ noremap <C-S-TAB> :call <SID>CycleBuffer(0)<CR>:<BS>
+endif
+
+"
+" If we have enabled <C-TAB> and <C-S-TAB> to switch windows
+" then perform the remapping
+"
+if g:miniBufExplMapCTabSwitchWindows
+ noremap <C-TAB> <C-W>w
+ noremap <C-S-TAB> <C-W>W
+endif
+
+" }}}
+" Modifiable Select Target {{{
+"
+if !exists('g:miniBufExplModSelTarget')
+ let g:miniBufExplModSelTarget = 0
+endif
+
+"}}}
+" Force Syntax Enable {{{
+"
+if !exists('g:miniBufExplForceSyntaxEnable')
+ let g:miniBufExplForceSyntaxEnable = 0
+endif
+
+" }}}
+" Single/Double Click? {{{
+" flag that can be set to 1 in a users .vimrc to allow
+" single click switching of tabs. By default we use
+" double click for tab selection.
+"
+if !exists('g:miniBufExplUseSingleClick')
+ let g:miniBufExplUseSingleClick = 0
+endif
+
+"
+" attempt to perform single click mapping, it would be much
+" nicer if we could nnoremap <buffer> ... however vim does
+" not fire the <buffer> <leftmouse> when you use the mouse
+" to enter a buffer.
+"
+if g:miniBufExplUseSingleClick == 1
+ let s:clickmap = ':if bufname("%") == "-MiniBufExplorer-" <bar> call <SID>MBEClick() <bar> endif <CR>'
+ if maparg('<LEFTMOUSE>', 'n') == ''
+ " no mapping for leftmouse
+ exec ':nnoremap <silent> <LEFTMOUSE> <LEFTMOUSE>' . s:clickmap
+ else
+ " we have a mapping
+ let g:miniBufExplDoneClickSave = 1
+ let s:m = ':nnoremap <silent> <LEFTMOUSE> <LEFTMOUSE>'
+ let s:m = s:m . substitute(substitute(maparg('<LEFTMOUSE>', 'n'), '|', '<bar>', 'g'), '\c^<LEFTMOUSE>', '', '')
+ let s:m = s:m . s:clickmap
+ exec s:m
+ endif
+endif " }}}
+
+" Variables used internally
+"
+" Script/Global variables {{{
+" Global used to store the buffer list so we don't update the
+" UI unless the list has changed.
+if !exists('g:miniBufExplBufList')
+ let g:miniBufExplBufList = ''
+endif
+
+" Variable used as a mutex so that we don't do lots
+" of AutoUpdates at the same time.
+if !exists('g:miniBufExplInAutoUpdate')
+ let g:miniBufExplInAutoUpdate = 0
+endif
+
+" In debug mode 3 this variable will hold the debug output
+if !exists('g:miniBufExplorerDebugOutput')
+ let g:miniBufExplorerDebugOutput = ''
+endif
+
+" In debug mode 3 this variable will hold the debug output
+if !exists('g:miniBufExplForceDisplay')
+ let g:miniBufExplForceDisplay = 0
+endif
+
+" Variable used to pass maxTabWidth info between functions
+let s:maxTabWidth = 0
+
+" Variable used to count debug output lines
+let s:debugIndex = 0
+
+
+" }}}
+" Setup an autocommand group and some autocommands {{{
+" that keep our explorer updated automatically.
+"
+augroup MiniBufExplorer
+autocmd MiniBufExplorer BufDelete * call <SID>DEBUG('-=> BufDelete AutoCmd', 10) |call <SID>AutoUpdate(expand('<abuf>'))
+autocmd MiniBufExplorer BufEnter * call <SID>DEBUG('-=> BufEnter AutoCmd', 10) |call <SID>AutoUpdate(-1)
+autocmd MiniBufExplorer VimEnter * call <SID>DEBUG('-=> VimEnter AutoCmd', 10) |let g:miniBufExplorerAutoUpdate = 1 |call <SID>AutoUpdate(-1)
+" }}}
+
+" Functions
+"
+" StartExplorer - Sets up our explorer and causes it to be displayed {{{
+"
+function! <SID>StartExplorer(sticky, delBufNum)
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering StartExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ if a:sticky == 1
+ let g:miniBufExplorerAutoUpdate = 1
+ endif
+
+ " Store the current buffer
+ let l:curBuf = bufnr('%')
+
+ " Prevent a report of our actions from showing up.
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+ call <SID>FindCreateWindow('-MiniBufExplorer-', -1, 1, 1)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('StartExplorer called in invalid window',1)
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+ return
+ endif
+
+ " !!! We may want to make the following optional -- Bindu
+ " New windows don't cause all windows to be resized to equal sizes
+ set noequalalways
+ " !!! We may want to make the following optional -- Bindu
+ " We don't want the mouse to change focus without a click
+ set nomousefocus
+
+ " If folks turn numbering and columns on by default we will turn
+ " them off for the MBE window
+ setlocal foldcolumn=0
+ setlocal nonumber
+
+ if has("syntax")
+ syn clear
+ syn match MBENormal '\[[^\]]*\]'
+ syn match MBEChanged '\[[^\]]*\]+'
+ syn match MBEVisibleNormal '\[[^\]]*\]\*+\='
+ syn match MBEVisibleChanged '\[[^\]]*\]\*+'
+
+ if !exists("g:did_minibufexplorer_syntax_inits")
+ let g:did_minibufexplorer_syntax_inits = 1
+ hi def link MBENormal Comment
+ hi def link MBEChanged String
+ hi def link MBEVisibleNormal Special
+ hi def link MBEVisibleChanged Special
+ endif
+ endif
+
+ " If you press return in the -MiniBufExplorer- then try
+ " to open the selected buffer in the previous window.
+ nnoremap <buffer> <CR> :call <SID>MBESelectBuffer()<CR>:<BS>
+ " If you DoubleClick in the -MiniBufExplorer- then try
+ " to open the selected buffer in the previous window.
+ nnoremap <buffer> <2-LEFTMOUSE> :call <SID>MBEDoubleClick()<CR>:<BS>
+ " If you press d in the -MiniBufExplorer- then try to
+ " delete the selected buffer.
+ nnoremap <buffer> d :call <SID>MBEDeleteBuffer()<CR>:<BS>
+ " If you press w in the -MiniBufExplorer- then switch back
+ " to the previous window.
+ nnoremap <buffer> p :wincmd p<CR>:<BS>
+ " The following allow us to use regular movement keys to
+ " scroll in a wrapped single line buffer
+ nnoremap <buffer> j gj
+ nnoremap <buffer> k gk
+ nnoremap <buffer> <down> gj
+ nnoremap <buffer> <up> gk
+ " The following allows for quicker moving between buffer
+ " names in the [MBE] window it also saves the last-pattern
+ " and restores it.
+ nnoremap <buffer> <TAB> :call search('\[[0-9]*:[^\]]*\]')<CR>:<BS>
+ nnoremap <buffer> <S-TAB> :call search('\[[0-9]*:[^\]]*\]','b')<CR>:<BS>
+
+ call <SID>DisplayBuffers(a:delBufNum)
+
+ if (l:curBuf != -1)
+ call search('\['.l:curBuf.':'.expand('#'.l:curBuf.':t').'\]')
+ else
+ call <SID>DEBUG('No current buffer to search for',9)
+ endif
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed StartExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+endfunction
+
+" }}}
+" StopExplorer - Looks for our explorer and closes the window if it is open {{{
+"
+function! <SID>StopExplorer(sticky)
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering StopExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ if a:sticky == 1
+ let g:miniBufExplorerAutoUpdate = 0
+ endif
+
+ let l:winNum = <SID>FindWindow('-MiniBufExplorer-', 1)
+
+ if l:winNum != -1
+ exec l:winNum.' wincmd w'
+ silent! close
+ wincmd p
+ endif
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed StopExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+endfunction
+
+" }}}
+" ToggleExplorer - Looks for our explorer and opens/closes the window {{{
+"
+function! <SID>ToggleExplorer()
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering ToggleExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ let g:miniBufExplorerAutoUpdate = 0
+
+ let l:winNum = <SID>FindWindow('-MiniBufExplorer-', 1)
+
+ if l:winNum != -1
+ call <SID>StopExplorer(1)
+ else
+ call <SID>StartExplorer(1, -1)
+ wincmd p
+ endif
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed ToggleExplorer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+endfunction
+
+" }}}
+" FindWindow - Return the window number of a named buffer {{{
+" If none is found then returns -1.
+"
+function! <SID>FindWindow(bufName, doDebug)
+ if a:doDebug
+ call <SID>DEBUG('Entering FindWindow()',10)
+ endif
+
+ " Try to find an existing window that contains
+ " our buffer.
+ let l:bufNum = bufnr(a:bufName)
+ if l:bufNum != -1
+ if a:doDebug
+ call <SID>DEBUG('Found buffer ('.a:bufName.'): '.l:bufNum,9)
+ endif
+ let l:winNum = bufwinnr(l:bufNum)
+ else
+ let l:winNum = -1
+ endif
+
+ return l:winNum
+
+endfunction
+
+" }}}
+" FindCreateWindow - Attempts to find a window for a named buffer. {{{
+"
+" If it is found then moves there. Otherwise creates a new window and
+" configures it and moves there.
+"
+" forceEdge, -1 use defaults, 0 below, 1 above
+" isExplorer, 0 no, 1 yes
+" doDebug, 0 no, 1 yes
+"
+function! <SID>FindCreateWindow(bufName, forceEdge, isExplorer, doDebug)
+ if a:doDebug
+ call <SID>DEBUG('Entering FindCreateWindow('.a:bufName.')',10)
+ endif
+
+ " Save the user's split setting.
+ let l:saveSplitBelow = &splitbelow
+
+ " Set to our new values.
+ let &splitbelow = g:miniBufExplSplitBelow
+
+ " Try to find an existing explorer window
+ let l:winNum = <SID>FindWindow(a:bufName, a:doDebug)
+
+ " If found goto the existing window, otherwise
+ " split open a new window.
+ if l:winNum != -1
+ if a:doDebug
+ call <SID>DEBUG('Found window ('.a:bufName.'): '.l:winNum,9)
+ endif
+ exec l:winNum.' wincmd w'
+ let l:winFound = 1
+ else
+
+ if g:miniBufExplSplitToEdge == 1 || a:forceEdge >= 0
+
+ let l:edge = &splitbelow
+ if a:forceEdge >= 0
+ let l:edge = a:forceEdge
+ endif
+
+ if l:edge
+ if g:miniBufExplVSplit == 0
+ exec 'bo sp '.a:bufName
+ else
+ exec 'bo vsp '.a:bufName
+ endif
+ else
+ if g:miniBufExplVSplit == 0
+ exec 'to sp '.a:bufName
+ else
+ exec 'to vsp '.a:bufName
+ endif
+ endif
+ else
+ if g:miniBufExplVSplit == 0
+ exec 'sp '.a:bufName
+ else
+ " &splitbelow doesn't affect vertical splits
+ " so we have to do this explicitly.. ugh.
+ if &splitbelow
+ exec 'rightb vsp '.a:bufName
+ else
+ exec 'vsp '.a:bufName
+ endif
+ endif
+ endif
+
+ let g:miniBufExplForceDisplay = 1
+
+ " Try to find an existing explorer window
+ let l:winNum = <SID>FindWindow(a:bufName, a:doDebug)
+ if l:winNum != -1
+ if a:doDebug
+ call <SID>DEBUG('Created and then found window ('.a:bufName.'): '.l:winNum,9)
+ endif
+ exec l:winNum.' wincmd w'
+ else
+ if a:doDebug
+ call <SID>DEBUG('FindCreateWindow failed to create window ('.a:bufName.').',1)
+ endif
+ return
+ endif
+
+ if a:isExplorer
+ " Turn off the swapfile, set the buffer type so that it won't get written,
+ " and so that it will get deleted when it gets hidden and turn on word wrap.
+ setlocal noswapfile
+ setlocal buftype=nofile
+ setlocal bufhidden=delete
+ if g:miniBufExplVSplit == 0
+ setlocal wrap
+ else
+ setlocal nowrap
+ exec('setlocal winwidth='.g:miniBufExplMinSize)
+ endif
+ endif
+
+ if a:doDebug
+ call <SID>DEBUG('Window ('.a:bufName.') created: '.winnr(),9)
+ endif
+
+ endif
+
+ " Restore the user's split setting.
+ let &splitbelow = l:saveSplitBelow
+
+endfunction
+
+" }}}
+" DisplayBuffers - Wrapper for getting MBE window shown {{{
+"
+" Makes sure we are in our explorer, then erases the current buffer and turns
+" it into a mini buffer explorer window.
+"
+function! <SID>DisplayBuffers(delBufNum)
+ call <SID>DEBUG('Entering DisplayBuffers()',10)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('DisplayBuffers called in invalid window',1)
+ return
+ endif
+
+ " We need to be able to modify the buffer
+ setlocal modifiable
+
+ call <SID>ShowBuffers(a:delBufNum)
+ call <SID>ResizeWindow()
+
+ normal! zz
+
+ " Prevent the buffer from being modified.
+ setlocal nomodifiable
+ set nobuflisted
+
+endfunction
+
+" }}}
+" Resize Window - Set width/height of MBE window {{{
+"
+" Makes sure we are in our explorer, then sets the height/width for our explorer
+" window so that we can fit all of our information without taking extra lines.
+"
+function! <SID>ResizeWindow()
+ call <SID>DEBUG('Entering ResizeWindow()',10)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('ResizeWindow called in invalid window',1)
+ return
+ endif
+
+ let l:width = winwidth('.')
+
+ " Horizontal Resize
+ if g:miniBufExplVSplit == 0
+
+ if g:miniBufExplTabWrap == 0
+ let l:length = strlen(getline('.'))
+ let l:height = 0
+ if (l:width == 0)
+ let l:height = winheight('.')
+ else
+ let l:height = (l:length / l:width)
+ " handle truncation from div
+ if (l:length % l:width) != 0
+ let l:height = l:height + 1
+ endif
+ endif
+ else
+ exec("setlocal textwidth=".l:width)
+ normal gg
+ normal gq}
+ normal G
+ let l:height = line('.')
+ normal gg
+ endif
+
+ " enforce max window height
+ if g:miniBufExplMaxSize != 0
+ if g:miniBufExplMaxSize < l:height
+ let l:height = g:miniBufExplMaxSize
+ endif
+ endif
+
+ " enfore min window height
+ if l:height < g:miniBufExplMinSize || l:height == 0
+ let l:height = g:miniBufExplMinSize
+ endif
+
+ call <SID>DEBUG('ResizeWindow to '.l:height.' lines',9)
+
+ exec('resize '.l:height)
+
+ " Vertical Resize
+ else
+
+ if g:miniBufExplMaxSize != 0
+ let l:newWidth = s:maxTabWidth
+ if l:newWidth > g:miniBufExplMaxSize
+ let l:newWidth = g:miniBufExplMaxSize
+ endif
+ if l:newWidth < g:miniBufExplMinSize
+ let l:newWidth = g:miniBufExplMinSize
+ endif
+ else
+ let l:newWidth = g:miniBufExplVSplit
+ endif
+
+ if l:width != l:newWidth
+ call <SID>DEBUG('ResizeWindow to '.l:newWidth.' columns',9)
+ exec('vertical resize '.l:newWidth)
+ endif
+
+ endif
+
+endfunction
+
+" }}}
+" ShowBuffers - Clear current buffer and put the MBE text into it {{{
+"
+" Makes sure we are in our explorer, then adds a list of all modifiable
+" buffers to the current buffer. Special marks are added for buffers that
+" are in one or more windows (*) and buffers that have been modified (+)
+"
+function! <SID>ShowBuffers(delBufNum)
+ call <SID>DEBUG('Entering ShowBuffers()',10)
+
+ let l:ListChanged = <SID>BuildBufferList(a:delBufNum, 1)
+
+ if (l:ListChanged == 1 || g:miniBufExplForceDisplay)
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+ " Delete all lines in buffer.
+ 1,$d _
+
+ " Goto the end of the buffer put the buffer list
+ " and then delete the extra trailing blank line
+ $
+ put! =g:miniBufExplBufList
+ $ d _
+
+ let g:miniBufExplForceDisplay = 0
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+ else
+ call <SID>DEBUG('Buffer list not update since there was no change',9)
+ endif
+
+endfunction
+
+" }}}
+" Max - Returns the max of two numbers {{{
+"
+function! <SID>Max(argOne, argTwo)
+ if a:argOne > a:argTwo
+ return a:argOne
+ else
+ return a:argTwo
+ endif
+endfunction
+
+" }}}
+" BuildBufferList - Build the text for the MBE window {{{
+"
+" Creates the buffer list string and returns 1 if it is different than
+" last time this was called and 0 otherwise.
+"
+function! <SID>BuildBufferList(delBufNum, updateBufList)
+ call <SID>DEBUG('Entering BuildBufferList()',10)
+
+ let l:NBuffers = bufnr('$') " Get the number of the last buffer.
+ let l:i = 0 " Set the buffer index to zero.
+
+ let l:fileNames = ''
+ let l:maxTabWidth = 0
+
+ " Loop through every buffer less than the total number of buffers.
+ while(l:i <= l:NBuffers)
+ let l:i = l:i + 1
+
+ " If we have a delBufNum and it is the current
+ " buffer then ignore the current buffer.
+ " Otherwise, continue.
+ if (a:delBufNum == -1 || l:i != a:delBufNum)
+ " Make sure the buffer in question is listed.
+ if(getbufvar(l:i, '&buflisted') == 1)
+ " Get the name of the buffer.
+ let l:BufName = bufname(l:i)
+ " Check to see if the buffer is a blank or not. If the buffer does have
+ " a name, process it.
+ if(strlen(l:BufName))
+ " Only show modifiable buffers (The idea is that we don't
+ " want to show Explorers)
+ if (getbufvar(l:i, '&modifiable') == 1 && BufName != '-MiniBufExplorer-')
+
+ " Get filename & Remove []'s & ()'s
+ let l:shortBufName = fnamemodify(l:BufName, ":t")
+ let l:shortBufName = substitute(l:shortBufName, '[][()]', '', 'g')
+ let l:tab = '['.l:i.':'.l:shortBufName.']'
+
+ " If the buffer is open in a window mark it
+ if bufwinnr(l:i) != -1
+ let l:tab = l:tab . '*'
+ endif
+
+ " If the buffer is modified then mark it
+ if(getbufvar(l:i, '&modified') == 1)
+ let l:tab = l:tab . '+'
+ endif
+
+ let l:maxTabWidth = <SID>Max(strlen(l:tab), l:maxTabWidth)
+ let l:fileNames = l:fileNames.l:tab
+
+ " If horizontal and tab wrap is turned on we need to add spaces
+ if g:miniBufExplVSplit == 0
+ if g:miniBufExplTabWrap != 0
+ let l:fileNames = l:fileNames.' '
+ endif
+ " If not horizontal we need a newline
+ else
+ let l:fileNames = l:fileNames . "\n"
+ endif
+ endif
+ endif
+ endif
+ endif
+ endwhile
+
+ if (g:miniBufExplBufList != l:fileNames)
+ if (a:updateBufList)
+ let g:miniBufExplBufList = l:fileNames
+ let s:maxTabWidth = l:maxTabWidth
+ endif
+ return 1
+ else
+ return 0
+ endif
+
+endfunction
+
+" }}}
+" HasEligibleBuffers - Are there enough MBE eligible buffers to open the MBE window? {{{
+"
+" Returns 1 if there are any buffers that can be displayed in a
+" mini buffer explorer. Otherwise returns 0. If delBufNum is
+" any non -1 value then don't include that buffer in the list
+" of eligible buffers.
+"
+function! <SID>HasEligibleBuffers(delBufNum)
+ call <SID>DEBUG('Entering HasEligibleBuffers()',10)
+
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+ let l:NBuffers = bufnr('$') " Get the number of the last buffer.
+ let l:i = 0 " Set the buffer index to zero.
+ let l:found = 0 " No buffer found
+
+ if (g:miniBufExplorerMoreThanOne > 1)
+ call <SID>DEBUG('More Than One mode turned on',6)
+ endif
+ let l:needed = g:miniBufExplorerMoreThanOne
+
+ " Loop through every buffer less than the total number of buffers.
+ while(l:i <= l:NBuffers && l:found < l:needed)
+ let l:i = l:i + 1
+
+ " If we have a delBufNum and it is the current
+ " buffer then ignore the current buffer.
+ " Otherwise, continue.
+ if (a:delBufNum == -1 || l:i != a:delBufNum)
+ " Make sure the buffer in question is listed.
+ if (getbufvar(l:i, '&buflisted') == 1)
+ " Get the name of the buffer.
+ let l:BufName = bufname(l:i)
+ " Check to see if the buffer is a blank or not. If the buffer does have
+ " a name, process it.
+ if (strlen(l:BufName))
+ " Only show modifiable buffers (The idea is that we don't
+ " want to show Explorers)
+ if ((getbufvar(l:i, '&modifiable') == 1) && (BufName != '-MiniBufExplorer-'))
+
+ let l:found = l:found + 1
+
+ endif
+ endif
+ endif
+ endif
+ endwhile
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+
+ call <SID>DEBUG('HasEligibleBuffers found '.l:found.' eligible buffers of '.l:needed.' needed',6)
+
+ return (l:found >= l:needed)
+
+endfunction
+
+" }}}
+" Auto Update - Function called by auto commands for auto updating the MBE {{{
+"
+" IF auto update is turned on AND
+" we are in a real buffer AND
+" we have enough eligible buffers THEN
+" Update our explorer and get back to the current window
+"
+" If we get a buffer number for a buffer that
+" is being deleted, we need to make sure and
+" remove the buffer from the list of eligible
+" buffers in case we are down to one eligible
+" buffer, in which case we will want to close
+" the MBE window.
+"
+function! <SID>AutoUpdate(delBufNum)
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering AutoUpdate('.a:delBufNum.') : '.bufnr('%').' : '.bufname('%'),10)
+ call <SID>DEBUG('===========================',10)
+
+ if (g:miniBufExplInAutoUpdate == 1)
+ call <SID>DEBUG('AutoUpdate recursion stopped',9)
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Terminated AutoUpdate()' ,10)
+ call <SID>DEBUG('===========================',10)
+ return
+ else
+ let g:miniBufExplInAutoUpdate = 1
+ endif
+
+ " Don't bother autoupdating the MBE window
+ if (bufname('%') == '-MiniBufExplorer-')
+ " If this is the only buffer left then toggle the buffer
+ if (winbufnr(2) == -1)
+ call <SID>CycleBuffer(1)
+ call <SID>DEBUG('AutoUpdate does not run for cycled windows', 9)
+ else
+ call <SID>DEBUG('AutoUpdate does not run for the MBE window', 9)
+ endif
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Terminated AutoUpdate()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ let g:miniBufExplInAutoUpdate = 0
+ return
+
+ endif
+
+ if (a:delBufNum != -1)
+ call <SID>DEBUG('AutoUpdate will make sure that buffer '.a:delBufNum.' is not included in the buffer list.', 5)
+ endif
+
+ " Only allow updates when the AutoUpdate flag is set
+ " this allows us to stop updates on startup.
+ if g:miniBufExplorerAutoUpdate == 1
+ " Only show MiniBufExplorer if we have a real buffer
+ if ((g:miniBufExplorerMoreThanOne == 0) || (bufnr('%') != -1 && bufname('%') != ""))
+ if <SID>HasEligibleBuffers(a:delBufNum) == 1
+ " if we don't have a window then create one
+ let l:bufnr = <SID>FindWindow('-MiniBufExplorer-', 0)
+ if (l:bufnr == -1)
+ call <SID>DEBUG('About to call StartExplorer (Create MBE)', 9)
+ call <SID>StartExplorer(0, a:delBufNum)
+ else
+ " otherwise only update the window if the contents have
+ " changed
+ let l:ListChanged = <SID>BuildBufferList(a:delBufNum, 0)
+ if (l:ListChanged)
+ call <SID>DEBUG('About to call StartExplorer (Update MBE)', 9)
+ call <SID>StartExplorer(0, a:delBufNum)
+ endif
+ endif
+
+ " go back to the working buffer
+ if (bufname('%') == '-MiniBufExplorer-')
+ wincmd p
+ endif
+ else
+ call <SID>DEBUG('Failed in eligible check', 9)
+ call <SID>StopExplorer(0)
+ endif
+
+ " VIM sometimes turns syntax highlighting off,
+ " we can force it on, but this may cause weird
+ " behavior so this is an optional hack to force
+ " syntax back on when we enter a buffer
+ if g:miniBufExplForceSyntaxEnable
+ call <SID>DEBUG('Enable Syntax', 9)
+ exec 'syntax enable'
+ endif
+
+ else
+ call <SID>DEBUG('No buffers loaded...',9)
+ endif
+ else
+ call <SID>DEBUG('AutoUpdates are turned off, terminating',9)
+ endif
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed AutoUpdate()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ let g:miniBufExplInAutoUpdate = 0
+
+endfunction
+
+" }}}
+" GetSelectedBuffer - From the MBE window, return the bufnum for buf under cursor {{{
+"
+" If we are in our explorer window then return the buffer number
+" for the buffer under the cursor.
+"
+function! <SID>GetSelectedBuffer()
+ call <SID>DEBUG('Entering GetSelectedBuffer()',10)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('GetSelectedBuffer called in invalid window',1)
+ return -1
+ endif
+
+ let l:save_reg = @"
+ let @" = ""
+ normal ""yi[
+ if @" != ""
+ let l:retv = substitute(@",'\([0-9]*\):.*', '\1', '') + 0
+ let @" = l:save_reg
+ return l:retv
+ else
+ let @" = l:save_reg
+ return -1
+ endif
+
+endfunction
+
+" }}}
+" MBESelectBuffer - From the MBE window, open buffer under the cursor {{{
+"
+" If we are in our explorer, then we attempt to open the buffer under the
+" cursor in the previous window.
+"
+function! <SID>MBESelectBuffer()
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering MBESelectBuffer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('MBESelectBuffer called in invalid window',1)
+ return
+ endif
+
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+ let l:bufnr = <SID>GetSelectedBuffer()
+ let l:resize = 0
+
+ if(l:bufnr != -1) " If the buffer exists.
+
+ let l:saveAutoUpdate = g:miniBufExplorerAutoUpdate
+ let g:miniBufExplorerAutoUpdate = 0
+ " Switch to the previous window
+ wincmd p
+
+ " If we are in the buffer explorer or in a nonmodifiable buffer with
+ " g:miniBufExplModSelTarget set then try another window (a few times)
+ if bufname('%') == '-MiniBufExplorer-' || (g:miniBufExplModSelTarget == 1 && getbufvar(bufnr('%'), '&modifiable') == 0)
+ wincmd w
+ if bufname('%') == '-MiniBufExplorer-' || (g:miniBufExplModSelTarget == 1 && getbufvar(bufnr('%'), '&modifiable') == 0)
+ wincmd w
+ if bufname('%') == '-MiniBufExplorer-' || (g:miniBufExplModSelTarget == 1 && getbufvar(bufnr('%'), '&modifiable') == 0)
+ wincmd w
+ " The following handles the case where -MiniBufExplorer-
+ " is the only window left. We need to resize so we don't
+ " end up with a 1 or two line buffer.
+ if bufname('%') == '-MiniBufExplorer-'
+ let l:resize = 1
+ endif
+ endif
+ endif
+ endif
+
+ exec('b! '.l:bufnr)
+ if (l:resize)
+ resize
+ endif
+ let g:miniBufExplorerAutoUpdate = l:saveAutoUpdate
+ call <SID>AutoUpdate(-1)
+
+ endif
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed MBESelectBuffer()',10)
+ call <SID>DEBUG('===========================',10)
+
+endfunction
+
+" }}}
+" MBEDeleteBuffer - From the MBE window, delete selected buffer from list {{{
+"
+" After making sure that we are in our explorer, This will delete the buffer
+" under the cursor. If the buffer under the cursor is being displayed in a
+" window, this routine will attempt to get different buffers into the
+" windows that will be affected so that windows don't get removed.
+"
+function! <SID>MBEDeleteBuffer()
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Entering MBEDeleteBuffer()' ,10)
+ call <SID>DEBUG('===========================',10)
+
+ " Make sure we are in our window
+ if bufname('%') != '-MiniBufExplorer-'
+ call <SID>DEBUG('MBEDeleteBuffer called in invalid window',1)
+ return
+ endif
+
+ let l:curLine = line('.')
+ let l:curCol = virtcol('.')
+ let l:selBuf = <SID>GetSelectedBuffer()
+ let l:selBufName = bufname(l:selBuf)
+
+ if l:selBufName == 'MiniBufExplorer.DBG' && g:miniBufExplorerDebugLevel > 0
+ call <SID>DEBUG('MBEDeleteBuffer will not delete the debug window, when debugging is turned on.',1)
+ return
+ endif
+
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+
+ if l:selBuf != -1
+
+ " Don't want auto updates while we are processing a delete
+ " request.
+ let l:saveAutoUpdate = g:miniBufExplorerAutoUpdate
+ let g:miniBufExplorerAutoUpdate = 0
+
+ " Save previous window so that if we show a buffer after
+ " deleting. The show will come up in the correct window.
+ wincmd p
+ let l:prevWin = winnr()
+ let l:prevWinBuf = winbufnr(winnr())
+
+ call <SID>DEBUG('Previous window: '.l:prevWin.' buffer in window: '.l:prevWinBuf,5)
+ call <SID>DEBUG('Selected buffer is <'.l:selBufName.'>['.l:selBuf.']',5)
+
+ " If buffer is being displayed in a window then
+ " move window to a different buffer before
+ " deleting this one.
+ let l:winNum = (bufwinnr(l:selBufName) + 0)
+ " while we have windows that contain our buffer
+ while l:winNum != -1
+ call <SID>DEBUG('Buffer '.l:selBuf.' is being displayed in window: '.l:winNum,5)
+
+ " move to window that contains our selected buffer
+ exec l:winNum.' wincmd w'
+
+ call <SID>DEBUG('We are now in window: '.winnr().' which contains buffer: '.bufnr('%').' and should contain buffer: '.l:selBuf,5)
+
+ let l:origBuf = bufnr('%')
+ call <SID>CycleBuffer(1)
+ let l:curBuf = bufnr('%')
+
+ call <SID>DEBUG('Window now contains buffer: '.bufnr('%').' which should not be: '.l:selBuf,5)
+
+ if l:origBuf == l:curBuf
+ " we wrapped so we are going to have to delete a buffer
+ " that is in an open window.
+ let l:winNum = -1
+ else
+ " see if we have anymore windows with our selected buffer
+ let l:winNum = (bufwinnr(l:selBufName) + 0)
+ endif
+ endwhile
+
+ " Attempt to restore previous window
+ call <SID>DEBUG('Restoring previous window to: '.l:prevWin,5)
+ exec l:prevWin.' wincmd w'
+
+ " Try to get back to the -MiniBufExplorer- window
+ let l:winNum = bufwinnr(bufnr('-MiniBufExplorer-'))
+ if l:winNum != -1
+ exec l:winNum.' wincmd w'
+ call <SID>DEBUG('Got to -MiniBufExplorer- window: '.winnr(),5)
+ else
+ call <SID>DEBUG('Unable to get to -MiniBufExplorer- window',1)
+ endif
+
+ " Delete the buffer selected.
+ call <SID>DEBUG('About to delete buffer: '.l:selBuf,5)
+ exec('silent! bd '.l:selBuf)
+
+ let g:miniBufExplorerAutoUpdate = l:saveAutoUpdate
+ call <SID>DisplayBuffers(-1)
+ call cursor(l:curLine, l:curCol)
+
+ endif
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+
+ call <SID>DEBUG('===========================',10)
+ call <SID>DEBUG('Completed MBEDeleteBuffer()',10)
+ call <SID>DEBUG('===========================',10)
+
+endfunction
+
+" }}}
+" MBEClick - Handle mouse double click {{{
+"
+function! s:MBEClick()
+ call <SID>DEBUG('Entering MBEClick()',10)
+ call <SID>MBESelectBuffer()
+endfunction
+
+"
+" MBEDoubleClick - Double click with the mouse.
+"
+function! s:MBEDoubleClick()
+ call <SID>DEBUG('Entering MBEDoubleClick()',10)
+ call <SID>MBESelectBuffer()
+endfunction
+
+" }}}
+" CycleBuffer - Cycle Through Buffers {{{
+"
+" Move to next or previous buffer in the current window. If there
+" are no more modifiable buffers then stay on the current buffer.
+" can be called with no parameters in which case the buffers are
+" cycled forward. Otherwise a single argument is accepted, if
+" it's 0 then the buffers are cycled backwards, otherwise they
+" are cycled forward.
+"
+function! <SID>CycleBuffer(forward)
+
+ " The following hack handles the case where we only have one
+ " window open and it is too small
+ let l:saveAutoUpdate = g:miniBufExplorerAutoUpdate
+ if (winbufnr(2) == -1)
+ resize
+ let g:miniBufExplorerAutoUpdate = 0
+ endif
+
+ " Change buffer (keeping track of before and after buffers)
+ let l:origBuf = bufnr('%')
+ if (a:forward == 1)
+ bn!
+ else
+ bp!
+ endif
+ let l:curBuf = bufnr('%')
+
+ " Skip any non-modifiable buffers, but don't cycle forever
+ " This should stop us from stopping in any of the [Explorers]
+ while getbufvar(l:curBuf, '&modifiable') == 0 && l:origBuf != l:curBuf
+ if (a:forward == 1)
+ bn!
+ else
+ bp!
+ endif
+ let l:curBuf = bufnr('%')
+ endwhile
+
+ let g:miniBufExplorerAutoUpdate = l:saveAutoUpdate
+ if (l:saveAutoUpdate == 1)
+ call <SID>AutoUpdate(-1)
+ endif
+
+endfunction
+
+" }}}
+" DEBUG - Display debug output when debugging is turned on {{{
+"
+" Thanks to Charles E. Campbell, Jr. PhD <cec@NgrOyphSon.gPsfAc.nMasa.gov>
+" for Decho.vim which was the inspiration for this enhanced debugging
+" capability.
+"
+function! <SID>DEBUG(msg, level)
+
+ if g:miniBufExplorerDebugLevel >= a:level
+
+ " Prevent a report of our actions from showing up.
+ let l:save_rep = &report
+ let l:save_sc = &showcmd
+ let &report = 10000
+ set noshowcmd
+
+ " Debug output to a buffer
+ if g:miniBufExplorerDebugMode == 0
+ " Save the current window number so we can come back here
+ let l:prevWin = winnr()
+ wincmd p
+ let l:prevPrevWin = winnr()
+ wincmd p
+
+ " Get into the debug window or create it if needed
+ call <SID>FindCreateWindow('MiniBufExplorer.DBG', 1, 0, 0)
+
+ " Make sure we really got to our window, if not we
+ " will display a confirm dialog and turn debugging
+ " off so that we won't break things even more.
+ if bufname('%') != 'MiniBufExplorer.DBG'
+ call confirm('Error in window debugging code. Dissabling MiniBufExplorer debugging.', 'OK')
+ let g:miniBufExplorerDebugLevel = 0
+ endif
+
+ " Write Message to DBG buffer
+ let res=append("$",s:debugIndex.':'.a:level.':'.a:msg)
+ norm G
+ "set nomodified
+
+ " Return to original window
+ exec l:prevPrevWin.' wincmd w'
+ exec l:prevWin.' wincmd w'
+ " Debug output using VIM's echo facility
+ elseif g:miniBufExplorerDebugMode == 1
+ echo s:debugIndex.':'.a:level.':'.a:msg
+ " Debug output to a file -- VERY SLOW!!!
+ " should be OK on UNIX and Win32 (not the 95/98 variants)
+ elseif g:miniBufExplorerDebugMode == 2
+ if has('system') || has('fork')
+ if has('win32') && !has('win95')
+ let l:result = system("cmd /c 'echo ".s:debugIndex.':'.a:level.':'.a:msg." >> MiniBufExplorer.DBG'")
+ endif
+ if has('unix')
+ let l:result = system("echo '".s:debugIndex.':'.a:level.':'.a:msg." >> MiniBufExplorer.DBG'")
+ endif
+ else
+ call confirm('Error in file writing version of the debugging code, vim not compiled with system or fork. Dissabling MiniBufExplorer debugging.', 'OK')
+ let g:miniBufExplorerDebugLevel = 0
+ endif
+ elseif g:miniBufExplorerDebugMode == 3
+ let g:miniBufExplorerDebugOutput = g:miniBufExplorerDebugOutput."\n".s:debugIndex.':'.a:level.':'.a:msg
+ endif
+ let s:debugIndex = s:debugIndex + 1
+
+ let &report = l:save_rep
+ let &showcmd = l:save_sc
+
+ endif
+
+endfunc " }}}
+
+" MBE Script History {{{
+"=============================================================================
+"
+" History: 6.3.2 o For some reason there was still a call to StopExplorer
+" with 2 params. Very old bug. I know I fixed before,
+" any way many thanks to Jason Mills for reporting this!
+" 6.3.1 o Include folds in source so that it's easier to
+" navigate.
+" o Added g:miniBufExplForceSyntaxEnable setting for folks
+" that want a :syntax enable to be called when we enter
+" buffers. This can resolve issues caused by a vim bug
+" where buffers show up without highlighting when another
+" buffer has been closed, quit, wiped or deleted.
+" 6.3.0 o Added an option to allow single click (rather than
+" the default double click) to select buffers in the
+" MBE window. This feature was requested by AW Law
+" and was inspired by taglist.vim. Note that you will
+" need the latest version of taglist.vim if you want to
+" use MBE and taglist both with singleclick turned on.
+" Also thanks to AW Law for pointing out that you can
+" make an Explorer not be listed in a standard :ls.
+" o Added the ability to have your tabs show up in a
+" vertical window rather than the standard horizontal
+" one. Just let g:miniBufExplVSplit = <width> in your
+" .vimrc and your will get this functionality.
+" o If you use the vertical explorer and you want it to
+" autosize then let g:miniBufExplMaxSize = <max width>
+" in your .vimrc. You may use the MinSize letting in
+" addition to the MaxLetting if you don't want a super
+" thin window.
+" o g:miniBufExplMaxHeight was renamed g:miniBufExplMaxSize
+" g:miniBufExplMinHeight was renamed g:miniBufExplMinSize
+" the old settings are backwards compatible if you don't
+" use the new settings, but they are depreciated.
+" 6.2.8 o Add an option to stop MBE from targeting non-modifiable
+" buffers when switching buffers. Thanks to AW Law for
+" the inspiration for this. This may not work if a user
+" has lots of explorer/help windows open.
+" 6.2.7 o Very minor bug fix for people who want to set
+" loaded_minibufexplorer in their .vimrc in order to
+" stop MBE from loading. 99.99% of users do not need
+" this update.
+" 6.2.6 o Moved history to end of source file
+" o Updated highlighting documentation
+" o Created global commands MBEbn and MBEbp that can be
+" used in mappings if folks want to cycle buffers while
+" skipping non-eligible buffers.
+" 6.2.5 o Added <Leader>mbt key mapping which will toggle
+" the MBE window. I map this to F3 in my .vimrc
+" with "map <F3> :TMiniBufExplorer<CR>" which
+" means I can easily close the MBE window when I'm
+" not using it and get it back when I want it.
+" o Changed default debug mode to 3 (write to global
+" g:miniBufExplorerDebugOutput)
+" o Made a pass through the documentation to clarify
+" serveral issues and provide more complete docs
+" for mappings and commands.
+" 6.2.4 o Because of the autocommand switch (see 6.2.0) it
+" was possible to remove the restriction on the
+" :set hidden option. It is now possible to use
+" this option with MBE.
+" 6.2.3 o Added miniBufExplTabWrap option. It is turned
+" off by default. When turned on spaces are added
+" between tabs and gq} is issued to perform line
+" formatting. This won't work very well if filenames
+" contain spaces. It would be pretty easy to write
+" my own formatter, but I'm too lazy, so if someone
+" really needs that feature I'll add it :)
+" 6.2.2 o Changed the way the g:miniBufExplorerMoreThanOne
+" global is handled. You can set this to the number
+" of eligible buffers you want to be loaded before
+" the MBE window is loaded. Setting it to 0 causes
+" the MBE window to be opened even if there are no
+" buffers. Setting it to 4 causes the window to stay
+" closed until the 4th eligible buffer is loaded.
+" o Added a MinHeight option. This is nice if you want
+" the MBE window to always take the same amount of
+" space. For example set MaxSize and MinSize to 2
+" and set MoreThanOne to 0 and you will always have
+" a 2 row (plus the ruler :) MBE window.
+" NOTE: in 6.3.0 we started using MinSize instead of
+" Minheight. This will still work if MinSize is not
+" specified, but it is depreciated. Use MinSize instead.
+" o I now setlocal foldcomun=0 and nonumber in the MBE
+" window. This is for those of you that like to have
+" these options turned on locally. I'm assuming noone
+" outthere wants foldcolumns and line numbers in the
+" MBE window? :)
+" o Fixed a bug where an empty MBE window was taking half
+" of the screen (partly why the MinHeight option was
+" added.)
+" 6.2.1 o If MBE is the only window (because of :bd for example)
+" and there are still eligible buffers then one of them
+" will be displayed.
+" o The <Leader>mbe mapping now highlights the buffer from
+" the current window.
+" o The delete ('d') binding in the MBE window now restors
+" the cursor position, which can help if you want to
+" delete several buffers in a row that are not at the
+" beginning of the buffer list.
+" o Added a new key binding ('p') in the MBE window to
+" switch to the previous window (last edit window)
+" 6.2.0 o Major overhaul of autocommand and list updating code,
+" we now have much better handling of :bd (which is the
+" most requested feature.) As well as resolving other
+" issues where the buffer list would not be updated
+" automatically. The old version tried to trap specific
+" events, this one just updates frequently, but it keeps
+" track and only changes the screen if there has been
+" a change.
+" o Added g:miniBufExplMaxHeight variable so you can keep
+" the -MiniBufExplorer- window small when you have lots
+" of buffers (or buffers with long names :)
+" NOTE: in 6.3.0 we started using MaxSize instead of
+" MaxHeight. This will still work if MaxSize is not
+" specified, but it is depreciated. Use MaxSize instead.
+" o Improvement to internal syntax highlighting code
+" I renamed the syntax group names. Anyone who has
+" figured out how to use them already shouldn't have
+" any trouble with the new Nameing :)
+" o Added debug mode 3 which writes to a global variable
+" this is fast and doesn't mess with the buffer/window
+" lists.
+" 6.1.0 o <Leader>mbc was failing because I was calling one of
+" my own functions with the wrong number of args. :(
+" Thanks to Gerry Patterson for finding this!
+" This code is very stable (although it has some
+" idiocyncracies.)
+" 6.0.9 o Double clicking tabs was overwriting the cliboard
+" register on MS Windows. Thanks to Shoeb Bhinderwala
+" for reporting this issue.
+" 6.0.8 o Apparently some VIM builds are having a hard time with
+" line continuation in scripts so the few that were here
+" have been removed.
+" o Generalized FindExplorer and FindCreateExplorer so
+" that they can be used for the debug window. Renaming
+" to FindWindow and FindCreateWindow.
+" o Updated debugging code so that debug output is put into
+" a buffer which can then be written to disk or emailed
+" to me when someone is having a major issue. Can also
+" write directly to a file (VERY SLOWLY) on UNIX or Win32
+" (not 95 or 98 at the moment) or use VIM's echo function
+" to display the output to the screen.
+" o Several people have had issues when the hidden option
+" is turned on. So I have put in several checks to make
+" sure folks know this if they try to use MBE with this
+" option set.
+" 6.0.7 o Handling BufDelete autocmd so that the UI updates
+" properly when using :bd (rather than going through
+" the MBE UI.)
+" o The AutoUpdate code will now close the MBE window when
+" there is a single eligible buffer available.
+" This has the usefull side effect of stopping the MBE
+" window from blocking the VIM session open when you close
+" the last buffer.
+" o Added functions, commands and maps to close & update
+" the MBE window (<leader>mbc and <leader>mbu.)
+" o Made MBE open/close state be sticky if set through
+" StartExplorer(1) or StopExplorer(1), which are
+" called from the standard mappings. So if you close
+" the mbe window with \mbc it won't be automatically
+" opened again unless you do a \mbe (or restart VIM).
+" o Removed spaces between "tabs" (even more mini :)
+" o Simplified MBE tab processing
+" 6.0.6 o Fixed register overwrite bug found by Sébastien Pierre
+" 6.0.5 o Fixed an issue with window sizing when we run out of
+" buffers.
+" o Fixed some weird commenting bugs.
+" o Added more optional fancy window/buffer navigation:
+" o You can turn on the capability to use control and the
+" arrow keys to move between windows.
+" o You can turn on the ability to use <C-TAB> and
+" <C-S-TAB> to open the next and previous (respectively)
+" buffer in the current window.
+" o You can turn on the ability to use <C-TAB> and
+" <C-S-TAB> to switch windows (forward and backwards
+" respectively.)
+" 6.0.4 o Added optional fancy window navigation:
+" o Holding down control and pressing a vim direction
+" [hjkl] will switch windows in the indicated direction.
+" 6.0.3 o Changed buffer name to -MiniBufExplorer- to resolve
+" Issue in filename pattern matching on Windows.
+" 6.0.2 o 2 Changes requested by Suresh Govindachar:
+" o Added SplitToEdge option and set it on by default
+" o Added tab and shift-tab mappings in [MBE] window
+" 6.0.1 o Added MoreThanOne option and set it on by default
+" MiniBufExplorer will not automatically open until
+" more than one eligible buffers are opened. This
+" reduces cluter when you are only working on a
+" single file.
+" NOTE: See change log for 6.2.2 for more details about
+" this feature
+" 6.0.0 o Initial Release on November 20, 2001
+"
+"=============================================================================
+" }}}
+" vim:ft=vim:fdm=marker:ff=unix:nowrap:tabstop=4:shiftwidth=4:softtabstop=4:smarttab:shiftround:expandtab
diff --git a/.vim/plugin/openssl.vim b/.vim/plugin/openssl.vim
new file mode 100644
index 0000000..2e2db44
--- /dev/null
+++ b/.vim/plugin/openssl.vim
@@ -0,0 +1,201 @@
+" openssl.vim version 3.2 2008 Noah Spurrier <noah@noah.org>
+"
+" == Edit OpenSSL encrypted files and turn Vim into a Password Safe! ==
+"
+" This plugin enables reading and writing of files encrypted using OpenSSL.
+" The file must have the extension of one of the ciphers used by OpenSSL. For
+" example:
+"
+" .des3 .aes .bf .bfa .idea .cast .rc2 .rc4 .rc5 (.bfa is base64 ASCII
+" encoded blowfish.)
+"
+" This will turn off the swap file and the .viminfo log. The `openssl` command
+" line tool must be in the path.
+"
+" == Install ==
+"
+" Put this in your plugin directory and Vim will automatically load it:
+"
+" ~/.vim/plugin/openssl.vim
+"
+" You can start by editing an empty unencrypted file. Give it one of the
+" extensions above. When you write the file you will be asked to give it a new
+" password.
+"
+" == Simple Vim Password Safe ==
+"
+" If you edit any file named '.auth.bfa' (that's the full name, not just the
+" extension) then this plugin will add folding features and an automatic quit
+" timeout.
+"
+" Vim will quit automatically after 5 minutes of no typing activity (unless
+" the file has been changed).
+"
+" This plugin will fold on wiki-style headlines in the following format:
+"
+" == This is a headline ==
+"
+" Any notes under the headline will be inside the fold until the next headline
+" is reached. The SPACE key will toggle a fold open and closed. The q key will
+" quit Vim. Create the following example file named ~/.auth.bfa:
+"
+" == Colo server ==
+"
+" username: maryjane password: esydpm
+"
+" == Office server ==
+"
+" username: peter password: 4m4z1ng
+"
+" Then create this bash alias:
+"
+" alias auth='view ~/.auth.bfa'
+"
+" Now you can view your password safe by typing 'auth'. When Vim starts all
+" the password information will be hidden under the headlines. To view the
+" password information put the cursor on the headline and press SPACE. When
+" you write an encrypted file a backup will automatically be made.
+"
+" This plugin can also make a backup of an encrypted file before writing
+" changes. This helps guard against the situation where you may edit a file
+" and write changes with the wrong password. You can still go back to the
+" previous backup version. The backup file will have the same name as the
+" original file with .bak before the original extension. For example:
+"
+" .auth.bfa --> .auth.bak.bfa
+"
+" To turn on backups put the following global definition in your .vimrc file:
+"
+" let g:openssl_backup = 1
+"
+" Thanks to Tom Purl for the original des3 tip.
+"
+" I release all copyright claims. This code is in the public domain.
+" Permission is granted to use, copy modify, distribute, and sell this
+" software for any purpose. I make no guarantee about the suitability of this
+" software for any purpose and I am not liable for any damages resulting from
+" its use. Further, I am under no obligation to maintain or extend this
+" software. It is provided on an 'as is' basis without any expressed or
+" implied warranty.
+"
+" $Id: openssl.vim 189 2008-01-28 20:44:44Z root $
+
+augroup openssl_encrypted
+if exists("openssl_encrypted_loaded")
+ finish
+endif
+let openssl_encrypted_loaded = 1
+autocmd!
+
+function! s:OpenSSLReadPre()
+ set cmdheight=3
+ set viminfo=
+ set noswapfile
+ set shell=/bin/sh
+ set bin
+endfunction
+
+function! s:OpenSSLReadPost()
+ let l:cipher = expand("%:e")
+ if l:cipher == "aes"
+ let l:cipher = "aes-256-cbc"
+ endif
+ if l:cipher == "bfa"
+ let l:cipher = "bf"
+ let l:expr = "0,$!openssl " . l:cipher . " -d -a -salt"
+ else
+ let l:expr = "0,$!openssl " . l:cipher . " -d -salt"
+ endif
+
+ silent! execute l:expr
+ if v:shell_error
+ silent! 0,$y
+ silent! undo
+ echo "COULD NOT DECRYPT USING EXPRESSION: " . expr
+ echo "Note that your version of openssl may not have the given cipher engine built-in"
+ echo "even though the engine may be documented in the openssl man pages."
+ echo "ERROR FROM OPENSSL:"
+ echo @"
+ echo "COULD NOT DECRYPT"
+ return
+ endif
+ set nobin
+ set cmdheight&
+ set shell&
+ execute ":doautocmd BufReadPost ".expand("%:r")
+ redraw!
+endfunction
+
+function! s:OpenSSLWritePre()
+ set cmdheight=3
+ set shell=/bin/sh
+ set bin
+
+ if !exists("g:openssl_backup")
+ let g:openssl_backup=0
+ endif
+ if (g:openssl_backup)
+ silent! execute '!cp % %:r.bak.%:e'
+ endif
+
+ let l:cipher = expand("<afile>:e")
+ if l:cipher == "aes"
+ let l:cipher = "aes-256-cbc"
+ endif
+ if l:cipher == "bfa"
+ let l:cipher = "bf"
+ let l:expr = "0,$!openssl " . l:cipher . " -e -a -salt"
+ else
+ let l:expr = "0,$!openssl " . l:cipher . " -e -salt"
+ endif
+
+ silent! execute l:expr
+ if v:shell_error
+ silent! 0,$y
+ silent! undo
+ echo "COULD NOT ENCRYPT USING EXPRESSION: " . expr
+ echo "Note that your version of openssl may not have the given cipher engine built in"
+ echo "even though the engine may be documented in the openssl man pages."
+ echo "ERROR FROM OPENSSL:"
+ echo @"
+ echo "COULD NOT ENCRYPT"
+ return
+ endif
+endfunction
+
+function! s:OpenSSLWritePost()
+ silent! undo
+ set nobin
+ set shell&
+ set cmdheight&
+ redraw!
+endfunction
+
+autocmd BufReadPre,FileReadPre *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLReadPre()
+autocmd BufReadPost,FileReadPost *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLReadPost()
+autocmd BufWritePre,FileWritePre *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLWritePre()
+autocmd BufWritePost,FileWritePost *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLWritePost()
+
+" The following implements a simple password safe for any file named
+" '.auth.bfa'. The file is encrypted with Blowfish and base64 encoded.
+" Folding is supported for == headlines == style lines.
+
+function! HeadlineDelimiterExpression(lnum)
+ if a:lnum == 1
+ return ">1"
+ endif
+ return (getline(a:lnum)=~"^\\s*==.*==\\s*$") ? ">1" : "="
+endfunction
+autocmd BufReadPost,FileReadPost .auth.bfa set foldexpr=HeadlineDelimiterExpression(v:lnum)
+autocmd BufReadPost,FileReadPost .auth.bfa set foldlevel=0
+autocmd BufReadPost,FileReadPost .auth.bfa set foldcolumn=0
+autocmd BufReadPost,FileReadPost .auth.bfa set foldmethod=expr
+autocmd BufReadPost,FileReadPost .auth.bfa set foldtext=getline(v:foldstart)
+autocmd BufReadPost,FileReadPost .auth.bfa nnoremap <silent><space> :exe 'silent! normal! za'.(foldlevel('.')?'':'l')<CR>
+autocmd BufReadPost,FileReadPost .auth.bfa nnoremap <silent>q :q<CR>
+autocmd BufReadPost,FileReadPost .auth.bfa highlight Folded ctermbg=red ctermfg=black
+autocmd BufReadPost,FileReadPost .auth.bfa set updatetime=300000
+autocmd CursorHold .auth.bfa quit
+
+augroup END
+
diff --git a/.vim/plugin/remoteOpen.vim b/.vim/plugin/remoteOpen.vim
new file mode 100644
index 0000000..cb550ff
--- /dev/null
+++ b/.vim/plugin/remoteOpen.vim
@@ -0,0 +1,163 @@
+" File: remoteOpen.vim
+" Author: Srinath Avadhanula <srinath AT fastmail DOT fm>
+" $Id: remoteOpen.vim 997 2006-03-20 09:45:45Z srinathava $
+"
+" Description:
+" Often times, an external program needs to open a file in gvim from the
+" command line. However, it will not know if the file is already opened in a
+" previous vim session. It is not sufficient to simply specify
+"
+" gvim --remote-silent <filename>
+"
+" because this simply opens up <filename> in the first remote gvim session it
+" sees. This script provides a command RemoteOpen which is meant to be used
+" from the command line as follows:
+"
+" gvim -c ":RemoteOpen +<lnum> <filename>"
+"
+" where <lnum> is the line-number you wish <filename> to open to. What will
+" happen is that a new gvim will start up and enquire from all previous
+" sessions if <filename> is already open in any of them. If it is, then it
+" will edit the file in that session and bring it to the foreground and itself
+" quit. Otherwise, it will not quit and instead open up the file for editing
+" at <lnum>.
+"
+" This was mainly created to be used with Yap (the dvi previewer in miktex),
+" so you can specify the program for "inverse search" as specified above.
+" This ensures that the inverse search uses the correct gvim each time.
+"
+" Ofcourse, this requires vim with +clientserver. If not, then RemoteOpen just
+" opens in the present session.
+
+" Enclose <args> in single quotes so it can be passed as a function argument.
+com -nargs=1 RemoteOpen :call RemoteOpen('<args>')
+com -nargs=? RemoteInsert :call RemoteInsert('<args>')
+
+" RemoteOpen: open a file remotely (if possible) {{{
+" Description: checks all open vim windows to see if this file has been opened
+" anywhere and if so, opens it there instead of in this session.
+function! RemoteOpen(arglist)
+
+ " First construct line number and filename from argument. a:arglist is of
+ " the form:
+ " +10 c:\path\to\file
+ " or just
+ " c:\path\to\file
+ if a:arglist =~ '^\s*+\d\+'
+ let linenum = matchstr(a:arglist, '^\s*+\zs\d\+\ze')
+ let filename = matchstr(a:arglist, '^\s*+\d\+\s*\zs.*\ze')
+ else
+ let linenum = 1
+ let filename = matchstr(a:arglist, '^\s*\zs.*\ze')
+ endif
+ let filename = escape(filename, ' ')
+ call Tex_Debug("linenum = ".linenum.', filename = '.filename, "ropen")
+
+ " If there is no clientserver functionality, then just open in the present
+ " session and return
+ if !has('clientserver')
+ call Tex_Debug("-clientserver, opening locally and returning", "ropen")
+ exec "e ".filename
+ exec linenum
+ normal! zv
+ return
+ endif
+
+ " Otherwise, loop through all available servers
+ let servers = serverlist()
+ " If there are no servers, open file locally.
+ if servers == ''
+ call Tex_Debug("no open servers, opening locally", "ropen")
+ exec "e ".filename
+ exec linenum
+ let g:Remote_Server = 1
+ normal! zv
+ return
+ endif
+
+ let i = 1
+ let server = s:Strntok(servers, "\n", i)
+ let targetServer = v:servername
+
+ while server != ''
+ " Find out if there was any server which was used by remoteOpen before
+ " this. If a new gvim session was ever started via remoteOpen, then
+ " g:Remote_Server will be set.
+ if remote_expr(server, 'exists("g:Remote_Server")')
+ let targetServer = server
+ endif
+
+ " Ask each server if that file is being edited by them.
+ let bufnum = remote_expr(server, "bufnr('".filename."')")
+ " If it is...
+ if bufnum != -1
+ " ask the server to edit that file and come to the foreground.
+ " set a variable g:Remote_Server to indicate that this server
+ " session has at least one file opened via RemoteOpen
+ let targetServer = server
+ break
+ end
+
+ let i = i + 1
+ let server = s:Strntok(servers, "\n", i)
+ endwhile
+
+ " If none of the servers have the file open, then open this file in the
+ " first server. This has the advantage if yap tries to make vim open
+ " multiple vims, then at least they will all be opened by the same gvim
+ " server.
+ call remote_send(targetServer,
+ \ "\<C-\>\<C-n>".
+ \ ":let g:Remote_Server = 1\<CR>".
+ \ ":drop ".filename."\<CR>".
+ \ ":".linenum."\<CR>zv"
+ \ )
+ call remote_foreground(targetServer)
+ " quit this vim session
+ if v:servername != targetServer
+ q
+ endif
+endfunction " }}}
+" RemoteInsert: inserts a \cite'ation remotely (if possible) {{{
+" Description:
+function! RemoteInsert(...)
+
+ let citation = matchstr(argv(0), "\\[InsText('.cite{\\zs.\\{-}\\ze}');\\]")
+ if citation == ""
+ q
+ endif
+
+ " Otherwise, loop through all available servers
+ let servers = serverlist()
+
+ let i = 1
+ let server = s:Strntok(servers, "\n", i)
+ let targetServer = v:servername
+
+ while server != ''
+ if remote_expr(server, 'exists("g:Remote_WaitingForCite")')
+ call remote_send(server, citation . "\<CR>")
+ call remote_foreground(server)
+ if v:servername != server
+ q
+ else
+ return
+ endif
+ endif
+
+ let i = i + 1
+ let server = s:Strntok(servers, "\n", i)
+ endwhile
+
+ q
+
+endfunction " }}}
+" Strntok: extract the n^th token from a list {{{
+" example: Strntok('1,23,3', ',', 2) = 23
+fun! <SID>Strntok(s, tok, n)
+ return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
+endfun
+
+" }}}
+
+" vim:ft=vim:ts=4:sw=4:noet:fdm=marker:commentstring=\"\ %s:nowrap
diff --git a/.vim/plugin/taglist.vim b/.vim/plugin/taglist.vim
new file mode 100644
index 0000000..59901f6
--- /dev/null
+++ b/.vim/plugin/taglist.vim
@@ -0,0 +1,4546 @@
+" File: taglist.vim
+" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
+" Version: 4.5
+" Last Modified: September 21, 2007
+" Copyright: Copyright (C) 2002-2007 Yegappan Lakshmanan
+" Permission is hereby granted to use and distribute this code,
+" with or without modifications, provided that this copyright
+" notice is copied with it. Like anything else that's free,
+" taglist.vim is provided *as is* and comes with no warranty of any
+" kind, either expressed or implied. In no event will the copyright
+" holder be liable for any damamges resulting from the use of this
+" software.
+"
+" The "Tag List" plugin is a source code browser plugin for Vim and provides
+" an overview of the structure of the programming language files and allows
+" you to efficiently browse through source code files for different
+" programming languages. You can visit the taglist plugin home page for more
+" information:
+"
+" http://vim-taglist.sourceforge.net
+"
+" You can subscribe to the taglist mailing list to post your questions
+" or suggestions for improvement or to report bugs. Visit the following
+" page for subscribing to the mailing list:
+"
+" http://groups.yahoo.com/group/taglist/
+"
+" For more information about using this plugin, after installing the
+" taglist plugin, use the ":help taglist" command.
+"
+" Installation
+" ------------
+" 1. Download the taglist.zip file and unzip the files to the $HOME/.vim
+" or the $HOME/vimfiles or the $VIM/vimfiles directory. This should
+" unzip the following two files (the directory structure should be
+" preserved):
+"
+" plugin/taglist.vim - main taglist plugin file
+" doc/taglist.txt - documentation (help) file
+"
+" Refer to the 'add-plugin', 'add-global-plugin' and 'runtimepath'
+" Vim help pages for more details about installing Vim plugins.
+" 2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or
+" $VIM/vimfiles/doc directory, start Vim and run the ":helptags ."
+" command to process the taglist help file.
+" 3. If the exuberant ctags utility is not present in your PATH, then set the
+" Tlist_Ctags_Cmd variable to point to the location of the exuberant ctags
+" utility (not to the directory) in the .vimrc file.
+" 4. If you are running a terminal/console version of Vim and the
+" terminal doesn't support changing the window width then set the
+" 'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file.
+" 5. Restart Vim.
+" 6. You can now use the ":TlistToggle" command to open/close the taglist
+" window. You can use the ":help taglist" command to get more
+" information about using the taglist plugin.
+"
+" ****************** Do not modify after this line ************************
+
+" Line continuation used here
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists('loaded_taglist')
+ " First time loading the taglist plugin
+ "
+ " To speed up the loading of Vim, the taglist plugin uses autoload
+ " mechanism to load the taglist functions.
+ " Only define the configuration variables, user commands and some
+ " auto-commands and finish sourcing the file
+
+ " The taglist plugin requires the built-in Vim system() function. If this
+ " function is not available, then don't load the plugin.
+ if !exists('*system')
+ echomsg 'Taglist: Vim system() built-in function is not available. ' .
+ \ 'Plugin is not loaded.'
+ let loaded_taglist = 'no'
+ let &cpo = s:cpo_save
+ finish
+ endif
+
+ " Location of the exuberant ctags tool
+ if !exists('Tlist_Ctags_Cmd')
+ if executable('exuberant-ctags')
+ " On Debian Linux, exuberant ctags is installed
+ " as exuberant-ctags
+ let Tlist_Ctags_Cmd = 'exuberant-ctags'
+ elseif executable('exctags')
+ " On Free-BSD, exuberant ctags is installed as exctags
+ let Tlist_Ctags_Cmd = 'exctags'
+ elseif executable('ctags')
+ let Tlist_Ctags_Cmd = 'ctags'
+ elseif executable('ctags.exe')
+ let Tlist_Ctags_Cmd = 'ctags.exe'
+ elseif executable('tags')
+ let Tlist_Ctags_Cmd = 'tags'
+ else
+ echomsg 'Taglist: Exuberant ctags (http://ctags.sf.net) ' .
+ \ 'not found in PATH. Plugin is not loaded.'
+ " Skip loading the plugin
+ let loaded_taglist = 'no'
+ let &cpo = s:cpo_save
+ finish
+ endif
+ endif
+
+
+ " Automatically open the taglist window on Vim startup
+ if !exists('Tlist_Auto_Open')
+ let Tlist_Auto_Open = 0
+ endif
+
+ " When the taglist window is toggle opened, move the cursor to the
+ " taglist window
+ if !exists('Tlist_GainFocus_On_ToggleOpen')
+ let Tlist_GainFocus_On_ToggleOpen = 0
+ endif
+
+ " Process files even when the taglist window is not open
+ if !exists('Tlist_Process_File_Always')
+ let Tlist_Process_File_Always = 0
+ endif
+
+ if !exists('Tlist_Show_Menu')
+ let Tlist_Show_Menu = 0
+ endif
+
+ " Tag listing sort type - 'name' or 'order'
+ if !exists('Tlist_Sort_Type')
+ let Tlist_Sort_Type = 'order'
+ endif
+
+ " Tag listing window split (horizontal/vertical) control
+ if !exists('Tlist_Use_Horiz_Window')
+ let Tlist_Use_Horiz_Window = 0
+ endif
+
+ " Open the vertically split taglist window on the left or on the right
+ " side. This setting is relevant only if Tlist_Use_Horiz_Window is set to
+ " zero (i.e. only for vertically split windows)
+ if !exists('Tlist_Use_Right_Window')
+ let Tlist_Use_Right_Window = 0
+ endif
+
+ " Increase Vim window width to display vertically split taglist window.
+ " For MS-Windows version of Vim running in a MS-DOS window, this must be
+ " set to 0 otherwise the system may hang due to a Vim limitation.
+ if !exists('Tlist_Inc_Winwidth')
+ if (has('win16') || has('win95')) && !has('gui_running')
+ let Tlist_Inc_Winwidth = 0
+ else
+ let Tlist_Inc_Winwidth = 1
+ endif
+ endif
+
+ " Vertically split taglist window width setting
+ if !exists('Tlist_WinWidth')
+ let Tlist_WinWidth = 30
+ endif
+
+ " Horizontally split taglist window height setting
+ if !exists('Tlist_WinHeight')
+ let Tlist_WinHeight = 10
+ endif
+
+ " Display tag prototypes or tag names in the taglist window
+ if !exists('Tlist_Display_Prototype')
+ let Tlist_Display_Prototype = 0
+ endif
+
+ " Display tag scopes in the taglist window
+ if !exists('Tlist_Display_Tag_Scope')
+ let Tlist_Display_Tag_Scope = 1
+ endif
+
+ " Use single left mouse click to jump to a tag. By default this is disabled.
+ " Only double click using the mouse will be processed.
+ if !exists('Tlist_Use_SingleClick')
+ let Tlist_Use_SingleClick = 0
+ endif
+
+ " Control whether additional help is displayed as part of the taglist or
+ " not. Also, controls whether empty lines are used to separate the tag
+ " tree.
+ if !exists('Tlist_Compact_Format')
+ let Tlist_Compact_Format = 0
+ endif
+
+ " Exit Vim if only the taglist window is currently open. By default, this is
+ " set to zero.
+ if !exists('Tlist_Exit_OnlyWindow')
+ let Tlist_Exit_OnlyWindow = 0
+ endif
+
+ " Automatically close the folds for the non-active files in the taglist
+ " window
+ if !exists('Tlist_File_Fold_Auto_Close')
+ let Tlist_File_Fold_Auto_Close = 0
+ endif
+
+ " Close the taglist window when a tag is selected
+ if !exists('Tlist_Close_On_Select')
+ let Tlist_Close_On_Select = 0
+ endif
+
+ " Automatically update the taglist window to display tags for newly
+ " edited files
+ if !exists('Tlist_Auto_Update')
+ let Tlist_Auto_Update = 1
+ endif
+
+ " Automatically highlight the current tag
+ if !exists('Tlist_Auto_Highlight_Tag')
+ let Tlist_Auto_Highlight_Tag = 1
+ endif
+
+ " Automatically highlight the current tag on entering a buffer
+ if !exists('Tlist_Highlight_Tag_On_BufEnter')
+ let Tlist_Highlight_Tag_On_BufEnter = 1
+ endif
+
+ " Enable fold column to display the folding for the tag tree
+ if !exists('Tlist_Enable_Fold_Column')
+ let Tlist_Enable_Fold_Column = 1
+ endif
+
+ " Display the tags for only one file in the taglist window
+ if !exists('Tlist_Show_One_File')
+ let Tlist_Show_One_File = 0
+ endif
+
+ if !exists('Tlist_Max_Submenu_Items')
+ let Tlist_Max_Submenu_Items = 20
+ endif
+
+ if !exists('Tlist_Max_Tag_Length')
+ let Tlist_Max_Tag_Length = 10
+ endif
+
+ " Do not change the name of the taglist title variable. The winmanager
+ " plugin relies on this name to determine the title for the taglist
+ " plugin.
+ let TagList_title = "__Tag_List__"
+
+ " Taglist debug messages
+ let s:tlist_msg = ''
+
+ " Define the taglist autocommand to automatically open the taglist window
+ " on Vim startup
+ if g:Tlist_Auto_Open
+ autocmd VimEnter * nested call s:Tlist_Window_Check_Auto_Open()
+ endif
+
+ " Refresh the taglist
+ if g:Tlist_Process_File_Always
+ autocmd BufEnter * call s:Tlist_Refresh()
+ endif
+
+ if g:Tlist_Show_Menu
+ autocmd GUIEnter * call s:Tlist_Menu_Init()
+ endif
+
+ " When the taglist buffer is created when loading a Vim session file,
+ " the taglist buffer needs to be initialized. The BufFilePost event
+ " is used to handle this case.
+ autocmd BufFilePost __Tag_List__ call s:Tlist_Vim_Session_Load()
+
+ " Define the user commands to manage the taglist window
+ command! -nargs=0 -bar TlistToggle call s:Tlist_Window_Toggle()
+ command! -nargs=0 -bar TlistOpen call s:Tlist_Window_Open()
+ " For backwards compatiblity define the Tlist command
+ command! -nargs=0 -bar Tlist TlistToggle
+ command! -nargs=+ -complete=file TlistAddFiles
+ \ call s:Tlist_Add_Files(<f-args>)
+ command! -nargs=+ -complete=dir TlistAddFilesRecursive
+ \ call s:Tlist_Add_Files_Recursive(<f-args>)
+ command! -nargs=0 -bar TlistClose call s:Tlist_Window_Close()
+ command! -nargs=0 -bar TlistUpdate call s:Tlist_Update_Current_File()
+ command! -nargs=0 -bar TlistHighlightTag call s:Tlist_Window_Highlight_Tag(
+ \ fnamemodify(bufname('%'), ':p'), line('.'), 2, 1)
+ " For backwards compatiblity define the TlistSync command
+ command! -nargs=0 -bar TlistSync TlistHighlightTag
+ command! -nargs=* -complete=buffer TlistShowPrototype
+ \ echo Tlist_Get_Tag_Prototype_By_Line(<f-args>)
+ command! -nargs=* -complete=buffer TlistShowTag
+ \ echo Tlist_Get_Tagname_By_Line(<f-args>)
+ command! -nargs=* -complete=file TlistSessionLoad
+ \ call s:Tlist_Session_Load(<q-args>)
+ command! -nargs=* -complete=file TlistSessionSave
+ \ call s:Tlist_Session_Save(<q-args>)
+ command! -bar TlistLock let Tlist_Auto_Update=0
+ command! -bar TlistUnlock let Tlist_Auto_Update=1
+
+ " Commands for enabling/disabling debug and to display debug messages
+ command! -nargs=? -complete=file -bar TlistDebug
+ \ call s:Tlist_Debug_Enable(<q-args>)
+ command! -nargs=0 -bar TlistUndebug call s:Tlist_Debug_Disable()
+ command! -nargs=0 -bar TlistMessages call s:Tlist_Debug_Show()
+
+ " Define autocommands to autoload the taglist plugin when needed.
+
+ " Trick to get the current script ID
+ map <SID>xx <SID>xx
+ let s:tlist_sid = substitute(maparg('<SID>xx'), '<SNR>\(\d\+_\)xx$',
+ \ '\1', '')
+ unmap <SID>xx
+
+ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_* source ' .
+ \ escape(expand('<sfile>'), ' ')
+ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Window_* source ' .
+ \ escape(expand('<sfile>'), ' ')
+ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Menu_* source ' .
+ \ escape(expand('<sfile>'), ' ')
+ exe 'autocmd FuncUndefined Tlist_* source ' .
+ \ escape(expand('<sfile>'), ' ')
+ exe 'autocmd FuncUndefined TagList_* source ' .
+ \ escape(expand('<sfile>'), ' ')
+
+ let loaded_taglist = 'fast_load_done'
+
+ if g:Tlist_Show_Menu && has('gui_running')
+ call s:Tlist_Menu_Init()
+ endif
+
+ " restore 'cpo'
+ let &cpo = s:cpo_save
+ finish
+endif
+
+if !exists('s:tlist_sid')
+ " Two or more versions of taglist plugin are installed. Don't
+ " load this version of the plugin.
+ finish
+endif
+
+unlet! s:tlist_sid
+
+if loaded_taglist != 'fast_load_done'
+ " restore 'cpo'
+ let &cpo = s:cpo_save
+ finish
+endif
+
+" Taglist plugin functionality is available
+let loaded_taglist = 'available'
+
+"------------------- end of user configurable options --------------------
+
+" Default language specific settings for supported file types and tag types
+"
+" Variable name format:
+"
+" s:tlist_def_{vim_ftype}_settings
+"
+" vim_ftype - Filetype detected by Vim
+"
+" Value format:
+"
+" <ctags_ftype>;<flag>:<name>;<flag>:<name>;...
+"
+" ctags_ftype - File type supported by exuberant ctags
+" flag - Flag supported by exuberant ctags to generate a tag type
+" name - Name of the tag type used in the taglist window to display the
+" tags of this type
+"
+
+" assembly language
+let s:tlist_def_asm_settings = 'asm;d:define;l:label;m:macro;t:type'
+
+" aspperl language
+let s:tlist_def_aspperl_settings = 'asp;f:function;s:sub;v:variable'
+
+" aspvbs language
+let s:tlist_def_aspvbs_settings = 'asp;f:function;s:sub;v:variable'
+
+" awk language
+let s:tlist_def_awk_settings = 'awk;f:function'
+
+" beta language
+let s:tlist_def_beta_settings = 'beta;f:fragment;s:slot;v:pattern'
+
+" c language
+let s:tlist_def_c_settings = 'c;d:macro;g:enum;s:struct;u:union;t:typedef;' .
+ \ 'v:variable;f:function'
+
+" c++ language
+let s:tlist_def_cpp_settings = 'c++;n:namespace;v:variable;d:macro;t:typedef;' .
+ \ 'c:class;g:enum;s:struct;u:union;f:function'
+
+" c# language
+let s:tlist_def_cs_settings = 'c#;d:macro;t:typedef;n:namespace;c:class;' .
+ \ 'E:event;g:enum;s:struct;i:interface;' .
+ \ 'p:properties;m:method'
+
+" cobol language
+let s:tlist_def_cobol_settings = 'cobol;d:data;f:file;g:group;p:paragraph;' .
+ \ 'P:program;s:section'
+
+" eiffel language
+let s:tlist_def_eiffel_settings = 'eiffel;c:class;f:feature'
+
+" erlang language
+let s:tlist_def_erlang_settings = 'erlang;d:macro;r:record;m:module;f:function'
+
+" expect (same as tcl) language
+let s:tlist_def_expect_settings = 'tcl;c:class;f:method;p:procedure'
+
+" fortran language
+let s:tlist_def_fortran_settings = 'fortran;p:program;b:block data;' .
+ \ 'c:common;e:entry;i:interface;k:type;l:label;m:module;' .
+ \ 'n:namelist;t:derived;v:variable;f:function;s:subroutine'
+
+" HTML language
+let s:tlist_def_html_settings = 'html;a:anchor;f:javascript function'
+
+" java language
+let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' .
+ \ 'f:field;m:method'
+
+" javascript language
+let s:tlist_def_javascript_settings = 'javascript;f:function'
+
+" lisp language
+let s:tlist_def_lisp_settings = 'lisp;f:function'
+
+" lua language
+let s:tlist_def_lua_settings = 'lua;f:function'
+
+" makefiles
+let s:tlist_def_make_settings = 'make;m:macro'
+
+" pascal language
+let s:tlist_def_pascal_settings = 'pascal;f:function;p:procedure'
+
+" perl language
+let s:tlist_def_perl_settings = 'perl;c:constant;l:label;p:package;s:subroutine'
+
+" php language
+let s:tlist_def_php_settings = 'php;c:class;d:constant;v:variable;f:function'
+
+" python language
+let s:tlist_def_python_settings = 'python;c:class;m:member;f:function'
+
+" rexx language
+let s:tlist_def_rexx_settings = 'rexx;s:subroutine'
+
+" ruby language
+let s:tlist_def_ruby_settings = 'ruby;c:class;f:method;F:function;' .
+ \ 'm:singleton method'
+
+" scheme language
+let s:tlist_def_scheme_settings = 'scheme;s:set;f:function'
+
+" shell language
+let s:tlist_def_sh_settings = 'sh;f:function'
+
+" C shell language
+let s:tlist_def_csh_settings = 'sh;f:function'
+
+" Z shell language
+let s:tlist_def_zsh_settings = 'sh;f:function'
+
+" slang language
+let s:tlist_def_slang_settings = 'slang;n:namespace;f:function'
+
+" sml language
+let s:tlist_def_sml_settings = 'sml;e:exception;c:functor;s:signature;' .
+ \ 'r:structure;t:type;v:value;f:function'
+
+" sql language
+let s:tlist_def_sql_settings = 'sql;c:cursor;F:field;P:package;r:record;' .
+ \ 's:subtype;t:table;T:trigger;v:variable;f:function;p:procedure'
+
+" tcl language
+let s:tlist_def_tcl_settings = 'tcl;c:class;f:method;m:method;p:procedure'
+
+" vera language
+let s:tlist_def_vera_settings = 'vera;c:class;d:macro;e:enumerator;' .
+ \ 'f:function;g:enum;m:member;p:program;' .
+ \ 'P:prototype;t:task;T:typedef;v:variable;' .
+ \ 'x:externvar'
+
+"verilog language
+let s:tlist_def_verilog_settings = 'verilog;m:module;c:constant;P:parameter;' .
+ \ 'e:event;r:register;t:task;w:write;p:port;v:variable;f:function'
+
+" vim language
+let s:tlist_def_vim_settings = 'vim;a:autocmds;v:variable;f:function'
+
+" yacc language
+let s:tlist_def_yacc_settings = 'yacc;l:label'
+
+"------------------- end of language specific options --------------------
+
+" Vim window size is changed by the taglist plugin or not
+let s:tlist_winsize_chgd = -1
+" Taglist window is maximized or not
+let s:tlist_win_maximized = 0
+" Name of files in the taglist
+let s:tlist_file_names=''
+" Number of files in the taglist
+let s:tlist_file_count = 0
+" Number of filetypes supported by taglist
+let s:tlist_ftype_count = 0
+" Is taglist part of other plugins like winmanager or cream?
+let s:tlist_app_name = "none"
+" Are we displaying brief help text
+let s:tlist_brief_help = 1
+" List of files removed on user request
+let s:tlist_removed_flist = ""
+" Index of current file displayed in the taglist window
+let s:tlist_cur_file_idx = -1
+" Taglist menu is empty or not
+let s:tlist_menu_empty = 1
+
+" An autocommand is used to refresh the taglist window when entering any
+" buffer. We don't want to refresh the taglist window if we are entering the
+" file window from one of the taglist functions. The 'Tlist_Skip_Refresh'
+" variable is used to skip the refresh of the taglist window and is set
+" and cleared appropriately.
+let s:Tlist_Skip_Refresh = 0
+
+" Tlist_Window_Display_Help()
+function! s:Tlist_Window_Display_Help()
+ if s:tlist_app_name == "winmanager"
+ " To handle a bug in the winmanager plugin, add a space at the
+ " last line
+ call setline('$', ' ')
+ endif
+
+ if s:tlist_brief_help
+ " Add the brief help
+ call append(0, '" Press <F1> to display help text')
+ else
+ " Add the extensive help
+ call append(0, '" <enter> : Jump to tag definition')
+ call append(1, '" o : Jump to tag definition in new window')
+ call append(2, '" p : Preview the tag definition')
+ call append(3, '" <space> : Display tag prototype')
+ call append(4, '" u : Update tag list')
+ call append(5, '" s : Select sort field')
+ call append(6, '" d : Remove file from taglist')
+ call append(7, '" x : Zoom-out/Zoom-in taglist window')
+ call append(8, '" + : Open a fold')
+ call append(9, '" - : Close a fold')
+ call append(10, '" * : Open all folds')
+ call append(11, '" = : Close all folds')
+ call append(12, '" [[ : Move to the start of previous file')
+ call append(13, '" ]] : Move to the start of next file')
+ call append(14, '" q : Close the taglist window')
+ call append(15, '" <F1> : Remove help text')
+ endif
+endfunction
+
+" Tlist_Window_Toggle_Help_Text()
+" Toggle taglist plugin help text between the full version and the brief
+" version
+function! s:Tlist_Window_Toggle_Help_Text()
+ if g:Tlist_Compact_Format
+ " In compact display mode, do not display help
+ return
+ endif
+
+ " Include the empty line displayed after the help text
+ let brief_help_size = 1
+ let full_help_size = 16
+
+ setlocal modifiable
+
+ " Set report option to a huge value to prevent informational messages
+ " while deleting the lines
+ let old_report = &report
+ set report=99999
+
+ " Remove the currently highlighted tag. Otherwise, the help text
+ " might be highlighted by mistake
+ match none
+
+ " Toggle between brief and full help text
+ if s:tlist_brief_help
+ let s:tlist_brief_help = 0
+
+ " Remove the previous help
+ exe '1,' . brief_help_size . ' delete _'
+
+ " Adjust the start/end line numbers for the files
+ call s:Tlist_Window_Update_Line_Offsets(0, 1, full_help_size - brief_help_size)
+ else
+ let s:tlist_brief_help = 1
+
+ " Remove the previous help
+ exe '1,' . full_help_size . ' delete _'
+
+ " Adjust the start/end line numbers for the files
+ call s:Tlist_Window_Update_Line_Offsets(0, 0, full_help_size - brief_help_size)
+ endif
+
+ call s:Tlist_Window_Display_Help()
+
+ " Restore the report option
+ let &report = old_report
+
+ setlocal nomodifiable
+endfunction
+
+" Taglist debug support
+let s:tlist_debug = 0
+
+" File for storing the debug messages
+let s:tlist_debug_file = ''
+
+" Tlist_Debug_Enable
+" Enable logging of taglist debug messages.
+function! s:Tlist_Debug_Enable(...)
+ let s:tlist_debug = 1
+
+ " Check whether a valid file name is supplied.
+ if a:1 != ''
+ let s:tlist_debug_file = fnamemodify(a:1, ':p')
+
+ " Empty the log file
+ exe 'redir! > ' . s:tlist_debug_file
+ redir END
+
+ " Check whether the log file is present/created
+ if !filewritable(s:tlist_debug_file)
+ call s:Tlist_Warning_Msg('Taglist: Unable to create log file '
+ \ . s:tlist_debug_file)
+ let s:tlist_debug_file = ''
+ endif
+ endif
+endfunction
+
+" Tlist_Debug_Disable
+" Disable logging of taglist debug messages.
+function! s:Tlist_Debug_Disable(...)
+ let s:tlist_debug = 0
+ let s:tlist_debug_file = ''
+endfunction
+
+" Tlist_Debug_Show
+" Display the taglist debug messages in a new window
+function! s:Tlist_Debug_Show()
+ if s:tlist_msg == ''
+ call s:Tlist_Warning_Msg('Taglist: No debug messages')
+ return
+ endif
+
+ " Open a new window to display the taglist debug messages
+ new taglist_debug.txt
+ " Delete all the lines (if the buffer already exists)
+ silent! %delete _
+ " Add the messages
+ silent! put =s:tlist_msg
+ " Move the cursor to the first line
+ normal! gg
+endfunction
+
+" Tlist_Log_Msg
+" Log the supplied debug message along with the time
+function! s:Tlist_Log_Msg(msg)
+ if s:tlist_debug
+ if s:tlist_debug_file != ''
+ exe 'redir >> ' . s:tlist_debug_file
+ silent echon strftime('%H:%M:%S') . ': ' . a:msg . "\n"
+ redir END
+ else
+ " Log the message into a variable
+ " Retain only the last 3000 characters
+ let len = strlen(s:tlist_msg)
+ if len > 3000
+ let s:tlist_msg = strpart(s:tlist_msg, len - 3000)
+ endif
+ let s:tlist_msg = s:tlist_msg . strftime('%H:%M:%S') . ': ' .
+ \ a:msg . "\n"
+ endif
+ endif
+endfunction
+
+" Tlist_Warning_Msg()
+" Display a message using WarningMsg highlight group
+function! s:Tlist_Warning_Msg(msg)
+ echohl WarningMsg
+ echomsg a:msg
+ echohl None
+endfunction
+
+" Last returned file index for file name lookup.
+" Used to speed up file lookup
+let s:tlist_file_name_idx_cache = -1
+
+" Tlist_Get_File_Index()
+" Return the index of the specified filename
+function! s:Tlist_Get_File_Index(fname)
+ if s:tlist_file_count == 0 || a:fname == ''
+ return -1
+ endif
+
+ " If the new filename is same as the last accessed filename, then
+ " return that index
+ if s:tlist_file_name_idx_cache != -1 &&
+ \ s:tlist_file_name_idx_cache < s:tlist_file_count
+ if s:tlist_{s:tlist_file_name_idx_cache}_filename == a:fname
+ " Same as the last accessed file
+ return s:tlist_file_name_idx_cache
+ endif
+ endif
+
+ " First, check whether the filename is present
+ let s_fname = a:fname . "\n"
+ let i = stridx(s:tlist_file_names, s_fname)
+ if i == -1
+ let s:tlist_file_name_idx_cache = -1
+ return -1
+ endif
+
+ " Second, compute the file name index
+ let nl_txt = substitute(strpart(s:tlist_file_names, 0, i), "[^\n]", '', 'g')
+ let s:tlist_file_name_idx_cache = strlen(nl_txt)
+ return s:tlist_file_name_idx_cache
+endfunction
+
+" Last returned file index for line number lookup.
+" Used to speed up file lookup
+let s:tlist_file_lnum_idx_cache = -1
+
+" Tlist_Window_Get_File_Index_By_Linenum()
+" Return the index of the filename present in the specified line number
+" Line number refers to the line number in the taglist window
+function! s:Tlist_Window_Get_File_Index_By_Linenum(lnum)
+ call s:Tlist_Log_Msg('Tlist_Window_Get_File_Index_By_Linenum (' . a:lnum . ')')
+
+ " First try to see whether the new line number is within the range
+ " of the last returned file
+ if s:tlist_file_lnum_idx_cache != -1 &&
+ \ s:tlist_file_lnum_idx_cache < s:tlist_file_count
+ if a:lnum >= s:tlist_{s:tlist_file_lnum_idx_cache}_start &&
+ \ a:lnum <= s:tlist_{s:tlist_file_lnum_idx_cache}_end
+ return s:tlist_file_lnum_idx_cache
+ endif
+ endif
+
+ let fidx = -1
+
+ if g:Tlist_Show_One_File
+ " Displaying only one file in the taglist window. Check whether
+ " the line is within the tags displayed for that file
+ if s:tlist_cur_file_idx != -1
+ if a:lnum >= s:tlist_{s:tlist_cur_file_idx}_start
+ \ && a:lnum <= s:tlist_{s:tlist_cur_file_idx}_end
+ let fidx = s:tlist_cur_file_idx
+ endif
+
+ endif
+ else
+ " Do a binary search in the taglist
+ let left = 0
+ let right = s:tlist_file_count - 1
+
+ while left < right
+ let mid = (left + right) / 2
+
+ if a:lnum >= s:tlist_{mid}_start && a:lnum <= s:tlist_{mid}_end
+ let s:tlist_file_lnum_idx_cache = mid
+ return mid
+ endif
+
+ if a:lnum < s:tlist_{mid}_start
+ let right = mid - 1
+ else
+ let left = mid + 1
+ endif
+ endwhile
+
+ if left >= 0 && left < s:tlist_file_count
+ \ && a:lnum >= s:tlist_{left}_start
+ \ && a:lnum <= s:tlist_{left}_end
+ let fidx = left
+ endif
+ endif
+
+ let s:tlist_file_lnum_idx_cache = fidx
+
+ return fidx
+endfunction
+
+" Tlist_Exe_Cmd_No_Acmds
+" Execute the specified Ex command after disabling autocommands
+function! s:Tlist_Exe_Cmd_No_Acmds(cmd)
+ let old_eventignore = &eventignore
+ set eventignore=all
+ exe a:cmd
+ let &eventignore = old_eventignore
+endfunction
+
+" Tlist_Skip_File()
+" Check whether tag listing is supported for the specified file
+function! s:Tlist_Skip_File(filename, ftype)
+ " Skip buffers with no names and buffers with filetype not set
+ if a:filename == '' || a:ftype == ''
+ return 1
+ endif
+
+ " Skip files which are not supported by exuberant ctags
+ " First check whether default settings for this filetype are available.
+ " If it is not available, then check whether user specified settings are
+ " available. If both are not available, then don't list the tags for this
+ " filetype
+ let var = 's:tlist_def_' . a:ftype . '_settings'
+ if !exists(var)
+ let var = 'g:tlist_' . a:ftype . '_settings'
+ if !exists(var)
+ return 1
+ endif
+ endif
+
+ " Skip files which are not readable or files which are not yet stored
+ " to the disk
+ if !filereadable(a:filename)
+ return 1
+ endif
+
+ return 0
+endfunction
+
+" Tlist_User_Removed_File
+" Returns 1 if a file is removed by a user from the taglist
+function! s:Tlist_User_Removed_File(filename)
+ return stridx(s:tlist_removed_flist, a:filename . "\n") != -1
+endfunction
+
+" Tlist_Update_Remove_List
+" Update the list of user removed files from the taglist
+" add == 1, add the file to the removed list
+" add == 0, delete the file from the removed list
+function! s:Tlist_Update_Remove_List(filename, add)
+ if a:add
+ let s:tlist_removed_flist = s:tlist_removed_flist . a:filename . "\n"
+ else
+ let idx = stridx(s:tlist_removed_flist, a:filename . "\n")
+ let text_before = strpart(s:tlist_removed_flist, 0, idx)
+ let rem_text = strpart(s:tlist_removed_flist, idx)
+ let next_idx = stridx(rem_text, "\n")
+ let text_after = strpart(rem_text, next_idx + 1)
+
+ let s:tlist_removed_flist = text_before . text_after
+ endif
+endfunction
+
+" Tlist_FileType_Init
+" Initialize the ctags arguments and tag variable for the specified
+" file type
+function! s:Tlist_FileType_Init(ftype)
+ call s:Tlist_Log_Msg('Tlist_FileType_Init (' . a:ftype . ')')
+ " If the user didn't specify any settings, then use the default
+ " ctags args. Otherwise, use the settings specified by the user
+ let var = 'g:tlist_' . a:ftype . '_settings'
+ if exists(var)
+ " User specified ctags arguments
+ let settings = {var} . ';'
+ else
+ " Default ctags arguments
+ let var = 's:tlist_def_' . a:ftype . '_settings'
+ if !exists(var)
+ " No default settings for this file type. This filetype is
+ " not supported
+ return 0
+ endif
+ let settings = s:tlist_def_{a:ftype}_settings . ';'
+ endif
+
+ let msg = 'Taglist: Invalid ctags option setting - ' . settings
+
+ " Format of the option that specifies the filetype and ctags arugments:
+ "
+ " <language_name>;flag1:name1;flag2:name2;flag3:name3
+ "
+
+ " Extract the file type to pass to ctags. This may be different from the
+ " file type detected by Vim
+ let pos = stridx(settings, ';')
+ if pos == -1
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ let ctags_ftype = strpart(settings, 0, pos)
+ if ctags_ftype == ''
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ " Make sure a valid filetype is supplied. If the user didn't specify a
+ " valid filetype, then the ctags option settings may be treated as the
+ " filetype
+ if ctags_ftype =~ ':'
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+
+ " Remove the file type from settings
+ let settings = strpart(settings, pos + 1)
+ if settings == ''
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+
+ " Process all the specified ctags flags. The format is
+ " flag1:name1;flag2:name2;flag3:name3
+ let ctags_flags = ''
+ let cnt = 0
+ while settings != ''
+ " Extract the flag
+ let pos = stridx(settings, ':')
+ if pos == -1
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ let flag = strpart(settings, 0, pos)
+ if flag == ''
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ " Remove the flag from settings
+ let settings = strpart(settings, pos + 1)
+
+ " Extract the tag type name
+ let pos = stridx(settings, ';')
+ if pos == -1
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ let name = strpart(settings, 0, pos)
+ if name == ''
+ call s:Tlist_Warning_Msg(msg)
+ return 0
+ endif
+ let settings = strpart(settings, pos + 1)
+
+ let cnt = cnt + 1
+
+ let s:tlist_{a:ftype}_{cnt}_name = flag
+ let s:tlist_{a:ftype}_{cnt}_fullname = name
+ let ctags_flags = ctags_flags . flag
+ endwhile
+
+ let s:tlist_{a:ftype}_ctags_args = '--language-force=' . ctags_ftype .
+ \ ' --' . ctags_ftype . '-types=' . ctags_flags
+ let s:tlist_{a:ftype}_count = cnt
+ let s:tlist_{a:ftype}_ctags_flags = ctags_flags
+
+ " Save the filetype name
+ let s:tlist_ftype_{s:tlist_ftype_count}_name = a:ftype
+ let s:tlist_ftype_count = s:tlist_ftype_count + 1
+
+ return 1
+endfunction
+
+" Tlist_Detect_Filetype
+" Determine the filetype for the specified file using the filetypedetect
+" autocmd.
+function! s:Tlist_Detect_Filetype(fname)
+ " Ignore the filetype autocommands
+ let old_eventignore = &eventignore
+ set eventignore=FileType
+
+ " Save the 'filetype', as this will be changed temporarily
+ let old_filetype = &filetype
+
+ " Run the filetypedetect group of autocommands to determine
+ " the filetype
+ exe 'doautocmd filetypedetect BufRead ' . a:fname
+
+ " Save the detected filetype
+ let ftype = &filetype
+
+ " Restore the previous state
+ let &filetype = old_filetype
+ let &eventignore = old_eventignore
+
+ return ftype
+endfunction
+
+" Tlist_Get_Buffer_Filetype
+" Get the filetype for the specified buffer
+function! s:Tlist_Get_Buffer_Filetype(bnum)
+ let buf_ft = getbufvar(a:bnum, '&filetype')
+
+ if bufloaded(a:bnum)
+ " For loaded buffers, the 'filetype' is already determined
+ return buf_ft
+ endif
+
+ " For unloaded buffers, if the 'filetype' option is set, return it
+ if buf_ft != ''
+ return buf_ft
+ endif
+
+ " Skip non-existent buffers
+ if !bufexists(a:bnum)
+ return ''
+ endif
+
+ " For buffers whose filetype is not yet determined, try to determine
+ " the filetype
+ let bname = bufname(a:bnum)
+
+ return s:Tlist_Detect_Filetype(bname)
+endfunction
+
+" Tlist_Discard_TagInfo
+" Discard the stored tag information for a file
+function! s:Tlist_Discard_TagInfo(fidx)
+ call s:Tlist_Log_Msg('Tlist_Discard_TagInfo (' .
+ \ s:tlist_{a:fidx}_filename . ')')
+ let ftype = s:tlist_{a:fidx}_filetype
+
+ " Discard information about the tags defined in the file
+ let i = 1
+ while i <= s:tlist_{a:fidx}_tag_count
+ let fidx_i = 's:tlist_' . a:fidx . '_' . i
+ unlet! {fidx_i}_tag
+ unlet! {fidx_i}_tag_name
+ unlet! {fidx_i}_tag_type
+ unlet! {fidx_i}_ttype_idx
+ unlet! {fidx_i}_tag_proto
+ unlet! {fidx_i}_tag_searchpat
+ unlet! {fidx_i}_tag_linenum
+ let i = i + 1
+ endwhile
+
+ let s:tlist_{a:fidx}_tag_count = 0
+
+ " Discard information about tag type groups
+ let i = 1
+ while i <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{i}_name
+ if s:tlist_{a:fidx}_{ttype} != ''
+ let fidx_ttype = 's:tlist_' . a:fidx . '_' . ttype
+ let {fidx_ttype} = ''
+ let {fidx_ttype}_offset = 0
+ let cnt = {fidx_ttype}_count
+ let {fidx_ttype}_count = 0
+ let j = 1
+ while j <= cnt
+ unlet! {fidx_ttype}_{j}
+ let j = j + 1
+ endwhile
+ endif
+ let i = i + 1
+ endwhile
+
+ " Discard the stored menu command also
+ let s:tlist_{a:fidx}_menu_cmd = ''
+endfunction
+
+" Tlist_Window_Update_Line_Offsets
+" Update the line offsets for tags for files starting from start_idx
+" and displayed in the taglist window by the specified offset
+function! s:Tlist_Window_Update_Line_Offsets(start_idx, increment, offset)
+ let i = a:start_idx
+
+ while i < s:tlist_file_count
+ if s:tlist_{i}_visible
+ " Update the start/end line number only if the file is visible
+ if a:increment
+ let s:tlist_{i}_start = s:tlist_{i}_start + a:offset
+ let s:tlist_{i}_end = s:tlist_{i}_end + a:offset
+ else
+ let s:tlist_{i}_start = s:tlist_{i}_start - a:offset
+ let s:tlist_{i}_end = s:tlist_{i}_end - a:offset
+ endif
+ endif
+ let i = i + 1
+ endwhile
+endfunction
+
+" Tlist_Discard_FileInfo
+" Discard the stored information for a file
+function! s:Tlist_Discard_FileInfo(fidx)
+ call s:Tlist_Log_Msg('Tlist_Discard_FileInfo (' .
+ \ s:tlist_{a:fidx}_filename . ')')
+ call s:Tlist_Discard_TagInfo(a:fidx)
+
+ let ftype = s:tlist_{a:fidx}_filetype
+
+ let i = 1
+ while i <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{i}_name
+ unlet! s:tlist_{a:fidx}_{ttype}
+ unlet! s:tlist_{a:fidx}_{ttype}_offset
+ unlet! s:tlist_{a:fidx}_{ttype}_count
+ let i = i + 1
+ endwhile
+
+ unlet! s:tlist_{a:fidx}_filename
+ unlet! s:tlist_{a:fidx}_sort_type
+ unlet! s:tlist_{a:fidx}_filetype
+ unlet! s:tlist_{a:fidx}_mtime
+ unlet! s:tlist_{a:fidx}_start
+ unlet! s:tlist_{a:fidx}_end
+ unlet! s:tlist_{a:fidx}_valid
+ unlet! s:tlist_{a:fidx}_visible
+ unlet! s:tlist_{a:fidx}_tag_count
+ unlet! s:tlist_{a:fidx}_menu_cmd
+endfunction
+
+" Tlist_Window_Remove_File_From_Display
+" Remove the specified file from display
+function! s:Tlist_Window_Remove_File_From_Display(fidx)
+ call s:Tlist_Log_Msg('Tlist_Window_Remove_File_From_Display (' .
+ \ s:tlist_{a:fidx}_filename . ')')
+ " If the file is not visible then no need to remove it
+ if !s:tlist_{a:fidx}_visible
+ return
+ endif
+
+ " Remove the tags displayed for the specified file from the window
+ let start = s:tlist_{a:fidx}_start
+ " Include the empty line after the last line also
+ if g:Tlist_Compact_Format
+ let end = s:tlist_{a:fidx}_end
+ else
+ let end = s:tlist_{a:fidx}_end + 1
+ endif
+
+ setlocal modifiable
+ exe 'silent! ' . start . ',' . end . 'delete _'
+ setlocal nomodifiable
+
+ " Correct the start and end line offsets for all the files following
+ " this file, as the tags for this file are removed
+ call s:Tlist_Window_Update_Line_Offsets(a:fidx + 1, 0, end - start + 1)
+endfunction
+
+" Tlist_Remove_File
+" Remove the file under the cursor or the specified file index
+" user_request - User requested to remove the file from taglist
+function! s:Tlist_Remove_File(file_idx, user_request)
+ let fidx = a:file_idx
+
+ if fidx == -1
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.'))
+ if fidx == -1
+ return
+ endif
+ endif
+ call s:Tlist_Log_Msg('Tlist_Remove_File (' .
+ \ s:tlist_{fidx}_filename . ', ' . a:user_request . ')')
+
+ let save_winnr = winnr()
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ " Taglist window is open, remove the file from display
+
+ if save_winnr != winnum
+ let old_eventignore = &eventignore
+ set eventignore=all
+ exe winnum . 'wincmd w'
+ endif
+
+ call s:Tlist_Window_Remove_File_From_Display(fidx)
+
+ if save_winnr != winnum
+ exe save_winnr . 'wincmd w'
+ let &eventignore = old_eventignore
+ endif
+ endif
+
+ let fname = s:tlist_{fidx}_filename
+
+ if a:user_request
+ " As the user requested to remove the file from taglist,
+ " add it to the removed list
+ call s:Tlist_Update_Remove_List(fname, 1)
+ endif
+
+ " Remove the file name from the taglist list of filenames
+ let idx = stridx(s:tlist_file_names, fname . "\n")
+ let text_before = strpart(s:tlist_file_names, 0, idx)
+ let rem_text = strpart(s:tlist_file_names, idx)
+ let next_idx = stridx(rem_text, "\n")
+ let text_after = strpart(rem_text, next_idx + 1)
+ let s:tlist_file_names = text_before . text_after
+
+ call s:Tlist_Discard_FileInfo(fidx)
+
+ " Shift all the file variables by one index
+ let i = fidx + 1
+
+ while i < s:tlist_file_count
+ let j = i - 1
+
+ let s:tlist_{j}_filename = s:tlist_{i}_filename
+ let s:tlist_{j}_sort_type = s:tlist_{i}_sort_type
+ let s:tlist_{j}_filetype = s:tlist_{i}_filetype
+ let s:tlist_{j}_mtime = s:tlist_{i}_mtime
+ let s:tlist_{j}_start = s:tlist_{i}_start
+ let s:tlist_{j}_end = s:tlist_{i}_end
+ let s:tlist_{j}_valid = s:tlist_{i}_valid
+ let s:tlist_{j}_visible = s:tlist_{i}_visible
+ let s:tlist_{j}_tag_count = s:tlist_{i}_tag_count
+ let s:tlist_{j}_menu_cmd = s:tlist_{i}_menu_cmd
+
+ let k = 1
+ while k <= s:tlist_{j}_tag_count
+ let s:tlist_{j}_{k}_tag = s:tlist_{i}_{k}_tag
+ let s:tlist_{j}_{k}_tag_name = s:tlist_{i}_{k}_tag_name
+ let s:tlist_{j}_{k}_tag_type = s:Tlist_Get_Tag_Type_By_Tag(i, k)
+ let s:tlist_{j}_{k}_ttype_idx = s:tlist_{i}_{k}_ttype_idx
+ let s:tlist_{j}_{k}_tag_proto = s:Tlist_Get_Tag_Prototype(i, k)
+ let s:tlist_{j}_{k}_tag_searchpat = s:Tlist_Get_Tag_SearchPat(i, k)
+ let s:tlist_{j}_{k}_tag_linenum = s:Tlist_Get_Tag_Linenum(i, k)
+ let k = k + 1
+ endwhile
+
+ let ftype = s:tlist_{i}_filetype
+
+ let k = 1
+ while k <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{k}_name
+ let s:tlist_{j}_{ttype} = s:tlist_{i}_{ttype}
+ let s:tlist_{j}_{ttype}_offset = s:tlist_{i}_{ttype}_offset
+ let s:tlist_{j}_{ttype}_count = s:tlist_{i}_{ttype}_count
+ if s:tlist_{j}_{ttype} != ''
+ let l = 1
+ while l <= s:tlist_{j}_{ttype}_count
+ let s:tlist_{j}_{ttype}_{l} = s:tlist_{i}_{ttype}_{l}
+ let l = l + 1
+ endwhile
+ endif
+ let k = k + 1
+ endwhile
+
+ " As the file and tag information is copied to the new index,
+ " discard the previous information
+ call s:Tlist_Discard_FileInfo(i)
+
+ let i = i + 1
+ endwhile
+
+ " Reduce the number of files displayed
+ let s:tlist_file_count = s:tlist_file_count - 1
+
+ if g:Tlist_Show_One_File
+ " If the tags for only one file is displayed and if we just
+ " now removed that file, then invalidate the current file idx
+ if s:tlist_cur_file_idx == fidx
+ let s:tlist_cur_file_idx = -1
+ endif
+ endif
+endfunction
+
+" Tlist_Window_Goto_Window
+" Goto the taglist window
+function! s:Tlist_Window_Goto_Window()
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ if winnr() != winnum
+ call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w')
+ endif
+ endif
+endfunction
+
+" Tlist_Window_Create
+" Create a new taglist window. If it is already open, jump to it
+function! s:Tlist_Window_Create()
+ call s:Tlist_Log_Msg('Tlist_Window_Create()')
+ " If the window is open, jump to it
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ " Jump to the existing window
+ if winnr() != winnum
+ exe winnum . 'wincmd w'
+ endif
+ return
+ endif
+
+ " If used with winmanager don't open windows. Winmanager will handle
+ " the window/buffer management
+ if s:tlist_app_name == "winmanager"
+ return
+ endif
+
+ " Create a new window. If user prefers a horizontal window, then open
+ " a horizontally split window. Otherwise open a vertically split
+ " window
+ if g:Tlist_Use_Horiz_Window
+ " Open a horizontally split window
+ let win_dir = 'botright'
+ " Horizontal window height
+ let win_size = g:Tlist_WinHeight
+ else
+ if s:tlist_winsize_chgd == -1
+ " Open a vertically split window. Increase the window size, if
+ " needed, to accomodate the new window
+ if g:Tlist_Inc_Winwidth &&
+ \ &columns < (80 + g:Tlist_WinWidth)
+ " Save the original window position
+ let s:tlist_pre_winx = getwinposx()
+ let s:tlist_pre_winy = getwinposy()
+
+ " one extra column is needed to include the vertical split
+ let &columns= &columns + g:Tlist_WinWidth + 1
+
+ let s:tlist_winsize_chgd = 1
+ else
+ let s:tlist_winsize_chgd = 0
+ endif
+ endif
+
+ if g:Tlist_Use_Right_Window
+ " Open the window at the rightmost place
+ let win_dir = 'botright vertical'
+ else
+ " Open the window at the leftmost place
+ let win_dir = 'topleft vertical'
+ endif
+ let win_size = g:Tlist_WinWidth
+ endif
+
+ " If the tag listing temporary buffer already exists, then reuse it.
+ " Otherwise create a new buffer
+ let bufnum = bufnr(g:TagList_title)
+ if bufnum == -1
+ " Create a new buffer
+ let wcmd = g:TagList_title
+ else
+ " Edit the existing buffer
+ let wcmd = '+buffer' . bufnum
+ endif
+
+ " Create the taglist window
+ exe 'silent! ' . win_dir . ' ' . win_size . 'split ' . wcmd
+
+ " Save the new window position
+ let s:tlist_winx = getwinposx()
+ let s:tlist_winy = getwinposy()
+
+ " Initialize the taglist window
+ call s:Tlist_Window_Init()
+endfunction
+
+" Tlist_Window_Zoom
+" Zoom (maximize/minimize) the taglist window
+function! s:Tlist_Window_Zoom()
+ if s:tlist_win_maximized
+ " Restore the window back to the previous size
+ if g:Tlist_Use_Horiz_Window
+ exe 'resize ' . g:Tlist_WinHeight
+ else
+ exe 'vert resize ' . g:Tlist_WinWidth
+ endif
+ let s:tlist_win_maximized = 0
+ else
+ " Set the window size to the maximum possible without closing other
+ " windows
+ if g:Tlist_Use_Horiz_Window
+ resize
+ else
+ vert resize
+ endif
+ let s:tlist_win_maximized = 1
+ endif
+endfunction
+
+" Tlist_Ballon_Expr
+" When the mouse cursor is over a tag in the taglist window, display the
+" tag prototype (balloon)
+function! Tlist_Ballon_Expr()
+ " Get the file index
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(v:beval_lnum)
+ if fidx == -1
+ return ''
+ endif
+
+ " Get the tag output line for the current tag
+ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, v:beval_lnum)
+ if tidx == 0
+ return ''
+ endif
+
+ " Get the tag search pattern and display it
+ return s:Tlist_Get_Tag_Prototype(fidx, tidx)
+endfunction
+
+" Tlist_Window_Check_Width
+" Check the width of the taglist window. For horizontally split windows, the
+" 'winfixheight' option is used to fix the height of the window. For
+" vertically split windows, Vim doesn't support the 'winfixwidth' option. So
+" need to handle window width changes from this function.
+function! s:Tlist_Window_Check_Width()
+ let tlist_winnr = bufwinnr(g:TagList_title)
+ if tlist_winnr == -1
+ return
+ endif
+
+ let width = winwidth(tlist_winnr)
+ if width != g:Tlist_WinWidth
+ call s:Tlist_Log_Msg("Tlist_Window_Check_Width: Changing window " .
+ \ "width from " . width . " to " . g:Tlist_WinWidth)
+ let save_winnr = winnr()
+ if save_winnr != tlist_winnr
+ call s:Tlist_Exe_Cmd_No_Acmds(tlist_winnr . 'wincmd w')
+ endif
+ exe 'vert resize ' . g:Tlist_WinWidth
+ if save_winnr != tlist_winnr
+ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p')
+ endif
+ endif
+endfunction
+
+" Tlist_Window_Exit_Only_Window
+" If the 'Tlist_Exit_OnlyWindow' option is set, then exit Vim if only the
+" taglist window is present.
+function! s:Tlist_Window_Exit_Only_Window()
+ " Before quitting Vim, delete the taglist buffer so that
+ " the '0 mark is correctly set to the previous buffer.
+ if v:version < 700
+ if winbufnr(2) == -1
+ bdelete
+ quit
+ endif
+ else
+ if winbufnr(2) == -1
+ if tabpagenr('$') == 1
+ " Only one tag page is present
+ bdelete
+ quit
+ else
+ " More than one tab page is present. Close only the current
+ " tab page
+ close
+ endif
+ endif
+ endif
+endfunction
+
+" Tlist_Window_Init
+" Set the default options for the taglist window
+function! s:Tlist_Window_Init()
+ call s:Tlist_Log_Msg('Tlist_Window_Init()')
+
+ " The 'readonly' option should not be set for the taglist buffer.
+ " If Vim is started as "view/gview" or if the ":view" command is
+ " used, then the 'readonly' option is set for all the buffers.
+ " Unset it for the taglist buffer
+ setlocal noreadonly
+
+ " Set the taglist buffer filetype to taglist
+ setlocal filetype=taglist
+
+ " Define taglist window element highlighting
+ syntax match TagListComment '^" .*'
+ syntax match TagListFileName '^[^" ].*$'
+ syntax match TagListTitle '^ \S.*$'
+ syntax match TagListTagScope '\s\[.\{-\}\]$'
+
+ " Define the highlighting only if colors are supported
+ if has('gui_running') || &t_Co > 2
+ " Colors to highlight various taglist window elements
+ " If user defined highlighting group exists, then use them.
+ " Otherwise, use default highlight groups.
+ if hlexists('MyTagListTagName')
+ highlight link TagListTagName MyTagListTagName
+ else
+ highlight default link TagListTagName Search
+ endif
+ " Colors to highlight comments and titles
+ if hlexists('MyTagListComment')
+ highlight link TagListComment MyTagListComment
+ else
+ highlight clear TagListComment
+ highlight default link TagListComment Comment
+ endif
+ if hlexists('MyTagListTitle')
+ highlight link TagListTitle MyTagListTitle
+ else
+ highlight clear TagListTitle
+ highlight default link TagListTitle Title
+ endif
+ if hlexists('MyTagListFileName')
+ highlight link TagListFileName MyTagListFileName
+ else
+ highlight clear TagListFileName
+ highlight default TagListFileName guibg=Grey ctermbg=darkgray
+ \ guifg=white ctermfg=white
+ endif
+ if hlexists('MyTagListTagScope')
+ highlight link TagListTagScope MyTagListTagScope
+ else
+ highlight clear TagListTagScope
+ highlight default link TagListTagScope Identifier
+ endif
+ else
+ highlight default TagListTagName term=reverse cterm=reverse
+ endif
+
+ " Folding related settings
+ setlocal foldenable
+ setlocal foldminlines=0
+ setlocal foldmethod=manual
+ setlocal foldlevel=9999
+ if g:Tlist_Enable_Fold_Column
+ setlocal foldcolumn=3
+ else
+ setlocal foldcolumn=0
+ endif
+ setlocal foldtext=v:folddashes.getline(v:foldstart)
+
+ if s:tlist_app_name != "winmanager"
+ " Mark buffer as scratch
+ silent! setlocal buftype=nofile
+ if s:tlist_app_name == "none"
+ silent! setlocal bufhidden=delete
+ endif
+ silent! setlocal noswapfile
+ " Due to a bug in Vim 6.0, the winbufnr() function fails for unlisted
+ " buffers. So if the taglist buffer is unlisted, multiple taglist
+ " windows will be opened. This bug is fixed in Vim 6.1 and above
+ if v:version >= 601
+ silent! setlocal nobuflisted
+ endif
+ endif
+
+ silent! setlocal nowrap
+
+ " If the 'number' option is set in the source window, it will affect the
+ " taglist window. So forcefully disable 'number' option for the taglist
+ " window
+ silent! setlocal nonumber
+
+ " Use fixed height when horizontally split window is used
+ if g:Tlist_Use_Horiz_Window
+ if v:version >= 602
+ set winfixheight
+ endif
+ endif
+ if !g:Tlist_Use_Horiz_Window && v:version >= 700
+ set winfixwidth
+ endif
+
+ " Setup balloon evaluation to display tag prototype
+ if v:version >= 700 && has('balloon_eval')
+ setlocal balloonexpr=Tlist_Ballon_Expr()
+ set ballooneval
+ endif
+
+ " Setup the cpoptions properly for the maps to work
+ let old_cpoptions = &cpoptions
+ set cpoptions&vim
+
+ " Create buffer local mappings for jumping to the tags and sorting the list
+ nnoremap <buffer> <silent> <CR>
+ \ :call <SID>Tlist_Window_Jump_To_Tag('useopen')<CR>
+ nnoremap <buffer> <silent> o
+ \ :call <SID>Tlist_Window_Jump_To_Tag('newwin')<CR>
+ nnoremap <buffer> <silent> p
+ \ :call <SID>Tlist_Window_Jump_To_Tag('preview')<CR>
+ nnoremap <buffer> <silent> P
+ \ :call <SID>Tlist_Window_Jump_To_Tag('prevwin')<CR>
+ if v:version >= 700
+ nnoremap <buffer> <silent> t
+ \ :call <SID>Tlist_Window_Jump_To_Tag('checktab')<CR>
+ nnoremap <buffer> <silent> <C-t>
+ \ :call <SID>Tlist_Window_Jump_To_Tag('newtab')<CR>
+ endif
+ nnoremap <buffer> <silent> <2-LeftMouse>
+ \ :call <SID>Tlist_Window_Jump_To_Tag('useopen')<CR>
+ nnoremap <buffer> <silent> s
+ \ :call <SID>Tlist_Change_Sort('cmd', 'toggle', '')<CR>
+ nnoremap <buffer> <silent> + :silent! foldopen<CR>
+ nnoremap <buffer> <silent> - :silent! foldclose<CR>
+ nnoremap <buffer> <silent> * :silent! %foldopen!<CR>
+ nnoremap <buffer> <silent> = :silent! %foldclose<CR>
+ nnoremap <buffer> <silent> <kPlus> :silent! foldopen<CR>
+ nnoremap <buffer> <silent> <kMinus> :silent! foldclose<CR>
+ nnoremap <buffer> <silent> <kMultiply> :silent! %foldopen!<CR>
+ nnoremap <buffer> <silent> <Space> :call <SID>Tlist_Window_Show_Info()<CR>
+ nnoremap <buffer> <silent> u :call <SID>Tlist_Window_Update_File()<CR>
+ nnoremap <buffer> <silent> d :call <SID>Tlist_Remove_File(-1, 1)<CR>
+ nnoremap <buffer> <silent> x :call <SID>Tlist_Window_Zoom()<CR>
+ nnoremap <buffer> <silent> [[ :call <SID>Tlist_Window_Move_To_File(-1)<CR>
+ nnoremap <buffer> <silent> <BS> :call <SID>Tlist_Window_Move_To_File(-1)<CR>
+ nnoremap <buffer> <silent> ]] :call <SID>Tlist_Window_Move_To_File(1)<CR>
+ nnoremap <buffer> <silent> <Tab> :call <SID>Tlist_Window_Move_To_File(1)<CR>
+ nnoremap <buffer> <silent> <F1> :call <SID>Tlist_Window_Toggle_Help_Text()<CR>
+ nnoremap <buffer> <silent> q :close<CR>
+
+ " Insert mode mappings
+ inoremap <buffer> <silent> <CR>
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('useopen')<CR>
+ " Windows needs return
+ inoremap <buffer> <silent> <Return>
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('useopen')<CR>
+ inoremap <buffer> <silent> o
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('newwin')<CR>
+ inoremap <buffer> <silent> p
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('preview')<CR>
+ inoremap <buffer> <silent> P
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('prevwin')<CR>
+ if v:version >= 700
+ inoremap <buffer> <silent> t
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('checktab')<CR>
+ inoremap <buffer> <silent> <C-t>
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('newtab')<CR>
+ endif
+ inoremap <buffer> <silent> <2-LeftMouse>
+ \ <C-o>:call <SID>Tlist_Window_Jump_To_Tag('useopen')<CR>
+ inoremap <buffer> <silent> s
+ \ <C-o>:call <SID>Tlist_Change_Sort('cmd', 'toggle', '')<CR>
+ inoremap <buffer> <silent> + <C-o>:silent! foldopen<CR>
+ inoremap <buffer> <silent> - <C-o>:silent! foldclose<CR>
+ inoremap <buffer> <silent> * <C-o>:silent! %foldopen!<CR>
+ inoremap <buffer> <silent> = <C-o>:silent! %foldclose<CR>
+ inoremap <buffer> <silent> <kPlus> <C-o>:silent! foldopen<CR>
+ inoremap <buffer> <silent> <kMinus> <C-o>:silent! foldclose<CR>
+ inoremap <buffer> <silent> <kMultiply> <C-o>:silent! %foldopen!<CR>
+ inoremap <buffer> <silent> <Space> <C-o>:call
+ \ <SID>Tlist_Window_Show_Info()<CR>
+ inoremap <buffer> <silent> u
+ \ <C-o>:call <SID>Tlist_Window_Update_File()<CR>
+ inoremap <buffer> <silent> d <C-o>:call <SID>Tlist_Remove_File(-1, 1)<CR>
+ inoremap <buffer> <silent> x <C-o>:call <SID>Tlist_Window_Zoom()<CR>
+ inoremap <buffer> <silent> [[ <C-o>:call <SID>Tlist_Window_Move_To_File(-1)<CR>
+ inoremap <buffer> <silent> <BS> <C-o>:call <SID>Tlist_Window_Move_To_File(-1)<CR>
+ inoremap <buffer> <silent> ]] <C-o>:call <SID>Tlist_Window_Move_To_File(1)<CR>
+ inoremap <buffer> <silent> <Tab> <C-o>:call <SID>Tlist_Window_Move_To_File(1)<CR>
+ inoremap <buffer> <silent> <F1> <C-o>:call <SID>Tlist_Window_Toggle_Help_Text()<CR>
+ inoremap <buffer> <silent> q <C-o>:close<CR>
+
+ " Map single left mouse click if the user wants this functionality
+ if g:Tlist_Use_SingleClick == 1
+ " Contributed by Bindu Wavell
+ " attempt to perform single click mapping, it would be much
+ " nicer if we could nnoremap <buffer> ... however vim does
+ " not fire the <buffer> <leftmouse> when you use the mouse
+ " to enter a buffer.
+ let clickmap = ':if bufname("%") =~ "__Tag_List__" <bar> ' .
+ \ 'call <SID>Tlist_Window_Jump_To_Tag("useopen") ' .
+ \ '<bar> endif <CR>'
+ if maparg('<leftmouse>', 'n') == ''
+ " no mapping for leftmouse
+ exe ':nnoremap <silent> <leftmouse> <leftmouse>' . clickmap
+ else
+ " we have a mapping
+ let mapcmd = ':nnoremap <silent> <leftmouse> <leftmouse>'
+ let mapcmd = mapcmd . substitute(substitute(
+ \ maparg('<leftmouse>', 'n'), '|', '<bar>', 'g'),
+ \ '\c^<leftmouse>', '', '')
+ let mapcmd = mapcmd . clickmap
+ exe mapcmd
+ endif
+ endif
+
+ " Define the taglist autocommands
+ augroup TagListAutoCmds
+ autocmd!
+ " Display the tag prototype for the tag under the cursor.
+ autocmd CursorHold __Tag_List__ call s:Tlist_Window_Show_Info()
+ " Highlight the current tag periodically
+ autocmd CursorHold * silent call s:Tlist_Window_Highlight_Tag(
+ \ fnamemodify(bufname('%'), ':p'), line('.'), 1, 0)
+
+ " Adjust the Vim window width when taglist window is closed
+ autocmd BufUnload __Tag_List__ call s:Tlist_Post_Close_Cleanup()
+ " Close the fold for this buffer when leaving the buffer
+ if g:Tlist_File_Fold_Auto_Close
+ autocmd BufEnter * silent
+ \ call s:Tlist_Window_Open_File_Fold(expand('<abuf>'))
+ endif
+ " Exit Vim itself if only the taglist window is present (optional)
+ if g:Tlist_Exit_OnlyWindow
+ autocmd BufEnter __Tag_List__ nested
+ \ call s:Tlist_Window_Exit_Only_Window()
+ endif
+ if s:tlist_app_name != "winmanager" &&
+ \ !g:Tlist_Process_File_Always &&
+ \ (!has('gui_running') || !g:Tlist_Show_Menu)
+ " Auto refresh the taglist window
+ autocmd BufEnter * call s:Tlist_Refresh()
+ endif
+
+ if !g:Tlist_Use_Horiz_Window
+ if v:version < 700
+ autocmd WinEnter * call s:Tlist_Window_Check_Width()
+ endif
+ endif
+ if v:version >= 700
+ autocmd TabEnter * silent call s:Tlist_Refresh_Folds()
+ endif
+ augroup end
+
+ " Restore the previous cpoptions settings
+ let &cpoptions = old_cpoptions
+endfunction
+
+" Tlist_Window_Refresh
+" Display the tags for all the files in the taglist window
+function! s:Tlist_Window_Refresh()
+ call s:Tlist_Log_Msg('Tlist_Window_Refresh()')
+ " Set report option to a huge value to prevent informational messages
+ " while deleting the lines
+ let old_report = &report
+ set report=99999
+
+ " Mark the buffer as modifiable
+ setlocal modifiable
+
+ " Delete the contents of the buffer to the black-hole register
+ silent! %delete _
+
+ " As we have cleared the taglist window, mark all the files
+ " as not visible
+ let i = 0
+ while i < s:tlist_file_count
+ let s:tlist_{i}_visible = 0
+ let i = i + 1
+ endwhile
+
+ if g:Tlist_Compact_Format == 0
+ " Display help in non-compact mode
+ call s:Tlist_Window_Display_Help()
+ endif
+
+ " Mark the buffer as not modifiable
+ setlocal nomodifiable
+
+ " Restore the report option
+ let &report = old_report
+
+ " If the tags for only one file should be displayed in the taglist
+ " window, then no need to add the tags here. The bufenter autocommand
+ " will add the tags for that file.
+ if g:Tlist_Show_One_File
+ return
+ endif
+
+ " List all the tags for the previously processed files
+ " Do this only if taglist is configured to display tags for more than
+ " one file. Otherwise, when Tlist_Show_One_File is configured,
+ " tags for the wrong file will be displayed.
+ let i = 0
+ while i < s:tlist_file_count
+ call s:Tlist_Window_Refresh_File(s:tlist_{i}_filename,
+ \ s:tlist_{i}_filetype)
+ let i = i + 1
+ endwhile
+
+ if g:Tlist_Auto_Update
+ " Add and list the tags for all buffers in the Vim buffer list
+ let i = 1
+ let last_bufnum = bufnr('$')
+ while i <= last_bufnum
+ if buflisted(i)
+ let fname = fnamemodify(bufname(i), ':p')
+ let ftype = s:Tlist_Get_Buffer_Filetype(i)
+ " If the file doesn't support tag listing, skip it
+ if !s:Tlist_Skip_File(fname, ftype)
+ call s:Tlist_Window_Refresh_File(fname, ftype)
+ endif
+ endif
+ let i = i + 1
+ endwhile
+ endif
+
+ " If Tlist_File_Fold_Auto_Close option is set, then close all the folds
+ if g:Tlist_File_Fold_Auto_Close
+ " Close all the folds
+ silent! %foldclose
+ endif
+
+ " Move the cursor to the top of the taglist window
+ normal! gg
+endfunction
+
+" Tlist_Post_Close_Cleanup()
+" Close the taglist window and adjust the Vim window width
+function! s:Tlist_Post_Close_Cleanup()
+ call s:Tlist_Log_Msg('Tlist_Post_Close_Cleanup()')
+ " Mark all the files as not visible
+ let i = 0
+ while i < s:tlist_file_count
+ let s:tlist_{i}_visible = 0
+ let i = i + 1
+ endwhile
+
+ " Remove the taglist autocommands
+ silent! autocmd! TagListAutoCmds
+
+ " Clear all the highlights
+ match none
+
+ silent! syntax clear TagListTitle
+ silent! syntax clear TagListComment
+ silent! syntax clear TagListTagScope
+
+ " Remove the left mouse click mapping if it was setup initially
+ if g:Tlist_Use_SingleClick
+ if hasmapto('<LeftMouse>')
+ nunmap <LeftMouse>
+ endif
+ endif
+
+ if s:tlist_app_name != "winmanager"
+ if g:Tlist_Use_Horiz_Window || g:Tlist_Inc_Winwidth == 0 ||
+ \ s:tlist_winsize_chgd != 1 ||
+ \ &columns < (80 + g:Tlist_WinWidth)
+ " No need to adjust window width if using horizontally split taglist
+ " window or if columns is less than 101 or if the user chose not to
+ " adjust the window width
+ else
+ " If the user didn't manually move the window, then restore the window
+ " position to the pre-taglist position
+ if s:tlist_pre_winx != -1 && s:tlist_pre_winy != -1 &&
+ \ getwinposx() == s:tlist_winx &&
+ \ getwinposy() == s:tlist_winy
+ exe 'winpos ' . s:tlist_pre_winx . ' ' . s:tlist_pre_winy
+ endif
+
+ " Adjust the Vim window width
+ let &columns= &columns - (g:Tlist_WinWidth + 1)
+ endif
+ endif
+
+ let s:tlist_winsize_chgd = -1
+
+ " Reset taglist state variables
+ if s:tlist_app_name == "winmanager"
+ let s:tlist_app_name = "none"
+ endif
+ let s:tlist_window_initialized = 0
+endfunction
+
+" Tlist_Window_Refresh_File()
+" List the tags defined in the specified file in a Vim window
+function! s:Tlist_Window_Refresh_File(filename, ftype)
+ call s:Tlist_Log_Msg('Tlist_Window_Refresh_File (' . a:filename . ')')
+ " First check whether the file already exists
+ let fidx = s:Tlist_Get_File_Index(a:filename)
+ if fidx != -1
+ let file_listed = 1
+ else
+ let file_listed = 0
+ endif
+
+ if !file_listed
+ " Check whether this file is removed based on user request
+ " If it is, then don't display the tags for this file
+ if s:Tlist_User_Removed_File(a:filename)
+ return
+ endif
+ endif
+
+ if file_listed && s:tlist_{fidx}_visible
+ " Check whether the file tags are currently valid
+ if s:tlist_{fidx}_valid
+ " Goto the first line in the file
+ exe s:tlist_{fidx}_start
+
+ " If the line is inside a fold, open the fold
+ if foldclosed('.') != -1
+ exe "silent! " . s:tlist_{fidx}_start . "," .
+ \ s:tlist_{fidx}_end . "foldopen!"
+ endif
+ return
+ endif
+
+ " Discard and remove the tags for this file from display
+ call s:Tlist_Discard_TagInfo(fidx)
+ call s:Tlist_Window_Remove_File_From_Display(fidx)
+ endif
+
+ " Process and generate a list of tags defined in the file
+ if !file_listed || !s:tlist_{fidx}_valid
+ let ret_fidx = s:Tlist_Process_File(a:filename, a:ftype)
+ if ret_fidx == -1
+ return
+ endif
+ let fidx = ret_fidx
+ endif
+
+ " Set report option to a huge value to prevent informational messages
+ " while adding lines to the taglist window
+ let old_report = &report
+ set report=99999
+
+ if g:Tlist_Show_One_File
+ " Remove the previous file
+ if s:tlist_cur_file_idx != -1
+ call s:Tlist_Window_Remove_File_From_Display(s:tlist_cur_file_idx)
+ let s:tlist_{s:tlist_cur_file_idx}_visible = 0
+ let s:tlist_{s:tlist_cur_file_idx}_start = 0
+ let s:tlist_{s:tlist_cur_file_idx}_end = 0
+ endif
+ let s:tlist_cur_file_idx = fidx
+ endif
+
+ " Mark the buffer as modifiable
+ setlocal modifiable
+
+ " Add new files to the end of the window. For existing files, add them at
+ " the same line where they were previously present. If the file is not
+ " visible, then add it at the end
+ if s:tlist_{fidx}_start == 0 || !s:tlist_{fidx}_visible
+ if g:Tlist_Compact_Format
+ let s:tlist_{fidx}_start = line('$')
+ else
+ let s:tlist_{fidx}_start = line('$') + 1
+ endif
+ endif
+
+ let s:tlist_{fidx}_visible = 1
+
+ " Goto the line where this file should be placed
+ if g:Tlist_Compact_Format
+ exe s:tlist_{fidx}_start
+ else
+ exe s:tlist_{fidx}_start - 1
+ endif
+
+ let txt = fnamemodify(s:tlist_{fidx}_filename, ':t') . ' (' .
+ \ fnamemodify(s:tlist_{fidx}_filename, ':p:h') . ')'
+ if g:Tlist_Compact_Format == 0
+ silent! put =txt
+ else
+ silent! put! =txt
+ " Move to the next line
+ exe line('.') + 1
+ endif
+ let file_start = s:tlist_{fidx}_start
+
+ " Add the tag names grouped by tag type to the buffer with a title
+ let i = 1
+ let ttype_cnt = s:tlist_{a:ftype}_count
+ while i <= ttype_cnt
+ let ttype = s:tlist_{a:ftype}_{i}_name
+ " Add the tag type only if there are tags for that type
+ let fidx_ttype = 's:tlist_' . fidx . '_' . ttype
+ let ttype_txt = {fidx_ttype}
+ if ttype_txt != ''
+ let txt = ' ' . s:tlist_{a:ftype}_{i}_fullname
+ if g:Tlist_Compact_Format == 0
+ let ttype_start_lnum = line('.') + 1
+ silent! put =txt
+ else
+ let ttype_start_lnum = line('.')
+ silent! put! =txt
+ endif
+ silent! put =ttype_txt
+
+ let {fidx_ttype}_offset = ttype_start_lnum - file_start
+
+ " create a fold for this tag type
+ let fold_start = ttype_start_lnum
+ let fold_end = fold_start + {fidx_ttype}_count
+ exe fold_start . ',' . fold_end . 'fold'
+
+ " Adjust the cursor position
+ if g:Tlist_Compact_Format == 0
+ exe ttype_start_lnum + {fidx_ttype}_count
+ else
+ exe ttype_start_lnum + {fidx_ttype}_count + 1
+ endif
+
+ if g:Tlist_Compact_Format == 0
+ " Separate the tag types by a empty line
+ silent! put =''
+ endif
+ endif
+ let i = i + 1
+ endwhile
+
+ if s:tlist_{fidx}_tag_count == 0
+ if g:Tlist_Compact_Format == 0
+ silent! put =''
+ endif
+ endif
+
+ let s:tlist_{fidx}_end = line('.') - 1
+
+ " Create a fold for the entire file
+ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'fold'
+ exe 'silent! ' . s:tlist_{fidx}_start . ',' .
+ \ s:tlist_{fidx}_end . 'foldopen!'
+
+ " Goto the starting line for this file,
+ exe s:tlist_{fidx}_start
+
+ if s:tlist_app_name == "winmanager"
+ " To handle a bug in the winmanager plugin, add a space at the
+ " last line
+ call setline('$', ' ')
+ endif
+
+ " Mark the buffer as not modifiable
+ setlocal nomodifiable
+
+ " Restore the report option
+ let &report = old_report
+
+ " Update the start and end line numbers for all the files following this
+ " file
+ let start = s:tlist_{fidx}_start
+ " include the empty line after the last line
+ if g:Tlist_Compact_Format
+ let end = s:tlist_{fidx}_end
+ else
+ let end = s:tlist_{fidx}_end + 1
+ endif
+ call s:Tlist_Window_Update_Line_Offsets(fidx + 1, 1, end - start + 1)
+
+ " Now that we have updated the taglist window, update the tags
+ " menu (if present)
+ if g:Tlist_Show_Menu
+ call s:Tlist_Menu_Update_File(1)
+ endif
+endfunction
+
+" Tlist_Init_File
+" Initialize the variables for a new file
+function! s:Tlist_Init_File(filename, ftype)
+ call s:Tlist_Log_Msg('Tlist_Init_File (' . a:filename . ')')
+ " Add new files at the end of the list
+ let fidx = s:tlist_file_count
+ let s:tlist_file_count = s:tlist_file_count + 1
+ " Add the new file name to the taglist list of file names
+ let s:tlist_file_names = s:tlist_file_names . a:filename . "\n"
+
+ " Initialize the file variables
+ let s:tlist_{fidx}_filename = a:filename
+ let s:tlist_{fidx}_sort_type = g:Tlist_Sort_Type
+ let s:tlist_{fidx}_filetype = a:ftype
+ let s:tlist_{fidx}_mtime = -1
+ let s:tlist_{fidx}_start = 0
+ let s:tlist_{fidx}_end = 0
+ let s:tlist_{fidx}_valid = 0
+ let s:tlist_{fidx}_visible = 0
+ let s:tlist_{fidx}_tag_count = 0
+ let s:tlist_{fidx}_menu_cmd = ''
+
+ " Initialize the tag type variables
+ let i = 1
+ while i <= s:tlist_{a:ftype}_count
+ let ttype = s:tlist_{a:ftype}_{i}_name
+ let s:tlist_{fidx}_{ttype} = ''
+ let s:tlist_{fidx}_{ttype}_offset = 0
+ let s:tlist_{fidx}_{ttype}_count = 0
+ let i = i + 1
+ endwhile
+
+ return fidx
+endfunction
+
+" Tlist_Get_Tag_Type_By_Tag
+" Return the tag type for the specified tag index
+function! s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx)
+ let ttype_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_type'
+
+ " Already parsed and have the tag name
+ if exists(ttype_var)
+ return {ttype_var}
+ endif
+
+ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag
+ let {ttype_var} = s:Tlist_Extract_Tagtype(tag_line)
+
+ return {ttype_var}
+endfunction
+
+" Tlist_Get_Tag_Prototype
+function! s:Tlist_Get_Tag_Prototype(fidx, tidx)
+ let tproto_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_proto'
+
+ " Already parsed and have the tag prototype
+ if exists(tproto_var)
+ return {tproto_var}
+ endif
+
+ " Parse and extract the tag prototype
+ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag
+ let start = stridx(tag_line, '/^') + 2
+ let end = stridx(tag_line, '/;"' . "\t")
+ if tag_line[end - 1] == '$'
+ let end = end -1
+ endif
+ let tag_proto = strpart(tag_line, start, end - start)
+ let {tproto_var} = substitute(tag_proto, '\s*', '', '')
+
+ return {tproto_var}
+endfunction
+
+" Tlist_Get_Tag_SearchPat
+function! s:Tlist_Get_Tag_SearchPat(fidx, tidx)
+ let tpat_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_searchpat'
+
+ " Already parsed and have the tag search pattern
+ if exists(tpat_var)
+ return {tpat_var}
+ endif
+
+ " Parse and extract the tag search pattern
+ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag
+ let start = stridx(tag_line, '/^') + 2
+ let end = stridx(tag_line, '/;"' . "\t")
+ if tag_line[end - 1] == '$'
+ let end = end -1
+ endif
+ let {tpat_var} = '\V\^' . strpart(tag_line, start, end - start) .
+ \ (tag_line[end] == '$' ? '\$' : '')
+
+ return {tpat_var}
+endfunction
+
+" Tlist_Get_Tag_Linenum
+" Return the tag line number, given the tag index
+function! s:Tlist_Get_Tag_Linenum(fidx, tidx)
+ let tline_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_linenum'
+
+ " Already parsed and have the tag line number
+ if exists(tline_var)
+ return {tline_var}
+ endif
+
+ " Parse and extract the tag line number
+ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag
+ let start = strridx(tag_line, 'line:') + 5
+ let end = strridx(tag_line, "\t")
+ if end < start
+ let {tline_var} = strpart(tag_line, start) + 0
+ else
+ let {tline_var} = strpart(tag_line, start, end - start) + 0
+ endif
+
+ return {tline_var}
+endfunction
+
+" Tlist_Parse_Tagline
+" Parse a tag line from the ctags output. Separate the tag output based on the
+" tag type and store it in the tag type variable.
+" The format of each line in the ctags output is:
+"
+" tag_name<TAB>file_name<TAB>ex_cmd;"<TAB>extension_fields
+"
+function! s:Tlist_Parse_Tagline(tag_line)
+ if a:tag_line == ''
+ " Skip empty lines
+ return
+ endif
+
+ " Extract the tag type
+ let ttype = s:Tlist_Extract_Tagtype(a:tag_line)
+
+ " Make sure the tag type is a valid and supported one
+ if ttype == '' || stridx(s:ctags_flags, ttype) == -1
+ " Line is not in proper tags format or Tag type is not supported
+ return
+ endif
+
+ " Update the total tag count
+ let s:tidx = s:tidx + 1
+
+ " The following variables are used to optimize this code. Vim is slow in
+ " using curly brace names. To reduce the amount of processing needed, the
+ " curly brace variables are pre-processed here
+ let fidx_tidx = 's:tlist_' . s:fidx . '_' . s:tidx
+ let fidx_ttype = 's:tlist_' . s:fidx . '_' . ttype
+
+ " Update the count of this tag type
+ let ttype_idx = {fidx_ttype}_count + 1
+ let {fidx_ttype}_count = ttype_idx
+
+ " Store the ctags output for this tag
+ let {fidx_tidx}_tag = a:tag_line
+
+ " Store the tag index and the tag type index (back pointers)
+ let {fidx_ttype}_{ttype_idx} = s:tidx
+ let {fidx_tidx}_ttype_idx = ttype_idx
+
+ " Extract the tag name
+ let tag_name = strpart(a:tag_line, 0, stridx(a:tag_line, "\t"))
+
+ " Extract the tag scope/prototype
+ if g:Tlist_Display_Prototype
+ let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(s:fidx, s:tidx)
+ else
+ let ttxt = ' ' . tag_name
+
+ " Add the tag scope, if it is available and is configured. Tag
+ " scope is the last field after the 'line:<num>\t' field
+ if g:Tlist_Display_Tag_Scope
+ let tag_scope = s:Tlist_Extract_Tag_Scope(a:tag_line)
+ if tag_scope != ''
+ let ttxt = ttxt . ' [' . tag_scope . ']'
+ endif
+ endif
+ endif
+
+ " Add this tag to the tag type variable
+ let {fidx_ttype} = {fidx_ttype} . ttxt . "\n"
+
+ " Save the tag name
+ let {fidx_tidx}_tag_name = tag_name
+endfunction
+
+" Tlist_Process_File
+" Get the list of tags defined in the specified file and store them
+" in Vim variables. Returns the file index where the tags are stored.
+function! s:Tlist_Process_File(filename, ftype)
+ call s:Tlist_Log_Msg('Tlist_Process_File (' . a:filename . ', ' .
+ \ a:ftype . ')')
+ " Check whether this file is supported
+ if s:Tlist_Skip_File(a:filename, a:ftype)
+ return -1
+ endif
+
+ " If the tag types for this filetype are not yet created, then create
+ " them now
+ let var = 's:tlist_' . a:ftype . '_count'
+ if !exists(var)
+ if s:Tlist_FileType_Init(a:ftype) == 0
+ return -1
+ endif
+ endif
+
+ " If this file is already processed, then use the cached values
+ let fidx = s:Tlist_Get_File_Index(a:filename)
+ if fidx == -1
+ " First time, this file is loaded
+ let fidx = s:Tlist_Init_File(a:filename, a:ftype)
+ else
+ " File was previously processed. Discard the tag information
+ call s:Tlist_Discard_TagInfo(fidx)
+ endif
+
+ let s:tlist_{fidx}_valid = 1
+
+ " Exuberant ctags arguments to generate a tag list
+ let ctags_args = ' -f - --format=2 --excmd=pattern --fields=nks '
+
+ " Form the ctags argument depending on the sort type
+ if s:tlist_{fidx}_sort_type == 'name'
+ let ctags_args = ctags_args . '--sort=yes'
+ else
+ let ctags_args = ctags_args . '--sort=no'
+ endif
+
+ " Add the filetype specific arguments
+ let ctags_args = ctags_args . ' ' . s:tlist_{a:ftype}_ctags_args
+
+ " Ctags command to produce output with regexp for locating the tags
+ let ctags_cmd = g:Tlist_Ctags_Cmd . ctags_args
+ let ctags_cmd = ctags_cmd . ' "' . a:filename . '"'
+
+ if &shellxquote == '"'
+ " Double-quotes within double-quotes will not work in the
+ " command-line.If the 'shellxquote' option is set to double-quotes,
+ " then escape the double-quotes in the ctags command-line.
+ let ctags_cmd = escape(ctags_cmd, '"')
+ endif
+
+ " In Windows 95, if not using cygwin, disable the 'shellslash'
+ " option. Otherwise, this will cause problems when running the
+ " ctags command.
+ if has('win95') && !has('win32unix')
+ let old_shellslash = &shellslash
+ set noshellslash
+ endif
+
+ if has('win32') && !has('win32unix') && !has('win95')
+ \ && (&shell =~ 'cmd.exe')
+ " Windows does not correctly deal with commands that have more than 1
+ " set of double quotes. It will strip them all resulting in:
+ " 'C:\Program' is not recognized as an internal or external command
+ " operable program or batch file. To work around this, place the
+ " command inside a batch file and call the batch file.
+ " Do this only on Win2K, WinXP and above.
+ " Contributed by: David Fishburn.
+ let s:taglist_tempfile = fnamemodify(tempname(), ':h') .
+ \ '\taglist.cmd'
+ exe 'redir! > ' . s:taglist_tempfile
+ silent echo ctags_cmd
+ redir END
+
+ call s:Tlist_Log_Msg('Cmd inside batch file: ' . ctags_cmd)
+ let ctags_cmd = '"' . s:taglist_tempfile . '"'
+ endif
+
+ call s:Tlist_Log_Msg('Cmd: ' . ctags_cmd)
+
+ " Run ctags and get the tag list
+ let cmd_output = system(ctags_cmd)
+
+ " Restore the value of the 'shellslash' option.
+ if has('win95') && !has('win32unix')
+ let &shellslash = old_shellslash
+ endif
+
+ if exists('s:taglist_tempfile')
+ " Delete the temporary cmd file created on MS-Windows
+ call delete(s:taglist_tempfile)
+ endif
+
+ " Handle errors
+ if v:shell_error
+ let msg = "Taglist: Failed to generate tags for " . a:filename
+ call s:Tlist_Warning_Msg(msg)
+ if cmd_output != ''
+ call s:Tlist_Warning_Msg(cmd_output)
+ endif
+ return fidx
+ endif
+
+ " Store the modification time for the file
+ let s:tlist_{fidx}_mtime = getftime(a:filename)
+
+ " No tags for current file
+ if cmd_output == ''
+ call s:Tlist_Log_Msg('No tags defined in ' . a:filename)
+ return fidx
+ endif
+
+ call s:Tlist_Log_Msg('Generated tags information for ' . a:filename)
+
+ if v:version > 601
+ " The following script local variables are used by the
+ " Tlist_Parse_Tagline() function.
+ let s:ctags_flags = s:tlist_{a:ftype}_ctags_flags
+ let s:fidx = fidx
+ let s:tidx = 0
+
+ " Process the ctags output one line at a time. The substitute()
+ " command is used to parse the tag lines instead of using the
+ " matchstr()/stridx()/strpart() functions for performance reason
+ call substitute(cmd_output, "\\([^\n]\\+\\)\n",
+ \ '\=s:Tlist_Parse_Tagline(submatch(1))', 'g')
+
+ " Save the number of tags for this file
+ let s:tlist_{fidx}_tag_count = s:tidx
+
+ " The following script local variables are no longer needed
+ unlet! s:ctags_flags
+ unlet! s:tidx
+ unlet! s:fidx
+ else
+ " Due to a bug in Vim earlier than version 6.1,
+ " we cannot use substitute() to parse the ctags output.
+ " Instead the slow str*() functions are used
+ let ctags_flags = s:tlist_{a:ftype}_ctags_flags
+ let tidx = 0
+
+ while cmd_output != ''
+ " Extract one line at a time
+ let idx = stridx(cmd_output, "\n")
+ let one_line = strpart(cmd_output, 0, idx)
+ " Remove the line from the tags output
+ let cmd_output = strpart(cmd_output, idx + 1)
+
+ if one_line == ''
+ " Line is not in proper tags format
+ continue
+ endif
+
+ " Extract the tag type
+ let ttype = s:Tlist_Extract_Tagtype(one_line)
+
+ " Make sure the tag type is a valid and supported one
+ if ttype == '' || stridx(ctags_flags, ttype) == -1
+ " Line is not in proper tags format or Tag type is not
+ " supported
+ continue
+ endif
+
+ " Update the total tag count
+ let tidx = tidx + 1
+
+ " The following variables are used to optimize this code. Vim is
+ " slow in using curly brace names. To reduce the amount of
+ " processing needed, the curly brace variables are pre-processed
+ " here
+ let fidx_tidx = 's:tlist_' . fidx . '_' . tidx
+ let fidx_ttype = 's:tlist_' . fidx . '_' . ttype
+
+ " Update the count of this tag type
+ let ttype_idx = {fidx_ttype}_count + 1
+ let {fidx_ttype}_count = ttype_idx
+
+ " Store the ctags output for this tag
+ let {fidx_tidx}_tag = one_line
+
+ " Store the tag index and the tag type index (back pointers)
+ let {fidx_ttype}_{ttype_idx} = tidx
+ let {fidx_tidx}_ttype_idx = ttype_idx
+
+ " Extract the tag name
+ let tag_name = strpart(one_line, 0, stridx(one_line, "\t"))
+
+ " Extract the tag scope/prototype
+ if g:Tlist_Display_Prototype
+ let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(fidx, tidx)
+ else
+ let ttxt = ' ' . tag_name
+
+ " Add the tag scope, if it is available and is configured. Tag
+ " scope is the last field after the 'line:<num>\t' field
+ if g:Tlist_Display_Tag_Scope
+ let tag_scope = s:Tlist_Extract_Tag_Scope(one_line)
+ if tag_scope != ''
+ let ttxt = ttxt . ' [' . tag_scope . ']'
+ endif
+ endif
+ endif
+
+ " Add this tag to the tag type variable
+ let {fidx_ttype} = {fidx_ttype} . ttxt . "\n"
+
+ " Save the tag name
+ let {fidx_tidx}_tag_name = tag_name
+ endwhile
+
+ " Save the number of tags for this file
+ let s:tlist_{fidx}_tag_count = tidx
+ endif
+
+ call s:Tlist_Log_Msg('Processed ' . s:tlist_{fidx}_tag_count .
+ \ ' tags in ' . a:filename)
+
+ return fidx
+endfunction
+
+" Tlist_Update_File
+" Update the tags for a file (if needed)
+function! Tlist_Update_File(filename, ftype)
+ call s:Tlist_Log_Msg('Tlist_Update_File (' . a:filename . ')')
+ " If the file doesn't support tag listing, skip it
+ if s:Tlist_Skip_File(a:filename, a:ftype)
+ return
+ endif
+
+ " Convert the file name to a full path
+ let fname = fnamemodify(a:filename, ':p')
+
+ " First check whether the file already exists
+ let fidx = s:Tlist_Get_File_Index(fname)
+
+ if fidx != -1 && s:tlist_{fidx}_valid
+ " File exists and the tags are valid
+ " Check whether the file was modified after the last tags update
+ " If it is modified, then update the tags
+ if s:tlist_{fidx}_mtime == getftime(fname)
+ return
+ endif
+ else
+ " If the tags were removed previously based on a user request,
+ " as we are going to update the tags (based on the user request),
+ " remove the filename from the deleted list
+ call s:Tlist_Update_Remove_List(fname, 0)
+ endif
+
+ " If the taglist window is opened, update it
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum == -1
+ " Taglist window is not present. Just update the taglist
+ " and return
+ call s:Tlist_Process_File(fname, a:ftype)
+ else
+ if g:Tlist_Show_One_File && s:tlist_cur_file_idx != -1
+ " If tags for only one file are displayed and we are not
+ " updating the tags for that file, then no need to
+ " refresh the taglist window. Otherwise, the taglist
+ " window should be updated.
+ if s:tlist_{s:tlist_cur_file_idx}_filename != fname
+ call s:Tlist_Process_File(fname, a:ftype)
+ return
+ endif
+ endif
+
+ " Save the current window number
+ let save_winnr = winnr()
+
+ " Goto the taglist window
+ call s:Tlist_Window_Goto_Window()
+
+ " Save the cursor position
+ let save_line = line('.')
+ let save_col = col('.')
+
+ " Update the taglist window
+ call s:Tlist_Window_Refresh_File(fname, a:ftype)
+
+ " Restore the cursor position
+ if v:version >= 601
+ call cursor(save_line, save_col)
+ else
+ exe save_line
+ exe 'normal! ' . save_col . '|'
+ endif
+
+ if winnr() != save_winnr
+ " Go back to the original window
+ call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w')
+ endif
+ endif
+
+ " Update the taglist menu
+ if g:Tlist_Show_Menu
+ call s:Tlist_Menu_Update_File(1)
+ endif
+endfunction
+
+" Tlist_Window_Close
+" Close the taglist window
+function! s:Tlist_Window_Close()
+ call s:Tlist_Log_Msg('Tlist_Window_Close()')
+ " Make sure the taglist window exists
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum == -1
+ call s:Tlist_Warning_Msg('Error: Taglist window is not open')
+ return
+ endif
+
+ if winnr() == winnum
+ " Already in the taglist window. Close it and return
+ if winbufnr(2) != -1
+ " If a window other than the taglist window is open,
+ " then only close the taglist window.
+ close
+ endif
+ else
+ " Goto the taglist window, close it and then come back to the
+ " original window
+ let curbufnr = bufnr('%')
+ exe winnum . 'wincmd w'
+ close
+ " Need to jump back to the original window only if we are not
+ " already in that window
+ let winnum = bufwinnr(curbufnr)
+ if winnr() != winnum
+ exe winnum . 'wincmd w'
+ endif
+ endif
+endfunction
+
+" Tlist_Window_Mark_File_Window
+" Mark the current window as the file window to use when jumping to a tag.
+" Only if the current window is a non-plugin, non-preview and non-taglist
+" window
+function! s:Tlist_Window_Mark_File_Window()
+ if getbufvar('%', '&buftype') == '' && !&previewwindow
+ let w:tlist_file_window = "yes"
+ endif
+endfunction
+
+" Tlist_Window_Open
+" Open and refresh the taglist window
+function! s:Tlist_Window_Open()
+ call s:Tlist_Log_Msg('Tlist_Window_Open()')
+ " If the window is open, jump to it
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ " Jump to the existing window
+ if winnr() != winnum
+ exe winnum . 'wincmd w'
+ endif
+ return
+ endif
+
+ if s:tlist_app_name == "winmanager"
+ " Taglist plugin is no longer part of the winmanager app
+ let s:tlist_app_name = "none"
+ endif
+
+ " Get the filename and filetype for the specified buffer
+ let curbuf_name = fnamemodify(bufname('%'), ':p')
+ let curbuf_ftype = s:Tlist_Get_Buffer_Filetype('%')
+ let cur_lnum = line('.')
+
+ " Mark the current window as the desired window to open a file when a tag
+ " is selected.
+ call s:Tlist_Window_Mark_File_Window()
+
+ " Open the taglist window
+ call s:Tlist_Window_Create()
+
+ call s:Tlist_Window_Refresh()
+
+ if g:Tlist_Show_One_File
+ " Add only the current buffer and file
+ "
+ " If the file doesn't support tag listing, skip it
+ if !s:Tlist_Skip_File(curbuf_name, curbuf_ftype)
+ call s:Tlist_Window_Refresh_File(curbuf_name, curbuf_ftype)
+ endif
+ endif
+
+ if g:Tlist_File_Fold_Auto_Close
+ " Open the fold for the current file, as all the folds in
+ " the taglist window are closed
+ let fidx = s:Tlist_Get_File_Index(curbuf_name)
+ if fidx != -1
+ exe "silent! " . s:tlist_{fidx}_start . "," .
+ \ s:tlist_{fidx}_end . "foldopen!"
+ endif
+ endif
+
+ " Highlight the current tag
+ call s:Tlist_Window_Highlight_Tag(curbuf_name, cur_lnum, 1, 1)
+endfunction
+
+" Tlist_Window_Toggle()
+" Open or close a taglist window
+function! s:Tlist_Window_Toggle()
+ call s:Tlist_Log_Msg('Tlist_Window_Toggle()')
+ " If taglist window is open then close it.
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ call s:Tlist_Window_Close()
+ return
+ endif
+
+ call s:Tlist_Window_Open()
+
+ " Go back to the original window, if Tlist_GainFocus_On_ToggleOpen is not
+ " set
+ if !g:Tlist_GainFocus_On_ToggleOpen
+ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p')
+ endif
+
+ " Update the taglist menu
+ if g:Tlist_Show_Menu
+ call s:Tlist_Menu_Update_File(0)
+ endif
+endfunction
+
+" Tlist_Process_Filelist
+" Process multiple files. Each filename is separated by "\n"
+" Returns the number of processed files
+function! s:Tlist_Process_Filelist(file_names)
+ let flist = a:file_names
+
+ " Enable lazy screen updates
+ let old_lazyredraw = &lazyredraw
+ set lazyredraw
+
+ " Keep track of the number of processed files
+ let fcnt = 0
+
+ " Process one file at a time
+ while flist != ''
+ let nl_idx = stridx(flist, "\n")
+ let one_file = strpart(flist, 0, nl_idx)
+
+ " Remove the filename from the list
+ let flist = strpart(flist, nl_idx + 1)
+
+ if one_file == ''
+ continue
+ endif
+
+ " Skip directories
+ if isdirectory(one_file)
+ continue
+ endif
+
+ let ftype = s:Tlist_Detect_Filetype(one_file)
+
+ echon "\r "
+ echon "\rProcessing tags for " . fnamemodify(one_file, ':p:t')
+
+ let fcnt = fcnt + 1
+
+ call Tlist_Update_File(one_file, ftype)
+ endwhile
+
+ " Clear the displayed informational messages
+ echon "\r "
+
+ " Restore the previous state
+ let &lazyredraw = old_lazyredraw
+
+ return fcnt
+endfunction
+
+" Tlist_Process_Dir
+" Process the files in a directory matching the specified pattern
+function! s:Tlist_Process_Dir(dir_name, pat)
+ let flist = glob(a:dir_name . '/' . a:pat) . "\n"
+
+ let fcnt = s:Tlist_Process_Filelist(flist)
+
+ let len = strlen(a:dir_name)
+ if a:dir_name[len - 1] == '\' || a:dir_name[len - 1] == '/'
+ let glob_expr = a:dir_name . '*'
+ else
+ let glob_expr = a:dir_name . '/*'
+ endif
+ let all_files = glob(glob_expr) . "\n"
+
+ while all_files != ''
+ let nl_idx = stridx(all_files, "\n")
+ let one_file = strpart(all_files, 0, nl_idx)
+
+ let all_files = strpart(all_files, nl_idx + 1)
+ if one_file == ''
+ continue
+ endif
+
+ " Skip non-directory names
+ if !isdirectory(one_file)
+ continue
+ endif
+
+ echon "\r "
+ echon "\rProcessing files in directory " . fnamemodify(one_file, ':t')
+ let fcnt = fcnt + s:Tlist_Process_Dir(one_file, a:pat)
+ endwhile
+
+ return fcnt
+endfunction
+
+" Tlist_Add_Files_Recursive
+" Add files recursively from a directory
+function! s:Tlist_Add_Files_Recursive(dir, ...)
+ let dir_name = fnamemodify(a:dir, ':p')
+ if !isdirectory(dir_name)
+ call s:Tlist_Warning_Msg('Error: ' . dir_name . ' is not a directory')
+ return
+ endif
+
+ if a:0 == 1
+ " User specified file pattern
+ let pat = a:1
+ else
+ " Default file pattern
+ let pat = '*'
+ endif
+
+ echon "\r "
+ echon "\rProcessing files in directory " . fnamemodify(dir_name, ':t')
+ let fcnt = s:Tlist_Process_Dir(dir_name, pat)
+
+ echon "\rAdded " . fcnt . " files to the taglist"
+endfunction
+
+" Tlist_Add_Files
+" Add the specified list of files to the taglist
+function! s:Tlist_Add_Files(...)
+ let flist = ''
+ let i = 1
+
+ " Get all the files matching the file patterns supplied as argument
+ while i <= a:0
+ let flist = flist . glob(a:{i}) . "\n"
+ let i = i + 1
+ endwhile
+
+ if flist == ''
+ call s:Tlist_Warning_Msg('Error: No matching files are found')
+ return
+ endif
+
+ let fcnt = s:Tlist_Process_Filelist(flist)
+ echon "\rAdded " . fcnt . " files to the taglist"
+endfunction
+
+" Tlist_Extract_Tagtype
+" Extract the tag type from the tag text
+function! s:Tlist_Extract_Tagtype(tag_line)
+ " The tag type is after the tag prototype field. The prototype field
+ " ends with the /;"\t string. We add 4 at the end to skip the characters
+ " in this special string..
+ let start = strridx(a:tag_line, '/;"' . "\t") + 4
+ let end = strridx(a:tag_line, 'line:') - 1
+ let ttype = strpart(a:tag_line, start, end - start)
+
+ return ttype
+endfunction
+
+" Tlist_Extract_Tag_Scope
+" Extract the tag scope from the tag text
+function! s:Tlist_Extract_Tag_Scope(tag_line)
+ let start = strridx(a:tag_line, 'line:')
+ let end = strridx(a:tag_line, "\t")
+ if end <= start
+ return ''
+ endif
+
+ let tag_scope = strpart(a:tag_line, end + 1)
+ let tag_scope = strpart(tag_scope, stridx(tag_scope, ':') + 1)
+
+ return tag_scope
+endfunction
+
+" Tlist_Refresh()
+" Refresh the taglist
+function! s:Tlist_Refresh()
+ call s:Tlist_Log_Msg('Tlist_Refresh (Skip_Refresh = ' .
+ \ s:Tlist_Skip_Refresh . ', ' . bufname('%') . ')')
+ " If we are entering the buffer from one of the taglist functions, then
+ " no need to refresh the taglist window again.
+ if s:Tlist_Skip_Refresh
+ " We still need to update the taglist menu
+ if g:Tlist_Show_Menu
+ call s:Tlist_Menu_Update_File(0)
+ endif
+ return
+ endif
+
+ " If part of the winmanager plugin and not configured to process
+ " tags always and not configured to display the tags menu, then return
+ if (s:tlist_app_name == 'winmanager') && !g:Tlist_Process_File_Always
+ \ && !g:Tlist_Show_Menu
+ return
+ endif
+
+ " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help
+ if &buftype != ''
+ return
+ endif
+
+ let filename = fnamemodify(bufname('%'), ':p')
+ let ftype = s:Tlist_Get_Buffer_Filetype('%')
+
+ " If the file doesn't support tag listing, skip it
+ if s:Tlist_Skip_File(filename, ftype)
+ return
+ endif
+
+ let tlist_win = bufwinnr(g:TagList_title)
+
+ " If the taglist window is not opened and not configured to process
+ " tags always and not displaying the tags menu, then return
+ if tlist_win == -1 && !g:Tlist_Process_File_Always && !g:Tlist_Show_Menu
+ return
+ endif
+
+ let fidx = s:Tlist_Get_File_Index(filename)
+ if fidx == -1
+ " Check whether this file is removed based on user request
+ " If it is, then don't display the tags for this file
+ if s:Tlist_User_Removed_File(filename)
+ return
+ endif
+
+ " If the taglist should not be auto updated, then return
+ if !g:Tlist_Auto_Update
+ return
+ endif
+ endif
+
+ let cur_lnum = line('.')
+
+ if fidx == -1
+ " Update the tags for the file
+ let fidx = s:Tlist_Process_File(filename, ftype)
+ else
+ let mtime = getftime(filename)
+ if s:tlist_{fidx}_mtime != mtime
+ " Invalidate the tags listed for this file
+ let s:tlist_{fidx}_valid = 0
+
+ " Update the taglist and the window
+ call Tlist_Update_File(filename, ftype)
+
+ " Store the new file modification time
+ let s:tlist_{fidx}_mtime = mtime
+ endif
+ endif
+
+ " Update the taglist window
+ if tlist_win != -1
+ " Disable screen updates
+ let old_lazyredraw = &lazyredraw
+ set nolazyredraw
+
+ " Save the current window number
+ let save_winnr = winnr()
+
+ " Goto the taglist window
+ call s:Tlist_Window_Goto_Window()
+
+ if !g:Tlist_Auto_Highlight_Tag || !g:Tlist_Highlight_Tag_On_BufEnter
+ " Save the cursor position
+ let save_line = line('.')
+ let save_col = col('.')
+ endif
+
+ " Update the taglist window
+ call s:Tlist_Window_Refresh_File(filename, ftype)
+
+ " Open the fold for the file
+ exe "silent! " . s:tlist_{fidx}_start . "," .
+ \ s:tlist_{fidx}_end . "foldopen!"
+
+ if g:Tlist_Highlight_Tag_On_BufEnter && g:Tlist_Auto_Highlight_Tag
+ if g:Tlist_Show_One_File && s:tlist_cur_file_idx != fidx
+ " If displaying tags for only one file in the taglist
+ " window and about to display the tags for a new file,
+ " then center the current tag line for the new file
+ let center_tag_line = 1
+ else
+ let center_tag_line = 0
+ endif
+
+ " Highlight the current tag
+ call s:Tlist_Window_Highlight_Tag(filename, cur_lnum, 1, center_tag_line)
+ else
+ " Restore the cursor position
+ if v:version >= 601
+ call cursor(save_line, save_col)
+ else
+ exe save_line
+ exe 'normal! ' . save_col . '|'
+ endif
+ endif
+
+ " Jump back to the original window
+ if save_winnr != winnr()
+ call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w')
+ endif
+
+ " Restore screen updates
+ let &lazyredraw = old_lazyredraw
+ endif
+
+ " Update the taglist menu
+ if g:Tlist_Show_Menu
+ call s:Tlist_Menu_Update_File(0)
+ endif
+endfunction
+
+" Tlist_Change_Sort()
+" Change the sort order of the tag listing
+" caller == 'cmd', command used in the taglist window
+" caller == 'menu', taglist menu
+" action == 'toggle', toggle sort from name to order and vice versa
+" action == 'set', set the sort order to sort_type
+function! s:Tlist_Change_Sort(caller, action, sort_type)
+ call s:Tlist_Log_Msg('Tlist_Change_Sort (caller = ' . a:caller .
+ \ ', action = ' . a:action . ', sort_type = ' . a:sort_type . ')')
+ if a:caller == 'cmd'
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.'))
+ if fidx == -1
+ return
+ endif
+
+ " Remove the previous highlighting
+ match none
+ elseif a:caller == 'menu'
+ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p'))
+ if fidx == -1
+ return
+ endif
+ endif
+
+ if a:action == 'toggle'
+ let sort_type = s:tlist_{fidx}_sort_type
+
+ " Toggle the sort order from 'name' to 'order' and vice versa
+ if sort_type == 'name'
+ let s:tlist_{fidx}_sort_type = 'order'
+ else
+ let s:tlist_{fidx}_sort_type = 'name'
+ endif
+ else
+ let s:tlist_{fidx}_sort_type = a:sort_type
+ endif
+
+ " Invalidate the tags listed for this file
+ let s:tlist_{fidx}_valid = 0
+
+ if a:caller == 'cmd'
+ " Save the current line for later restoration
+ let curline = '\V\^' . getline('.') . '\$'
+
+ call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename,
+ \ s:tlist_{fidx}_filetype)
+
+ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!'
+
+ " Go back to the cursor line before the tag list is sorted
+ call search(curline, 'w')
+
+ call s:Tlist_Menu_Update_File(1)
+ else
+ call s:Tlist_Menu_Remove_File()
+
+ call s:Tlist_Refresh()
+ endif
+endfunction
+
+" Tlist_Update_Current_File()
+" Update taglist for the current buffer by regenerating the tag list
+" Contributed by WEN Guopeng.
+function! s:Tlist_Update_Current_File()
+ call s:Tlist_Log_Msg('Tlist_Update_Current_File()')
+ if winnr() == bufwinnr(g:TagList_title)
+ " In the taglist window. Update the current file
+ call s:Tlist_Window_Update_File()
+ else
+ " Not in the taglist window. Update the current buffer
+ let filename = fnamemodify(bufname('%'), ':p')
+ let fidx = s:Tlist_Get_File_Index(filename)
+ if fidx != -1
+ let s:tlist_{fidx}_valid = 0
+ endif
+ let ft = s:Tlist_Get_Buffer_Filetype('%')
+ call Tlist_Update_File(filename, ft)
+ endif
+endfunction
+
+" Tlist_Window_Update_File()
+" Update the tags displayed in the taglist window
+function! s:Tlist_Window_Update_File()
+ call s:Tlist_Log_Msg('Tlist_Window_Update_File()')
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.'))
+ if fidx == -1
+ return
+ endif
+
+ " Remove the previous highlighting
+ match none
+
+ " Save the current line for later restoration
+ let curline = '\V\^' . getline('.') . '\$'
+
+ let s:tlist_{fidx}_valid = 0
+
+ " Update the taglist window
+ call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename,
+ \ s:tlist_{fidx}_filetype)
+
+ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!'
+
+ " Go back to the tag line before the list is updated
+ call search(curline, 'w')
+endfunction
+
+" Tlist_Window_Get_Tag_Type_By_Linenum()
+" Return the tag type index for the specified line in the taglist window
+function! s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum)
+ let ftype = s:tlist_{a:fidx}_filetype
+
+ " Determine to which tag type the current line number belongs to using the
+ " tag type start line number and the number of tags in a tag type
+ let i = 1
+ while i <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{i}_name
+ let start_lnum =
+ \ s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset
+ let end = start_lnum + s:tlist_{a:fidx}_{ttype}_count
+ if a:lnum >= start_lnum && a:lnum <= end
+ break
+ endif
+ let i = i + 1
+ endwhile
+
+ " Current line doesn't belong to any of the displayed tag types
+ if i > s:tlist_{ftype}_count
+ return ''
+ endif
+
+ return ttype
+endfunction
+
+" Tlist_Window_Get_Tag_Index()
+" Return the tag index for the specified line in the taglist window
+function! s:Tlist_Window_Get_Tag_Index(fidx, lnum)
+ let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(a:fidx, a:lnum)
+
+ " Current line doesn't belong to any of the displayed tag types
+ if ttype == ''
+ return 0
+ endif
+
+ " Compute the index into the displayed tags for the tag type
+ let ttype_lnum = s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset
+ let tidx = a:lnum - ttype_lnum
+ if tidx == 0
+ return 0
+ endif
+
+ " Get the corresponding tag line and return it
+ return s:tlist_{a:fidx}_{ttype}_{tidx}
+endfunction
+
+" Tlist_Window_Highlight_Line
+" Highlight the current line
+function! s:Tlist_Window_Highlight_Line()
+ " Clear previously selected name
+ match none
+
+ " Highlight the current line
+ if g:Tlist_Display_Prototype == 0
+ let pat = '/\%' . line('.') . 'l\s\+\zs.*/'
+ else
+ let pat = '/\%' . line('.') . 'l.*/'
+ endif
+
+ exe 'match TagListTagName ' . pat
+endfunction
+
+" Tlist_Window_Open_File
+" Open the specified file in either a new window or an existing window
+" and place the cursor at the specified tag pattern
+function! s:Tlist_Window_Open_File(win_ctrl, filename, tagpat)
+ call s:Tlist_Log_Msg('Tlist_Window_Open_File (' . a:filename . ',' .
+ \ a:win_ctrl . ')')
+ let prev_Tlist_Skip_Refresh = s:Tlist_Skip_Refresh
+ let s:Tlist_Skip_Refresh = 1
+
+ if s:tlist_app_name == "winmanager"
+ " Let the winmanager edit the file
+ call WinManagerFileEdit(a:filename, a:win_ctrl == 'newwin')
+ else
+
+ if a:win_ctrl == 'newtab'
+ " Create a new tab
+ exe 'tabnew ' . escape(a:filename, ' ')
+ " Open the taglist window in the new tab
+ call s:Tlist_Window_Open()
+ endif
+
+ if a:win_ctrl == 'checktab'
+ " Check whether the file is present in any of the tabs.
+ " If the file is present in the current tab, then use the
+ " current tab.
+ if bufwinnr(a:filename) != -1
+ let file_present_in_tab = 1
+ let i = tabpagenr()
+ else
+ let i = 1
+ let bnum = bufnr(a:filename)
+ let file_present_in_tab = 0
+ while i <= tabpagenr('$')
+ if index(tabpagebuflist(i), bnum) != -1
+ let file_present_in_tab = 1
+ break
+ endif
+ let i += 1
+ endwhile
+ endif
+
+ if file_present_in_tab
+ " Goto the tab containing the file
+ exe 'tabnext ' . i
+ else
+ " Open a new tab
+ exe 'tabnew ' . escape(a:filename, ' ')
+
+ " Open the taglist window
+ call s:Tlist_Window_Open()
+ endif
+ endif
+
+ let winnum = -1
+ if a:win_ctrl == 'prevwin'
+ " Open the file in the previous window, if it is usable
+ let cur_win = winnr()
+ wincmd p
+ if &buftype == '' && !&previewwindow
+ exe "edit " . escape(a:filename, ' ')
+ let winnum = winnr()
+ else
+ " Previous window is not usable
+ exe cur_win . 'wincmd w'
+ endif
+ endif
+
+ " Goto the window containing the file. If the window is not there, open a
+ " new window
+ if winnum == -1
+ let winnum = bufwinnr(a:filename)
+ endif
+
+ if winnum == -1
+ " Locate the previously used window for opening a file
+ let fwin_num = 0
+ let first_usable_win = 0
+
+ let i = 1
+ let bnum = winbufnr(i)
+ while bnum != -1
+ if getwinvar(i, 'tlist_file_window') == 'yes'
+ let fwin_num = i
+ break
+ endif
+ if first_usable_win == 0 &&
+ \ getbufvar(bnum, '&buftype') == '' &&
+ \ !getwinvar(i, '&previewwindow')
+ " First non-taglist, non-plugin and non-preview window
+ let first_usable_win = i
+ endif
+ let i = i + 1
+ let bnum = winbufnr(i)
+ endwhile
+
+ " If a previously used window is not found, then use the first
+ " non-taglist window
+ if fwin_num == 0
+ let fwin_num = first_usable_win
+ endif
+
+ if fwin_num != 0
+ " Jump to the file window
+ exe fwin_num . "wincmd w"
+
+ " If the user asked to jump to the tag in a new window, then split
+ " the existing window into two.
+ if a:win_ctrl == 'newwin'
+ split
+ endif
+ exe "edit " . escape(a:filename, ' ')
+ else
+ " Open a new window
+ if g:Tlist_Use_Horiz_Window
+ exe 'leftabove split ' . escape(a:filename, ' ')
+ else
+ if winbufnr(2) == -1
+ " Only the taglist window is present
+ if g:Tlist_Use_Right_Window
+ exe 'leftabove vertical split ' .
+ \ escape(a:filename, ' ')
+ else
+ exe 'rightbelow vertical split ' .
+ \ escape(a:filename, ' ')
+ endif
+
+ " Go to the taglist window to change the window size to
+ " the user configured value
+ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p')
+ if g:Tlist_Use_Horiz_Window
+ exe 'resize ' . g:Tlist_WinHeight
+ else
+ exe 'vertical resize ' . g:Tlist_WinWidth
+ endif
+ " Go back to the file window
+ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p')
+ else
+ " A plugin or help window is also present
+ wincmd w
+ exe 'leftabove split ' . escape(a:filename, ' ')
+ endif
+ endif
+ endif
+ " Mark the window, so that it can be reused.
+ call s:Tlist_Window_Mark_File_Window()
+ else
+ if v:version >= 700
+ " If the file is opened in more than one window, then check
+ " whether the last accessed window has the selected file.
+ " If it does, then use that window.
+ let lastwin_bufnum = winbufnr(winnr('#'))
+ if bufnr(a:filename) == lastwin_bufnum
+ let winnum = winnr('#')
+ endif
+ endif
+ exe winnum . 'wincmd w'
+
+ " If the user asked to jump to the tag in a new window, then split the
+ " existing window into two.
+ if a:win_ctrl == 'newwin'
+ split
+ endif
+ endif
+ endif
+
+ " Jump to the tag
+ if a:tagpat != ''
+ " Add the current cursor position to the jump list, so that user can
+ " jump back using the ' and ` marks.
+ mark '
+ silent call search(a:tagpat, 'w')
+
+ " Bring the line to the middle of the window
+ normal! z.
+
+ " If the line is inside a fold, open the fold
+ if foldclosed('.') != -1
+ .foldopen
+ endif
+ endif
+
+ " If the user selects to preview the tag then jump back to the
+ " taglist window
+ if a:win_ctrl == 'preview'
+ " Go back to the taglist window
+ let winnum = bufwinnr(g:TagList_title)
+ exe winnum . 'wincmd w'
+ else
+ " If the user has selected to close the taglist window, when a
+ " tag is selected, close the taglist window
+ if g:Tlist_Close_On_Select
+ call s:Tlist_Window_Goto_Window()
+ close
+
+ " Go back to the window displaying the selected file
+ let wnum = bufwinnr(a:filename)
+ if wnum != -1 && wnum != winnr()
+ call s:Tlist_Exe_Cmd_No_Acmds(wnum . 'wincmd w')
+ endif
+ endif
+ endif
+
+ let s:Tlist_Skip_Refresh = prev_Tlist_Skip_Refresh
+endfunction
+
+" Tlist_Window_Jump_To_Tag()
+" Jump to the location of the current tag
+" win_ctrl == useopen - Reuse the existing file window
+" win_ctrl == newwin - Open a new window
+" win_ctrl == preview - Preview the tag
+" win_ctrl == prevwin - Open in previous window
+" win_ctrl == newtab - Open in new tab
+function! s:Tlist_Window_Jump_To_Tag(win_ctrl)
+ call s:Tlist_Log_Msg('Tlist_Window_Jump_To_Tag(' . a:win_ctrl . ')')
+ " Do not process comment lines and empty lines
+ let curline = getline('.')
+ if curline =~ '^\s*$' || curline[0] == '"'
+ return
+ endif
+
+ " If inside a closed fold, then use the first line of the fold
+ " and jump to the file.
+ let lnum = foldclosed('.')
+ if lnum == -1
+ " Jump to the selected tag or file
+ let lnum = line('.')
+ else
+ " Open the closed fold
+ .foldopen!
+ endif
+
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum)
+ if fidx == -1
+ return
+ endif
+
+ " Get the tag output for the current tag
+ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum)
+ if tidx != 0
+ let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, tidx)
+
+ " Highlight the tagline
+ call s:Tlist_Window_Highlight_Line()
+ else
+ " Selected a line which is not a tag name. Just edit the file
+ let tagpat = ''
+ endif
+
+ call s:Tlist_Window_Open_File(a:win_ctrl, s:tlist_{fidx}_filename, tagpat)
+endfunction
+
+" Tlist_Window_Show_Info()
+" Display information about the entry under the cursor
+function! s:Tlist_Window_Show_Info()
+ call s:Tlist_Log_Msg('Tlist_Window_Show_Info()')
+
+ " Clear the previously displayed line
+ echo
+
+ " Do not process comment lines and empty lines
+ let curline = getline('.')
+ if curline =~ '^\s*$' || curline[0] == '"'
+ return
+ endif
+
+ " If inside a fold, then don't display the prototype
+ if foldclosed('.') != -1
+ return
+ endif
+
+ let lnum = line('.')
+
+ " Get the file index
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum)
+ if fidx == -1
+ return
+ endif
+
+ if lnum == s:tlist_{fidx}_start
+ " Cursor is on a file name
+ let fname = s:tlist_{fidx}_filename
+ if strlen(fname) > 50
+ let fname = fnamemodify(fname, ':t')
+ endif
+ echo fname . ', Filetype=' . s:tlist_{fidx}_filetype .
+ \ ', Tag count=' . s:tlist_{fidx}_tag_count
+ return
+ endif
+
+ " Get the tag output line for the current tag
+ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum)
+ if tidx == 0
+ " Cursor is on a tag type
+ let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum)
+ if ttype == ''
+ return
+ endif
+
+ let ttype_name = ''
+
+ let ftype = s:tlist_{fidx}_filetype
+ let i = 1
+ while i <= s:tlist_{ftype}_count
+ if ttype == s:tlist_{ftype}_{i}_name
+ let ttype_name = s:tlist_{ftype}_{i}_fullname
+ break
+ endif
+ let i = i + 1
+ endwhile
+
+ echo 'Tag type=' . ttype_name .
+ \ ', Tag count=' . s:tlist_{fidx}_{ttype}_count
+ return
+ endif
+
+ " Get the tag search pattern and display it
+ echo s:Tlist_Get_Tag_Prototype(fidx, tidx)
+endfunction
+
+" Tlist_Find_Nearest_Tag_Idx
+" Find the tag idx nearest to the supplied line number
+" Returns -1, if a tag couldn't be found for the specified line number
+function! s:Tlist_Find_Nearest_Tag_Idx(fidx, linenum)
+ let sort_type = s:tlist_{a:fidx}_sort_type
+
+ let left = 1
+ let right = s:tlist_{a:fidx}_tag_count
+
+ if sort_type == 'order'
+ " Tags sorted by order, use a binary search.
+ " The idea behind this function is taken from the ctags.vim script (by
+ " Alexey Marinichev) available at the Vim online website.
+
+ " If the current line is the less than the first tag, then no need to
+ " search
+ let first_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, 1)
+
+ if a:linenum < first_lnum
+ return -1
+ endif
+
+ while left < right
+ let middle = (right + left + 1) / 2
+ let middle_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, middle)
+
+ if middle_lnum == a:linenum
+ let left = middle
+ break
+ endif
+
+ if middle_lnum > a:linenum
+ let right = middle - 1
+ else
+ let left = middle
+ endif
+ endwhile
+ else
+ " Tags sorted by name, use a linear search. (contributed by Dave
+ " Eggum).
+ " Look for a tag with a line number less than or equal to the supplied
+ " line number. If multiple tags are found, then use the tag with the
+ " line number closest to the supplied line number. IOW, use the tag
+ " with the highest line number.
+ let closest_lnum = 0
+ let final_left = 0
+ while left <= right
+ let lnum = s:Tlist_Get_Tag_Linenum(a:fidx, left)
+
+ if lnum < a:linenum && lnum > closest_lnum
+ let closest_lnum = lnum
+ let final_left = left
+ elseif lnum == a:linenum
+ let closest_lnum = lnum
+ let final_left = left
+ break
+ else
+ let left = left + 1
+ endif
+ endwhile
+ if closest_lnum == 0
+ return -1
+ endif
+ if left >= right
+ let left = final_left
+ endif
+ endif
+
+ return left
+endfunction
+
+" Tlist_Window_Highlight_Tag()
+" Highlight the current tag
+" cntx == 1, Called by the taglist plugin itself
+" cntx == 2, Forced by the user through the TlistHighlightTag command
+" center = 1, move the tag line to the center of the taglist window
+function! s:Tlist_Window_Highlight_Tag(filename, cur_lnum, cntx, center)
+ " Highlight the current tag only if the user configured the
+ " taglist plugin to do so or if the user explictly invoked the
+ " command to highlight the current tag.
+ if !g:Tlist_Auto_Highlight_Tag && a:cntx == 1
+ return
+ endif
+
+ if a:filename == ''
+ return
+ endif
+
+ " Make sure the taglist window is present
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum == -1
+ call s:Tlist_Warning_Msg('Error: Taglist window is not open')
+ return
+ endif
+
+ let fidx = s:Tlist_Get_File_Index(a:filename)
+ if fidx == -1
+ return
+ endif
+
+ " If the file is currently not displayed in the taglist window, then retrn
+ if !s:tlist_{fidx}_visible
+ return
+ endif
+
+ " If there are no tags for this file, then no need to proceed further
+ if s:tlist_{fidx}_tag_count == 0
+ return
+ endif
+
+ " Ignore all autocommands
+ let old_ei = &eventignore
+ set eventignore=all
+
+ " Save the original window number
+ let org_winnr = winnr()
+
+ if org_winnr == winnum
+ let in_taglist_window = 1
+ else
+ let in_taglist_window = 0
+ endif
+
+ " Go to the taglist window
+ if !in_taglist_window
+ exe winnum . 'wincmd w'
+ endif
+
+ " Clear previously selected name
+ match none
+
+ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, a:cur_lnum)
+ if tidx == -1
+ " Make sure the current tag line is visible in the taglist window.
+ " Calling the winline() function makes the line visible. Don't know
+ " of a better way to achieve this.
+ let lnum = line('.')
+
+ if lnum < s:tlist_{fidx}_start || lnum > s:tlist_{fidx}_end
+ " Move the cursor to the beginning of the file
+ exe s:tlist_{fidx}_start
+ endif
+
+ if foldclosed('.') != -1
+ .foldopen
+ endif
+
+ call winline()
+
+ if !in_taglist_window
+ exe org_winnr . 'wincmd w'
+ endif
+
+ " Restore the autocommands
+ let &eventignore = old_ei
+ return
+ endif
+
+ " Extract the tag type
+ let ttype = s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx)
+
+ " Compute the line number
+ " Start of file + Start of tag type + offset
+ let lnum = s:tlist_{fidx}_start + s:tlist_{fidx}_{ttype}_offset +
+ \ s:tlist_{fidx}_{tidx}_ttype_idx
+
+ " Goto the line containing the tag
+ exe lnum
+
+ " Open the fold
+ if foldclosed('.') != -1
+ .foldopen
+ endif
+
+ if a:center
+ " Move the tag line to the center of the taglist window
+ normal! z.
+ else
+ " Make sure the current tag line is visible in the taglist window.
+ " Calling the winline() function makes the line visible. Don't know
+ " of a better way to achieve this.
+ call winline()
+ endif
+
+ " Highlight the tag name
+ call s:Tlist_Window_Highlight_Line()
+
+ " Go back to the original window
+ if !in_taglist_window
+ exe org_winnr . 'wincmd w'
+ endif
+
+ " Restore the autocommands
+ let &eventignore = old_ei
+ return
+endfunction
+
+" Tlist_Get_Tag_Prototype_By_Line
+" Get the prototype for the tag on or before the specified line number in the
+" current buffer
+function! Tlist_Get_Tag_Prototype_By_Line(...)
+ if a:0 == 0
+ " Arguments are not supplied. Use the current buffer name
+ " and line number
+ let filename = bufname('%')
+ let linenr = line('.')
+ elseif a:0 == 2
+ " Filename and line number are specified
+ let filename = a:1
+ let linenr = a:2
+ if linenr !~ '\d\+'
+ " Invalid line number
+ return ""
+ endif
+ else
+ " Sufficient arguments are not supplied
+ let msg = 'Usage: Tlist_Get_Tag_Prototype_By_Line <filename> ' .
+ \ '<line_number>'
+ call s:Tlist_Warning_Msg(msg)
+ return ""
+ endif
+
+ " Expand the file to a fully qualified name
+ let filename = fnamemodify(filename, ':p')
+ if filename == ''
+ return ""
+ endif
+
+ let fidx = s:Tlist_Get_File_Index(filename)
+ if fidx == -1
+ return ""
+ endif
+
+ " If there are no tags for this file, then no need to proceed further
+ if s:tlist_{fidx}_tag_count == 0
+ return ""
+ endif
+
+ " Get the tag text using the line number
+ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr)
+ if tidx == -1
+ return ""
+ endif
+
+ return s:Tlist_Get_Tag_Prototype(fidx, tidx)
+endfunction
+
+" Tlist_Get_Tagname_By_Line
+" Get the tag name on or before the specified line number in the
+" current buffer
+function! Tlist_Get_Tagname_By_Line(...)
+ if a:0 == 0
+ " Arguments are not supplied. Use the current buffer name
+ " and line number
+ let filename = bufname('%')
+ let linenr = line('.')
+ elseif a:0 == 2
+ " Filename and line number are specified
+ let filename = a:1
+ let linenr = a:2
+ if linenr !~ '\d\+'
+ " Invalid line number
+ return ""
+ endif
+ else
+ " Sufficient arguments are not supplied
+ let msg = 'Usage: Tlist_Get_Tagname_By_Line <filename> <line_number>'
+ call s:Tlist_Warning_Msg(msg)
+ return ""
+ endif
+
+ " Make sure the current file has a name
+ let filename = fnamemodify(filename, ':p')
+ if filename == ''
+ return ""
+ endif
+
+ let fidx = s:Tlist_Get_File_Index(filename)
+ if fidx == -1
+ return ""
+ endif
+
+ " If there are no tags for this file, then no need to proceed further
+ if s:tlist_{fidx}_tag_count == 0
+ return ""
+ endif
+
+ " Get the tag name using the line number
+ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr)
+ if tidx == -1
+ return ""
+ endif
+
+ return s:tlist_{fidx}_{tidx}_tag_name
+endfunction
+
+" Tlist_Window_Move_To_File
+" Move the cursor to the beginning of the current file or the next file
+" or the previous file in the taglist window
+" dir == -1, move to start of current or previous function
+" dir == 1, move to start of next function
+function! s:Tlist_Window_Move_To_File(dir)
+ if foldlevel('.') == 0
+ " Cursor is on a non-folded line (it is not in any of the files)
+ " Move it to a folded line
+ if a:dir == -1
+ normal! zk
+ else
+ " While moving down to the start of the next fold,
+ " no need to do go to the start of the next file.
+ normal! zj
+ return
+ endif
+ endif
+
+ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.'))
+ if fidx == -1
+ return
+ endif
+
+ let cur_lnum = line('.')
+
+ if a:dir == -1
+ if cur_lnum > s:tlist_{fidx}_start
+ " Move to the beginning of the current file
+ exe s:tlist_{fidx}_start
+ return
+ endif
+
+ if fidx != 0
+ " Move to the beginning of the previous file
+ let fidx = fidx - 1
+ else
+ " Cursor is at the first file, wrap around to the last file
+ let fidx = s:tlist_file_count - 1
+ endif
+
+ exe s:tlist_{fidx}_start
+ return
+ else
+ " Move to the beginning of the next file
+ let fidx = fidx + 1
+
+ if fidx >= s:tlist_file_count
+ " Cursor is at the last file, wrap around to the first file
+ let fidx = 0
+ endif
+
+ if s:tlist_{fidx}_start != 0
+ exe s:tlist_{fidx}_start
+ endif
+ return
+ endif
+endfunction
+
+" Tlist_Session_Load
+" Load a taglist session (information about all the displayed files
+" and the tags) from the specified file
+function! s:Tlist_Session_Load(...)
+ if a:0 == 0 || a:1 == ''
+ call s:Tlist_Warning_Msg('Usage: TlistSessionLoad <filename>')
+ return
+ endif
+
+ let sessionfile = a:1
+
+ if !filereadable(sessionfile)
+ let msg = 'Taglist: Error - Unable to open file ' . sessionfile
+ call s:Tlist_Warning_Msg(msg)
+ return
+ endif
+
+ " Mark the current window as the file window
+ call s:Tlist_Window_Mark_File_Window()
+
+ " Source the session file
+ exe 'source ' . sessionfile
+
+ let new_file_count = g:tlist_file_count
+ unlet! g:tlist_file_count
+
+ let i = 0
+ while i < new_file_count
+ let ftype = g:tlist_{i}_filetype
+ unlet! g:tlist_{i}_filetype
+
+ if !exists('s:tlist_' . ftype . '_count')
+ if s:Tlist_FileType_Init(ftype) == 0
+ let i = i + 1
+ continue
+ endif
+ endif
+
+ let fname = g:tlist_{i}_filename
+ unlet! g:tlist_{i}_filename
+
+ let fidx = s:Tlist_Get_File_Index(fname)
+ if fidx != -1
+ let s:tlist_{fidx}_visible = 0
+ let i = i + 1
+ continue
+ else
+ " As we are loading the tags from the session file, if this
+ " file was previously deleted by the user, now we need to
+ " add it back. So remove the file from the deleted list.
+ call s:Tlist_Update_Remove_List(fname, 0)
+ endif
+
+ let fidx = s:Tlist_Init_File(fname, ftype)
+
+ let s:tlist_{fidx}_filename = fname
+
+ let s:tlist_{fidx}_sort_type = g:tlist_{i}_sort_type
+ unlet! g:tlist_{i}_sort_type
+
+ let s:tlist_{fidx}_filetype = ftype
+ let s:tlist_{fidx}_mtime = getftime(fname)
+
+ let s:tlist_{fidx}_start = 0
+ let s:tlist_{fidx}_end = 0
+
+ let s:tlist_{fidx}_valid = 1
+
+ let s:tlist_{fidx}_tag_count = g:tlist_{i}_tag_count
+ unlet! g:tlist_{i}_tag_count
+
+ let j = 1
+ while j <= s:tlist_{fidx}_tag_count
+ let s:tlist_{fidx}_{j}_tag = g:tlist_{i}_{j}_tag
+ let s:tlist_{fidx}_{j}_tag_name = g:tlist_{i}_{j}_tag_name
+ let s:tlist_{fidx}_{j}_ttype_idx = g:tlist_{i}_{j}_ttype_idx
+ unlet! g:tlist_{i}_{j}_tag
+ unlet! g:tlist_{i}_{j}_tag_name
+ unlet! g:tlist_{i}_{j}_ttype_idx
+ let j = j + 1
+ endwhile
+
+ let j = 1
+ while j <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{j}_name
+
+ if exists('g:tlist_' . i . '_' . ttype)
+ let s:tlist_{fidx}_{ttype} = g:tlist_{i}_{ttype}
+ unlet! g:tlist_{i}_{ttype}
+ let s:tlist_{fidx}_{ttype}_offset = 0
+ let s:tlist_{fidx}_{ttype}_count = g:tlist_{i}_{ttype}_count
+ unlet! g:tlist_{i}_{ttype}_count
+
+ let k = 1
+ while k <= s:tlist_{fidx}_{ttype}_count
+ let s:tlist_{fidx}_{ttype}_{k} = g:tlist_{i}_{ttype}_{k}
+ unlet! g:tlist_{i}_{ttype}_{k}
+ let k = k + 1
+ endwhile
+ else
+ let s:tlist_{fidx}_{ttype} = ''
+ let s:tlist_{fidx}_{ttype}_offset = 0
+ let s:tlist_{fidx}_{ttype}_count = 0
+ endif
+
+ let j = j + 1
+ endwhile
+
+ let i = i + 1
+ endwhile
+
+ " If the taglist window is open, then update it
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum != -1
+ let save_winnr = winnr()
+
+ " Goto the taglist window
+ call s:Tlist_Window_Goto_Window()
+
+ " Refresh the taglist window
+ call s:Tlist_Window_Refresh()
+
+ " Go back to the original window
+ if save_winnr != winnr()
+ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p')
+ endif
+ endif
+endfunction
+
+" Tlist_Session_Save
+" Save a taglist session (information about all the displayed files
+" and the tags) into the specified file
+function! s:Tlist_Session_Save(...)
+ if a:0 == 0 || a:1 == ''
+ call s:Tlist_Warning_Msg('Usage: TlistSessionSave <filename>')
+ return
+ endif
+
+ let sessionfile = a:1
+
+ if s:tlist_file_count == 0
+ " There is nothing to save
+ call s:Tlist_Warning_Msg('Warning: Taglist is empty. Nothing to save.')
+ return
+ endif
+
+ if filereadable(sessionfile)
+ let ans = input('Do you want to overwrite ' . sessionfile . ' (Y/N)?')
+ if ans !=? 'y'
+ return
+ endif
+
+ echo "\n"
+ endif
+
+ let old_verbose = &verbose
+ set verbose&vim
+
+ exe 'redir! > ' . sessionfile
+
+ silent! echo '" Taglist session file. This file is auto-generated.'
+ silent! echo '" File information'
+ silent! echo 'let tlist_file_count = ' . s:tlist_file_count
+
+ let i = 0
+
+ while i < s:tlist_file_count
+ " Store information about the file
+ silent! echo 'let tlist_' . i . "_filename = '" .
+ \ s:tlist_{i}_filename . "'"
+ silent! echo 'let tlist_' . i . '_sort_type = "' .
+ \ s:tlist_{i}_sort_type . '"'
+ silent! echo 'let tlist_' . i . '_filetype = "' .
+ \ s:tlist_{i}_filetype . '"'
+ silent! echo 'let tlist_' . i . '_tag_count = ' .
+ \ s:tlist_{i}_tag_count
+ " Store information about all the tags
+ let j = 1
+ while j <= s:tlist_{i}_tag_count
+ let txt = escape(s:tlist_{i}_{j}_tag, '"\\')
+ silent! echo 'let tlist_' . i . '_' . j . '_tag = "' . txt . '"'
+ silent! echo 'let tlist_' . i . '_' . j . '_tag_name = "' .
+ \ s:tlist_{i}_{j}_tag_name . '"'
+ silent! echo 'let tlist_' . i . '_' . j . '_ttype_idx' . ' = ' .
+ \ s:tlist_{i}_{j}_ttype_idx
+ let j = j + 1
+ endwhile
+
+ " Store information about all the tags grouped by their type
+ let ftype = s:tlist_{i}_filetype
+ let j = 1
+ while j <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{j}_name
+ if s:tlist_{i}_{ttype}_count != 0
+ let txt = escape(s:tlist_{i}_{ttype}, '"\')
+ let txt = substitute(txt, "\n", "\\\\n", 'g')
+ silent! echo 'let tlist_' . i . '_' . ttype . ' = "' .
+ \ txt . '"'
+ silent! echo 'let tlist_' . i . '_' . ttype . '_count = ' .
+ \ s:tlist_{i}_{ttype}_count
+ let k = 1
+ while k <= s:tlist_{i}_{ttype}_count
+ silent! echo 'let tlist_' . i . '_' . ttype . '_' . k .
+ \ ' = ' . s:tlist_{i}_{ttype}_{k}
+ let k = k + 1
+ endwhile
+ endif
+ let j = j + 1
+ endwhile
+
+ silent! echo
+
+ let i = i + 1
+ endwhile
+
+ redir END
+
+ let &verbose = old_verbose
+endfunction
+
+" Tlist_Buffer_Removed
+" A buffer is removed from the Vim buffer list. Remove the tags defined
+" for that file
+function! s:Tlist_Buffer_Removed(filename)
+ call s:Tlist_Log_Msg('Tlist_Buffer_Removed (' . a:filename . ')')
+
+ " Make sure a valid filename is supplied
+ if a:filename == ''
+ return
+ endif
+
+ " Get tag list index of the specified file
+ let fidx = s:Tlist_Get_File_Index(a:filename)
+ if fidx == -1
+ " File not present in the taglist
+ return
+ endif
+
+ " Remove the file from the list
+ call s:Tlist_Remove_File(fidx, 0)
+endfunction
+
+" When a buffer is deleted, remove the file from the taglist
+autocmd BufDelete * silent call s:Tlist_Buffer_Removed(expand('<afile>:p'))
+
+" Tlist_Window_Open_File_Fold
+" Open the fold for the specified file and close the fold for all the
+" other files
+function! s:Tlist_Window_Open_File_Fold(acmd_bufnr)
+ call s:Tlist_Log_Msg('Tlist_Window_Open_File_Fold (' . a:acmd_bufnr . ')')
+
+ " Make sure the taglist window is present
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum == -1
+ call s:Tlist_Warning_Msg('Taglist: Error - Taglist window is not open')
+ return
+ endif
+
+ " Save the original window number
+ let org_winnr = winnr()
+ if org_winnr == winnum
+ let in_taglist_window = 1
+ else
+ let in_taglist_window = 0
+ endif
+
+ if in_taglist_window
+ " When entering the taglist window, no need to update the folds
+ return
+ endif
+
+ " Go to the taglist window
+ if !in_taglist_window
+ call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w')
+ endif
+
+ " Close all the folds
+ silent! %foldclose
+
+ " Get tag list index of the specified file
+ let fname = fnamemodify(bufname(a:acmd_bufnr + 0), ':p')
+ if filereadable(fname)
+ let fidx = s:Tlist_Get_File_Index(fname)
+ if fidx != -1
+ " Open the fold for the file
+ exe "silent! " . s:tlist_{fidx}_start . "," .
+ \ s:tlist_{fidx}_end . "foldopen"
+ endif
+ endif
+
+ " Go back to the original window
+ if !in_taglist_window
+ call s:Tlist_Exe_Cmd_No_Acmds(org_winnr . 'wincmd w')
+ endif
+endfunction
+
+" Tlist_Window_Check_Auto_Open
+" Open the taglist window automatically on Vim startup.
+" Open the window only when files present in any of the Vim windows support
+" tags.
+function! s:Tlist_Window_Check_Auto_Open()
+ let open_window = 0
+
+ let i = 1
+ let buf_num = winbufnr(i)
+ while buf_num != -1
+ let filename = fnamemodify(bufname(buf_num), ':p')
+ let ft = s:Tlist_Get_Buffer_Filetype(buf_num)
+ if !s:Tlist_Skip_File(filename, ft)
+ let open_window = 1
+ break
+ endif
+ let i = i + 1
+ let buf_num = winbufnr(i)
+ endwhile
+
+ if open_window
+ call s:Tlist_Window_Toggle()
+ endif
+endfunction
+
+" Tlist_Refresh_Folds
+" Remove and create the folds for all the files displayed in the taglist
+" window. Used after entering a tab. If this is not done, then the folds
+" are not properly created for taglist windows displayed in multiple tabs.
+function! s:Tlist_Refresh_Folds()
+ let winnum = bufwinnr(g:TagList_title)
+ if winnum == -1
+ return
+ endif
+
+ let save_wnum = winnr()
+ exe winnum . 'wincmd w'
+
+ " First remove all the existing folds
+ normal! zE
+
+ " Create the folds for each in the tag list
+ let fidx = 0
+ while fidx < s:tlist_file_count
+ let ftype = s:tlist_{fidx}_filetype
+
+ " Create the folds for each tag type in a file
+ let j = 1
+ while j <= s:tlist_{ftype}_count
+ let ttype = s:tlist_{ftype}_{j}_name
+ if s:tlist_{fidx}_{ttype}_count
+ let s = s:tlist_{fidx}_start + s:tlist_{fidx}_{ttype}_offset
+ let e = s + s:tlist_{fidx}_{ttype}_count
+ exe s . ',' . e . 'fold'
+ endif
+ let j = j + 1
+ endwhile
+
+ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'fold'
+ exe 'silent! ' . s:tlist_{fidx}_start . ',' .
+ \ s:tlist_{fidx}_end . 'foldopen!'
+ let fidx = fidx + 1
+ endwhile
+
+ exe save_wnum . 'wincmd w'
+endfunction
+
+function! s:Tlist_Menu_Add_Base_Menu()
+ call s:Tlist_Log_Msg('Adding the base menu')
+
+ " Add the menu
+ anoremenu <silent> T&ags.Refresh\ menu :call <SID>Tlist_Menu_Refresh()<CR>
+ anoremenu <silent> T&ags.Sort\ menu\ by.Name
+ \ :call <SID>Tlist_Change_Sort('menu', 'set', 'name')<CR>
+ anoremenu <silent> T&ags.Sort\ menu\ by.Order
+ \ :call <SID>Tlist_Change_Sort('menu', 'set', 'order')<CR>
+ anoremenu T&ags.-SEP1- :
+
+ if &mousemodel =~ 'popup'
+ anoremenu <silent> PopUp.T&ags.Refresh\ menu
+ \ :call <SID>Tlist_Menu_Refresh()<CR>
+ anoremenu <silent> PopUp.T&ags.Sort\ menu\ by.Name
+ \ :call <SID>Tlist_Change_Sort('menu', 'set', 'name')<CR>
+ anoremenu <silent> PopUp.T&ags.Sort\ menu\ by.Order
+ \ :call <SID>Tlist_Change_Sort('menu', 'set', 'order')<CR>
+ anoremenu PopUp.T&ags.-SEP1- :
+ endif
+endfunction
+
+let s:menu_char_prefix =
+ \ '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+" Tlist_Menu_Get_Tag_Type_Cmd
+" Get the menu command for the specified tag type
+" fidx - File type index
+" ftype - File Type
+" add_ttype_name - To add or not to add the tag type name to the menu entries
+" ttype_idx - Tag type index
+function! s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, ttype_idx)
+ " Curly brace variable name optimization
+ let ftype_ttype_idx = a:ftype . '_' . a:ttype_idx
+
+ let ttype = s:tlist_{ftype_ttype_idx}_name
+ if a:add_ttype_name
+ " If the tag type name contains space characters, escape it. This
+ " will be used to create the menu entries.
+ let ttype_fullname = escape(s:tlist_{ftype_ttype_idx}_fullname, ' ')
+ endif
+
+ " Curly brace variable name optimization
+ let fidx_ttype = a:fidx . '_' . ttype
+
+ " Number of tag entries for this tag type
+ let tcnt = s:tlist_{fidx_ttype}_count
+ if tcnt == 0 " No entries for this tag type
+ return ''
+ endif
+
+ let mcmd = ''
+
+ " Create the menu items for the tags.
+ " Depending on the number of tags of this type, split the menu into
+ " multiple sub-menus, if needed.
+ if tcnt > g:Tlist_Max_Submenu_Items
+ let j = 1
+ while j <= tcnt
+ let final_index = j + g:Tlist_Max_Submenu_Items - 1
+ if final_index > tcnt
+ let final_index = tcnt
+ endif
+
+ " Extract the first and last tag name and form the
+ " sub-menu name
+ let tidx = s:tlist_{fidx_ttype}_{j}
+ let first_tag = s:tlist_{a:fidx}_{tidx}_tag_name
+
+ let tidx = s:tlist_{fidx_ttype}_{final_index}
+ let last_tag = s:tlist_{a:fidx}_{tidx}_tag_name
+
+ " Truncate the names, if they are greater than the
+ " max length
+ let first_tag = strpart(first_tag, 0, g:Tlist_Max_Tag_Length)
+ let last_tag = strpart(last_tag, 0, g:Tlist_Max_Tag_Length)
+
+ " Form the menu command prefix
+ let m_prefix = 'anoremenu <silent> T\&ags.'
+ if a:add_ttype_name
+ let m_prefix = m_prefix . ttype_fullname . '.'
+ endif
+ let m_prefix = m_prefix . first_tag . '\.\.\.' . last_tag . '.'
+
+ " Character prefix used to number the menu items (hotkey)
+ let m_prefix_idx = 0
+
+ while j <= final_index
+ let tidx = s:tlist_{fidx_ttype}_{j}
+
+ let tname = s:tlist_{a:fidx}_{tidx}_tag_name
+
+ let mcmd = mcmd . m_prefix . '\&' .
+ \ s:menu_char_prefix[m_prefix_idx] . '\.' .
+ \ tname . ' :call <SID>Tlist_Menu_Jump_To_Tag(' .
+ \ tidx . ')<CR>|'
+
+ let m_prefix_idx = m_prefix_idx + 1
+ let j = j + 1
+ endwhile
+ endwhile
+ else
+ " Character prefix used to number the menu items (hotkey)
+ let m_prefix_idx = 0
+
+ let m_prefix = 'anoremenu <silent> T\&ags.'
+ if a:add_ttype_name
+ let m_prefix = m_prefix . ttype_fullname . '.'
+ endif
+ let j = 1
+ while j <= tcnt
+ let tidx = s:tlist_{fidx_ttype}_{j}
+
+ let tname = s:tlist_{a:fidx}_{tidx}_tag_name
+
+ let mcmd = mcmd . m_prefix . '\&' .
+ \ s:menu_char_prefix[m_prefix_idx] . '\.' .
+ \ tname . ' :call <SID>Tlist_Menu_Jump_To_Tag(' . tidx
+ \ . ')<CR>|'
+
+ let m_prefix_idx = m_prefix_idx + 1
+ let j = j + 1
+ endwhile
+ endif
+
+ return mcmd
+endfunction
+
+" Update the taglist menu with the tags for the specified file
+function! s:Tlist_Menu_File_Refresh(fidx)
+ call s:Tlist_Log_Msg('Refreshing the tag menu for ' . s:tlist_{a:fidx}_filename)
+ " The 'B' flag is needed in the 'cpoptions' option
+ let old_cpoptions = &cpoptions
+ set cpoptions&vim
+
+ exe s:tlist_{a:fidx}_menu_cmd
+
+ " Update the popup menu (if enabled)
+ if &mousemodel =~ 'popup'
+ let cmd = substitute(s:tlist_{a:fidx}_menu_cmd, ' T\\&ags\.',
+ \ ' PopUp.T\\\&ags.', "g")
+ exe cmd
+ endif
+
+ " The taglist menu is not empty now
+ let s:tlist_menu_empty = 0
+
+ " Restore the 'cpoptions' settings
+ let &cpoptions = old_cpoptions
+endfunction
+
+" Tlist_Menu_Update_File
+" Add the taglist menu
+function! s:Tlist_Menu_Update_File(clear_menu)
+ if !has('gui_running')
+ " Not running in GUI mode
+ return
+ endif
+
+ call s:Tlist_Log_Msg('Updating the tag menu, clear_menu = ' . a:clear_menu)
+
+ " Remove the tags menu
+ if a:clear_menu
+ call s:Tlist_Menu_Remove_File()
+
+ endif
+
+ " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help
+ if &buftype != ''
+ return
+ endif
+
+ let filename = fnamemodify(bufname('%'), ':p')
+ let ftype = s:Tlist_Get_Buffer_Filetype('%')
+
+ " If the file doesn't support tag listing, skip it
+ if s:Tlist_Skip_File(filename, ftype)
+ return
+ endif
+
+ let fidx = s:Tlist_Get_File_Index(filename)
+ if fidx == -1 || !s:tlist_{fidx}_valid
+ " Check whether this file is removed based on user request
+ " If it is, then don't display the tags for this file
+ if s:Tlist_User_Removed_File(filename)
+ return
+ endif
+
+ " Process the tags for the file
+ let fidx = s:Tlist_Process_File(filename, ftype)
+ if fidx == -1
+ return
+ endif
+ endif
+
+ let fname = escape(fnamemodify(bufname('%'), ':t'), '.')
+ if fname != ''
+ exe 'anoremenu T&ags.' . fname . ' <Nop>'
+ anoremenu T&ags.-SEP2- :
+ endif
+
+ if !s:tlist_{fidx}_tag_count
+ return
+ endif
+
+ if s:tlist_{fidx}_menu_cmd != ''
+ " Update the menu with the cached command
+ call s:Tlist_Menu_File_Refresh(fidx)
+
+ return
+ endif
+
+ " We are going to add entries to the tags menu, so the menu won't be
+ " empty
+ let s:tlist_menu_empty = 0
+
+ let cmd = ''
+
+ " Determine whether the tag type name needs to be added to the menu
+ " If more than one tag type is present in the taglisting for a file,
+ " then the tag type name needs to be present
+ let add_ttype_name = -1
+ let i = 1
+ while i <= s:tlist_{ftype}_count && add_ttype_name < 1
+ let ttype = s:tlist_{ftype}_{i}_name
+ if s:tlist_{fidx}_{ttype}_count
+ let add_ttype_name = add_ttype_name + 1
+ endif
+ let i = i + 1
+ endwhile
+
+ " Process the tags by the tag type and get the menu command
+ let i = 1
+ while i <= s:tlist_{ftype}_count
+ let mcmd = s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, i)
+ if mcmd != ''
+ let cmd = cmd . mcmd
+ endif
+
+ let i = i + 1
+ endwhile
+
+ " Cache the menu command for reuse
+ let s:tlist_{fidx}_menu_cmd = cmd
+
+ " Update the menu
+ call s:Tlist_Menu_File_Refresh(fidx)
+endfunction
+
+" Tlist_Menu_Remove_File
+" Remove the tags displayed in the tags menu
+function! s:Tlist_Menu_Remove_File()
+ if !has('gui_running') || s:tlist_menu_empty
+ return
+ endif
+
+ call s:Tlist_Log_Msg('Removing the tags menu for a file')
+
+ " Cleanup the Tags menu
+ silent! unmenu T&ags
+ if &mousemodel =~ 'popup'
+ silent! unmenu PopUp.T&ags
+ endif
+
+ " Add a dummy menu item to retain teared off menu
+ noremenu T&ags.Dummy l
+
+ silent! unmenu! T&ags
+ if &mousemodel =~ 'popup'
+ silent! unmenu! PopUp.T&ags
+ endif
+
+ call s:Tlist_Menu_Add_Base_Menu()
+
+ " Remove the dummy menu item
+ unmenu T&ags.Dummy
+
+ let s:tlist_menu_empty = 1
+endfunction
+
+" Tlist_Menu_Refresh
+" Refresh the taglist menu
+function! s:Tlist_Menu_Refresh()
+ call s:Tlist_Log_Msg('Refreshing the tags menu')
+ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p'))
+ if fidx != -1
+ " Invalidate the cached menu command
+ let s:tlist_{fidx}_menu_cmd = ''
+ endif
+
+ " Update the taglist, menu and window
+ call s:Tlist_Update_Current_File()
+endfunction
+
+" Tlist_Menu_Jump_To_Tag
+" Jump to the selected tag
+function! s:Tlist_Menu_Jump_To_Tag(tidx)
+ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p'))
+ if fidx == -1
+ return
+ endif
+
+ let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, a:tidx)
+ if tagpat == ''
+ return
+ endif
+
+ " Add the current cursor position to the jump list, so that user can
+ " jump back using the ' and ` marks.
+ mark '
+
+ silent call search(tagpat, 'w')
+
+ " Bring the line to the middle of the window
+ normal! z.
+
+ " If the line is inside a fold, open the fold
+ if foldclosed('.') != -1
+ .foldopen
+ endif
+endfunction
+
+" Tlist_Menu_Init
+" Initialize the taglist menu
+function! s:Tlist_Menu_Init()
+ call s:Tlist_Menu_Add_Base_Menu()
+
+ " Automatically add the tags defined in the current file to the menu
+ augroup TagListMenuCmds
+ autocmd!
+
+ if !g:Tlist_Process_File_Always
+ autocmd BufEnter * call s:Tlist_Refresh()
+ endif
+ autocmd BufLeave * call s:Tlist_Menu_Remove_File()
+ augroup end
+
+ call s:Tlist_Menu_Update_File(0)
+endfunction
+
+" Tlist_Vim_Session_Load
+" Initialize the taglist window/buffer, which is created when loading
+" a Vim session file.
+function! s:Tlist_Vim_Session_Load()
+ call s:Tlist_Log_Msg('Tlist_Vim_Session_Load')
+
+ " Initialize the taglist window
+ call s:Tlist_Window_Init()
+
+ " Refresh the taglist window
+ call s:Tlist_Window_Refresh()
+endfunction
+
+" Tlist_Set_App
+" Set the name of the external plugin/application to which taglist
+" belongs.
+" Taglist plugin is part of another plugin like cream or winmanager.
+function! Tlist_Set_App(name)
+ if a:name == ""
+ return
+ endif
+
+ let s:tlist_app_name = a:name
+endfunction
+
+" Winmanager integration
+
+" Initialization required for integration with winmanager
+function! TagList_Start()
+ " If current buffer is not taglist buffer, then don't proceed
+ if bufname('%') != '__Tag_List__'
+ return
+ endif
+
+ call Tlist_Set_App('winmanager')
+
+ " Get the current filename from the winmanager plugin
+ let bufnum = WinManagerGetLastEditedFile()
+ if bufnum != -1
+ let filename = fnamemodify(bufname(bufnum), ':p')
+ let ftype = s:Tlist_Get_Buffer_Filetype(bufnum)
+ endif
+
+ " Initialize the taglist window, if it is not already initialized
+ if !exists('s:tlist_window_initialized') || !s:tlist_window_initialized
+ call s:Tlist_Window_Init()
+ call s:Tlist_Window_Refresh()
+ let s:tlist_window_initialized = 1
+ endif
+
+ " Update the taglist window
+ if bufnum != -1
+ if !s:Tlist_Skip_File(filename, ftype) && g:Tlist_Auto_Update
+ call s:Tlist_Window_Refresh_File(filename, ftype)
+ endif
+ endif
+endfunction
+
+function! TagList_IsValid()
+ return 0
+endfunction
+
+function! TagList_WrapUp()
+ return 0
+endfunction
+
+" restore 'cpo'
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/.vim/syntax/django.vim b/.vim/syntax/django.vim
new file mode 100644
index 0000000..3ad4816
--- /dev/null
+++ b/.vim/syntax/django.vim
@@ -0,0 +1,93 @@
+" Vim syntax file
+" Language: Django template
+" Maintainer: Dave Hodder <dmh@dmh.org.uk>
+" Last Change: 2007 Apr 21
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+" Mark illegal characters
+syn match djangoError "%}\|}}\|#}"
+
+" Django template built-in tags and parameters
+" 'comment' doesn't appear here because it gets special treatment
+syn keyword djangoStatement contained and as block endblock by cycle debug else
+syn keyword djangoStatement contained extends filter endfilter firstof for
+syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
+syn keyword djangoStatement contained ifequal endifequal ifnotequal
+syn keyword djangoStatement contained endifnotequal in include load not now or
+syn keyword djangoStatement contained parsed regroup reversed spaceless
+syn keyword djangoStatement contained endspaceless ssi templatetag openblock
+syn keyword djangoStatement contained closeblock openvariable closevariable
+syn keyword djangoStatement contained openbrace closebrace opencomment
+syn keyword djangoStatement contained closecomment widthratio url with endwith
+syn keyword djangoStatement contained get_current_language trans noop blocktrans
+syn keyword djangoStatement contained endblocktrans get_available_languages
+syn keyword djangoStatement contained get_current_language_bidi plural
+
+" Django templete built-in filters
+syn keyword djangoFilter contained add addslashes capfirst center cut date
+syn keyword djangoFilter contained default default_if_none dictsort
+syn keyword djangoFilter contained dictsortreversed divisibleby escape
+syn keyword djangoFilter contained filesizeformat first fix_ampersands
+syn keyword djangoFilter contained floatformat get_digit join length length_is
+syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
+syn keyword djangoFilter contained lower make_list phone2numeric pluralize
+syn keyword djangoFilter contained pprint random removetags rjust slice slugify
+syn keyword djangoFilter contained stringformat striptags
+syn keyword djangoFilter contained time timesince timeuntil title
+syn keyword djangoFilter contained truncatewords unordered_list upper urlencode
+syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
+
+" Keywords to highlight within comments
+syn keyword djangoTodo contained TODO FIXME XXX
+
+" Django template constants (always surrounded by double quotes)
+syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/
+
+" Mark illegal characters within tag and variables blocks
+syn match djangoTagError contained "#}\|{{\|[^%]}}\|[<>!&#]"
+syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]"
+
+" Django template tag and variable blocks
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display
+
+" Django template 'comment' tag and comment block
+syn region djangoComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=djangoTodo
+syn region djangoComBlock start="{#" end="#}" contains=djangoTodo
+
+" 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_django_syn_inits")
+ if version < 508
+ let did_django_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink djangoTagBlock PreProc
+ HiLink djangoVarBlock PreProc
+ HiLink djangoStatement Statement
+ HiLink djangoFilter Identifier
+ HiLink djangoArgument Constant
+ HiLink djangoTagError Error
+ HiLink djangoVarError Error
+ HiLink djangoError Error
+ HiLink djangoComment Comment
+ HiLink djangoComBlock Comment
+ HiLink djangoTodo Todo
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "django"
diff --git a/.vim/syntax/htmldjango.vim b/.vim/syntax/htmldjango.vim
new file mode 100644
index 0000000..4b13863
--- /dev/null
+++ b/.vim/syntax/htmldjango.vim
@@ -0,0 +1,34 @@
+" Vim syntax file
+" Language: Django HTML template
+" Maintainer: Dave Hodder <dmh@dmh.org.uk>
+" Last Change: 2007 Jan 26
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'html'
+endif
+
+if version < 600
+ so <sfile>:p:h/django.vim
+ so <sfile>:p:h/html.vim
+else
+ runtime! syntax/django.vim
+ runtime! syntax/html.vim
+ unlet b:current_syntax
+endif
+
+syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock
+
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks
+syn region djangoComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
+syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
+
+let b:current_syntax = "htmldjango"
diff --git a/.vim/syntax/prolog.vim b/.vim/syntax/prolog.vim
new file mode 100644
index 0000000..58de71f
--- /dev/null
+++ b/.vim/syntax/prolog.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: PROLOG
+" Maintainers: Thomas Koehler <jean-luc@picard.franken.de>
+" Last Change: 2009 Dec 04
+" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
+
+" There are two sets of highlighting in here:
+" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
+" Otherwise you get more highlighting.
+
+" Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Prolog is case sensitive.
+syn case match
+
+" Very simple highlighting for comments, clause heads and
+" character codes. It respects prolog strings and atoms.
+
+syn region prologCComment start=+/\*+ end=+\*/+
+syn match prologComment +%.*+
+
+syn keyword prologKeyword module meta_predicate multifile dynamic
+syn match prologCharCode +0'\\\=.+
+syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
+syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+ contains=prologComment,prologCComment,prologString
+
+if !exists("prolog_highlighting_clean")
+
+ " some keywords
+ " some common predicates are also highlighted as keywords
+ " is there a better solution?
+ syn keyword prologKeyword abolish current_output peek_code
+ syn keyword prologKeyword append current_predicate put_byte
+ syn keyword prologKeyword arg current_prolog_flag put_char
+ syn keyword prologKeyword asserta fail put_code
+ syn keyword prologKeyword assertz findall read
+ syn keyword prologKeyword at_end_of_stream float read_term
+ syn keyword prologKeyword atom flush_output repeat
+ syn keyword prologKeyword atom_chars functor retract
+ syn keyword prologKeyword atom_codes get_byte set_input
+ syn keyword prologKeyword atom_concat get_char set_output
+ syn keyword prologKeyword atom_length get_code set_prolog_flag
+ syn keyword prologKeyword atomic halt set_stream_position
+ syn keyword prologKeyword bagof integer setof
+ syn keyword prologKeyword call is stream_property
+ syn keyword prologKeyword catch nl sub_atom
+ syn keyword prologKeyword char_code nonvar throw
+ syn keyword prologKeyword char_conversion number true
+ syn keyword prologKeyword clause number_chars unify_with_occurs_check
+ syn keyword prologKeyword close number_codes var
+ syn keyword prologKeyword compound once write
+ syn keyword prologKeyword copy_term op write_canonical
+ syn keyword prologKeyword current_char_conversion open write_term
+ syn keyword prologKeyword current_input peek_byte writeq
+ syn keyword prologKeyword current_op peek_char
+
+ syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
+ syn match prologAsIs "===\|\\===\|<=\|=>"
+
+ syn match prologNumber "\<[0123456789]*\>'\@!"
+ syn match prologCommentError "\*/"
+ syn match prologSpecialCharacter ";"
+ syn match prologSpecialCharacter "!"
+ syn match prologQuestion "?-.*\." contains=prologNumber
+
+
+endif
+
+syn sync maxlines=50
+
+
+" 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_prolog_syn_inits")
+ if version < 508
+ let did_prolog_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " The default highlighting.
+ HiLink prologComment Comment
+ HiLink prologCComment Comment
+ HiLink prologCharCode Special
+
+ if exists ("prolog_highlighting_clean")
+
+ HiLink prologKeyword Statement
+ HiLink prologClauseHead Statement
+
+ else
+
+ HiLink prologKeyword Keyword
+ HiLink prologClauseHead Constant
+ HiLink prologQuestion PreProc
+ HiLink prologSpecialCharacter Special
+ HiLink prologNumber Number
+ HiLink prologAsIs Normal
+ HiLink prologCommentError Error
+ HiLink prologAtom String
+ HiLink prologString String
+ HiLink prologOperator Operator
+
+ endif
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "prolog"
+
+" vim: ts=8
diff --git a/.vim/syntax/rnc.vim b/.vim/syntax/rnc.vim
new file mode 100644
index 0000000..411046f
--- /dev/null
+++ b/.vim/syntax/rnc.vim
@@ -0,0 +1,59 @@
+" Vim syntax file
+" Language: RELAX NG Compact Syntax
+" Maintainer: Hans Fugal <hans@fugal.net>
+" Last Change: $Date: 2003/06/22 03:32:14 $
+" $Id: rnc.vim,v 1.7 2003/06/22 03:32:14 fugalh Exp $
+
+if version < 600
+ syntax clear
+elseif exists ("b:current_syntax")
+ finish
+endif
+
+" add the character '-' and '.' to iskeyword.
+set iskeyword+=45,46
+
+" Comments
+syn match Comment /^\s*#[^#].*$/
+syn match Documentation /^\s*##.*$/
+
+" Literals
+syn region literalSegment start=/"/ end=/"/
+
+syn match patternSpecial /[,&|?*+\\]/
+syn match Identifier /\k\+\s*\(&=\|=\||=\)\@=/ nextgroup=assignMethod
+syn match assignMethod /&=\|=\||=/
+syn match namespace /\k\+\(:\(\k\|\*\)\)\@=/
+syn region Annotation excludenl start=/\[/ end=/\]/ contains=ALLBUT,Identifier,patternName
+
+" named patterns (element and attribute)
+syn keyword patternKeyword element attribute nextgroup=patternName skipwhite skipempty
+syn match patternName /\k\+/ contained
+
+" Keywords
+syn keyword patternKeyword list mixed parent empty text notAllowed externalRef grammar
+syn keyword grammarContentKeyword div include
+syn keyword startKeyword start
+syn keyword datatypeNameKeyword string token
+syn keyword namespaceUriKeyword inherit
+syn keyword inheritKeyword inherit
+syn keyword declKeyword namespace default datatypes
+
+" Links
+hi link patternKeyword keyword
+hi link patternName Identifier
+hi link grammarContentKeyword keyword
+hi link startKeyword keyword
+hi link datatypeNameKeyword keyword
+hi link namespaceUriKeyword keyword
+hi link inheritKeyword keyword
+hi link declKeyword keyword
+
+hi link literalSegment String
+hi link Documentation Comment
+
+hi link patternSpecial Special
+hi link namespace Type
+
+let b:current_syntax = "rnc"
+" vim: ts=8 sw=4 smarttab
diff --git a/.vim/syntax/syntax-r.vim b/.vim/syntax/syntax-r.vim
new file mode 100644
index 0000000..a4548a4
--- /dev/null
+++ b/.vim/syntax/syntax-r.vim
@@ -0,0 +1,621 @@
+" Vim syntax file
+" Language: R (GNU S)
+" Maintainer: Tom Payne <tom@tompayne.org>
+" Last Change: 2003 May 11
+" Filenames: *.r
+" URL: http://www.tompayne.org/vim/syntax/r.vim
+"
+" Modified by Jeremy Stephens and Will Gray.
+"
+" Options:
+" You can set these options in your vimrc file.
+"
+" For set option do: let OPTION_NAME = 1
+" For clear option do: let OPTION_NAME = 0
+"
+" For highlighting internal/primitive functions:
+" r_package_internal
+"
+" For highlighting package 'base' functions:
+" r_package_base
+"
+" For highlighting package 'graphics' functions:
+" r_package_graphics
+"
+" For highlighting package 'stats' functions:
+" r_package_stats
+"
+" For highlighting package 'tools' functions:
+" r_package_tools
+"
+" For highlighting package 'methods' functions:
+" r_package_methods
+"
+" For highlighting package 'utils' functions:
+" r_package_utils
+"
+" If you want all possible R package highlighting:
+" r_package_all
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+if version >= 600
+ setlocal iskeyword=@,48-57,_,.
+else
+ set iskeyword=@,48-57,_,.
+endif
+
+if !exists("r_package_all")
+ let r_package_all = 1
+endif
+if exists("r_package_all") && r_package_all != 0
+ if !exists("r_package_internal")
+ let r_package_internal = 1
+ endif
+ if !exists("r_package_base")
+ let r_package_base = 1
+ endif
+ if !exists("r_package_methods")
+ let r_package_methods = 1
+ endif
+ if !exists("r_package_graphics")
+ let r_package_graphics = 1
+ endif
+ if !exists("r_package_stats")
+ let r_package_stats = 1
+ endif
+ if !exists("r_package_utils")
+ let r_package_utils = 1
+ endif
+ if !exists("r_package_tools")
+ let r_package_tools = 1
+ endif
+endif
+
+syn case match
+
+" Comment
+syn match rComment /\#.*/
+
+" Constant
+" string enclosed in double quotes
+syn region rString matchgroup=rStringDelimiter start=/"/ skip=/\\\\\|\\"/ end=/"/
+" string enclosed in single quotes
+syn region rString matchgroup=rStringDelimiter start=/'/ skip=/\\\\\|\\'/ end=/'/
+" number with no fractional part or exponent
+syn match rNumber /\d\+/
+" floating point number with integer and fractional parts and optional exponent
+syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
+" floating point number with no integer part and optional exponent
+syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
+" floating point number with no fractional part and optional exponent
+syn match rFloat /\d\+[Ee][-+]\=\d\+/
+
+" Identifier
+" identifier with leading letter and optional following keyword characters
+syn match rIdentifier /\a\k*/
+" identifier with leading period, one or more digits, and at least one non-digit keyword character
+syn match rIdentifier /\.\d*\K\k*/
+
+syn match rFunction /\a\k*(/me=e-1 nextgroup=rParenRegion
+
+" Statement
+syn keyword rStatement break next return
+syn keyword rConditional if else
+syn keyword rRepeat for in repeat while
+
+" Constant
+syn keyword rConstant LETTERS letters month.ab month.name pi
+syn keyword rConstant NULL
+syn keyword rBoolean FALSE TRUE
+syn keyword rNumber NA
+
+syn match rArrow /<\{1,2}-/
+syn match rArrow /->\{1,2}/
+
+" Type
+syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
+
+" internal/primitive functions (probably has some duplicates)
+if exists("r_package_internal") && r_package_internal != 0
+ syn keyword rPrimitiveStatement stop warning gettext ngettext bindtextdomain .addCondHands
+ syn keyword rPrimitiveStatement .resetCondHands .signalCondition .dfltStop .dfltWarn .addRestart
+ syn keyword rPrimitiveStatement .getRestart .invokeRestart .addTryHandlers geterrmessage restart
+ syn keyword rPrimitiveStatement function as.function.default .subset switch browser debug undebug
+ syn keyword rPrimitiveStatement .primTrace .primUntrace .Internal on.exit Recall delay delayedAssign
+ syn keyword rPrimitiveStatement .Primitive identical crossprod all any vector complex matrix length row
+ syn keyword rPrimitiveStatement col c unlist cbind rbind drop oldClass class unclass names dimnames
+ syn keyword rPrimitiveStatement all.names dim attributes attr comment get mget exists assign remove
+ syn keyword rPrimitiveStatement duplicated unique which.min which.max match pmatch charmatch match.call
+ syn keyword rPrimitiveStatement complete.cases attach detach search round atan log signif abs floor
+ syn keyword rPrimitiveStatement ceiling sqrt sign trunc exp cos sin tan acos asin cosh sinh tanh acosh
+ syn keyword rPrimitiveStatement asinh atanh lgamma gamma digamma trigamma pentagamma gammaCody lbeta
+ syn keyword rPrimitiveStatement beta lchoose choose dchisq pchisq qchisq dexp pexp qexp dgeom pgeom
+ syn keyword rPrimitiveStatement qgeom dpois ppois qpois dt pt qt dsignrank psignrank qsignrank besselJ
+ syn keyword rPrimitiveStatement besselY psigamma Re Im Mod Arg Conj dbeta pbeta qbeta dbinom pbinom
+ syn keyword rPrimitiveStatement qbinom dcauchy pcauchy qcauchy df pf qf dgamma pgamma qgamma dlnorm
+ syn keyword rPrimitiveStatement plnorm qlnorm dlogis plogis qlogis dnbinom pnbinom qnbinom dnorm pnorm
+ syn keyword rPrimitiveStatement qnorm dunif punif qunif dweibull pweibull qweibull dnchisq pnchisq
+ syn keyword rPrimitiveStatement qnchisq dnt pnt qnt dwilcox pwilcox qwilcox besselI besselK dhyper
+ syn keyword rPrimitiveStatement phyper qhyper dnbeta pnbeta qnbeta dnf pnf qnf dtukey ptukey qtukey
+ syn keyword rPrimitiveStatement rchisq rexp rgeom rpois rt rsignrank rbeta rbinom rcauchy rf rgamma
+ syn keyword rPrimitiveStatement rlnorm rlogis rnbinom rnchisq rnorm runif rweibull rwilcox rhyper
+ syn keyword rPrimitiveStatement rmultinom sample RNGkind set.seed sum min max prod range cov cor cumsum
+ syn keyword rPrimitiveStatement cumprod cummax cummin as.character as.vector paste format format.info
+ syn keyword rPrimitiveStatement cat call do.call as.call type.convert as.environment nchar substr
+ syn keyword rPrimitiveStatement substrgets strsplit abbreviate make.names grep sub gsub regexpr
+ syn keyword rPrimitiveStatement grep.perl sub.perl gsub.perl regexpr.perl agrep tolower toupper chartr
+ syn keyword rPrimitiveStatement sprintf make.unique charToRaw rawToChar rawShift intToBits rawToBits
+ syn keyword rPrimitiveStatement packBits encodeString iconv strtrim is.null is.logical is.integer
+ syn keyword rPrimitiveStatement is.real is.double is.complex is.character is.symbol is.environment
+ syn keyword rPrimitiveStatement is.list is.pairlist is.expression is.object is.numeric is.matrix
+ syn keyword rPrimitiveStatement is.array is.atomic is.recursive is.call is.language is.function
+ syn keyword rPrimitiveStatement is.single is.vector is.na is.nan is.finite is.infinite proc.time gc.time
+ syn keyword rPrimitiveStatement Version machine commandArgs int.unzip system system unlink help.start
+ syn keyword rPrimitiveStatement show.help.item flush.console win.version shell.exec winDialog
+ syn keyword rPrimitiveStatement winDialogString winMenuNames winMenuItems winMenuAdd winMenuDel
+ syn keyword rPrimitiveStatement memory.size DLL.version bringToTop select.list readClipboard
+ syn keyword rPrimitiveStatement writeClipboard chooseFiles getIdentification getWindowHandle
+ syn keyword rPrimitiveStatement getWindowTitle setWindowTitle wsbrowser pkgbrowser data.manager
+ syn keyword rPrimitiveStatement package.manager flush.console hsbrowser select.list aqua.custom.print
+ syn keyword rPrimitiveStatement parse save saveToConn load loadFromConn serializeToConn
+ syn keyword rPrimitiveStatement unserializeFromConn deparse dput dump substitute quote quit interactive
+ syn keyword rPrimitiveStatement readline menu print.default prmatrix invisible gc gcinfo gctorture
+ syn keyword rPrimitiveStatement memory.profile rep list split symbol.C symbol.For is.loaded .C .Fortran
+ syn keyword rPrimitiveStatement .External .Call .External.graphics .Call.graphics recordGraphics
+ syn keyword rPrimitiveStatement dyn.load dyn.unload ls typeof eval eval.with.vis expression sys.parent
+ syn keyword rPrimitiveStatement sys.call sys.frame sys.nframe sys.calls sys.frames sys.on.exit
+ syn keyword rPrimitiveStatement sys.parents sys.function parent.frame sort is.unsorted psort qsort
+ syn keyword rPrimitiveStatement radixsort order rank missing nargs scan count.fields readTableHead
+ syn keyword rPrimitiveStatement t.default aperm builtins edit dataentry args formals body bodyCode
+ syn keyword rPrimitiveStatement globalenv environment reg.finalizer options sink sink.number lib.fixup
+ syn keyword rPrimitiveStatement pos.to.env eapply lapply apply colSums colMeans rowSums rowMeans Rprof
+ syn keyword rPrimitiveStatement object.size mem.limits merge capabilities new.env parent.env visibleflag
+ syn keyword rPrimitiveStatement file.show file.edit file.create file.remove file.rename file.append
+ syn keyword rPrimitiveStatement codeFiles.append file.symlink list.files file.exists file.choose
+ syn keyword rPrimitiveStatement file.info file.access dir.create tempfile tempdir R.home date
+ syn keyword rPrimitiveStatement index.search getenv putenv getwd setwd basename dirname Sys.info
+ syn keyword rPrimitiveStatement Sys.sleep getlocale setlocale localeconv path.expand getpid
+ syn keyword rPrimitiveStatement normalizePath fft mvfft nextn polyroot dev.control dev.copy dev.cur
+ syn keyword rPrimitiveStatement device dev.next dev.off dev.prev dev.set rgb hsv hcl gray colors palette
+ syn keyword rPrimitiveStatement plot.new plot.window axis plot.xy text mtext title abline box rect
+ syn keyword rPrimitiveStatement polygon par readonly.pars segments arrows layout locator identify
+ syn keyword rPrimitiveStatement strheight strwidth contour contourLines image dend dend.window replay
+ syn keyword rPrimitiveStatement erase persp filledcontour getGPar playDL setGPar getSnapshot
+ syn keyword rPrimitiveStatement playSnapshot symbols getGraphicsEvent inherits UseMethod NextMethod
+ syn keyword rPrimitiveStatement standardGeneric nlm fmin zeroin optim optimhess terms.formula
+ syn keyword rPrimitiveStatement update.formula model.frame model.matrix D deriv.default loadhistory
+ syn keyword rPrimitiveStatement savehistory Sys.time as.POSIXct as.POSIXlt format.POSIXlt strptime
+ syn keyword rPrimitiveStatement mkCode bcClose is.builtin.internal disassemble bcVersion load.from.file
+ syn keyword rPrimitiveStatement save.to.file putconst stdin stdout stderr readLines writeLines readBin
+ syn keyword rPrimitiveStatement writeBin readChar writeChar open isOpen isIncomplete isSeekable close
+ syn keyword rPrimitiveStatement flush file url pipe fifo gzfile unz bzfile seek truncate pushBack
+ syn keyword rPrimitiveStatement clearPushBackLength pushBackLength textConnection socketConnection
+ syn keyword rPrimitiveStatement sockSelect getAllConnections summary.connection download nsl gzcon
+ syn keyword rPrimitiveStatement readDCF getNumRtoCConverters getRtoCConverterDescriptions
+ syn keyword rPrimitiveStatement getRtoCConverterStatus setToCConverterActiveStatus
+ syn keyword rPrimitiveStatement removeToCConverterActiveStatus lockEnvironment environmentIsLocked
+ syn keyword rPrimitiveStatement lockBinding unlockBinding bindingIsLocked makeActiveBinding
+ syn keyword rPrimitiveStatement bindingIsActive mkUnbound isNamespaceEnv registerNamespace
+ syn keyword rPrimitiveStatement unregisterNamespace getRegisteredNamespace getNamespaceRegistry
+ syn keyword rPrimitiveStatement importIntoEnv write.table
+endif
+
+" base functions
+if exists("r_package_base") && r_package_base != 0
+ syn keyword rBaseStatement gammaCody besselI besselK besselJ besselY .Defunct Version provide getenv
+ syn keyword rBaseStatement read.table.url scan.url source.url httpclient parse.dcf .Alias reshapeWide
+ syn keyword rBaseStatement reshapeLong piechart machine Machine Platform restart printNoClass print.coefmat
+ syn keyword rBaseStatement codes codes.factor codes.ordered anovalist.lm lm.fit.null lm.wfit.null glm.fit.null
+ syn keyword rBaseStatement print.atomic La.eigen tetragamma pentagamma package.description .Deprecated loadURL
+ syn keyword rBaseStatement delay La.svd La.chol geterrmessage try comment round signif logb beta lbeta gamma
+ syn keyword rBaseStatement lgamma digamma trigamma psigamma factorial lfactorial choose lchoose R.Version
+ syn keyword rBaseStatement commandArgs args cbind rbind .deparseOpts deparse do.call drop format.info gc gcinfo
+ syn keyword rBaseStatement gctorture is.unsorted mem.limits nchar polyroot readline search searchpaths sprintf
+ syn keyword rBaseStatement t.default typeof memory.profile capabilities inherits NextMethod data.class
+ syn keyword rBaseStatement is.numeric.factor is.integer.factor encodeString RNGkind set.seed RNGversion .Script
+ syn keyword rBaseStatement all.equal all.equal.default all.equal.numeric all.equal.character all.equal.factor
+ syn keyword rBaseStatement all.equal.formula all.equal.language all.equal.list attr.all.equal all.names all.vars
+ syn keyword rBaseStatement aperm append apply array slice.index as.logical as.logical.default as.integer
+ syn keyword rBaseStatement as.integer.default as.double as.double.default as.complex as.complex.default
+ syn keyword rBaseStatement as.single as.single.default as.character.default as.expression as.expression.default
+ syn keyword rBaseStatement as.list as.list.default as.list.data.frame as.list.environment as.vector as.matrix
+ syn keyword rBaseStatement as.matrix.default as.null as.null.default as.function as.function.default as.array
+ syn keyword rBaseStatement as.symbol as.numeric assign attach detach ls autoload autoloader bquote forwardsolve
+ syn keyword rBaseStatement backsolve lockEnvironment environmentIsLocked lockBinding bindingIsLocked
+ syn keyword rBaseStatement makeActiveBinding bindingIsActive unlockBinding builtins by by.default by.data.frame
+ syn keyword rBaseStatement print.by cat strsplit substr substring abbreviate make.names make.unique chartr
+ syn keyword rBaseStatement tolower toupper casefold sQuote dQuote chol colSums colMeans rowSums rowMeans
+ syn keyword rBaseStatement tryCatch withCallingHandlers suppressWarnings simpleCondition simpleError
+ syn keyword rBaseStatement simpleWarning conditionMessage conditionCall conditionMessage.condition
+ syn keyword rBaseStatement conditionCall.condition print.condition as.character.condition as.character.error
+ syn keyword rBaseStatement signalCondition restartDescription restartFormals print.restart isRestart findRestart
+ syn keyword rBaseStatement computeRestarts invokeRestart invokeRestartInteractively withRestarts
+ syn keyword rBaseStatement .signalSimpleWarning .handleSimpleError conflicts stdin stdout stderr readLines
+ syn keyword rBaseStatement writeLines open open.connection isOpen isIncomplete isSeekable close close.connection
+ syn keyword rBaseStatement flush flush.connection file pipe fifo url gzfile unz bzfile socketConnection
+ syn keyword rBaseStatement textConnection seek seek.connection truncate truncate.connection pushBack
+ syn keyword rBaseStatement pushBackLength print.connection summary.connection showConnections getAllConnections
+ syn keyword rBaseStatement getConnection closeAllConnections readBin writeBin readChar writeChar gzcon
+ syn keyword rBaseStatement socketSelect contributors getNumCConverters getCConverterDescriptions
+ syn keyword rBaseStatement getCConverterStatus setCConverterStatus removeCConverter cut cut.default data.matrix
+ syn keyword rBaseStatement row.names row.names.data.frame row.names.default is.na.data.frame is.data.frame I
+ syn keyword rBaseStatement print.AsIs t.data.frame dim.data.frame dimnames.data.frame as.data.frame
+ syn keyword rBaseStatement as.data.frame.default as.data.frame.data.frame as.data.frame.list
+ syn keyword rBaseStatement as.data.frame.vector as.data.frame.ts as.data.frame.character as.data.frame.matrix
+ syn keyword rBaseStatement as.data.frame.model.matrix as.data.frame.array as.data.frame.AsIs data.frame
+ syn keyword rBaseStatement xpdrows.data.frame cbind.data.frame rbind.data.frame print.data.frame
+ syn keyword rBaseStatement as.matrix.data.frame Math.data.frame Ops.data.frame Summary.data.frame Sys.Date
+ syn keyword rBaseStatement as.Date as.Date.POSIXct as.Date.POSIXlt as.Date.factor as.Date.character
+ syn keyword rBaseStatement as.Date.default as.Date.date as.Date.dates format.Date print.Date summary.Date
+ syn keyword rBaseStatement Ops.Date Math.Date Summary.Date as.character.Date c.Date mean.Date seq.Date cut.Date
+ syn keyword rBaseStatement julian.Date weekdays.Date months.Date quarters.Date round.Date trunc.Date rep.Date
+ syn keyword rBaseStatement diff.Date Sys.time Sys.timezone as.POSIXlt as.POSIXct as.POSIXct.Date as.POSIXct.date
+ syn keyword rBaseStatement as.POSIXct.dates as.POSIXct.POSIXlt as.POSIXct.default format.POSIXlt strptime
+ syn keyword rBaseStatement format.POSIXct print.POSIXct print.POSIXlt summary.POSIXct summary.POSIXlt Ops.POSIXt
+ syn keyword rBaseStatement Math.POSIXt Summary.POSIXct Summary.POSIXlt as.character.POSIXt str.POSIXt
+ syn keyword rBaseStatement is.na.POSIXlt c.POSIXct c.POSIXlt all.equal.POSIXct ISOdatetime ISOdate
+ syn keyword rBaseStatement as.matrix.POSIXlt mean.POSIXct mean.POSIXlt difftime as.difftime print.difftime
+ syn keyword rBaseStatement round.difftime Ops.difftime Math.difftime mean.difftime Summary.difftime seq.POSIXt
+ syn keyword rBaseStatement cut.POSIXt julian julian.POSIXt weekdays weekdays.POSIXt months months.POSIXt
+ syn keyword rBaseStatement quarters quarters.POSIXt trunc.POSIXt round.POSIXt as.data.frame.POSIXlt rep.POSIXct
+ syn keyword rBaseStatement rep.POSIXlt diff.POSIXt read.dcf write.dcf delayedAssign diag diff diff.default dput
+ syn keyword rBaseStatement dget dump duplicated duplicated.default duplicated.data.frame duplicated.matrix
+ syn keyword rBaseStatement unique unique.default unique.data.frame unique.matrix dyn.load dyn.unload
+ syn keyword rBaseStatement getNativeSymbolInfo getLoadedDLLs getDLLRegisteredRoutines
+ syn keyword rBaseStatement getDLLRegisteredRoutines.character getDLLRegisteredRoutines.DLLInfo
+ syn keyword rBaseStatement print.NativeRoutineList print.DLLRegisteredRoutines getCallingDLL print.DLLInfo
+ syn keyword rBaseStatement print.DLLInfoList eapply eigen environment .GlobalEnv eval eval.parent evalq new.env
+ syn keyword rBaseStatement parent.env local Recall with with.default force exists expand.grid factor is.factor
+ syn keyword rBaseStatement as.factor category levels nlevels as.vector.factor as.character.factor print.factor
+ syn keyword rBaseStatement Math.factor Summary.factor Ops.factor ordered is.ordered as.ordered Ops.ordered
+ syn keyword rBaseStatement R.home file.show file.append file.remove file.rename list.files file.path file.exists
+ syn keyword rBaseStatement file.create file.choose file.copy file.symlink file.info file.access dir.create
+ syn keyword rBaseStatement format.octmode print.octmode system.file getwd setwd basename dirname Sys.info
+ syn keyword rBaseStatement Sys.sleep path.expand findInterval formals body alist format format.default
+ syn keyword rBaseStatement format.char format.pval formatC format.factor format.data.frame format.AsIs prettyNum
+ syn keyword rBaseStatement subset.data.frame subset subset.default subset.matrix transform.data.frame transform
+ syn keyword rBaseStatement transform.default stack.data.frame stack stack.default unstack.data.frame unstack
+ syn keyword rBaseStatement unstack.default get mget Sys.getenv Sys.putenv Sys.getpid gl grep sub gsub regexpr
+ syn keyword rBaseStatement agrep identical isTRUE ifelse interaction is.vector is.primitive jitter kappa
+ syn keyword rBaseStatement kappa.lm kappa.default kappa.qr kappa.tri kronecker labels labels.default lapply
+ syn keyword rBaseStatement lapply lazyLoad testPlatformEquivalence library print.libraryIQR library.dynam
+ syn keyword rBaseStatement library.dynam.unload require .packages .path.package .find.package print.packageInfo
+ syn keyword rBaseStatement manglePackageName .getRequiredPackages licence load save save.image sys.load.image
+ syn keyword rBaseStatement sys.save.image Sys.getlocale Sys.setlocale Sys.localeconv lower.tri mapply match
+ syn keyword rBaseStatement match match.call pmatch match.arg charmatch char.expand match.fun matrix nrow ncol
+ syn keyword rBaseStatement NROW NCOL rownames colnames row col crossprod t t.data.frame max.col mean
+ syn keyword rBaseStatement mean.default mean.data.frame merge merge.default merge.data.frame simpleMessage
+ syn keyword rBaseStatement suppressMessages message trace untrace .isMethodsDispatchOn tracingState mode
+ syn keyword rBaseStatement storage.mode names names.default getNamespace loadedNamespaces getNamespaceName
+ syn keyword rBaseStatement getNamespaceVersion getNamespaceExports getNamespaceImports getNamespaceUsers
+ syn keyword rBaseStatement getExportedValue attachNamespace loadNamespace loadingNamespaceInfo
+ syn keyword rBaseStatement saveNamespaceImage topenv unloadNamespace .Import .ImportFrom .Export isNamespace
+ syn keyword rBaseStatement isBaseNamespace getNamespaceInfo setNamespaceInfo asNamespace namespaceImport
+ syn keyword rBaseStatement namespaceImportFrom namespaceImportClasses namespaceImportMethods importIntoEnv
+ syn keyword rBaseStatement namespaceExport .mergeExportMethods packageHasNamespace parseNamespaceFile
+ syn keyword rBaseStatement .NotYetImplemented .NotYetUsed options getOption outer getRversion as.pairlist
+ syn keyword rBaseStatement pairlist parse paste pmax pmin pretty print print.default prmatrix noquote
+ syn keyword rBaseStatement as.matrix.noquote c.noquote print.noquote print.listof print.simple.list is.qr qr
+ syn keyword rBaseStatement qr.coef qr.qy qr.qty qr.resid qr.fitted qr.Q qr.R qr.X quit q range.default rank raw
+ syn keyword rBaseStatement as.raw charToRaw rawToChar rawShift rawToBits intToBits packBits count.fields
+ syn keyword rBaseStatement type.convert read.table read.csv read.delim rep rep.default rep.int replace replicate
+ syn keyword rBaseStatement rev rev.default rle print.rle inverse.rle rm remove rowsum.default rowsum.data.frame
+ syn keyword rBaseStatement sample sapply scale scale.default scan seq seq.default sequence .saveRDS .readRDS
+ syn keyword rBaseStatement serialize unserialize union intersect setdiff setequal is.element sink sink.number
+ syn keyword rBaseStatement solve.qr solve.default solve qr.solve sort order sort.list source sys.source split
+ syn keyword rBaseStatement split.default split.data.frame unsplit stop stopifnot warning gettext bindtextdomain
+ syn keyword rBaseStatement ngettext gettextf strtrim strwrap formatDL sum min max prod all any summary
+ syn keyword rBaseStatement summary.default summary.factor summary.matrix summary.data.frame svd sweep switch
+ syn keyword rBaseStatement sys.call sys.calls sys.frame sys.function sys.frames sys.nframe sys.parent
+ syn keyword rBaseStatement sys.parents sys.status sys.on.exit table print.table summary.table
+ syn keyword rBaseStatement print.summary.table as.data.frame.table is.table as.table as.table.default prop.table
+ syn keyword rBaseStatement margin.table tabulate tapply addTaskCallback removeTaskCallback getTaskCallbackNames
+ syn keyword rBaseStatement taskCallbackManager tempfile tempdir system.time date toString toString.default
+ syn keyword rBaseStatement traceback system unix unlink zip.file.extract unlist unname upper.tri packageEvent
+ syn keyword rBaseStatement getHook setHook mat.or.vec is.R shQuote vector logical character integer double
+ syn keyword rBaseStatement complex single warnings which which.min which.max write write.table write.csv xor
+ syn keyword rBaseStatement zapsmall is.na c
+endif
+
+" graphics functions
+if exists("r_package_graphics") && r_package_graphics != 0
+ syn keyword rGraphicsStatement abline arrows assocplot axis axTicks barplot barplot.default box boxplot
+ syn keyword rGraphicsStatement boxplot.default boxplot.formula boxplot.stats bxp chull contourLines contour
+ syn keyword rGraphicsStatement contour.default co.intervals panel.smooth coplot curve axis.POSIXct plot.POSIXct
+ syn keyword rGraphicsStatement plot.POSIXlt hist.POSIXt axis.Date plot.Date hist.Date dotchart filled.contour
+ syn keyword rGraphicsStatement fourfoldplot grid hist hist.default plot.histogram lines.histogram nclass.Sturges
+ syn keyword rGraphicsStatement nclass.scott nclass.FD identify identify.default image image.default lcm layout
+ syn keyword rGraphicsStatement layout.show legend lines lines.default locator matpoints matlines matplot mosaicplot
+ syn keyword rGraphicsStatement mosaicplot.default mosaicplot.formula mtext pairs pairs.formula pairs.default par
+ syn keyword rGraphicsStatement persp persp.default pie xy.coords plot plot.function plot.default plot.factor
+ syn keyword rGraphicsStatement plot.table plot.formula lines.formula points.formula plot.xy plot.new plot.window
+ syn keyword rGraphicsStatement plot.data.frame .newplot.hook plot.design points points.default polygon rect rug
+ syn keyword rGraphicsStatement .SSget .SSexists .SSassign split.screen screen erase.screen close.screen segments
+ syn keyword rGraphicsStatement stars stem stripchart strwidth strheight sunflowerplot symbols text text.default
+ syn keyword rGraphicsStatement title xinch yinch xyinch xyz.coords
+endif
+
+" stats functions
+if exists("r_package_stats") && r_package_stats != 0
+ syn keyword rStatsStatement AIC AIC.logLik AIC.default ARMAacf ARMAtoMA C HoltWinters predict.HoltWinters
+ syn keyword rStatsStatement residuals.HoltWinters plot.HoltWinters print.HoltWinters decompose plot.decomposed.ts
+ syn keyword rStatsStatement KalmanLike KalmanRun KalmanForecast KalmanSmooth StructTS print.StructTS
+ syn keyword rStatsStatement predict.StructTS tsdiag.StructTS tsSmooth tsSmooth.StructTS TukeyHSD TukeyHSD.aov
+ syn keyword rStatsStatement print.TukeyHSD plot.TukeyHSD acf pacf pacf.default plot.acf ccf print.acf add.scope
+ syn keyword rStatsStatement drop.scope factor.scope step extractAIC extractAIC.coxph extractAIC.survreg
+ syn keyword rStatsStatement extractAIC.glm extractAIC.lm extractAIC.negbin addmargins aggregate aggregate.default
+ syn keyword rStatsStatement aggregate.data.frame aggregate.ts printCoefmat print.anova ansari.test
+ syn keyword rStatsStatement ansari.test.default ansari.test.formula aov print.aov summary.aov print.summary.aov
+ syn keyword rStatsStatement coef.aov alias alias.formula alias.lm print.aovlist summary.aovlist
+ syn keyword rStatsStatement print.summary.aovlist coef.listof se.contrast se.contrast.aov se.contrast.aovlist
+ syn keyword rStatsStatement approx approxfun findInterval ar ar.yw ar.yw.default print.ar predict.ar ar.burg
+ syn keyword rStatsStatement ar.burg.default ar.mle ar.ols arima print.Arima predict.Arima makeARIMA coef.Arima
+ syn keyword rStatsStatement vcov.Arima logLik.Arima tsdiag.Arima tsdiag ave bw.nrd bw.SJ bw.ucv bw.bcv
+ syn keyword rStatsStatement bartlett.test bartlett.test.default bartlett.test.formula binom.test biplot
+ syn keyword rStatsStatement biplot.default biplot.princomp biplot.prcomp qbirthday pbirthday cancor chisq.test
+ syn keyword rStatsStatement cmdscale complete.cases confint confint.lm confint.glm confint.nls confint.default
+ syn keyword rStatsStatement constrOptim contr.poly poly predict.poly makepredictcall.poly polym contrasts
+ syn keyword rStatsStatement contr.helmert contr.treatment contr.sum contr.SAS cor cov var cor.test
+ syn keyword rStatsStatement cor.test.default cor.test.formula cov.wt cpgram cutree as.dendrogram
+ syn keyword rStatsStatement as.dendrogram.hclust .memberDend .midDend midcache.dendrogram print.dendrogram
+ syn keyword rStatsStatement str.dendrogram plot.dendrogram plotNode plotNodeLimit cut.dendrogram is.leaf
+ syn keyword rStatsStatement order.dendrogram reorder reorder.dendrogram rev.dendrogram labels.dendrogram
+ syn keyword rStatsStatement dendrapply heatmap density plot.density print.density D deriv deriv.formula
+ syn keyword rStatsStatement deriv.default diffinv diffinv.vector diffinv.default diffinv.ts toeplitz dist
+ syn keyword rStatsStatement format.dist as.matrix.dist as.dist as.dist.default print.dist dexp pexp qexp rexp
+ syn keyword rStatsStatement dunif punif qunif runif dnorm pnorm qnorm rnorm dcauchy pcauchy qcauchy rcauchy
+ syn keyword rStatsStatement dgamma pgamma qgamma rgamma dlnorm plnorm qlnorm rlnorm dlogis plogis qlogis rlogis
+ syn keyword rStatsStatement dweibull pweibull qweibull rweibull dbeta pbeta qbeta rbeta dbinom pbinom qbinom
+ syn keyword rStatsStatement rbinom dmultinom rmultinom dchisq pchisq qchisq rchisq df pf qf rf dgeom pgeom qgeom
+ syn keyword rStatsStatement rgeom dhyper phyper qhyper rhyper dnbinom pnbinom qnbinom rnbinom dpois ppois qpois
+ syn keyword rStatsStatement rpois dt pt qt rt ptukey qtukey dwilcox pwilcox qwilcox rwilcox dsignrank psignrank
+ syn keyword rStatsStatement qsignrank rsignrank dummy.coef dummy.coef.lm dummy.coef.aovlist ecdf print.ecdf
+ syn keyword rStatsStatement summary.ecdf plot.ecdf embed expand.model.frame factanal factanal.fit.mle
+ syn keyword rStatsStatement print.loadings print.factanal varimax promax family print.family power make.link
+ syn keyword rStatsStatement poisson quasipoisson gaussian binomial quasibinomial Gamma inverse.gaussian quasi fft
+ syn keyword rStatsStatement mvfft nextn convolve filter fisher.test fivenum fligner.test fligner.test.default
+ syn keyword rStatsStatement fligner.test.formula friedman.test friedman.test.default friedman.test.formula ftable
+ syn keyword rStatsStatement ftable.default ftable.formula as.table.ftable write.ftable print.ftable read.ftable
+ syn keyword rStatsStatement glm glm.control glm.fit print.glm anova.glm anova.glmlist stat.anova summary.glm
+ syn keyword rStatsStatement print.summary.glm deviance.glm effects.glm family.glm residuals.glm model.frame.glm
+ syn keyword rStatsStatement weights.glm formula.glm hclust plot.hclust plclust as.hclust as.hclust.default
+ syn keyword rStatsStatement as.hclust.twins print.hclust cophenetic cophenetic.default cophenetic.dendrogram
+ syn keyword rStatsStatement print.htest rect.hclust identify.hclust integrate print.integrate interaction.plot
+ syn keyword rStatsStatement isoreg fitted.isoreg residuals.isoreg print.isoreg plot.isoreg kernel print.tskernel
+ syn keyword rStatsStatement plot.tskernel df.kernel bandwidth.kernel is.tskernel kernapply kernapply.vector
+ syn keyword rStatsStatement kernapply.default kernapply.ts kernapply.tskernel kmeans print.kmeans kruskal.test
+ syn keyword rStatsStatement kruskal.test.default kruskal.test.formula ks.test ksmooth lag lag.default lag.plot lm
+ syn keyword rStatsStatement lm.fit lm.wfit print.lm summary.lm print.summary.lm residuals.lm weights.default
+ syn keyword rStatsStatement deviance.lm formula.lm family.lm model.frame.lm variable.names.lm case.names.lm
+ syn keyword rStatsStatement anova.lm anova.lmlist predict.lm effects.lm model.matrix.lm predict.mlm labels.lm hat
+ syn keyword rStatsStatement weighted.residuals lm.influence influence influence.lm influence.glm hatvalues
+ syn keyword rStatsStatement hatvalues.lm rstandard rstandard.lm rstandard.glm rstudent rstudent.lm rstudent.glm
+ syn keyword rStatsStatement dffits dfbeta dfbeta.lm dfbetas dfbetas.lm covratio cooks.distance cooks.distance.lm
+ syn keyword rStatsStatement cooks.distance.glm influence.measures print.infl summary.infl loess loess.control
+ syn keyword rStatsStatement simpleLoess predict.loess predLoess pointwise print.loess summary.loess
+ syn keyword rStatsStatement print.summary.loess scatter.smooth loess.smooth anova.loess logLik print.logLik
+ syn keyword rStatsStatement str.logLik as.data.frame.logLik logLik.glm logLik.lm loglin lowess lsfit ls.diag
+ syn keyword rStatsStatement ls.print mad mahalanobis manova summary.manova print.summary.manova mantelhaen.test
+ syn keyword rStatsStatement mcnemar.test median medpolish print.medpolish plot.medpolish summary.mlm SSD estVar
+ syn keyword rStatsStatement SSD.mlm estVar.SSD estVar.mlm Tr proj.matrix Rank Thin.row Thin.col mauchley.test
+ syn keyword rStatsStatement mauchley.test.mlm mauchley.test.SSD sphericity anova.mlm Pillai Wilks HL Roy
+ syn keyword rStatsStatement anova.mlmlist deviance.mlm plot.mlm model.tables model.tables.aov se.aov
+ syn keyword rStatsStatement model.tables.aovlist se.aovlist make.tables.aovproj make.tables.aovprojlist
+ syn keyword rStatsStatement replications eff.aovlist model.frame.aovlist print.mtable formula formula.default
+ syn keyword rStatsStatement formula.formula formula.terms formula.data.frame print.formula as.formula terms
+ syn keyword rStatsStatement terms.default terms.terms print.terms labels.terms delete.response reformulate
+ syn keyword rStatsStatement drop.terms terms.formula coef coef.default residuals residuals.default deviance
+ syn keyword rStatsStatement deviance.default fitted fitted.default anova effects weights df.residual
+ syn keyword rStatsStatement df.residual.default variable.names variable.names.default case.names
+ syn keyword rStatsStatement case.names.default offset .checkMFClasses .MFclass model.frame model.frame.default
+ syn keyword rStatsStatement model.weights model.offset model.matrix model.matrix.default model.response
+ syn keyword rStatsStatement model.extract preplot update is.empty.model makepredictcall makepredictcall.default
+ syn keyword rStatsStatement .getXlevels monthplot monthplot.StructTS monthplot.stl monthplot.ts monthplot.default
+ syn keyword rStatsStatement mood.test mood.test.default mood.test.formula na.contiguous na.contiguous.default
+ syn keyword rStatsStatement na.pass na.action na.action.default na.fail na.fail.default na.omit na.omit.default
+ syn keyword rStatsStatement na.omit.data.frame na.exclude na.exclude.default na.exclude.data.frame naresid
+ syn keyword rStatsStatement naresid.default naresid.exclude naprint naprint.default naprint.exclude napredict
+ syn keyword rStatsStatement napredict.default napredict.exclude nlm optimize uniroot profiler profiler.nls
+ syn keyword rStatsStatement profile.nls plot.profile.nls numericDeriv nlsModel.plinear nlsModel nls.control nls
+ syn keyword rStatsStatement coef.nls print.nls summary.nls print.summary.nls coef.summary.nls weights.nls
+ syn keyword rStatsStatement predict.nls fitted.nls formula.nls residuals.nls logLik.nls df.residual.nls
+ syn keyword rStatsStatement deviance.nls vcov.nls anova.nls anovalist.nls asOneSidedFormula setNames clearNames
+ syn keyword rStatsStatement oneway.test optim p.adjust pairwise.t.test pairwise.wilcox.test pairwise.prop.test
+ syn keyword rStatsStatement pairwise.table print.pairwise.htest plot.lm power.t.test power.prop.test
+ syn keyword rStatsStatement print.power.htest power.anova.test ppoints ppr ppr.formula ppr.default print.ppr
+ syn keyword rStatsStatement summary.ppr print.summary.ppr plot.ppr predict.ppr prcomp prcomp.default
+ syn keyword rStatsStatement prcomp.formula plot.prcomp print.prcomp summary.prcomp print.summary.prcomp
+ syn keyword rStatsStatement predict.prcomp predict predict.default predict.glm predict.princomp summary.princomp
+ syn keyword rStatsStatement print.summary.princomp plot.princomp screeplot loadings princomp princomp.formula
+ syn keyword rStatsStatement princomp.default print.princomp profile proj proj.default proj.lm proj.aov
+ syn keyword rStatsStatement proj.aovlist terms.aovlist prop.test prop.trend.test qqnorm qqnorm.default qqline
+ syn keyword rStatsStatement qqplot quade.test quade.test.default quade.test.formula quantile quantile.default IQR
+ syn keyword rStatsStatement relevel relevel.default relevel.ordered relevel.factor reorder.factor reshape runmed
+ syn keyword rStatsStatement smoothEnds sd selfStart selfStart.default selfStart.formula getInitial
+ syn keyword rStatsStatement getInitial.formula getInitial.selfStart getInitial.default sortedXyData
+ syn keyword rStatsStatement sortedXyData.default NLSstClosestX NLSstClosestX.sortedXyData NLSstRtAsymptote
+ syn keyword rStatsStatement NLSstRtAsymptote.sortedXyData NLSstLfAsymptote NLSstLfAsymptote.sortedXyData
+ syn keyword rStatsStatement NLSstAsymptotic NLSstAsymptotic.sortedXyData shapiro.test smooth print.tukeysmooth
+ syn keyword rStatsStatement summary.tukeysmooth smooth.spline print.smooth.spline predict.smooth.spline
+ syn keyword rStatsStatement predict.smooth.spline.fit supsmu spectrum spec.taper spec.ar spec.pgram plot.spec
+ syn keyword rStatsStatement plot.spec.coherency plot.spec.phase spline splinefun stepfun is.stepfun as.stepfun
+ syn keyword rStatsStatement as.stepfun.default knots knots.stepfun print.stepfun summary.stepfun plot.stepfun
+ syn keyword rStatsStatement lines.stepfun as.stepfun.isoreg stl print.stl summary.stl plot.stl symnum t.test
+ syn keyword rStatsStatement t.test.default t.test.formula termplot Box.test PP.test start end frequency time
+ syn keyword rStatsStatement window cycle deltat ts tsp hasTsp is.ts as.ts as.ts.default .cbind.ts .makeNamesTs
+ syn keyword rStatsStatement Ops.ts cbind.ts ts.union ts.intersect diff.ts na.omit.ts is.mts start.default
+ syn keyword rStatsStatement end.default frequency.default deltat.default time.default time.ts cycle.default
+ syn keyword rStatsStatement cycle.ts print.ts plot.ts lines.ts window.default window.ts t.ts ts.plot arima.sim
+ syn keyword rStatsStatement line update.default update.formula var.test var.test.default var.test.formula vcov
+ syn keyword rStatsStatement vcov.glm vcov.lm vcov.mlm vcov.gls vcov.lme weighted.mean wilcox.test
+ syn keyword rStatsStatement wilcox.test.default wilcox.test.formula xtabs print.xtabs SSasymp SSgompertz
+ syn keyword rStatsStatement SSweibull .onLoad .onUnload
+endif
+
+" tools functions
+if exists("r_package_tools") && r_package_tools != 0
+ syn keyword rToolsStatement undoc print.undoc codoc print.codoc codocClasses print.codocClasses codocData
+ syn keyword rToolsStatement print.codocData checkDocFiles print.checkDocFiles checkDocStyle print.checkDocStyle
+ syn keyword rToolsStatement checkFF print.checkFF checkReplaceFuns print.checkReplaceFuns checkTnF print.checkTnF
+ syn keyword rToolsStatement as.alist.call as.alist.symbol Rdinfo Rdcontents Rdindex checkVignettes
+ syn keyword rToolsStatement print.checkVignettes pkgVignettes buildVignettes vignetteMetaRE vignetteInfo
+ syn keyword rToolsStatement .writeVignetteHtmlIndex vignetteDepends getVigDepMtrx makeLazyLoadDB makeLazyLoading
+ syn keyword rToolsStatement package.dependencies pkgDepends getDepList isSatisfied buildDepList getDepMtrx
+ syn keyword rToolsStatement getRemotePkgDepends installedDepends foundDepends compareDependsPkgVersion
+ syn keyword rToolsStatement reduceDepends depMtrxToStrings installFoundDepends filePathAsAbsolute filePathSansExt
+ syn keyword rToolsStatement fileTest listFilesWithExts listFilesWithType delimMatch .OStype xgettext
+ syn keyword rToolsStatement print.xgettext print.xngettext xngettext .onUnload
+endif
+
+" methods functions
+if exists("r_package_methods") && r_package_methods != 0
+ syn keyword rMethodsStatement .InitBasicClassMethods .BasicFunsList .addBasicGeneric genericForPrimitive
+ syn keyword rMethodsStatement setGenericForPrimitive .findBasicFuns .InitExtensions .simpleExtCoerce
+ syn keyword rMethodsStatement .simpleIsCoerce .simpleExtTest .simpleExtReplace .InhSlotNames .dataPartReplace
+ syn keyword rMethodsStatement .ErrorReplace .objectSlotNames makeExtends .findAll .InitClassUnion setClassUnion
+ syn keyword rMethodsStatement isClassUnion setGeneric isGeneric removeGeneric getMethods getMethodsForDispatch
+ syn keyword rMethodsStatement .setIfBase .getMethodsForDispatch .setMethodsForDispatch cacheMethod setMethod
+ syn keyword rMethodsStatement removeMethod findMethod getMethod dumpMethod selectMethod hasMethod existsMethod
+ syn keyword rMethodsStatement dumpMethods signature showMethods removeMethodsObject removeMethods resetGeneric
+ syn keyword rMethodsStatement setReplaceMethod setGroupGeneric isGroup callGeneric initMethodDispatch
+ syn keyword rMethodsStatement isSealedMethod .lockedForMethods MethodsList makeMethodsList SignatureMethod
+ syn keyword rMethodsStatement insertMethod MethodsListSelect emptyMethodsList insertMethodInEmptyList
+ syn keyword rMethodsStatement finalDefaultMethod inheritedSubMethodLists matchSignature showMlist promptMethods
+ syn keyword rMethodsStatement linearizeMlist print.MethodsList listFromMlist .insertCachedMethods .addMethodFrom
+ syn keyword rMethodsStatement asMethodDefinition .InitMethodsListClass .InitMethodDefinitions .MakeSignature
+ syn keyword rMethodsStatement .findNextMethod .hasCallNextMethod callNextMethod loadMethod .doSubNextCall
+ syn keyword rMethodsStatement testVirtual makePrototypeFromClassDef newEmptyObject completeClassDefinition
+ syn keyword rMethodsStatement .completeClassSlots .uncompleteClassDefinition .isIndirectExtension .mergeSlots
+ syn keyword rMethodsStatement getAllSuperClasses superClassDepth isVirtualClass assignClassDef .InitClassDefinition
+ syn keyword rMethodsStatement .initClassSupport newBasic defaultPrototype reconcilePropertiesAndPrototype tryNew
+ syn keyword rMethodsStatement empty.dump isClassDef showClass showExtends print.classRepresentation possibleExtends
+ syn keyword rMethodsStatement .possibleExtends completeExtends completeSubclasses .walkClassGraph classMetaName
+ syn keyword rMethodsStatement methodsPackageMetaName requireMethods .missingMethod getSlots validSlotNames
+ syn keyword rMethodsStatement getDataPart setDataPart .validDataPartClass .mergeAttrs .newExternalptr
+ syn keyword rMethodsStatement .transitiveExtends .transitiveSubclasses .combineExtends .simpleCoerceExpr
+ syn keyword rMethodsStatement .simpleReplaceExpr newClassRepresentation .tempClassDef .newClassRepresentation
+ syn keyword rMethodsStatement .insertExpr substituteFunctionArgs .makeValidityMethod .mergeClassDefSlots
+ syn keyword rMethodsStatement ..mergeClassDefSlots .gblEnv ..isPrototype .isPrototype .className .requirePackage
+ syn keyword rMethodsStatement ..requirePackage .classDefEnv .asEnvironmentPackage .classEnv ..classEnv .genEnv
+ syn keyword rMethodsStatement .makeGeneric makeGeneric makeStandardGeneric generic.skeleton defaultDumpName
+ syn keyword rMethodsStatement getAllMethods mergeMethods doPrimitiveMethod conformMethod rematchDefinition
+ syn keyword rMethodsStatement unRematchDefinition getGeneric .getGeneric getGroup getMethodsMetaData
+ syn keyword rMethodsStatement assignMethodsMetaData mlistMetaName getGenerics .getGenerics cacheMetaData
+ syn keyword rMethodsStatement cacheGenericsMetaData setPrimitiveMethods findUnique MethodAddCoerce missingArg
+ syn keyword rMethodsStatement balanceMethodsList sigToEnv .methodSignatureMatrix .valueClassTest
+ syn keyword rMethodsStatement .getOrMakeMethodsList .makeCallString .ValidateValueClass .asGroupArgument
+ syn keyword rMethodsStatement metaNameUndo .recursiveCallTest .NonstandardGenericTest .GenericInPrimitiveMethods
+ syn keyword rMethodsStatement .signatureString .ChangeFormals .envSearch .genericName .genericEnv
+ syn keyword rMethodsStatement .externalCallerEnv .parentEnvList .genericAssign .derivedDefaultMethod .identC
+ syn keyword rMethodsStatement .matchBasic matchDefaults getGroupMembers deletePrimMethods setClass representation
+ syn keyword rMethodsStatement prototype .prototype makeClassRepresentation getClassDef getClass slot
+ syn keyword rMethodsStatement checkSlotAssignment slotNames .slotNames removeClass isClass new getClasses
+ syn keyword rMethodsStatement validObject setValidity resetClass initialize findClass isSealedClass sealClass
+ syn keyword rMethodsStatement sessionData traceOn traceOff browseAll functionBody .ff allNames getFunction el
+ syn keyword rMethodsStatement elNamed formalArgs findFunction existsFunction Quote .message hasArg as
+ syn keyword rMethodsStatement .quickCoerceSelect .asFromReplace setAs .setCoerceGeneric .basicCoerceMethod
+ syn keyword rMethodsStatement .makeAsMethod .removePreviousCoerce is extends setIs .validExtends languageEl
+ syn keyword rMethodsStatement isGrammarSymbol .makeBasicFuns .InitSubsetMethods setOldClass .oldTestFun
+ syn keyword rMethodsStatement .oldCoerceFun .oldReplaceFun .setOldIs getPackageName setPackageName packageSlot
+ syn keyword rMethodsStatement .makeCallString showDefault show .InitShowMethods classLabel substituteDirect
+ syn keyword rMethodsStatement .TraceWithMethods .makeTracedFunction .untracedFunction .InitTraceFunctions
+ syn keyword rMethodsStatement .doTracePrint .traceClassName trySilent .assignOverBinding .setMethodOverBinding
+ syn keyword rMethodsStatement .searchNamespaceNames .findFunEnvAndName ..First.lib .onLoad .onUnload .onAttach
+ syn keyword rMethodsStatement .Last.lib .Last.lib
+endif
+
+" utils functions
+if exists("r_package_utils") && r_package_utils != 0
+ syn keyword rUtilsStatement RSiteSearch Rprof Sweave SweaveReadFile SweaveGetSyntax SweaveSyntConv
+ syn keyword rUtilsStatement SweaveParseOptions SweaveHooks RweaveLatex RweaveLatexSetup RweaveLatexRuncode
+ syn keyword rUtilsStatement RweaveLatexWritedoc RweaveLatexFinish RweaveLatexOptions RweaveChunkPrefix
+ syn keyword rUtilsStatement RweaveEvalWithOpt RweaveTryStop Stangle Rtangle RtangleSetup RtangleRuncode
+ syn keyword rUtilsStatement RtangleWritedoc RtangleFinish alarm apropos find citEntry citHeader citFooter
+ syn keyword rUtilsStatement readCitationFile print.citation print.citationList person as.person as.person.default
+ syn keyword rUtilsStatement personList as.personList as.personList.person as.personList.default
+ syn keyword rUtilsStatement as.character.person as.character.personList toBibtex.person toBibtex.personList
+ syn keyword rUtilsStatement toBibtex.citation toBibtex.citationList citation data browseEnv wsbrowser de.ncols
+ syn keyword rUtilsStatement de.setup de.restore de data.entry dump.frames debugger limitedLabels recover demo
+ syn keyword rUtilsStatement dataentry edit edit.default edit.data.frame edit.matrix file.edit vi emacs xemacs
+ syn keyword rUtilsStatement xedit pico example head head.default head.data.frame head.function tail tail.default
+ syn keyword rUtilsStatement tail.data.frame tail.matrix tail.function help help.search print.hsearch
+ syn keyword rUtilsStatement printhsearchInternal loadhistory savehistory history iconv iconvlist localeToCharset
+ syn keyword rUtilsStatement packageDescription print.packageDescription index.search print.packageIQR menu
+ syn keyword rUtilsStatement getCRANmirrors checkCRAN object.size findGeneric methods print.MethodsFunction
+ syn keyword rUtilsStatement getFromNamespace assignInNamespace fixInNamespace getAnywhere print.getAnywhere
+ syn keyword rUtilsStatement package.skeleton packageStatus summary.packageStatus print.packageStatus
+ syn keyword rUtilsStatement update.packageStatus upgrade upgrade.packageStatus available.packages CRAN.packages
+ syn keyword rUtilsStatement simplifyRepos update.packages old.packages new.packages installed.packages
+ syn keyword rUtilsStatement remove.packages download.packages contrib.url chooseCRANmirror setRepositories
+ syn keyword rUtilsStatement normalizePath compareVersion install.packages page prompt prompt.default
+ syn keyword rUtilsStatement prompt.data.frame promptData topicName .helpForCall .tryHelp read.fortran read.fwf
+ syn keyword rUtilsStatement url.show sessionInfo print.sessionInfo toLatex.sessionInfo print.socket make.socket
+ syn keyword rUtilsStatement close.socket read.socket write.socket str str.data.frame str.default ls.str lsf.str
+ syn keyword rUtilsStatement summaryRprof toBibtex print.Bibtex toLatex print.Latex bug.report download.file nsl
+ syn keyword rUtilsStatement help.start browseURL make.packages.html link.html.help package.contents vignette
+ syn keyword rUtilsStatement print.vignette edit.vignette select.list flush.console
+endif
+
+" Special
+syn match rDelimiter /[,;:]/
+
+" Error
+syn region rParenRegion matchgroup=rParenDelimiter start=/(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
+syn region rCurlyRegion matchgroup=rCurlyDelimiter start=/{/ end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold
+syn region rBraceRegion matchgroup=rBraceDelimiter start=/\[/ end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
+syn match rError /[)\]}]/
+syn match rBraceError /[)}]/ contained
+syn match rCurlyError /[)\]]/ contained
+syn match rParenError /[\]}]/ contained
+
+" 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_r_syn_inits")
+ if version < 508
+ let did_r_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+ HiLink rComment Comment
+ HiLink rConstant Constant
+ HiLink rString String
+ HiLink rNumber Number
+ HiLink rBoolean Boolean
+ HiLink rFloat Float
+ HiLink rStatement Statement
+ HiLink rBaseStatement Statement
+ HiLink rStatsStatement Statement
+ HiLink rGraphicsStatement Statement
+ HiLink rToolsStatement Statement
+ HiLink rMethodsStatement Statement
+ HiLink rUtilsStatement Statement
+ HiLink rPrimitiveStatement Statement
+ HiLink rConditional Conditional
+ HiLink rRepeat Repeat
+ HiLink rIdentifier Identifier
+ HiLink rFunction Function
+ HiLink rArrow Statement
+ HiLink rType Type
+ HiLink rDelimiter Delimiter
+ HiLink rStringDelimiter Delimiter
+ HiLink rParenDelimiter Delimiter
+ HiLink rCurlyDelimiter Delimiter
+ HiLink rBraceDelimiter Delimiter
+ HiLink rError Error
+ HiLink rParenError Error
+ HiLink rCurlyError Error
+ HiLink rBraceError Error
+ delcommand HiLink
+endif
+
+let b:current_syntax="r"
+" vim: ts=8 sw=2
diff --git a/.vim/syntax/tex.vim b/.vim/syntax/tex.vim
new file mode 100644
index 0000000..675a390
--- /dev/null
+++ b/.vim/syntax/tex.vim
@@ -0,0 +1 @@
+set textwidth=80
diff --git a/.vimrc b/.vimrc
new file mode 100644
index 0000000..26dbcc9
--- /dev/null
+++ b/.vimrc
@@ -0,0 +1,97 @@
+" p
+" Line numbering
+"set number
+" Set syntax highlighting
+syntax on
+colorscheme brookstream
+" Tabbing
+set et
+set shiftwidth=4
+set smarttab
+set autoindent
+" We want a mouse in consoles, so:"
+set mouse=a
+filetype plugin on
+filetype indent on
+set textwidth=80
+set bg=dark
+set modeline
+set modelines=1
+command -nargs=1 Hugged :/<args>/s/\(.*\) ;\(.*\)\(||\)/\1 lightgreen;\2 RyanKavanagh ||/c
+""" Don't connect to X clipboard, slow
+""" set clipboard=exclude:.*
+" For :sp, switching and minimum height
+" map <C-H> <C-W>j<C-W>_
+" map <C-L> <C-W>k<C-W>_
+" set wmh=0
+" REQUIRED. This makes vim invoke Latex-Suite when you open a tex file.
+filetype plugin on
+" IMPORTANT: grep will sometimes skip displaying the file name if you
+" search in a singe file. This will confuse Latex-Suite. Set your grep
+" program to alway generate a file-name.
+set grepprg=grep\ -nH\ $*
+
+" Haskell crud
+au BufEnter *.hs compiler ghc
+let g:haddock_browser = "/usr/bin/w3m"
+let g:ghc_version = 6.8.2
+let g:ghc = "/usr/bin/ghc"
+
+" Transparent editing of gpg encrypted files.
+" By Wouter Hanegraaff <wouter@blub.net>
+augroup encrypted
+au!
+" First make sure nothing is written to ~/.viminfo while editing
+" an encrypted file.
+autocmd BufReadPre,FileReadPre *.gpg set viminfo=
+" We don't want a swap file, as it writes unencrypted data to disk
+autocmd BufReadPre,FileReadPre *.gpg set noswapfile
+" Switch to binary mode to read the encrypted file
+autocmd BufReadPre,FileReadPre *.gpg set bin
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPre,FileReadPre *.gpg let shsave=&sh
+autocmd BufReadPre,FileReadPre *.gpg let &sh='sh'
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt --default-recipient-self 2> /dev/null
+autocmd BufReadPost,FileReadPost *.gpg let &sh=shsave
+" Switch to normal mode for editing
+autocmd BufReadPost,FileReadPost *.gpg set nobin
+autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save
+autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
+" Convert all text to encrypted text before writing
+autocmd BufWritePre,FileWritePre *.gpg set bin
+autocmd BufWritePre,FileWritePre *.gpg let shsave=&sh
+autocmd BufWritePre,FileWritePre *.gpg let &sh='sh'
+autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --encrypt --default-recipient-self 2>/dev/null
+autocmd BufWritePre,FileWritePre *.gpg let &sh=shsave
+" Undo the encryption so we are back in the normal text, directly
+" after the file has been written.
+autocmd BufWritePost,FileWritePost *.gpg silent u
+autocmd BufWritePost,FileWritePost *.gpg set nobin
+augroup END
+
+" Support my daylog
+au BufNewFile,BufRead daylog,daylog.dch setf debchangelog
+au BufNewFile,BufRead *.tikz setf tex
+
+map! i_<help> <Esc>
+map! <Help> <Esc>
+map! i_<F1> <Esc>
+map! <F1> <Esc>
+
+" minibufexpl.vim
+"map \mbe :MiniBufExplorer<cr>
+"map \mbc :CMiniBufExplorer<cr>
+"map \mbu :UMiniBufExplorer<cr>
+"map \mbt :TMiniBufExplorer<cr>
+
+"let g:miniBufExplMapWindowNavVim = 1
+let g:miniBufExplMapWindowNavArrows = 1
+let g:miniBufExplMapCTabSwitchBufs = 1
+
+let g:Tex_CompileRule_dvi = 'latex-mk $*'
+let g:Tex_CompileRule_pdf = 'latex-mk --pdflatex $*'
+let g:Tex_DefaultTargetFormat = 'pdf'
+let g:Tex_ItemStyle_inparaenum = '\item'
+
+au BufEnter ~/.mutt/tmp/mutt-* set textwidth=72
diff --git a/.xinitrc b/.xinitrc
new file mode 100755
index 0000000..bdd51ca
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,20 @@
+#!/bin/sh
+redshift -l 44.22:-76.48 -t 6500:2500 &
+setxkbmap -layout us -variant icd -option -option lv3:ralt_switch_multikey \
+ -option ctrl:nocaps
+# xcompmgr &
+urxvt &
+trayer --tint black --edge top --SetDockType true --SetPartialStrut true \
+ --expand true --width 10 --transparent true --height 18 --align right &
+xautolock -time 2 &
+/home/ryan/.dzen/battery.sh &
+/home/ryan/.dzen/temperature.sh &
+gnome-settings-daemon &
+#kmix &
+# feh --bg-center /home/ryan/.local/share/wallpapers/skyscraper_at_sunset.bmp
+# feh --bg-center /home/ryan/.local/share/wallpapers/totheglory.jpg
+urxvtd -q -f -o &
+# /home/ryan/.screenlayout/work.sh
+/home/ryan/.screenlayout/SCREENLAYOUT.sh
+nitrogen --restore
+exec /usr/local/bin/xmonad
diff --git a/.xmobarrc b/.xmobarrc
new file mode 100644
index 0000000..b537cc8
--- /dev/null
+++ b/.xmobarrc
@@ -0,0 +1,19 @@
+Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
+ , bgColor = "black"
+ , fgColor = "grey"
+ , position = Top
+ , lowerOnStart = True
+ , commands = [ Run Weather "CYGK" ["-t","<station>: <tempC>C, pressure: <pressure>hPa","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
+ , Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
+ , Run Network "wlan0" ["-L","0","-H","32","--normal","green","--high","red"] 10
+ , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
+ , Run Memory ["-t","Mem: <usedratio>%"] 10
+ , Run Swap [] 10
+ , Run Com "uname" ["-s","-r"] "" 36000
+ , Run Thermal "THRM" ["-t","<temp>C","-L","40","-H","60","--high","red","--low","lightblue"] 5
+ , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
+ ]
+ , sepChar = "%"
+ , alignSep = "}{"
+ , template = "%cpu% @ %THRM% | %memory% * %swap% | %eth0% - %wlan0% }{ <fc=#ee9a00>%date%</fc>| %CYGK% | %uname%"
+ }
diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs
new file mode 100644
index 0000000..861640f
--- /dev/null
+++ b/.xmonad/xmonad.hs
@@ -0,0 +1,449 @@
+{-# OPTIONS_GHC -W -fwarn-unused-imports -fno-warn-missing-signatures #-}
+import XMonad
+-- import XMonad.Config.Kde
+import XMonad.Actions.CycleWS
+import XMonad.Actions.GridSelect
+import XMonad.Actions.PerWorkspaceKeys
+import XMonad.Actions.RotSlaves
+import XMonad.Actions.UpdatePointer
+import XMonad.Config.Desktop
+-- import XMonad.Config.Kde
+import XMonad.Hooks.DynamicLog hiding (xmobar, xmobarPP, xmobarColor, sjanssenPP, byorgeyPP)
+import XMonad.Hooks.EwmhDesktops
+import XMonad.Hooks.ManageDocks (avoidStruts)
+import XMonad.Hooks.ManageHelpers
+import XMonad.Hooks.UrgencyHook
+import XMonad.Layout.Accordion
+import XMonad.Layout.Combo
+import XMonad.Layout.Cross
+import XMonad.Layout.Dishes
+import XMonad.Layout.FixedColumn
+import XMonad.Layout.Grid
+import XMonad.Layout.IM
+import XMonad.Layout.LimitWindows
+import XMonad.Layout.Magnifier
+import XMonad.Layout.NoBorders
+import XMonad.Layout.NoFrillsDecoration
+import XMonad.Layout.PerWorkspace
+import XMonad.Layout.PerWorkspace
+import XMonad.Layout.Reflect
+import XMonad.Layout.ResizableTile
+import XMonad.Layout.SimpleDecoration
+import XMonad.Layout.Tabbed
+import XMonad.Layout.ThreeColumns
+import XMonad.Layout.ToggleLayouts
+import XMonad.Layout.TwoPane
+import XMonad.Layout.WindowNavigation
+import XMonad.Prompt
+import XMonad.Prompt.Shell
+import XMonad.Util.EZConfig (additionalKeys)
+import XMonad.Util.Loggers
+import XMonad.Util.Run -- for spawnPipe
+import XMonad.Util.Themes
+import qualified XMonad.Actions.FlexibleResize as Flex
+import qualified XMonad.StackSet as W
+import qualified Data.Map as M
+import Control.Monad
+import Data.Ratio ((%))
+import Data.Maybe
+import Data.List
+import IO (hPutStrLn)
+
+myMod = mod4Mask -- windows key
+myCtrl = controlMask
+myTerminal = "urxvtc"
+
+-- My workspaces
+
+myWorkspaces = ["term", "web", "chatter", "code", "K/D", "music", "plasma", "LaTeX", "web-nb"]
+
+-- Mouse bindings: default actions bound to mouse events
+myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
+
+ -- mod-button1 %! Set the window to floating mode and move by dragging
+ [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w
+ >> windows W.shiftMaster))
+ -- mod-button2 %! Raise the window to the top of the stack
+ , ((modMask, button2), (\w -> focus w >> windows W.shiftMaster))
+ -- mod-button3 %! Set the window to floating mode and resize by dragging
+ , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w
+ >> windows W.shiftMaster))
+ -- you may also bind events to the mouse scroll wheel (button4 and button5)
+ , ((modMask, button5), (\_ -> moveTo Next NonEmptyWS))
+ , ((modMask, button4), (\_ -> moveTo Prev NonEmptyWS ))
+
+ , ((modMask .|. shiftMask, button5), (\w -> focus w >> kill ))
+ ]
+
+-- Theme {{{
+-- Color names are easier to remember:
+colorOrange = "#ff7701"
+colorDarkGray = "#171717"
+colorPink = "#e3008d"
+colorGreen = "#00aa4a"
+colorBlue = "#008dd5"
+colorYellow = "#fee100"
+colorWhite = "#cfbfad"
+colorBrightGreen = "#00FF00"
+
+colorNormalBorder = "#1c2636"
+colorFocusedBorder = "#2797d8"
+barFont = "terminus"
+barXFont = "terminus"
+xftFont = "xft: inconsolata-14"
+--}}}
+statusBarCmd = "dzen2" ++
+ " -bg '" ++ colorDarkGray ++ "'" ++
+ " -fg '" ++ colorBlue ++ "'" ++
+ " -sa c" ++
+ --" -fn '" ++ barXFont ++ "'" ++
+ " -w XMONAD_DZEN_W -x XMONAD_DZEN_X -y XMONAD_DZEN_Y -ta l -e ''"
+
+
+-- Color theme for the window decorations
+myTheme = defaultTheme {
+ activeColor = blue
+ , inactiveColor = grey
+ , activeBorderColor = blue
+ , inactiveBorderColor = grey
+ , activeTextColor = "white"
+ , inactiveTextColor = "black"
+ , decoHeight = 12
+ }
+ where
+ blue = "#4a708b" -- same color used by gnome pager
+ grey = "#cccccc"
+
+myXPConfig = defaultXPConfig {
+ fgColor = "white"
+ , bgColor = "black"
+ , promptBorderWidth = 0
+ , position = Bottom
+ , height = 25
+ }
+
+
+myLayout = smartBorders $ toggleLayouts Full perWS
+ where
+ -- Per workspace layout selection.
+ perWS = onWorkspace "web" (noTitles $ (simpleTabbed ||| mySplit ||| myWide)) $
+ onWorkspace "term" (noTitles $ (Full ||| myTall2 ||| customRyan)) $
+ onWorkspace "chatter" (noTitles $ myChat gridFirst) $
+ onWorkspace "code" (noTitles $ codeFirst) $
+ onWorkspace "LaTeX" (noTitles $ latexFirst) $
+ (noTitles $ customRyan)
+
+ -- Modifies a layout to be desktop friendly with title bars
+ -- and avoid the panel.
+ withTitles l = noFrillsDeco shrinkText myTheme (desktopLayoutModifiers l)
+ -- Modifies a layout to be desktop friendly, but with no title bars
+ -- and avoid the panel.
+ noTitles l = desktopLayoutModifiers l
+
+ -- Each of these allows toggling through a set of layouts
+ -- in the same logical order, but from a different starting point.
+ codeFirst = myCode ||| myWide ||| myGrid ||| myDish
+ gridFirst = myGrid ||| myDish ||| myCode ||| myWide
+ customRyan = myGrid ||| myDish ||| Accordion ||| myCode ||| myWide ||| simpleCross ||| myFixed ||| myTall
+ latexFirst = myLaTeX ||| myFixed ||| myGrid ||| myTall
+
+ -- This is a tall-like layout with magnification.
+ -- The master window is fixed at 80 columns wide, making this good
+ -- for coding. Limited to 3 visible windows at a time to ensure all
+ -- are a good size.
+ myCode = limitWindows 3 $ magnifiercz' 1.4 $ FixedColumn 1 20 80 10
+
+ -- Stack with one large master window.
+ -- It's easy to overflow a stack to the point that windows are too
+ -- small, so only show first 5.
+ myDish = limitWindows 5 $ Dishes nmaster ratio
+ where
+ -- The default number of windows in the master pane
+ nmaster = 1
+ -- Default proportion of screen occupied by other panes
+ ratio = 1/5
+
+ -- Wide layout with subwindows at the bottom.
+ myWide = Mirror $ Tall nmaster delta ratio
+ where
+ -- The default number of windows in the master pane
+ nmaster = 1
+ -- Percent of screen to increment by when resizing panes
+ delta = 3/100
+ -- Default proportion of screen occupied by master pane
+ ratio = 80/100
+
+ -- Split screen, optimized for web browsing.
+ mySplit = magnifiercz' 1.4 $ Tall nmaster delta ratio
+ where
+ -- The default number of windows in the master pane
+ nmaster = 1
+ -- Percent of screen to increment by when resizing panes
+ delta = 3/100
+ -- Default proportion of screen occupied by master pane
+ ratio = 60/100
+
+ -- Standard grid.
+ myGrid = Grid
+
+ myFixed = FixedColumn 1 20 80 10
+
+ -- The chat workspace has a roster on the right.
+ myChat base = reflectHoriz $ withIM (1%5) ((And (ClassName "Pidgin") (Role "buddy_list")) `Or` (And (Title "Kopete") (Role "MainWindow#1"))) base
+ where
+ role = stringProperty "WM_WINDOW_ROLE"
+ command = stringProperty "WM_COMMAND"
+
+ -- LaTeX layout with a XPDF, vim window and small console to run pdflatex
+ -- From
+ -- http://www.haskell.org/haskellwiki/Xmonad/Config_archive/iderrick_xmonad.hs
+ myLaTeX = windowNavigation (
+ combineTwo
+ (TwoPane delta 0.45)
+ (Full)
+ (combineTwo
+ (Mirror (TwoPane delta 0.85))
+ (Full)
+ (Full)
+ )
+ )
+ where
+ -- Percent of the screen to increment by when resizing panes
+ delta = 3/100
+
+ myTall = ResizableTall nmaster delta ratio [50/100]
+ where
+ nmaster = 1
+ delta = 3/100
+ ratio = 55/100
+
+ myTall2 = ResizableTall nmaster delta ratio [50/100]
+ where
+ nmaster = 1
+ delta = 3/100
+ ratio = 1/2
+
+
+-- Pretty printer {{{
+-- dynamiclog pretty printer for dzen
+mPP h = defaultPP
+ { ppCurrent = wrap ("^fg(" ++ colorOrange ++ ")^bg(" ++ colorDarkGray ++ ")^p(2)") "^p(2)^fg()^bg()"
+ , ppVisible = wrap ("^fg(" ++ colorBlue ++ ")^bg(" ++ colorDarkGray ++ ")^p(2)") "^p(2)^fg()^bg()"
+ , ppSep = " ^fg(grey60)^r(1x8)^fg() "
+ , ppLayout = dzenColor colorWhite "" . (\x -> case x of
+ "myCode" -> pad "^i(/home/ryan/.dzen/icons/layout-threecol.xbm)"
+ "myDish" -> pad "^i(/home/ryan/.dzen/icons/layout-im-gimp.xbm)"
+ "myWide" -> pad "^i(/home/ryan/.dzen/icons/layout-mirror-black.xbm)"
+ "mySplit" -> pad "^i(/home/ryan/.dzen/icons/layout-tall-black.xbm)"
+ "myGrid" -> pad "^i(/home/ryan/.dzen/icons/layout-gimp.xbm)"
+ "myChat" -> pad "^i(/home/ryan/.dzen/icons/layout-im.xbm)"
+ "myLaTeX" -> pad "^i(/home/ryan/.dzen/icons/layoput-gimp.xbm)"
+ _ -> pad $ shorten 10 x
+ )
+ , ppUrgent = dzenColor colorDarkGray colorYellow . wrap "[" "]"
+ , ppTitle = dzenColor colorWhite "" . trim
+ , ppExtras = [dzenColorL colorYellow "". wrapL mailIcon "" . padL $ gmailCheck, dzenColorL colorBrightGreen "" . wrapL mailIcon "" . padL $ queensuCheck]
+ , ppOutput = hPutStrLn h
+ }
+ where
+ -- logMail = dzenColorL colorPink "" . wrapL mailIcon "". padL $ maildirNew mailDir
+ mailCheck = mailIcon -- <$> gmailCheck <$> queensuCheck
+ mailIcon = "^i(/home/ryan/.dzen/icons/mail.xbm)"
+ --gmailCheck = padL $ (dzenColorL colorRed "" . logCmd "cat /home/ryan/.xmonad/gmailcheck")
+ --queensuCheck = padL $ (dzenColorL colorYellow "" . logCmd "cat /home/ryan/.xmonad/queensucheck")
+ gmailCheck = logCmd "cat /home/ryan/.xmonad/gmailcheck"
+ queensuCheck = logCmd "cat /home/ryan/.xmonad/queensucheck"
+
+--}}}
+
+-- Commented out because it exposes a bug in xmonad-contrib:
+--myLogHook = ewmhDesktopsLogHookCustom $ filter $ \w -> W.tag w /= "SP"
+
+
+dk :: KeySym -> KeySym
+dk k | k == xK_grave = xK_dollar
+ | k == xK_asciitilde = xK_asciitilde
+
+ | k == xK_1 = xK_ampersand
+ | k == xK_exclam = xK_percent
+
+ | k == xK_2 = xK_bracketleft
+ | k == xK_at = xK_7
+
+ | k == xK_3 = xK_braceleft
+ | k == xK_numbersign = xK_5
+
+ | k == xK_4 = xK_braceright
+ | k == xK_dollar = xK_3
+
+ | k == xK_5 = xK_parenleft
+ | k == xK_percent = xK_1
+
+ | k == xK_6 = xK_equal
+ | k == xK_asciicircum = xK_9
+
+ | k == xK_7 = xK_asterisk
+ | k == xK_ampersand = xK_0
+
+ | k == xK_8 = xK_parenright
+ | k == xK_asterisk = xK_2
+
+ | k == xK_9 = xK_plus
+ | k == xK_parenleft = xK_4
+
+ | k == xK_0 = xK_bracketright
+ | k == xK_parenright = xK_6
+
+ | k == xK_minus = xK_exclam
+ | k == xK_underscore = xK_8
+
+ | k == xK_equal = xK_numbersign
+ | k == xK_plus = xK_grave
+
+ | k == xK_q = xK_semicolon -- upper row, left side
+ | k == xK_Q = xK_colon
+
+ | k == xK_w = xK_comma
+ | k == xK_W = xK_less
+
+ | k == xK_e = xK_period
+ | k == xK_E = xK_greater
+
+ | k == xK_bracketleft = xK_slash -- upper row, top right
+ | k == xK_braceleft = xK_question
+
+ | k == xK_bracketright = xK_at
+ | k == xK_braceright = xK_asciicircum
+
+
+ | k == xK_R = xK_P
+ | k == xK_T = xK_Y
+ | k == xK_Y = xK_F
+ | k == xK_U = xK_G
+ | k == xK_I = xK_C
+ | k == xK_O = xK_R
+ | k == xK_P = xK_L
+ | k == xK_A = xK_A
+ | k == xK_S = xK_O
+ | k == xK_D = xK_E
+ | k == xK_F = xK_U
+ | k == xK_G = xK_I
+ | k == xK_H = xK_D
+ | k == xK_J = xK_H
+ | k == xK_K = xK_T
+ | k == xK_L = xK_N
+ | k == xK_Z = xK_quotedbl
+ | k == xK_X = xK_Q
+ | k == xK_C = xK_J
+ | k == xK_V = xK_K
+ | k == xK_B = xK_X
+ | k == xK_N = xK_B
+ | k == xK_M = xK_M
+
+ | k == xK_r = xK_p
+ | k == xK_t = xK_y
+ | k == xK_y = xK_f
+ | k == xK_u = xK_g
+ | k == xK_i = xK_c
+ | k == xK_o = xK_r
+ | k == xK_p = xK_l
+ | k == xK_a = xK_a
+ | k == xK_s = xK_o
+ | k == xK_d = xK_e
+ | k == xK_f = xK_u
+ | k == xK_g = xK_i
+ | k == xK_h = xK_d
+ | k == xK_j = xK_h
+ | k == xK_k = xK_t
+ | k == xK_l = xK_n
+ | k == xK_z = xK_apostrophe
+ | k == xK_x = xK_q
+ | k == xK_c = xK_j
+ | k == xK_v = xK_k
+ | k == xK_b = xK_x
+ | k == xK_n = xK_b
+ | k == xK_m = xK_m
+
+ | k == xK_comma = xK_w -- bottom right
+ | k == xK_less = xK_W
+
+ | k == xK_period = xK_v
+ | k == xK_greater = xK_V
+
+ | k == xK_slash = xK_z
+ | k == xK_question = xK_Z
+
+ | otherwise = k
+
+
+main = do
+ dzenpipe <- spawnPipe statusBarCmd
+ xmonad $ withUrgencyHookC dzenUrgencyHook { args = ["-bg", "red", "-fg", "yellow", "-x", "1"] } urgencyConfig { remindWhen = Every 30 } --NoUrgencyHook
+ $ defaultConfig { -- kde4Config {
+ workspaces = myWorkspaces
+ , modMask = myMod -- use the Windows button as mod
+ , terminal = myTerminal
+ , normalBorderColor = inactiveBorderColor myTheme
+ , focusedBorderColor = activeBorderColor myTheme
+ , borderWidth = 1
+ , layoutHook = myLayout
+ , manageHook = manageHook defaultConfig <+> myManageHook -- kde4Config <+> myManageHook
+ , mouseBindings = myMouseBindings
+ , keys = \x -> (M.fromList $ mykeys x) `M.union` dvorakify (keys defaultConfig x)
+ --, logHook = (dynamicLogWithPP $ mPP dzenpipe) >> updatePointer (Relative 0.95 0.95)
+ , logHook = dynamicLogWithPP $ mPP dzenpipe
+ -- , logHook = myLogHook
+ }
+ where
+ myManageHook = composeAll . concat $
+ [
+ --[ [ className =? c --> doFloat | c <- myFloats]
+ [ title =? t --> doFloat | t <- myOtherFloats]
+ , [ title =? c --> viewShift "term" | c <- term]
+ , [ className =? c --> viewShift "term" | c <- term2]
+ , [ className =? c --> viewShift "web" | c <- web]
+ , [ className =? c --> viewShift "chatter" | c <- chatter]
+ -- , [ className =? c --> doF (W.shift "plasma") | c <- plasmaD ]
+ , [ className =? c --> doIgnore | c <- panel ]
+ , [ isFullscreen --> doFullFloat ]
+ ]
+ viewShift = doF . liftM2 (.) W.greedyView W.shift
+ mykeys x = [
+ -- ((myMod, xK_x), spawn myTerminal)
+ -- , ((myMod, xK_c), kill)
+ ((myMod, xK_Left), prevWS)
+ , ((myMod, xK_Right), nextWS)
+ , ((myMod, xK_a), myToggle)
+ , ((myMod, xK_z), shellPrompt myXPConfig)
+ , ((myMod, xK_g), goToSelected defaultGSConfig)
+ , ((myMod, xK_F4), spawn "sleep 0.5 && xset dpms force suspend")
+ , ((myMod, xK_F5), spawn "sleep 0.5 && xset dpms force off")
+ , ((myMod, xK_l), spawn "xautolock -locknow")
+ , ((myMod .|. shiftMask, xK_l), spawn "xautolock -toggle")
+ , ((myMod .|. myCtrl .|. shiftMask, xK_Right), sendMessage $ Move R)
+ , ((myMod .|. myCtrl .|. shiftMask, xK_Left), sendMessage $ Move L)
+ , ((myMod .|. myCtrl .|. shiftMask, xK_Up), sendMessage $ Move U)
+ , ((myMod .|. myCtrl .|. shiftMask, xK_Down), sendMessage $ Move D)
+ , ((myMod, xK_BackSpace), focusUrgent)
+ -- , ((myMod, xK_Tab), bindOn [("chat", rotSlavesDown), ("", rotAllDown)])
+ -- , ((myMod .|. shiftMask, xK_Tab), bindOn [("chat", rotSlavesUp), ("", rotAllUp)])
+ , ((myMod, xK_s), sendMessage $ ToggleLayout)]
+ dvorakify kl = M.fromList $ map (\((m, k), d) -> ((m, dk k), d)) $ M.toList kl
+ myFloats = ["MPlayer", "Plasma-netbook", "Plasma-desktop", "plasma-netbook", "plasma-desktop"]
+ plasmaD = ["Plasma"]
+ myOtherFloats = ["alsamixer"]
+ term = ["ryan@localhost", "root@localhost", "ryan@lambda", "ryan@kappa", "ryan@sho", "Konsole"] -- open on desktop 1
+ term2 = ["Konsole"]
+ web = ["Firefox", "Iceweasel", "Opera", "Akregator", "Konqueror", "Chromium-browser"] -- open on desktop 2
+ chatter = ["Ksirc", "Krusader", "xchat", "Quassel", "Pidgin", "Kopete", "kopete"] -- open on desktop 3
+ games = ["Bzflag"]
+ panel = ["panel", "trayer"]
+
+-- Avoid the master window, but otherwise manage new windows normally.
+avoidMaster :: W.StackSet i l a s sd -> W.StackSet i l a s sd
+avoidMaster = W.modify' $ \c -> case c of
+ W.Stack t [] (r:rs) -> W.Stack t [r] rs
+ otherwise -> c
+
+-- A version of toggleWS that ignores the scratchPad workspaces.
+myToggle = windows $ W.view =<< W.tag . head . filter ((\x -> x /= "NSP" && x /= "SP") . W.tag) . W.hidden
diff --git a/.zsh/func/prompt_wunjo_setup b/.zsh/func/prompt_wunjo_setup
new file mode 100644
index 0000000..0e1ee96
--- /dev/null
+++ b/.zsh/func/prompt_wunjo_setup
@@ -0,0 +1,311 @@
+# wunjo prompt theme
+
+autoload -U zgitinit
+zgitinit
+autoload colors
+colors
+
+prompt_wunjo_help () {
+ cat <<'EOF'
+
+ prompt wunjo
+
+EOF
+}
+
+# We want our vim users to be able to see what mode their in.
+# From http://www.jukie.net/~bart/conf/zsh.d/S60_prompt
+
+coloratom() {
+ local off=$1 atom=$2
+ if [[ $atom[1] == [[:upper:]] ]]; then
+ off=$(( $off + 60 ))
+ fi
+ echo $(( $off + $colorcode[${(L)atom}] ))
+}
+colorword() {
+ local fg=$1 bg=$2 att=$3
+ local -a s
+
+ if [ -n "$fg" ]; then
+ s+=$(coloratom 30 $fg)
+ fi
+ if [ -n "$bg" ]; then
+ s+=$(coloratom 40 $bg)
+ fi
+ if [ -n "$att" ]; then
+ s+=$attcode[$att]
+ fi
+
+ echo "%{"$'\e['${(j:;:)s}m"%}"
+}
+
+prompt_wunjo_setup() {
+ local verbose
+ if [[ $TERM == screen* ]] && [ -n "$STY" ]; then
+ # verbose=
+ # Set to 1 by Ryan... no clue why you wouldn't want it.
+ verbose=1
+ else
+ verbose=1
+ fi
+
+ typeset -A colorcode
+ colorcode[black]=0
+ colorcode[red]=1
+ colorcode[green]=2
+ colorcode[yellow]=3
+ colorcode[blue]=4
+ colorcode[magenta]=5
+ colorcode[cyan]=6
+ colorcode[white]=7
+ colorcode[default]=9
+ colorcode[k]=$colorcode[black]
+ colorcode[r]=$colorcode[red]
+ colorcode[g]=$colorcode[green]
+ colorcode[y]=$colorcode[yellow]
+ colorcode[b]=$colorcode[blue]
+ colorcode[m]=$colorcode[magenta]
+ colorcode[c]=$colorcode[cyan]
+ colorcode[w]=$colorcode[white]
+ colorcode[.]=$colorcode[default]
+
+ typeset -A attcode
+ attcode[none]=00
+ attcode[bold]=01
+ attcode[faint]=02
+ attcode[standout]=03
+ attcode[underline]=04
+ attcode[blink]=05
+ attcode[reverse]=07
+ attcode[conceal]=08
+ attcode[normal]=22
+ attcode[no-standout]=23
+ attcode[no-underline]=24
+ attcode[no-blink]=25
+ attcode[no-reverse]=27
+ attcode[no-conceal]=28
+
+ local -A pc
+ pc[default]='default'
+ pc[date]='cyan'
+ pc[time]='Blue'
+ pc[host]='Magenta'
+ pc[user]='cyan'
+ pc[punc]='yellow'
+ pc[line]='magenta'
+ pc[hist]='green'
+ pc[path]='Cyan'
+ pc[shortpath]='default'
+ pc[rc]='red'
+ pc[scm_branch]='Cyan'
+ pc[scm_commitid]='Yellow'
+ pc[scm_status_dirty]='Red'
+ pc[scm_status_staged]='Green'
+ pc[#]='Yellow'
+ pc[insert]='green'
+ pc[command]='red'
+ for cn in ${(k)pc}; do
+ pc[${cn}]=$(colorword $pc[$cn])
+ done
+ pc[reset]=$(colorword . . 00)
+
+ typeset -Ag wunjo_prompt_colors
+ wunjo_prompt_colors=(${(kv)pc})
+
+ local p_date p_line p_rc
+
+ p_date="$pc[date]%D{%Y-%m-%d} $pc[time]%D{%T}$pc[reset]"
+
+ p_line="$pc[line]%y$pc[reset]"
+ function zle-line-init zle-keymap-select {
+ VIMODE="${${KEYMAP/vicmd/C}/(main|viins)/I}"
+ VICOLOR="${${KEYMAP/vicmd/$fg[green]}/(main|viins)/$fg[red]}"
+ zle reset-prompt
+ }
+
+ zle -N zle-line-init
+ zle -N zle-keymap-select
+
+
+ vi="${VICOLOR}${VIMODE}"
+
+ PROMPT=
+ if [ $verbose ]; then
+ PROMPT+="$pc[host]%m$pc[reset] "
+ fi
+ PROMPT+="$pc[path]%(2~.%~.%/)$pc[reset]"
+ PROMPT+="\$(prompt_wunjo_scm_status)"
+ PROMPT+="%(?.. $pc[rc]exited %1v$pc[reset])"
+ PROMPT+="
+"
+ PROMPT+="$pc[hist]%h$pc[reset] "
+ PROMPT+="$pc[shortpath]%1~$pc[reset]"
+ PROMPT+="\$(prompt_wunjo_scm_branch)"
+ PROMPT+=" $vi"
+ PROMPT+=" $pc[#]%#$pc[reset] "
+
+ RPROMPT=
+ if [ $verbose ]; then
+ RPROMPT+="$p_date "
+ fi
+ RPROMPT+="$pc[user]%n$pc[reset]"
+ RPROMPT+=" $p_line"
+
+ export PROMPT RPROMPT
+ precmd_functions+='prompt_wunjo_precmd'
+}
+
+prompt_wunjo_precmd() {
+ local ex=$?
+ psvar=()
+
+ if [[ $ex -ge 128 ]]; then
+ sig=$signals[$ex-127]
+ psvar[1]="sig${(L)sig}"
+ else
+ psvar[1]="$ex"
+ fi
+
+}
+
+prompt_wunjo_scm_status() {
+ zgit_isgit || return
+ local -A pc
+ pc=(${(kv)wunjo_prompt_colors})
+
+ head=$(zgit_head)
+ gitcommit=$(git describe --always $head 2>/dev/null)
+
+ local -a commits
+
+ if zgit_rebaseinfo; then
+ orig_commit=$(git describe --always $zgit_info[rb_head])
+ orig_name=$(git name-rev --name-only $zgit_info[rb_head])
+ orig="$pc[scm_branch]$orig_name$pc[punc]($pc[scm_commitid]$orig_commit$pc[punc])"
+ onto_commit=$(git describe --always $zgit_info[rb_onto])
+ onto_name=$(git name-rev --name-only $zgit_info[rb_onto])
+ onto="$pc[scm_branch]$onto_name$pc[punc]($pc[scm_commitid]$onto_commit$pc[punc])"
+
+ if [ -n "$zgit_info[rb_upstream]" ] && [ $zgit_info[rb_upstream] != $zgit_info[rb_onto] ]; then
+ upstream_commit=$(git describe --always $zgit_info[rb_upstream])
+ upstream_name=$(git name-rev --name-only $zgit_info[rb_upstream])
+ upstream="$pc[scm_branch]$upstream_name$pc[punc]($pc[scm_commitid]$upstream_commit$pc[punc])"
+ commits+="rebasing $upstream$pc[reset]..$orig$pc[reset] onto $onto$pc[reset]"
+ else
+ commits+="rebasing $onto$pc[reset]..$orig$pc[reset]"
+ fi
+
+ local -a revs
+ revs=($(git rev-list $zgit_info[rb_onto]..HEAD))
+ if [ $#revs -gt 0 ]; then
+ commits+="\n$#revs commits in"
+ fi
+
+ if [ -f $zgit_info[dotest]/message ]; then
+ mess=$(head -n1 $zgit_info[dotest]/message)
+ commits+="on $mess"
+ fi
+ elif [ -n "$gitcommit" ]; then
+ commits+="on $pc[scm_branch]$head$pc[punc]($pc[scm_commitid]$gitcommit$pc[punc])$pc[reset]"
+ local track_merge=$(zgit_tracking_merge)
+ if [ -n "$track_merge" ]; then
+ if git rev-parse --verify -q $track_merge >/dev/null; then
+ local track_remote=$(zgit_tracking_remote)
+ local tracked=$(git describe --always $track_merge 2>/dev/null)
+
+ local -a revs
+ revs=($(git rev-list --reverse $track_merge..HEAD))
+ if [ $#revs -gt 0 ]; then
+ local base=$(git describe --always $revs[1]~1)
+ local base_name=$(git name-rev --name-only $base)
+ local base_short=$(git describe --always $base)
+ local word_commits
+ if [ $#revs -gt 1 ]; then
+ word_commits='commits'
+ else
+ word_commits='commit'
+ fi
+
+ local conj="since"
+ if [[ "$base" == "$tracked" ]]; then
+ conj+=" tracked"
+ tracked=
+ fi
+ commits+="$#revs $word_commits $conj $pc[scm_branch]$base_name$pc[punc]($pc[scm_commitid]$base_short$pc[punc])$pc[reset]"
+ fi
+
+ if [ -n "$tracked" ]; then
+ local track_name=$track_merge
+ if [[ $track_remote == "." ]]; then
+ track_name=${track_name##*/}
+ fi
+ tracked=$(git describe --always $tracked)
+ commits+="tracking $pc[scm_branch]$track_name$pc[punc]"
+ if [[ "$tracked" != "$gitcommit" ]]; then
+ commits[$#commits]+="($pc[scm_commitid]$tracked$pc[punc])"
+ fi
+ commits[$#commits]+="$pc[reset]"
+ fi
+ fi
+ fi
+ fi
+
+ gitsvn=$(git rev-parse --verify -q --short git-svn)
+ if [ $? -eq 0 ]; then
+ gitsvnrev=$(zgit_svnhead $gitsvn)
+ gitsvn=$(git describe --always $gitsvn)
+ if [ -n "$gitsvnrev" ]; then
+ local svninfo=''
+ local -a revs
+ svninfo+="$pc[default]svn$pc[punc]:$pc[scm_branch]r$gitsvnrev"
+ revs=($(git rev-list git-svn..HEAD))
+ if [ $#revs -gt 0 ]; then
+ svninfo+="$pc[punc]@$pc[default]HEAD~$#revs"
+ svninfo+="$pc[punc]($pc[scm_commitid]$gitsvn$pc[punc])"
+ fi
+ commits+=$svninfo
+ fi
+ fi
+
+ if [ $#commits -gt 0 ]; then
+ echo -n " ${(j: :)commits}"
+ fi
+}
+
+prompt_wunjo_scm_branch() {
+ zgit_isgit || return
+ local -A pc
+ pc=(${(kv)wunjo_prompt_colors})
+
+ echo -n "$pc[punc]:$pc[scm_branch]$(zgit_head)"
+
+ if zgit_inworktree; then
+ if ! zgit_isindexclean; then
+ echo -n "$pc[scm_status_staged]+"
+ fi
+
+ local -a dirty
+ if ! zgit_isworktreeclean; then
+ dirty+='!'
+ fi
+
+ if zgit_hasunmerged; then
+ dirty+='*'
+ fi
+
+ if zgit_hasuntracked; then
+ dirty+='?'
+ fi
+
+ if [ $#dirty -gt 0 ]; then
+ echo -n "$pc[scm_status_dirty]${(j::)dirty}"
+ fi
+ fi
+
+ echo $pc[reset]
+}
+
+prompt_wunjo_setup "$@"
+
+# vim:set ft=zsh:
diff --git a/.zsh/func/zgitinit b/.zsh/func/zgitinit
new file mode 100644
index 0000000..ebc8bff
--- /dev/null
+++ b/.zsh/func/zgitinit
@@ -0,0 +1,248 @@
+##
+## Load with `autoload -U zgitinit; zgitinit'
+##
+
+typeset -gA zgit_info
+zgit_info=()
+
+zgit_chpwd_hook() {
+ zgit_info_update
+}
+
+zgit_preexec_hook() {
+ if [[ $2 == git\ * ]] || [[ $2 == *\ git\ * ]]; then
+ zgit_precmd_do_update=1
+ fi
+}
+
+zgit_precmd_hook() {
+ if [ $zgit_precmd_do_update ]; then
+ unset zgit_precmd_do_update
+ zgit_info_update
+ fi
+}
+
+zgit_info_update() {
+ zgit_info=()
+
+ local gitdir=$(git rev-parse --git-dir 2>/dev/null)
+ if [ $? -ne 0 ] || [ -z "$gitdir" ]; then
+ return
+ fi
+
+ zgit_info[dir]=$gitdir
+ zgit_info[bare]=$(git rev-parse --is-bare-repository)
+ zgit_info[inwork]=$(git rev-parse --is-inside-work-tree)
+}
+
+zgit_isgit() {
+ if [ -z "$zgit_info[dir]" ]; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+zgit_inworktree() {
+ zgit_isgit || return
+ if [ "$zgit_info[inwork]" = "true" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_isbare() {
+ zgit_isgit || return
+ if [ "$zgit_info[bare]" = "true" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_head() {
+ zgit_isgit || return 1
+
+ if [ -z "$zgit_info[head]" ]; then
+ local name=''
+ name=$(git symbolic-ref -q HEAD)
+ if [ $? -eq 0 ]; then
+ if [[ $name == refs/(heads|tags)/* ]]; then
+ name=${name#refs/(heads|tags)/}
+ fi
+ else
+ name=$(git name-rev --name-only --no-undefined --always HEAD)
+ if [ $? -ne 0 ]; then
+ return 1
+ elif [[ $name == remotes/* ]]; then
+ name=${name#remotes/}
+ fi
+ fi
+ zgit_info[head]=$name
+ fi
+
+ echo $zgit_info[head]
+}
+
+zgit_branch() {
+ zgit_isgit || return 1
+ zgit_isbare && return 1
+
+ if [ -z "$zgit_info[branch]" ]; then
+ local branch=$(git symbolic-ref HEAD 2>/dev/null)
+ if [ $? -eq 0 ]; then
+ branch=${branch##*/}
+ else
+ branch=$(git name-rev --name-only --always HEAD)
+ fi
+ zgit_info[branch]=$branch
+ fi
+
+ echo $zgit_info[branch]
+ return 0
+}
+
+zgit_tracking_remote() {
+ zgit_isgit || return 1
+ zgit_isbare && return 1
+
+ local branch
+ if [ -n "$1" ]; then
+ branch=$1
+ elif [ -z "$zgit_info[branch]" ]; then
+ branch=$(zgit_branch)
+ [ $? -ne 0 ] && return 1
+ else
+ branch=$zgit_info[branch]
+ fi
+
+ local k="tracking_$branch"
+ local remote
+ if [ -z "$zgit_info[$k]" ]; then
+ remote=$(git config branch.$branch.remote)
+ zgit_info[$k]=$remote
+ fi
+
+ echo $zgit_info[$k]
+ return 0
+}
+
+zgit_tracking_merge() {
+ zgit_isgit || return 1
+ zgit_isbare && return 1
+
+ local branch
+ if [ -z "$zgit_info[branch]" ]; then
+ branch=$(zgit_branch)
+ [ $? -ne 0 ] && return 1
+ else
+ branch=$zgit_info[branch]
+ fi
+
+ local remote=$(zgit_tracking_remote $branch)
+ [ $? -ne 0 ] && return 1
+ if [ -n "$remote" ]; then # tracking branch
+ local merge=$(git config branch.$branch.merge)
+ if [ $remote != "." ]; then
+ merge=$remote/$(basename $merge)
+ fi
+ echo $merge
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_isindexclean() {
+ zgit_isgit || return 1
+ if git diff --quiet --cached 2>/dev/null; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_isworktreeclean() {
+ zgit_isgit || return 1
+ if git diff --quiet 2>/dev/null; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_hasuntracked() {
+ zgit_isgit || return 1
+ local -a flist
+ flist=($(git ls-files --others --exclude-standard))
+ if [ $#flist -gt 0 ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_hasunmerged() {
+ zgit_isgit || return 1
+ local -a flist
+ flist=($(git ls-files -u))
+ if [ $#flist -gt 0 ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+zgit_svnhead() {
+ zgit_isgit || return 1
+
+ local commit=$1
+ if [ -z "$commit" ]; then
+ commit='HEAD'
+ fi
+
+ git show --raw $commit | \
+ grep git-svn-id | \
+ sed -re 's/^\s*git-svn-id: .*@([0-9]+).*$/\1/'
+}
+
+zgit_rebaseinfo() {
+ zgit_isgit || return 1
+ if [ -d $zgit_info[dir]/rebase-merge ]; then
+ dotest=$zgit_info[dir]/rebase-merge
+ elif [ -d $zgit_info[dir]/.dotest-merge ]; then
+ dotest=$zgit_info[dir]/.dotest-merge
+ elif [ -d .dotest ]; then
+ dotest=.dotest
+ else
+ return 1
+ fi
+
+ zgit_info[dotest]=$dotest
+
+ zgit_info[rb_onto]=$(cat "$dotest/onto")
+ zgit_info[rb_upstream]=$(cat "$dotest/upstream")
+ if [ -f "$dotest/orig-head" ]; then
+ zgit_info[rb_head]=$(cat "$dotest/orig-head")
+ elif [ -f "$dotest/head" ]; then
+ zgit_info[rb_head]=$(cat "$dotest/head")
+ fi
+ zgit_info[rb_head_name]=$(cat "$dotest/head-name")
+
+ return 0
+}
+
+zgitinit() {
+ typeset -ga chpwd_functions
+ typeset -ga preexec_functions
+ typeset -ga precmd_functions
+ chpwd_functions+='zgit_chpwd_hook'
+ preexec_functions+='zgit_preexec_hook'
+ precmd_functions+='zgit_precmd_hook'
+}
+
+zgitinit
+zgit_info_update
+
+# vim:set ft=zsh:
diff --git a/.zsh_logout b/.zsh_logout
new file mode 100644
index 0000000..de4f5f7
--- /dev/null
+++ b/.zsh_logout
@@ -0,0 +1,7 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+ [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..1828fa1
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,754 @@
+#
+# ~/.zshrc
+# Z shell configuration file.
+# CREDITS
+# File was first taken from the following location:
+#
+# http://www.tomaw.net/configs/zshrc
+#
+# Some additions were made by me, Jonathan Patrick Davies <jpds@ubuntu.com>.
+# Among these are the Launchpad, Debian, Wikipedia/Wikitravel, BBC search,
+# Demonoid, Lonely Planet, Urbandictionary and other various functions. I also
+# implemented a few "if" statements to stop zsh complaining about any missing
+# objects and placed the dircolors support.
+#
+# The forkex() function is thanks to Siegfried-Angel Gevatter Pujals
+# <rainct@ubuntu.com>.
+#
+# Some of this file is thanks to <slarti@gentoo.org>, some is take from
+# spider's <spider@gentoo.org> zshrc, and some from the zshwiki.org.
+# Some bash functions are nicked from ciaranm's <ciaranm@gentoo.org>
+# bashrc.
+#
+# READ ME
+#
+# • Remember to change the stuff specific to me! It's all at the top of
+# this file.
+#
+# • You can obviously only get the most out of this file if you take the
+# time to read through the comments. Of course, you can still experience
+# zsh's superiority by simply plugging this file in and using it.
+#
+
+# BEGIN LOCAL
+
+#export LC_ALL="en_CA.UTF-8" # Use Canadian English...
+#export LANG="en_CA.UTF-8" # ...as default language.
+#export LC_ALL="fr_CA.UTF-8"
+#export LANG="fr_CA.UTF-8"
+export LC_ALL="es_ES.UTF-8"
+export LANG="es_ES.UTF-8"
+export TZ="America/Toronto" # Force our time zone this location.
+export EDITOR="vim" # Long live vim (as our editor).
+export NAME="Ryan Kavanagh" # Our name.
+export EMAIL="ryanakca@kubuntu.org" # Our email address.
+export GPGKEY1="E95EDDC9" # Our old GnuPG key ID.
+export GPGKEY="4A11C97A" # Our GnuPG key ID.
+export GNUPGHOME="/media/encrypted/.gnupg"
+export DEBFULLNAME=$NAME # These are used by Debian packaging...
+export DEBEMAIL=$EMAIL # ...programs.
+export DEBSIGN_KEYID=$GPGKEY # Key ID for signing Debian packages.
+export GIT_AUTHOR_NAME=$NAME # Use our real name for Git.
+export GIT_AUTHOR_EMAIL=$EMAIL
+export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
+export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL
+export BZR_EMAIL="$NAME <$EMAIL>" # Override email for Bazaar.
+export GIT_AUTHOR_NAME=$NAME
+export GREP_OPTIONS="--color=auto"
+export QUILT_PATCHES=debian/patches
+export PATH=/usr/lib/ccache:/usr/lib/distcc/bin:$HOME/bin:/sbin:$PATH
+export CCACHE_DIR=/ccache
+#export HTTP_PROXY="http://localhost:3128/"
+export MANWIDTH=80
+export MANOPT="-L en"
+export BTS_SENDMAIL_COMMAND="/usr/bin/msmtp"
+export PYTHONSTARTUP=~/.pythonrc.py
+
+alias apt-upgrade='sudo apt-get update && sudo aptitude dist-upgrade'
+alias emacs='/usr/bin/emacs -nw'
+alias dbuild='GPG_TTY=$(tty) debuild -S -sa -k$GPGKEY'
+alias itp='reportbug -M -B debian --email ryanakca@kubuntu.org --paranoid -K $GPGKEY wnpp'
+alias sneezymud='nc play.sneezymud.com 7900'
+alias news='tin -g pqnews.cogeco.ca'
+alias bbcr1='mplayer mms://wmlive.bbc.net.uk/wms/bbc_ami/radio1/radio1_bb_live_int_eq1_sl1'
+alias bbcr2='mplayer mms://wmlive.bbc.net.uk/wms/bbc_ami/radio2/radio2_bb_live_int_eq1_sl1'
+alias bbcr3='mplayer mms://wmlive.bbc.net.uk/wms/bbc_ami/radio3/radio3_bb_live_int_eq1_sl1'
+alias rtvec='mplayer -playlist http://radioclasica.rtve.stream.flumotion.com/rtve/radioclasica.mp3.m3u'
+alias rtve3='mplayer -playlist http://radio3.rtve.stream.flumotion.com/rtve/radio3.mp3.m3u'
+alias rtve5='mplayer -playlist http://radio5.rtve.stream.flumotion.com/rtve/radio5.mp3.m3u'
+alias am740='mplayer -playlist http://provisioning.streamtheworld.com/asx/cfzmam.asx'
+alias dismuke='mplayer -playlist http://www.loudcity.com/player/radio-dismuke/pls_mp3.pls\?cache_bust\=1279637216\&max_bitrate\=1000'
+alias 1920s='mplayer -playlist http://64.5.130.43/listen.pls'
+alias up-theme='rsync -avz --no-p --no-o --no-times -e ssh ~/work/kubuntu-theme-v2/* ryanak.ca:/home/ryan/kubuntu-theme-v2/'
+alias startxkde4='startx -nolisten tcp -- :0 &'
+alias irssi-notify='ssh -f ryanak.ca -L 2227:127.0.0.1:2227 -N && irssi-notifier &'
+alias gpg='gpg-wrapper'
+alias i2e='/usr/bin/i2e-cli'
+alias mplayer-fb='mplayer -vo fbdev'
+alias links2-fb='links2 -driver fb'
+alias bzbuild='bzr builddeb -S -- -sa -k$GPGKEY'
+alias svbuildi='svn-buildpackage --svn-ignore-new --svn-builder="debuild -S -sa -k$GPGKEY"'
+alias svbuild='svn-buildpackage --svn-builder="debuild -S -sa -k$GPGKEY"'
+alias gibuild='git-buildpackage --git-builder="debuild -i\.git/ -I.git -S -sa -k$GPGKEY"'
+#alias wtau='wakeonlan 00:0d:56:1b:7a:f0'
+alias wtau='sudo etherwake tau'
+alias pology='python $HOME/work/pology/scripts/posieve.py'
+alias daylog='dch --changelog /home/ryan/work/sail/drafts/daylog/daylog'
+alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
+alias kbd="setxkbmap -layout us -variant icd -option -option lv3:ralt_switch_multikey -option ctrl:nocaps"
+
+# END LOCAL
+
+fpath=($fpath
+ /home/ryan/.zen/zsh/scripts
+ /home/ryan/.zen/zsh/zle)
+autoload -U zen
+
+# Ensure that we possess a ~/.zsh/ directory. This is required for the
+# ~/.zsh/history file.
+if [ ! -d $HOME/.zsh/ ]; then
+ mkdir -p $HOME/.zsh/
+fi
+
+# Alias/custom commands
+#
+# Some are just in case - for 'rm', 'cp' and 'mv' - ask about overwriting or
+# deleting files.
+# Furthermore, be verbose about what each command is performing to be present of
+# what is occuring every time.
+alias cp="cp -iv"
+alias mkdir="mkdir -v"
+alias mv="mv -iv"
+alias ln="ln -v"
+# Only delete files on the current file system to avoid removing recursively
+# from bind mounts.
+alias rm="rm -iv --one-file-system"
+
+alias chown="chown -v"
+alias chmod="chmod -v"
+
+# Cause encfs unmount a mounted encrypted partition after twenty minutes of
+# inactivity by default.
+alias encfs="encfs --idle=20"
+
+fpath=($fpath $HOME/.zsh/func)
+
+# Prompt theme.
+autoload -U promptinit; promptinit
+# prompt walters
+
+# Colours.
+autoload -U colors; colors
+setopt promptsubst
+
+# Give us a prompt along the lines of:
+#
+# jpds@topr>
+#
+#export PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[green]%}%m%{$reset_color%}%\> "
+
+# Change word boundary characters. Nabbed from
+# http://zshwiki.org/KeyBindings.
+
+# By default: export WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>'
+# We remove the slash, period, angle brackets, dash here.
+export WORDCHARS='*?_-[]~=&;!#$%^(){}'
+
+# Follow GNU LS_COLORS for completion menus
+zmodload -i zsh/complist
+
+# Should dircolors exist. Fetch LS_COLORS from it.
+if [ `which dircolors` ]; then
+ eval "$(dircolors -b)"
+fi
+
+zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
+zstyle ':completion:*:*:kill:*' list-colors '=%*=01;31'
+
+alias ls="ls --classify --color=always" # Add all colours and have fancy
+ # symbols for files, etc.
+alias grep="grep --colour=always" # Colour grep too.
+# Load the completion system
+autoload -U compinit; compinit
+
+# Very powerful version of mv implemented in zsh. The main feature I
+# know of it that seperates it from the standard mv is that it saves you
+# time by being able to use patterns which are expanded into positional
+# parameters. So:
+#
+# slarti@pohl % zmv (*)foo ${1}bar
+#
+# On a series of files like onefoo, twofoo, threefoo, fivefoo would be
+# renamed to onebar twobar threebar fourbar.
+#
+# Although that's nifty enough, I suspect there are other features I
+# don't know about yet...
+#
+# Read $fpath/zmv for some more basic examples of usage, and also use
+# run-help on it :)
+autoload -U zmv
+
+# Command line calculator written in zsh, with a complete history
+# mechanism and other shell features.
+autoload -U zcalc
+
+# 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.
+#
+# slarti@pohl % echo {1..30000}
+# zsh: argument list too long: /bin/echo
+# zsh: exit 127 /bin/echo {1..30000}
+autoload -U zargs
+
+# Yes, we are as bloated as emacs
+autoload -U tetris
+zle -N tetris
+bindkey "^Xt" tetris
+
+# Makes it easy to type URLs as command line arguments. As you type, the
+# input character is analyzed and, if it mayn eed quoting, the current
+# word is checked for a URI scheme. If one is found and the current word
+# is not already quoted, a blackslash is inserted before the input
+# caracter.
+autoload -U url-quote-magic
+zle -N self-insert url-quote-magic
+
+# zed is a tiny command-line editor in pure ZSH; no other shell could do
+# this. zed itself is simple as anything, but it's killer feature for
+# me is that it can edit functions on the go with zed -f <funcname> (or
+# fned <funcname>. This is useful for me when I'm using and defining
+# functions interactively, for example, when I'm working through the
+# Portage tree in CVS. It allows me to edit a function on the fly,
+# without having to call the last definition back up from the history
+# and re-edit that in ZLE. It also indents the function, even if it was
+# defined on all one line in the line editor, making it easy as anything
+# to edit.
+#
+# ^X^W to save, ^C to abort.
+autoload -U zed
+
+# Incremental completion of a word. After starting this, a list of
+# completion choices can be shown after every character you type, which
+# can deleted with ^H or delete. Return will accept the current
+# completion. Hit tab for normal completion, ^G to get back where you
+# came from and ^D to list matches.
+autoload -U incremental-complete-word
+zle -N incremental-complete-word
+bindkey "^Xi" incremental-complete-word
+
+# 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
+
+# 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
+bindkey "^Z" predict-off
+
+# run-help is a help finder, bound in ZLE to M-h. It doesn't need to be
+# autoloaded to work - the non-autoloaded version just looks up a man
+# page for the command under the cursor, then when that process is
+# finished it pulls your old command line back up from the buffer stack.
+# However, with the autoloaded function and:
+#
+# mkdir ~/zsh-help; cd ~/zsh-help MANPAGER="less" man zshbuiltins | \
+# colcrt | perl /usr/share/zsh/4.2.1/Util/helpfiles
+#
+# It'll work for zsh builtins too. By the way, I've assumed some things
+# in that command. ~/zsh-help can be wherever you like, MANPAGER needs
+# to be any standard pager (less, pg, more, just not the MANPAGER I have
+# defined in this file), colcrt can be col -bx, and the path to
+# helpfiles may be different for you (Util may not even be installed
+# with your distribution; fair enough, make install doesn't install it.
+# Dig up a source tarball and everything is in there).
+
+# Load the new one
+autoload -U run-help
+
+# Press Alt-H to show help for command we are currently on.
+bindkey '[[A' run-help
+
+# History file name and maximum size.
+HISTFILE="$HOME/.zsh/history"
+SAVEHIST=15000
+HISTSIZE=15000
+
+# Push History from previous sessions. IF $HISTFILE exists.
+if [ -f $HISTFILE ]; then
+ fc -R $HISTFILE
+fi
+
+## Key bindings
+# You may use:
+# % autoload -U zkbd
+# % zkbd
+# to discover your keys.
+
+bindkey -v # Vi keybindings.
+
+typeset -U fpath
+
+prompt wunjo
+# Actually, stick with emacs for the moment. The vi keymap just doesn't
+# seem to be as complete (even if it's nicer for editing, there's no
+# execute-named-cmd bound, for example).
+#bindkey -e # Emacs keybindings.
+
+# Up, down left, right.
+# echotc forms part of the zsh/termcap module. It outputs the termcap value
+# corresponding to the capability it was given as an argument. man zshmodules.
+zmodload -i zsh/termcap
+bindkey "$(echotc kl)" backward-char
+bindkey "$(echotc kr)" forward-char
+bindkey "$(echotc ku)" up-line-or-history
+bindkey "$(echotc kd)" down-line-or-history
+
+bindkey '\e[3~' delete-char # Delete
+
+if [[ "$TERM" == "rxvt-unicode" || "$TERM" == "screen" ]]; then
+ bindkey '\e[7~' beginning-of-line # Home
+ bindkey '\e[8~' end-of-line # End
+elif [[ "$TERM" == "linux" ]]; then
+ bindkey '\e[1~' beginning-of-line # Home
+ bindkey '\e[4~' end-of-line # End
+else # At least xterm; probably other terms too
+ bindkey '\e[H~' beginning-of-line # Home
+ bindkey '\e[F~' end-of-line # End
+fi
+
+bindkey '\e[5~' up-history # PageUp
+bindkey '\e[6~' down-history # PageDown
+
+# This function sets the window tile to user@host:/workingdir before each
+# prompt. If you're using screen, it sets the window title (works
+# wonderfully for 'hardstatus' lines.
+# Beware: The two functions below have raw control characters.
+precmd() {
+# [[ -t 1 ]] || return
+ case $TERM in
+ *xterm*|rxvt*) print -Pn "]2;%n@%m:%~\a"
+ ;;
+ screen*) print -Pn "\"%n@%m:%~\134"
+ ;;
+ esac
+}
+
+# This sets the window title to the last run command.
+preexec() {
+# [[ -t 1 ]] || return
+ case $TERM in
+ *xterm*|rxvt*)
+ print -Pn "]2;$1\a"
+ ;;
+ screen*)
+ print -Pn "\"$1\134"
+ ;;
+ esac
+}
+
+# Custom commands.
+
+loop() {
+ while [ 1 -eq 1 ]; do
+ $@
+ done
+}
+
+#
+# Debian.
+#
+debian.bugs.number() {
+ # Debian Bug Tracker - by number.
+ w3m "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$1"
+}
+
+debian.bugs.package() {
+ # Debian Bug Tracker - by package.
+ w3m "http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=$1"
+}
+
+debian.packages() {
+ # Debian Packages.
+ # Add 'src:' in front of the package name to search for source packages.
+ w3m "http://packages.debian.org/$1"
+}
+
+debian.qa.maintainer() {
+ # Debian QA Maintainer search by email address.
+ w3m "http://qa.debian.org/developer.php?login=$1"
+}
+
+debian.qa.package() {
+ # Debian QA Maintainer search by package name.
+ w3m "http://qa.debian.org/developer.php?package=$1"
+}
+
+debian.qa.pts() {
+ # Debian Package Tracking system - developers.
+ w3m "http://packages.qa.debian.org/$1"
+}
+
+debian.qa.task() {
+ # Debian QA - search for task.
+ w3m "http://qa.debian.org/developer.php?task=$1"
+}
+
+debian.wiki() {
+ # Search the Debian Wiki.
+ w3m "http://wiki.debian.org/?action=fullsearch&value=$@"
+}
+
+#
+# Ubuntu.
+#
+
+ubuntu.help() {
+ # Ubuntu Help site.
+ w3m "https://help.ubuntu.com/community/?action=fullsearch&value=$@"
+}
+
+ubuntu.packages() {
+ # Ubuntu packages.
+ # Again; add: "src:" in order to search for source packages.
+ w3m "http://packages.ubuntu.com/$1"
+}
+
+ubuntu.wiki() {
+ # Search the Ubuntu wiki.
+ w3m "https://wiki.ubuntu.com/?action=fullsearch&value=$@"
+}
+
+#
+# Launchpad.
+#
+
+launchpad.answers.number() {
+ # Display a Launchpad answer by number.
+ w3m "https://answers.launchpad.net/questions/$1"
+}
+
+launchpad.answers.package() {
+ # Display list of questions for package in Launchpad.
+ w3m "https://answers.launchpad.net/ubuntu/+source/$1"
+}
+
+launchpad.answers.search() {
+ # Search Launchpad answers.
+ w3m "https://answers.launchpad.net/questions/+questions?field.search_text=$@"
+}
+
+launchpad.blueprints() {
+ # Search Launchpad blueprints.
+ w3m "https://blueprints.launchpad.net/?searchtext=$@"
+}
+
+launchpad.bugs.number() {
+ # Display a Launchpad bug by number.
+ w3m "https://bugs.launchpad.net/bugs/$1"
+}
+
+launchpad.bugs.package() {
+ # Display list of bugs for a package.
+ w3m "https://bugs.launchpad.net/ubuntu/+source/$1"
+}
+
+launchpad.packages() {
+ # Launchpad packages for Ubuntu.
+ w3m "http://launchpad.net/ubuntu/+source/$1"
+}
+
+launchpad.project() {
+ # Display a Launchpad project.
+ w3m "https://launchpad.net/$1"
+}
+
+launchpad.project.search() {
+ # Search Launchpad projects.
+ w3m "https://launchpad.net/projects/+index?text=$@"
+}
+
+#
+# Others.
+#
+
+google() {
+ # Google search.
+ w3m "http://www.google.com/search?q=$@"
+}
+
+bbc.search() {
+ # Search the BBC website.
+ w3m "http://search.bbc.co.uk/cgi-bin/search/results.pl?q=$@"
+}
+
+demonoid() {
+ # Search Demonoid.com torrents.
+ w3m "http://www.demonoid.com/files/?query=$@"
+}
+
+freedictonary.acronyms() {
+ # Look up an acronym on the FreeDictonary.
+ w3m "http://acronyms.thefreedictionary.com/$1"
+}
+
+imdb() {
+ # Search IMDb.
+ w3m "http://www.imdb.com/find?q=$@"
+}
+
+lonelyplanet() {
+ # Search Lonely Planet.
+ w3m "http://search.lonelyplanet.com/search.do?Ntt=$@"
+}
+
+urbandictionary() {
+ # Search Urbandictionary.com.
+ w3m "http://www.urbandictionary.com/define.php?term=$@"
+}
+
+wikipedia() {
+ # Wikipedia search. English section.
+ w3m "http://en.wikipedia.org/wiki/Special:Search?search=$@"
+}
+
+wiktionary() {
+ # Search Wiktionary for a term.
+ w3m "http://en.wiktionary.org/wiki/Special:Search?search=$@"
+}
+
+wikitravel() {
+ # Wikitravel search. English section.
+ w3m "http://wikitravel.org/en/Special:Search?search=$@"
+}
+
+
+forkex() {
+ # Fork program $@ from console.
+ nohup "$@" >/dev/null 2>&1 <&1 & disown %%
+}
+
+#conjugate() {
+# # Conjugates the verb $@
+# w3m "http://www.mijnwoordenboek.nl/EN/verb/$@"
+#}
+
+conjugate() {
+ # Conjugates the verb $@
+ w3m "http://www.verbix.com/cache/webverbix/1/$@.shtml"
+}
+
+proxy() {
+ export http_proxy=http://localhost:3128/
+}
+
+noproxy() {
+ unset http_proxy
+}
+
+# Pretty menu!
+zstyle ':completion:*' menu select=1
+zstyle ':completion:*' select-prompt %SScroll active at %p%s.
+
+# Completion options.
+zstyle ':completion:*' completer _complete _prefix
+zstyle ':completion::prefix-1:*' completer _complete
+zstyle ':completion:incremental:*' completer _complete _correct
+zstyle ':completion:predict:*' completer _complete
+
+# 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 directories in globbed file completions
+# for certain commands.
+zstyle ':completion::complete:*' '\'
+
+# Use menuselection for PID completion.
+zstyle ':completion:*:*:kill:*' menu yes select
+zstyle ':completion:*:kill:*' force-list always
+
+# tag-order 'globbed-files directories' all-files.
+zstyle ':completion::complete:*:tar:directories' file-patterns '*~.*(-/)'
+
+# Do not complete backup files as executables.
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# Separate matches into groups.
+zstyle ':completion:*:matches' group 'yes'
+
+# With commands like rm, it's annoying if you keep getting offered the same
+# file multiple times. This fixes it. Also good for cp, et cetera..
+zstyle ':completion:*:rm:*' ignore-line yes
+zstyle ':completion:*:cp:*' ignore-line 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'
+
+# Simulate spider's old abbrev-expand 3.0.5 patch
+#zstyle ':completion:*:history-words' stop verbose
+#zstyle ':completion:*:history-words' remove-all-dups yes
+#zstyle ':completion:*:history-words' list false
+
+# From the zshwiki. Hide CVS files/directories from being completed.
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+
+# Also from the wiki. Hide uninteresting users from completion.
+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 backup bind \
+dictd gnats identd irc man messagebus postfix proxy sys \
+www-data alias amavis at clamav cmd5checkpw cron cyrus dhcp dnscache \
+dnslog foldingathome guest haldaemon jabber ldap mailman mpd mysql \
+nut p2p portage postmaster qmaild qmaill qmailp qmailq qmailr qmails \
+smmsp tinydns vpopmail wasabi zope
+
+# Pull hosts from $HOME/.ssh/known_hosts, also from the wiki
+# local _myhosts. If it exists that is.
+if [ -f $HOME/.ssh/known_hosts ]; then
+ _myhosts=( ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*} )
+ zstyle ':completion:*' hosts $_myhosts
+fi
+
+# Approximate completion. From the wiki.
+zstyle ':completion:*' completer _complete _match _approximate
+zstyle ':completion:*:match:*' original only
+zstyle ':completion:*:approximate:*' max-errors 1 numeric
+
+zstyle ':completion:*:sudo:*' command-path /usr/sbin /usr/bin /sbin /bin \
+ /usr/X11R6/bin
+
+# NOTE: Comment this out for now. Breaks preexec and precmd above.
+#if [ -f /etc/zsh_command_not_found ]; then
+# . /etc/zsh_command_not_found
+#fi
+
+# Options
+setopt \
+NO_all_export \
+ always_last_prompt \
+ always_to_end \
+ append_history \
+ auto_cd \
+ auto_list \
+ auto_menu \
+ auto_name_dirs \
+ auto_param_keys \
+ auto_param_slash \
+ auto_pushd \
+ auto_remove_slash \
+NO_auto_resume \
+ bad_pattern \
+ bang_hist \
+NO_beep \
+ brace_ccl \
+ correct_all \
+NO_bsd_echo \
+NO_cdable_vars \
+NO_chase_links \
+ 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 \
+NO_glob_dots \
+NO_glob_subst \
+NO_hash_cmds \
+NO_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 \
+ inc_append_history \
+NO_list_ambiguous \
+NO_list_beep \
+ list_types \
+ long_list_jobs \
+ magic_equal_subst \
+NO_mail_warning \
+NO_mark_dirs \
+ 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 \
+ share_history \
+ short_loops \
+NO_sh_word_split \
+NO_single_line_zle \
+NO_sun_keyboard_hack \
+NO_verbose \
+ zle
+
+# GPG / SSH AGENT
+
+keychain id_rsa
+keychain -Q ${GPGKEY} ${GPGKEY1}
+[ -z "$HOSTNAME" ] && HOSTNAME=`uname -n`
+[ -f $HOME/.keychain/$HOSTNAME-sh ] &&
+ . $HOME/.keychain/$HOSTNAME-sh
+[ -f $HOME/.keychain/$HOSTNAME-sh-gpg ] &&
+ . $HOME/.keychain/$HOSTNAME-sh-gpg
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e1bd342
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,108 @@
+SUBSTS_FILE=SUBSTS.local
+
+# Files that need changes to work locally or that contain sensitive
+# information
+LOCAL_FILES = \
+ .imapfilter/config.lua \
+ .mutt/accounts.rc \
+ .netrc \
+ .offlineimaprc \
+ .xmonad/xmonad.hs \
+
+# Files that are system independent.
+# IMPORTANT: directories must have trailing slash
+GLOBAL_FILES = \
+ .Xdefaults \
+ .config/nitrogen/ \
+ .dzen/ \
+ .imapfilter/ \
+ .inputrc \
+ .local/share/wallpapers/ \
+ .mailcheckrc \
+ .mutt/ \
+ .muttrc \
+ .notmuch-config \
+ .quiltrc-dpkg \
+ .screenrc \
+ .screenlayout/ \
+ .signature \
+ .vim/ \
+ .vimrc \
+ .xinitrc \
+ .xmobarrc \
+ .xmonad/ \
+ .zsh/ \
+ .zsh_logout \
+ .zshrc \
+ bin/ \
+
+get-val = $(shell awk '{if (match($$0, /$1/)) { print $$2 } }' $(SUBSTS_FILE))
+
+LOCAL_PASS = $(call get-val,LOCAL_PASS)
+GMAIL_PASS = $(call get-val,GMAIL_PASS)
+QUEENSU_PASS = $(call get-val,QUEENSU_PASS)
+PM_EMAIL = $(call get-val,PM_EMAIL)
+SCREENLAYOUT = $(call get-val,SCREENLAYOUT)
+XMONAD_DZEN_W = $(call get-val,XMONAD_DZEN_W)
+XMONAD_DZEN_X = $(call get-val,XMONAD_DZEN_X)
+XMONAD_DZEN_Y = $(call get-val,XMONAD_DZEN_Y)
+
+# This target relies on GLOBAL_FILES being before LOCAL_FILES so that the
+# build/LOCAL_FILES targets overwrite what was copied in GLOBAL_FILES.
+BUILD = $(patsubst %,build/%,$(GLOBAL_FILES) $(LOCAL_FILES))
+
+build: $(BUILD)
+
+build/.offlineimaprc: .offlineimaprc $(SUBSTS_FILE)
+ [ -d build ] || mkdir build
+ sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \
+ -e 's/GMAIL_PASS/$(GMAIL_PASS)/g' \
+ -e 's/QUEENSU_PASS/$(QUEENSU_PASS)/g' $< > $@
+
+build/.imapfilter/config.lua: .imapfilter/config.lua $(SUBSTS_FILE)
+ [ -d build/.imapfilter ] || mkdir -p build/.imapfilter
+ sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \
+ -e 's/PM_EMAIL/$(PM_EMAIL)/g' $< > $@
+
+build/.netrc: .netrc $(SUBSTS_FILES)
+ [ -d build ] || mkdir build
+ sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' $< > $@
+
+build/.mutt/accounts.rc: .mutt/accounts.rc $(SUBSTS_FILE)
+ [ -d build/.mutt ] || mkdir -p build/.mutt
+ sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \
+ -e 's/GMAIL_PASS/$(GMAIL_PASS)/g' \
+ -e 's/QUEENSU_PASS/$(QUEENSU_PASS)/g' $< > $@
+
+build/.xinitrc: .xinitrc $(SUBSTS_FILE)
+ [ -d build ] || mkdir build
+ sed -e 's/SCREENLAYOUT/$(SCREENLAYOUT)/g' $< > $@
+
+build/.xmonad/xmonad.hs: .xmonad/xmonad.hs $(SUBSTS_FILE)
+ [ -d build/.xmonad ] || mkdir -p build/.xmonad
+ sed -e 's/XMONAD_DZEN_W/$(XMONAD_DZEN_W)/g' \
+ -e 's/XMONAD_DZEN_X/$(XMONAD_DZEN_X)/g' \
+ -e 's/XMONAD_DZEN_y/$(XMONAD_DZEN_Y)/g' $< > $@
+
+build/%: %
+ [ -d $(dir $@) ] || mkdir -p $(dir $@)
+ rsync -a $< $@
+
+install: $(BUILD)
+ rsync -a build/ ~/
+
+sha256sums: $(LOCAL_FILES) $(GLOBAL_FILES) Makefile
+ sha256sum `git ls-files | grep -v sha256sums` > $@
+
+sha256sums.asc: sha256sums
+ rm -f $@
+ gpg --clearsign --detach-sign $<
+
+verify:
+ sha256sum -c sha256sums
+ gpg --verify sha256sums.asc
+
+clean:
+ rm -fr build
+
+.PHONY: build install clean verify
diff --git a/README b/README
new file mode 100644
index 0000000..d6ef3db
--- /dev/null
+++ b/README
@@ -0,0 +1,9 @@
+My dotfiles. Copy SUBSTS to SUBSTS.local and edit. Then run 'make install'. This
+will copy updated distfiles to $HOME.
+
+This collection has '/home/ryan' hardcoded in various spots, you can probably
+fix this with sed.
+
+Make sure to run 'make sha256sums.asc' before commiting so that you know nobody
+tampers with your dotfiles if remotely hosted and you're using this to share
+them between various hosts. 'make verify' will check their integrity.
diff --git a/SUBSTS b/SUBSTS
new file mode 100644
index 0000000..f9aa59c
--- /dev/null
+++ b/SUBSTS
@@ -0,0 +1,14 @@
+# File format:
+key value
+# Mail passwords
+GMAIL_PASS secret
+QUEENSU_PASS secret
+LOCAL_PASS secret
+# xmonad
+XMONAD_DZEN_W 808
+XMONAD_DZEN_X 114
+XMONAD_DZEN_Y 0
+# screen dimensions / arandr
+SCREENLAYOUT epsilon-SAIL
+# Pipe major's email
+PM_EMAIL pipemajor@example.org
diff --git a/bin/gpg-mounter b/bin/gpg-mounter
new file mode 100755
index 0000000..9ab0d95
--- /dev/null
+++ b/bin/gpg-mounter
@@ -0,0 +1,73 @@
+#!/bin/zsh
+# gpg-wrapper for users who put their .gnupg on a LUKS (encrypted) device
+# Copyright (C) 2009 Ryan Kavanagh <ryanakca@kubuntu.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+# ====== Configure devices here =======
+
+# Encrypted decive containing .gnupg/
+device='/dev/epsilon_crypted/gpg'
+# Will become /dev/mapper/decrypted_name
+decrypted_name='gpg-decrypted'
+# Where to mount decrypted device
+mount_point='/media/encrypted'
+# Path to your GPG
+gpg_path='/usr/bin/gpg'
+# In how many minutes should we close and unmount your encrypted device?
+unmount_time=15
+
+# ======= End user config, don't touch below =======
+# ======= unless you know what you're doing. =======
+
+if [ ! -b '/dev/mapper/'$decrypted_name ]
+then
+ count=0
+ mnt=''
+ # If the user doesn't know wether or not they want to mount it, give up on
+ # them.
+ while [[ $mnt != 'Y' && $count -le 2 ]]
+ do
+ echo 'Would you like to mount the encrypted GPG dir? [Y/n]'
+ read mnt
+ case '$mnt' in
+ '' | 'Y' | 'y' )
+ mnt='Y'
+ ;;
+ 'N' | 'n' )
+ break;
+ ;;
+ * )
+ count=`expr $count + 1`
+ ;;
+ esac
+ done
+
+ if [[ $mnt == 'Y' ]]
+ then
+ sudo cryptsetup luksOpen $device $decrypted_name
+ sudo mount /dev/mapper/$decrypted_name $mount_point
+ # We'll do this here instead of elsewheres, since if the user has
+ # already / manually mounted the directory, they might not want us to
+ # unmount it on them.
+ echo "cp -f ${mount_point}/.gnupg/pubring.gpg /root/pr.gpg && cp -f ${mount_point}/.gnupg/trustdb.gpg /root/tdb.gpg && && umount ${mount_point} && cryptsetup luksClose ${decrypted_name} && \
+ cp /root/pr.gpg ${mount_point}/.gnupg/pubring.gpg && cp /root/tdb.gpg ${mount_point}/.gnupg/trustdb.gpg && chown -R ryan:ryan ${mount_point}" | \
+ sudo at now + $unmount_time min
+ else
+ exit 0
+ fi
+fi
+
+exit 0
diff --git a/bin/gpg-wrapper b/bin/gpg-wrapper
new file mode 100755
index 0000000..628f618
--- /dev/null
+++ b/bin/gpg-wrapper
@@ -0,0 +1,41 @@
+#!/bin/zsh
+# gpg-wrapper for users who put their .gnupg on a LUKS (encrypted) device
+# Copyright (C) 2009 Ryan Kavanagh <ryanakca@kubuntu.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+mount_point='/media/encrypted'
+gpg_path='/usr/bin/gpg'
+gnupg_dir=${mount_point}/.gnupg/
+
+# Is there a .gnupg dir on $mount_point? If so, we ought to tell gpg to use
+# $mount_point/.gnupg, just in case the user didn't setup symlinks from
+# $HOME/.gnupg/ pointing to $mount_point/.gnupg
+if [ -d ${gnupg_dir} ]
+then
+ exec $gpg_path --homedir $gnupg_dir $@
+
+else
+ gpg-mounter
+ if [ -d ${gnupg_dir} ]
+ then
+ exec $gpg_path --homedir $gnupg_dir $@
+ else
+ echo 'No .gnupg dir in $mount_point'
+ exit 1
+ fi
+fi
+
+exit 0
diff --git a/bin/mutt-notmuch b/bin/mutt-notmuch
new file mode 100755
index 0000000..a5b339a
--- /dev/null
+++ b/bin/mutt-notmuch
@@ -0,0 +1,190 @@
+#!/usr/bin/perl -w
+#
+# mutt-notmuch - notmuch (of a) helper for Mutt
+#
+# Copyright: © 2011 Stefano Zacchiroli <zack@upsilon.cc>
+# License: GNU General Public License (GPL), version 3 or above
+#
+# See the bottom of this file for more documentation.
+# A manpage can be obtained by running "pod2man mutt-notmuch > mutt-notmuch.1"
+
+use strict;
+use warnings;
+
+use File::Path;
+use Getopt::Long;
+use Mail::Internet;
+use Mail::Box::Maildir;
+use Pod::Usage;
+
+
+# create an empty maildir (if missing) or empty an existing maildir"
+sub empty_maildir($) {
+ my ($maildir) = (@_);
+ rmtree($maildir) if (-d $maildir);
+ my $folder = new Mail::Box::Maildir(folder => $maildir,
+ create => 1);
+ $folder->close();
+}
+
+# search($maildir, $query)
+# search mails according to $query with notmuch; store results in $maildir
+sub search($$) {
+ my ($maildir, $query) = @_;
+
+ empty_maildir($maildir);
+ system("notmuch search --output=files $query"
+ . " | sed -e 's: :\\\\ :g'"
+ . " | xargs --no-run-if-empty ln -s -t $maildir/cur/");
+}
+
+sub search_action($$@) {
+ my ($interactive, $results_dir, @params) = @_;
+
+ if (! $interactive) {
+ search($results_dir, join(' ', @params));
+ } else {
+ my $query = "";
+ my $done = 0;
+ while (! $done) {
+ print "search ('?' for man): ";
+ chomp($query = <STDIN>);
+ if ($query eq "?") {
+ system("man notmuch");
+ } elsif ($query eq "") {
+ $done = 1; # quit doing nothing
+ } else {
+ search($results_dir, $query);
+ $done = 1;
+ }
+ }
+ }
+}
+
+sub thread_action(@) {
+ my ($results_dir, @params) = @_;
+
+ my $mail = Mail::Internet->new(\*STDIN);
+ $mail->head->get('message-id') =~ /^<(.*)>$/; # get message-id
+ my $mid = $1;
+ my $tid = `notmuch search --output=threads id:$mid`;# get thread id
+ chomp($tid);
+
+ search($results_dir, $tid);
+}
+
+sub die_usage() {
+ my %podflags = ( "verbose" => 1,
+ "exitval" => 2 );
+ pod2usage(%podflags);
+}
+
+sub main() {
+ my $results_dir = "$ENV{HOME}/.cache/mutt_results";
+ my $interactive = 0;
+ my $help_needed = 0;
+
+ my $getopt = GetOptions(
+ "h|help" => \$help_needed,
+ "o|output-dir=s" => \$results_dir,
+ "p|prompt" => \$interactive);
+ if (! $getopt || $#ARGV < 0) { die_usage() };
+ my ($action, @params) = ($ARGV[0], @ARGV[1..$#ARGV]);
+
+ if ($help_needed) {
+ die_usage();
+ } elsif ($action eq "search" && $#ARGV == 0 && ! $interactive) {
+ print STDERR "Error: no search term provided\n\n";
+ die_usage();
+ } elsif ($action eq "search") {
+ search_action($interactive, $results_dir, @params);
+ } elsif ($action eq "thread") {
+ thread_action($results_dir, @params);
+ } else {
+ die_usage();
+ }
+}
+
+main();
+
+__END__
+
+=head1 NAME
+
+mutt-notmuch - notmuch (of a) helper for Mutt
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<mutt-notmuch> [I<OPTION>]... search [I<SEARCH-TERM>]...
+
+=item B<mutt-notmuch> [I<OPTION>]... thread < I<MAIL>
+
+=back
+
+=head1 DESCRIPTION
+
+mutt-notmuch is a frontend to the notmuch mail indexer capable of populating
+maildir with search results.
+
+=head1 OPTIONS
+
+=over 4
+
+=item -o DIR
+
+=item --output-dir DIR
+
+Store search results as (symlink) messages under maildir DIR. Beware: DIR will
+be overwritten. (Default: F<~/.cache/mutt_results/>)
+
+=item -p
+
+=item --prompt
+
+Instead of using command line search terms, prompt the user for them (only for
+"search").
+
+=item -h
+
+=item --help
+
+Show usage information and exit.
+
+=back
+
+=head1 INTEGRATION WITH MUTT
+
+mutt-notmuch can be used to integrate notmuch with the Mutt mail user agent
+(unsurprisingly, given the name). To that end, you should define the following
+macros in your F<~/.muttrc> (replacing F<~/bin/mutt-notmuch> for the actual
+location of mutt-notmuch on your system):
+
+ macro index <F8> \
+ "<enter-command>unset wait_key<enter><shell-escape>~/bin/mutt-notmuch --prompt search<enter><change-folder-readonly>~/.cache/mutt_results<enter>" \
+ "search mail (using notmuch)"
+ macro index <F9> \
+ "<enter-command>unset wait_key<enter><pipe-message>~/bin/mutt-notmuch thread<enter><change-folder-readonly>~/.cache/mutt_results<enter><enter-command>set wait_key<enter>" \
+ "search and reconstruct owning thread (using notmuch)"
+
+The first macro (activated by <F8>) will prompt the user for notmuch search
+terms and then jump to a temporary maildir showing search results. The second
+macro (activated by <F9>) will reconstruct the thread corresponding to the
+current mail and show it as search results.
+
+To keep notmuch index current you should then periodically run C<notmuch
+new>. Depending on your local mail setup, you might want to do that via cron,
+as a hook triggered by mail retrieval, etc.
+
+=head1 SEE ALSO
+
+mutt(1), notmuch(1)
+
+=head1 AUTHOR
+
+Copyright: (C) 2011 Stefano Zacchiroli <zack@upsilon.cc>
+
+License: GNU General Public License (GPL), version 3 or higher
+
+=cut
diff --git a/bin/run-mailcheck b/bin/run-mailcheck
new file mode 100755
index 0000000..215aaf7
--- /dev/null
+++ b/bin/run-mailcheck
@@ -0,0 +1,14 @@
+#!/bin/zsh
+MAIL=`mailcheck`
+GMAIL=`echo $MAIL | /bin/grep -v QueensU`
+QUEENSU=`echo $MAIL | /bin/grep QueensU`
+if echo $GMAIL | grep -q new ; then
+ echo $GMAIL | awk '{printf("%d(%d)"), $6, $3}' > ~/.xmonad/gmailcheck;
+else
+ echo $GMAIL | awk '{printf("%d(%d)"), $3, 0}' > ~/.xmonad/gmailcheck;
+fi
+if echo $QUEENSU | grep -q new ; then
+ echo $QUEENSU | awk '{printf("%d(%d)"), $6, $3}' > ~/.xmonad/queensucheck;
+else
+ echo $QUEENSU | awk '{printf("%d(%d)"), $3, 0}' > ~/.xmonad/queensucheck;
+fi
diff --git a/bin/update-xmonad.sh b/bin/update-xmonad.sh
new file mode 100755
index 0000000..d40b597
--- /dev/null
+++ b/bin/update-xmonad.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+cd /usr/src/xmonad
+darcs pull
+runhaskell Setup.lhs configure
+runhaskell Setup.lhs build
+runhaskell Setup.lhs install
+cd /usr/src/XMonadContrib
+darcs pull
+runhaskell Setup.lhs configure
+runhaskell Setup.lhs build
+runhaskell Setup.lhs install
diff --git a/sha256sums b/sha256sums
new file mode 100644
index 0000000..5e93803
--- /dev/null
+++ b/sha256sums
@@ -0,0 +1,437 @@
+d2e251a99a889a1202dda9a48ff982d01348762d6d560ba9181e35f75e599345 .Xdefaults
+b6cd24dc05ad7e6c29095e3dd386dd1fb2dc1cdbe9e947ac7a09380706aefd85 .config/nitrogen/bg-saved.cfg
+201e7388dfdbd99a1c5399173813234f6f80ee0d0a7119745be7c5bb95900ac4 .config/nitrogen/nitrogen.cfg
+93b0d76267a205b2b81d6d280cea76341aba27c713fd8cc95d828834ade1a541 .dzen/battery.sh
+0a8611b32e087f7598ebc6cdf07ee3056cff9328ae9223e516e7cc886a19a0e3 .dzen/dzen.sh
+56a9e1a7c40a0dc906f778b41725656f84d3c1bcf2ad305d974d4efb937c401e .dzen/icons/arrow_down.xbm
+325554896c1c2781525893dbe63fdf3aeddfe296cb2af61369ba095295a82b85 .dzen/icons/arrow_up.xbm
+cffe6a5269ad576dd516d957b4b9e995851c28aa56087dc997dedbcaaf743f1d .dzen/icons/bluetooth.xbm
+0d9636ff06e2fd9754da6bba8eb158e3529919b58551798909395095f79f0d0c .dzen/icons/corner.xbm
+46ab7893c4105092d1bd06424a216a2734c17afa9f81b8c6c5e263d5628806ec .dzen/icons/cpu.xbm
+3e48781b0fcc711a3c8df0aae06a5b0edff99093a544f52d6f6ab855414d8233 .dzen/icons/down.xbm
+a4b0c0281e9dc106914611d40b97854bf4b1de10bc97e3e5bf70acf7e11a665f .dzen/icons/fwd.xbm
+2d6d73c6ba261979ce0442e00ad92bf8025011f3316b4361b2fbc40f7b32158e .dzen/icons/layout-full-black.xbm
+66c27816bc81068f8bf01795d58c39b53e37f14e7ad7ec9fcec3bae575aebf46 .dzen/icons/layout-full.xbm
+e2301c6d53dc57b5f2fe9ed240b4fd2a8c9647b0e07121d27973f8c93b5c3632 .dzen/icons/layout-gimp.xbm
+a5087e037bdc73bd5d2d3b97d35e9b554c22d1e376ac5611cbc7ed4d18d04cd5 .dzen/icons/layout-im-full.xbm
+696638c4343e95224818e8538b0c528e2a1b09969288eca5ce50ba40f61cccd3 .dzen/icons/layout-im-mirror.xbm
+a46b77da951c3326ccfd9f4071eedd7719b20fd206906004612509b5fb272ad5 .dzen/icons/layout-im-tall.xbm
+9a21626fb692f5611cf9a657e1ba8527168bb35ec6ad945f7e1bbbec39782f06 .dzen/icons/layout-im.xbm
+f8f3d59384145d4fc9d7fa190b3d98be5affbe6e37e5423119f727d1f92fbd1a .dzen/icons/layout-mirror-black.xbm
+c76a45e5d87b5784ff65b9eedd37110c08a6a6b40c6e77f2085411060541d53e .dzen/icons/layout-mirror-bottom.xbm
+7f42a46183ab1f34fb610823322eb09edc8a4242a71522534f113ef4bf5040c6 .dzen/icons/layout-mirror-top.xbm
+5bccb0f4ddbef8a7a3f7100000f4af29ef446b11ed3e1366ebafad5766177d49 .dzen/icons/layout-tall-black.xbm
+a8453c06551390e07cf46606f445cb70cd6b1309b8f979c7f210038025f2a50f .dzen/icons/layout-tall-left.xbm
+ce8fabb17740e1bd385423f3ead3d7755903ceaa9a93296aa3c681029917faa4 .dzen/icons/layout-tall-right.xbm
+7d3ecfcc9690bb6d06b2c2ba476aca510d0d62a0b9b1ba21f6dba14f32def1a5 .dzen/icons/layout-threecol.xbm
+be281d50782c6ad91d522ecce75b482a2019f79eff24acff8471e04b79d089b8 .dzen/icons/load.xbm
+cd9c39530193c19b2940ce67dc9f461908a0046856dba8313af2982acf452e73 .dzen/icons/mail.xbm
+18fef6cf04dd6d5c1046855a784b8ad4468958f4069d4845f928963f1a17af95 .dzen/icons/mem.xbm
+4a6fc2fe23ca2f1194b4e5a43c27fb898c7cbfd3ed53ed68158cc7d212d13da6 .dzen/icons/mpd.xbm
+a25f1b8256eb1fb23c24215df5f95c400ca41ae05180ab2beb715417d958591c .dzen/icons/net-wifi.xbm
+e5ad63967c62724b4d0dc105325a887f3ba257818cec244ea84a3d2ef521bc7e .dzen/icons/net-wifi3.xbm
+51908c2d84ca1e198852357ef86562c50f67bec38c1d5162d55e8918f6afc087 .dzen/icons/net-wifi4.xbm
+dbb559ffa818a9975c3272085484eac6eb747ae64eeacd3f49210de3554c68e0 .dzen/icons/net-wifi5.xbm
+507a00b172dbe463e0212b3acfb2d19c59bc424d10b2e12f7f325f4e8d2fa4bf .dzen/icons/net-wired.xbm
+e73b25928ce0fe93ca0adb9f92448acb1cb6949f7716f195fc567381b38f755e .dzen/icons/net-wired2.xbm
+1659c59208d1c3264bf30e2e5383d21c2ba03b5e3a2b994ba166de468553be16 .dzen/icons/next.xbm
+c4919859502771653d442e3c423e58f9ed9a73a228beea9996f6ce124afd79e0 .dzen/icons/pause.xbm
+d0f18d4493fa4d2f1296063dcd223cc55e564e4747b4f26121bd3afa8c2f5794 .dzen/icons/phones.xbm
+3dcfb45f1332bac6feac1507f6e44da06f33ed8058b3d13b7c034f6c2237a814 .dzen/icons/play.xbm
+8330804ac10948db5894fae26cee9313e95e1a1ed9583dd692a64126793eaacb .dzen/icons/plus.xbm
+ca55b7c818dafb20520a2db071f7d8ef8180ed972963536cf578cdd3e369d54a .dzen/icons/power-ac.xbm
+7a070d4769731fbac2c8e2afa822304e7d8ea4cdab6d80aaf32407f4cd123fdb .dzen/icons/power-bat.xbm
+02676242d1332ed000a6e8b2be7b3c1d29c46a1196c7c08a65f449025501f5a3 .dzen/icons/power-bat2.xbm
+3559504ba4fb91737d84e2e12b5b0254d1b4a6884440d4755af71420d6b92137 .dzen/icons/prev.xbm
+4c2622b38e57968f4386d499afb7255349ad1c4f6bfcc6568d7f69fd4367de70 .dzen/icons/rwd.xbm
+f1e832e5cbc9ac003baa855c608b14b8da8ce1f0f9a9497cf6e4fb53d6ce2c5d .dzen/icons/spkr_hi.xbm
+1b4fc9301a7c1afe854c945b8e6b580a15122d9c4f4a13010f8d5380ec4325a9 .dzen/icons/spkr_mute.xbm
+1e7c53d4d529a62d0fdf2c6553c5cd699e72c05a145d684314832e1633c09c70 .dzen/icons/square.xbm
+3066cca47a10651cf75147eb93dd7ddfc67c0a4a3ba1e337f70ff26b5377722e .dzen/icons/stop.xbm
+663d407ec4d660fe45d7f70b854b4b44f09dc4ba918eacc86bd474fb633b3d25 .dzen/icons/temp.xbm
+5dbcd87289e46f054e9f5eaf2192d3ec13ab3ce4ed5fc1b5f265c5c9a3d4b768 .dzen/icons/up.xbm
+2785d8d853f04c23a9401b7c156b18a4f2056138d91963e91f5f39de9ebf7349 .dzen/icons/vol-hi.xbm
+29738911cd39455fe732289c3eaf17225dfe6eb4297117fbe0d2e1a7f30a5613 .dzen/icons/vol-mute.xbm
+ac02c9dbfaaedcf69775fd8289fee7325b78004b2762078f25e571ca0b612269 .dzen/icons/wifi_01.xbm
+d83f281d105b849fc7f8b2755dae30d4706221ea8266e5a31b4a94d919db44cd .dzen/icons/wifi_02.xbm
+51aeebc80c41efd096f731259876bd34f7252faba7eaeabb4e9e834062dd48a1 .dzen/temperature.sh
+4ee9785182a7f5013726009c32411516f4e8b69150db50240335a091571a2a33 .gitignore
+c9ac8331a5c6580b2d39200b3545f6126d03e84d3981dd9e2139cfa07ed4383d .imapfilter/config.lua
+8a1c44b638de1b2c4c1ec78d16b3acb44c227bd0ed5707054e729a15fa2fe493 .inputrc
+a8ed387566ed343cb03d52f125fd36d98a06b20f21cd8a9ab38ef66f24731724 .local/share/wallpapers/atlas.jpg
+a0b49564f0c0e8445a71c19c276c947a9d6a4b832f0e4e96dcb63b44c9a47829 .local/share/wallpapers/feh-slideshow.py
+1cfdc181bd24d7bd6432523ccb99279a92f5c8256e7194f3437805277c5b5ae1 .local/share/wallpapers/ny1.jpg
+3eccec6b927fd77784dbbba9940dcd364c0a856ef72a951a0707313d6332dedf .local/share/wallpapers/ny2.jpg
+28ae37302cd1a3ca311ffaee4321157fbdcf780bd5f0913cd55b0c4caee0c6c2 .local/share/wallpapers/skyscraper.bmp
+0d2f6b7c2028eafe87fd84a78426eb6781602840367b1d5f708a3c17fd6651b4 .local/share/wallpapers/skyscraper_at_sunset.bmp
+289eee67ff574936828f7d22ee62ee06b7cff598d423632042818639c77bc35a .local/share/wallpapers/torre_agba1_2333x1560.jpg
+b7e022807d5670ccb137c768f1047c31e2a87a9b3ad565885ef7f5d1ea486840 .local/share/wallpapers/totheglory.jpg
+4ed757775be13199d7dfac2c39500b1ee983eaeb684defc2c292e76fe67742de .mailcheckrc
+562224f934e118cd679e274e51fc47b63f859662e59c6e397f603d90a3ed5b5e .mutt/accounts.rc
+66e0849d979ef955851a131b0c64c80978e4ca31a2316bac9abfe66ce0c2af58 .mutt/certs/594f1775.0
+66e0849d979ef955851a131b0c64c80978e4ca31a2316bac9abfe66ce0c2af58 .mutt/certs/Equifax_Secure_CA.pem
+f43726d0e181569f76adc92859a5b7441af1cc6e08bbbe257ece835b9a14d8ed .mutt/certs/SMTP.pem
+c88bf3fa0d0941d18f5484010b2cc89e8742386f5cdbf0e5ab25284a7cf08b08 .mutt/certs/Thawte_Premium_Server_CA.pem
+c88bf3fa0d0941d18f5484010b2cc89e8742386f5cdbf0e5ab25284a7cf08b08 .mutt/certs/c33a80d4.0
+2ec9cbb1a63903ebb7cfdd55eb523ca73b3b8da4ab026ecdb14826c429cbafea .mutt/certs/ca-bundle.crt
+02a56441f5334c8a9509067323ef7ea8679329576531de6407efc3b7d601f14a .mutt/certs/certdata.txt
+fe46c2a51a8f148c91f30b0a067b36f7c8352ab0ce3e972dda92dc2fb80a8cd5 .mutt/certs/certificates
+2ec9cbb1a63903ebb7cfdd55eb523ca73b3b8da4ab026ecdb14826c429cbafea .mutt/certs/f73e89fd.0
+c9bd90ba85c6df4b0ed094c66483ce061214f1166b197a7b5c253df3fb5493ba .mutt/certs/get_gmail_cert
+987c76b23e0cd86fd09b7fcd5a47fbd3af1f6d3488a161eb460e6d783b25d9c7 .mutt/certs/mk-ca-bundle.pl
+cabe6c493588868385e308c9ecb7bef8e5cfe336730a03f67a142e9009533756 .mutt/color.rc
+1fd52fb324c0060699b8bf69772d0bf6db0f26dbdc48d9330e51f6a935b1b523 .mutt/mailboxes.rc
+ae737fb7d5efa33727e0e90455b8b1501801e7521b2dc792998bf64e51b8bd28 .mutt/mailinglists.rc
+b8798f6b2d3a7638111dac4ed657198e07aed660dbf4f493852a6c996347cff4 .mutt/savehooks.rc
+97478dad63159b2b6d98d5cf8881b1e525aa61dca8852956c7b6942e3dea8dc3 .mutt/score.rc
+7ee3f04b74abb1b937886d8a10e4e1366b2d5062e27d215fa98cdf041364fc35 .muttrc
+accdd205193db1845cc97400560fb099c09b55828a7b4e8a688532496493452b .netrc
+70bad75824d1540d898d967a8246ff26ec8a5f7c181fec34e8da3ed599743f05 .notmuch-config
+d340de50e3ec19da705e1b1b45d4d709ad70fea7a8d147c89bc7872e391ecf2d .offlineimaprc
+7b0e7f6c0bd7c95d9d2504f3522fd84b74a9b3152db6f38a5f4a14e9b186086a .quiltrc-dpkg
+e657c0d12066ec0e59f768f995a50b0abdc90b8441e547f5beec40bac227d6ab .screenlayout/epsilon-SAIL.sh
+f94d4174b8ea5dd0a192e962beec2e875b582894b90c621ec17e65b03255ac38 .screenlayout/epsilon-home.sh
+effcf5f09a3a59e48e4264c246011026a49291d8b2fce000b33609fcbfa3a5b7 .screenrc
+562e14d05620e38c4ad86a32b8265b357c0c2b3bcfbf41fba300f4f81fec776e .signature
+688a08be9a46a0acee72d8166388d622062223661b7aa9234e7802f6992669ed .vim/README.csupport
+d02f22e4d3bce3f6bfb4f3c7ecf274d9cadb380f507214f08fc97593f8820393 .vim/autoload/haskellmode.vim
+adcd438a9679f5d112115a4e6f11da1ff5a026d2f966db7ef3ef74bab6af626b .vim/autoload/pythoncomplete.vim
+ffcd47161241f08f689b32afb1154e5cbf7a625c635bbf4edbe0a299ca050634 .vim/c-support/codesnippets/Makefile
+9659bf47f6a380d7a896572e2d89cecba351cc9b1e1cee75d91d778d494991ba .vim/c-support/codesnippets/Makefile.multi-target.template
+b0e8c58cf376fc7289ba7bc17fa4bae61853558885bdf8308f321e031be663d4 .vim/c-support/codesnippets/calloc_double_matrix.c
+50cb03f84ee96a281c79bd272cd5fdb9965690cad695bd83470e41aadc374c5e .vim/c-support/codesnippets/calloc_int_matrix.c
+83fd050e02fd4bf7e965a7511d2df78995c8329acfb7af6f0b3546a316ab0855 .vim/c-support/codesnippets/main.c
+ed891586e7bf04e890f48b5419bcb15967032c3a4cc830815f44c9c5062b8692 .vim/c-support/codesnippets/main.cc
+d51521f97a522d0b7c345f33a8605bfbd28f61ea49d284e6be0efdfba5753313 .vim/c-support/codesnippets/print_double_array.c.noindent
+1d78598231070c7548b6fea67e8936a81e7bde78238f8001affa1a64424809ac .vim/c-support/codesnippets/print_int_array.c.noindent
+a926149585ec7351dbd6f300e9236fa707432a1c2fdbb4b0e080cfd962e81920 .vim/c-support/doc/ChangeLog
+b15e5b498bee1a6b57c874c2990b88c418aaf9af43c35703eef8d2185b73f259 .vim/c-support/doc/c-hotkeys.pdf
+5daa2abf952d1d0f757040971be335f7ea474c278f31bdc3cb0e0ba67c8c32ab .vim/c-support/rc/customization.ctags
+11d23194efd4d91bfb371b7fc8c80c7969b26a661eb43074632bf37a5a56ba18 .vim/c-support/rc/customization.gvimrc
+3316d03d74bd1e04bfc469490f7345795b537e671da93d0f00653801e69ecd61 .vim/c-support/rc/customization.indent.pro
+d322688608e140b73d830934341f724fa5b958592e95a6b6cfcede75dd90200d .vim/c-support/rc/customization.vimrc
+09acde106a30d00d2de8d71b12dbff29eda2f71fcefe0fc61e7bd3f225f29138 .vim/c-support/scripts/wrapper.sh
+ca44bcb9ec787e71cef0767f48544744cd1a1c8c2c6c121fd1a3872c6ce0c5d4 .vim/c-support/syntax/c.vim
+81c8a07249a33b22e56851d9ba5269235b8c7760660b872d108d3e6907b7170e .vim/c-support/templates/Templates
+4aa5206c34a833062f3568f9893e417f37b0a5c08d7b9cc223ce3ca1d72f6feb .vim/c-support/templates/c.comments.template
+b4a899e9043f858aa3b1dff00e48f1ce0e0dba6de4473ebb26a2b2559a0442bc .vim/c-support/templates/c.cpp.template
+c9f1f764c1b5456ca351724703cac3367ce0690491aa5f1a50c98ed315617d9b .vim/c-support/templates/c.idioms.template
+81bc73aa07b0da8eb911165050178a4d650b9c9fc2f75e973242d0fdd6f511b5 .vim/c-support/templates/c.preprocessor.template
+49d219bc266a5131e3533334a2fb9d1c9ab5e8240f458f7122346a83752b6a50 .vim/c-support/templates/c.statements.template
+ad58773a11e0ae304f86739f27233728f359f21e4dd036f5fb378936fd8803d7 .vim/c-support/templates/cpp.comments.template
+c0d4e3863143329ec01a5b1682de96af5dc453d35221d99040f2e3c51ad5d223 .vim/c-support/templates/cpp.cpp.template
+60424ae5e54e2bc1bcd865de56dc1aba7a93907c9f045c5f9db67f8d62ef399d .vim/c-support/templates/cpp.idioms.template
+f57eb8e2faa5356c1db1df789c8bc3b0ee168f082e35772d4d41a6ef419f8a00 .vim/c-support/templates/cpp.preprocessor.template
+8fc727663b58327e78ac81717845a451afd2e2c002811397c420ae446f80b737 .vim/c-support/templates/cpp.statements.template
+113ddd3fc5be6867e28a83a06d65258b7d6a119bd3402503981a182b76670c8c .vim/c-support/wordlists/c-c++-keywords.list
+cf0c2f107c2f0b66b080ad152f3a3377caece50a219fb2814c7f694d2a7479c6 .vim/c-support/wordlists/k+r.list
+cc136dde33480b166d43889c541238e68c4becad78ed11bf63588a864e6368ff .vim/c-support/wordlists/stl_index.list
+3c8f5ee1526af065337e08795c914149e076064909b8dc9943943dce3d322591 .vim/colors/adam.vim
+007cdd64b7030e7f48e122df8433c3f417d50e1f511f215057bf603805535795 .vim/colors/adaryn.vim
+f4ab5cd8d3b386ec185e7801354435c14ac82e20f36ac6b5d03e7efef16cc486 .vim/colors/adrian.vim
+0b1c708dfef8f578186e51b0c8886bb9795f4feeb144e606069b0b122fc1cc52 .vim/colors/af.vim
+6fb9dc69c2dba1d21c37dc93ccdb383580239d55f9facd0c6851b30ea3586dd7 .vim/colors/aiseered.vim
+bc2230054c50e00910c3f3ea99dfd68a9a463183e033ebc4b99fba01c1acf765 .vim/colors/aqua.vim
+bdfd4aef0dfd6ab75cba3126f2c53abce71a06e62526f1f0d41baf8e75780599 .vim/colors/astronaut.vim
+2e935177088ee6aee24972a9c35706e7a71dbf82754589b0aaffbcd22a87f51c .vim/colors/asu1dark.vim
+846ba14e60e955e96bd23580b1590e0b78026846a5b5dd2980c518fb81dd0c4f .vim/colors/automation.vim
+b23c6a2d5cb629a78190296bbf0a2414ccade13bcae39a85b00bf4563a5813ff .vim/colors/autumn.vim
+b23c6a2d5cb629a78190296bbf0a2414ccade13bcae39a85b00bf4563a5813ff .vim/colors/autumn2.vim
+ef321731269d0757e6d3cab8fe66b6a7a89da4110e9a455d0fda909c29cf53a6 .vim/colors/autumnleaf.vim
+10f838fd24f366783b5a4ea0f42610cd95df144a24c23db8589b005b1ae99ef5 .vim/colors/billw.vim
+99bd81584b8d5cefb0cff06ccdf6d0f19e47bdd29a0f9373322c1def67c87259 .vim/colors/biogoo.vim
+8174f4e8ac747880db656db47ec02aff9b27be534c6739c6dfb9d028c754838a .vim/colors/black_angus.vim
+ac5d7ec952e8f763c5814d8ae08f7252622457cc58113a3a5db794568746b8c5 .vim/colors/blackbeauty.vim
+813379657b06ce2906cb14232716580a92c595143bdf5214350f0fec581e7f42 .vim/colors/blackdust.vim
+e08eb7c30322c59b032ee0dbddba42161e563c8cf48d647f9993268dcb29891a .vim/colors/blacksea.vim
+0306429a227b0cef0384a05e076694ac4deb33833dd15cac4ec475d07b44adda .vim/colors/blue.vim
+93824b6282b11b86754d2b9ad5f346ec36f012c36f72e4db8c93e89f8017ddd2 .vim/colors/bluegreen.vim
+4dbad855a6365cd6441b26d8f9858f65a812d6b4c5e8392216ed8a225d11c32f .vim/colors/blugrine.vim
+636c2e8588e1ba2bf86622155a5b7ac6c9e165b857dcc80e7ad6378e5e46ffe8 .vim/colors/bmichaelsen.vim
+145af35e17070a93a16303ceea0c6440f41e031c1a04b6e66c1630727bec18d3 .vim/colors/bog.vim
+2baf3987bfb7f6880f50b58057bb379dc5dc800b31eda6b4cf9fe5e62834dc09 .vim/colors/borland.vim
+3bae4032004168352ec619ac1c345d2c3bc8c9fa12e71923ebc53cd6f25e118c .vim/colors/breeze.vim
+b38d9e630536d26961c49a74d50ad30db4c214b2a4df7e847cab559190f911b8 .vim/colors/brookstream.vim
+5a006912786f1c299ad255899b66bf2355c92613efd6ecf0f611f07a0e20b018 .vim/colors/brown.vim
+ad5c429db36cb1b3a3492adea6d9598a76147adc355e0ce9a479a2ed658aaa0d .vim/colors/buttercream.vim
+ff3316d03d72b23d92410569b88f2f901ecdf320c292dff10a4f37bcfa790bbf .vim/colors/bw.vim
+5a393a81d97857f44fa8b89f098fd699f2c06ba09665f2c1ce0eda07a9213a37 .vim/colors/c.vim
+46dc45fecf5af24ceedf1571d511259146da0f647ad9ab4e31d8ad3ff12daeee .vim/colors/camo.vim
+1efe5f366ba21fa0e96422f7f856ce226e9c2d4420a5bbe9109920bdc0ef6767 .vim/colors/campfire.vim
+3431998da7a20073186525f3577542691b2d52f19c68be3c154f26f5de54c7d6 .vim/colors/candy.vim
+c6bfe906b401f30f4a68ac20b6d680291571163a55aadb58b82157ca6ed138d2 .vim/colors/caramel.vim
+601349900c5a14be0f75cebab7da44b5328eb8172c50a019b93ceda41c099d78 .vim/colors/chela_light.vim
+05bb744a803ec6bfe34e8cbdc784548287eee9a0263c3edcaeb8424127572b67 .vim/colors/chocolateliquor.vim
+7fe3910beb436ec310ae8caf6fc8ed50d70f9ee499d463071f6d90c8c5a2f27a .vim/colors/cleanphp.vim
+d5f039cd40d38050dcc96f2a74c7e96f41cab69ef20b83598fe4ce18d6059e35 .vim/colors/coffee.vim
+26f6c3e924171b4fdf99b13d0e122e88dd322adbc6436ed65ed812d422071534 .vim/colors/colorer.vim
+d51c2c14ed4ef4d91085b4d865ef8415f80a7113bb507f4d208d5dcf5dc01a07 .vim/colors/cool.vim
+54e6912922b9100965e8ef4ad3ff54678992495c63c0c5b2a9b424ff953d0aeb .vim/colors/dante.vim
+b3e0e5207f8d2af716a13427a3edf91ce9e5b088fb723bea62722030e5943c60 .vim/colors/darkblack.vim
+d7e92310563949db32a90ca8da923a51db95eecf665b6e4f0a049b0bc4aa36b5 .vim/colors/darkblue2.vim
+8619cd0577d01887f393d0cbd1550c5e5fbe5811d62b5de4b9a4c8c3df0cae3e .vim/colors/darkdot.vim
+817fb128e635acab1ab952a17148c26aee9f082c5ebe16a054c3a9a02d322c52 .vim/colors/darkocean.vim
+e59fb3eeb721e2c414789d3d0c131ed0ae7abcaa47b6f5a383500f7f91a2e201 .vim/colors/darkslategray.vim
+0ba13cb4343c2bda3e38686d295c19f9da58e4a80c26a4ca7e94fc06a2831013 .vim/colors/dawn.vim
+d56f663285e3e4a1088e831e698065ab44eff51cb5889b4b687fc13c64ee1932 .vim/colors/delek.vim
+53823a032412902107ebc9e1384c4c67ed6230fda760f78187a381268f32ba14 .vim/colors/denim.vim
+076f2d3088eefc4a455c9aa5e1dba07181032fcfe155e23fbea80f20dc69ac15 .vim/colors/desert.vim
+c175ce34ef2a3ab99102fa4361c817d6288cfaaa7ddc93291a3564c957766f1b .vim/colors/dusk.vim
+11717acb76d12b64d81454988db07d622e416564d37a6bec17925d1b3f3cc1dd .vim/colors/earth.vim
+84d70456281203190eab0378b39de8b592593a51f486e170706504ffce2f85a3 .vim/colors/edo_sea.vim
+aa76d00677c394219ab56fb05ca3fb54d115954ad0a5d4d33d11e6c75e24e9f8 .vim/colors/emacs.vim
+6e30744674654e7225aee07c19bb2e2fee9ed74af21a1e446bb8f1d2033e2214 .vim/colors/fine_blue.vim
+8850fb7c73bff339fc4f9a4fe97a7a3313484c6fc167f940485f7965d06d4c8f .vim/colors/fnaqevan.vim
+980f7e08e75ee107fefcdd9e82cd2b8c86b42834e8c6ebf5a3368dae9d5d1a79 .vim/colors/fog.vim
+221c9211caad3ecf763f626584f3b12808dc7479d63268c056d56b4f8dd52e9a .vim/colors/fruit.vim
+5b38ce261187aed499a3499440e2cdc7aab28f753e21019f5e36bc56db03f376 .vim/colors/gobo.vim
+a8cdc5fe53d11d298979b37b27edc6a216d4bb538ec742e1ec1b474b272f7ac5 .vim/colors/golden.vim
+03d9bc2d1ddb590b7c0e363dc9ace3a9587948ac8f919c7cd2083220d040f422 .vim/colors/gor.vim
+c9324ec261ccc592f4f8950b64e51e25301d5c0e9e5e7d23712461506a21bcb9 .vim/colors/gothic.vim
+da8b4b48ad26a45ebac812c08fa19ccbfa43335f8bf0bd0ba4204aa56dbb5f98 .vim/colors/greyblue.vim
+e05740ba2de97588c42ecd924be303893c7faaa8a293e7094717aedad3e5a876 .vim/colors/hhazure.vim
+d4fce4a1e23801ba2211cc4c6b2fd7979fe94fb7d90f2bcccf8c4e734ba893cd .vim/colors/hhdblue.vim
+cd85e087c1a94b6df623263c960df1bd1797efdeb3488cb76ec4c4f6beed39a9 .vim/colors/hhdcyan.vim
+d1648b75f1411b3a540e4b5f6ba0a7479b240bfd49f787d725b29179d132f79a .vim/colors/hhdgray.vim
+27cb37a6c1dca7abfc39e8ac6a3decc62a422c30ac8d02f919ef2ca130932d92 .vim/colors/hhdgreen.vim
+2de1ce4ef6f9ea5fc1e6185f21d5912ceacba4c00ddd9db75108d558359804ac .vim/colors/hhdmagenta.vim
+0e85b435dbc6ff83a1107220a198383daeb6a88f55392c0e68cdfc5d1ce03f48 .vim/colors/hhdred.vim
+78b8fa0a70f6e11cad8a666620ce303ed1e5b47c5fd1d43610583191ce90f09b .vim/colors/hhdyellow.vim
+ba7a6f4b9dccde11b9d69958942c317b49b132106352fb09c2eafec6f854c9e1 .vim/colors/hhorange.vim
+408a8edf23c7cadc4a621c460d969c1fea387f6fc2b91c9ea888eb4e22ea6621 .vim/colors/hhpink.vim
+c29cd8103153f0b9426080000e1fec18a0af0ed41a376ab760c71f13a0fc784e .vim/colors/hhspring.vim
+4c54de58d69d3a783aedac01c5cc6a1df55b82bf4462f07f162ca2435ed2d3d1 .vim/colors/hhteal.vim
+db94d565ede9c1ac89113f33036f2fe1bd618dbd655ba677193cd03bf9d1d030 .vim/colors/hhviolet.vim
+72b81dcbe93ff26032185685ae622e6c7a87e07e10259c551a9114789bec29ed .vim/colors/ibmedit.vim
+e97ab65da8ebb8b82af881899d05fc64090681f6ae648bb9b13dfeb02407cfce .vim/colors/inkpot.vim
+c16c0325b4b8467fd15b47f040bb32739fa2ae93d89250b2b2fca2a87f8c1be2 .vim/colors/ironman.vim
+47277b5744ffdbe419758b7e192913c267ca44cae41211b4ab263b1e99e01b7a .vim/colors/jhdark.vim
+1646b75eb782ee130c59506cec5e6b8cdc8e6bf563f30db6ea612f88eafef557 .vim/colors/jhlight.vim
+fd3343c9846f19ee3b9be1085fa4ead8a54109dbd3fe847a2cc25cd2aaeede13 .vim/colors/less.vim
+426400af1be0147a978ae0b706a1475ed38962f8b5276703f648d083e88bee5a .vim/colors/lilac.vim
+143c0413c039caa9cc1e15a2beec853e7a593e44c699cd055b2c178e7f5f28c0 .vim/colors/lingodirector.vim
+9d1eb378c6ae24064327db2dab9baa5335d67b63a9434bace1cf128790d9bc49 .vim/colors/manxome.vim
+816b145585a0e9c77efbbe72e5cb2877654afb68324a8676e0a80c84e7b07b14 .vim/colors/mars.vim
+1c215c5c53ecf32c18defd9f7d02bdabae802dd63d23329f9d4439a5dbf1f38d .vim/colors/matrix.vim
+7c6aaa4d66364c2dba3a314bb7e4f7dfb2e3bd6057ea845e262439732f65f9b8 .vim/colors/metacosm.vim
+5f6226674582ee1fc512f28afffadff43f59649cb2fa641675089eafdfd312eb .vim/colors/midnight.vim
+eab18dfd6296b0731454f6334de15dffb120ab3f9f8967266eab42daf96b7e54 .vim/colors/midnight2.vim
+bdc224abdb1df16907a4c2b9ca98145637b2c9564ff9161de8060732816847e4 .vim/colors/mod_tcsoft.vim
+f727f5b7bd21502f91a48dbcea49d9616655b3a7b292ac468ecfe80dfb2c7727 .vim/colors/navajo-night.vim
+75a72880cec2c995c7c48167554d5ed644aaa83aecfcba6426d1262ee36250af .vim/colors/navajo.vim
+9fe93c919509cfb981efa4e4af56f49c9af5b0196ba5c4a78a0ebdd04a3536bd .vim/colors/nedit.vim
+6cc6c8297ddbb93e47ccfbfaae162eb3bb8dbe9f1500e7eae1760b5659578975 .vim/colors/nedit2.vim
+476233899b982b12bbf1f52b0e265dc52f15332e0a3c2c5f933c53d5103b5e78 .vim/colors/neon.vim
+4c44e19e1a018d3cfc04a2d9cdb4a395c5d23280f5c89cb9a360821d64809f7e .vim/colors/night.vim
+b89fe4e75f06ce37ea8d6da19fb1ce532e82e26e11619a56d33ed65d33b3edee .vim/colors/nightshimmer.vim
+d0a6c04b66b98088aef745eccb276a6c5750bf37f88fce5bda9cdfe4b9d0d6a7 .vim/colors/nightwish.vim
+b17fde5a36702b677d221570c652ca119d04cd9478b1064cd2a078b4469db5d9 .vim/colors/northsky.vim
+e9870c3c5c2c4da5f680c36ceddd05f2c6c4f30618942800918fcac77c3ff994 .vim/colors/nuvola.vim
+1ea32a03a3ff91c35624397be39f22cf8026cc21948eba84be820240f30cf009 .vim/colors/oceanblack.vim
+8c2f6c976261b0e26f6d036dbc3a2385e4fb6688e1777b551b511e85aaff389a .vim/colors/oceandeep.vim
+161e031a656f9d5b3e02d185c77d239b09ab023404a2b5721a0f4edb0739c33d .vim/colors/oceanlight.vim
+d95f479bd542a4ff0b9e68eba607ee79dd78769e94993f1a26ba7c3a366514a0 .vim/colors/olive.vim
+9d1ef97c6459b4ee663152c105dd4865ed6b9dc73959f395c8b1c959cbf99e3e .vim/colors/papayawhip.vim
+2e4b7a797f0362e30a2f6ea6643944740a7c45883a9f0262d0c1ced684b8465e .vim/colors/potts.vim
+8d83f204cbc4dedb045ae99d4c625fd2ab85987e18f1c3e6daf612bfc169060b .vim/colors/print_bw.vim
+a41b54648272ac07ae859fe20649be8fec51355b94b4d870c8b87dac06a0f2fd .vim/colors/ps_color.vim
+0ed84d09ca4e3e6e5a807bd6e6180242403eb4c502652b20171b60ec78108c1c .vim/colors/putty.vim
+1676e4de474abf8dfcea44354b02627b1484b13b9c51c42a203b9c09ef986a0d .vim/colors/python.vim
+fb39bdc485bcfd710a68846eae55baf5f07dc1bf723f90ec8e00f8990a15b9ca .vim/colors/redblack.vim
+9ad83b235bff978758b0d29aae7ab7f892b9ab8e24a22799206e4b594ec7eb49 .vim/colors/relaxedgreen.vim
+554e91ad3cac301027a84c12af33d412bf42c6883b7117855e75927dc908ec9e .vim/colors/reloaded.vim
+93b1b8aac3a2bad2c87d6b4f45b5014d93ac1a020d98b2da75f3a299426db25d .vim/colors/revolutions.vim
+88e7e2c32041606f88c528d68f26bb4ef45730371595ab4ff03eb63cdf205892 .vim/colors/robinhood.vim
+d389e4b5f90e77a9a6123271c5ad6eeb1548492257de7eea6588e69ada64bcdf .vim/colors/sand.vim
+5b628255e44301bf75d4ecd09d424ff9b04b3663adfcba43bdcaf82ff924c4e1 .vim/colors/scite.vim
+2a15faf3e21a6bc4c9ee57ffd7d8e54a366985283599721fa43a73af3ae76594 .vim/colors/sea.vim
+c149a0ff58592f1533082637b88738386203c1b1a18fdaca4f9a314c12684668 .vim/colors/sean.vim
+70c1551d14ab171daa20a7a066e5d47cf6b4e6cb7ab9e3b0672bea696a015b3c .vim/colors/seashell.vim
+79edb2e6cf35a33954388a1e5891319ee4199c367498e5ea8834da1e4d6d97c3 .vim/colors/sf.vim
+38dfc4f7b2cff4be6d488eaa8050253e149bb6bae9dec3d9bff0321e3198aadc .vim/colors/simpleandfriendly.vim
+aec296eb13ab643028c4ff714e836f1eb72ef2ebb5821b39c73779e8f0b97aab .vim/colors/taqua.vim
+46dbb62ce55e2c2db3d909833fec27b8ace3e83ec728ab0ba0698ccab9cf8ddb .vim/colors/tcsoft.vim
+2064b98fa22790f0c482759ece74312b495b33b24b19aa6e4be834601b0ad938 .vim/colors/tibet.vim
+c112242d35e401a400411690100fc02682f3d4613d3d65656bc35f021988d068 .vim/colors/tolerable.vim
+60f639c3899ca5598ecbce194d3fab929edec72c198a3b237191b43e998b1a85 .vim/colors/tomatosoup.vim
+87ac82ec2aa8085e038b3c81df613ba62db2f1a4192daba1ff0e7020ab5cfa07 .vim/colors/toothpik.vim
+24320526705615a3f3703998ac41a06e5f1eeb12cbbb1690f72ea1e815e5d89e .vim/colors/torte.vim
+409e9917436a3229d4e2d03d9aa6948c9e1aca263a80079430642169c65d4c8a .vim/colors/transparent.vim
+2a7258f76b7bb423e4766fa097a2ca4004379a17a4be2fb3a6beb8d4127540ad .vim/colors/turbo.vim
+54283dfe7e4ba20dbf55730bb8612f167e1333cce1d0c8ecc6ce2a3fb2a41601 .vim/colors/umber-green.vim
+3de84011ac0fd712d76724f9fcd7dc805bcecd52a40e97a7585c57e22a38a570 .vim/colors/vc.vim
+f771cd19481332fe4c6fb2ebe9559842d62adb17c0a9bdeaa877ebbdf11b5a11 .vim/colors/vcbc.vim
+10832d5d679a88cf900d926c9829bdb81f0153f2e0c4507b7184306811305a07 .vim/colors/white.vim
+bca5d4a259ad0ef77e3f1ab630c8ef71edafe4373ac8f78a763a55689402117f .vim/colors/whitedust.vim
+50692743f6deabb88033c972694a78cc7f8a1a4da8fce5ed2b8fbfc9c1ff794b .vim/colors/wintersday.vim
+0179135646935064854143e3e1963c7d643ed25561a29812ccf68503ffc26f9e .vim/colors/wombat.vim
+43fb2188d1d0d13f217e5516ad3474ff348da1cfc3551927ef4f72e643325b37 .vim/colors/xemacs.vim
+0c47a225ba751cd79220de7914d4304524960c53f5d41ff0026253cb7737e8a4 .vim/colors/xian.vim
+f25667653ab00307bc9d5673694663b7cedc125d82c6cd7322873e5acba60d57 .vim/colors/zenburn.vim
+6538e1ac0318c2edce168860d730725c8e58db49d2d6f190dbc8972ec116a7d7 .vim/compiler/ghc.vim
+137e387e18080514cbc1916075f0c654ca76701386b4f31e39e9fb57476e7eea .vim/compiler/tex.vim
+65b124c12b11ee6f1992fd660060c42b1848b91470533e8929a0b65b0dfb6878 .vim/doc/csupport.txt
+fb5ce477f6c3e9b85800fd8de2be81b9d0cc436f24970c14304aa66f80d6666e .vim/doc/haskellmode.txt
+67e4b89a962102f5f1e1920ea732d8868a0d18e8c824103c8fdbbb0eef31b55a .vim/doc/imaps.txt
+663016dfecc1a0b3bae2aab4b2b8172e05c742404943e7981b24582d2d4d6f7d .vim/doc/latex-suite-quickstart.txt
+0f91c9295dad36fc944e048234a7ba43b0b38a588aa1f9fc44a12911c219cf52 .vim/doc/latex-suite.txt
+d53433220f6e0c2c3104fa3773790f9418b6d6f45cde9924faf697c91373b01a .vim/doc/latexhelp.txt
+6785f6e5134a1b7b9b7531bafb14c84462264d1a961a61e9d84dd20a6f6b7a31 .vim/doc/ps_color.txt
+0653be352445428b3af6e5bee3385aded524c470618522daae652864bd0c4105 .vim/doc/taglist.txt
+63a4a70348480c68dd60cc5d8ebbfc8ed0230ef14560dbb42c7a5a5429575efb .vim/doc/tags
+47e74fc900733ceb109d139dae9770ce82f84e7952f5d74d24339d16e1200bbe .vim/filetype.vim
+77377136e18b472ab56f8b339e98b4df53e64dcd0068f6827e55cc1ed6b8f3ad .vim/ftplugin/bib_latexSuite.vim
+2918e4e0924c1b24042fc15b3d870e9a8daf7f9f1ae125873ac47bc52d121b09 .vim/ftplugin/c.vim
+ff65f984c7fe886959a3a88941e9eb4fb2c2dff8610ad969238d06e98ac516e3 .vim/ftplugin/cpp.vim
+2e14c7289aefd302f2d328efbe4370bc2fd7d4a33821d37ec4d9b142a60f5b5f .vim/ftplugin/gpg.vim
+cb4f576b6745a3d2f64d2912e0e9bb5e73b13dbd719eb99ef31c378aa3dd71f4 .vim/ftplugin/haskell.vim
+c1eb34f90cea112f645622a9d8194de86969caa0807065b9f077a32ed0225623 .vim/ftplugin/haskell_doc.vim
+c0e50ddccc30b6ef24e14e4a43e72dc8b4967887fdad8ead75802fcdccfe500d .vim/ftplugin/haskell_hpaste.vim
+13a7382790dfb980b888e45bac159021821d6c628d93a3c7c2ddd423e73d4002 .vim/ftplugin/latex-suite/bibtex.vim
+b64ed475a33534fdd24e7c74957d160506608e69258f9685d91468ff228a6788 .vim/ftplugin/latex-suite/bibtools.py
+b0501a351c5aa60ede2db6cfb0e84cb47fe1a7d56887d22b3c1ce61b934adbf9 .vim/ftplugin/latex-suite/bibtools.pyc
+b486556b7152ebc8bd8149d0b4014cbc58f7dfd95bcef0ce0f838805de5e20e5 .vim/ftplugin/latex-suite/brackets.vim
+0c28d3da048a8620e2eebdc24c7358f25a73bb8da0e26dd13931b370db99da9d .vim/ftplugin/latex-suite/compiler.vim
+ac40c901efc20beac985a4353abcc6f228764ce17895e7a763d3220a3ffd0157 .vim/ftplugin/latex-suite/custommacros.vim
+56a11236635aa7553f624a5268d302d1b7be81ec8eabd65c844e6a523c62a202 .vim/ftplugin/latex-suite/diacritics.vim
+0303e0caf67ebed412b01141f816a3ecf2cc50f9d3d52a7b4c9fc8461ba7b221 .vim/ftplugin/latex-suite/dictionaries/SIunits
+29c4cd6543fc9329730acf952b5588796e871a1b6ceae41c308b8048dc709139 .vim/ftplugin/latex-suite/dictionaries/dictionary
+8d7a24bd981033ea60067af93db0c17a360d0c6c3d1fd11fd16464763d18aadb .vim/ftplugin/latex-suite/elementmacros.vim
+be8cd5b00ad143205fbd0471c05072903a095dd99de48c56faa7f500b3c47f73 .vim/ftplugin/latex-suite/envmacros.vim
+991c343b44af2fd3dd6e674f14bf1f0416c49071e348a0249421a86d715f39c4 .vim/ftplugin/latex-suite/folding.vim
+80c998b0fe826036ebd785df8e2e7626644eb22de9bdca10bb3ae16a431c1c02 .vim/ftplugin/latex-suite/macros/example
+dde7b079c826818490d03b038043ef29424d8ab3dd9111cca516ccc70e25527b .vim/ftplugin/latex-suite/main.vim
+dcc59317c0cd33cbcf0ca0d4f0b5a16e2f15eb7d30cde45b4037813bde5910a4 .vim/ftplugin/latex-suite/mathmacros-utf.vim
+58cb8ad51a1653985430aa169a2a8a3543bc1d910901bf6e139053b89b59b1ca .vim/ftplugin/latex-suite/mathmacros.vim
+c03a306335df27b0409919426324884aa4e3d8439292be502a0f73cbf6eb1622 .vim/ftplugin/latex-suite/multicompile.vim
+6ffe27b429733e0decdb8588f0d601aeeafaa1200db306b91dc37bdf71f507b4 .vim/ftplugin/latex-suite/outline.py
+9abcfbfe18bd48f96ec428fd9d57f3ffc0580b2c55dbf836e796a7a5965f6c25 .vim/ftplugin/latex-suite/outline.pyc
+7fc447839ea2673407b38342264eeb7f92b3a507f39c04765ddf4bbfe3f0184a .vim/ftplugin/latex-suite/packages.vim
+637f43ca476c0ab881bbffc470192c06a4db460a3729b36450e35225cb0fdb61 .vim/ftplugin/latex-suite/packages/SIunits
+79b5d936427686fce739c6659d20cd78743156d7c350f528bc0162722432d752 .vim/ftplugin/latex-suite/packages/accents
+1c4a0003afb36b4a21bc1bf19474fdabda5720d60a05b34bf328ff40978e6938 .vim/ftplugin/latex-suite/packages/acromake
+677547aa46abd78676b8628231279a5af5702b998e88af8fc218659942365f83 .vim/ftplugin/latex-suite/packages/afterpage
+cbd725d8d8a51a9b9116e7672cc616582cb9590d55f9ac4963a1568e11e05f42 .vim/ftplugin/latex-suite/packages/alltt
+d793b666db6ab5fa5e74447916449099785a7cba1ae60ddfdb0a7390f5a6335a .vim/ftplugin/latex-suite/packages/amsmath
+f0dabc4cf5a379c7d6ddf77f546c2b0db81d4d397f4a2419bdcf83cc418fd5ec .vim/ftplugin/latex-suite/packages/amsthm
+c83d0ef2613827c7c1fa8c49544590df65fe6fdbd2f9a7d544f4f05af6dd1360 .vim/ftplugin/latex-suite/packages/amsxtra
+d5777756b44e9d9aa3eb1cb1d3d1fabf70257c5ca62b41639abaaf8b2c05e2c0 .vim/ftplugin/latex-suite/packages/arabic
+56966eabe19363eed5811d55a14bf76fbf4622e95231531bd5e60a88813ee840 .vim/ftplugin/latex-suite/packages/array
+a92dfe8b038214a314c65dfd7d165862a57247da902d568714ae7a6833550e78 .vim/ftplugin/latex-suite/packages/babel
+5b0c5a9e4634b177d6a131bfca7ba5c1c3c6a5852fecc4507196a5452517ced7 .vim/ftplugin/latex-suite/packages/bar
+689ae0f01b7eb559654ef8f2137b7c56782924e39c0446b1b115abc6e24b1eaa .vim/ftplugin/latex-suite/packages/bm
+1781730c037ee48d6c345186c708345391579d528a32096771290462f471e283 .vim/ftplugin/latex-suite/packages/bophook
+3b2923f04a00ddcd922ccb2f20c1f1824c3837e5c18b1ea72d0a246ce95d867d .vim/ftplugin/latex-suite/packages/boxedminipage
+6b4a6392d4b3a9620449731d61c9deb4afafe699d27b1e9e675f0fe092a43bed .vim/ftplugin/latex-suite/packages/caption2
+9c9cdc0bba178e7108fb3c6813b818f1b99532915bbb126bbc959cb23050590e .vim/ftplugin/latex-suite/packages/cases
+b11d2ddce202814a44dcca9e0df5ea720c18ec153169ff73bfd9dbd439c57a55 .vim/ftplugin/latex-suite/packages/ccaption
+1ec2263d88816985656f2f7c7bd76b56d659172b22d9a097950101342564078c .vim/ftplugin/latex-suite/packages/changebar
+949c5f8b7e3b3535a67e1609e0e92dd40a1fb1520fb7399f388a2b76888eaa34 .vim/ftplugin/latex-suite/packages/chapterbib
+f5e59b969b99d5feaebc4b01989b303250ffa0f4b924e26e500f58f0649454f1 .vim/ftplugin/latex-suite/packages/cite
+e4b8a86ac0af9889bb56403d76654e80647080726c76dc4aeb3b4df8edb7857f .vim/ftplugin/latex-suite/packages/color
+8db7495dab6092a9469f98f7699e43afbf9c8b8fc8646bce15f8582ae9a950e9 .vim/ftplugin/latex-suite/packages/comma
+7b231be487121de250b4439d7e9b9415fbb3708077a83af19dc13a0ff546812d .vim/ftplugin/latex-suite/packages/deleq
+20a796b233c6da5bd12e4cb97f169a7414cc19310d947059e0437724793f9f5b .vim/ftplugin/latex-suite/packages/drftcite
+1102b1030c00d8302da77c8733cfd84705900a87b07594df63c58b4b4bfc46fc .vim/ftplugin/latex-suite/packages/dropping
+5f97d74c74e63d2b35c4cf940e8a1ee5d4642427ed234c03e00a70afe717e506 .vim/ftplugin/latex-suite/packages/enumerate
+8739389ff44008b790fac0d7b1aa51f3c797abdace31ee8f4b351333313f15b1 .vim/ftplugin/latex-suite/packages/eqlist
+03d3bb9343d2752220b6f822922292c3435313c15d790c6965b5981b24549244 .vim/ftplugin/latex-suite/packages/eqparbox
+e5fdfcc6227148e466a2c8bf7c84da229b9a0a09ec944c2f0afd2c84529f84a5 .vim/ftplugin/latex-suite/packages/everyshi
+30c54f5da1f34586817e87b707e6c362fb44b1eaf788c7553a91e8f515be9f70 .vim/ftplugin/latex-suite/packages/exmpl
+8c6ca6460159895cec39490762f7d548574896caf5bef1a1a06cfedf05f8dbb0 .vim/ftplugin/latex-suite/packages/flafter
+01460ce9ae75275d9c8e6339ccd11ec761ea9cbc73db0bc17f7aefa242417a81 .vim/ftplugin/latex-suite/packages/float
+475a88962478c3c432c1854a0856dc25027c1ee4501e897ef85a8d217d22220b .vim/ftplugin/latex-suite/packages/floatflt
+2dbadaf429d8c5667f42e957764ef88caa369330115b08824528839615891b3c .vim/ftplugin/latex-suite/packages/fn2end
+14b5350fa477327f379f201fd213579c88143b58f0f88b5f65714c6039c1aef3 .vim/ftplugin/latex-suite/packages/footmisc
+ad744d9d4b98c12823502376b73c0a3290d6b60d988d1a7fc5c9a2b5278dbaa4 .vim/ftplugin/latex-suite/packages/geometry
+b88ac941ae70b41da457e90267b691355097bf7273f22327f030bb8175b6df54 .vim/ftplugin/latex-suite/packages/german
+5f5b35a7add70eb2d21da9aa3525103438449619d8660b4ad002968fefce1903 .vim/ftplugin/latex-suite/packages/graphicx
+e0cbfce47a71e14a60150385979be04dc408c0ca461bc6cbbe46a135896431a2 .vim/ftplugin/latex-suite/packages/graphpap
+c691f2702cc20bd867397472b75467bb0726023cde5500868605af178edacdf3 .vim/ftplugin/latex-suite/packages/harpoon
+42a7884154d85c608bdd6ed6ba34a8ae48c8760836161470c857350c216fb592 .vim/ftplugin/latex-suite/packages/hhline
+6a9b1ea90db1d7283e42a09ad116606c0c0dc52d034e0e000a0f88c1e574164f .vim/ftplugin/latex-suite/packages/histogram
+0b8d4ea01f69ced3aec3bb6cb27e3af2311108abaa22e4ce7c14ab893ead9d32 .vim/ftplugin/latex-suite/packages/hyperref
+9b64824cb4f2ffd657528e107736b2bd225ebfce8e76fde96de69287c9c0c615 .vim/ftplugin/latex-suite/packages/ifthen
+1bbbf78fdf0b0cac5bbf4091c5c15c1b0c879a4018dc5224706f75de63c32d7a .vim/ftplugin/latex-suite/packages/inputenc
+1fa03c1f50d572df15041cc2dfb266b5cf76441b80a8fca48d9a7bacb3160196 .vim/ftplugin/latex-suite/packages/letterspace
+17036bc205e10126f837cac209f2505655922214b3cbf55bf1e99bec23d7ce8f .vim/ftplugin/latex-suite/packages/lineno
+8148df41c3587ec7f3bf015a7cb015f8517a4b4932df1c12663de2a4b92e792d .vim/ftplugin/latex-suite/packages/longtable
+cb2a3cf24a43596ec4b532410c77140428be629dfa75301a0b97635b981d4d8b .vim/ftplugin/latex-suite/packages/lscape
+66bc43c8cbeca3dc0c9e4c29e07a83ab244d4a21c5ec6b6675e71d737e3db519 .vim/ftplugin/latex-suite/packages/manyfoot
+9d7da9448de39210383ffc97589a7ec2aeb655418d5dc19cd26506ce6039cbfb .vim/ftplugin/latex-suite/packages/moreverb
+c78c796434d229f68c02c08443f3575a9a0e31d0c3aa82d4191d2d762208cc00 .vim/ftplugin/latex-suite/packages/multibox
+a03f52580fe3c2418edbdb7015b01786d1bb5e00dbabac056e2b5380405d5673 .vim/ftplugin/latex-suite/packages/multicol
+5ffed693af469a0a12db90456edf4883b722ecf9ae839aa14f025464b03ea4b7 .vim/ftplugin/latex-suite/packages/newalg
+ff02c7cd8f23c1c5a157c9766d7210ed715935d258e8ed7a63ed7dd0d2c3a0ff .vim/ftplugin/latex-suite/packages/ngerman
+599b20a5bb5fbcb34362e160deb05d1f751bb6c44a7c53157bea8129bb120a1d .vim/ftplugin/latex-suite/packages/numprint
+9461616aaf1d687fc9b92fe262be97d24c7c7b0ea47cc274d1817b334567ecdf .vim/ftplugin/latex-suite/packages/oldstyle
+b6dc4b47fc27e0537ef018c123b43c0f2176811d5a4260134b9c435dfc260d16 .vim/ftplugin/latex-suite/packages/outliner
+5b6241534e75a08551459bf9122c8cfae865a1e809e144a118e49994f5c2ef58 .vim/ftplugin/latex-suite/packages/overcite
+5ffaa53f24952823d332c722ec8706bb3b0d9e0d5668ece1e87dcec286d12613 .vim/ftplugin/latex-suite/packages/parallel
+32bdeb182ffb96a89082eff3446eca3b1f3a0bf9a444fc5b70014712cf17c948 .vim/ftplugin/latex-suite/packages/plain
+c422d092c619e150a4e1f9bca7701fa3a7d9f8bb13116895ef9455cabd616016 .vim/ftplugin/latex-suite/packages/plates
+9dc3fd6ce87315eed1a7a01ad36f65a36d27987bf5fbc1b855398d46d630b53c .vim/ftplugin/latex-suite/packages/polski
+0c33007de67eb2aeef6e24309583ebb980a4b3986e558b7d5c4a0116410d452d .vim/ftplugin/latex-suite/packages/psgo
+63e7ae9605ecb97b952fdbfd9ae7faae4d8ccb6c25ba65349999c809ddd50435 .vim/ftplugin/latex-suite/packages/schedule
+d629673098a1272f1e39e8618d2d20f27047530e6cd7fc92b63791b9d0103d9a .vim/ftplugin/latex-suite/packages/textfit
+f695b28473641b2b00202dc6f37a5f68503d72b6dbc52a07984be2ac1a06448e .vim/ftplugin/latex-suite/packages/times
+172238c73b7d38bc69a265e15299ca70d4e030d072750afbd90bffee89e0b655 .vim/ftplugin/latex-suite/packages/tipa
+3e825c4158b9136bb2f2d2b2fddc61238e65414f3b6355fef0515d6aeda0472e .vim/ftplugin/latex-suite/packages/ulem
+49381c8def7fefdc9c6a34071535c40344bb01eab1e1f1b24b1286b80fa84277 .vim/ftplugin/latex-suite/packages/url
+8c955c40a951f890e977fcc17c8d7ac30845f4681e89fa0c732ceb2e83718b91 .vim/ftplugin/latex-suite/packages/verbatim
+69f562079de2dda57e08da01f4142385be3c781ec22ebc5ad1341c858093f7c8 .vim/ftplugin/latex-suite/packages/version
+aef6b43f56fe585481d77bec56b73634b30d46b8bd7ee76c0dcca5ff2b0815f2 .vim/ftplugin/latex-suite/projecttemplate.vim
+41293688185a7065cc1ded9c3a7c5b7c4e2ab15b35d2ec97b7f9dce76614af31 .vim/ftplugin/latex-suite/pytools.py
+6a5d1f08d75b9f5d0124912e741afc040ccdc19f45c599cdf87842fa65173560 .vim/ftplugin/latex-suite/smartspace.vim
+c28b5749879eab5793eca631874b65b212f86b676797230fa7176b34b803c937 .vim/ftplugin/latex-suite/templates.vim
+f4979a671d21f76e513f507098a3f14f62f3970de4aa90e8f8eda79446dba994 .vim/ftplugin/latex-suite/templates/IEEEtran.tex
+c3137fd5cd7f72e0cfa8aa4dac1c4bfa10c96c5eb3753f479e92fa7ee7b4a8c7 .vim/ftplugin/latex-suite/templates/article.tex
+e7b755b9d7382e01fafb3573928248ec55d1c2f05359e08ca03f46b573f222e5 .vim/ftplugin/latex-suite/templates/report.tex
+9cec5283cccaf9bfc4961187f2c3acd3918d83f0ada02e9e5a236f5f29616f81 .vim/ftplugin/latex-suite/templates/report_two_column.tex
+7c4bca820c758595ff4db5748527a64ddcdb8f71e5480d93f012fec5a254cc66 .vim/ftplugin/latex-suite/texmenuconf.vim
+77095ee2a6e4e597a4fc073adea6a713de980ca5f7ea6274d0724b76a13fe760 .vim/ftplugin/latex-suite/texproject.vim
+7c71ef72a35851f6d4a71e97471f8f9bb4df225a1f0882701f011269d0e78062 .vim/ftplugin/latex-suite/texrc
+978d9d1c4a35691f72b61855d8c64d8bffcdb2f04a3002eaa390da3c788cbdc0 .vim/ftplugin/latex-suite/texviewer.vim
+697e796bece7ad92ad4ad31555f15c9bf17f9edb60b4649bf3deb8e32be1bf74 .vim/ftplugin/latex-suite/version.vim
+6e11c3340de1bd9161e2f2097968cf704e79cf2b7b321bf60066f0481bac0710 .vim/ftplugin/latex-suite/wizardfuncs.vim
+adcd438a9679f5d112115a4e6f11da1ff5a026d2f966db7ef3ef74bab6af626b .vim/ftplugin/pythoncomplete.vim
+8143f5ff319ab039d921c4d6eb79107486b5694af1f5b45d329cf68568fca903 .vim/ftplugin/tex.vim
+33428041046a1a9efa8c53fa05a15c8cba00a03c92297280ca016a8fc9d20e7a .vim/ftplugin/tex_latexSuite.vim
+fc052b3afa3704f9a4e663e870bfd904fa289b9d056a477306db023677f14cc6 .vim/haskellmode-20081031.vba
+5f1766593401d1a7646648fa50cd479bd787366ba323f9dbffc55cf5774573ef .vim/haskellmode-20090424.vba
+b22204322a8efd0fd6f4c22e2e0fcde3a79364b77fd80d04cb1b3b6e4c26f60d .vim/indent/indent-r.vim
+e11fa9d3e0806c30334daa51b1d70258136fc8ae5ba5f51c202a0606f8bdfc57 .vim/indent/tex.vim
+b2004ce00d8912097659a014f97365f76dfb54e82dd6db9606490b79f2eb1125 .vim/kde-devel-vim.vim
+48e8607970b09b1bd4d4fc32bfbde06faea91cc7fbcabe925606378fffcbc1b1 .vim/ltags
+1da3b2084d567a2100ea23a7401b74146ba31ea09ee7560622715ec7001c67b7 .vim/moin1_6.vim
+1a07a32c0fee4efc8688bb991a751fbb88eed8d641f462e590bf217fbcb7384d .vim/plugin/SyntaxFolds.vim
+384bb5f8093651e24945980ec95451b12ace0fd6a00a8f54ad7d7970d9ec01e1 .vim/plugin/c.vim
+a5d72d69868610ea7f50493048b11d8ec185e439e215589a10c588595fcbe02e .vim/plugin/filebrowser.vim
+fa68ba43affb82e664ee683de54360af1e7167fdcad132627afdf7affef77471 .vim/plugin/imaps.vim
+2d0d1df4db06c149fd219927ef0984b2066c3f61671cf65cfaaa10057a9aa0ed .vim/plugin/libList.vim
+60f20d52b70b90fa6d97828c40ba0844a0596d9a04a10ac54cce8b6cfe20ed2d .vim/plugin/minibufexpl.vim
+c2a61b9b68bb1e2cdcb0084ffb35fc721c4950f544409e70615557aa4d0f72bc .vim/plugin/openssl.vim
+d2adb32816e3254ae03ebef88b5bebaf9ffcf414fa7a001262be455fe746c320 .vim/plugin/remoteOpen.vim
+1e787f60063780cd7ec8c9311ce1e7748f3430c1f32322a5464ca8d54e349933 .vim/plugin/taglist.vim
+32ebe478747bd0d4657398112f9c0dc701e1cbb2cc4e7a498aacc24c49a9d2c2 .vim/syntax/django.vim
+ba4cea3e3632c47c91f888c08761aac42d52cf57df6153e07d00b978093ee68d .vim/syntax/htmldjango.vim
+2ec13ab83be45521f124e470da96c468f816e62994391fbd346965406efa991d .vim/syntax/prolog.vim
+f22e5ddac972af6b24ed4fc81bf51e6d901b34340386008a21c578801490667a .vim/syntax/rnc.vim
+450850a3248782deab1c6bb4cb12772dc01d679588f10d3995fbe551fe2991be .vim/syntax/syntax-r.vim
+834f67e6539363420a0c9e11ce16d15ca9d9f96bdaab62e5230411ed30864641 .vim/syntax/tex.vim
+7f07fe53a981b9e78749d1f33238c8b28317b91ba75138a9755df7cffd4d6d12 .vimrc
+78c614d41f5f216ffee49d524eeb8aa183a244daa084c7bda7ec61347f76381b .xinitrc
+e78859325cab3e3fdb148db0850f76c8b7396b26c7764275538495c0a0d9a187 .xmobarrc
+c08472b208a955be59b39e325b13f715932a649b8a18fb3ab46380c4b92b090f .xmonad/xmonad.hs
+d7ca88df2b00187ca2fa3f60065664fddbf1449d192808d8bb9b57af8d27df36 .zsh/func/prompt_wunjo_setup
+ebf7af235f15d807b0ccb54eebde31cde3fe24fd389cbdd88c08f4b82bd29e98 .zsh/func/zgitinit
+26882b79471c25f945c970f8233d8ce29d54e9d5eedcd2884f88affa84a18f56 .zsh_logout
+a0c451b022ca58f94d5115dcd4ba5b7b8ea18ac5f86d37707bfb82c752fddb16 .zshrc
+d5af534d5d05a48601d3eb221714367ea0d002a609572f3ca1d9c508ce533edb Makefile
+7496fd76af0a3dc71a3b5281c10c1bdcfb24035659a8ca2c32554543109df0f6 README
+f986f0834db5f393dc0f32a4420fa130c1097aaaca8d4a21ce5fbb5c76ef392d SUBSTS
+9fa3f553f2bb013cd3a572e27dc8d32c46cc7364d2223444209d3c2b2df1582d bin/gpg-mounter
+dca4a952c59d58c26a6bf7f8c63c91fc0e7ad1339dcd6fe1cad84c6d989c79fe bin/gpg-wrapper
+7dad320fcccf717c10c2babd0fa9a8aca61590055c86bc83a74567576349bca9 bin/mutt-notmuch
+c887ea51ee43157e5ec2d94d9f7d7996863ad75dd4d2179ec0734a5fba86409e bin/run-mailcheck
+dc38f1b4682c5a471c6b5b1e8d48f97d6321cfb06cbdef43aed177fe75207e94 bin/update-xmonad.sh
diff --git a/sha256sums.asc b/sha256sums.asc
new file mode 100644
index 0000000..4b3b255
--- /dev/null
+++ b/sha256sums.asc
@@ -0,0 +1,473 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+d2e251a99a889a1202dda9a48ff982d01348762d6d560ba9181e35f75e599345 .Xdefaults
+b6cd24dc05ad7e6c29095e3dd386dd1fb2dc1cdbe9e947ac7a09380706aefd85 .config/nitrogen/bg-saved.cfg
+201e7388dfdbd99a1c5399173813234f6f80ee0d0a7119745be7c5bb95900ac4 .config/nitrogen/nitrogen.cfg
+93b0d76267a205b2b81d6d280cea76341aba27c713fd8cc95d828834ade1a541 .dzen/battery.sh
+0a8611b32e087f7598ebc6cdf07ee3056cff9328ae9223e516e7cc886a19a0e3 .dzen/dzen.sh
+56a9e1a7c40a0dc906f778b41725656f84d3c1bcf2ad305d974d4efb937c401e .dzen/icons/arrow_down.xbm
+325554896c1c2781525893dbe63fdf3aeddfe296cb2af61369ba095295a82b85 .dzen/icons/arrow_up.xbm
+cffe6a5269ad576dd516d957b4b9e995851c28aa56087dc997dedbcaaf743f1d .dzen/icons/bluetooth.xbm
+0d9636ff06e2fd9754da6bba8eb158e3529919b58551798909395095f79f0d0c .dzen/icons/corner.xbm
+46ab7893c4105092d1bd06424a216a2734c17afa9f81b8c6c5e263d5628806ec .dzen/icons/cpu.xbm
+3e48781b0fcc711a3c8df0aae06a5b0edff99093a544f52d6f6ab855414d8233 .dzen/icons/down.xbm
+a4b0c0281e9dc106914611d40b97854bf4b1de10bc97e3e5bf70acf7e11a665f .dzen/icons/fwd.xbm
+2d6d73c6ba261979ce0442e00ad92bf8025011f3316b4361b2fbc40f7b32158e .dzen/icons/layout-full-black.xbm
+66c27816bc81068f8bf01795d58c39b53e37f14e7ad7ec9fcec3bae575aebf46 .dzen/icons/layout-full.xbm
+e2301c6d53dc57b5f2fe9ed240b4fd2a8c9647b0e07121d27973f8c93b5c3632 .dzen/icons/layout-gimp.xbm
+a5087e037bdc73bd5d2d3b97d35e9b554c22d1e376ac5611cbc7ed4d18d04cd5 .dzen/icons/layout-im-full.xbm
+696638c4343e95224818e8538b0c528e2a1b09969288eca5ce50ba40f61cccd3 .dzen/icons/layout-im-mirror.xbm
+a46b77da951c3326ccfd9f4071eedd7719b20fd206906004612509b5fb272ad5 .dzen/icons/layout-im-tall.xbm
+9a21626fb692f5611cf9a657e1ba8527168bb35ec6ad945f7e1bbbec39782f06 .dzen/icons/layout-im.xbm
+f8f3d59384145d4fc9d7fa190b3d98be5affbe6e37e5423119f727d1f92fbd1a .dzen/icons/layout-mirror-black.xbm
+c76a45e5d87b5784ff65b9eedd37110c08a6a6b40c6e77f2085411060541d53e .dzen/icons/layout-mirror-bottom.xbm
+7f42a46183ab1f34fb610823322eb09edc8a4242a71522534f113ef4bf5040c6 .dzen/icons/layout-mirror-top.xbm
+5bccb0f4ddbef8a7a3f7100000f4af29ef446b11ed3e1366ebafad5766177d49 .dzen/icons/layout-tall-black.xbm
+a8453c06551390e07cf46606f445cb70cd6b1309b8f979c7f210038025f2a50f .dzen/icons/layout-tall-left.xbm
+ce8fabb17740e1bd385423f3ead3d7755903ceaa9a93296aa3c681029917faa4 .dzen/icons/layout-tall-right.xbm
+7d3ecfcc9690bb6d06b2c2ba476aca510d0d62a0b9b1ba21f6dba14f32def1a5 .dzen/icons/layout-threecol.xbm
+be281d50782c6ad91d522ecce75b482a2019f79eff24acff8471e04b79d089b8 .dzen/icons/load.xbm
+cd9c39530193c19b2940ce67dc9f461908a0046856dba8313af2982acf452e73 .dzen/icons/mail.xbm
+18fef6cf04dd6d5c1046855a784b8ad4468958f4069d4845f928963f1a17af95 .dzen/icons/mem.xbm
+4a6fc2fe23ca2f1194b4e5a43c27fb898c7cbfd3ed53ed68158cc7d212d13da6 .dzen/icons/mpd.xbm
+a25f1b8256eb1fb23c24215df5f95c400ca41ae05180ab2beb715417d958591c .dzen/icons/net-wifi.xbm
+e5ad63967c62724b4d0dc105325a887f3ba257818cec244ea84a3d2ef521bc7e .dzen/icons/net-wifi3.xbm
+51908c2d84ca1e198852357ef86562c50f67bec38c1d5162d55e8918f6afc087 .dzen/icons/net-wifi4.xbm
+dbb559ffa818a9975c3272085484eac6eb747ae64eeacd3f49210de3554c68e0 .dzen/icons/net-wifi5.xbm
+507a00b172dbe463e0212b3acfb2d19c59bc424d10b2e12f7f325f4e8d2fa4bf .dzen/icons/net-wired.xbm
+e73b25928ce0fe93ca0adb9f92448acb1cb6949f7716f195fc567381b38f755e .dzen/icons/net-wired2.xbm
+1659c59208d1c3264bf30e2e5383d21c2ba03b5e3a2b994ba166de468553be16 .dzen/icons/next.xbm
+c4919859502771653d442e3c423e58f9ed9a73a228beea9996f6ce124afd79e0 .dzen/icons/pause.xbm
+d0f18d4493fa4d2f1296063dcd223cc55e564e4747b4f26121bd3afa8c2f5794 .dzen/icons/phones.xbm
+3dcfb45f1332bac6feac1507f6e44da06f33ed8058b3d13b7c034f6c2237a814 .dzen/icons/play.xbm
+8330804ac10948db5894fae26cee9313e95e1a1ed9583dd692a64126793eaacb .dzen/icons/plus.xbm
+ca55b7c818dafb20520a2db071f7d8ef8180ed972963536cf578cdd3e369d54a .dzen/icons/power-ac.xbm
+7a070d4769731fbac2c8e2afa822304e7d8ea4cdab6d80aaf32407f4cd123fdb .dzen/icons/power-bat.xbm
+02676242d1332ed000a6e8b2be7b3c1d29c46a1196c7c08a65f449025501f5a3 .dzen/icons/power-bat2.xbm
+3559504ba4fb91737d84e2e12b5b0254d1b4a6884440d4755af71420d6b92137 .dzen/icons/prev.xbm
+4c2622b38e57968f4386d499afb7255349ad1c4f6bfcc6568d7f69fd4367de70 .dzen/icons/rwd.xbm
+f1e832e5cbc9ac003baa855c608b14b8da8ce1f0f9a9497cf6e4fb53d6ce2c5d .dzen/icons/spkr_hi.xbm
+1b4fc9301a7c1afe854c945b8e6b580a15122d9c4f4a13010f8d5380ec4325a9 .dzen/icons/spkr_mute.xbm
+1e7c53d4d529a62d0fdf2c6553c5cd699e72c05a145d684314832e1633c09c70 .dzen/icons/square.xbm
+3066cca47a10651cf75147eb93dd7ddfc67c0a4a3ba1e337f70ff26b5377722e .dzen/icons/stop.xbm
+663d407ec4d660fe45d7f70b854b4b44f09dc4ba918eacc86bd474fb633b3d25 .dzen/icons/temp.xbm
+5dbcd87289e46f054e9f5eaf2192d3ec13ab3ce4ed5fc1b5f265c5c9a3d4b768 .dzen/icons/up.xbm
+2785d8d853f04c23a9401b7c156b18a4f2056138d91963e91f5f39de9ebf7349 .dzen/icons/vol-hi.xbm
+29738911cd39455fe732289c3eaf17225dfe6eb4297117fbe0d2e1a7f30a5613 .dzen/icons/vol-mute.xbm
+ac02c9dbfaaedcf69775fd8289fee7325b78004b2762078f25e571ca0b612269 .dzen/icons/wifi_01.xbm
+d83f281d105b849fc7f8b2755dae30d4706221ea8266e5a31b4a94d919db44cd .dzen/icons/wifi_02.xbm
+51aeebc80c41efd096f731259876bd34f7252faba7eaeabb4e9e834062dd48a1 .dzen/temperature.sh
+4ee9785182a7f5013726009c32411516f4e8b69150db50240335a091571a2a33 .gitignore
+c9ac8331a5c6580b2d39200b3545f6126d03e84d3981dd9e2139cfa07ed4383d .imapfilter/config.lua
+8a1c44b638de1b2c4c1ec78d16b3acb44c227bd0ed5707054e729a15fa2fe493 .inputrc
+a8ed387566ed343cb03d52f125fd36d98a06b20f21cd8a9ab38ef66f24731724 .local/share/wallpapers/atlas.jpg
+a0b49564f0c0e8445a71c19c276c947a9d6a4b832f0e4e96dcb63b44c9a47829 .local/share/wallpapers/feh-slideshow.py
+1cfdc181bd24d7bd6432523ccb99279a92f5c8256e7194f3437805277c5b5ae1 .local/share/wallpapers/ny1.jpg
+3eccec6b927fd77784dbbba9940dcd364c0a856ef72a951a0707313d6332dedf .local/share/wallpapers/ny2.jpg
+28ae37302cd1a3ca311ffaee4321157fbdcf780bd5f0913cd55b0c4caee0c6c2 .local/share/wallpapers/skyscraper.bmp
+0d2f6b7c2028eafe87fd84a78426eb6781602840367b1d5f708a3c17fd6651b4 .local/share/wallpapers/skyscraper_at_sunset.bmp
+289eee67ff574936828f7d22ee62ee06b7cff598d423632042818639c77bc35a .local/share/wallpapers/torre_agba1_2333x1560.jpg
+b7e022807d5670ccb137c768f1047c31e2a87a9b3ad565885ef7f5d1ea486840 .local/share/wallpapers/totheglory.jpg
+4ed757775be13199d7dfac2c39500b1ee983eaeb684defc2c292e76fe67742de .mailcheckrc
+562224f934e118cd679e274e51fc47b63f859662e59c6e397f603d90a3ed5b5e .mutt/accounts.rc
+66e0849d979ef955851a131b0c64c80978e4ca31a2316bac9abfe66ce0c2af58 .mutt/certs/594f1775.0
+66e0849d979ef955851a131b0c64c80978e4ca31a2316bac9abfe66ce0c2af58 .mutt/certs/Equifax_Secure_CA.pem
+f43726d0e181569f76adc92859a5b7441af1cc6e08bbbe257ece835b9a14d8ed .mutt/certs/SMTP.pem
+c88bf3fa0d0941d18f5484010b2cc89e8742386f5cdbf0e5ab25284a7cf08b08 .mutt/certs/Thawte_Premium_Server_CA.pem
+c88bf3fa0d0941d18f5484010b2cc89e8742386f5cdbf0e5ab25284a7cf08b08 .mutt/certs/c33a80d4.0
+2ec9cbb1a63903ebb7cfdd55eb523ca73b3b8da4ab026ecdb14826c429cbafea .mutt/certs/ca-bundle.crt
+02a56441f5334c8a9509067323ef7ea8679329576531de6407efc3b7d601f14a .mutt/certs/certdata.txt
+fe46c2a51a8f148c91f30b0a067b36f7c8352ab0ce3e972dda92dc2fb80a8cd5 .mutt/certs/certificates
+2ec9cbb1a63903ebb7cfdd55eb523ca73b3b8da4ab026ecdb14826c429cbafea .mutt/certs/f73e89fd.0
+c9bd90ba85c6df4b0ed094c66483ce061214f1166b197a7b5c253df3fb5493ba .mutt/certs/get_gmail_cert
+987c76b23e0cd86fd09b7fcd5a47fbd3af1f6d3488a161eb460e6d783b25d9c7 .mutt/certs/mk-ca-bundle.pl
+cabe6c493588868385e308c9ecb7bef8e5cfe336730a03f67a142e9009533756 .mutt/color.rc
+1fd52fb324c0060699b8bf69772d0bf6db0f26dbdc48d9330e51f6a935b1b523 .mutt/mailboxes.rc
+ae737fb7d5efa33727e0e90455b8b1501801e7521b2dc792998bf64e51b8bd28 .mutt/mailinglists.rc
+b8798f6b2d3a7638111dac4ed657198e07aed660dbf4f493852a6c996347cff4 .mutt/savehooks.rc
+97478dad63159b2b6d98d5cf8881b1e525aa61dca8852956c7b6942e3dea8dc3 .mutt/score.rc
+7ee3f04b74abb1b937886d8a10e4e1366b2d5062e27d215fa98cdf041364fc35 .muttrc
+accdd205193db1845cc97400560fb099c09b55828a7b4e8a688532496493452b .netrc
+70bad75824d1540d898d967a8246ff26ec8a5f7c181fec34e8da3ed599743f05 .notmuch-config
+d340de50e3ec19da705e1b1b45d4d709ad70fea7a8d147c89bc7872e391ecf2d .offlineimaprc
+7b0e7f6c0bd7c95d9d2504f3522fd84b74a9b3152db6f38a5f4a14e9b186086a .quiltrc-dpkg
+e657c0d12066ec0e59f768f995a50b0abdc90b8441e547f5beec40bac227d6ab .screenlayout/epsilon-SAIL.sh
+f94d4174b8ea5dd0a192e962beec2e875b582894b90c621ec17e65b03255ac38 .screenlayout/epsilon-home.sh
+effcf5f09a3a59e48e4264c246011026a49291d8b2fce000b33609fcbfa3a5b7 .screenrc
+562e14d05620e38c4ad86a32b8265b357c0c2b3bcfbf41fba300f4f81fec776e .signature
+688a08be9a46a0acee72d8166388d622062223661b7aa9234e7802f6992669ed .vim/README.csupport
+d02f22e4d3bce3f6bfb4f3c7ecf274d9cadb380f507214f08fc97593f8820393 .vim/autoload/haskellmode.vim
+adcd438a9679f5d112115a4e6f11da1ff5a026d2f966db7ef3ef74bab6af626b .vim/autoload/pythoncomplete.vim
+ffcd47161241f08f689b32afb1154e5cbf7a625c635bbf4edbe0a299ca050634 .vim/c-support/codesnippets/Makefile
+9659bf47f6a380d7a896572e2d89cecba351cc9b1e1cee75d91d778d494991ba .vim/c-support/codesnippets/Makefile.multi-target.template
+b0e8c58cf376fc7289ba7bc17fa4bae61853558885bdf8308f321e031be663d4 .vim/c-support/codesnippets/calloc_double_matrix.c
+50cb03f84ee96a281c79bd272cd5fdb9965690cad695bd83470e41aadc374c5e .vim/c-support/codesnippets/calloc_int_matrix.c
+83fd050e02fd4bf7e965a7511d2df78995c8329acfb7af6f0b3546a316ab0855 .vim/c-support/codesnippets/main.c
+ed891586e7bf04e890f48b5419bcb15967032c3a4cc830815f44c9c5062b8692 .vim/c-support/codesnippets/main.cc
+d51521f97a522d0b7c345f33a8605bfbd28f61ea49d284e6be0efdfba5753313 .vim/c-support/codesnippets/print_double_array.c.noindent
+1d78598231070c7548b6fea67e8936a81e7bde78238f8001affa1a64424809ac .vim/c-support/codesnippets/print_int_array.c.noindent
+a926149585ec7351dbd6f300e9236fa707432a1c2fdbb4b0e080cfd962e81920 .vim/c-support/doc/ChangeLog
+b15e5b498bee1a6b57c874c2990b88c418aaf9af43c35703eef8d2185b73f259 .vim/c-support/doc/c-hotkeys.pdf
+5daa2abf952d1d0f757040971be335f7ea474c278f31bdc3cb0e0ba67c8c32ab .vim/c-support/rc/customization.ctags
+11d23194efd4d91bfb371b7fc8c80c7969b26a661eb43074632bf37a5a56ba18 .vim/c-support/rc/customization.gvimrc
+3316d03d74bd1e04bfc469490f7345795b537e671da93d0f00653801e69ecd61 .vim/c-support/rc/customization.indent.pro
+d322688608e140b73d830934341f724fa5b958592e95a6b6cfcede75dd90200d .vim/c-support/rc/customization.vimrc
+09acde106a30d00d2de8d71b12dbff29eda2f71fcefe0fc61e7bd3f225f29138 .vim/c-support/scripts/wrapper.sh
+ca44bcb9ec787e71cef0767f48544744cd1a1c8c2c6c121fd1a3872c6ce0c5d4 .vim/c-support/syntax/c.vim
+81c8a07249a33b22e56851d9ba5269235b8c7760660b872d108d3e6907b7170e .vim/c-support/templates/Templates
+4aa5206c34a833062f3568f9893e417f37b0a5c08d7b9cc223ce3ca1d72f6feb .vim/c-support/templates/c.comments.template
+b4a899e9043f858aa3b1dff00e48f1ce0e0dba6de4473ebb26a2b2559a0442bc .vim/c-support/templates/c.cpp.template
+c9f1f764c1b5456ca351724703cac3367ce0690491aa5f1a50c98ed315617d9b .vim/c-support/templates/c.idioms.template
+81bc73aa07b0da8eb911165050178a4d650b9c9fc2f75e973242d0fdd6f511b5 .vim/c-support/templates/c.preprocessor.template
+49d219bc266a5131e3533334a2fb9d1c9ab5e8240f458f7122346a83752b6a50 .vim/c-support/templates/c.statements.template
+ad58773a11e0ae304f86739f27233728f359f21e4dd036f5fb378936fd8803d7 .vim/c-support/templates/cpp.comments.template
+c0d4e3863143329ec01a5b1682de96af5dc453d35221d99040f2e3c51ad5d223 .vim/c-support/templates/cpp.cpp.template
+60424ae5e54e2bc1bcd865de56dc1aba7a93907c9f045c5f9db67f8d62ef399d .vim/c-support/templates/cpp.idioms.template
+f57eb8e2faa5356c1db1df789c8bc3b0ee168f082e35772d4d41a6ef419f8a00 .vim/c-support/templates/cpp.preprocessor.template
+8fc727663b58327e78ac81717845a451afd2e2c002811397c420ae446f80b737 .vim/c-support/templates/cpp.statements.template
+113ddd3fc5be6867e28a83a06d65258b7d6a119bd3402503981a182b76670c8c .vim/c-support/wordlists/c-c++-keywords.list
+cf0c2f107c2f0b66b080ad152f3a3377caece50a219fb2814c7f694d2a7479c6 .vim/c-support/wordlists/k+r.list
+cc136dde33480b166d43889c541238e68c4becad78ed11bf63588a864e6368ff .vim/c-support/wordlists/stl_index.list
+3c8f5ee1526af065337e08795c914149e076064909b8dc9943943dce3d322591 .vim/colors/adam.vim
+007cdd64b7030e7f48e122df8433c3f417d50e1f511f215057bf603805535795 .vim/colors/adaryn.vim
+f4ab5cd8d3b386ec185e7801354435c14ac82e20f36ac6b5d03e7efef16cc486 .vim/colors/adrian.vim
+0b1c708dfef8f578186e51b0c8886bb9795f4feeb144e606069b0b122fc1cc52 .vim/colors/af.vim
+6fb9dc69c2dba1d21c37dc93ccdb383580239d55f9facd0c6851b30ea3586dd7 .vim/colors/aiseered.vim
+bc2230054c50e00910c3f3ea99dfd68a9a463183e033ebc4b99fba01c1acf765 .vim/colors/aqua.vim
+bdfd4aef0dfd6ab75cba3126f2c53abce71a06e62526f1f0d41baf8e75780599 .vim/colors/astronaut.vim
+2e935177088ee6aee24972a9c35706e7a71dbf82754589b0aaffbcd22a87f51c .vim/colors/asu1dark.vim
+846ba14e60e955e96bd23580b1590e0b78026846a5b5dd2980c518fb81dd0c4f .vim/colors/automation.vim
+b23c6a2d5cb629a78190296bbf0a2414ccade13bcae39a85b00bf4563a5813ff .vim/colors/autumn.vim
+b23c6a2d5cb629a78190296bbf0a2414ccade13bcae39a85b00bf4563a5813ff .vim/colors/autumn2.vim
+ef321731269d0757e6d3cab8fe66b6a7a89da4110e9a455d0fda909c29cf53a6 .vim/colors/autumnleaf.vim
+10f838fd24f366783b5a4ea0f42610cd95df144a24c23db8589b005b1ae99ef5 .vim/colors/billw.vim
+99bd81584b8d5cefb0cff06ccdf6d0f19e47bdd29a0f9373322c1def67c87259 .vim/colors/biogoo.vim
+8174f4e8ac747880db656db47ec02aff9b27be534c6739c6dfb9d028c754838a .vim/colors/black_angus.vim
+ac5d7ec952e8f763c5814d8ae08f7252622457cc58113a3a5db794568746b8c5 .vim/colors/blackbeauty.vim
+813379657b06ce2906cb14232716580a92c595143bdf5214350f0fec581e7f42 .vim/colors/blackdust.vim
+e08eb7c30322c59b032ee0dbddba42161e563c8cf48d647f9993268dcb29891a .vim/colors/blacksea.vim
+0306429a227b0cef0384a05e076694ac4deb33833dd15cac4ec475d07b44adda .vim/colors/blue.vim
+93824b6282b11b86754d2b9ad5f346ec36f012c36f72e4db8c93e89f8017ddd2 .vim/colors/bluegreen.vim
+4dbad855a6365cd6441b26d8f9858f65a812d6b4c5e8392216ed8a225d11c32f .vim/colors/blugrine.vim
+636c2e8588e1ba2bf86622155a5b7ac6c9e165b857dcc80e7ad6378e5e46ffe8 .vim/colors/bmichaelsen.vim
+145af35e17070a93a16303ceea0c6440f41e031c1a04b6e66c1630727bec18d3 .vim/colors/bog.vim
+2baf3987bfb7f6880f50b58057bb379dc5dc800b31eda6b4cf9fe5e62834dc09 .vim/colors/borland.vim
+3bae4032004168352ec619ac1c345d2c3bc8c9fa12e71923ebc53cd6f25e118c .vim/colors/breeze.vim
+b38d9e630536d26961c49a74d50ad30db4c214b2a4df7e847cab559190f911b8 .vim/colors/brookstream.vim
+5a006912786f1c299ad255899b66bf2355c92613efd6ecf0f611f07a0e20b018 .vim/colors/brown.vim
+ad5c429db36cb1b3a3492adea6d9598a76147adc355e0ce9a479a2ed658aaa0d .vim/colors/buttercream.vim
+ff3316d03d72b23d92410569b88f2f901ecdf320c292dff10a4f37bcfa790bbf .vim/colors/bw.vim
+5a393a81d97857f44fa8b89f098fd699f2c06ba09665f2c1ce0eda07a9213a37 .vim/colors/c.vim
+46dc45fecf5af24ceedf1571d511259146da0f647ad9ab4e31d8ad3ff12daeee .vim/colors/camo.vim
+1efe5f366ba21fa0e96422f7f856ce226e9c2d4420a5bbe9109920bdc0ef6767 .vim/colors/campfire.vim
+3431998da7a20073186525f3577542691b2d52f19c68be3c154f26f5de54c7d6 .vim/colors/candy.vim
+c6bfe906b401f30f4a68ac20b6d680291571163a55aadb58b82157ca6ed138d2 .vim/colors/caramel.vim
+601349900c5a14be0f75cebab7da44b5328eb8172c50a019b93ceda41c099d78 .vim/colors/chela_light.vim
+05bb744a803ec6bfe34e8cbdc784548287eee9a0263c3edcaeb8424127572b67 .vim/colors/chocolateliquor.vim
+7fe3910beb436ec310ae8caf6fc8ed50d70f9ee499d463071f6d90c8c5a2f27a .vim/colors/cleanphp.vim
+d5f039cd40d38050dcc96f2a74c7e96f41cab69ef20b83598fe4ce18d6059e35 .vim/colors/coffee.vim
+26f6c3e924171b4fdf99b13d0e122e88dd322adbc6436ed65ed812d422071534 .vim/colors/colorer.vim
+d51c2c14ed4ef4d91085b4d865ef8415f80a7113bb507f4d208d5dcf5dc01a07 .vim/colors/cool.vim
+54e6912922b9100965e8ef4ad3ff54678992495c63c0c5b2a9b424ff953d0aeb .vim/colors/dante.vim
+b3e0e5207f8d2af716a13427a3edf91ce9e5b088fb723bea62722030e5943c60 .vim/colors/darkblack.vim
+d7e92310563949db32a90ca8da923a51db95eecf665b6e4f0a049b0bc4aa36b5 .vim/colors/darkblue2.vim
+8619cd0577d01887f393d0cbd1550c5e5fbe5811d62b5de4b9a4c8c3df0cae3e .vim/colors/darkdot.vim
+817fb128e635acab1ab952a17148c26aee9f082c5ebe16a054c3a9a02d322c52 .vim/colors/darkocean.vim
+e59fb3eeb721e2c414789d3d0c131ed0ae7abcaa47b6f5a383500f7f91a2e201 .vim/colors/darkslategray.vim
+0ba13cb4343c2bda3e38686d295c19f9da58e4a80c26a4ca7e94fc06a2831013 .vim/colors/dawn.vim
+d56f663285e3e4a1088e831e698065ab44eff51cb5889b4b687fc13c64ee1932 .vim/colors/delek.vim
+53823a032412902107ebc9e1384c4c67ed6230fda760f78187a381268f32ba14 .vim/colors/denim.vim
+076f2d3088eefc4a455c9aa5e1dba07181032fcfe155e23fbea80f20dc69ac15 .vim/colors/desert.vim
+c175ce34ef2a3ab99102fa4361c817d6288cfaaa7ddc93291a3564c957766f1b .vim/colors/dusk.vim
+11717acb76d12b64d81454988db07d622e416564d37a6bec17925d1b3f3cc1dd .vim/colors/earth.vim
+84d70456281203190eab0378b39de8b592593a51f486e170706504ffce2f85a3 .vim/colors/edo_sea.vim
+aa76d00677c394219ab56fb05ca3fb54d115954ad0a5d4d33d11e6c75e24e9f8 .vim/colors/emacs.vim
+6e30744674654e7225aee07c19bb2e2fee9ed74af21a1e446bb8f1d2033e2214 .vim/colors/fine_blue.vim
+8850fb7c73bff339fc4f9a4fe97a7a3313484c6fc167f940485f7965d06d4c8f .vim/colors/fnaqevan.vim
+980f7e08e75ee107fefcdd9e82cd2b8c86b42834e8c6ebf5a3368dae9d5d1a79 .vim/colors/fog.vim
+221c9211caad3ecf763f626584f3b12808dc7479d63268c056d56b4f8dd52e9a .vim/colors/fruit.vim
+5b38ce261187aed499a3499440e2cdc7aab28f753e21019f5e36bc56db03f376 .vim/colors/gobo.vim
+a8cdc5fe53d11d298979b37b27edc6a216d4bb538ec742e1ec1b474b272f7ac5 .vim/colors/golden.vim
+03d9bc2d1ddb590b7c0e363dc9ace3a9587948ac8f919c7cd2083220d040f422 .vim/colors/gor.vim
+c9324ec261ccc592f4f8950b64e51e25301d5c0e9e5e7d23712461506a21bcb9 .vim/colors/gothic.vim
+da8b4b48ad26a45ebac812c08fa19ccbfa43335f8bf0bd0ba4204aa56dbb5f98 .vim/colors/greyblue.vim
+e05740ba2de97588c42ecd924be303893c7faaa8a293e7094717aedad3e5a876 .vim/colors/hhazure.vim
+d4fce4a1e23801ba2211cc4c6b2fd7979fe94fb7d90f2bcccf8c4e734ba893cd .vim/colors/hhdblue.vim
+cd85e087c1a94b6df623263c960df1bd1797efdeb3488cb76ec4c4f6beed39a9 .vim/colors/hhdcyan.vim
+d1648b75f1411b3a540e4b5f6ba0a7479b240bfd49f787d725b29179d132f79a .vim/colors/hhdgray.vim
+27cb37a6c1dca7abfc39e8ac6a3decc62a422c30ac8d02f919ef2ca130932d92 .vim/colors/hhdgreen.vim
+2de1ce4ef6f9ea5fc1e6185f21d5912ceacba4c00ddd9db75108d558359804ac .vim/colors/hhdmagenta.vim
+0e85b435dbc6ff83a1107220a198383daeb6a88f55392c0e68cdfc5d1ce03f48 .vim/colors/hhdred.vim
+78b8fa0a70f6e11cad8a666620ce303ed1e5b47c5fd1d43610583191ce90f09b .vim/colors/hhdyellow.vim
+ba7a6f4b9dccde11b9d69958942c317b49b132106352fb09c2eafec6f854c9e1 .vim/colors/hhorange.vim
+408a8edf23c7cadc4a621c460d969c1fea387f6fc2b91c9ea888eb4e22ea6621 .vim/colors/hhpink.vim
+c29cd8103153f0b9426080000e1fec18a0af0ed41a376ab760c71f13a0fc784e .vim/colors/hhspring.vim
+4c54de58d69d3a783aedac01c5cc6a1df55b82bf4462f07f162ca2435ed2d3d1 .vim/colors/hhteal.vim
+db94d565ede9c1ac89113f33036f2fe1bd618dbd655ba677193cd03bf9d1d030 .vim/colors/hhviolet.vim
+72b81dcbe93ff26032185685ae622e6c7a87e07e10259c551a9114789bec29ed .vim/colors/ibmedit.vim
+e97ab65da8ebb8b82af881899d05fc64090681f6ae648bb9b13dfeb02407cfce .vim/colors/inkpot.vim
+c16c0325b4b8467fd15b47f040bb32739fa2ae93d89250b2b2fca2a87f8c1be2 .vim/colors/ironman.vim
+47277b5744ffdbe419758b7e192913c267ca44cae41211b4ab263b1e99e01b7a .vim/colors/jhdark.vim
+1646b75eb782ee130c59506cec5e6b8cdc8e6bf563f30db6ea612f88eafef557 .vim/colors/jhlight.vim
+fd3343c9846f19ee3b9be1085fa4ead8a54109dbd3fe847a2cc25cd2aaeede13 .vim/colors/less.vim
+426400af1be0147a978ae0b706a1475ed38962f8b5276703f648d083e88bee5a .vim/colors/lilac.vim
+143c0413c039caa9cc1e15a2beec853e7a593e44c699cd055b2c178e7f5f28c0 .vim/colors/lingodirector.vim
+9d1eb378c6ae24064327db2dab9baa5335d67b63a9434bace1cf128790d9bc49 .vim/colors/manxome.vim
+816b145585a0e9c77efbbe72e5cb2877654afb68324a8676e0a80c84e7b07b14 .vim/colors/mars.vim
+1c215c5c53ecf32c18defd9f7d02bdabae802dd63d23329f9d4439a5dbf1f38d .vim/colors/matrix.vim
+7c6aaa4d66364c2dba3a314bb7e4f7dfb2e3bd6057ea845e262439732f65f9b8 .vim/colors/metacosm.vim
+5f6226674582ee1fc512f28afffadff43f59649cb2fa641675089eafdfd312eb .vim/colors/midnight.vim
+eab18dfd6296b0731454f6334de15dffb120ab3f9f8967266eab42daf96b7e54 .vim/colors/midnight2.vim
+bdc224abdb1df16907a4c2b9ca98145637b2c9564ff9161de8060732816847e4 .vim/colors/mod_tcsoft.vim
+f727f5b7bd21502f91a48dbcea49d9616655b3a7b292ac468ecfe80dfb2c7727 .vim/colors/navajo-night.vim
+75a72880cec2c995c7c48167554d5ed644aaa83aecfcba6426d1262ee36250af .vim/colors/navajo.vim
+9fe93c919509cfb981efa4e4af56f49c9af5b0196ba5c4a78a0ebdd04a3536bd .vim/colors/nedit.vim
+6cc6c8297ddbb93e47ccfbfaae162eb3bb8dbe9f1500e7eae1760b5659578975 .vim/colors/nedit2.vim
+476233899b982b12bbf1f52b0e265dc52f15332e0a3c2c5f933c53d5103b5e78 .vim/colors/neon.vim
+4c44e19e1a018d3cfc04a2d9cdb4a395c5d23280f5c89cb9a360821d64809f7e .vim/colors/night.vim
+b89fe4e75f06ce37ea8d6da19fb1ce532e82e26e11619a56d33ed65d33b3edee .vim/colors/nightshimmer.vim
+d0a6c04b66b98088aef745eccb276a6c5750bf37f88fce5bda9cdfe4b9d0d6a7 .vim/colors/nightwish.vim
+b17fde5a36702b677d221570c652ca119d04cd9478b1064cd2a078b4469db5d9 .vim/colors/northsky.vim
+e9870c3c5c2c4da5f680c36ceddd05f2c6c4f30618942800918fcac77c3ff994 .vim/colors/nuvola.vim
+1ea32a03a3ff91c35624397be39f22cf8026cc21948eba84be820240f30cf009 .vim/colors/oceanblack.vim
+8c2f6c976261b0e26f6d036dbc3a2385e4fb6688e1777b551b511e85aaff389a .vim/colors/oceandeep.vim
+161e031a656f9d5b3e02d185c77d239b09ab023404a2b5721a0f4edb0739c33d .vim/colors/oceanlight.vim
+d95f479bd542a4ff0b9e68eba607ee79dd78769e94993f1a26ba7c3a366514a0 .vim/colors/olive.vim
+9d1ef97c6459b4ee663152c105dd4865ed6b9dc73959f395c8b1c959cbf99e3e .vim/colors/papayawhip.vim
+2e4b7a797f0362e30a2f6ea6643944740a7c45883a9f0262d0c1ced684b8465e .vim/colors/potts.vim
+8d83f204cbc4dedb045ae99d4c625fd2ab85987e18f1c3e6daf612bfc169060b .vim/colors/print_bw.vim
+a41b54648272ac07ae859fe20649be8fec51355b94b4d870c8b87dac06a0f2fd .vim/colors/ps_color.vim
+0ed84d09ca4e3e6e5a807bd6e6180242403eb4c502652b20171b60ec78108c1c .vim/colors/putty.vim
+1676e4de474abf8dfcea44354b02627b1484b13b9c51c42a203b9c09ef986a0d .vim/colors/python.vim
+fb39bdc485bcfd710a68846eae55baf5f07dc1bf723f90ec8e00f8990a15b9ca .vim/colors/redblack.vim
+9ad83b235bff978758b0d29aae7ab7f892b9ab8e24a22799206e4b594ec7eb49 .vim/colors/relaxedgreen.vim
+554e91ad3cac301027a84c12af33d412bf42c6883b7117855e75927dc908ec9e .vim/colors/reloaded.vim
+93b1b8aac3a2bad2c87d6b4f45b5014d93ac1a020d98b2da75f3a299426db25d .vim/colors/revolutions.vim
+88e7e2c32041606f88c528d68f26bb4ef45730371595ab4ff03eb63cdf205892 .vim/colors/robinhood.vim
+d389e4b5f90e77a9a6123271c5ad6eeb1548492257de7eea6588e69ada64bcdf .vim/colors/sand.vim
+5b628255e44301bf75d4ecd09d424ff9b04b3663adfcba43bdcaf82ff924c4e1 .vim/colors/scite.vim
+2a15faf3e21a6bc4c9ee57ffd7d8e54a366985283599721fa43a73af3ae76594 .vim/colors/sea.vim
+c149a0ff58592f1533082637b88738386203c1b1a18fdaca4f9a314c12684668 .vim/colors/sean.vim
+70c1551d14ab171daa20a7a066e5d47cf6b4e6cb7ab9e3b0672bea696a015b3c .vim/colors/seashell.vim
+79edb2e6cf35a33954388a1e5891319ee4199c367498e5ea8834da1e4d6d97c3 .vim/colors/sf.vim
+38dfc4f7b2cff4be6d488eaa8050253e149bb6bae9dec3d9bff0321e3198aadc .vim/colors/simpleandfriendly.vim
+aec296eb13ab643028c4ff714e836f1eb72ef2ebb5821b39c73779e8f0b97aab .vim/colors/taqua.vim
+46dbb62ce55e2c2db3d909833fec27b8ace3e83ec728ab0ba0698ccab9cf8ddb .vim/colors/tcsoft.vim
+2064b98fa22790f0c482759ece74312b495b33b24b19aa6e4be834601b0ad938 .vim/colors/tibet.vim
+c112242d35e401a400411690100fc02682f3d4613d3d65656bc35f021988d068 .vim/colors/tolerable.vim
+60f639c3899ca5598ecbce194d3fab929edec72c198a3b237191b43e998b1a85 .vim/colors/tomatosoup.vim
+87ac82ec2aa8085e038b3c81df613ba62db2f1a4192daba1ff0e7020ab5cfa07 .vim/colors/toothpik.vim
+24320526705615a3f3703998ac41a06e5f1eeb12cbbb1690f72ea1e815e5d89e .vim/colors/torte.vim
+409e9917436a3229d4e2d03d9aa6948c9e1aca263a80079430642169c65d4c8a .vim/colors/transparent.vim
+2a7258f76b7bb423e4766fa097a2ca4004379a17a4be2fb3a6beb8d4127540ad .vim/colors/turbo.vim
+54283dfe7e4ba20dbf55730bb8612f167e1333cce1d0c8ecc6ce2a3fb2a41601 .vim/colors/umber-green.vim
+3de84011ac0fd712d76724f9fcd7dc805bcecd52a40e97a7585c57e22a38a570 .vim/colors/vc.vim
+f771cd19481332fe4c6fb2ebe9559842d62adb17c0a9bdeaa877ebbdf11b5a11 .vim/colors/vcbc.vim
+10832d5d679a88cf900d926c9829bdb81f0153f2e0c4507b7184306811305a07 .vim/colors/white.vim
+bca5d4a259ad0ef77e3f1ab630c8ef71edafe4373ac8f78a763a55689402117f .vim/colors/whitedust.vim
+50692743f6deabb88033c972694a78cc7f8a1a4da8fce5ed2b8fbfc9c1ff794b .vim/colors/wintersday.vim
+0179135646935064854143e3e1963c7d643ed25561a29812ccf68503ffc26f9e .vim/colors/wombat.vim
+43fb2188d1d0d13f217e5516ad3474ff348da1cfc3551927ef4f72e643325b37 .vim/colors/xemacs.vim
+0c47a225ba751cd79220de7914d4304524960c53f5d41ff0026253cb7737e8a4 .vim/colors/xian.vim
+f25667653ab00307bc9d5673694663b7cedc125d82c6cd7322873e5acba60d57 .vim/colors/zenburn.vim
+6538e1ac0318c2edce168860d730725c8e58db49d2d6f190dbc8972ec116a7d7 .vim/compiler/ghc.vim
+137e387e18080514cbc1916075f0c654ca76701386b4f31e39e9fb57476e7eea .vim/compiler/tex.vim
+65b124c12b11ee6f1992fd660060c42b1848b91470533e8929a0b65b0dfb6878 .vim/doc/csupport.txt
+fb5ce477f6c3e9b85800fd8de2be81b9d0cc436f24970c14304aa66f80d6666e .vim/doc/haskellmode.txt
+67e4b89a962102f5f1e1920ea732d8868a0d18e8c824103c8fdbbb0eef31b55a .vim/doc/imaps.txt
+663016dfecc1a0b3bae2aab4b2b8172e05c742404943e7981b24582d2d4d6f7d .vim/doc/latex-suite-quickstart.txt
+0f91c9295dad36fc944e048234a7ba43b0b38a588aa1f9fc44a12911c219cf52 .vim/doc/latex-suite.txt
+d53433220f6e0c2c3104fa3773790f9418b6d6f45cde9924faf697c91373b01a .vim/doc/latexhelp.txt
+6785f6e5134a1b7b9b7531bafb14c84462264d1a961a61e9d84dd20a6f6b7a31 .vim/doc/ps_color.txt
+0653be352445428b3af6e5bee3385aded524c470618522daae652864bd0c4105 .vim/doc/taglist.txt
+63a4a70348480c68dd60cc5d8ebbfc8ed0230ef14560dbb42c7a5a5429575efb .vim/doc/tags
+47e74fc900733ceb109d139dae9770ce82f84e7952f5d74d24339d16e1200bbe .vim/filetype.vim
+77377136e18b472ab56f8b339e98b4df53e64dcd0068f6827e55cc1ed6b8f3ad .vim/ftplugin/bib_latexSuite.vim
+2918e4e0924c1b24042fc15b3d870e9a8daf7f9f1ae125873ac47bc52d121b09 .vim/ftplugin/c.vim
+ff65f984c7fe886959a3a88941e9eb4fb2c2dff8610ad969238d06e98ac516e3 .vim/ftplugin/cpp.vim
+2e14c7289aefd302f2d328efbe4370bc2fd7d4a33821d37ec4d9b142a60f5b5f .vim/ftplugin/gpg.vim
+cb4f576b6745a3d2f64d2912e0e9bb5e73b13dbd719eb99ef31c378aa3dd71f4 .vim/ftplugin/haskell.vim
+c1eb34f90cea112f645622a9d8194de86969caa0807065b9f077a32ed0225623 .vim/ftplugin/haskell_doc.vim
+c0e50ddccc30b6ef24e14e4a43e72dc8b4967887fdad8ead75802fcdccfe500d .vim/ftplugin/haskell_hpaste.vim
+13a7382790dfb980b888e45bac159021821d6c628d93a3c7c2ddd423e73d4002 .vim/ftplugin/latex-suite/bibtex.vim
+b64ed475a33534fdd24e7c74957d160506608e69258f9685d91468ff228a6788 .vim/ftplugin/latex-suite/bibtools.py
+b0501a351c5aa60ede2db6cfb0e84cb47fe1a7d56887d22b3c1ce61b934adbf9 .vim/ftplugin/latex-suite/bibtools.pyc
+b486556b7152ebc8bd8149d0b4014cbc58f7dfd95bcef0ce0f838805de5e20e5 .vim/ftplugin/latex-suite/brackets.vim
+0c28d3da048a8620e2eebdc24c7358f25a73bb8da0e26dd13931b370db99da9d .vim/ftplugin/latex-suite/compiler.vim
+ac40c901efc20beac985a4353abcc6f228764ce17895e7a763d3220a3ffd0157 .vim/ftplugin/latex-suite/custommacros.vim
+56a11236635aa7553f624a5268d302d1b7be81ec8eabd65c844e6a523c62a202 .vim/ftplugin/latex-suite/diacritics.vim
+0303e0caf67ebed412b01141f816a3ecf2cc50f9d3d52a7b4c9fc8461ba7b221 .vim/ftplugin/latex-suite/dictionaries/SIunits
+29c4cd6543fc9329730acf952b5588796e871a1b6ceae41c308b8048dc709139 .vim/ftplugin/latex-suite/dictionaries/dictionary
+8d7a24bd981033ea60067af93db0c17a360d0c6c3d1fd11fd16464763d18aadb .vim/ftplugin/latex-suite/elementmacros.vim
+be8cd5b00ad143205fbd0471c05072903a095dd99de48c56faa7f500b3c47f73 .vim/ftplugin/latex-suite/envmacros.vim
+991c343b44af2fd3dd6e674f14bf1f0416c49071e348a0249421a86d715f39c4 .vim/ftplugin/latex-suite/folding.vim
+80c998b0fe826036ebd785df8e2e7626644eb22de9bdca10bb3ae16a431c1c02 .vim/ftplugin/latex-suite/macros/example
+dde7b079c826818490d03b038043ef29424d8ab3dd9111cca516ccc70e25527b .vim/ftplugin/latex-suite/main.vim
+dcc59317c0cd33cbcf0ca0d4f0b5a16e2f15eb7d30cde45b4037813bde5910a4 .vim/ftplugin/latex-suite/mathmacros-utf.vim
+58cb8ad51a1653985430aa169a2a8a3543bc1d910901bf6e139053b89b59b1ca .vim/ftplugin/latex-suite/mathmacros.vim
+c03a306335df27b0409919426324884aa4e3d8439292be502a0f73cbf6eb1622 .vim/ftplugin/latex-suite/multicompile.vim
+6ffe27b429733e0decdb8588f0d601aeeafaa1200db306b91dc37bdf71f507b4 .vim/ftplugin/latex-suite/outline.py
+9abcfbfe18bd48f96ec428fd9d57f3ffc0580b2c55dbf836e796a7a5965f6c25 .vim/ftplugin/latex-suite/outline.pyc
+7fc447839ea2673407b38342264eeb7f92b3a507f39c04765ddf4bbfe3f0184a .vim/ftplugin/latex-suite/packages.vim
+637f43ca476c0ab881bbffc470192c06a4db460a3729b36450e35225cb0fdb61 .vim/ftplugin/latex-suite/packages/SIunits
+79b5d936427686fce739c6659d20cd78743156d7c350f528bc0162722432d752 .vim/ftplugin/latex-suite/packages/accents
+1c4a0003afb36b4a21bc1bf19474fdabda5720d60a05b34bf328ff40978e6938 .vim/ftplugin/latex-suite/packages/acromake
+677547aa46abd78676b8628231279a5af5702b998e88af8fc218659942365f83 .vim/ftplugin/latex-suite/packages/afterpage
+cbd725d8d8a51a9b9116e7672cc616582cb9590d55f9ac4963a1568e11e05f42 .vim/ftplugin/latex-suite/packages/alltt
+d793b666db6ab5fa5e74447916449099785a7cba1ae60ddfdb0a7390f5a6335a .vim/ftplugin/latex-suite/packages/amsmath
+f0dabc4cf5a379c7d6ddf77f546c2b0db81d4d397f4a2419bdcf83cc418fd5ec .vim/ftplugin/latex-suite/packages/amsthm
+c83d0ef2613827c7c1fa8c49544590df65fe6fdbd2f9a7d544f4f05af6dd1360 .vim/ftplugin/latex-suite/packages/amsxtra
+d5777756b44e9d9aa3eb1cb1d3d1fabf70257c5ca62b41639abaaf8b2c05e2c0 .vim/ftplugin/latex-suite/packages/arabic
+56966eabe19363eed5811d55a14bf76fbf4622e95231531bd5e60a88813ee840 .vim/ftplugin/latex-suite/packages/array
+a92dfe8b038214a314c65dfd7d165862a57247da902d568714ae7a6833550e78 .vim/ftplugin/latex-suite/packages/babel
+5b0c5a9e4634b177d6a131bfca7ba5c1c3c6a5852fecc4507196a5452517ced7 .vim/ftplugin/latex-suite/packages/bar
+689ae0f01b7eb559654ef8f2137b7c56782924e39c0446b1b115abc6e24b1eaa .vim/ftplugin/latex-suite/packages/bm
+1781730c037ee48d6c345186c708345391579d528a32096771290462f471e283 .vim/ftplugin/latex-suite/packages/bophook
+3b2923f04a00ddcd922ccb2f20c1f1824c3837e5c18b1ea72d0a246ce95d867d .vim/ftplugin/latex-suite/packages/boxedminipage
+6b4a6392d4b3a9620449731d61c9deb4afafe699d27b1e9e675f0fe092a43bed .vim/ftplugin/latex-suite/packages/caption2
+9c9cdc0bba178e7108fb3c6813b818f1b99532915bbb126bbc959cb23050590e .vim/ftplugin/latex-suite/packages/cases
+b11d2ddce202814a44dcca9e0df5ea720c18ec153169ff73bfd9dbd439c57a55 .vim/ftplugin/latex-suite/packages/ccaption
+1ec2263d88816985656f2f7c7bd76b56d659172b22d9a097950101342564078c .vim/ftplugin/latex-suite/packages/changebar
+949c5f8b7e3b3535a67e1609e0e92dd40a1fb1520fb7399f388a2b76888eaa34 .vim/ftplugin/latex-suite/packages/chapterbib
+f5e59b969b99d5feaebc4b01989b303250ffa0f4b924e26e500f58f0649454f1 .vim/ftplugin/latex-suite/packages/cite
+e4b8a86ac0af9889bb56403d76654e80647080726c76dc4aeb3b4df8edb7857f .vim/ftplugin/latex-suite/packages/color
+8db7495dab6092a9469f98f7699e43afbf9c8b8fc8646bce15f8582ae9a950e9 .vim/ftplugin/latex-suite/packages/comma
+7b231be487121de250b4439d7e9b9415fbb3708077a83af19dc13a0ff546812d .vim/ftplugin/latex-suite/packages/deleq
+20a796b233c6da5bd12e4cb97f169a7414cc19310d947059e0437724793f9f5b .vim/ftplugin/latex-suite/packages/drftcite
+1102b1030c00d8302da77c8733cfd84705900a87b07594df63c58b4b4bfc46fc .vim/ftplugin/latex-suite/packages/dropping
+5f97d74c74e63d2b35c4cf940e8a1ee5d4642427ed234c03e00a70afe717e506 .vim/ftplugin/latex-suite/packages/enumerate
+8739389ff44008b790fac0d7b1aa51f3c797abdace31ee8f4b351333313f15b1 .vim/ftplugin/latex-suite/packages/eqlist
+03d3bb9343d2752220b6f822922292c3435313c15d790c6965b5981b24549244 .vim/ftplugin/latex-suite/packages/eqparbox
+e5fdfcc6227148e466a2c8bf7c84da229b9a0a09ec944c2f0afd2c84529f84a5 .vim/ftplugin/latex-suite/packages/everyshi
+30c54f5da1f34586817e87b707e6c362fb44b1eaf788c7553a91e8f515be9f70 .vim/ftplugin/latex-suite/packages/exmpl
+8c6ca6460159895cec39490762f7d548574896caf5bef1a1a06cfedf05f8dbb0 .vim/ftplugin/latex-suite/packages/flafter
+01460ce9ae75275d9c8e6339ccd11ec761ea9cbc73db0bc17f7aefa242417a81 .vim/ftplugin/latex-suite/packages/float
+475a88962478c3c432c1854a0856dc25027c1ee4501e897ef85a8d217d22220b .vim/ftplugin/latex-suite/packages/floatflt
+2dbadaf429d8c5667f42e957764ef88caa369330115b08824528839615891b3c .vim/ftplugin/latex-suite/packages/fn2end
+14b5350fa477327f379f201fd213579c88143b58f0f88b5f65714c6039c1aef3 .vim/ftplugin/latex-suite/packages/footmisc
+ad744d9d4b98c12823502376b73c0a3290d6b60d988d1a7fc5c9a2b5278dbaa4 .vim/ftplugin/latex-suite/packages/geometry
+b88ac941ae70b41da457e90267b691355097bf7273f22327f030bb8175b6df54 .vim/ftplugin/latex-suite/packages/german
+5f5b35a7add70eb2d21da9aa3525103438449619d8660b4ad002968fefce1903 .vim/ftplugin/latex-suite/packages/graphicx
+e0cbfce47a71e14a60150385979be04dc408c0ca461bc6cbbe46a135896431a2 .vim/ftplugin/latex-suite/packages/graphpap
+c691f2702cc20bd867397472b75467bb0726023cde5500868605af178edacdf3 .vim/ftplugin/latex-suite/packages/harpoon
+42a7884154d85c608bdd6ed6ba34a8ae48c8760836161470c857350c216fb592 .vim/ftplugin/latex-suite/packages/hhline
+6a9b1ea90db1d7283e42a09ad116606c0c0dc52d034e0e000a0f88c1e574164f .vim/ftplugin/latex-suite/packages/histogram
+0b8d4ea01f69ced3aec3bb6cb27e3af2311108abaa22e4ce7c14ab893ead9d32 .vim/ftplugin/latex-suite/packages/hyperref
+9b64824cb4f2ffd657528e107736b2bd225ebfce8e76fde96de69287c9c0c615 .vim/ftplugin/latex-suite/packages/ifthen
+1bbbf78fdf0b0cac5bbf4091c5c15c1b0c879a4018dc5224706f75de63c32d7a .vim/ftplugin/latex-suite/packages/inputenc
+1fa03c1f50d572df15041cc2dfb266b5cf76441b80a8fca48d9a7bacb3160196 .vim/ftplugin/latex-suite/packages/letterspace
+17036bc205e10126f837cac209f2505655922214b3cbf55bf1e99bec23d7ce8f .vim/ftplugin/latex-suite/packages/lineno
+8148df41c3587ec7f3bf015a7cb015f8517a4b4932df1c12663de2a4b92e792d .vim/ftplugin/latex-suite/packages/longtable
+cb2a3cf24a43596ec4b532410c77140428be629dfa75301a0b97635b981d4d8b .vim/ftplugin/latex-suite/packages/lscape
+66bc43c8cbeca3dc0c9e4c29e07a83ab244d4a21c5ec6b6675e71d737e3db519 .vim/ftplugin/latex-suite/packages/manyfoot
+9d7da9448de39210383ffc97589a7ec2aeb655418d5dc19cd26506ce6039cbfb .vim/ftplugin/latex-suite/packages/moreverb
+c78c796434d229f68c02c08443f3575a9a0e31d0c3aa82d4191d2d762208cc00 .vim/ftplugin/latex-suite/packages/multibox
+a03f52580fe3c2418edbdb7015b01786d1bb5e00dbabac056e2b5380405d5673 .vim/ftplugin/latex-suite/packages/multicol
+5ffed693af469a0a12db90456edf4883b722ecf9ae839aa14f025464b03ea4b7 .vim/ftplugin/latex-suite/packages/newalg
+ff02c7cd8f23c1c5a157c9766d7210ed715935d258e8ed7a63ed7dd0d2c3a0ff .vim/ftplugin/latex-suite/packages/ngerman
+599b20a5bb5fbcb34362e160deb05d1f751bb6c44a7c53157bea8129bb120a1d .vim/ftplugin/latex-suite/packages/numprint
+9461616aaf1d687fc9b92fe262be97d24c7c7b0ea47cc274d1817b334567ecdf .vim/ftplugin/latex-suite/packages/oldstyle
+b6dc4b47fc27e0537ef018c123b43c0f2176811d5a4260134b9c435dfc260d16 .vim/ftplugin/latex-suite/packages/outliner
+5b6241534e75a08551459bf9122c8cfae865a1e809e144a118e49994f5c2ef58 .vim/ftplugin/latex-suite/packages/overcite
+5ffaa53f24952823d332c722ec8706bb3b0d9e0d5668ece1e87dcec286d12613 .vim/ftplugin/latex-suite/packages/parallel
+32bdeb182ffb96a89082eff3446eca3b1f3a0bf9a444fc5b70014712cf17c948 .vim/ftplugin/latex-suite/packages/plain
+c422d092c619e150a4e1f9bca7701fa3a7d9f8bb13116895ef9455cabd616016 .vim/ftplugin/latex-suite/packages/plates
+9dc3fd6ce87315eed1a7a01ad36f65a36d27987bf5fbc1b855398d46d630b53c .vim/ftplugin/latex-suite/packages/polski
+0c33007de67eb2aeef6e24309583ebb980a4b3986e558b7d5c4a0116410d452d .vim/ftplugin/latex-suite/packages/psgo
+63e7ae9605ecb97b952fdbfd9ae7faae4d8ccb6c25ba65349999c809ddd50435 .vim/ftplugin/latex-suite/packages/schedule
+d629673098a1272f1e39e8618d2d20f27047530e6cd7fc92b63791b9d0103d9a .vim/ftplugin/latex-suite/packages/textfit
+f695b28473641b2b00202dc6f37a5f68503d72b6dbc52a07984be2ac1a06448e .vim/ftplugin/latex-suite/packages/times
+172238c73b7d38bc69a265e15299ca70d4e030d072750afbd90bffee89e0b655 .vim/ftplugin/latex-suite/packages/tipa
+3e825c4158b9136bb2f2d2b2fddc61238e65414f3b6355fef0515d6aeda0472e .vim/ftplugin/latex-suite/packages/ulem
+49381c8def7fefdc9c6a34071535c40344bb01eab1e1f1b24b1286b80fa84277 .vim/ftplugin/latex-suite/packages/url
+8c955c40a951f890e977fcc17c8d7ac30845f4681e89fa0c732ceb2e83718b91 .vim/ftplugin/latex-suite/packages/verbatim
+69f562079de2dda57e08da01f4142385be3c781ec22ebc5ad1341c858093f7c8 .vim/ftplugin/latex-suite/packages/version
+aef6b43f56fe585481d77bec56b73634b30d46b8bd7ee76c0dcca5ff2b0815f2 .vim/ftplugin/latex-suite/projecttemplate.vim
+41293688185a7065cc1ded9c3a7c5b7c4e2ab15b35d2ec97b7f9dce76614af31 .vim/ftplugin/latex-suite/pytools.py
+6a5d1f08d75b9f5d0124912e741afc040ccdc19f45c599cdf87842fa65173560 .vim/ftplugin/latex-suite/smartspace.vim
+c28b5749879eab5793eca631874b65b212f86b676797230fa7176b34b803c937 .vim/ftplugin/latex-suite/templates.vim
+f4979a671d21f76e513f507098a3f14f62f3970de4aa90e8f8eda79446dba994 .vim/ftplugin/latex-suite/templates/IEEEtran.tex
+c3137fd5cd7f72e0cfa8aa4dac1c4bfa10c96c5eb3753f479e92fa7ee7b4a8c7 .vim/ftplugin/latex-suite/templates/article.tex
+e7b755b9d7382e01fafb3573928248ec55d1c2f05359e08ca03f46b573f222e5 .vim/ftplugin/latex-suite/templates/report.tex
+9cec5283cccaf9bfc4961187f2c3acd3918d83f0ada02e9e5a236f5f29616f81 .vim/ftplugin/latex-suite/templates/report_two_column.tex
+7c4bca820c758595ff4db5748527a64ddcdb8f71e5480d93f012fec5a254cc66 .vim/ftplugin/latex-suite/texmenuconf.vim
+77095ee2a6e4e597a4fc073adea6a713de980ca5f7ea6274d0724b76a13fe760 .vim/ftplugin/latex-suite/texproject.vim
+7c71ef72a35851f6d4a71e97471f8f9bb4df225a1f0882701f011269d0e78062 .vim/ftplugin/latex-suite/texrc
+978d9d1c4a35691f72b61855d8c64d8bffcdb2f04a3002eaa390da3c788cbdc0 .vim/ftplugin/latex-suite/texviewer.vim
+697e796bece7ad92ad4ad31555f15c9bf17f9edb60b4649bf3deb8e32be1bf74 .vim/ftplugin/latex-suite/version.vim
+6e11c3340de1bd9161e2f2097968cf704e79cf2b7b321bf60066f0481bac0710 .vim/ftplugin/latex-suite/wizardfuncs.vim
+adcd438a9679f5d112115a4e6f11da1ff5a026d2f966db7ef3ef74bab6af626b .vim/ftplugin/pythoncomplete.vim
+8143f5ff319ab039d921c4d6eb79107486b5694af1f5b45d329cf68568fca903 .vim/ftplugin/tex.vim
+33428041046a1a9efa8c53fa05a15c8cba00a03c92297280ca016a8fc9d20e7a .vim/ftplugin/tex_latexSuite.vim
+fc052b3afa3704f9a4e663e870bfd904fa289b9d056a477306db023677f14cc6 .vim/haskellmode-20081031.vba
+5f1766593401d1a7646648fa50cd479bd787366ba323f9dbffc55cf5774573ef .vim/haskellmode-20090424.vba
+b22204322a8efd0fd6f4c22e2e0fcde3a79364b77fd80d04cb1b3b6e4c26f60d .vim/indent/indent-r.vim
+e11fa9d3e0806c30334daa51b1d70258136fc8ae5ba5f51c202a0606f8bdfc57 .vim/indent/tex.vim
+b2004ce00d8912097659a014f97365f76dfb54e82dd6db9606490b79f2eb1125 .vim/kde-devel-vim.vim
+48e8607970b09b1bd4d4fc32bfbde06faea91cc7fbcabe925606378fffcbc1b1 .vim/ltags
+1da3b2084d567a2100ea23a7401b74146ba31ea09ee7560622715ec7001c67b7 .vim/moin1_6.vim
+1a07a32c0fee4efc8688bb991a751fbb88eed8d641f462e590bf217fbcb7384d .vim/plugin/SyntaxFolds.vim
+384bb5f8093651e24945980ec95451b12ace0fd6a00a8f54ad7d7970d9ec01e1 .vim/plugin/c.vim
+a5d72d69868610ea7f50493048b11d8ec185e439e215589a10c588595fcbe02e .vim/plugin/filebrowser.vim
+fa68ba43affb82e664ee683de54360af1e7167fdcad132627afdf7affef77471 .vim/plugin/imaps.vim
+2d0d1df4db06c149fd219927ef0984b2066c3f61671cf65cfaaa10057a9aa0ed .vim/plugin/libList.vim
+60f20d52b70b90fa6d97828c40ba0844a0596d9a04a10ac54cce8b6cfe20ed2d .vim/plugin/minibufexpl.vim
+c2a61b9b68bb1e2cdcb0084ffb35fc721c4950f544409e70615557aa4d0f72bc .vim/plugin/openssl.vim
+d2adb32816e3254ae03ebef88b5bebaf9ffcf414fa7a001262be455fe746c320 .vim/plugin/remoteOpen.vim
+1e787f60063780cd7ec8c9311ce1e7748f3430c1f32322a5464ca8d54e349933 .vim/plugin/taglist.vim
+32ebe478747bd0d4657398112f9c0dc701e1cbb2cc4e7a498aacc24c49a9d2c2 .vim/syntax/django.vim
+ba4cea3e3632c47c91f888c08761aac42d52cf57df6153e07d00b978093ee68d .vim/syntax/htmldjango.vim
+2ec13ab83be45521f124e470da96c468f816e62994391fbd346965406efa991d .vim/syntax/prolog.vim
+f22e5ddac972af6b24ed4fc81bf51e6d901b34340386008a21c578801490667a .vim/syntax/rnc.vim
+450850a3248782deab1c6bb4cb12772dc01d679588f10d3995fbe551fe2991be .vim/syntax/syntax-r.vim
+834f67e6539363420a0c9e11ce16d15ca9d9f96bdaab62e5230411ed30864641 .vim/syntax/tex.vim
+7f07fe53a981b9e78749d1f33238c8b28317b91ba75138a9755df7cffd4d6d12 .vimrc
+78c614d41f5f216ffee49d524eeb8aa183a244daa084c7bda7ec61347f76381b .xinitrc
+e78859325cab3e3fdb148db0850f76c8b7396b26c7764275538495c0a0d9a187 .xmobarrc
+c08472b208a955be59b39e325b13f715932a649b8a18fb3ab46380c4b92b090f .xmonad/xmonad.hs
+d7ca88df2b00187ca2fa3f60065664fddbf1449d192808d8bb9b57af8d27df36 .zsh/func/prompt_wunjo_setup
+ebf7af235f15d807b0ccb54eebde31cde3fe24fd389cbdd88c08f4b82bd29e98 .zsh/func/zgitinit
+26882b79471c25f945c970f8233d8ce29d54e9d5eedcd2884f88affa84a18f56 .zsh_logout
+a0c451b022ca58f94d5115dcd4ba5b7b8ea18ac5f86d37707bfb82c752fddb16 .zshrc
+d5af534d5d05a48601d3eb221714367ea0d002a609572f3ca1d9c508ce533edb Makefile
+7496fd76af0a3dc71a3b5281c10c1bdcfb24035659a8ca2c32554543109df0f6 README
+f986f0834db5f393dc0f32a4420fa130c1097aaaca8d4a21ce5fbb5c76ef392d SUBSTS
+9fa3f553f2bb013cd3a572e27dc8d32c46cc7364d2223444209d3c2b2df1582d bin/gpg-mounter
+dca4a952c59d58c26a6bf7f8c63c91fc0e7ad1339dcd6fe1cad84c6d989c79fe bin/gpg-wrapper
+7dad320fcccf717c10c2babd0fa9a8aca61590055c86bc83a74567576349bca9 bin/mutt-notmuch
+c887ea51ee43157e5ec2d94d9f7d7996863ad75dd4d2179ec0734a5fba86409e bin/run-mailcheck
+dc38f1b4682c5a471c6b5b1e8d48f97d6321cfb06cbdef43aed177fe75207e94 bin/update-xmonad.sh
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQUcBAEBCgAGBQJOSDxNAAoJEI97+PxKEcl6Lign/jfcDbFB8Ekgv25lz3zU/x/9
+oif8CyfkPR5592CULMO9oQTm13EAy7AaTb39amClgHzr5ABPeYMlH3BnLV+WPFDf
+Uw3PkS4gD2SSx5YRV4NRc/2TfRDy9M1uBNb/PWLO1Oaeo9PFFfwGDBgUCmBJmVEt
+uP+57RnIj4GOgWIr0wilqifo6kMzxY9B3rCjV8ttJDMNqkRCvoXCOhJkNJCQ8PdH
+LhVl07pKj3kiVOKgsh8kRsGdakSETuR/kvIqPk0RX8VycvlWIEupA9QTUHlfwL5I
+VJH0oM5koQg4pUCOz5kAhDX+D2wJg3PX1VEkfR+8TzD8xUxdOqu2w+l55KUL/LQ1
+ZGUOk1v+VcNWFWLyT8tXi8TfglSLnDfef/a0ctcSG4OWHAhHUZVpE782sGYDooo+
+Yp1vdoCXTadDyQ6IFEwOnVx87o1+3wxhy3oMw68pIo3LG+XVg+jIACwg5S8NzZy8
+oOB03xR9d5dWuPzNSRy6cycvwhRp0wEBJQT+AeTDtfI0kkiBbivT7vSPWbnR04XR
+dulwtdZ9UOJMtWMkvHCYGd5wqkSX8S8WKUmqy9QBsrgwCAVJf/8gs8S5YFsnq5oo
+dj0+cFLUeEJk2xwqIbxoSFN59Fgc8LRwbZ+G6RA7mYL3VGibs4of481aIlmm+ggi
+s6nPEIXaf7lUTfTF58tPxO/yo2K+/jmnTLqc2g9R16ZH9nl6nZtynyFfgXUjOHXK
+6CuiEYwntH8835FsqFlsvmZCo36NgObJR7WvSdJAX+cIhVNEprr8IvLaHJEJRzU2
+pbPdnj95BDE1x1C2Ynw+KWoLEM4RqJeGGkx+sjHOvE18ONRpLMFFrdHDF9ofPxLQ
+j3pTqYuo6VdrLA0S6Ge3CdBJORUU5q2REUWef192W7nBmTtp8JLg3o7lgaO00Y1D
+H5gH8RKFGp3FimXDa2yUzZdpWktqXT4mbhEmGgxR115b5l64EA8avxyamd6V59HC
+iaJ6e7xIChfllShxxHHxe6fJZ9oLCvhcTaCxAR+PRAhWJwJ9MTXEtx7FqivpiWUL
+UgCnccQT5r/OF1u14Xa7+37X4FJF7hXPenW+XzucPfAxK2rAosCbdFP+CvhIz29q
+n3X2S+94owvCRybIdYTPOP/vqMdL1I7z901Tn/T/ZUhVKKdFMqizwW3bUg8IpoUV
+dGAW2LADOT38lDPOgWDLccL+gQoYn7X+T6JuGtxkB0AKnFxtlJkt3W5BgXZuhkeK
+/9Dvab6QU5ePGL00y+qS0IGPzWooaWYnesKl4OnXZ7F10H7M03Ti/KFtdy0MDvVU
+xCDvJv+iEhL3H4+1ubnjPFWG1uzcM+2ZFx3kGtD4CUn39Gjn/WfxHrtuB99u3UgC
+Rp/AMTSP8Zz5/aLLRSB/PFj8Fp8F4sOzasCgZxdfmfmAlEp1IGGVUnnE4Dd6j0ME
+G0AuQ+SJ+X18AuqB4T/14e1Ila0zX+Q+BDE2L3kthBG9r795asj3Q480ecdeEoir
+iWUrYi+xHuaQPEWV2U7fwVpVxlGo6Rter+WeHWXYIUGwbVQxwWhyLj8bg+Lts9DG
+iWVNCkneDGHj8517wJ2/p8T5l3IvshVnI4UOuCnbw8KtxTiYwpYbTBRgR2kkelrp
+MYKLTccCii3mbYAjInbGA/gK7jyGFUNpFY38RmYU8y+gm8rCTsIjrF6UzbeV0CMc
+2sxLOyeJzNr85yaVnRBc
+=1CRZ
+-----END PGP SIGNATURE-----