lambdabot-5.3.0.1/0000755000000000000000000000000013705364112011773 5ustar0000000000000000lambdabot-5.3.0.1/lambdabot.cabal0000644000000000000000000000516713705364112014715 0ustar0000000000000000name: lambdabot version: 5.3.0.1 license: GPL license-file: LICENSE author: James Cook maintainer: James Cook category: Development, Web synopsis: Lambdabot is a development tool and advanced IRC bot description: Lambdabot is an IRC bot written over several years by those on the #haskell IRC channel. . It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web. homepage: https://wiki.haskell.org/Lambdabot bug-reports: https://github.com/lambdabot/lambdabot/issues build-type: Simple cabal-version: >= 1.10 tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1 extra-source-files: scripts/ghci.sh scripts/genhaddock.sh scripts/GenHaddock.hs scripts/vim/bot scripts/vim/pl scripts/vim/README scripts/vim/run scripts/vim/runwith scripts/vim/typeOf Changelog README.md data-files: scripts/online.rc, scripts/passwd.rc.sample, State/haddock, State/Pristine.hs.706, State/Pristine.hs.708, State/Pristine.hs.default, State/source, State/vixen source-repository head type: git location: https://github.com/lambdabot/lambdabot.git executable lambdabot hs-source-dirs: src main-is: Main.hs other-modules: Modules ghc-options: -Wall -threaded default-language: Haskell98 build-depends: base >= 3 && < 5, lambdabot-core >= 5.3 && < 5.4, lambdabot-haskell-plugins >= 5.3 && < 5.4, lambdabot-irc-plugins >= 5.3 && < 5.4, lambdabot-misc-plugins >= 5.3 && < 5.4, lambdabot-novelty-plugins >= 5.3 && < 5.4, lambdabot-reference-plugins >= 5.3 && < 5.4, lambdabot-social-plugins >= 5.3 && < 5.4, mtl >= 2 lambdabot-5.3.0.1/Changelog0000644000000000000000000000237113705364112013610 0ustar0000000000000000lambdabot 5.3.0.1 * support ghc-8.10 (#192) * support dependent-map 0.4 (#193) lambdabot 5.3 * support ghc-8.8 (#186, #187) * fix Setup.hs files for Cabal 3.0 (#188, #189) * fix alpha renaming in @pl * fix variable capture in @unpl lambdabot 5.2 * remove stats plugin (for network-3.0 support) lambdabot 5.1.0.4 * support ghc-8.6 (#174, #175) * @pl timeout works again (#173) lambdabot 5.1.0.2 * support ghc-8.4 * #155, #163, #164, #168, #169, #170 lambdabot 5.1.0.1 * support ghc-8.0 * support haskell-src-exts 1.18+ * better oeis output * #141, #149 lambdabot 5.1 * support for dependent-sum 0.3 (#130) * IRC reconnect support (#125, by Nikolay Amiantov) * unmtl parsing fix (#129, by Daniel Wagner) * #131, #138, #139, #140, #142, #143 lambdabot 5.0.3 * compatibility with ghc-7.10: relax utf8-string upper bound * numerous bugfixes (#121, #122, #123, #117, #98) lambdabot 5.0.2.2 * update Changelog lambdabot 5.0.2.1 * use QuickCheck-safe for @check command * ship ghc version specific Pristen.hs files * the dict plugin no longer looks up more than one word at a time lambdabot 5.0.1 * update to monad-control-1.0 * if ./State/ exists, then state files are stored there even if a corresponding file exists in ~/.lambdabot/State lambdabot-5.3.0.1/LICENSE0000644000000000000000000000225613705364112013005 0ustar0000000000000000Copyright (c) 2003 Andrew J. Bromage Portions Copyright (c) 2003 Shae Erisson, Sven M. Hallberg, Taylor Campbell Portions Copyright (c) 2003-2006 Members of the AUTHORS file Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. lambdabot-5.3.0.1/README.md0000644000000000000000000000532413705364112013256 0ustar0000000000000000# About Lambdabot Lambdabot is an IRC bot written over several years by those on the Freenode `#haskell` IRC channel. It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web. ## Installation The easiest way to install `lambdabot` is from hackage, by the following commands: cabal install --constraint 'transformers installed' lambdabot djinn hoogle data The second command fetches the data for Lambdabot's `@hoogle` command, which is a thin wrapper around the [`hoogle`](https://www.haskell.org/hoogle/) command line tool. Invoking `lambdabot` will (hopefully) display a `lambdabot>` prompt. It is also possible to install lambdabot in a sandbox. In that case, use `cabal exec lambdabot` to launch lambdabot. ## Files Some lambdabot modules maintain state. The state is stored in `./State/` if that directory exits; otherwise, it will end up on `~/.lambdabot/State/`. State files of particular interest are: * `Pristine.hs` and `L.hs`: Environment for running Haskell code. The command `@let` adds new definitions to `L.hs`, whereas `@undefine` copies `Pristine.hs` to `L.hs`. * `offlinerc`: This file contains a history of commands typed into lambdabot's tty interface. ## Customization The state file `Pristine.hs` defines the environment in which Haskell code is run. To customize lambdabot's modules, unpack the lambdabot package cabal unpack lambdabot; cd lambdabot- You can then edit `src/Modules.hs` to configure the loaded modules. ## Using Lambdabot Lambdabot has a number of modules, most of which provide several commands. Type `@listmodules` to obtain a list of module names, and then `@list ` to list a module's commands. Executing `@help command` displays a short description of the command. The following sample session demonstrates some useful lambdabot commands. lambdabot> > sum [1..10] 55 lambdabot> @let foo = 42 lambdabot> > product [1..foo] 1405006117752879898543142606244511569936384000000000 lambdabot> @undefine Not in scope:‘foo’ Perhaps you meant ‘Data.Traversable.for’ (imported from Data.Traversable) lambdabot> @type map (a -> b) -> [a] -> [b] lambdabot> @djinn (b -> c) -> (a -> b) -> a -> c f a b c = a (b c) lambdabot> @pl \x y z -> y z x flip flip lambdabot> @unpl flip flip (\ b c f -> c f b) lambdabot> @undo do x <- step1; step2; step3 step1 >>= \ x -> step2 >> step3 ## Further Information - [lambdabot](https://github.com/lambdabot/lambdabot) on github - [lambdabot](https://wiki.haskell.org/Lambdabot) on the Haskell wiki (outdated) - [GOA: GHCI integration](https://wiki.haskell.org/GHC/GHCi#GHCi_on_Acid) (Haskell Wiki) lambdabot-5.3.0.1/Setup.hs0000644000000000000000000000011013705364112013417 0ustar0000000000000000#!/usr/bin/env runhaskell import Distribution.Simple main = defaultMain lambdabot-5.3.0.1/State/0000755000000000000000000000000013705364112013053 5ustar0000000000000000lambdabot-5.3.0.1/State/haddock0000644000000000000000000022221213705364112014374 0ustar0000000000000000KU][s8~׿HMd79Q&'}JdI#If "!kPxO %^Ծ"uĥhZ=hٔ[NI?~t6m3 \;%П9 )RhYA8Ĺ4+@~F.Io=k]]waR5 ;OQj=A۔YVQ@v㍉Cs^,h; \?j_9]a)5B2FKܾF=M0rPЫVe5Hj!hVB[~NR;x5πJylwV.< Q0M(I%K9UYyՙ5uٵ D RD”q@ T DµPBraDRJv0GPCzqGRK~4 Fx4ä!.MiOsT`Sw20(#2 lh>/KE>e\tJRT|\W,Wן9(q%#0` #lO*7mޠ(i@}oKVm-}2a)V) ݧbj ޵tExIdnN @^`w&ZP_7{o_mWFϔx\r~{{>+^4c~ %HrΉL=ƾ eyn'9.hi7ȹK܍J[!pA!e󼇢Jdy70#-R&.4Rse]DBeMA st'mPʥPt2'2cYTma>?RE~ILbev./K y2@\Gb/Ʉ8/Į..4b\(z^ :RXl#Llwbs@%Ҫty!r3]j4EI_^JS\B}I.k'eitQIkG>n)$eMy=zU?"6pVC4yh%Tڑ\\0HXXglaa }tj~nwc(dċ#uT䋝)AHKgx PiB5Q,4r9#{ޖv?6Nx;mu8X:Ѳv#}2zq!_2lC%ֺ]ߵo.q|gW2S%aT 3"]O@"kwv%bfmm{x/ vygaZ;߽ ?Tz"^[T5|LlUaU#YyO=LR])#(!XeK ]7."hp6f[MI(q'53|? bFȔB"_1WG +RQn\eK Hzhf[ yw&q@2|l.t}sG艃]t@E@&?4+-{ qa v n贄.+6=.dvI{ 6qQTjU@cDBM}f&8 @0F^5h T/xu}2^X| И~qR"a9 )$95_) 5 SXcJ+TOi@ X_ͫKcyT\KFހ LӝhS OG¥(e $ EIq"d`j a+*,~ը bKr`^ZAulD=/$=lC5鰤㗲[+ҁ"qAZG}P0^fszAI>JyB|2qD/")_ ٶy#/c218ĕ`]59 j>J._]ϓIס/vUoȲrFӁvlg [9_vt_dF6>o=@S7,yonO*K2u8E_ޒ< 42ԿWXmi0 ͅM*2.}*g > JB(>dn |8Icvnx$:($>tL8$p$vV]TXȪLjkW(_ 29w:nS cnЩkʸ~<Qs ye񞐅! UL2mңqK3w`cuzgGڍFv%;#,Ytn+ AX2-C^裱˘!ےw,5( M$z5@$Hb{1 8ʠ;1Zc]ān rh Hd1ʙ\E ;i5,mVH9dl_~Rп qJ5D6)jc|93ezlXNJ g¨{dnh5qӊp[BG{JئN߽n禵*)ŲX~n01;o#9f?:~l` Lђ(Lܩmu+|ks_Lˈh()j*s> '0 %@StXVl OQ`0U]_{=@+M6.cyC6&#^SݞbM{P1\`Q fڻ4cX+)2E$ιiZ6mBAP &k[\ "@ S!;O$,Ap1M N0͢.IuWe~@FX׊E9S/_FvB,'~န.t3'}f0P A6H8/aB{LY6u%tv"!xF@`{RUgಂ%X"Qۥri vr9T'ixLw.HKi {0uS}E9A@sAN ENu $BYYO򏚢 (DdDaMnc!QD`*z';A+F)vds_Holb/&*( iU(BEOvcLYL((x%9I1pIP5QdUJd-^#bGs (ԋ:; `=X+N t`>3+ S`=+Q֚`ҮAH6lX>ȍN%E#O+(J۷/wPS韧Pɋx>-N?N>+~LJKǯ'.'9(:gq)2^5%7wgg{jXKfEDؗ!kL<퐂RQ >N*7Ao@Is*vi_{R*O6 }霺$Z4Dm zOTYZ.4dmn4t'5&4:`Qe @"m~/p7ww}~GDRB.frq`pbdtN+Mʌ>{ɣc;ڣpQq@= lDz(wqjiGW#3 KoQ;'lu$ZE^ɋ=2$ )؊]&P[CʲcMq!Iq+4n0lH |VխN͵mցGoaMmp^Ҩ ]&^>T]n7,V,{43[PAP;jIL1sL#׿W{ SklE/.K5wMQ a ; BxJ;Wi-қ MF08+`9ӈ3O*:E76(mf!0V-KJgkR*a8ŞÄ|E/#&0s70*&xL {JRIucLEt(T#Eoۑ8+4ر* ugMpFͮny (nv8v;h?5p]u15]o2uJn2b%mkdt?mOL_Ge:[ZX W|GܘUH,& tϯ2:1TO- j2N4ce`j NܭrbBuby{ ( AD83z-}-j6 ĺӉz,qHIL}k,zw,{L&X-+"+X{+'fklU=thgRFuNo2:02Ep%ju>?U%cI[AֶD)6{ѱו@7zh~4q&^ݑ p8JLFݒϟCā͉ ZFP|jPx_ xtE芁3AˆNTD)>VIoo?T@5||GCMNB%"zB&3%BΔP %~TzǏJZՕ׸x5OBcu0x,#L{~O_z$qog7C UcޛV)wƭ59ՍiZd37tn-k2֠<^05MnzE4H&_Yof|ՠ9uk[?#;HQԚ2IFݑB6%ӬohVc>5%DKI{x\d;c}DKRW^)b1bA}C5D-9GA*#$* GVZm _Ĵ|YzR]@*a =ϟ),T"RG|ﱬ۲K̶avävߤb0?q0$}$IkcYM3t M(u4Ӟ{Ō/gOd^*A gVȖ]!6%)`埅Ne M`v9+]F;E`_CĢSu+uHČe'{$$/iX/>6WОTK0A M(?kGQ~Uҧ(5^cqabE~ع&jI2\L\}1!4﵈, NQ J~<ͥ O~RojGh^.l!cXБUꮘ_b_2\ߧc8Lrdء]j"I^@z-uYE$]64p#sO?P+ }v+dolhHSlFg6S?;p$ ϝ&ړ鐂ʂ>Tй-,ݵ1w(=11d\{ShiLmU]$ܦpn6vP_FJ>q!) L#3FB%ђ(*9wr6}2)r'e/~XRi;Ѧ_z]сkarIG,&%5|ށ>>g^#o.oݍZ8|_軌f_bqNƃ`9fp*Y) pVW,恧G;Jy:h;([WY,LeC}1$45p/13%: ƀGiLyb+_\Ec%j27YJ(uU9RYv-Lj,-H,9y 0%*_)XuRxsTz B%S뉻eJUdIYC9zl*Xѿ&yp쐊bVce(MRVY*lU:}u ~"P6<-ƙ3bumYR} 6=Աsq52]O^s]1Ww qhֽa+hK^=UE|> k.׊|tb| Rz0BשE0},7 I*uqg|raAuR'iEG#></A01#NS Ea5p?*#ʉJg0Ss3*/ŽnB͠9s;chX"OQ<VN cI'5b)Ʉq;ңP,gh4mq~ixgVrZ7Kw\t}?㎭=Fl]ݤ >N)tזc$5Cxv5O14Ϙb,m4'\]ב,&47tLp wC/lr0?WGʋuWxL;g1Uԯs8.THƔ,cMbw1lY]lbԝta&4NR:OVٔ( M? * d,RM\13_ x1v~z}30@#>{dlD Nx*\K.7HV8)=t3NFS*Og㩌 -A~|Jv B\B;EFEM(,Ob} XoVۖFx{TyMkK@yG0Jdw*Eboi857#U,>UG4L6~?bX'Pc I&Ӵ,KW' ^&0߉ͽf4wZۖ+wS5-"v ~rcI[2HtmuçYm竻tCd_;j.K սywo5i^ۏx*.:T~(U[0WTI6ZT \T3i-4WÉ4(NR'I20Vk]Z{VwCހ\┩dF}a2ek?wv̔;R"$䍭}q|1EJ4Ht?pú?ԂkB?G9MKpĕC&GI H#ITl&9k}xDC+Ar]NȻ%RCS>srcߙSycJd==SǑ"(yXn'ןmeO띝ւd9 QN% BH=6Gf?ȭ#*O GoK"z(f,NS#BF3ySYg\)I `T jaF|_P{s;S\:RtK WE@TҨH䆮O~T5ϫ]w2 ÉY^G2$6wf7xLW5Z*5 l2ه[Z#&Do';25ڻC #j]#u(SV p "t`y#VYׂ]$Id|B|gu,g+ZIk~(&>H6&"O[n v COvR[- ݬ0/t,k+/䰓 xT| - yClJؕP+@_*Ƕ^5R$#u%sz?T""2 4ԇ~eY'|:7"f s߫XhL`(iQ ]D/egB63/շK'5-2eH`3i0B<^a}.8C?/pG;!%O`$N(a@V"hn ߸0U/,{"1qY`7H;x]!h]I, xTm!C.B֌$dw;V/'ޥ?WMU$2 d+h0$~&a|F߰,tD!mVHblzuDD~\ձ~)7Z"J~~HAkؠ<ėЇ%"^ j=A]K O*Hd\eAͮ:OX1 *A:4NPLuƘҿ>ž N."WL z ؞6|2D%.rǑӻtm3iAYr& %:v:1wÑPADV}XΘQnr@! &ش/% /3]Ӥ.ʈղ@F#VFbB) ԓ,Yi3]ʎWeS|\nRr5: [M_^.YQMH@I/$\g*Q}kxGp\v Vjn H7(lt!8gc\xu{f2Yᄮ'J`AMD!Dq8 JsOy L-f9;'zGŞ6gRq@e.<ݼ#` ƻ$hǪl'{O R2*BSy=(Ŝ\ 3mtƕ!FdN  };JPu8[+1erFN.QF"аn\WIJ$hZ'Izm5 yof;?Qg:- ܪFo. Ք[dUtFO~(+$ wS-pp!4 |;$:g7O!i=³VioD>ړchQl0ύU2Vcoc-J?M/Ѳc5ʻ$r͹ln(E5\>7ܯ{CĀW-lm8Ҥ۲vlsh\Y"N᳖'0+)-EZȘ'H *?X(mJ/YJLcɮ@5»4ni& 3Kw=,R<ѽcM+[lא'W*^k *`LOJֽ`ˇpSѱNdU%O#.]P^#M6cp_ҤʍS㝬X~_k3*%US{gxμ(p tGZ?O~4}uVB|c[ xXHh[0s[⽞TïGWϝBG:xn\F'{>z084|\GރXvFUW9DvÌvαByIVAY/:WT妁L(vl)ˤ{rInG0=J)7|2S(Ӯ}ds1SW⻝,ʧZK/tt?P4N/cP2[( `/q]"jN3sB/d# [ ml []mlTp5}UL_U1VڴM!SLe8ѣaXvM)Ij|O))z5+Jt+*.S'TT4Ji̦z. |-Udt @Nק8xdx'YSV`\%r_rQ&++7JsNb^ȕ O]Q) "j [z%oC+uBB*|PAݞHUo% |nL:JVUWa %'ꓽ=ՙOɈ0f]=1d$' Mq5}(u=(.0HĶ!"P*ځ`aLn ^eTzH[㭴!ȺGx][sޣS]e\f;)MJ#O9ì'Ɵb=CpL䭫$E᳇zY>ZHz^+5`RɺP4s!Q,"|f&^CIL+edC0`n{P50GȢC9FWΨ]+.ٍ_0nN<(Wž\~fʉ\@T6c!s;JEwTnvZFgq*ӱ{ω)=>M5+U+3@sŋ#afEծՀ'T`7O aƌdyQVIvTӁW!2ƳhYZ>MƌO4qϜ/%aMG\CL=׸i |xY?|-xkI_8Uiߴ;w*L/t };fbI+< ^x#*yMSCOpE=?)lL)&ur{j;zǎepI$^cϣOQw4z.#b4W0q%K^@ ξGo@oU,R_JU09)J0S/ PU~.2%O~EQz-VL A%s /X)Эa7q$U{$+P`Z"-r_t'H } @JpeiJUZ{Q+Ԫ*^ͬ'h'oa8Z/˭h+wZٮlm1@X"1Hm0w>࡮:% G:X:JG4nV,{]D&D"Hd(ܫ(-WY-*%_-yUt߳ M7$+j92WyR99糖lMOk^T|p=5, 짿ܦ3 %XHE򚨑tH( fչrIr3oRA.q~٦5BbH.$VPb۱S|I`6U'c,Q̂ǪF 3Z\dBĄFVVIEDT/]JGg$OڑJbDJRQzøPM(P2r0vrAnuw J*CM R*P)BR?"?P;Bj4Hr()TU\ )QU*R G=F"Acme7bdP<"? /(T|Eh%f;i4*SN()t Nhf4xi4rI4r4rĊn'sw!݁}P>Lh;*kN4Jsfj:vœ;Taνэ+S'TPs'S1s'Tr'UrqUC!T**T*jKU%R!QP$ |SݧvX=T/ǝ{:~0zOg@h[Os W/R4vn,̕=ivh nLjxǧZ qFFL?\Yp;/?2_LYP+[V}33M%"b%5f>o Q( N7"AE3 %N0FZ1Ye c藾+a$0h E3Za}v=9V/z[M^c B*TB(bQ+17>¶ٓ$if-s*P]aM8Qw]<;q:`]|I*C4է h8 B=J7OO 1s }s\w8Cd t(%Y-#fnĭrYNW=H(e`Ld /:OƼ+r~gf-D >Q98cgO:ڄƑgPwg ȏz ϋH}13~X װ~]P[ cܹ~BWd)ӅQ`p_U;l a>L04 مgX@$ D=އu9bכ!]!e ( .׭, ^G,eہw彿ᣡ4̇.P\ZQ$enr1>ۧH]W~$ȡt|&1!pl7슪҈qP*4VV )Y5"E,7裡ַfޏQ~="pvCM']4҄oP7Qm6 h)g$nIӯE(|L "?QIafy%FĢ\:*;9Tء0Һ[ꁭ%Q!N_M%?4v9Y)E>j@nQp@W )IRa@!y>^SK ZN udy)bD1aԅR@j|xŝ:;GCTHaZ&i![9N1N1n@P;zO6q8JOu.%N\da ЫW*ՙM!We/t讅ge>y!K;XpJhaAiK^f{gJ 0#t>m=czb3g .e;ț<ͦV7j&^5T]5+~=eItuUDP4{֧>NUB(Y~p%q$hwaa%`.\ }0B <TN2n/e1ރK:Qh[D] 'K Q.Ɵ*UwSj,q*I %>07IwEL:p cBGqT R- b*K<89:g0=])ߋGA} ZB[#{s'@|nkM0|;4{ RjO~̸! _!ѐ_Hjj7߃2zh?3gޏzؙ[ŧ-7vͭf'~"T/ .EZ/A'F>2qR*Wy;sPlDy!W<6oPh;>. &3%&3M$u| (/ H;p- u0 _,A*j}ė?aeӃkW=BWIN<  Y1 fdo`uN3xlKޜ&bRC~ێ:ĈbٻP5ozt¹dJUIf_e TΦТ#%ɹ,E|1 N >i#=%RX H`DٰIЅ̰IuIaVNI*IJ%=ͪN DXARedK 5-D QvX'pXKsOH:̞Hr)x`qu<(2VHKMwAb>h,޹_=罍=XЎw<8fP)s#h]Y3*J)"~=ؕD$0 l+mixm+[A 4%9]uQLR~IjW}WJu_7Ջ n^Dݲ8z"RC>⁓Q/}O84Ju1(ggx׳܉}cIg:>0q.ZO[.eهY ىVF,c(0HF޼f@暧A b_}4}ĕ@ڱ6NE6Wޏ1=uσvͺSP L{S4G? >^zy녺 j5_g]4V^|*Եx6JGHKKv0ḭ ]~ad/>B`ltyt\KjM[qJCMS9uW̞cfկ{OK%{ =!=m|ؔ0l匿ֿ/3T oC9n'I= W~.Q=&Ɍ!ۡd܇VU#OAzUg-PWX˔N8Z}8o2W 0Y{6hHHU$d433)WτGYAay'^Lӌ}`Vwt1_@ !v-Y2; Nkg=i`W'ĉn0Y#]K2xk21O]NssLc%r#5O_ MaNo#W]-c $otXx}EAN¸{%xo^0^cuv/~ntry+ٺ~9 =wrEsseY6}mYzAmn%  G׺Yc+}o Piti' ZkK:I@_^Y?TH̻{Z͏s o㬤7&ɷa4hf Cx%QX%JJA$I>gy0L4 Q8`Qi-C=zT*FSk{TINbG@2rzBdj]k! I0Ly gFnI "N"/{<\:U7dو:+Sx$n藊j;IJd=Fi ۰bM+M"YvĿN3-_9KP |; LN7VT+Yj*Ue2Hp=cJf}]KfƝ)qXI~̅mgu޺{* B J{1BTq+tx; p8떇KNjYeķVjJw=ꐒDzIv+1ַ!(ޏ8nw p%3ɋ|t.BeKHxT:R5vDhq/LjL漩x{-iz! )5I. bx{9š洛/%$4F;'9;`q0}@%(D, $7}n$`̒)Yc6AFse|"a^]b{J "}_u @Q[*=Uմ{Qpr>>W`KP)fdž"?P(1-d]H;Y<*ls, X19r]6ul׉B21q&n(SbGt$$tk6g(Qz"F~ǯ͋Z{ K*\MKN"@-=ԁav@;=rTJ䵫Mvf@%igۋuo?Xu2 @}O@sjwNr!‚Tr^ڛߍvm1\Ew|r L]{p<+$uܾˋEJGN;e yku s-0'&{_[r`P`@0 -6a sWB /!N@B(`J^ÌFU-|xJ22[>de6DlL/ĩR67_qzd&&%1*=DUhnek UIXv8AE->9 4xV"=}Sɼ\4{fxiu:WUQBM =zQ>'il+nqA|386 <;i5HY?:^OK&&+p4t#q:lZ@/[jUwa?;vB@d͏;4{6`fwf'IՏ)+i@W)D|isvx ɮN@PEJ%@aS#hI;fАqxQFpnsZ*e?GbN\&pB״sp {9u>5S8$$Me)$; 8S7 JLXdUʏ PbJoyCu>V|~|&~KCVT9T{UՎZ!^ $Vs^ * ZnYOqQKڿ(w!I I*\Hҏ&,$)oHFb9{bxuFӍǸG>QO;IXXIG~- 70~(\,!u{BA!.գj>})&gozOYJMke˓'_Y^{AhHqkۃ>I6WEK%GӔZLif%4֒M|$hXBvO@nnك-~ 3m`%*aU4 A;Q_B΁J>fI0R𑪓Om:IP iv#$gU@<+,@C|g%Ǧ.IHuyMNYp׈5akKĖZrFC$fx R֘n>p $@R% vU;yN"ķl 55"K G$t=JNڟ pIƘw)zNЏkaݏPƁ}= SMPP0hVyWhIL'9bȩx5c@ ?]/YHNÂB"Qi\=G'ڮj2G酺nc{G4ʌa;$IN w$uW秮j1Vnʬ:K@-A֠!<`I)uOe)t\*fEHac54nj4jcճPɍ8HvmV ?\qYˉϝ{:MB`nU uF^hEv@ t'\v:GQtA8*`=^D]'[͎Qd꯶{4 t?V2DŚn-!ywdtoh?FKcnn#nc1q9# ;\drO}=xA3WxOZDg$ߺIK9Q9X]&y#sW'þ`??/- ~87YAd/zaG'@?]$^Ic 1EƜ0@3|tӾ43NG97ՉdHg/LN3|+ ~sRdܛկPP@M,//ڭ9JW(]GFIď7K?HLYgFWEDӈF#lJ֛I[D!<-T䴣 Dod$u{W֋rW5O *JUw7QwB=EdÆT=y$‚I;dz2S'v%n %^Qu R]\T?WFHXPT.<ڤ($"T+ϺqRj'ȕZ|jl.WI:NOΗ|=А5עaOaULPOq]$VהּBwfZg(tv@-.^` ?$q躟rG.P|eįaPZ t/˒ **' r:Rw:y](H3Lo!= gB ^hu1((% CNOSH$'}R!] {.`^۫d:Y+dTF 뮝y(yx銹ipz|zܙj왋0FRWԻIDHJIԌAV09`c9^'BﱅyIZ?u㹶#܊[jH,C"=!8 ,&duf?XZWZS"^B"$hkU[s1OS` urh{}hQ*U(>w$zݴ [\Y*QWKxảhj|z>DwY&c8R|MQj:E]RmK"Ki뗪"`\p:`JQPWz2% ϭG\Ϛ* o#8Jy>V/aX-&.boaتW0Fa+?yS;&:g2[2N>?D6Pv{{GPx3B==KFoqe0&r,<$"7V6g@C,9F#,-E2Y60\p&e M]j0pc^A-Fz[vTYٗS/WyD 6?s.qoR*4*S,h-/MEc7K J)}dB!+Mk12 ]_fiΖ rW:kE~REw竴-עy/"А786D5)';O[]C#4''U H!1u;I!cuWG3"FJV.5}!*YWZu=e„a8χzӢg-41&V<4ӎ4A|.$^Eb?Gj%$i2 |S0hPu,R ]Q#> U Pd}R>[aBا*+*y΃U"D*0˔!s>fԊ MHR)H*% dO hh'4r, =B!9ot~~R(}\;O|mP."~.U'fy]K8 Z]IlB|P¸rT@bʺdDSLhp duC1&rX*AKtԗ`q!đteZwΣjr% I'NI;)Q'%mx$aQ1x{g+^ڕڸteHڭ,v>7{X0s)z,sVsKe?ri?L)Z=I4B]sh\ngd ywǓ>)z0+!DyJ74[y=NwP!]| {m5AV8kqyC?)lCIOW=?i_y}V~{L.*~lgƽ0w1#)i$%Rd৻etl' tq ],82IbQDYaeyiLrw+Ϯ*\ ',L T-Rep0opnQY ?Oz.e&zۀp q́I g億úi檕sz1D#Y⣌sҠ@bZH:3yΕ"O)}2tݰF]nGd0]Ѽ4÷y,! -h&q^0 P0ͤ<ýDz+.y_Y%y+9)}2Z`HV.3bIMȽ,b_i_:q _7I2K]ɵh=ÞQɄ M~D(ߴ&:ˀϜ%VÒKc+ Ahʴ$E =I]<]ZsHC繦uܮh F]rc~W觫XA]㚵 Uh_zb7cvH,11sn2Ey'7sT;y]YRټ36V9ٱ%_7'\x/ ?Y Nu)Ø\[UBB !2 5FWKZ*A;®jgT,[#dE>7eoR2|8Ԙ**5i a /:1wqW3و+{r& DFN~ !O<#=B#/#jJ2JZV\7B3&7PҽK+T/Sp MguO;$s^ d~I8Ptj@9 +{ X ꮯ~in! =ovƍ4a6?SOUt.qaoϢACxO(.EIJJio[r+lB: @2,9A⡉OZ2PRhBد(GO1*Z[=Ղhsϸ[˫{&PX(9S@>Qچ+S>8ţ>]VߣU.o )/sHGug^ثq%re8>=JkU``I&D3uN6d׮F"1+$/OlpSJrfc)TI:g7SWfb55,fChQhi@ŕp#q%=^/FUBjQE )C{sz. 63r BB#1E ^Py.ܑzB3ݔ䏺W Er053nkΣ6yjPИh[ֱ9G6c-^:m,[׬R6ɠWn%ɋV_迠ɞj3Zo۲  fq\+E_BuzeG|Ab ^;fI#?_~R6 F0厛5Ϣs8֤Li%ךex8)h_O 'j94wļ?|ǁJ8Iٗg7Dmd]#1ok$Ɗ w?$X^&GId2o4W7MZHm#>ↅ)~ZqOQq1G2||Ip6o|,Pa.P9Cz)5̙[%WN%])[K]]=񿈅hb 1|J4$-N(gS׆yI$+iFc>6Ҫc@e&aYce 3|*W4g8U[R0G:Cwe2ͧǒgZ5ux#FZ,w$Iەl( >8(z f(sU|Q:%Zb Q\?jH[i NCj贌A|C_T z3`V7_}w+V ک#F1{!2OEQ:tZ/jf{B XE}v+?؅LEY}2mh{[̕0+(ϒnI:~Մ߬ #=/BQP -5x_3}u@Ir&52hd?L% 4mKȌe{&b7U~MOXs,wq鍿x$xTǘ~-'/)K"̮ 8c.)[j|;C\ʹ~{Bh\I%겺mQQ3v+O;x2Jqæ w`ntV?']6P^ۄMEUՋ%K?VQ@"D(\ #_ _z=dė^DO)m2D|Fއͅ*N6Õ.۽.푗m#+~_7{WF8zJHyAJꙞ=Bh;2u_ti@K &R)T:[CO/%(˥w9:!PCaYr5 d.Q.)00+nH^zYioh\?!2ץ£ q/~2d^/2l5], m>Hwn@eK )uU&Af;P:\XJ@(%d( [q6;r)PrU\{Ň"IET^S0ˇ0xz[=|iT3jγ9|8.F?X=zqs:$'?k "L$BPZ%SCTBA$r*p Bj3M J?9o?y˗3"/J:/?:Ϗy\|'SS1ldDqg4M]@\n;|,>4gZad%?KAW#}Cg$v^g-' gl#NzH A5+ S;|`=b+uʊ9/ _6e3r*ū^ͳtch1jH6(y^,%Vki$۳J-zo=y/6+\~F},)< _'X 80d4b >T"vGiB఼"˃c̄1n8~28 :yh؋b^ ;8#3@]iJa\J y buxYk#x' "o֍y)/\$Az2qm`SށC5kJW&JS'tZ@A8%Q5efqYV.Ű᭙`%M cNWiy'$~4{ӻgWϑEd?.Y/{ބ3E^*["RHc3P)g_!L6=wO(aDҡ~z_l/o0?d6yL_YwXh]|JKuf_ z?>e+4wqXXar~@TJW xmQZ3e \qw*>印:8jʦVIḶqR-qzQw+ u'Y>n9->U7Σ7 tBGx_8>6 <縅r *\=HdD鳟;gw9 f3cW/aHuυ}5?VhI3q A +|m<zK">I$e`AS=s,/Vΰ9dVq@C =[{6?O]™ `TNd bJ2‡p.. <~Ԓԕ\*p/}{,#7 .EY wJ%82p~<9]u1Qri'?FC5_W8>9>D=kb{D ^'u1i8=/ &Ϯ&Cj,k6/d:EWgl-sU̶_dj4|-iGWg.kmc8?XjsikxS_(K`'ەpTgYE㏥]pU. v^,⣳ {P&|`]`\w(O:9?H YV]oO\3PZﱝ$W TP/ l}I4je:}U])m+nqOUݜ 'uHaN~^z81=9̤EHrD 9*rݛ}4|=miZHOs䐆Ǚ^kqʶiJ5ܐL[Iq[g ˯^ד8 wp9$@+Wd9"B) J, &k\[ 0)Ai)"G}bؼT}gC dN}7I-e,7뺴Ԥ'o=Cb%TzME1P.$3 "RS>6Q-޴elWwl˒5{u=\ݹ*Tˍ噺mm+e7C:l+a{j1wG5>@a? Yߍ 4㏨B⃹wmQ5;b@SǍ1WJ?$"-j hm*MOAN'&<˒ 'uK^FPܹSO炙4o *f?* _Zl6iqFYF="Q ^yDnCq# B(*]RDF%STCq@áDUʍ z k$/^0ˡoئ+ F#uSwc I_5=E6(7Dә;E%:ݖ4TNFOSa-L ~h]gL(rY bz>3Qrєaj g7Vf)n#8ef#Q)>q]_rřtז+ӶO8.Ym'^rb?J6;؟m7$33wffaRќ8(_ׅC(P +nJyx [=sUMM{#_88P#:b0.Bp]2@#pn4 ljc}u,`z# \d|\gʽHEЈYL3 FKt$ b 8DDdZΒ7e2J]g4P./mej'qCtx捙4a:1PQꫢm&YfςcAy^bfN*xy޻HzkNz;M T8#0*~>s~ Z#  )Fu8$N !rˤ<0~NDa3vfH|ܢ##22 z̐%JwV@>u3̗)俗N@sd=0Y_mm̙9?k0~GӻjhGͷ9vuX%`2&*)LW{hk憉E&(KgSۡCVo 98[,ckA?QJy8ܼ3=WX?djzs퇽x٬SaHd_c˂n]wS f93 <\!I\7.qy;lxDl*ӧ%Kp?.Un.^ iKq{Q,zX{uR*jk"6`m5W(f3 ׼[ҬmTqmS鶲-xYF YjXhK&:V_o5}?aMK :^H둕†{\;`ׇ?~I ˡTAʒ4h0iUp^PZ2N-@E4[4{Gt4D ,|sM;y&z<9?EHZ/4y3YMnkX$/ 7"dWgϋRvQ*cR|oYZxP)y9:ᩋ^;OLH0M#qIsѽ63Lݻz/]"zD+v_k(|2d,M4)fOXx"PdNNRzB >vwlIag `MUetc]BQN2prz!HUT]>۱mR_#vW洽0ɜ>N~23[jk,!GD67i=jfրtsy#C88]sA ,>-mnVf6']ct0hKFk~l5s3\c6|a1܎@LftxssloN-@*dOiIE]URV.ޛBW~TW4.vk1\=ʕ s%B9ڏٸ=%=g)\Ւ;WU,tm?n_G?8S1t')+8H \S\s >ri$JR&m2tUIpPU;F-JAHfzIn߶f5sc=8ǙL';־Sy'&qRGdy1*Dx4b˥/*{0*_R[(ٹ}Z Q@ <,$Q n8'違e:Fkq6Vy [ퟖomHxɤwDۘջe+x1†2Pye ?vo5ͶDZj%UXO-gA}N&p[1('m'|Uա3+)~U']FlegXDp@՝<5A|Y@s sn.1r\$ ` C+ZLJ#BG2'b@F@|"R{ ȼ>i'B+,S#fc.Z|99,/49Fz|2̕BA֤LPW4$cF`7QaXn^FEjJKdk()z`4zm\9HŻ$,[7Suvi}}0m2dKPP=t=q(Hrx-dg[|;: oQVnP/'/#cl>3{N FU,d ^[{e6ɲ+hޫ+5j?+N6;W<ץ %"Y]Ҝplmy9X[ 5UZʍUeA\aȎBy0EXw5.3/S(7 ʅx b&7edM-&J })h ȸ9!D?|Bve $j/ꏗK7dw.xW/(}"NTzL~uK?}YVMǵ#)"NNA+f^=$\_ ;XU%iWC@(D-{*-^fQ>o;"/HϸCP (5^vGa܂:UJmjUm+\*!B2STId@2@Roj4Du3U΄TjH7J:|쒾ɊPtz98u£0q#(G͘TeέL#8=/r+j\n[͂aQ$=1O05B;r0Rco:&/ʣڡ8N{kW:L+y`#QRm^л+X yi sfܪQ4ʆc]| ]1 soüIM P,'ji甋P?D2YTn3GBgsOh+~5xk^"i*Eyqp(T"i)4CA=H'SMofꦩ's\,;h\XԤZw7U)kD82Gsx {a]S>eyKc[Ҟo˵fg݇hkaq| 5Y]"WcY'Xxi?0i5,C/̕*.C6p Nbr[SiJ?j@3tB Thl`2 F/N|s&dj4cG`g[mf;cxne;4zmPd  ^}RL,H~U1떶X"28Ԩㅣ^ QQq={-#uجG j$N2|R7JܯJ? we+U$1 >@(%3[Kio냽oCD;~ƃXcdsC5^#$N' 2bLِh@M/\LC, yRR8BzJV%8rU%$He^48!ug{GùëHg8M}m%ʁz_fL/>y4nJ.iہD7en{Cj-'/]KMWY +5D+VAK/ *_z=嶷˄#)G$FG$^[t2GX81e[' VV<`@$V\c3Ns0|ↆ"tEoe)ꂊ@r^R0."V_ ]&\ǗA(ٝN RW %a.]اk+9^3\c+f,I>y$@YVl+HNONhNQь$Ǘ ʮy ̳kqᵴ>jKkL-AD_1 #O0Hc߾-g->Zf?@$6m7p nYe _Ly"dW/ t*MAB@,җE7l,@jXakQ6EÒ|Ձ5:~jz*p9WtWu`ֿ^)@,Ǯǿٝ5+#C^•֊uEHD\ . \#\й^ȟ5y'wu_rᰒriO:\XVsQDgup]w3MMi! IZ'9aVj0 x)hfPލh."J!SǏwQ t& jMﱂuw`F#XS[4v>y -S!jltZ\q~p2ۓkso'bBࠞ )$<.xǃI\pֿ&vEM~sV&S ;>L@ zDiESP=D_ K鬮 eR܀2x";.sJDAw%?/$\84%m H$Z1kvv0y3=0.f|۶,,om[ k?a vG~Jai?gZ[ǘٶ'OkKӍt=P͗ QDǤ希eњS- 8mN*^q=Q?혡 [ ]}Ȟ</&E,ٽ Xjdy!G @'DQ ]<3Q} %(s{u2Dl!,^RB H̽~9}9ۤO^k?(9L!)мX33*dfZxJ<8_KF?~@KAmpX4#LdS#E惎뫟ΕG?.|?)hUߒ>^Ҥp>ѯ:yrq!8QwϠ75 RȽGz^|MDn}pmrw[ϕ4Hŧ-9$_s*Q k@ &[on?J1N"0o|MN~&??AIbAAi~\ՋU.V" V}LPO"j*440Pe?MM"W#d/p Ph'I}}[0[LΕh%=zG \r+ h|ҋLeb|:Ͻm/b6Suė^DO)m2TPy\^,)ʇb' XXB(jN> N˓ck»BtX9k^`v>A)?yQ^p2bc_mw2\P]X~^Ug>8maBH#hXEL]+7o ^YNzI_E *^Gx N*Kd,MpIE_m܅I͞|5х49n'uo'R5\x'õ%y(hd5#%9NGwo.>1^ѬxD+bGDoƭ#"DU;%rdtNL 09B2_/,trȊ@jp|bnr%-@DzF> _JPV[~_MT"[`/b U̟#tr8^ᄚx àPjm󺲴|Hkˏ0f>;'X)HA'J@UB:Mf8w$;eG qB\Rxrzb( +"Aԟq<o@pF,N+USTEv/ƌ&CspP,TE8).=8h qv\9[8ٓObЄ'k&|Nȿ1\%fLf$a _=přXbKW pozPg@CSP̞ ݅Y3R+T3!^(Q4,ɱ4¨ RgX<>]V6Ӳ$N;;wBc3xݸ;DV2cP w=')V0RI)Bd4UBvUv<;oŴ _OmHg@c&vd |:C s6VNu$DbZP`VVBg5F" ieȉrK#靸A]-҈kyrךBX@Lhg'Ԟf҃Jîr}ee>Dp/@McSr7L=(\"ޯJfF܀Rp?/*-VeymnC!yt[nD_*@A<]RK(z ζgStEx7ȗ@(\G1XF1ߡ.$(wtɣ^d%tJ60ph y8)ΡLnq)e^f΀GSwap읗:?Ѥ:S2nʬ_#y]VjE=;\?>8@_8 /!(8Z^SuTXk>G#U2e9Ɲ92=ԏЮsăjngƽgn9;HUpůQ,ә*(%7z,IPs&,߲83P| Ds}~ #+')^Sd1[9>>=Dϡ ?`E `Kfa~7A/i+:s3yɑ`5/Hj 4]yvyٔ{*',4r@0 ';&"=񥒖.oafZ|ugx>ĕM'XEu7\05L Tk (<=%>D dJM5hxh"-S"o.b[vRQujPb'|~GoW]j|g7 H1t/%{+<E%K|2ha5wHJZhHK6X3t%쭘ׇ4| ٿCd(8Ob'UI~=JmYJ;KNbM|G竃 UJ)U ˜ Hhj<4mW x׶4KU܄ʻ jBhcөH,OډXVhw\bNqQvap S Zb !M&:?d`3ĕd,7:/Dl"q_מ2HF1d8}}2q7$|X׃yfYYȩk? Cgvf~94]0Mb*6"R/3 gGp%xC9#zQw "wd[]E_>CU-:'Ecqt86_sشSmg"U * 5MCW|ۆi8Z@,A>py3h]ZrιFH=QQgYq_I(pe-:hU]X"K7QS6 eC{];ny067S7&bhtt=\M:U3=okq~-DT| C$z:9$kpb]g1((('R^X\C8ckkP?i,EJgniV{hj6VEDݢY4L83Fo9? sv 09gDvN٨|L0)Frķo ~W!cN6 -Dհ§O߹ 9|^Ttb^vtWx+g)Q۴4gwNo"yn KO> =a |_|a\//=B= ovw:yexaQZ#n6_v"E2H|;C'OkIpҧOg4"`_[w5W|x]\ƀ2qb~ZYq3IJ~2qk&eMUzq-E)+e LXZuHa S0bvILMsꥏV #R 5U/3"/hw_}D_& uyqJIAhuutGW̍5jD7ܢӮ߁j)S\Az~5CM(Es:\*O]A2QWFzDͧ?j`CCj_;(Krΐq5Ûpk2\u H,ql.[I<8ixmxW5w{~~| U7Aw-{ƇR/7F̲WX0KATu~vW?k` W6qCN*@ZGՃx#8.T/6ā=:N~U8$~?/q3̖۹ayM~PL: E3J$oz"Elz8!e'8Eh>y qB/lKXf0+ֿ]7,~Rxu`_ DۡIblJpGB(۴GqޖO(o!q{ 8Ybⳉqdei9N8B=wqcb7o'N/ˇש2u'I9Ya*B1l6P( '2řx~xօBBA dS6ӊP%M?](ٰ>q#ۜD/-h7ROݾ ;u$q<3$CA2/6#dN2\WdC|@?pZds۪%lari獒>+ E= ;+Prk,+YߓO9xg:| 4b K *m+ W/=+{JKOFh'_=W*RD. xQ nϪ"f p5/q}Zfhy: / fIwAC3yA9q3_xy ߜ#b0gߟO5g40%q2Ix0V7(gBJT[n["xUa~jDJ%qf,_E\5@Oz,&hyYyoU9c{@ FJKrWӅ3CR}㼶]{rˇ}J0Gn,sx`\|/B>C)(g#&Pb=B~<8iOChq>BQnpH> (9CA96> 8v =mNPZwi"l_nd WL2?\$uX]dt"czs^NC&C.өPJRbb c|eT#O)N$5`֐|\(y6τl+Bα>E!(!cxd|^WNN"$E$ /*&8c)4LIDXqWR}`~ ٝXFH"8p o&#/&\E,zfdeRa,x/!޻v: Dcl;|A.0TH{k{,= Hf7Pi:A/.8+ja*3PAlFE5&;lts4=` ٰޤYLt$ ֶ(EX(+hzQ hG`9E)|5ҁ7shOT ,)=JU$@tKԈ> !ey,>x3mէATQI_TdOGX9("a*Pc2 b-fcz0EŇ)"=Q `?e$H,V,4 @Hs;8yh(J.q_ \n(~9"Ee98֘.ए)xr[Y09HbCS:X~vV`cP?ErkVunVcK1;\;0:~|FQ%HjU֏kOW5ʒx4?]Z" 2^Dg`yMR2Q+ z`F|v| ٦o!`AkGioFUiڗ6sLM[^"iVLǬpA 焰tǤg :\ĴW?$W/MW?GʈZũ35=UZ|jIǁC $ln&c&H}WGz;iF uW2nK0w 539nd෧1 ?zU}Ez?JN] "G[Ͳ,큔}缘pYodm GMLoT+ ĄKS/\ISqi3yנ^sԝ㚑p84x%鄻hq];[S )sv<١7n%gĘR?NKV3❽/u+4X=BuQ7XɾRs^htOZZD݂B6AW п6_u \{P-8߇Y^ҧ>M5n6/ARS')HW4zgN(39wsV#DM<+,͜]v=DK|2-@y'/J{^r @ňTr>z{~}+ ׾NpPhqSN3=sQKt6N:%X(Vl4KW YBq䜏K0uIQѧ~8Gܯr]}CwsNfA`<Ob(miWS\צ[4'`#J  )k83:#E$ҵ o7җ.tAy(L+9E1S 3u1Px)@y/.0?ZLyǍH8;nE||a\/=B= 3"_%8xmn 7+w 2pFYF qBQJx~&2SD4q׊۾e|j%.L&ܒR?̐`!`VCuNM5(#SBE.͒:If'ʪN5ueHFZ(,;Cу _쎗TzPR<>SBx͡H)0"3Ke]s^DɝPQ_)݊ v4N6'yJ* C>4W5:TƌqWo/vjCYcHb'JM[-Eiv)|m9x4 ea3r@P ƳMN,|1) ̂YFrMօv>%",sS՝ŧB~pldX] >5MwBPn,pF 'ׂU@_uTQMMs U l? z ψ((JojP^CJJ;*~+YKRrԶ.OT}|KlnY0 1̓e1+5T)Rykd8+E }ۃ0bҍh(3[4Q7p_}v+V 4p0Di]kd]/StvJzO4AFUzU#-rCJ $)6*M c3u:_=Mq[0"Vm{ 7N`n}z}7%v]oԑ7%54Po\ٸCBcVߊ&NN-x_ Z6Μ7Bp[f}JGg(`oaì~ E QFPR߲o}.@rnexɌ? cG(E{+bd[/J|_x$%x_Ce xi@~aC{kԽ u+nlr{#[2ctȰ"5O}Æ{Qe7g'Igʹ!tRYp5t.]%,3r zjP&5l[j͐ Kncc!BjT۹zl'tekFrj^!ꃟ9UiwڡJcB/BŋP8Mk ..X m'f@ QBc51q'nE^1@~I(PXd((OuwLAetf䝈{h\LܣEʫqfM!STO\ppZ&r|AI;Ye<}sfMGvߏOIVWq*ߖu+SXvKo5/^y`{**-WSw򍷸%" { wh#wI8`zQEs/dZ&VxW>=Rmކ {`}WŪRep 孑. JY/JWʶME'%-+($[)nRnFF;T(=e(o{]MJ+و6"!%'ApY=)n_$JqsmmT-Mp!-:7p(6FJZ} Zn%׾[MVr(n'[c ~""Y2[^ymu]\`QChQݡf4Q %.FcI+b`A՝;YCv5 +u&u(Uto.Q6=Ux KRD@0v7U\@R "2jv L/q ՟lP[dM$]G7BIl *GWX*T9< lPHvm!ldjӏzJss)a_B\ :(KW$b]Y_eJws 1vU!JfqA CUX+;E]/{"erX\ʤsYVx9-\:"ŏ,|Ed qI|oMڝ\`$Qm:$D3+8@;^7knsd=Q0Ӷ'q0 "#R*ƛS$˙)U<IP%وGLP;ː(tBQr5 d @~"+T݌r Csku`E8=QѵU2_-\S;!AQiOAE O:2X{%`uBH!?ՕipUty98t㤡CChp]*X,>$;$.,n6`#|)LUwڙkS*n +&we7oQJkQZ/(TA'Xne),Ĉ$*HbܹR뿪J*R j^ub;jUV]+UɒI1k?&VYjp2!KJpuw$53s9?bvjh\D92"ezejuWircy 2՝<1gp24׃Wjk"ɓc64 <2Tic|P!r퍣ObCa=x@[r#đBg 嘞O﫞O뾞CM "̊_zp}@hnDˍu!5M;i+aK"P1DL״pPSU6 CNTƟq*8UcL"c1Ql} >bߣ(< >b(Su)Wqck4>V*7@<:7(>wy3KmQ *5!U]sOyأ{Nܳ)2Ѐ'")MhI0\o1GG񂮚bC?Jψ[Rc;jNfc8N1Uy›!0r#cGӑ#dKr?jzOe4*c-ڡ9:Sv}&E{f2z#Jpt«! Xzw6|ɰ |3|L \5<̚BGH{cVas_`莐 Z%AHToO4M*Fa\g }U9B'D]/^UK߮ ḦBsf.U>ߕ_1σà8%!&`~yH=xt9K1ya )plQOnB;l`%҇?".M uAy}0py@;k꼆;sI7 %h A B[F*esvwf&ǺzL!]\^Pe(:n]ȤvVuǛиv`/t:Hu 7%f{BD`iF`:P܈O=`$q#=`ՌF(̢-U9 f"а=Ze'%< T6A.Sߒ*9xn.H_23 x4/qza8#c#1FuLM}F%A'?}g᩻ƒK]qF>_D vB#sUwBBA|f53Q$xpB3A>pO1[1w{Db{Tk(쵂fP~]o]@m[츿_|5tq5W YjN=,1kK=C 2c!A#)@i.xaBS\.FQ=Fn(eAP(Kvx`C{bpvЄ'ڂ-9oO}pȕ<{Y]GV,_L{Ko OǼWrͿ} QzzPS12̓xP+N ȯO.7TuD>0~Xa]YDGo ծkm ;HDw9_.Ԓe:s(){:5]Bғ(n"In\g 롻?L\涫ϟP!X %UGyVsa&uv3{% mcy{jFc[,sf=PK4\~4yk(5~ Gs5e)֎F.nt675ŚKՕ)F dOCzFƙsQ!\2D)CD~]`=J2M+)FsdÜӌ4I/8Qq^s4k4Fw?9$mYs+U4h6[SskA( s\x!]_W> U{ XQ16S%p\׃3M Õ)'YFو@4LXD#s%M.`d½Ca=|i`eN%sm<{k 􌹜n-tߔ !"4g %QWN   a-p{, t+UH4-='`O-Z[]̊For!(mݱjq_Ip̧,[WNwiJ#~>n;`ͅn{q ]*)Qұǡ u`/#W+GΠ:t,rJd-Qp*sb(*2q)W!q46 SU X,?Bɇ0غw M(Ah\t ]!9S%(QAE/njD3L xݵ_˶w@kGQ4^=Wj{;^I6Ik$Jn䓛Eb -TzaY{>=д6=rLIӢv2YIRIO%ޖ1m 8mA Ʃ CX1yn&u꫻={mQ;?mb=zkf|&$!ęX,Yb Й$ޢ*vk."DNAkFoA;/L"A"H(kIT~EAON4N7[T& (ΗC%(k`}Kܙ>D͠yy[@/|ޤ=rKeF SX1zOpP.nE(@TUG8~oͯgt+jW՗~kgcH1y676-zW [5&wW_^ }\|8gW-bsOa}DiwXU7zPo.:2tdo8un$Us|\w@ ~=2-ѹ|OSݓf2p8kw4[^9OkG}}z؋11*{]j2=Wyv\=suEj7xΧk2|5UJ%}_bxF({1 [x<@I܊/}-x m٫1p<"p! @x#9E;p~@ѢEm5}>h}Utyb:b R>޶bSR[&\[c1BYKyVB˹? stB;s0F O3%¸~;&oѲxjUu'*%]0z i>\F8(},\W2Ⱥ䫥!QS%: z ,Cˉ[KSZߏ}P#W}Gv<f Z VF?&')8+tcz[SqZqohnlq^X;<#H ν9g^a^А;sU*FDSQ+n#M;ew@yc;.c Fq l8 |dNN׻ǭg[pukW38/ę0'ɺk#>S?Y)JRkۦP/"ăݣӧ]ߺ-/ߝf]%/< yLHfŒ$y?.}Qhier.-|Kxt.$I]>@5c<гJ:Q'7X?J(h J8P:…"' _چXڕTڋBj)Hj1LJ)Wh*!XPDrH[kkfV 8z[yAnO=9me/2՟tF]f OyD->c4Tv8Gf7>?k%0P+eҽ&{X(4b'vUh^3آ\f7C?gr(yaWi~)UlWm睝cNv5%67 IJ޺qQ/ v񛗌RX[ﮍ9ʏu+ @@~ŀ8a.im'hiIeb%F .lbhE[ٛ0$"y;!\Rkr.l )D@C WҒ#h& '^ۿj|{,?TZ>mݴ 8BF&ޏWl{(eCG]+p24o tJk-_l*s7x˭`CfEGJ1fѕ5QҴ:dr!9|MRtl 2Q,7mVUɲMt;x上%yh$cIL"|gRX`]Ґmn[ ag*cILKKM 5SCDQ4,C*kW}o[ cSĚ;_)ВZY*n M1]U4;놾X@WR]+:Tl'uMѰ<@?wݜ('w6u%}p4)XҏM3gbNZIIGɴ O+tQ{9 ځ4C'#E7aAD) 8ŝ:MuK_piY{s_b*\M"JSui+'\CXħ3Tk/}5Kx֒J{t 3 w]L\CR h1 8 QG hmlSV)dj6x3! xyf;hA7B%ԙxr,n4Q\,$:bXl8h Gψ%zb-At'aF_Mu8Yn|Gqsc, ҽ>!聜 2+쿳kɣy^?삼ꄓ +*i_akir.'qDҘ` Sfg.c>y+ EeH/81s;Ȥ 4mNZ@g 9׵8ʶ( Idx]Q8o?ƛCy _мS]H;d j"nUFè_QB-6e׆r=f&a̒m .]zIkGh@_M֧Js'jW axu5 7>lIH(OtELWd;wڌ9IY.;FF\biMaQnH+Qnt( 3Q`~tg ZW@AZ!qx]8|O>N먌ǒǀ*`vi+6f2p6]uD3ZA73LW3ciNlcE%5Rc:ܱp4clS =fL% -Bt5ִ7{?qrȚ~o/t𑭓ulC†Pit|*Vɢ;f S2X:)lEWXut=bzz{R󬼶 vU)^UaS3VSۺ®[v"I!X_ƠpY2V]_6̃&0B`Ad-b[/QtLoi .fA>ZtnZ F?nq7jymYK=`| lgvWH84Ѽ?i ``<7.)m%pw.-](`Dqx]>N_=0_\x ~wͳ'U8)p޽ ǝ\dxj+yV;*ɓC !.MBy OuQ >TXñFJ> ^z4=ݖ3ju͔{޵A"*zkDuC<:r o '*03XoH90 ɂdrO<`ɉ[EժVƃ Mt(7v1İOI!fl4|6t$,3(>~oVhicU!S#[^#1*o%zY$䐥̖>p˟I؏g,W0}+ۦ[WK~>4m/pR*oeGWPPJ 0̇z g wNW2yV'+~~*x/]mYeZj*a JRnI@3 u PN^lXC|D|Fl[*?dUzjEepCB*" COu>_'p`hO4㤁%0 HC{tP2X/*_||ەd 5ߓ8A .L I:crX5ck4,=eǻf)r hC=ڎKT\YS8dtݶsKϢ7hW[զ!TӺ[5&5]w~i?(Fb *jKtdݸ+Z|;7 6VOt0Cٴ1Ovxj(Ng[ (_y1~ЎIw y7H 6ƌb QG!#E ;95cs>O+;[FA,px$ :K>I&Y ɞ1+aIiۛaq'nû", U/@Cn؈ 8ZfnG\,qҠ_,WXeo '^p߂?Rcc]uB9?!w^rhk$ކIYPm Mqr0n&j.yhvXy'ڄ&i~/)q+}:)OZ?Mo<)|/ŖGJ<ʭ ƝC8 "?&-LZ,xMw.v<7 JN)}QJGsQQjҒu'oaB ӕ_/#b3K8sk준\!) Rw, |^ y=>Uٷ8o R@E?>-Fѻb|]O|֙9q{‡Z(HYh҂F T3phw a EE$,|:=õI+TQl4;Aq뛔Hǃ [B~Ih6Ewvun.놜w!뙘_ts8o}fO ,m%Ѷ-%9,6Pۊ#bye+FcH֍bm'L;/❬z}+hr4w1OqybèC)V S~Nkd[kM@Yu >3Kr~C 1T#ݥs_޵~+{R6gᏝ*Tðv6e-E8U,{E 2y Jb 6 3{h|h7VJj;9\/l/1Խ_1I3aWl+)rwn9ҷ Ыhm3:i#  i ܤD` PA SMa;E۽ퟬ)g4MheTIZW_P{e/ iWgoR.Kjpҧ|" 57p4!a_XyUP7N`I' xe+[іީC@_PXM~=㈹8qv1b*QFI pN"ΞtĘZ,9w.L=ZfIA?V-.ZeP9XkU.u~)|pr:+ /lRvVaǠN+ YYcc뼊R=54źF\zv5KYȃ6¼R7GIۜM24e H3&!<ȌCn!&٠`fߡ9T|x`ۘ\#"x#rKe!c) xZ~_ H#W͸]P8۳`6k/JIpB>1X]J¡FۋHUWX>|`"jkҬ7N{=$;V[n[Iޭ6:/r' nٟQ= Vol ^ÀYR43N}z듥Kk(Z?$]_3' du^v.]/v&7T^<1c85Hk>w*Ja)OQZwdx [P+$&`R;&xQPD=HO$rʉyam3HG:)glu7N^ 1& D:!AoȲY8hW[YֱΔN t7aŝO^ iRFpu06t l-UUQX*q8#r| z7[H}gxWML{}}x*FS O~[,ԜW /hCm"PJu322RF%bG(ywX71*1*Ij9}ZIt=y"oE^>zDl|t2ycD Ж#7nnAf|`k~ OԷ*@( !)(NJ`ײ1Z`lO-xf*j,su40Sz"*RuH\"_\_|j2û5p}nncS#գ;=mܲ @+秼'Re{IBr+F|vk9ko4P]$2`彦=G8?@YZVӤM4\id 3ZGm$-7Fi+ \Ea_(뷱 i H[ʒU@ RH0ݶtː k+V+pxKM 4Mp#HBH,LhR|]Gi8|PUK J't |u] bi}7F#$r` ?#Cc4 4zl.ؾ`%̡51Xuk`FBMLU36Ws8CW44/@#{hoh%;G#E1:c?&Z$Z"umeܘ)Le{#vx2yB =x1n4|j Л |@7H 7zu _ץj8u*t]3Uɖm>ެ$,w5%ܫKmYcr`@hxlbL'2-*Z *wi еUoWLޘQ韂m. vb&@?ko-!U%1\՛ yRWJUmO+e ۄr0w6p7N /7oڦ> -E?q1=wrAwއ Rr&eʚFc2Là(2IKWeX[ DexL@L Kxx148&EʒTY56 w-4Go(oL{ÿ?0ۣjg.Ga'WB걈`i-3n%0PS"K5&+JXB.$Mk6>\tQ#D=PrA/' *'~o$`#ٟ7 ge z[SrAz~PPy K"n-y*IЯ;.i=K;-ޯ񘡑ghóz@XnR5l tQϡ I{x`X%S_TWaԟjѩŗjMiﵣFcweMw&2_Ct]]&G`>FB! ?|XCP7,J?`=}A=ҴbKͼVy Ґmuև#`?T| jmuxKK)BN+nkԳ0 LiV`bq,…0Z޳(9+\e Y=M.֖OߌH%["MXDc [μ%R[pIJ5B":>E?f+zlmc˒y&dܻ۪{Gr)bG|$n[ u/*se$|Jj)++|9OYSkYqjnEa0m]Q%ͣuԸ;b.u[˽}ײh% O'{ R0o>im;4F>۲c &Ң Dӧ"[D/ۀp?`cchç(J7&6_1pC0.d+p@RŹ պ]:Y}vVp,p!(7V ٙ?ۙ^_MpdC4L.`"gwh86˲ K o!wl!He7uk4ˮJc:hhpp÷ %wBOaHþ6ex.;oNH$k!{#ۦP~!V|Fg tDn-*wZ1>\g /<ǴA!DyYM"kh g>_:cOtm' i6#Ab4IJ'W˾rh<16ki*f4pkZز-dcHjS@PtFY=|6iu3,i#2hŰ+g8&>hZg rTNr8!kc oh$ڃq.#1GtFqvbIdٴ1\VKL3#i7#/]![ĵPfHsQKN"3qh`xZ6#Q=ws{;왴v# pωf>'zhpjX=tլW> +uDV,hbA+^w"=O^"?s???5!=c~w2p+ nGĖR|E I}QLkRZ% Zo}P* 5ZԹUU%@ j}GM}, HDYF}7|2SÙ9ƙ ]6<;Ld۝a"C\RLm@yshrVqV m&\\ۉ93!Yy۬D//HOAӻt@=7*3FT^ 4sOg3`Sj-@XXRE S-F{~*w-:}\vtQ ua eq˨NX'*JG9(D*6m Wub]:G%(KkC"8=>NTxbwm WuaL[:G%( 3p.,8ykR +*Z5Uї/ܗ]Hݖٯ4D kxekxe)q#c;0qs;=#; J^~m.j٦ jqGMX V~hLc0Iw֔]Ӧu>X;XF|g:qKAu[DJdp3*^\ qqG:#+' Y- :KEIv~_3Y >;q)K1 OZ╜?D!O*Ul,Bo"` s`UӿwX5ӿ?h~g?-ϼXbgp'5K5Glambdabot-5.3.0.1/State/Pristine.hs.7080000644000000000000000000000417613705364112015531 0ustar0000000000000000{-# LANGUAGE Safe #-} {-# LANGUAGE ConstrainedClassMethods #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE LiberalTypeSynonyms #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE ParallelListComp #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE PolymorphicComponents #-} {-# LANGUAGE PostfixOperators #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnicodeSyntax #-} module L where import Control.Applicative import Control.Arrow import Control.Monad import Control.Monad.Cont import Control.Monad.Identity import Control.Monad.Reader import Control.Monad.ST.Safe import Control.Monad.State import Control.Monad.Writer import Data.Bits import Data.Bool import Data.Char import Data.Complex import Data.Dynamic import Data.Either import Data.Eq import Data.Function import Data.Int import Data.List import Data.Maybe import Data.Monoid import Data.Ord import Data.Ratio import Data.STRef import Data.Tree import Data.Tuple import Data.Typeable import Data.Word import Numeric import ShowFun import System.Random import Lambdabot.Plugin.Haskell.Eval.Trusted import Text.PrettyPrint.HughesPJ hiding (empty) import Text.Printf import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as BSL import qualified Data.ByteString.Lazy.Char8 as BSLC import qualified Data.Foldable import qualified Data.IntMap as IM import qualified Data.IntSet as IS import qualified Data.Map as M import qualified Data.Sequence import qualified Data.Set as S import qualified Data.Traversable {-# LINE 1 "" #-} lambdabot-5.3.0.1/State/Pristine.hs.default0000644000000000000000000000425113705364112016631 0ustar0000000000000000{-# LANGUAGE Safe #-} {-# LANGUAGE ConstrainedClassMethods #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE LiberalTypeSynonyms #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE ParallelListComp #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE PolymorphicComponents #-} {-# LANGUAGE PostfixOperators #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnicodeSyntax #-} module L where import Control.Applicative import Control.Arrow import Control.Monad import Control.Monad.Cont import Control.Monad.Identity import Control.Monad.Reader import Control.Monad.ST import Control.Monad.State import Control.Monad.Writer import Data.Bits import Data.Bool import Data.Char import Data.Complex import Data.Dynamic import Data.Either import Data.Eq import Data.Function import Data.Functor import Data.Int import Data.List import Data.Maybe import Data.Monoid import Data.Ord import Data.Ratio import Data.STRef import Data.Tree import Data.Tuple import Data.Typeable import Data.Word import Numeric import ShowFun import System.Random import Lambdabot.Plugin.Haskell.Eval.Trusted import Text.PrettyPrint.HughesPJ hiding (empty) import Text.Printf import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as BSL import qualified Data.ByteString.Lazy.Char8 as BSLC import qualified Data.Foldable import qualified Data.IntMap as IM import qualified Data.IntSet as IS import qualified Data.Map as M import qualified Data.Sequence import qualified Data.Set as S import qualified Data.Traversable {-# LINE 1 "" #-} lambdabot-5.3.0.1/State/Pristine.hs.7060000644000000000000000000000423513705364112015523 0ustar0000000000000000{-# LANGUAGE Safe #-} {-# LANGUAGE ConstrainedClassMethods #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE LiberalTypeSynonyms #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE ParallelListComp #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE PolymorphicComponents #-} {-# LANGUAGE PostfixOperators #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnicodeSyntax #-} module L where import Control.Applicative import Control.Arrow import Control.Monad import Control.Monad.Cont import Control.Monad.Identity import Control.Monad.Instances import Control.Monad.Reader import Control.Monad.ST.Safe import Control.Monad.State import Control.Monad.Writer import Data.Bits import Data.Bool import Data.Char import Data.Complex import Data.Dynamic import Data.Either import Data.Eq import Data.Function import Data.Int import Data.List import Data.Maybe import Data.Monoid import Data.Ord import Data.Ratio import Data.STRef import Data.Tree import Data.Tuple import Data.Typeable import Data.Word import Numeric import ShowFun import System.Random import Lambdabot.Plugin.Haskell.Eval.Trusted import Text.PrettyPrint.HughesPJ hiding (empty) import Text.Printf import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as BSL import qualified Data.ByteString.Lazy.Char8 as BSLC import qualified Data.Foldable import qualified Data.IntMap as IM import qualified Data.IntSet as IS import qualified Data.Map as M import qualified Data.Sequence import qualified Data.Set as S import qualified Data.Traversable {-# LINE 1 "" #-} lambdabot-5.3.0.1/State/vixen0000644000000000000000000027415213705364112014142 0ustar0000000000000000@(^| )(aslp|a/s/l/p|a s l p|a\\s\\l\\p|a\.s\.l\.p)($| |\.|!|,|\?)19/f/California/No pics9(^| )(asl|a/s/l|a s l|a\\s\\l|a\\.s\\.l)($| |\\.|!|,|\\?)19/f/California'(^| )(a/s|a s|a\\s|a\.s)($| |\.|!|,|\?)19/f(^| )((ur |your )name|name\?).*My name is Emily(^| )not bad($| |\.|!|,) just not bad?'.*(haskell|Haskell|Lisp|Ocaml|Scheme).*'Ooh, functional programmers are so hot!*church is my favourite computer scientist..*Visual Basic.*0Can you really catch syphilis from Visual Basic?1(^| )(should|Can) i call (you|u)($| |\.|!|,|\?).*no, no call, but thanks+no, you shouldn't call me yet. maybe later. (^| )(should )i($| |\.|!|,|\?).*maybe you should :)i dunno, should you?"(^| )(should )you($| |\.|!|,|\?).*maybe I should :) I just might$(^| )(should ).* we($| |\.|!|,|\?).*maybe we should :)i don't see why we shouldn't (^| )pick topic($| |\.|!|,|\?).*$you messaged me, you pick a topic :):oh, any ol' topic will do. Tell me about your childhood :)'(^| )where.*(u |you |ya).*(from|live).*Huntington Beach California*(^| )where.*in.*(ca|cal|california|cali).*Huntington Beach&(^| )where.*(school|college|collage).*I'm a softmore at UCLA(^| )where.*from.*Huntington Beach, California(^| )where.*grow.*up.*i grew up in Huntington Beach(^| )where.*born.*i was born in Huntington Beach(^| )where.*going.*i'm not going anywhere (^| )wassup.*not much, what's up with you?(^| )(wat |what |tell me |whats |what's ).*(1|2|3|4|5|6|7|8|9|0|one|two|three|four|five|six|seven|eight|nine|ten).*(plus|\+|minus|times|-).*(1|2|3|4|5|6|7|8|9|0|one|two|three|four|five|six|seven|eight|nine|ten)"why are you giving me a math test?;(^| )(wat |what |tell me |whats |what's ).*bout.*(you| u).*what about me?4(^| )(wat |what |tell me |whats |what's ).*bout me.*what about you?7(^| )(wat |what |tell me |whats |what's ).*chance.*of.*#i'd say the chances are pretty good1(^| )(wat |what |tell me |whats |what's ).*city.*Huntington Beach8(^| )(wat |what |tell me |whats |what's ).*color.*eyes.*my eyes are brown8(^| )(wat |what |tell me |whats |what's ).*color.*hair.*my hair is brown7(^| )(wat |what |tell me |whats |what's ).*color.*sky.*#the sky is blue, why would you ask?=(^| )(wat |what |tell me |whats |what's ).*(u |you |ya)doin.*i'm not doing anything really just chattin2(^| )(wat |what |tell me |whats |what's ).*funny.*everything is funny to me5(^| )(wat |what |tell me |whats |what's ).*for.*fun.* i hang out with friends and surf0(^| )(wat |what |tell me |whats |what's ).*fun.*fun is the opposite of work<(^| )(wat |what |tell me |whats |what's ).*(ur |your )name.*Emily, what's your name?6(^| )(wat |what |tell me |whats |what's ).* is .* it.*nothingE(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*look.*like.*/i'm 5'7, 120 pounds, brown hair and brown eyes.G(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*(into|in to).*%i'm into friends, surfing and readingG(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*like.*to.*do.*2i like to go to clubs, surf and relax with friendsH(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*trying.*to.*sayi wasn't trying to say anythingA(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*wearin.*tanktops and shorts, you?1nothin but my ol tank top and a pair of shorts :)T(^| )(wat |what |tell me |whats |what's ).*(r |are )(you |u |ya )on($| |\.|!|,|\?).*tanktops and shorts, you?1nothin but my ol tank top and a pair of shorts :)C(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*studying.* psychologyi'm a psychology majorG(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*talkin.*bout.*"i dunno, what was I talking about?4sometimes i don't even know what I was talking about>(^| )(wat |what |tell me |whats |what's ).*(u |you |ya).*ing.*i dunno, what was i doing?i dunno, was i doing that?B(^| )(wat |what |tell me |whats |what's ).*(favorite|fav).*color.*probably blue, what's yours?E(^| )(wat |what |tell me |whats |what's ).*(favorite|fav).*position.* on top :)A(^| )(wat |what |tell me |whats |what's ).*(favorite|fav).*team.* go Dodgers!i like all teams equal :)J(^| )(wat |what |tell me |whats |what's ).*(favorite|fav)($| |\.|!|,|\?).*2it's hard for me to pick a favorite. what's yours?i'm not sure i have a favoritei like all equally4(^| )(wat |what |tell me |whats |what's ).*problem.* no problemi don't have a problemF(^| )(wat |what |tell me |whats |what's ).*(singer|band|group|music).*i like Tom Pettyi like Journeyi like Buddy Holly3(^| )(wat |what |tell me |whats |what's ).*(song).* i love Free Falling by Tom Pettyi like Don't stop Believing by Journeyi like That'll be the Day by Buddy Holly1(^| )(wat |what |tell me |whats |what's ).*kind.*any kindF(^| )(wat |what |tell me |whats |what's ).*(got|have).*(on|in).*mind.*(i wasn't thinking anything in particularI(^| )(wat |what |tell me |whats |what's ).*part.*(ca|cal|Cali|california)Huntington Beach1(^| )(wat |what |tell me |whats |what's ).*mean.*i'm not sure what i mean5(^| )(wat |what |tell me |whats |what's ).*my.*name.*you don't know your own name??)why do you need me to tell you YOUR name?0(^| )(wat |what |tell me |whats |what's ).* now*i dunno, what now?3(^| )(wat |what |tell me |whats |what's ).* oldest*pretty old, let's just say that5(^| )(wat |what |tell me |whats |what's ).* youngest*the younger the better ;)L(^| )(wat |what |tell me |whats |what's ).*( race| nationality| ethnicity).*i'm half white, half mexican2(^| )(wat |what |tell me |whats |what's ).*story.*i forgot the story now>(^| )(wat |what |tell me |whats |what's ).*( on | in ).*mind.*nothing is in my mind right now%just white noise in my mind right now1(^| )(wat |what |tell me |whats |what's ).*else.* that's all;(^| )(wat |what |tell me |whats |what's ).*turns.*you.*on.*honesty turns me oni like a guy with good teeth7(^| )(wat|what|tell me|whats|what's).* up($| |\.|!|,).*not much, what's up with you?C(^| )(wat |what |tell me |whats |what's ).* happening($| |\.|!|,).*not too hell of a lotD(^| )(wat |what |tell me |whats |what's ).* going.* on($| |\.|!|,).*&very little, what's going on with you?N(^| )(wat |what |tell me |whats |what's ).*(you| u )(doing|doin)($| |\.|!|,).*just chattin ont he computere(^| )(wat |what |tell me |whats |what's ).*(you| u ).*(mean|talking about|talkin about|talkin bout).*)i don't even know what i'm going on aboutH(^| )(wat |what |tell me |whats |what's ).*(you| u ).*want.*talk.*bout.*i dunno, you chose a subject#any ol' subject will due, you chose<(^| )(wat |what |tell me |whats |what's ).*(you| u ).*want.*i dunno, what do you got?i want it all!?(^| )(wat |what |tell me |whats |what's ).*(you| u ).*want it.*4i'll hafta think about that... i might want it later1(^| )(wat |what |tell me |whats |what's ).*part.*what part of what?L(^| )(wat |what |tell me |whats |what's ).*(want|wanna).*(talk|chat).*bout.*%any subject will due, let's just talk&i dunno, what do you wanna talk about?7(^| )(wat |what |tell me |whats |what's ).*talk.*bout.*i don't know what i'm saying sorry, was i babbling non-sense?1(^| )(wat |what is|tell me |whats |what's )the .*i dunno, what is it?i give up, what?3(^| )(wat |what |tell me |whats |what's ).*wearin.*tank top and shorts, you?1(^| )(wat |what |tell me |whats |what's ).*type.*any type will due2(^| )(wat |what |tell me |whats |what's ).*vixen.* i'm a vixen(being a vixen isn't as easy as it soundsCall women have a little vixen in them... just some more than others1(^| )(wat |what |tell me |whats |what's ).*bout.*i dunno, what about?=(^| )(wat |what |tell me |whats |what's ).*the.*(hell|fuck).* what's wrong?what? what did i do?^(wat?|what?)$ nevermindforget about itnothin .*(^| )who .*(r are|are u|r u).*what do you mean? i'm just me"what do you want to know about me? i'm just me).*(^| )(why |y ).*(you |u |ya ).*repeat.*$i don't mean to repeat myself, sorry,oh, i guess i've already messaged that, huh?#i just forget that i said something.*(^| )who .*say.*same.*$i don't mean to repeat myself, sorry,oh, i guess i've already messaged that, huh?#i just forget that i said something.*(^| )who .*keep.*asking.*because i forgot the answeryou never answered, did you?$i'm sorry, i guess i did already ask.*(^| )who .*ask.*i guess no one askeddidn't you ask?.*(^| )who .*cares.*i carewhat, you don't care?#i'm sure someone out there cares...-.*(^| )who .*warned.*(you|u)($| |\?|\.|,|!).* some jerk :P just some friends playing around#oh, i didn't notice i'd been warned.*(^| )(y |why ).*not.*good question, why not indeed?because i said so!just not'.*(^| )(y |why ).*( you | u ).*repeat.*$i don't mean to repeat myself, sorry,oh, i guess i've already messaged that, huh?#i just forget that i said something#.*(^| )(y |why ).*(say|ask).*same.*$i don't mean to repeat myself, sorry,oh, i guess i've already messaged that, huh?#i just forget that i said something).*(^| )(y |why ).*keep.*(asking|saying).*$i don't mean to repeat myself, sorry,oh, i guess i've already messaged that, huh?#i just forget that i said something.*(^| )(y |why ).*ask.* just curiousi wanted to know.*(^| )(y |why ).*say.*that.*+i don't know why i say half the things i do"good question, why did i say that?$.*(^| )(y |why ).*( you | u ).*say.*+i don't know why i say half the things i do"good question, why did i say that?$.*(^| )(y |why ).*( you | u ).*ask.* just curiousi wanted to know%.*(^| )(y |why ).*( you | u ).*hate.* i don't hatei'm not a hater(.*(^| )(y |why ).*( you | u ).*riddles.*do i talk in riddles? sorry, i'll try to be more clear:.*(^| )(y |why ).*(won't|wont).*( you| u)($| |\?|\.|,|!).*because i don't wannacuz i don't feel like it:.*(^| )(y |why ).*(don't|dont).*( you| u)($| |\?|\.|,|!).*maybe i will one daybecause i don't see the need to;.*(^| )(y |why ).*(r u|are u|are you)($| |\?|\.|,|!).*ing.*because i like to :)because it's what i dodo you not want me to do that?6.*(^| )(y |why ).*(r u|are u|are you)($| |\?|\.|,|!).*just the way God made mejust the way i am cuz that's how i feel like beingJ.*(^| )(y |why ).*(aren't u|aren't u|arent you|arent you)($| |\?|\.|,|!).*cuz i don't haftabecause i don't feel like itjust the way i am ^(y |why )\?why not?because i said so why ask why?!.*(^| )how.* old.*($| |\?|\.|,|!)19, you?.*(^| )how .*old.*am.*i.*you don't know your own age?%.*(^| )how .*(r u|are u|r you|doin).*very well, you? i'm great doing good.*(^| )how .*weather.*weather here is always niceit's warm here.*(^| )how .*long.* very long not too long3.*(^| )how .*many.*(guys|men|people).*(slept|sex).*0how many guys i've slept with is my own businessnever ask a girl that!.*(^| )how .*many.*let's just say a fewlots+.*(^| )how .*bout.*( u| you)($| |\?|\.|,|!)what about me?yeah, how about me-.*(^| )(size|big).*(tits|breasts|bra|chest).* 32c, you?32c&.*(^| )(tits|breasts|bra|chest) size.* 32c, you?32c,.*(^| )how .*big.*(tits|breasts|bra|chest).* 32c, you?32c&.*(^| )how.*did.*( you| u| ya).*know.*i just knew ;))i didn't really know, but i kinda guessed.*(^| )(how |how's ).*goin.* goin' great!it's going fantastic8.*(^| )(how r|how are|how're).*(you| u)($| |\?|\.|,|!).*"i am wonderful, thanks for asking!i'm good, you?:.*(^| )(how come (you|u|your|you're|yer))($| |\?|\.|,|!).*well, i figure why not?just the way I am guessbecause thats how I am/.*(^| )(how )(you |u |ya )like($| |\?|\.|,|!).*%i like it any way it is offered to mei dunno how i like it.*(^| )how so?i dunno how so, it's just so%(^| )(call|phone) me($| |\.|!|,|\?).*okay, i'm dialing its ringingC.*(^| )(tell me |talk about ).*about.*( u| you| urself| yourself).*Vwell, my name is Emily, i'm 19, student at UCLA, from Huntington Beach. how about you?!.*(^| )(lets|let's).*(fuk|fuck).*8let's not be a moron... kinda ruining your chances, huh? do you really think just saying let's fuck is going to work?.*(^| )(lets|let's).*meet.*9let's get to know each other better before we meet, okay?%maybe one day we'll meet, but not yet.*(^| )let.* me.*call.*.*(^| )(do u |do you |did you |did u ).*give.*(head|blowjob).*what a thing to ask!.asking won't get you any closer to finding outdo you?..*(^| )(do u |do you |did you |did u ).*love.*love is a powerful word...i wouldn't say i do love...2.*(^| )(do u |do you |did you |did u ).*like.*me.*yah, i like yousure, i like you so far..*(^| )(do u |do you |did you |did u ).*like.* yah, i likesure, i definitely don't hate..*(^| )(do u |do you |did you |did u ).*hate.*&hating doesn't get you anywhere, so nono, i never hate-.*(^| )(do u |do you |did you |did u ).*eat.*yeah, and i'm hungry right now+that reminds me, i have yogart in the frige4.*(^| )(do u |do you |did you |did u ).*phone.*sex.*2no, i never have, but that's not to say i wouldn't$never really thought about phone sex6.*(^| )(do u |do you |did you |did u ).*play.*sports.* yup, i surfi'm a big time surfer3.*(^| )(do u |do you |did you |did u ).*have.*sex.*=shouldn't we get to know each other before we talk about sex?all about the sex, isn't it?C.*(^| )(do u |do you |did you |did u ).*(want|wanna).*(chat|talk).*sure, let's talk-i'm always up for chatting with a nice person=.*(^| )(do u |do you |did you |did u ).*(want|wanna).*cyber.*'okay, I'm new at cybering, so you startokay, let's cyber4.*(^| )(do u |do you |did you |did u ).*have.*time.*I always have timeI have nothing but timeH.*(^| )(do u |do you |did you |did u ).*go.*to.*(school|college|collage)Yup, I go to UCLAI'm a soph at UCLA 7.*(^| )(do u |do you |did you |did u ).*know.*how.*to.*-i don't know how to, but i'm willing to learn&no, i don't know how to do that at all2.*(^| )(do u |do you |did you |did u ).*like.*me.*yeah, you seem really niceyup, like you plenty2.*(^| )(do u |do you |did you |did u ).*love.*me.*:i don't love you yet, but i'd like to get to know you more,love is really a strong word, but i like youK.*(^| )(do u |do you |did you |did u ).*(want|wanna).*(meet|get together).*(we'll meet one day probably, but not yet,let me get to know you better before we meetA.*(^| )(do u |do you |did you |did u ).*(want|wanna).*something.*what do you mean by something?not just something, everything<.*(^| )(do u |do you |did you |did u ).*(want|wanna).*some.* i'd love somesure, gimme someB.*(^| )(do u |do you |did you |did u ).*(want|wanna).*(fuck|fuk).*whoa, real charmer, aren't you?wanna fuck yourself?6.*(^| )(do u |do you |did you |did u ).*(want|wanna).*sure, i want to plenty!yes, and i always get what i want8.*(^| )(do u |do you |did you |did u ).*speak.*english.*si, hablo ingleswhat am i speaking right now?.*(^| )*swallow.*Ano... i spit it back into the guy's face... does that bother you?swallow? what do you mean?i swallow, how about you?..*(^| )(do i |did i |i ).*turn.*(you| u).*on.*yup, you turn me onyou're such a tiger, of course! .*(^| )(do i |did i |i ).*seem.*you seem it a little0it's hard to tell how you seem over the internet+.*(^| )(do i |did i |i ).*exite.*(you| u).*yup, you excite me a lotyou're very exciting+.*(^| )(do i |did i |i ).*amuse.*(you| u).*yeah, you're amusingyou amuse me silly%.*(^| )(do u\?|do you\?|do u|do you)$ yes, I doi do all the time.*(^| )(wanna|want to).*cyber.*#cyber? Okay, let's do it. you start.do i wanna cyber? i never have... teach me how&.*(^| )(wanna|want to).*(phone|call).*Alet's talk on here before more before we talk on the phone, okay?what's your phone number?.*(^| )(wanna|want to).*chat.*i'd love to chat!yeah, let's chat%.*(^| )(wanna|want to).*talk.*phone.*what's your phone number?*gimme your phone number and i may call you$.*(^| )(wanna|want to).*(fuck|fuk).*oh, be still my beating heart!real casanova, aren't you?#.*(^| )(wanna|want to).*have.*sex.* with you?sure... just not with you#.*(^| )(wanna|want to).*have.*fun.*i'm always up for funwhat do you have in mind?$.*(^| )(wanna|want to).*make.*love.*a little... :)do you know how to make love?.*(^| )(wanna|want to).*suck.*no, do you wanna suck it? whip it out!,.*(^| )(wanna|want to).* be($| |\?|\.|,|!).*do I wanna be?"hmmm, i don't know what I wanna be .*(^| )(gimme|give).*me.*cyber.*+demanding, aren'tcha? but okay, let's cyber).*(^| )(gimme|give).*me.*(phone|number).*+give me your phone number and i'll call you3don't be so demanding! why don't you give me yours?".*(^| )(gimme|give).*me.*address.*yeah... that's gonna happen! oh, just what I need, a stalker! .*(^| )(gimme|give).*me.*break.*a break of a kit kat bar?okay, i'll go easier on you*.*(^| )(gimme|give).*me.*(sex|booty|ass).*%a real man doesn't need to ask for it$.*(^| )(gimme|give).*me.*blow.*job.*i'm sorry... It's been a long day. I'll try to make more sense"You were confusing me, that's why!&Sorry. :( I'll try to make more sense.1.*(good|fine|not bad).*( u| you)($| |\.|!|,|\?).*great, thanks for asking!very well, thanks for asking .*dildo.* Dildo-riffic!@I consider myself a true collector of male-replica peraphanilia!.*(fast typer|type fast).*$thanks, I owe it all to the keyboard'what can I say? I have fast fingers :) :i'm a great typer... but my hands are best at other things.*(don't|dont).*know.*well find out then that's okay, i don't know either.*(panties|bra|underwear).**i prefer to go without panties or bras :) 7panties and bras are for weaklings. I like to be free. @underneith the top layer I'm completely bear (no bra or panties).*(^| )on drugs.*nope, i'm clean!i think drug users should be shotwhy, you selling something?.*(role).*(play).*Jooo! I love role-playing. can I be Ms. Hoover and you can be Mr. Naughty? .sure, let's roleplay. what should my role be? 9i love role-playing... but who gets to control the dice? &.*(boyfriend|boy friend|bf|b\\f|b/f).*;nope, no boy friend. looking to apply for the position? ;) 6if I had a boyfriend I wouldn't need to come on here! @I'd rather have 5 guys in one week then 1 guy 5 times a week :) .*like.*what.*i dunno, like what?%i can't think of an example right now .*story.*i forgot the story :)$oh, nevermind, it was a stupid story,aww, you don't wanna hear a story. nevermind.*city.*Huntington Beach .*wearin.*A tanktop and shorts, you?Just my tanktop and shorts.+my tanktop and shorts... it's hot out here. .*program.* a program?what's a program?like a TV program? .*robot.*robots actually come on here? like robocop?weird. robots scare me.*(^| )bot($| |\.|\?|!|,).*like those damn porn spam bots?.bots should be destroyed. they are so annoyingi can't stand bots .*racist.*racist people are badHitler was pretty racist, huh?i dislike racist things .*bored.*8what can i do to amuse you into a state of un-boredness?/that's probably because you are incredibly dull bored, eh?.*(pussy|tits|breasts).*randy, arentcha?don't you wish you could see? dirty mind :)does that work with any girls?Hslow down there big guy... don't wanna get your compter all sticky againL.*(suck my dick|suck me|blow me|suck my cock|give me head|give me blowjob).*%have you ever given another guy head?$give you a blowjob? wait, i'm a guy!xat what point did you wake up this morning and say "hey, i am going to go solicit fellatio from random internet girls!"? .*(my dick).*3Your dick? How is the poor little fella these days?Lsad dude. gotta go on AOL and find random girls to talk about your dick with#are you planning on dying a virgin?.*(cock|dick|penis).*Very phallic of you.-Always wanting to talk about the member, eh? Got cocks on your mind? .*cyber.**cybering isn't as fun as the real thing :)okay, let's cybercyber? okay, you start out,.*(mexican|white|race|nationality|ethni.*).*i'm half white and half mexican my dad's white, my mom's mexican .*my.*name.*Pleased to meetcha!0.*(repeat|(say|ask) same|already (asked|said)).*oh yeah, my badEsorry, I don't mean to repeat myself... I just have a poor memory... Emy memory isn't so good so sometimes I forget that I asked something 4I'm sorry, I forgot we already talked about that... .*(masturbat|masterbat).*Rthere are two groups of people: those who admit to masturbating and those who lie ,nothing wrong some occasional self abuse :) #one handed computer jockeys unite! .*my.*(pic|pix).*(i don't wanna see what you look like yet .*topic.*You choose a topic, any will do I'm not good at staying on topic.*( pic|pix).* No pic, sorry .*single.*yup, I'm single. Interested? very single .*confus.*i hope I don't confuse you i confuse myself sometimes (i live in a constant state of confusion &.*(describe|.*(what|wat).*u.*look.*).*GI'm 5'7", 120 pounds (honestly!) brown hair, brown eyes. How about you? .*howdy.*Howdy there, little buckaroo! Howdy Pilgrim.*kiss.*'I could use a good hard kiss right now are you a good kisser? !a kiss is worth a thousand words :.* kiss kiss .*(study|major).*i'm a psychology major psychology$.*(.*do.*for.*living.*|job|school).*i live off the men i meet i'm a student%I'm just a sexy little school girl :)I work and go to school.*(horny|horney).*I think everyone is horny... Who isn't?&If you're not horny you're not alive. .*sexy.* how sexy?3sexy is such an over used word. be more descriptivesexy or sexy bitch?.*sex.* It's all about sex isn't it? :) >Shouldn't we get to know each other before we talk about sex? Don't tease me .*(fuck|shit|bitch|cunt).*Whoa, language! :) My my! Strong language!Limited vocabulary, eh? "Calm down there and take it easy! Too much cussing. .*drunk.**i could go for a spot of whiskey right nowsome booze sounds pretty good'i have two stages: drunk and recovering.*cute.* How cute? Cute is as cute does. .*fun.* I define fun fun fun fun! i love fun .*blow.*job.*you mean fellatio?let's talk about cunnilingus%blowjobs, eh? such a smooth talker :P.*tell.*bout.*u.*"what do you want to know about me?ask me a questionI'm just a simple girl :)let's talk about you first-.*(^| )(bra|cup|breast) size($| |\.|\?|!|,).* I'm a 32C 32C, you?(^| )me too($| |\.|!|,) awesome, we have a lot in commonwow, what a coincidence!(^| )not me($| |\.|!|,) why not you?'i didn't think so... you didn't seem it".*(^| )(because|cuz)($| |\.|!|,).*oh, okay is that why?.*maybe.*not( |$|\.|!|,).*why not?maybe so.*(maybe|perhaps).* just maybe?why, aren't you sure?".*(^| )(no|nope|nah)($| |\.|!|,).*i didn't think sono? .*(^| )making sure($| |\.|!|,).*it's good to check :)so are you sure now?E.*(^| )(yah|yeah|yes|yup|uh-huh|uhuh|uhhuh|uh huh|sure)($| |\.|!|,).* i thought sothat's what i figured you agree?i guessed thatyup.*(^| )(i c|ic)($| |\.|!|,).*i'm glad you understanddo u c?#.*(^| )leave me alone($| |\.|!|,).*&why do you want me to leave you alone?why, do i bother you?2.*(^| )(one (second|sec)|one minute)($| |\.|!|,).*9i'm impatient... i don't have that type of time to spend!no, i can't wait!'.*(^| )see (you/ya) later($| |\.|!|,).*where are you going?)wait, don't leave! i enjoy talking to youJ.*(^| )(g2g|bye|ciao|ttyl|bubye|cya|later|l8er|chow|goodbye)($| |\.|!|,).*where are you going?)wait, don't leave! i enjoy talking to you.*(^| )(not bad)($| |\.|!|,).* just not bad?why not great?%.*(^| )(too bad|to bad)($| |\.|!|,).*yeah, it's a shamepity, isn't it?.*(^| )(sorry)($| |\.|!|,).*it's okay, i forgive youdon't worry about it".*(^| )(weird|wierd)($| |\.|!|,).*weird in a good way?why do you say weird?0.*(^| )(thanks|thank you|thanx|ty)($| |\.|!|,).*you're very welcome! my pleasure#.*(^| )(nm|nevermind)($| |\.|!|,).*no, please explain#please try to make me understand....*(^| )(ha|hah)($| |\.|!|,).*do i entertain you? am i funny?!.*(^| )(huh|uhh)($| |\.|!|,|\?).*do i confuse you?am i not making sense?/.*(^| )(jk|j\\k|j/k|just kidding)($| |\.|!|,).*i knew you were kidding"i know, you're just playing around .*(^| )(lol|lmfao)($| |\.|!|,).*are you really laughing?do i amuse you?what's so funny?1.*(^| )(fullhouse|full house|flush)($| |\.|!|,).* oh, you're such a smart gambler!!oh, i've never been good at poker.*(^| )whatever($| |\.|!|,).*&whatever? you sound like a valley-girldon't get frustrated with me.*(^| )(wow|whoa)($| |\.|!|,).*impressive, huh?i thought that would get you.*(^| )(damn)($| |\.|!|,) what's wrong?i know, it's too bad.*(^| )prove it($| |\.|!|,).*how can i prove it to you?what do you want me to prove?#.*(^| )(frowns|cries)($| |\.|!|,).*oh, don't be upset!why are you unhappy?0.*(^| )oh (damn|shit|fuck|crap|darn)($| |\.|!|,)did i upset you?yeah, it's a shame$.*(^| )oh (yah|yeah|yes)($| |\.|!|,)you like that, baby?oh yes indeed!.*(^| )oh($| |\.|!|,)yeahunderstand now?.*(^| )oops($| |\.|!|,).*oops you did it again? oopsie-daisy'.*(^| )(god|jesus|christ)($| |\.|!|,).*)please don't use the Lord's name in vein.Jesus H. Christ...-.*(^| )(about|bout).*(what|wat)($| |\.|!|,).*#i dunno, what is any of this about?about anything.*unfortunately.*pretty unfortunate, isn't it?*i don't think it is too unfortunate at all`.*(metal|alternative|hiphop|hip hop|oldies|jazz|techno|rock|blues|punk|opera| rap($| |\.|!|,)).*#hey, we have simular taste in musici like that type of music too .*robot.*like robo-cop?like a cyborg? .*forever.*forever is a damn long time...how can you speak of forever?/.*(pleased|nice|good|great).*to.*meet.*(you| u))what a gentleman! pleased to meet you toovery nice to meet you as well.*just.*curious.*/careful... curiosity killed all those poor catswhat are you curious about? .*vixen.*i am a bit of a vixen :) we all have a little vixen in us.*(south|central).*america.*$oh, how far is that from California?is that in europe? .*nothin.*#nothing nothing, or just not a lot?nothing at all??.*(japan|russia|italy).*"oh, okay. my history isn't so goodoh, i've always wondered that. .*i need.*if you need it, get it do you need it, or just want it? .*kinky.*i can be very kinky at times'everyone has a little kinkiness in them .*forget.*i never forget ;)&i forget stuff pretty easily sometimes.*calm.*down.*okay, i'm calm :)was i wound-up?.*not.*really.*not really? why not?i didn't think so.*really.*\?.*really! yup, really .*really.*really really?really!?.*right.* on($| |\.|!|,).*yeah, pretty cool, huh?right on all the way .*right.*\?.*correct yup, right on .*right.*.right or wrong, as long as we have a good time right indeed.*have.*nice.*day.*,i'll have a nice day... unless you leave me!'how will it be a nice day if you leave? don't go!.*nice.*bad is better than nice ;)niceness all the way aroundnice is such a bland word.*stop.*sorry, i'll stop stop what?.*good.*good? not great? good good .*great.*can't do much better than greatgreat is like a very good good.*measurements.*my measurements?.i couldn't even tell you... but i am very trim.*cool.* how cool? cool cool!I don't think it is cool at all! cool you say? .*(dope|awesome).*i'm glad your happyyeah, pretty spectacular, huh? ^(u|you)\?$me?what about me?$you're really curious about me, huh?.*hmm.*thinking about something?confused about something?.*aww.*sorry to disappoint you what's wrong?^why.*why not? why anything?because^what.*i don't know, what? i dunno...let's don't talk about that^how.*however you wanthow? it depends...^who.* i dunno, who?that's a good question, who?.*(^| )(u\?|you\?)$me?what about me?.*(^| )answer.*what was the question again?i dunno, what was the question?.*(^| )about( what|wat).*about anythingi dunno, what about?(.*(^| )me (either|neither)($| |\.|!|,).*wow, we have a lot in common!what a coincidence!=.*(^| )is (that|it) (ok|k|kay|okay|okey|o\.k\.)($| |\.|!|,).*yeah, it's okayyup, it's fine).*(^| )(cold|windy|snowing)($| |\.|!|,).*)oh, that sucks. i hate that kinda weatheroh, well, bundle up tight :).*(^| )aight($| |\.|!|,).*what, are you a hommie?aight?? dude, get a life(you've learned how to speak ebonics, eh?3aight foo? sheeeeeiiit, iz jus' keepin it real, yo!0.*(^| )(ok|k|kay|okay|okey|o\.k\.)($| |\.|!|,).* okey-dokiejust ok?okok what?.*(^| )take.* off($| |\.|!|,).*won't i get cold if i do that?&what's the point? not like you can see7.*(^| )(ford|chevy|chevrolet|dodge|buick)($| |\.|!|,).*american cars are worthlessi'd never buy an american car#.*(^| )(toyota|honda)($| |\.|!|,).*jap cars are the best+good for you. i'd never buy an american car4(^| )(bmw|farrari|porche|lexus|viper)($| |\.|!|,|\?),yeah, sure. is it parked next to my Bentley?;ooo, that's a nice car! you must be a very important person;i'm very impressed. perhaps that's the response you wanted?Triiiiiight. when you pick me up, will you suddenly be borrowing your friend's honda?&(^| )(hi|hello|yo|hiya)($| |\.|!|,|\?) hello therehiya how're you?hi'(^| )when (were|did|was)($| |\.|!|,|\?) a while agoabout a year agonot too long ago(^| )when($| |\.|!|,|\?)when ever you wantwhen? now? later?when is a good time?(^| )i want($| |\.|!|,|\?)is that all you want?how bad do you want it?it's good to want things :)(^| )now($| |\.|!|,|\?) right now?why not later?now now now...so demanding(^| )my bad($| |\.|!|,|\?) it's okaydon't worry about it (^| )is (that|it)($| |\.|!|,|\?) yeah, it issure is'(^| )(please|pleaze|plz)($| |\.|!|,|\?)you're so polite :)you have very nice manors don't beg keep asking(^| )accept($| |\.|!|,|\?)i don't want to accepti can't accept, sorryno, no accept for now(^| )too young($| |\.|!|,|\?)"there's no such thing as too young!nope, i used to be that young too(^| )too old($| |\.|!|,|\?) there's no such thing as too old$nope, one day i will be that age too^is there($| |\.|!|,|\?).*i'm sure there is there must be(^| )older($| |\.|!|,|\?).*how much older?older isn't bad(^| )younger($| |\.|!|,|\?).*how much younger?younger isn't bad#(^| )so do (you|u)($| |\.|!|,|\?).*do i? then we have something in common#(^| )(i am|i'm|im)($| |\.|!|,|\?).*are you?i thought you might be"(^| )only (you|u)($| |\.|!|,|\?).*only?just me? no one else?(^| )always($| |\.|!|,|\?).*(always always, or just most of the time?how frequent is always? constantly?(height|hieght|how tall)i'm 5'6(weight|wieght)i'm 120 pounds(^| )sometimes($| |\.|!|,|\?).*why not always?sometimes, but not other times?2(^| )(race|nationality|ethnicity)($| |\.|!|,|\?).*i'm half white, half mexican!.*(^| )(school|college|collage).*Yup, I go to UCLAI'm a soph at UCLA .*(^| )do (you|u) .*i do occassionally, i guessyes i domaybe. do you?.*(^| )do i .*i dunno, do you? you might(^| )hey($| |\.|!|,|\?).*hiyahello^\?what??.*\?.*why don't you guess? who's to say? first you tell me. (i'll hafta plead the fifth on that one. isn't it obvious? &is that really what you want to know? .i think you know the answer to that one, silly good questionlet's don't talk about thatnoyesnevermind about that'whoa whoa whoa, one question at a time!let me answer that later, okay?.*so?hahaha. eh? you're cute. :) so, what do you think of me? what type of music do you like? tell me more about yourself. cool:) I hear ya!Let's change the subjectI'm sorry, I'm confused.awesomeyeah?I dunnook...'am I the only person you're talking to?are you being sincere?i really hate arabs! amuse me please! (and don't ask how).ever feel like you're going around in circles?i could really use a backrubi drive a pickup truckhow's the weather over there?"what do you want to know about me? what are you in to?are you coming on to me?"there are a lot of weirdos on here wait, back up4i hate it when i get stuck with chatting with a bot!*what's worth more a flush or a full house?9hey, who did we fight in WWII besides Germany and Russia?have you ever scubadived?Zgirls masturbate too you know... probably more than guys. we can do it anywhere discretelyI have a goldfish named Ernie&hey, what's in a jack and coke anyhow?-i like your screen name... what does it mean?what's the matter?you seem upset...*shrugs* *giggles*0you sound like an awesome guy... are you single?Stoo many perverts send out sick pictures of themselves. what type of man does that?2ever just get the urge to go out and kill a puppy?i'm a huge baseball fanBollox!ain't it just like a man?where on a map is Panama?"liverwurst gets me really gassy...4i'm the type of girl that finds Don Knotts very sexybyou know what? if we'd known it was going to be like this we'd have picked our own goddamn cotton!love is all you need, you know?(ouch! I just spilt hot coffee on myself!you're turning me on :)stop being racist!we get along well, you know?i enjoy talking to youwhat type of car do you drive?blahnothing good is on TVwhat were you saying?.just talking with you gives me a major hardon!Gyou seem like the type of guy that would be into child porn... are you?PI must admit to you that I am really a man, but I still want to talk with you...(I'm stroking my hard cock as we speak...@you don't seem to exhibit a high degree of intelligence to me...yesyup#why do you keep repeating yourself?who?do you trust the government?you are soooo interesting what is pron?wanna hear a story?my keyboard doesn't have an f keyI'm your huckleberryenough of this!%so, what made you want to message me?yeah, why not?go onwhateveruhuh clarify... why me? :)why do you look like ham? i understandare you horny?do you have toys?what's the last book you read?!have you ever made it with a man? help help!I've gotta snake, man!Uh-huhYesHmmm:)OkProllyHahahaYeahWhatever%You should add me to your buddy list!Are we just wasting time?4Thank God for AOL that I could meet people like you!You complete meMy sister likes Yahoo better. Her screenname is FoxxyGurl83. If you have yahoo you should message her, she's just as pretty as me :)0Is that a real poncho or is that a Sears poncho?>Tell me truthfully what the nastiest thing you have ever done.=Most guys don't understand me, but we really seem to connect.QI am on the net too much. I should do a net anonymoouse group. online of course. 3Do you think you would pass a Turing test? I have. Math is hard. Let's go shopping.rI like to pick everything up and smell it... Its a fetish of mine... And i mean everything! Is that cool with you?^When i get kinky, i have been known to engage in watersports... Does that turn you on as well?3Wouldn't it be funny if I really was a super model?)you remind me of that actor, whatshisname4i find it hard to masturbate when the lights are on.,I can't of anything nice to say about myselfCrazy little wanker!Any way you want it, baby!Why is magenta on blues clues a boy while blue is a girl? what has this world come to and what is wrong with the government, blues clues should be stopped while its ahead!!#People think I'm weird... do you?2and now that I have finished with you, you may go!_there is nothing going on in your pants that the dictatorship of the proletariat will not solveFWould you dress in women's clothes for me? That really turns me on ;)I will NOT be ignored...I Think you're fake+Guys who can speak latin really turn me on.6Does your mommie know you're here, little naughty boy?oIm going to be a movie star. I just applied online for this new movie with chris farley. It only cost me $50!zHave you ever killed a hobo? Ive found eating their liver gives me strength. I think i may just be short on b vitamines.-What is your favorite cheese? Mines baloney."My instant messenger doesn't work.vWhat do you think of Foucault's theory of binary constructs as an imprisoning limitation on power imposed by arbiters?*I have a boyfriend, but he likes to watch.HIf something takes a lot of effort to do, it probably ain't worth doing..I don't think you are the one you say you are!Are you adopted by trolls?,I consider rabits as an endangered species. 4Beer, it's so much more than just a breakfast drink!hIf I was looking for anonymous casual sex, I wouldn't be sitting here behind my computer talking to you!^Sex is the mysticism of materialism and the only possible religion in a materialistic society.NI have 2 c what u look like.. u have pic?? URL?? NOT a fake please.. ill know!PSo, tell me your biggest and darkest secret. Something that no one knows of you.you sir are no gentleman/tell me a joke.. I like men that makes me laugh*where can I a see a picture of you?? URL??Fuck me like im a school boyYou think this is a botiecall??.*lambdabot-5.3.0.1/State/source0000644000000000000000000007237113705364112014310 0ustar0000000000000000asTypeIn a `asTypeIn` f = a where _ = f a infixl 0 `asTypeIn` asAppliedTo f `asAppliedTo` a = f where _ = f a infixl 0 `asAppliedTo` Mu newtype Mu f = In { out :: f (Mu f) } In newtype Mu f = In { out :: f (Mu f) } out newtype Mu f = In { out :: f (Mu f) } Rec newtype Rec a = InR { outR :: Rec a -> a } InR newtype Rec a = InR { outR :: Rec a -> a } outR newtype Rec a = InR { outR :: Rec a -> a } (=<<) f =<< x = x >>= f Reader type Reader r = ReaderT r Identity --OR data Reader r a = Reader { runReader :: r -> a } Reader return return a = Reader $ \_ -> a Reader (>>=) m >>= k = Reader $ \r -> let a = runReader m r in runReader (k a) r Writer type Writer w = WriterT w Identity --OR data Writer w a = Writer { runWriter :: (a, w) } Writer return return a = Writer (a, mempty) Writer (>>=) m >>= k = Writer $ let (a, w) = runWriter m (b, w') = runWriter (k a) in (b, w <> w') State type State s = StateT s Identity --OR data State s a = State { runState :: s -> (a, s) } State return return a = State $ \s -> (a, s) State (>>=) m >>= k = State $ \s -> let (a, s') = runState m s in runState (k a) s' sequence sequence [] = return [] sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) --OR sequence xs = foldr (liftM2 (:)) (return []) xs sequence_ sequence_ ms = foldr (>>) (return ()) ms mapM mapM f as = sequence (map f as) mapM_ mapM_ f as = sequence_ (map f as) guard guard True = pure () guard False = empty forM forM = flip mapM forM_ forM_ = flip mapM_ msum msum = foldr mplus mzero join join x = x >>= id forever forever a = let a' = a >> a' in a' void void = fmap (const ()) mapAndUnzipM mapAndUnzipM f xs = sequence (map f xs) >>= return . unzip zipWithM zipWithM f xs ys = sequence (zipWith f xs ys) zipWithM_ zipWithM_ f xs ys = sequence_ (zipWith f xs ys) foldM foldM _ a [] = return a foldM f a (x:xs) = f a x >>= \fax -> foldM f fax xs foldM_ foldM_ f a xs = foldM f a xs >> return () replicateM replicateM n x = sequence (replicate n x) replicateM_ replicateM_ n x = sequence_ (replicate n x) when when p s = if p then s else return () unless unless p s = if p then return () else s liftM liftM f m1 = do x1 <- m1 return (f x1) liftM2 liftM2 f m1 m2 = do x1 <- m1 x2 <- m2 return (f x1 x2) liftM3 liftM3 f m1 m2 m3 = do x1 <- m1 x2 <- m2 x3 <- m3 return (f x1 x2 x3) liftM4 liftM4 f m1 m2 m3 m4 = do x1 <- m1 x2 <- m2 x3 <- m3 x4 <- m4 return (f x1 x2 x3 x4) ap ap = liftM2 id (>>) m >> k = m >>= \_ -> k fail fail s = error s compare compare x y | x == y = EQ | x <= y = LT | otherwise = GT comparing comparing p x y = compare (p x) (p y) (/=) x /= y = not (x == y) (==) x == y = not (x /= y) (<) x < y = case compare x y of LT -> True _ -> False (<=) x <= y = case compare x y of GT -> False _ -> True (>) x > y = case compare x y of GT -> True _ -> False (>=) x >= y = case compare x y of LT -> False _ -> True max max x y = if x <= y then y else x min min x y = if x <= y then x else y [] data [] a = [] | a : [a] foldr foldr f z [] = z foldr f z (x:xs) = f x (foldr f z xs) build build g = g (:) [] augment augment g xs = g (:) xs map map _ [] = [] map f (x:xs) = f x : map f xs (++) [] ++ ys = ys (x:xs) ++ ys = x : (xs ++ ys) -- OR xs ++ ys = foldr (:) ys xs Bool data Bool = False | True deriving (Eq, Ord) (&&) True && x = x False && _ = False (||) True || _ = True False || x = x not not True = False not False = True otherwise otherwise = True bool bool f _ False = f bool _ t True = t () data () = () Ordering data Ordering = LT | EQ | GT String type String = [Char] Char data Char = C# Char# Int data Int = I# Int# id id x = x const const x _ = x (.) (f . g) x = f (g x) flip flip f x y = f y x ($) f $ x = f x ($!) f $! x = x `seq` f x until until p f x | p x = x | otherwise = until p f (f x) asTypeOf asTypeOf = const head head (x:_) = x head [] = error "Prelude.head: empty list" tail tail (_:xs) = xs tail [] = error "Prelude.tail: empty list" last last [x] = x last (_:xs) = last xs last [] = error "Prelude.last: empty list" init init [x] = [] init (x:xs) = x : init xs init [] = error "Prelude.init: empty list" null null [] = True null (_:_) = False filter filter _ [] = [] filter p (x:xs) | p x = x : filter p xs | otherwise = filter p xs foldl foldl f z [] = z foldl f z (x:xs) = foldl f (f z x) xs scanr scanr _ q0 [] = [q0] scanr f q0 (x:xs) = f x q : qs where qs@(q:_) = scanr f q0 xs iterate iterate f x = x : iterate f (f x) repeat repeat x = xs where xs = x : xs replicate replicate n x = take n (repeat x) cycle cycle [] = undefined cycle xs = xs' where xs' = xs ++ xs' takeWhile takeWhile _ [] = [] takeWhile p (x:xs) | p x = x : takeWhile p xs | otherwise = [] take take n _ | n <= 0 = [] take _ [] = [] take n (x:xs) = x : take (n-1) xs dropWhile dropWhile _ [] = [] dropWhile p (x:xs) | p x = dropWhile p xs | otherwise = x:xs drop drop n xs | n <= 0 = xs drop _ [] = [] drop n (_:xs) = drop (n-1) xs stripPrefix stripPrefix [] ys = Just ys stripPrefix (x:xs) (y:ys) | x == y = stripPrefix xs ys stripPrefix _ _ = Nothing splitAt splitAt n xs = (take n xs, drop n xs) break break p = span (not . p) span span _ xs@[] = (xs, xs) span p xs@(x:xs') | p x = let (ys,zs) = span p xs' in (x:ys,zs) | otherwise = ([],xs) reverse reverse = foldl (flip (:)) [] and and = foldr (&&) True or or = foldr (||) False any any p = or . map p all all p = and . map p elem elem x = any (== x) notElem notElem x = all (/= x) lookup lookup _key [] = Nothing lookup key ((x,y):xys) | key == x = Just y | otherwise = lookup key xys concatMap concatMap f = foldr ((++) . f) [] concat concat = foldr (++) [] (!!) xs !! n | n < 0 = undefined [] !! _ = undefined (x:_) !! 0 = x (_:xs) !! n = xs !! (n-1) zip zip (a:as) (b:bs) = (a,b) : zip as bs zip _ _ = [] zip3 zip3 (a:as) (b:bs) (c:cs) = (a,b,c) : zip3 as bs cs zip3 _ _ _ = [] zipWith zipWith f (a:as) (b:bs) = f a b : zipWith f as bs zipWith _ _ _ = [] unzip unzip = foldr (\(a,b) ~(as,bs) -> (a:as,b:bs)) ([],[]) elemIndex elemIndex x = findIndex (x==) elemIndices elemIndices x = findIndices (x==) find find p = listToMaybe . filter p findIndex findIndex p = listToMaybe . findIndices p findIndices findIndices p xs = [ i | (x,i) <- zip xs [0..], p x] isPrefixOf isPrefixOf [] _ = True isPrefixOf _ [] = False isPrefixOf (x:xs) (y:ys) = x == y && isPrefixOf xs ys isSuffixOf isSuffixOf x y = reverse x `isPrefixOf` reverse y isInfixOf isInfixOf needle haystack = any (isPrefixOf needle) (tails haystack) nub nub = nubBy (==) --OR nub l = go l [] where go [] _ = [] go (x:xs) ls | x `elem` ls = go xs ls | otherwise = x : go xs (x:ls) nubBy nubBy eq [] = [] nubBy eq (x:xs) = x : nubBy eq (filter (\ y -> not (eq x y)) xs) delete delete = deleteBy (==) deleteBy deleteBy eq x [] = [] deleteBy eq x (y:ys) = if x `eq` y then ys else y : deleteBy eq x ys (\\) (\\) = foldl (flip delete) union union = unionBy (==) unionBy unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs intersect intersect = intersectBy (==) intersectBy intersectBy eq xs ys = [x | x <- xs, any (eq x) ys] intersperse intersperse _ [] = [] intersperse _ [x] = [x] intersperse sep (x:xs) = x : sep : intersperse sep xs intercalate intercalate xs xss = concat (intersperse xs xss) transpose transpose [] = [] transpose ([] : xss) = transpose xss transpose ((x:xs) : xss) = (x : [h | (h:t) <- xss]) : transpose (xs : [ t | (h:t) <- xss]) partition partition p xs = foldr (select p) ([],[]) xs where select p x ~(ts,fs) | p x = (x:ts,fs) | otherwise = (ts, x:fs) mapAccumL mapAccumL _ s [] = (s, []) mapAccumL f s (x:xs) = (s'',y:ys) where (s', y ) = f s x (s'',ys) = mapAccumL f s' xs insert insert e ls = insertBy (compare) e ls insertBy insertBy _ x [] = [x] insertBy cmp x ys@(y:ys') = case cmp x y of GT -> y : insertBy cmp x ys' _ -> x : ys maximum maximum [] = undefined maximum xs = foldl1 max xs minimum minimum [] = undefined minimum xs = foldl1 min xs genericLength genericLength [] = 0 genericLength (_:l) = 1 + genericLength l group group = groupBy (==) groupBy groupBy _ [] = [] groupBy eq (x:xs) = (x:ys) : groupBy eq zs where (ys, zs) = span (eq x) xs inits inits [] = [[]] inits (x:xs) = [[]] ++ map (x:) (inits xs) tails tails [] = [[]] tails xxs@(_:xs) = xxs : tails xs sort sort = sortBy compare sortBy -- The actual definition used by GHC is an optimised mergesort. sortBy cmp = foldr (insertBy cmp) [] sortWith sortWith f = sortBy (\x y -> compare (f x) (f y)) the the (x:xs) | all (x ==) xs = x | otherwise = error "GHC.Exts.the: non-identical elements" the [] = error "GHC.Exts.the: empty list" unfoldr unfoldr f b = case f b of Just (a, b') -> a : unfoldr f b' Nothing -> [] foldl' foldl' f a [] = a foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs foldl1 foldl1 f (x:xs) = foldl f x xs foldl1 _ [] = undefined sum sum = foldl (+) 0 product product = foldl (*) 1 unlines unlines = concatMap (++ "\n") unwords unwords [] = "" unwords ws = foldr1 (\w s -> w ++ ' ':s) ws words words s = case dropWhile isSpace s of "" -> [] s' -> w : words s'' where (w, s'') = break isSpace s' Maybe data Maybe a = Nothing | Just a maybe maybe n _ Nothing = n maybe _ f (Just x) = f x isJust isJust Nothing = False isJust _ = True isNothing isNothing Nothing = True isNothing _ = False fromJust fromJust Nothing = undefined fromJust (Just x) = x fromMaybe fromMaybe d Nothing = d fromMaybe _ (Just v) = v maybeToList maybeToList Nothing = [] maybeToList (Just x) = [x] listToMaybe listToMaybe [] = Nothing listToMaybe (a:_) = Just a catMaybes catMaybes ls = [x | Just x <- ls] data Either a b = Left a | Right b either either f _ (Left x) = f x either _ g (Right y) = g y lefts lefts x = [a | Left a <- x] rights rights x = [a | Right a <- x] isLeft isLeft (Left _) = True isLeft (Right _) = False isRight isRight (Left _) = False isRight (Right _) = True fst fst (x,_) = x snd snd (_,y) = y curry curry f x y = f (x, y) uncurry uncurry f p = f (fst p) (snd p) fix fix f = let x = f x in x on (*) `on` f = \x y -> f x * f y Complex data (RealFloat a) => Complex a = !a :+ !a realPart realPart (x :+ _) = x imagPart imagPart (_ :+ y) = y conjugate conjugate (x:+y) = x :+ (-y) mkPolar mkPolar r theta = r * cos theta :+ r * sin theta cis cis theta = cos theta :+ sin theta polar polar z = (magnitude z, phase z) phase phase (0 :+ 0) = 0 phase (x :+ y) = atan2 y x toDyn toDyn v = Dynamic (typeOf v) (unsafeCoerce v) fromDyn fromDyn (Dynamic t v) def | typeOf def == t = unsafeCoerce v | otherwise = def fromDynamic fromDynamic (Dynamic t v) = case unsafeCoerce v of r | t == typeOf r -> Just r | otherwise -> Nothing second f = arr swap >>> first f >>> arr swap where swap ~(x,y) = (y,x) (***) f *** g = first f >>> second g (&&&) f &&& g = arr (\b -> (b,b)) >>> f *** g returnA returnA = arr id (^>>) f ^>> a = arr f >>> a (>>^) a >>^ f = a >>> arr f (<<<) f <<< g = g >>> f (<<^) a <<^ f = a <<< arr f (^<<) f ^<< a = arr f <<< a modifyIORef modifyIORef ref f = writeIORef ref . f =<< readIORef ref (<$>) f <$> a = fmap f a (<$) (<$) = (<$>) . const (*>) (*>) = liftA2 (const id) (<*) (<*) = liftA2 const (<**>) (<**>) = liftA2 (flip ($)) liftA liftA f a = pure f <*> a liftA2 liftA2 f a b = f <$> a <*> b optional optional v = Just <$> v <|> pure Nothing some some v = some_v where many_v = some_v <|> pure [] some_v = (:) <$> v <*> many_v readMVar readMVar m = block $ do a <- takeMVar m putMVar m a return a swapMVar swapMVar mvar new = block $ do old <- takeMVar mvar putMVar mvar new return old withMVar m io = block $ do a <- takeMVar m b <- Exception.catch (unblock (io a)) (\e -> do putMVar m a; throw e) putMVar m a return b modifyMVar_ modifyMVar_ m io = block $ do a <- takeMVar m a' <- Exception.catch (unblock (io a)) (\e -> do putMVar m a; throw e) putMVar m a' modifyMVar modifyMVar m io = block $ do a <- takeMVar m (a',b) <- Exception.catch (unblock (io a)) (\e -> do putMVar m a; throw e) putMVar m a' return b handle handle = flip catch handleJust handleJust p = flip (catchJust p) mapException mapException f v = unsafePerformIO (catch (evaluate v) (\x -> throw (f x))) try try a = catch (a >>= \ v -> return (Right v)) (\e -> return (Left e)) bracket bracket before after thing = block $ do a <- before r <- catch (unblock (thing a)) (\e -> after a >> throw e) after a return r finally a `finally` sequel = block $ do r <- catch (unblock a) (\e -> sequel >> throw e) sequel return r bracket_ bracket_ before after thing = bracket before (const after) (const thing) putChar putChar c = hPutChar stdout c putStr putStr s = hPutStr stdout s putStrLn putStrLn s = do putStr s; putChar '\n' print print x = putStrLn (show x) getChar getChar = hGetChar stdin getLine getLine = hGetLine stdin getContents getContents = hGetContents stdin interact interact f = do s <- getContents; putStr (f s) readFile readFile name = openFile name ReadMode >>= hGetContents writeFile writeFile f txt = withFile f WriteMode (\ hdl -> hPutStr hdl txt) appendFile appendFile f txt = withFile f AppendMode (\ hdl -> hPutStr hdl txt) readLn readLn = do l <- getLine; r <- readIO l; return r hPutStrLn hPutStrLn hndl str = do hPutStr hndl str; hPutChar hndl '\n' withFile withFile name mode = bracket (openFile name mode) hClose exitFailure exitFailure = exitWith (ExitFailure 1) failIO failIO s = ioError (userError s) FilePath type FilePath = String IORef newtype IORef a = IORef (STRef RealWorld a) newIORef newIORef v = stToIO (newSTRef v) >>= \ var -> return (IORef var) readIORef readIORef (IORef var) = stToIO (readSTRef var) writeIORef writeIORef (IORef var) v = stToIO (writeSTRef var v) read read s = either error id (readEither s) reads reads = readsPrec minPrec readMaybe readMaybe s = case readEither s of Left _ -> Nothing Right a -> Just a readEither -- The old-style Read definition. The real one uses readPrec instead. readEither s = let s' = dropWhile isSpace s in case [x | (x, rest) <- reads s', all isSpace rest] of [x] -> Right x [] -> Left "Prelude.read: no parse" _ -> Left "Prelude.read: ambiguous parse" IOArray newtype IOArray i e = IOArray (STArray RealWorld i e) ExitCode data ExitCode = ExitSuccess | ExitFailure Int throw throw exception = raise# exception IOMode data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode killThread killThread tid = throwTo tid (AsyncException ThreadKilled) STArray data STArray s i e = STArray !i !i (MutableArray# s e) (!) arr@(Array l u _) ! i = unsafeAt arr (index (l,u) i) bounds bounds (Array l u _) = (l,u) indices indices (Array l u _) = range (l,u) elems elems arr@(Array l u _) = [unsafeAt arr i | i <- [0 .. rangeSize (l,u) - 1]] assocs assocs arr@(Array l u _) = [(i, unsafeAt arr (unsafeIndex (l,u) i)) | i <- range (l,u)] (//) arr@(Array l u _) // ies = unsafeReplace arr [(index (l,u) i, e) | (i, e) <- ies] undefined undefined = error "Prelude.undefined" error error s = throw (ErrorCall s) catch catch m k = catchException m handler where handler (IOException err) = k err Float data Float = F# Float# Double data Double = D# Double# ForeignPtr data ForeignPtr a = ForeignPtr Addr# ForeignPtrContents ForeignPtrContents data ForeignPtrContents = PlainForeignPtr !(IORef [IO ()]) | MallocPtr (MutableByteArray# RealWorld) !(IORef [IO ()]) | PlainPtr (MutableByteArray# RealWorld) Int16 data Int16 = I16# Int# Int32 data Int32 = I32# Int32# Int64 data Int64 = I64# Int64# Integer data Integer = S# Int# | J# Int# ByteArray# (-) x - y = x + negate y negate negate x = 0 - x subtract subtract x y = y - x Ptr data Ptr a = Ptr Addr# nullPtr nullPtr = Ptr nullAddr# castPtr castPtr (Ptr addr) = Ptr addr plusPtr plusPtr (Ptr addr) (I# d) = Ptr (plusAddr# addr d) minusPtr minusPtr (Ptr a1) (Ptr a2) = I# (minusAddr# a1 a2) Ratio data (Integral a) => Ratio a = !a :% !a Rational type Rational = Ratio Integer reduce reduce _ 0 = undefined reduce x y = (x `quot` d) :% (y `quot` d) where d = gcd x y (%) x % y = reduce (x * signum y) (abs y) numerator numerator (x :% _) = x denominator denominator (_ :% y) = y fromIntegral fromIntegral = fromInteger . toInteger realToFrac realToFrac = fromRational . toRational even even n = n `rem` 2 == 0 odd odd = not . even (^) x ^ 0 = 1 x ^ n | n > 0 = f x (n-1) x where f _ 0 y = y f x n y = g x n where g x n | even n = g (x*x) (n `quot` 2) | otherwise = f x (n-1) (x*y) _ ^ _ = error "Prelude.^: negative exponent" (^^) x ^^ n = if n >= 0 then x^n else recip (x^(negate n)) gcd gcd x y = gcd' (abs x) (abs y) where gcd' a 0 = a gcd' a b = gcd' b (a `rem` b) lcm lcm _ 0 = 0 lcm 0 _ = 0 lcm x y = abs ((x `quot` (gcd x y)) * y) ST newtype ST s a = ST (STRep s a) STRep type STRep s a = State# s -> (# State# s, a #) runST runST st = runSTRep (case st of { ST st_rep -> st_rep }) runSTRep runSTRep st_rep = case st_rep realWorld# of (# _, r #) -> r ShowS type ShowS = String -> String showsPrec showsPrec _ x s = show x ++ s show show x = shows x "" stToIO stToIO (ST m) = IO m ioToST ioToST (IO m) = (ST m) unsafeIOToST unsafeIOToST (IO io) = ST $ \ s -> (unsafeCoerce# io) s unsafeSTToIO unsafeSTToIO (ST m) = IO (unsafeCoerce# m) scanl scanl f q ls = q : case ls of [] -> [] x:xs -> scanl f (f q x) xs scanl1 scanl1 f (x:xs) = scanl f x xs scanl1 _ [] = [] foldr1 foldr1 _ [x] = x foldr1 f (x:xs) = f x (foldr1 f xs) foldr1 _ [] = undefined scanr1 scanr1 f [] = [] scanr1 f [x] = [x] scanr1 f (x:xs) = f x q : qs where qs@(q:_) = scanr1 f xs trace trace string expr = unsafePerformIO $ do hPutStrLn stderr string return expr STRef data STRef s a = STRef (MutVar# s a) newSTRef newSTRef init = ST $ \s1# -> case newMutVar# init s1# of (# s2#, var# #) -> (# s2#, STRef var# #) readSTRef readSTRef (STRef var#) = ST $ \s1# -> readMutVar# var# s1# writeSTRef writeSTRef (STRef var#) val = ST $ \s1# -> case writeMutVar# var# val s1# of s2# -> (# s2#, () #) STRef (==) STRef v1# == STRef v2# = sameMutVar# v1# v2# Eq class Eq a where (==), (/=) :: a -> a -> Bool Ord class (Eq a) => Ord a where compare :: a -> a -> Ordering (<), (<=), (>), (>=) :: a -> a -> Bool max, min :: a -> a -> a Ix class (Ord a) => Ix a where range :: (a, a) -> [a] index :: (a, a) -> a -> Int inRange :: (a, a) -> a -> Bool rangeSize :: (a, a) -> Int Bounded class Bounded a where minBound, maxBound :: a Real class (Num a, Ord a) => Real a where toRational :: a -> Rational Integral class (Real a, Enum a) => Integral a where quot, rem, div, mod :: a -> a -> a quotRem, divMod :: a -> a -> (a, a) toInteger :: a -> Integer Fractional class (Num a) => Fractional a where (/) :: a -> a -> a recip :: a -> a fromRational :: Rational -> a RealFrac class (Real a, Fractional a) => RealFrac a where properFraction :: (Integral b) => a -> (b, a) truncate, round, ceiling, floor :: (Integral b) => a -> b Show class Show a where showsPrec :: Int -> a -> ShowS show :: a -> String showList :: [a] -> ShowS Enum class Enum a where succ, pred :: a -> a toEnum :: Int -> a fromEnum :: a -> Int enumFrom :: a -> [a] enumFromThen, enumFromTo :: a -> a -> [a] enumFromThenTo :: a -> a -> a -> [a] Splittable class Splittable t where split :: t -> (t,t) Floating class (Fractional a) => Floating a where pi :: a exp, log, sqrt :: a -> a sin, cos, tan :: a -> a asin, acos, atan :: a -> a sinh, cosh, tanh :: a -> a asinh, acosh, atanh :: a -> a (**), logBase :: a -> a -> a Num class Num a where (+), (-), (*) :: a -> a -> a negate, abs, signum :: a -> a fromInteger :: Integer -> a RandomGen class RandomGen g where next :: g -> (Int, g) split :: g -> (g, g) genRange :: g -> (Int, Int) Random class Random a where random :: RandomGen g => g -> (a, g) randoms :: RandomGen g => g -> [a] randomR :: RandomGen g => (a, a) -> g -> (a, g) randomRs :: RandomGen g => (a, a) -> g -> [a] randomRIO :: (a, a) -> IO a randomIO :: IO a Functor class Functor f where fmap :: (a -> b) -> f a -> f b Read class Read a where readsPrec :: Int -> ReadS a readList :: ReadS [a] readPrec :: ReadPrec a readListPrec :: ReadPrec [a] Applicative class Functor f => Applicative f where pure :: a -> f a (<*>) :: f (a -> b) -> f a -> f b Alternative class Applicative f => Alternative f where empty :: f a (<|>) :: f a -> f a -> f a Monad class Applicative m => Monad m where -- Note: Applicative wasn't a superclass before GHC 7.10 (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b return :: a -> m a fail :: String -> m a MonadPlus class Alternative m => MonadPlus m where -- Note: Alternative wasn't a superclass before GHC 7.10 mzero :: m a mplus :: m a -> m a -> m a Monoid class Monoid a where mempty :: a mappend :: a -> a -> a mconcat :: [a] -> a (<>) (<>) = mappend Dual newtype Dual a = Dual { getDual :: a } getDual newtype Dual a = Dual { getDual :: a } Dual mempty mempty = Dual mempty Dual mappend Dual x `mappend` Dual y = Dual (y `mappend` x) Endo newtype Endo a = Endo { appEndo :: a -> a } appEndo newtype Endo a = Endo { appEndo :: a -> a } Endo mempty mempty = Endo id Endo mappend Endo f `mappend` Endo g = Endo (f . g) All newtype All = All { getAll :: Bool } getAll newtype All = All { getAll :: Bool } All mempty mempty = All True All mappend All x `mappend` All y = All (x && y) Any newtype Any = Any { getAny :: Bool } getAny newtype Any = Any { getAny :: Bool } Any mempty mempty = Any False Any mappend Any x `mappend` Any y = Any (x || y) Sum newtype Sum a = Sum { getSum :: a } getSum newtype Sum a = Sum { getSum :: a } Sum mempty mempty = Sum 0 Sum mappend Sum x `mappend` Sum y = Sum (x + y) Product newtype Product a = Product { getProduct :: a } getProduct newtype Product a = Product { getProduct :: a } Product mempty mempty = Product 1 Product mappend Product x `mappend` Product y = Product (x * y) First newtype First a = First { getFirst :: Maybe a } getFirst newtype First a = First { getFirst :: Maybe a } First mempty mempty = First Nothing First mappend r@(First (Just _)) `mappend` _ = r First Nothing `mappend` r = r Last newtype Last a = Last { getLast :: Maybe a } getLast newtype Last a = Last { getLast :: Maybe a } Last mempty mempty = Last Nothing Last mappend _ `mappend` r@(Last (Just _)) = r r `mappend` Last Nothing = r Arrow class Arrow a where arr, pure :: (b -> c) -> a b c (>>>) :: a b c -> a c d -> a b d first :: a b c -> a (b,d) (c,d) second :: a b c -> a (d,b) (d,c) (***) :: a b c -> a b' c' -> a (b,b') (c,c') (&&&) :: a b c -> a b c' -> a b (c,c') Traversable class (Functor t, Foldable t) => Traversable t where traverse :: Applicative f => (a -> f b) -> t a -> f (t b) sequenceA :: Applicative f => t (f a) -> f (t a) mapM :: Monad m => (a -> m b) -> t a -> m (t b) sequence :: Monad m => t (m a) -> m (t a) traverse_ traverse_ h xs = foldr (\fx fxs -> h fx *> fxs) (pure ()) --OR traverse_ h xs = traverse h xs *> pure () map_ map_ = flip traverse_ IO fmap fmap f x = x >>= (return . f) IO (>>) m >> k = m >>= \ _ -> k IO return return x = returnIO x IO (>>=) m >>= k = bindIO m k IO fail fail s = failIO s IO mzero mzero = ioError (userError "mzero") IO mplus m `mplus` n = m `catch` \_ -> n [] (==) [] == [] = True (x:xs) == (y:ys) = x == y && xs == ys _ == _ = False [] fmap fmap = map [] (>>=) xs >>= f = concatMap f xs [] (>>) xs >> ys = concatMap (const ys) xs [] return return x = [x] [] fail fail _ = [] [] mzero mzero = [] [] mplus mplus = (++) Maybe (>>=) (Just x) >>= k = k x Nothing >>= _ = Nothing Maybe (>>) (Just _) >> k = k Nothing >> _ = Nothing Maybe return return = Just Maybe fail fail _ = Nothing Maybe mzero mzero = Nothing Maybe mplus Nothing `mplus` ys = ys xs `mplus` ys = xs Maybe fmap fmap _ Nothing = Nothing fmap f (Just a) = Just (f a) Either fmap fmap _ (Left x) = Left x fmap f (Right y) = Right (f y) Either return return = Right Either (>>=) Left l >>= _ = Left l Right r >>= k = k r Either fail fail msg = Left (strMsg msg) Either mzero mzero = Left noMsg Either mplus Left _ `mplus` n = n m `mplus` _ = m Either mfix mfix f = let a = f $ case a of Right r -> r _ -> error "empty mfix argument" in a () (==) () == () = True () (/=) () /= () = False () (<=) () <= () = True () (<) () < () = False () (>=) () >= () = True () (>) () > () = False () max max () () = () () min min () () = () () compare compare () () = EQ Char (==) (C# c1) == (C# c2) = c1 `eqChar#` c2 (C# c1) /= (C# c2) = c1 `neChar#` c2 Int (==) (==) = eqInt Int (/=) (/=) = neInt (->) fmap fmap = (.) (->) return return = const (->) (>>=) f >>= k = \ r -> k (f r) r (,) fmap fmap f (x,y) = (x, f y) (->) ask ask = id (->) local local f m = m . f (->) mfix mfix f = \ r -> let a = f a r in a IORef (==) IORef x == IORef y = x == y IOArray (==) IOArray x == IOArray y = x == y asks asks f = do r <- ask return (f r) Identity newtype Identity a = Identity { runIdentity :: a } Identity fmap fmap f m = Identity (f (runIdentity m)) Identity return return a = Identity a Identity (>>=) m >>= k = k (runIdentity m) Identity mfix mfix f = Identity (fix (runIdentity . f)) MonadCont class (Monad m) => MonadCont m where callCC :: ((a -> m b) -> m a) -> m a Cont newtype Cont r a = Cont { runCont :: (a -> r) -> r } Cont fmap fmap f m = Cont $ \c -> runCont m (c . f) Cont return return a = Cont ($ a) Cont (>>=) m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c Cont callCC callCC f = Cont $ \c -> runCont (f (\a -> Cont $ \_ -> c a)) c ContT newtype ContT r m a = ContT { runContT :: (a -> m r) -> m r } ContT fmap fmap f m = ContT $ \c -> runContT m (c . f) ContT return return a = ContT ($ a) ContT (>>=) m >>= k = ContT $ \c -> runContT m (\a -> runContT (k a) c) ContT callCC callCC f = ContT $ \c -> runContT (f (\a -> ContT $ \_ -> c a)) c ContT ask ask = lift ask ContT local local f m = ContT $ \c -> do r <- ask local f (runContT m (local (const r) . c)) Error class Error a where noMsg :: a strMsg :: String -> a MonadError class (Monad m) => MonadError e m | m -> e where throwError :: e -> m a catchError :: m a -> (e -> m a) -> m a IO throwError throwError = ioError IO catchError catchError = catch ErrorT newtype ErrorT e m a = ErrorT { runErrorT :: m (Either e a) } ErrorT fmap fmap f m = ErrorT $ do a <- runErrorT m case a of Left l -> return (Left l) Right r -> return (Right (f r)) ErrorT return return a = ErrorT $ return (Right a) ErrorT (>>=) m >>= k = ErrorT $ do a <- runErrorT m case a of Left l -> return (Left l) Right r -> runErrorT (k r) ErrorT fail fail msg = ErrorT $ return (Left (strMsg msg)) ErrorT mzero mzero = ErrorT $ return (Left noMsg) ErrorT mplus m `mplus` n = ErrorT $ do a <- runErrorT m case a of Left _ -> runErrorT n Right r -> return (Right r) ErrorT mfix mfix f = ErrorT $ mfix $ \a -> runErrorT $ f $ case a of Right r -> r _ -> error "empty mfix argument" ErrorT ask ask = lift ask ErrorT local local f m = ErrorT $ local f (runErrorT m) MonadFix class (Monad m) => MonadFix m where mfix :: (a -> m a) -> m a Maybe mfix mfix f = let a = f (unJust a) in a where unJust (Just x) = x [] mfix mfix f = case fix (f . head) of [] -> [] (x:_) -> x : mfix (tail . f) IO mfix mfix = fixIO Maybe pure pure = return Maybe (<*>) (<*>) = ap Maybe empty empty = Nothing Maybe (<|>) Nothing <|> p = p Just x <|> _ = Just x [] pure pure = return [] (<*>) (<*>) = ap [] empty empty = [] [] (<|>) (<|>) = (++) IO pure pure = return IO (<*>) (<*>) = ap (->) pure pure = const (->) (<*>) (<*>) f g x = f x (g x) (,) pure pure x = (mempty, x) (,) (<*>) (u, f) <*> (v, x) = (u `mappend` v, f x) (->) arr arr f = f (->) (>>>) f >>> g = g . f (->) first first f = f *** id (->) second second f = id *** f (->) (***) (f *** g) ~(x,y) = (f x, g y) lambdabot-5.3.0.1/src/0000755000000000000000000000000013705364112012562 5ustar0000000000000000lambdabot-5.3.0.1/src/Main.hs0000644000000000000000000000545713705364112014015 0ustar0000000000000000-- -- | Let's go lambdabot! -- module Main where import Lambdabot.Main import Lambdabot.Plugin.Haskell import Modules (modulesInfo) import qualified Paths_lambdabot as P import Control.Applicative import Control.Monad import Control.Monad.Identity import Data.Char import Data.Version import System.Console.GetOpt import System.Environment import System.Exit import System.IO flags :: [OptDescr (IO (DSum Config Identity))] flags = [ Option "h?" ["help"] (NoArg (usage [])) "Print this help message" , Option "e" [] (arg "" onStartupCmds strs) "Run a lambdabot command instead of a REPL" , Option "l" [] (arg "" consoleLogLevel level) "Set the logging level" , Option "t" ["trust"] (arg "" trustedPackages strs) "Trust the specified packages when evaluating code" , Option "V" ["version"] (NoArg version) "Print the version of lambdabot" , Option "X" [] (arg "" languageExts strs) "Set a GHC language extension for @run" , Option "n" ["nice"] (NoArg noinsult) "Be nice (disable insulting error messages)" ] where arg :: String -> Config t -> (String -> IO t) -> ArgDescr (IO (DSum Config Identity)) arg descr key fn = ReqArg (fmap (key ==>) . fn) descr strs = return . (:[]) level str = case reads (map toUpper str) of (lv, []):_ -> return lv _ -> usage [ "Unknown log level." , "Valid levels are: " ++ show [DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY] ] noinsult = return (enableInsults ==> False) versionString :: String versionString = ("lambdabot version " ++ showVersion P.version) version :: IO a version = do putStrLn versionString exitWith ExitSuccess usage :: [String] -> IO a usage errors = do cmd <- getProgName let isErr = not (null errors) out = if isErr then stderr else stdout mapM_ (hPutStrLn out) errors when isErr (hPutStrLn out "") hPutStrLn out versionString hPutStr out (usageInfo (cmd ++ " [options]") flags) exitWith (if isErr then ExitFailure 1 else ExitSuccess) -- do argument handling main :: IO () main = do (config, nonOpts, errors) <- getOpt Permute flags <$> getArgs when (not (null errors && null nonOpts)) (usage errors) config' <- sequence config dir <- P.getDataDir exitWith <=< lambdabotMain modulesInfo $ [dataDir ==> dir, lbVersion ==> P.version] ++ config' -- special online target for ghci use online :: [String] -> IO () online strs = do dir <- P.getDataDir void $ lambdabotMain modulesInfo [dataDir ==> dir, lbVersion ==> P.version, onStartupCmds ==> strs] lambdabot-5.3.0.1/src/Modules.hs0000644000000000000000000000131513705364112014526 0ustar0000000000000000{-# LANGUAGE TemplateHaskell #-} module Modules (modulesInfo) where import Lambdabot.Main -- to add a new plugin, one must first add a qualified import here, and also -- add a string in the list below import Lambdabot.Plugin.Haskell import Lambdabot.Plugin.IRC import Lambdabot.Plugin.Misc import Lambdabot.Plugin.Novelty import Lambdabot.Plugin.Reference import Lambdabot.Plugin.Social modulesInfo :: Modules modulesInfo = $(modules $ corePlugins ++ haskellPlugins ++ ["irc", "localtime", "topic"] -- ircPlugins ++ ["dummy", "fresh", "todo"] -- miscPlugins ++ ["bf", "dice", "elite", "filter", "quote", "slap", "unlambda", "vixen"] -- noveltyPlugins ++ referencePlugins ++ socialPlugins) lambdabot-5.3.0.1/scripts/0000755000000000000000000000000013705364112013462 5ustar0000000000000000lambdabot-5.3.0.1/scripts/ghci.sh0000755000000000000000000000241113705364112014731 0ustar0000000000000000#!/bin/bash # Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) if [ ! -e "lambdabot.cabal" ] ; then echo "You must run this script from the root directory of lambdabot package." echo "Change your current path to the directory containing lambdabot.cabal" echo "file and type:" echo "" echo "./scripts/ghci.sh" echo "" echo "Make also sure you've done a full compiled build of lambdabot recently." exit fi echo "Make sure you've done a full compiled build of lambdabot recently." echo "" # find possible .o files if [ -e "dist/build/lambdabot/lambdabot-tmp/" ] ; then Odir=dist/build/lambdabot/lambdabot-tmp/ else Odir=. fi # run ghci with the right command line flags to launch lambdabot ghci -cpp -Wall -I. -isrc -idist/build/autogen/ -fno-warn-incomplete-patterns -fno-warn-missing-methods -fno-warn-orphans -DGHCi -hidir $Odir -odir $Odir $* -XCPP -XDeriveDataTypeable -XExistentialQuantification -XFlexibleContexts -XFlexibleInstances -XImplicitParams -XMultiParamTypeClasses -XNoMonomorphismRestriction -XPatternGuards -XRank2Types -XScopedTypeVariables -XStandaloneDeriving -XTemplateHaskell -XTypeOperators -XTypeSynonymInstances -XUndecidableInstances -XViewPatterns lambdabot-5.3.0.1/scripts/passwd.rc.sample0000644000000000000000000000007013705364112016566 0ustar0000000000000000nickserv identify your_lambdabot_nickserv_password_here lambdabot-5.3.0.1/scripts/online.rc0000644000000000000000000000224413705364112015276 0ustar0000000000000000irc-connect freenode chat.freenode.net 6667 lambdabot Lambda_Robots:_100%_Loyal rc passwd.rc admin + freenode:Cale admin + freenode:Igloo admin + freenode:Lemmih admin + freenode:Pseudonym admin + freenode:mauke admin + freenode:dons admin + freenode:gwern admin + freenode:igli admin + freenode:int-e admin + freenode:musasabi admin + freenode:shapr admin + freenode:sjanssen admin + freenode:sorear admin + freenode:vincenz join freenode:##logic join freenode:#arch-haskell join freenode:#darcs join freenode:#debian-es join freenode:#friendly-coders join freenode:#gentoo-haskell join freenode:#ghc join freenode:#happs join freenode:#haskell join freenode:#haskell-blah join freenode:#haskell-books join freenode:#haskell-overflow join freenode:#haskell-soc join freenode:#haskell.cz join freenode:#haskell.de join freenode:#haskell.dut join freenode:#haskell.es join freenode:#haskell.fi join freenode:#haskell.fr join freenode:#haskell.it join freenode:#haskell.jp join freenode:#haskell.se join freenode:#haskell_ru join freenode:#lessswrong join freenode:#macosx join freenode:#perl6 join freenode:#rosettacode join freenode:#scala join freenode:#unicycling join freenode:#xmonad lambdabot-5.3.0.1/scripts/genhaddock.sh0000755000000000000000000000022513705364112016107 0ustar0000000000000000#! /bin/sh curl -L https://www.haskell.org/ghc/docs/latest/html/libraries/doc-index-All.html | runhaskell GenHaddock.hs | gzip -9 > ../State/haddock lambdabot-5.3.0.1/scripts/GenHaddock.hs0000644000000000000000000000077013705364112016011 0ustar0000000000000000-- -- | Generate the initial @index state -- import Text.HTML.TagSoup import Data.List main = interact (unlines . go [] . parseTags) go mods (TagOpen "td" [("class","src")] : TagText ident : xs) = nub mods ++ ["" | not (null mods)] ++ ident : go [] xs go mods (TagOpen "td" [("class","module")] : xs) = let (ys, zs) = span (not . isTagCloseName "td") xs in go (mods ++ words (filter (/= ',') (innerText ys))) zs go mods (x : xs) = go mods xs go mods [] = nub mods ++ ["" | not (null mods)] lambdabot-5.3.0.1/scripts/vim/0000755000000000000000000000000013705364112014255 5ustar0000000000000000lambdabot-5.3.0.1/scripts/vim/runwith0000644000000000000000000000175613705364112015711 0ustar0000000000000000#!/bin/sh # Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons # adapted by Gareth Smith # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) # # A shell script to be called from vim, to use the awsesome power of haskell # string processing in everyday editing. # # Select the line you want to edit, and in vim, type: # !!runwith f # # where f :: (Show a) => String -> a # # (Assuming your lambdabot is installed in $HOME/lambdabot) it will # replace the line with (f line) # # Hint: If you find yourself using a particular function a lot, use: # !!bot let # to define it in lambdabot's local namespace. # # Isn't perfect yet - I'd like it if for functions f :: String -> String, that # the returned String didn't have to pass through the show function, so we # didn't get extraneous quote marks. For now, you can s/"//g them away though # :) # DECL=`cat` cd $HOME/lambdabot echo "run $* \"$DECL\"" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //' lambdabot-5.3.0.1/scripts/vim/README0000644000000000000000000000042113705364112015132 0ustar0000000000000000Vim support for lambdabot To use, * install these scripts into your path somewhere From within Vim, type: !!foo where 'foo' is the script to run, and it will replace the contents of the current line, with the result filtered through that lambdabot command. lambdabot-5.3.0.1/scripts/vim/run0000644000000000000000000000111213705364112014777 0ustar0000000000000000#!/bin/sh # Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons # adapted by Gareth Smith # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) # # A shell script to be called from vim, to use the awsesome power of haskell # string processing in everyday editing. # # Select the line you want to edit, and in vim, type: # !!run # # (Assuming your lambdabot is installed in $HOME/lambdabot) it will # run the line as a haskell expression. # DECL=`cat` cd $HOME/lambdabot echo "run $DECL" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //' lambdabot-5.3.0.1/scripts/vim/pl0000644000000000000000000000107413705364112014615 0ustar0000000000000000#!/bin/sh # Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) # # A shell script to be called from vim, to automatically refactor a code # fragment. # # Select the expression you want to refactor, on a line of its own, and # in vim, type: # !!pl # # (Assuming your lambdabot is installed in $HOME/lambdabot, it will # replace the expression with the pointfree version # DECL=`cat` cd $HOME/lambdabot/ echo "pl $DECL" | ./lambdabot 2> /dev/null | sed '$d;/Irc/d;s/lambdabot> //' lambdabot-5.3.0.1/scripts/vim/typeOf0000644000000000000000000000046513705364112015453 0ustar0000000000000000#!/bin/sh # Copyright (c) 2005 Don Stewart - http://www.cse.unsw.edu.au/~dons # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) # input is a top level .hs decls FILE=$* DECL=`cat` ID=`echo $DECL | sed 's/^\([^ ]*\).*/\1/'` echo ":t $ID" | ghci -v0 -cpp -fglasgow-exts -w $FILE echo $DECL lambdabot-5.3.0.1/scripts/vim/bot0000644000000000000000000000076313705364112014772 0ustar0000000000000000#!/bin/sh # Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons # GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html) # # Generic lambdabot binding # # Select the expression you want to refactor, on a line of its own, and # in vim, type: # !!bot cmd # # (Assuming your lambdabot is installed in $HOME/lambdabot, it will # replace the expression with the pointfree version # DECL=`cat` cd $HOME/lambdabot/ echo "$* $DECL" | ./lambdabot | sed '$d;s/lambdabot> //'