# PaCkAgE DaTaStReAm ruby 1 32829 # end of header 07070100184431000081a40000000000000000000000014dc8e19e000000fc000000b600010002ffffffffffffffff0000000d00000000ruby/pkginfoPKG=ruby NAME=ruby 1.9.2.p180 i86pc Solaris 10 VERSION=1.9.2.p180 PSTAMP=10th May 2011 VENDOR=The Ruby Project EMAIL=http://www.ruby-lang.org/ DESC=The Ruby language ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100184430000081a40000000000000000000000014dc8e19e00010e3a000000b600010002ffffffffffffffff0000000c00000000ruby/pkgmap: 1 32829 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/erb 0755 root root 4399 39454 1305010093 1 f none /usr/local/bin/gem 0755 root root 548 48157 1305010093 1 f none /usr/local/bin/irb 0755 root root 320 23263 1305010093 1 f none /usr/local/bin/rake 0755 root root 1250 33979 1305010093 1 f none /usr/local/bin/rdoc 0755 root root 699 56424 1305010093 1 f none /usr/local/bin/ri 0755 root root 75 6292 1305010093 1 f none /usr/local/bin/ruby 0755 root root 11192 48361 1305009855 1 f none /usr/local/bin/testrb 0755 root root 249 19990 1305010093 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/ruby-1.9.1 0755 root root 1 d none /usr/local/include/ruby-1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby 0755 root root 1 f none /usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby/config.h 0644 root root 7096 12593 1305009817 1 d none /usr/local/include/ruby-1.9.1/ruby 0755 root root 1 f none /usr/local/include/ruby-1.9.1/ruby.h 0644 root root 834 53871 1264395746 1 d none /usr/local/include/ruby-1.9.1/ruby/backward 0755 root root 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/rubyio.h 0644 root root 215 18129 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/rubysig.h 0644 root root 1319 37518 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/st.h 0644 root root 217 18188 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/util.h 0644 root root 227 19263 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/defines.h 0644 root root 6755 62280 1262169842 1 f none /usr/local/include/ruby-1.9.1/ruby/digest.h 0644 root root 881 2836 1305009839 1 f none /usr/local/include/ruby-1.9.1/ruby/encoding.h 0644 root root 12635 53810 1291277206 1 f none /usr/local/include/ruby-1.9.1/ruby/intern.h 0644 root root 29498 54396 1289821394 1 f none /usr/local/include/ruby-1.9.1/ruby/io.h 0644 root root 4886 36890 1277649079 1 f none /usr/local/include/ruby-1.9.1/ruby/missing.h 0644 root root 3403 6658 1280915391 1 f none /usr/local/include/ruby-1.9.1/ruby/oniguruma.h 0644 root root 35129 23934 1267480499 1 f none /usr/local/include/ruby-1.9.1/ruby/re.h 0644 root root 1296 32960 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/regex.h 0644 root root 733 51745 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/ruby.h 0644 root root 42764 58061 1285763138 1 f none /usr/local/include/ruby-1.9.1/ruby/st.h 0644 root root 3753 59622 1264408574 1 f none /usr/local/include/ruby-1.9.1/ruby/util.h 0644 root root 1988 26286 1262070339 1 f none /usr/local/include/ruby-1.9.1/ruby/version.h 0644 root root 1535 56063 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/vm.h 0644 root root 825 60476 1274761610 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libruby-static.a 0644 root root 2995792 30806 1305009825 1 s none /usr/local/lib/libruby.so=libruby.so.1 1 f none /usr/local/lib/libruby.so.1 0755 root root 2744074 46408 1305009825 1 s none /usr/local/lib/libruby.so.1.9.1=libruby.so.1 1 d none /usr/local/lib/ruby 0755 root root 1 d none /usr/local/lib/ruby/1.9.1 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/English.rb 0644 root root 5722 5708 1254480339 1 f none /usr/local/lib/ruby/1.9.1/abbrev.rb 0644 root root 2558 2592 1254485077 1 f none /usr/local/lib/ruby/1.9.1/base64.rb 0644 root root 2694 13177 1254480339 1 f none /usr/local/lib/ruby/1.9.1/benchmark.rb 0644 root root 18084 2722 1270232549 1 d none /usr/local/lib/ruby/1.9.1/bigdecimal 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/jacobian.rb 0644 root root 2012 20565 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/ludcmp.rb 0644 root root 2146 25099 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/math.rb 0644 root root 6941 36754 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/newton.rb 0644 root root 1821 9681 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/util.rb 0644 root root 1166 25470 1305009838 1 d none /usr/local/lib/ruby/1.9.1/cgi 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/cgi.rb 0644 root root 9672 753 1264691992 1 f none /usr/local/lib/ruby/1.9.1/cgi/cookie.rb 0644 root root 4419 1954 1270522912 1 f none /usr/local/lib/ruby/1.9.1/cgi/core.rb 0644 root root 25750 31412 1272758079 1 f none /usr/local/lib/ruby/1.9.1/cgi/html.rb 0644 root root 34415 16201 1269055859 1 d none /usr/local/lib/ruby/1.9.1/cgi/session 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/cgi/session.rb 0644 root root 18782 33445 1254480339 1 f none /usr/local/lib/ruby/1.9.1/cgi/session/pstore.rb 0644 root root 3295 59348 1254480339 1 f none /usr/local/lib/ruby/1.9.1/cgi/util.rb 0644 root root 6165 46662 1291277238 1 f none /usr/local/lib/ruby/1.9.1/cmath.rb 0644 root root 4151 38662 1279801887 1 f none /usr/local/lib/ruby/1.9.1/complex.rb 0644 root root 380 31807 1250436875 1 f none /usr/local/lib/ruby/1.9.1/csv.rb 0644 root root 83812 12497 1292851360 1 d none /usr/local/lib/ruby/1.9.1/date 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/date.rb 0644 root root 55925 49001 1289821414 1 d none /usr/local/lib/ruby/1.9.1/date/delta 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/date/delta.rb 0644 root root 10167 11709 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/delta/parser.rb 0644 root root 6241 10298 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/delta/parser.ry 0644 root root 1650 52154 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/format.rb 0644 root root 32072 8912 1250464933 1 f none /usr/local/lib/ruby/1.9.1/debug.rb 0644 root root 20169 39342 1254480339 1 f none /usr/local/lib/ruby/1.9.1/delegate.rb 0644 root root 10433 5266 1277180999 1 d none /usr/local/lib/ruby/1.9.1/digest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/digest.rb 0644 root root 2044 27747 1305009839 1 f none /usr/local/lib/ruby/1.9.1/digest/hmac.rb 0644 root root 7198 52555 1305009839 1 f none /usr/local/lib/ruby/1.9.1/digest/sha2.rb 0644 root root 1496 43459 1305009840 1 d none /usr/local/lib/ruby/1.9.1/drb 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/drb.rb 0644 root root 19 1566 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/acl.rb 0644 root root 2643 63127 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/drb.rb 0644 root root 53219 3530 1277139749 1 f none /usr/local/lib/ruby/1.9.1/drb/eq.rb 0644 root root 234 17367 1264504940 1 f none /usr/local/lib/ruby/1.9.1/drb/extserv.rb 0644 root root 1211 26379 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/extservm.rb 0644 root root 1498 49233 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/gw.rb 0644 root root 1925 15638 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/invokemethod.rb 0644 root root 725 50429 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/observer.rb 0644 root root 473 35466 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/ssl.rb 0644 root root 4980 56766 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/timeridconv.rb 0644 root root 1503 50237 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/unix.rb 0644 root root 2482 61258 1254480339 1 f none /usr/local/lib/ruby/1.9.1/e2mmap.rb 0644 root root 3728 21085 1272402586 1 f none /usr/local/lib/ruby/1.9.1/erb.rb 0644 root root 23014 21612 1254485077 1 f none /usr/local/lib/ruby/1.9.1/expect.rb 0644 root root 1320 37964 1305009844 1 f none /usr/local/lib/ruby/1.9.1/fileutils.rb 0644 root root 43567 51999 1298030572 1 f none /usr/local/lib/ruby/1.9.1/find.rb 0644 root root 2073 29044 1260892474 1 f none /usr/local/lib/ruby/1.9.1/forwardable.rb 0644 root root 7284 7710 1274604524 1 f none /usr/local/lib/ruby/1.9.1/getoptlong.rb 0644 root root 15007 61572 1264773237 1 f none /usr/local/lib/ruby/1.9.1/gserver.rb 0644 root root 6578 63437 1254480339 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/bigdecimal.so 0755 root root 80456 29252 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/continuation.so 0755 root root 4380 19915 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/coverage.so 0755 root root 9984 14018 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/dbm.so 0755 root root 30236 12131 1305009839 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest.so 0755 root root 22060 15791 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/bubblebabble.so 0755 root root 11092 55960 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/md5.so 0755 root root 17784 2916 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/rmd160.so 0755 root root 26576 12611 1305009840 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/sha1.so 0755 root root 26904 16717 1305009840 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/sha2.so 0755 root root 13624 4831 1305009840 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/big5.so 0755 root root 13192 29757 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/cp949.so 0755 root root 9504 22382 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/emacs_mule.so 0755 root root 14108 28658 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/encdb.so 0755 root root 15136 40461 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_jp.so 0755 root root 14828 51824 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_kr.so 0755 root root 9180 33838 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_tw.so 0755 root root 9884 26894 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gb18030.so 0755 root root 11844 52062 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gb2312.so 0755 root root 8108 12714 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gbk.so 0755 root root 9452 26092 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_1.so 0755 root root 8676 48749 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_10.so 0755 root root 8332 40995 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_11.so 0755 root root 7096 62389 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_13.so 0755 root root 8220 37016 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_14.so 0755 root root 8332 41007 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_15.so 0755 root root 8252 37081 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_16.so 0755 root root 8308 39116 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_2.so 0755 root root 8272 42017 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_3.so 0755 root root 8232 38235 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_4.so 0755 root root 8264 40771 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_5.so 0755 root root 8240 39792 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_6.so 0755 root root 7072 52115 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_7.so 0755 root root 8144 33504 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_8.so 0755 root root 7072 52788 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_9.so 0755 root root 8192 40016 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_r.so 0755 root root 8136 37440 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_u.so 0755 root root 8168 38849 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/shift_jis.so 0755 root root 14664 65317 1305009826 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/big5.so 0755 root root 480256 33641 1305009829 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/chinese.so 0755 root root 185600 12785 1305009830 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji.so 0755 root root 49912 59967 1305009830 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_iso2022_kddi.so 0755 root root 126448 32656 1305009831 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_docomo.so 0755 root root 120392 45448 1305009831 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_kddi.so 0755 root root 124512 37305 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_softbank.so 0755 root root 120428 43155 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/escape.so 0755 root root 10488 28808 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gb18030.so 0755 root root 181448 41779 1305009833 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gbk.so 0755 root root 197380 15754 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/iso2022.so 0755 root root 16008 29921 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese.so 0755 root root 9932 12262 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese_euc.so 0755 root root 242340 3397 1305009835 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese_sjis.so 0755 root root 152672 15460 1305009836 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/korean.so 0755 root root 245976 16662 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/single_byte.so 0755 root root 100688 30180 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/transdb.so 0755 root root 14872 37167 1305009827 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/utf8_mac.so 0755 root root 44872 24292 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/utf_16_32.so 0755 root root 15160 863 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_16be.so 0755 root root 8836 14324 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_16le.so 0755 root root 8724 65132 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_32be.so 0755 root root 7384 29560 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_32le.so 0755 root root 7384 30084 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/windows_1251.so 0755 root root 8208 45336 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/etc.so 0755 root root 19744 44932 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/fcntl.so 0755 root root 10212 30315 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/fiber.so 0755 root root 4296 9468 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/iconv.so 0755 root root 34444 42594 1305009842 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io/nonblock.so 0755 root root 10852 29490 1305009842 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io/wait.so 0755 root root 11136 45217 1305009843 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext/generator.so 0755 root root 41580 44637 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext/parser.so 0755 root root 35252 56927 1305009843 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn/complex.so 0755 root root 4372 17770 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn/rational.so 0755 root root 4380 19047 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/nkf.so 0755 root root 245032 39060 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/objspace.so 0755 root root 25616 3545 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/pty.so 0755 root root 22336 37830 1305009844 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/racc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/racc/cparse.so 0755 root root 25468 29631 1305009844 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/rbconfig.rb 0644 root root 8199 61658 1305009824 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/ripper.so 0755 root root 218980 41266 1305009845 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/sdbm.so 0755 root root 40568 34835 1305009845 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/socket.so 0755 root root 232060 26019 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/stringio.so 0755 root root 39764 56407 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/strscan.so 0755 root root 33864 20711 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/syck.so 0755 root root 203464 39189 1305009850 1 f none /usr/local/lib/ruby/1.9.1/ipaddr.rb 0644 root root 23623 52998 1269173453 1 d none /usr/local/lib/ruby/1.9.1/irb 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb.rb 0644 root root 7484 51489 1269954203 1 d none /usr/local/lib/ruby/1.9.1/irb/cmd 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/chws.rb 0644 root root 462 35724 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/fork.rb 0644 root root 557 40381 1274604524 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/help.rb 0644 root root 639 42606 1270678607 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/load.rb 0644 root root 1130 22713 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/nop.rb 0644 root root 526 37185 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/pushws.rb 0644 root root 586 46243 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/subirb.rb 0644 root root 571 41858 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/completion.rb 0644 root root 5311 23363 1271134870 1 f none /usr/local/lib/ruby/1.9.1/irb/context.rb 0644 root root 7077 35777 1269954203 1 d none /usr/local/lib/ruby/1.9.1/irb/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/change-ws.rb 0644 root root 1093 17200 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/history.rb 0644 root root 2096 31940 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/loader.rb 0644 root root 2236 40197 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/math-mode.rb 0644 root root 562 42670 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/multi-irb.rb 0644 root root 4849 46277 1271940858 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/save-history.rb 0644 root root 2176 39662 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/tracer.rb 0644 root root 1125 23302 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/use-loader.rb 0644 root root 1296 38740 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/workspaces.rb 0644 root root 915 7041 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/extend-command.rb 0644 root root 7163 38734 1259975908 1 f none /usr/local/lib/ruby/1.9.1/irb/frame.rb 0644 root root 1239 27268 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/help.rb 0644 root root 549 40604 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/init.rb 0644 root root 7135 51072 1293101360 1 f none /usr/local/lib/ruby/1.9.1/irb/input-method.rb 0644 root root 2559 61469 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/inspector.rb 0644 root root 2268 45360 1252294121 1 d none /usr/local/lib/ruby/1.9.1/irb/lc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/error.rb 0644 root root 863 7410 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/help-message 0644 root root 1474 49603 1270824918 1 d none /usr/local/lib/ruby/1.9.1/irb/lc/ja 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/encoding_aliases.rb 0644 root root 151 11428 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/error.rb 0644 root root 1083 56181 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/help-message 0644 root root 1876 27841 1270824918 1 f none /usr/local/lib/ruby/1.9.1/irb/locale.rb 0644 root root 4510 21159 1295181276 1 f none /usr/local/lib/ruby/1.9.1/irb/magic-file.rb 0644 root root 844 61446 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/notifier.rb 0644 root root 2703 21680 1269055859 1 f none /usr/local/lib/ruby/1.9.1/irb/output-method.rb 0644 root root 1338 35628 1269055859 1 f none /usr/local/lib/ruby/1.9.1/irb/ruby-lex.rb 0644 root root 22645 47201 1291795751 1 f none /usr/local/lib/ruby/1.9.1/irb/ruby-token.rb 0644 root root 7518 46809 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/slex.rb 0644 root root 6075 54150 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/src_encoding.rb 0644 root root 90 7011 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/version.rb 0644 root root 241 16807 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/workspace.rb 0644 root root 2596 64982 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ws-for-case-2.rb 0644 root root 195 13726 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/xmp.rb 0644 root root 1804 6966 1269055859 1 d none /usr/local/lib/ruby/1.9.1/json 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/json.rb 0644 root root 144 11988 1305009843 1 d none /usr/local/lib/ruby/1.9.1/json/add 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/json/add/core.rb 0644 root root 2844 17442 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/add/rails.rb 0644 root root 1226 32947 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/common.rb 0644 root root 13496 56057 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/editor.rb 0644 root root 42296 17749 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/ext.rb 0644 root root 352 29104 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/version.rb 0644 root root 271 18992 1305009843 1 f none /usr/local/lib/ruby/1.9.1/kconv.rb 0644 root root 5874 54775 1305009843 1 f none /usr/local/lib/ruby/1.9.1/logger.rb 0644 root root 19428 63129 1256051318 1 f none /usr/local/lib/ruby/1.9.1/mathn.rb 0644 root root 3810 18400 1264457309 1 f none /usr/local/lib/ruby/1.9.1/matrix.rb 0644 root root 38945 25901 1275711139 1 d none /usr/local/lib/ruby/1.9.1/minitest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/minitest/autorun.rb 0644 root root 362 25679 1245310299 1 f none /usr/local/lib/ruby/1.9.1/minitest/mock.rb 0644 root root 1229 29188 1269740227 1 f none /usr/local/lib/ruby/1.9.1/minitest/spec.rb 0644 root root 7694 17853 1269740227 1 f none /usr/local/lib/ruby/1.9.1/minitest/unit.rb 0644 root root 20578 42815 1296138273 1 f none /usr/local/lib/ruby/1.9.1/mkmf.rb 0644 root root 60575 3787 1275093789 1 f none /usr/local/lib/ruby/1.9.1/monitor.rb 0644 root root 6075 38424 1265459512 1 f none /usr/local/lib/ruby/1.9.1/mutex_m.rb 0644 root root 1486 52771 1274604524 1 d none /usr/local/lib/ruby/1.9.1/net 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/net/ftp.rb 0644 root root 24012 41019 1265469980 1 f none /usr/local/lib/ruby/1.9.1/net/http.rb 0644 root root 72628 20368 1295181311 1 f none /usr/local/lib/ruby/1.9.1/net/https.rb 0644 root root 2329 61895 1269055859 1 f none /usr/local/lib/ruby/1.9.1/net/imap.rb 0644 root root 106421 2837 1295181336 1 f none /usr/local/lib/ruby/1.9.1/net/pop.rb 0644 root root 26278 53368 1254485077 1 f none /usr/local/lib/ruby/1.9.1/net/protocol.rb 0644 root root 7896 55904 1254485077 1 f none /usr/local/lib/ruby/1.9.1/net/smtp.rb 0644 root root 28829 12409 1293108362 1 f none /usr/local/lib/ruby/1.9.1/net/telnet.rb 0644 root root 32557 56748 1291795739 1 f none /usr/local/lib/ruby/1.9.1/observer.rb 0644 root root 5397 43776 1254480339 1 f none /usr/local/lib/ruby/1.9.1/open-uri.rb 0644 root root 26254 26576 1257426892 1 f none /usr/local/lib/ruby/1.9.1/open3.rb 0644 root root 21119 56609 1267321849 1 d none /usr/local/lib/ruby/1.9.1/optparse 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/optparse.rb 0644 root root 48981 27811 1269853812 1 f none /usr/local/lib/ruby/1.9.1/optparse/date.rb 0644 root root 325 27834 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/shellwords.rb 0644 root root 121 10815 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/time.rb 0644 root root 188 16011 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/uri.rb 0644 root root 100 8240 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/version.rb 0644 root root 2034 21100 1254480339 1 f none /usr/local/lib/ruby/1.9.1/ostruct.rb 0644 root root 3455 10747 1254480339 1 f none /usr/local/lib/ruby/1.9.1/pathname.rb 0644 root root 29287 50422 1267937734 1 f none /usr/local/lib/ruby/1.9.1/pp.rb 0644 root root 13611 45632 1272120082 1 f none /usr/local/lib/ruby/1.9.1/prettyprint.rb 0644 root root 9086 2068 1234654605 1 f none /usr/local/lib/ruby/1.9.1/prime.rb 0644 root root 13781 50103 1269055859 1 f none /usr/local/lib/ruby/1.9.1/profile.rb 0644 root root 205 18626 1254480339 1 f none /usr/local/lib/ruby/1.9.1/profiler.rb 0644 root root 1626 51541 1254480339 1 f none /usr/local/lib/ruby/1.9.1/pstore.rb 0644 root root 16163 60151 1266242959 1 d none /usr/local/lib/ruby/1.9.1/psych 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/psych/nodes 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/psych/visitors 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/racc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/racc/parser.rb 0644 root root 11691 18538 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake.rb 0644 root root 71856 56000 1265514921 1 f none /usr/local/lib/ruby/1.9.1/rake/classic_namespace.rb 0644 root root 283 25242 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/clean.rb 0644 root root 1004 15400 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake/contrib 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/compositepublisher.rb 0644 root root 350 27892 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/ftptools.rb 0644 root root 3772 12223 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/publisher.rb 0644 root root 2014 39755 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/rubyforgepublisher.rb 0644 root root 302 24592 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/sshpublisher.rb 0644 root root 1150 29734 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/gempackagetask.rb 0644 root root 2866 31423 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake/loaders 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake/loaders/makefile.rb 0644 root root 905 4130 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rake/packagetask.rb 0644 root root 5062 3376 1269055859 1 f none /usr/local/lib/ruby/1.9.1/rake/rake_test_loader.rb 0644 root root 110 9041 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/rdoctask.rb 0644 root root 5817 65457 1272790340 1 f none /usr/local/lib/ruby/1.9.1/rake/runtest.rb 0644 root root 411 32916 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/tasklib.rb 0644 root root 558 44292 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/testtask.rb 0644 root root 4337 5912 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rake/win32.rb 0644 root root 1243 29025 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rational.rb 0644 root root 308 25474 1253752943 1 d none /usr/local/lib/ruby/1.9.1/rbconfig 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rbconfig/datadir.rb 0644 root root 541 45743 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rdoc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc.rb 0644 root root 14536 44518 1272690381 1 f none /usr/local/lib/ruby/1.9.1/rdoc/alias.rb 0644 root root 981 13711 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/anon_class.rb 0644 root root 134 10964 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/any_method.rb 0644 root root 5494 18230 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/attr.rb 0644 root root 2987 33124 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/class_module.rb 0644 root root 4503 31518 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/code_object.rb 0644 root root 3534 23074 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/code_objects.rb 0644 root root 535 49036 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/constant.rb 0644 root root 876 1749 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/context.rb 0644 root root 15827 33022 1271653708 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator.rb 0644 root root 75 6298 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/darkfish.rb 0644 root root 12634 32269 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/markup.rb 0644 root root 3616 16515 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/ri.rb 0644 root root 1538 60046 1273647094 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/classpage.rhtml 0644 root root 9463 143 1275212994 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/filepage.rhtml 0644 root root 3905 42086 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/brick.png 0644 root root 452 50494 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/brick_link.png 0644 root root 764 25322 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bug.png 0644 root root 774 22283 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_black.png 0644 root root 211 20831 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png 0644 root root 207 20806 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png 0644 root root 209 20969 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/date.png 0644 root root 626 7752 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/find.png 0644 root root 659 14068 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/loadingAnimation.gif 0644 root root 5886 46806 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/macFFBgHack.png 0644 root root 207 14721 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/package.png 0644 root root 853 35497 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_green.png 0644 root root 621 6719 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_white_text.png 0644 root root 342 33307 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_white_width.png 0644 root root 309 31062 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/plugin.png 0644 root root 591 3761 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/ruby.png 0644 root root 592 3853 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/tag_green.png 0644 root root 613 5987 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/wrench.png 0644 root root 610 3771 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/wrench_orange.png 0644 root root 584 3012 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/zoom.png 0644 root root 692 15850 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/index.rhtml 0644 root root 2187 46194 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/darkfish.js 0644 root root 3191 63175 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/jquery.js 0644 root root 55772 31428 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/quicksearch.js 0644 root root 2592 3595 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/thickbox-compressed.js 0644 root root 5978 54892 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/rdoc.css 0644 root root 12560 60756 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ghost_method.rb 0644 root root 141 12394 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/include.rb 0644 root root 982 10538 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/known_classes.rb 0644 root root 2515 34959 1272339922 1 d none /usr/local/lib/ruby/1.9.1/rdoc/markup 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup.rb 0644 root root 3755 58541 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/attribute_manager.rb 0644 root root 7512 59579 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/blank_line.rb 0644 root root 242 19367 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/document.rb 0644 root root 1188 26751 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/formatter.rb 0644 root root 2782 23811 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/formatter_test_case.rb 0644 root root 7908 41918 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/heading.rb 0644 root root 269 21080 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/inline.rb 0644 root root 2513 61305 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/list.rb 0644 root root 1048 14127 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/list_item.rb 0644 root root 1227 28871 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/paragraph.rb 0644 root root 144 11940 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/parser.rb 0644 root root 12365 35533 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/preprocess.rb 0644 root root 3575 24328 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/raw.rb 0644 root root 922 5209 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/rule.rb 0644 root root 243 19282 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_ansi.rb 0644 root root 1507 40122 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_bs.rb 0644 root root 1556 57870 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_html.rb 0644 root root 7748 60996 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_html_crossref.rb 0644 root root 5297 13541 1271653708 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_rdoc.rb 0644 root root 4922 39164 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_test.rb 0644 root root 1059 15303 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/verbatim.rb 0644 root root 595 43815 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/meta_method.rb 0644 root root 126 10988 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/normal_class.rb 0644 root root 1184 28242 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/normal_module.rb 0644 root root 1213 29457 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/options.rb 0644 root root 10486 19946 1272339922 1 d none /usr/local/lib/ruby/1.9.1/rdoc/parser 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser.rb 0644 root root 3932 58808 1287828161 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/c.rb 0644 root root 21248 2372 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/perl.rb 0644 root root 4384 26184 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/ruby.rb 0644 root root 37951 10802 1287826646 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/ruby_tools.rb 0644 root root 2934 30830 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/simple.rb 0644 root root 977 16249 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/rdoc.rb 0644 root root 10504 3952 1275102355 1 f none /usr/local/lib/ruby/1.9.1/rdoc/require.rb 0644 root root 493 37174 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/ri 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri.rb 0644 root root 230 18498 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/driver.rb 0644 root root 24256 15382 1277949935 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/formatter.rb 0644 root root 84 7170 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/paths.rb 0644 root root 2631 12767 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/store.rb 0644 root root 5516 44129 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ruby_lex.rb 0644 root root 26839 48580 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ruby_token.rb 0644 root root 10385 57947 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/single_class.rb 0644 root root 154 12830 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/stats.rb 0644 root root 5558 46410 1270227014 1 f none /usr/local/lib/ruby/1.9.1/rdoc/task.rb 0644 root root 1245 33568 1272790340 1 f none /usr/local/lib/ruby/1.9.1/rdoc/text.rb 0644 root root 2517 1253 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/tokenstream.rb 0644 root root 1033 23459 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/top_level.rb 0644 root root 4365 23944 1270107916 1 f none /usr/local/lib/ruby/1.9.1/resolv-replace.rb 0644 root root 1798 18772 1269228794 1 f none /usr/local/lib/ruby/1.9.1/resolv.rb 0644 root root 59849 44915 1271581786 1 d none /usr/local/lib/ruby/1.9.1/rexml 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/attlistdecl.rb 0644 root root 1932 29934 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/attribute.rb 0644 root root 5534 36988 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/cdata.rb 0644 root root 1577 48790 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/child.rb 0644 root root 2695 16467 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/comment.rb 0644 root root 2172 38746 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/doctype.rb 0644 root root 6728 56633 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/document.rb 0644 root root 7916 48023 1264910594 1 d none /usr/local/lib/ruby/1.9.1/rexml/dtd 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/attlistdecl.rb 0644 root root 197 14035 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/dtd.rb 0644 root root 1319 28946 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/elementdecl.rb 0644 root root 420 28751 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/entitydecl.rb 0644 root root 1665 47083 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/notationdecl.rb 0644 root root 1059 9758 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/element.rb 0644 root root 44906 44833 1255899269 1 f none /usr/local/lib/ruby/1.9.1/rexml/encoding.rb 0644 root root 2109 21840 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/encodings 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/CP-1252.rb 0644 root root 4142 18258 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/EUC-JP.rb 0644 root root 595 42267 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ICONV.rb 0644 root root 433 33871 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ISO-8859-1.rb 0644 root root 134 10578 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ISO-8859-15.rb 0644 root root 2307 29267 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/SHIFT-JIS.rb 0644 root root 647 45908 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/SHIFT_JIS.rb 0644 root root 36 3142 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UNILE.rb 0644 root root 745 52748 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/US-ASCII.rb 0644 root root 654 47087 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UTF-16.rb 0644 root root 792 55499 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UTF-8.rb 0644 root root 268 19805 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/entity.rb 0644 root root 5367 3375 1269055859 1 d none /usr/local/lib/ruby/1.9.1/rexml/formatters 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/default.rb 0644 root root 2857 12491 1259444459 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/pretty.rb 0644 root root 4471 4162 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/transitive.rb 0644 root root 1852 12869 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/functions.rb 0644 root root 11205 23888 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/instruction.rb 0644 root root 2057 32320 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/light 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/light/node.rb 0644 root root 4798 8970 1293108322 1 f none /usr/local/lib/ruby/1.9.1/rexml/namespace.rb 0644 root root 1117 18913 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/node.rb 0644 root root 2051 33007 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/output.rb 0644 root root 405 30899 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parent.rb 0644 root root 4431 17215 1264920906 1 f none /usr/local/lib/ruby/1.9.1/rexml/parseexception.rb 0644 root root 1223 30124 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/parsers 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/baseparser.rb 0644 root root 19665 50699 1270515194 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/lightparser.rb 0644 root root 1486 44684 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/pullparser.rb 0644 root root 5206 2151 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/sax2parser.rb 0644 root root 8766 58473 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/streamparser.rb 0644 root root 1415 39425 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/treeparser.rb 0644 root root 3565 58894 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/ultralightparser.rb 0644 root root 1386 36419 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/xpathparser.rb 0644 root root 19870 41946 1270501692 1 f none /usr/local/lib/ruby/1.9.1/rexml/quickpath.rb 0644 root root 8689 62908 1270609173 1 f none /usr/local/lib/ruby/1.9.1/rexml/rexml.rb 0644 root root 1317 45317 1262050586 1 f none /usr/local/lib/ruby/1.9.1/rexml/sax2listener.rb 0644 root root 3686 29528 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/source.rb 0644 root root 7517 50842 1271250671 1 f none /usr/local/lib/ruby/1.9.1/rexml/streamlistener.rb 0644 root root 3971 52566 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/syncenumerator.rb 0644 root root 685 54365 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/text.rb 0644 root root 13632 22268 1270502513 1 f none /usr/local/lib/ruby/1.9.1/rexml/undefinednamespaceexception.rb 0644 root root 210 18136 1195176629 1 d none /usr/local/lib/ruby/1.9.1/rexml/validation 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/relaxng.rb 0644 root root 14951 8033 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/validation.rb 0644 root root 4158 28924 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/validationexception.rb 0644 root root 145 11398 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xmldecl.rb 0644 root root 2846 19334 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xmltokens.rb 0644 root root 526 36187 1270501692 1 f none /usr/local/lib/ruby/1.9.1/rexml/xpath.rb 0644 root root 3190 64093 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xpath_parser.rb 0644 root root 25796 8694 1290591447 1 d none /usr/local/lib/ruby/1.9.1/rinda 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rinda/rinda.rb 0644 root root 5917 61918 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rinda/ring.rb 0644 root root 5943 18221 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rinda/tuplespace.rb 0644 root root 14192 36492 1254480339 1 d none /usr/local/lib/ruby/1.9.1/ripper 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/ripper.rb 0644 root root 91 8423 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/core.rb 0644 root root 1578 57961 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/filter.rb 0644 root root 1758 6441 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/lexer.rb 0644 root root 4338 53970 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/sexp.rb 0644 root root 2382 36294 1305009845 1 d none /usr/local/lib/ruby/1.9.1/rss 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss.rb 0644 root root 504 44453 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/0.9.rb 0644 root root 9588 15214 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/1.0.rb 0644 root root 8664 13675 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/2.0.rb 0644 root root 2344 32342 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/atom.rb 0644 root root 19329 21644 1242465959 1 d none /usr/local/lib/ruby/1.9.1/rss/content 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/content.rb 0644 root root 771 61828 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/content/1.0.rb 0644 root root 141 11083 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/content/2.0.rb 0644 root root 169 13172 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/converter.rb 0644 root root 3960 30623 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rss/dublincore 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore.rb 0644 root root 4280 56808 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/1.0.rb 0644 root root 278 23089 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/2.0.rb 0644 root root 192 15102 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/atom.rb 0644 root root 251 19685 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/image.rb 0644 root root 4684 20487 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/itunes.rb 0644 root root 10194 19151 1195176629 1 d none /usr/local/lib/ruby/1.9.1/rss/maker 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/maker.rb 0644 root root 1147 27129 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/0.9.rb 0644 root root 12087 33228 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/1.0.rb 0644 root root 10260 43576 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/2.0.rb 0644 root root 5821 65509 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/atom.rb 0644 root root 4607 3878 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/base.rb 0644 root root 24658 33545 1263307931 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/content.rb 0644 root root 384 29946 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/dublincore.rb 0644 root root 4015 42620 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/entry.rb 0644 root root 4835 13671 1242464673 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/feed.rb 0644 root root 12777 48807 1242464938 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/image.rb 0644 root root 2914 28436 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/itunes.rb 0644 root root 7433 35928 1214728480 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/slash.rb 0644 root root 735 55443 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/syndication.rb 0644 root root 349 27843 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/taxonomy.rb 0644 root root 3180 42136 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/trackback.rb 0644 root root 1606 53057 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/parser.rb 0644 root root 15844 47994 1270513324 1 f none /usr/local/lib/ruby/1.9.1/rss/rexmlparser.rb 0644 root root 1121 21431 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/rss.rb 0644 root root 33829 63675 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/slash.rb 0644 root root 1245 30623 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/syndication.rb 0644 root root 1792 4288 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/taxonomy.rb 0644 root root 3051 28900 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/trackback.rb 0644 root root 6713 22976 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/utils.rb 0644 root root 2675 1653 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xml-stylesheet.rb 0644 root root 2179 29325 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xml.rb 0644 root root 1503 40318 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/xmlparser.rb 0644 root root 1586 59349 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xmlscanner.rb 0644 root root 2154 31587 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rubygems 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems.rb 0644 root root 29052 36363 1280416497 1 f none /usr/local/lib/ruby/1.9.1/rubygems/builder.rb 0644 root root 2121 41257 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/command.rb 0644 root root 12502 28699 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/command_manager.rb 0644 root root 4556 55745 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/commands 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/build_command.rb 0644 root root 1134 22434 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/cert_command.rb 0644 root root 2848 22889 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/check_command.rb 0644 root root 2176 40574 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/cleanup_command.rb 0644 root root 2699 21279 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/contents_command.rb 0644 root root 2459 56120 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/dependency_command.rb 0644 root root 5210 23481 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/environment_command.rb 0644 root root 3972 54170 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/fetch_command.rb 0644 root root 1679 5425 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/generate_index_command.rb 0644 root root 4387 20476 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/help_command.rb 0644 root root 4667 54184 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/install_command.rb 0644 root root 5362 55373 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/list_command.rb 0644 root root 696 57900 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/lock_command.rb 0644 root root 2768 27812 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/mirror_command.rb 0644 root root 3119 48186 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/outdated_command.rb 0644 root root 773 1441 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/owner_command.rb 0644 root root 1778 17561 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/pristine_command.rb 0644 root root 2482 3417 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/push_command.rb 0644 root root 986 18030 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/query_command.rb 0644 root root 8084 26150 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/rdoc_command.rb 0644 root root 2294 54031 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/search_command.rb 0644 root root 582 47948 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/server_command.rb 0644 root root 2104 38498 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/setup_command.rb 0644 root root 10312 18932 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/sources_command.rb 0644 root root 4167 3400 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/specification_command.rb 0644 root root 2859 32036 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/stale_command.rb 0644 root root 680 55433 1213750295 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/uninstall_command.rb 0644 root root 2220 46157 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/unpack_command.rb 0644 root root 2876 36702 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/update_command.rb 0644 root root 5468 51159 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/which_command.rb 0644 root root 1864 14378 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/config_file.rb 0644 root root 8639 48894 1276002891 1 f none /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb 0644 root root 1172 33089 1280416497 1 f none /usr/local/lib/ruby/1.9.1/rubygems/defaults.rb 0644 root root 2202 47769 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency.rb 0644 root root 5810 22058 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency_installer.rb 0644 root root 9339 22712 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency_list.rb 0644 root root 4617 48697 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/doc_manager.rb 0644 root root 5785 7134 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/errors.rb 0644 root root 793 1162 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/exceptions.rb 0644 root root 2393 14411 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext.rb 0644 root root 379 33260 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/builder.rb 0644 root root 1286 36010 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/configure_builder.rb 0644 root root 549 45321 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/ext_conf_builder.rb 0644 root root 522 43956 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/rake_builder.rb 0644 root root 904 8786 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/format.rb 0644 root root 1877 21326 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_openssl.rb 0644 root root 2332 55148 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_path_searcher.rb 0644 root root 2722 24686 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_runner.rb 0644 root root 2291 59038 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gemcutter_utilities.rb 0644 root root 1155 29279 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/indexer.rb 0644 root root 19369 45381 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/install_update_options.rb 0644 root root 3671 26015 1276264938 1 f none /usr/local/lib/ruby/1.9.1/rubygems/installer.rb 0644 root root 15706 44653 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/local_remote_options.rb 0644 root root 3188 58421 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/old_format.rb 0644 root root 3770 42943 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rubygems/package 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package.rb 0644 root root 2516 1838 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/f_sync_dir.rb 0644 root root 403 32422 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_header.rb 0644 root root 6382 43196 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_input.rb 0644 root root 6461 57681 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_output.rb 0644 root root 3856 51509 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader.rb 0644 root root 2048 26739 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader/entry.rb 0644 root root 2022 23528 1244583539 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_writer.rb 0644 root root 4488 8353 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package_task.rb 0644 root root 3823 49298 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/platform.rb 0644 root root 5533 57149 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/remote_fetcher.rb 0644 root root 10497 62607 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/require_paths_builder.rb 0644 root root 406 35558 1277602900 1 f none /usr/local/lib/ruby/1.9.1/rubygems/requirement.rb 0644 root root 3738 29678 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/security.rb 0644 root root 28975 56804 1260256749 1 f none /usr/local/lib/ruby/1.9.1/rubygems/server.rb 0644 root root 23268 60841 1272691156 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_index.rb 0644 root root 15147 61160 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_info_cache.rb 0644 root root 9175 32529 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_info_cache_entry.rb 0644 root root 1204 35008 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/spec_fetcher.rb 0644 root root 7248 59911 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/specification.rb 0644 root root 38439 48541 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/test_utilities.rb 0644 root root 3204 988 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/text.rb 0644 root root 556 42834 1244583539 1 f none /usr/local/lib/ruby/1.9.1/rubygems/uninstaller.rb 0644 root root 7017 55380 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/user_interaction.rb 0644 root root 8426 18075 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/validator.rb 0644 root root 6565 291 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/version.rb 0644 root root 9986 41207 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/version_option.rb 0644 root root 1627 64638 1266807155 1 f none /usr/local/lib/ruby/1.9.1/scanf.rb 0644 root root 21617 47518 1270096342 1 f none /usr/local/lib/ruby/1.9.1/securerandom.rb 0644 root root 8355 54138 1265382278 1 f none /usr/local/lib/ruby/1.9.1/set.rb 0644 root root 29654 4264 1275225317 1 d none /usr/local/lib/ruby/1.9.1/shell 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/shell.rb 0644 root root 5821 9989 1236311798 1 f none /usr/local/lib/ruby/1.9.1/shell/builtin-command.rb 0644 root root 2566 58760 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/command-processor.rb 0644 root root 14944 21128 1269055859 1 f none /usr/local/lib/ruby/1.9.1/shell/error.rb 0644 root root 564 45387 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/filter.rb 0644 root root 1674 55813 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/process-controller.rb 0644 root root 6992 43305 1274604524 1 f none /usr/local/lib/ruby/1.9.1/shell/system-command.rb 0644 root root 3299 58194 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/version.rb 0644 root root 236 16564 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shellwords.rb 0644 root root 3763 38220 1254480339 1 f none /usr/local/lib/ruby/1.9.1/singleton.rb 0644 root root 7271 10059 1254480339 1 f none /usr/local/lib/ruby/1.9.1/socket.rb 0644 root root 22888 34721 1305009850 1 d none /usr/local/lib/ruby/1.9.1/syck 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/syck.rb 0644 root root 14274 19018 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/baseemitter.rb 0644 root root 4963 7357 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/basenode.rb 0644 root root 6643 8908 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/constants.rb 0644 root root 1184 13632 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/encoding.rb 0644 root root 751 51832 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/error.rb 0644 root root 1065 19956 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/loader.rb 0644 root root 296 19439 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/rubytypes.rb 0644 root root 14700 61697 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/stream.rb 0644 root root 768 54407 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/stringio.rb 0644 root root 2027 399 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/syck.rb 0644 root root 194 15385 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/tag.rb 0644 root root 3240 51540 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/types.rb 0644 root root 4996 59086 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/yamlnode.rb 0644 root root 1219 9572 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/ypath.rb 0644 root root 1387 20604 1305009850 1 f none /usr/local/lib/ruby/1.9.1/sync.rb 0644 root root 6202 40052 1274604524 1 f none /usr/local/lib/ruby/1.9.1/tempfile.rb 0644 root root 10510 59513 1276185539 1 d none /usr/local/lib/ruby/1.9.1/test 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/test/unit 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/test/unit.rb 0644 root root 1550 48054 1249410529 1 f none /usr/local/lib/ruby/1.9.1/test/unit/assertions.rb 0644 root root 5089 45595 1272721270 1 f none /usr/local/lib/ruby/1.9.1/test/unit/testcase.rb 0644 root root 290 23616 1254480339 1 f none /usr/local/lib/ruby/1.9.1/thread.rb 0644 root root 6264 25007 1271416208 1 f none /usr/local/lib/ruby/1.9.1/thwait.rb 0644 root root 3537 29940 1272533992 1 f none /usr/local/lib/ruby/1.9.1/time.rb 0644 root root 17059 36059 1259245935 1 f none /usr/local/lib/ruby/1.9.1/timeout.rb 0644 root root 2776 28302 1271648777 1 f none /usr/local/lib/ruby/1.9.1/tmpdir.rb 0644 root root 3783 32197 1276002891 1 f none /usr/local/lib/ruby/1.9.1/tracer.rb 0644 root root 3519 10139 1290591440 1 f none /usr/local/lib/ruby/1.9.1/tsort.rb 0644 root root 6958 41573 1236313385 1 f none /usr/local/lib/ruby/1.9.1/ubygems.rb 0644 root root 268 22859 1254480339 1 f none /usr/local/lib/ruby/1.9.1/un.rb 0644 root root 8274 50147 1287838417 1 d none /usr/local/lib/ruby/1.9.1/uri 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/uri.rb 0644 root root 707 58219 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/common.rb 0644 root root 25060 38852 1293101340 1 f none /usr/local/lib/ruby/1.9.1/uri/ftp.rb 0644 root root 5621 24781 1271338879 1 f none /usr/local/lib/ruby/1.9.1/uri/generic.rb 0644 root root 24892 29520 1271338879 1 f none /usr/local/lib/ruby/1.9.1/uri/http.rb 0644 root root 2637 1371 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/https.rb 0644 root root 498 38655 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/ldap.rb 0644 root root 3331 48286 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/ldaps.rb 0644 root root 286 21536 1195176629 1 f none /usr/local/lib/ruby/1.9.1/uri/mailto.rb 0644 root root 6695 23301 1274009759 1 f none /usr/local/lib/ruby/1.9.1/weakref.rb 0644 root root 1874 18999 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick.rb 0644 root root 811 5847 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/accesslog.rb 0644 root root 2300 39683 1263184237 1 f none /usr/local/lib/ruby/1.9.1/webrick/cgi.rb 0644 root root 7068 53778 1254485077 1 f none /usr/local/lib/ruby/1.9.1/webrick/compat.rb 0644 root root 436 35191 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/config.rb 0644 root root 3383 50002 1261209679 1 f none /usr/local/lib/ruby/1.9.1/webrick/cookie.rb 0644 root root 3105 32945 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/htmlutils.rb 0644 root root 584 43964 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick/httpauth 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth.rb 0644 root root 1341 42508 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/authenticator.rb 0644 root root 2341 49186 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/basicauth.rb 0644 root root 1752 5830 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/digestauth.rb 0644 root root 11469 60801 1256051857 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htdigest.rb 0644 root root 2167 26511 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htgroup.rb 0644 root root 1442 39051 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htpasswd.rb 0644 root root 2027 15127 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/userdb.rb 0644 root root 697 55207 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpproxy.rb 0644 root root 8382 44019 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httprequest.rb 0644 root root 11502 27535 1263116027 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpresponse.rb 0644 root root 8244 28757 1281930072 1 f none /usr/local/lib/ruby/1.9.1/webrick/https.rb 0644 root root 1626 61158 1263706312 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb 0644 root root 6056 65492 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick/httpservlet 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet.rb 0644 root root 669 57478 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/abstract.rb 0644 root root 1764 3738 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgi_runner.rb 0644 root root 997 12591 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgihandler.rb 0644 root root 3365 52383 1268383690 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/erbhandler.rb 0644 root root 1445 46394 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/filehandler.rb 0644 root root 14335 65148 1277138082 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/prochandler.rb 0644 root root 682 53576 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpstatus.rb 0644 root root 3665 6591 1263184237 1 f none /usr/local/lib/ruby/1.9.1/webrick/httputils.rb 0644 root root 10256 3559 1263116027 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpversion.rb 0644 root root 1142 21659 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/log.rb 0644 root root 2082 19953 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/server.rb 0644 root root 5736 33520 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/ssl.rb 0644 root root 4332 3323 1263706312 1 f none /usr/local/lib/ruby/1.9.1/webrick/utils.rb 0644 root root 4546 11910 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/version.rb 0644 root root 351 27332 1254480339 1 d none /usr/local/lib/ruby/1.9.1/xmlrpc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/base64.rb 0644 root root 1755 8283 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/client.rb 0644 root root 19067 62241 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/config.rb 0644 root root 972 7337 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/create.rb 0644 root root 6632 3829 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/datetime.rb 0644 root root 3693 31753 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/httpserver.rb 0644 root root 3932 34724 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/marshal.rb 0644 root root 1585 56708 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/parser.rb 0644 root root 19707 19238 1270522912 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/server.rb 0644 root root 22139 53222 1269055859 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/utils.rb 0644 root root 3545 11909 1272480695 1 d none /usr/local/lib/ruby/1.9.1/yaml 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/yaml.rb 0644 root root 764 57929 1270694723 1 f none /usr/local/lib/ruby/1.9.1/yaml/dbm.rb 0644 root root 2291 24688 1270948889 1 f none /usr/local/lib/ruby/1.9.1/yaml/store.rb 0644 root root 686 52379 1270948889 1 f none /usr/local/lib/ruby/1.9.1/yaml/syck.rb 0644 root root 220 19346 1305009851 1 d none /usr/local/lib/ruby/gems 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/cache 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/doc 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/gems 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/specifications 0755 root root 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/minitest-1.6.0.gemspec 0644 root root 129 10725 1305010093 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/rake-0.8.7.gemspec 0644 root root 121 9817 1305010093 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/rdoc-2.5.8.gemspec 0644 root root 121 9827 1305010093 1 d none /usr/local/lib/ruby/site_ruby 0755 root root 1 d none /usr/local/lib/ruby/site_ruby/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/site_ruby/1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby/1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/erb.1 0644 root root 3119 155 1305010093 1 f none /usr/local/share/man/man1/irb.1 0644 root root 3541 33147 1305010093 1 f none /usr/local/share/man/man1/rake.1 0644 root root 3820 61420 1305010093 1 f none /usr/local/share/man/man1/ri.1 0644 root root 3895 11726 1305010093 1 f none /usr/local/share/man/man1/ruby.1 0644 root root 13333 47296 1305010093 1 i checkinstall 790 2505 1305010671 1 i pkginfo 252 18782 1305010590 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100184431000081a40000000000000000000000014dc8e19e000000fc000000b600010002ffffffffffffffff0000000800000000pkginfoPKG=ruby NAME=ruby 1.9.2.p180 i86pc Solaris 10 VERSION=1.9.2.p180 PSTAMP=10th May 2011 VENDOR=The Ruby Project EMAIL=http://www.ruby-lang.org/ DESC=The Ruby language ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100184430000081a40000000000000000000000014dc8e19e00010e3a000000b600010002ffffffffffffffff0000000700000000pkgmap: 1 32829 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/erb 0755 root root 4399 39454 1305010093 1 f none /usr/local/bin/gem 0755 root root 548 48157 1305010093 1 f none /usr/local/bin/irb 0755 root root 320 23263 1305010093 1 f none /usr/local/bin/rake 0755 root root 1250 33979 1305010093 1 f none /usr/local/bin/rdoc 0755 root root 699 56424 1305010093 1 f none /usr/local/bin/ri 0755 root root 75 6292 1305010093 1 f none /usr/local/bin/ruby 0755 root root 11192 48361 1305009855 1 f none /usr/local/bin/testrb 0755 root root 249 19990 1305010093 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/ruby-1.9.1 0755 root root 1 d none /usr/local/include/ruby-1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby 0755 root root 1 f none /usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby/config.h 0644 root root 7096 12593 1305009817 1 d none /usr/local/include/ruby-1.9.1/ruby 0755 root root 1 f none /usr/local/include/ruby-1.9.1/ruby.h 0644 root root 834 53871 1264395746 1 d none /usr/local/include/ruby-1.9.1/ruby/backward 0755 root root 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/rubyio.h 0644 root root 215 18129 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/rubysig.h 0644 root root 1319 37518 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/st.h 0644 root root 217 18188 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/backward/util.h 0644 root root 227 19263 1254480339 1 f none /usr/local/include/ruby-1.9.1/ruby/defines.h 0644 root root 6755 62280 1262169842 1 f none /usr/local/include/ruby-1.9.1/ruby/digest.h 0644 root root 881 2836 1305009839 1 f none /usr/local/include/ruby-1.9.1/ruby/encoding.h 0644 root root 12635 53810 1291277206 1 f none /usr/local/include/ruby-1.9.1/ruby/intern.h 0644 root root 29498 54396 1289821394 1 f none /usr/local/include/ruby-1.9.1/ruby/io.h 0644 root root 4886 36890 1277649079 1 f none /usr/local/include/ruby-1.9.1/ruby/missing.h 0644 root root 3403 6658 1280915391 1 f none /usr/local/include/ruby-1.9.1/ruby/oniguruma.h 0644 root root 35129 23934 1267480499 1 f none /usr/local/include/ruby-1.9.1/ruby/re.h 0644 root root 1296 32960 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/regex.h 0644 root root 733 51745 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/ruby.h 0644 root root 42764 58061 1285763138 1 f none /usr/local/include/ruby-1.9.1/ruby/st.h 0644 root root 3753 59622 1264408574 1 f none /usr/local/include/ruby-1.9.1/ruby/util.h 0644 root root 1988 26286 1262070339 1 f none /usr/local/include/ruby-1.9.1/ruby/version.h 0644 root root 1535 56063 1254485077 1 f none /usr/local/include/ruby-1.9.1/ruby/vm.h 0644 root root 825 60476 1274761610 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libruby-static.a 0644 root root 2995792 30806 1305009825 1 s none /usr/local/lib/libruby.so=libruby.so.1 1 f none /usr/local/lib/libruby.so.1 0755 root root 2744074 46408 1305009825 1 s none /usr/local/lib/libruby.so.1.9.1=libruby.so.1 1 d none /usr/local/lib/ruby 0755 root root 1 d none /usr/local/lib/ruby/1.9.1 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/English.rb 0644 root root 5722 5708 1254480339 1 f none /usr/local/lib/ruby/1.9.1/abbrev.rb 0644 root root 2558 2592 1254485077 1 f none /usr/local/lib/ruby/1.9.1/base64.rb 0644 root root 2694 13177 1254480339 1 f none /usr/local/lib/ruby/1.9.1/benchmark.rb 0644 root root 18084 2722 1270232549 1 d none /usr/local/lib/ruby/1.9.1/bigdecimal 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/jacobian.rb 0644 root root 2012 20565 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/ludcmp.rb 0644 root root 2146 25099 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/math.rb 0644 root root 6941 36754 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/newton.rb 0644 root root 1821 9681 1305009838 1 f none /usr/local/lib/ruby/1.9.1/bigdecimal/util.rb 0644 root root 1166 25470 1305009838 1 d none /usr/local/lib/ruby/1.9.1/cgi 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/cgi.rb 0644 root root 9672 753 1264691992 1 f none /usr/local/lib/ruby/1.9.1/cgi/cookie.rb 0644 root root 4419 1954 1270522912 1 f none /usr/local/lib/ruby/1.9.1/cgi/core.rb 0644 root root 25750 31412 1272758079 1 f none /usr/local/lib/ruby/1.9.1/cgi/html.rb 0644 root root 34415 16201 1269055859 1 d none /usr/local/lib/ruby/1.9.1/cgi/session 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/cgi/session.rb 0644 root root 18782 33445 1254480339 1 f none /usr/local/lib/ruby/1.9.1/cgi/session/pstore.rb 0644 root root 3295 59348 1254480339 1 f none /usr/local/lib/ruby/1.9.1/cgi/util.rb 0644 root root 6165 46662 1291277238 1 f none /usr/local/lib/ruby/1.9.1/cmath.rb 0644 root root 4151 38662 1279801887 1 f none /usr/local/lib/ruby/1.9.1/complex.rb 0644 root root 380 31807 1250436875 1 f none /usr/local/lib/ruby/1.9.1/csv.rb 0644 root root 83812 12497 1292851360 1 d none /usr/local/lib/ruby/1.9.1/date 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/date.rb 0644 root root 55925 49001 1289821414 1 d none /usr/local/lib/ruby/1.9.1/date/delta 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/date/delta.rb 0644 root root 10167 11709 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/delta/parser.rb 0644 root root 6241 10298 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/delta/parser.ry 0644 root root 1650 52154 1272280480 1 f none /usr/local/lib/ruby/1.9.1/date/format.rb 0644 root root 32072 8912 1250464933 1 f none /usr/local/lib/ruby/1.9.1/debug.rb 0644 root root 20169 39342 1254480339 1 f none /usr/local/lib/ruby/1.9.1/delegate.rb 0644 root root 10433 5266 1277180999 1 d none /usr/local/lib/ruby/1.9.1/digest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/digest.rb 0644 root root 2044 27747 1305009839 1 f none /usr/local/lib/ruby/1.9.1/digest/hmac.rb 0644 root root 7198 52555 1305009839 1 f none /usr/local/lib/ruby/1.9.1/digest/sha2.rb 0644 root root 1496 43459 1305009840 1 d none /usr/local/lib/ruby/1.9.1/drb 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/drb.rb 0644 root root 19 1566 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/acl.rb 0644 root root 2643 63127 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/drb.rb 0644 root root 53219 3530 1277139749 1 f none /usr/local/lib/ruby/1.9.1/drb/eq.rb 0644 root root 234 17367 1264504940 1 f none /usr/local/lib/ruby/1.9.1/drb/extserv.rb 0644 root root 1211 26379 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/extservm.rb 0644 root root 1498 49233 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/gw.rb 0644 root root 1925 15638 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/invokemethod.rb 0644 root root 725 50429 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/observer.rb 0644 root root 473 35466 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/ssl.rb 0644 root root 4980 56766 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/timeridconv.rb 0644 root root 1503 50237 1254480339 1 f none /usr/local/lib/ruby/1.9.1/drb/unix.rb 0644 root root 2482 61258 1254480339 1 f none /usr/local/lib/ruby/1.9.1/e2mmap.rb 0644 root root 3728 21085 1272402586 1 f none /usr/local/lib/ruby/1.9.1/erb.rb 0644 root root 23014 21612 1254485077 1 f none /usr/local/lib/ruby/1.9.1/expect.rb 0644 root root 1320 37964 1305009844 1 f none /usr/local/lib/ruby/1.9.1/fileutils.rb 0644 root root 43567 51999 1298030572 1 f none /usr/local/lib/ruby/1.9.1/find.rb 0644 root root 2073 29044 1260892474 1 f none /usr/local/lib/ruby/1.9.1/forwardable.rb 0644 root root 7284 7710 1274604524 1 f none /usr/local/lib/ruby/1.9.1/getoptlong.rb 0644 root root 15007 61572 1264773237 1 f none /usr/local/lib/ruby/1.9.1/gserver.rb 0644 root root 6578 63437 1254480339 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/bigdecimal.so 0755 root root 80456 29252 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/continuation.so 0755 root root 4380 19915 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/coverage.so 0755 root root 9984 14018 1305009838 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/dbm.so 0755 root root 30236 12131 1305009839 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest.so 0755 root root 22060 15791 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/bubblebabble.so 0755 root root 11092 55960 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/md5.so 0755 root root 17784 2916 1305009839 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/rmd160.so 0755 root root 26576 12611 1305009840 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/sha1.so 0755 root root 26904 16717 1305009840 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/digest/sha2.so 0755 root root 13624 4831 1305009840 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/big5.so 0755 root root 13192 29757 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/cp949.so 0755 root root 9504 22382 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/emacs_mule.so 0755 root root 14108 28658 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/encdb.so 0755 root root 15136 40461 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_jp.so 0755 root root 14828 51824 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_kr.so 0755 root root 9180 33838 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_tw.so 0755 root root 9884 26894 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gb18030.so 0755 root root 11844 52062 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gb2312.so 0755 root root 8108 12714 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gbk.so 0755 root root 9452 26092 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_1.so 0755 root root 8676 48749 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_10.so 0755 root root 8332 40995 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_11.so 0755 root root 7096 62389 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_13.so 0755 root root 8220 37016 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_14.so 0755 root root 8332 41007 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_15.so 0755 root root 8252 37081 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_16.so 0755 root root 8308 39116 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_2.so 0755 root root 8272 42017 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_3.so 0755 root root 8232 38235 1305009825 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_4.so 0755 root root 8264 40771 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_5.so 0755 root root 8240 39792 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_6.so 0755 root root 7072 52115 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_7.so 0755 root root 8144 33504 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_8.so 0755 root root 7072 52788 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_9.so 0755 root root 8192 40016 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_r.so 0755 root root 8136 37440 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_u.so 0755 root root 8168 38849 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/shift_jis.so 0755 root root 14664 65317 1305009826 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/big5.so 0755 root root 480256 33641 1305009829 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/chinese.so 0755 root root 185600 12785 1305009830 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji.so 0755 root root 49912 59967 1305009830 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_iso2022_kddi.so 0755 root root 126448 32656 1305009831 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_docomo.so 0755 root root 120392 45448 1305009831 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_kddi.so 0755 root root 124512 37305 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/emoji_sjis_softbank.so 0755 root root 120428 43155 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/escape.so 0755 root root 10488 28808 1305009832 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gb18030.so 0755 root root 181448 41779 1305009833 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gbk.so 0755 root root 197380 15754 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/iso2022.so 0755 root root 16008 29921 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese.so 0755 root root 9932 12262 1305009834 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese_euc.so 0755 root root 242340 3397 1305009835 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/japanese_sjis.so 0755 root root 152672 15460 1305009836 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/korean.so 0755 root root 245976 16662 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/single_byte.so 0755 root root 100688 30180 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/transdb.so 0755 root root 14872 37167 1305009827 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/utf8_mac.so 0755 root root 44872 24292 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/utf_16_32.so 0755 root root 15160 863 1305009837 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_16be.so 0755 root root 8836 14324 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_16le.so 0755 root root 8724 65132 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_32be.so 0755 root root 7384 29560 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/utf_32le.so 0755 root root 7384 30084 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/windows_1251.so 0755 root root 8208 45336 1305009826 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/etc.so 0755 root root 19744 44932 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/fcntl.so 0755 root root 10212 30315 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/fiber.so 0755 root root 4296 9468 1305009841 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/iconv.so 0755 root root 34444 42594 1305009842 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io/nonblock.so 0755 root root 10852 29490 1305009842 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/io/wait.so 0755 root root 11136 45217 1305009843 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext/generator.so 0755 root root 41580 44637 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/json/ext/parser.so 0755 root root 35252 56927 1305009843 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn/complex.so 0755 root root 4372 17770 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/mathn/rational.so 0755 root root 4380 19047 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/nkf.so 0755 root root 245032 39060 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/objspace.so 0755 root root 25616 3545 1305009843 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/pty.so 0755 root root 22336 37830 1305009844 1 d none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/racc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/racc/cparse.so 0755 root root 25468 29631 1305009844 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/rbconfig.rb 0644 root root 8199 61658 1305009824 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/ripper.so 0755 root root 218980 41266 1305009845 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/sdbm.so 0755 root root 40568 34835 1305009845 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/socket.so 0755 root root 232060 26019 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/stringio.so 0755 root root 39764 56407 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/strscan.so 0755 root root 33864 20711 1305009850 1 f none /usr/local/lib/ruby/1.9.1/i386-solaris2.11/syck.so 0755 root root 203464 39189 1305009850 1 f none /usr/local/lib/ruby/1.9.1/ipaddr.rb 0644 root root 23623 52998 1269173453 1 d none /usr/local/lib/ruby/1.9.1/irb 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb.rb 0644 root root 7484 51489 1269954203 1 d none /usr/local/lib/ruby/1.9.1/irb/cmd 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/chws.rb 0644 root root 462 35724 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/fork.rb 0644 root root 557 40381 1274604524 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/help.rb 0644 root root 639 42606 1270678607 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/load.rb 0644 root root 1130 22713 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/nop.rb 0644 root root 526 37185 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/pushws.rb 0644 root root 586 46243 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/cmd/subirb.rb 0644 root root 571 41858 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/completion.rb 0644 root root 5311 23363 1271134870 1 f none /usr/local/lib/ruby/1.9.1/irb/context.rb 0644 root root 7077 35777 1269954203 1 d none /usr/local/lib/ruby/1.9.1/irb/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/change-ws.rb 0644 root root 1093 17200 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/history.rb 0644 root root 2096 31940 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/loader.rb 0644 root root 2236 40197 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/math-mode.rb 0644 root root 562 42670 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/multi-irb.rb 0644 root root 4849 46277 1271940858 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/save-history.rb 0644 root root 2176 39662 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/tracer.rb 0644 root root 1125 23302 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/use-loader.rb 0644 root root 1296 38740 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ext/workspaces.rb 0644 root root 915 7041 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/extend-command.rb 0644 root root 7163 38734 1259975908 1 f none /usr/local/lib/ruby/1.9.1/irb/frame.rb 0644 root root 1239 27268 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/help.rb 0644 root root 549 40604 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/init.rb 0644 root root 7135 51072 1293101360 1 f none /usr/local/lib/ruby/1.9.1/irb/input-method.rb 0644 root root 2559 61469 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/inspector.rb 0644 root root 2268 45360 1252294121 1 d none /usr/local/lib/ruby/1.9.1/irb/lc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/error.rb 0644 root root 863 7410 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/help-message 0644 root root 1474 49603 1270824918 1 d none /usr/local/lib/ruby/1.9.1/irb/lc/ja 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/encoding_aliases.rb 0644 root root 151 11428 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/error.rb 0644 root root 1083 56181 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/lc/ja/help-message 0644 root root 1876 27841 1270824918 1 f none /usr/local/lib/ruby/1.9.1/irb/locale.rb 0644 root root 4510 21159 1295181276 1 f none /usr/local/lib/ruby/1.9.1/irb/magic-file.rb 0644 root root 844 61446 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/notifier.rb 0644 root root 2703 21680 1269055859 1 f none /usr/local/lib/ruby/1.9.1/irb/output-method.rb 0644 root root 1338 35628 1269055859 1 f none /usr/local/lib/ruby/1.9.1/irb/ruby-lex.rb 0644 root root 22645 47201 1291795751 1 f none /usr/local/lib/ruby/1.9.1/irb/ruby-token.rb 0644 root root 7518 46809 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/slex.rb 0644 root root 6075 54150 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/src_encoding.rb 0644 root root 90 7011 1254480339 1 f none /usr/local/lib/ruby/1.9.1/irb/version.rb 0644 root root 241 16807 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/workspace.rb 0644 root root 2596 64982 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/ws-for-case-2.rb 0644 root root 195 13726 1254485077 1 f none /usr/local/lib/ruby/1.9.1/irb/xmp.rb 0644 root root 1804 6966 1269055859 1 d none /usr/local/lib/ruby/1.9.1/json 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/json.rb 0644 root root 144 11988 1305009843 1 d none /usr/local/lib/ruby/1.9.1/json/add 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/json/add/core.rb 0644 root root 2844 17442 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/add/rails.rb 0644 root root 1226 32947 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/common.rb 0644 root root 13496 56057 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/editor.rb 0644 root root 42296 17749 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/ext.rb 0644 root root 352 29104 1305009843 1 f none /usr/local/lib/ruby/1.9.1/json/version.rb 0644 root root 271 18992 1305009843 1 f none /usr/local/lib/ruby/1.9.1/kconv.rb 0644 root root 5874 54775 1305009843 1 f none /usr/local/lib/ruby/1.9.1/logger.rb 0644 root root 19428 63129 1256051318 1 f none /usr/local/lib/ruby/1.9.1/mathn.rb 0644 root root 3810 18400 1264457309 1 f none /usr/local/lib/ruby/1.9.1/matrix.rb 0644 root root 38945 25901 1275711139 1 d none /usr/local/lib/ruby/1.9.1/minitest 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/minitest/autorun.rb 0644 root root 362 25679 1245310299 1 f none /usr/local/lib/ruby/1.9.1/minitest/mock.rb 0644 root root 1229 29188 1269740227 1 f none /usr/local/lib/ruby/1.9.1/minitest/spec.rb 0644 root root 7694 17853 1269740227 1 f none /usr/local/lib/ruby/1.9.1/minitest/unit.rb 0644 root root 20578 42815 1296138273 1 f none /usr/local/lib/ruby/1.9.1/mkmf.rb 0644 root root 60575 3787 1275093789 1 f none /usr/local/lib/ruby/1.9.1/monitor.rb 0644 root root 6075 38424 1265459512 1 f none /usr/local/lib/ruby/1.9.1/mutex_m.rb 0644 root root 1486 52771 1274604524 1 d none /usr/local/lib/ruby/1.9.1/net 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/net/ftp.rb 0644 root root 24012 41019 1265469980 1 f none /usr/local/lib/ruby/1.9.1/net/http.rb 0644 root root 72628 20368 1295181311 1 f none /usr/local/lib/ruby/1.9.1/net/https.rb 0644 root root 2329 61895 1269055859 1 f none /usr/local/lib/ruby/1.9.1/net/imap.rb 0644 root root 106421 2837 1295181336 1 f none /usr/local/lib/ruby/1.9.1/net/pop.rb 0644 root root 26278 53368 1254485077 1 f none /usr/local/lib/ruby/1.9.1/net/protocol.rb 0644 root root 7896 55904 1254485077 1 f none /usr/local/lib/ruby/1.9.1/net/smtp.rb 0644 root root 28829 12409 1293108362 1 f none /usr/local/lib/ruby/1.9.1/net/telnet.rb 0644 root root 32557 56748 1291795739 1 f none /usr/local/lib/ruby/1.9.1/observer.rb 0644 root root 5397 43776 1254480339 1 f none /usr/local/lib/ruby/1.9.1/open-uri.rb 0644 root root 26254 26576 1257426892 1 f none /usr/local/lib/ruby/1.9.1/open3.rb 0644 root root 21119 56609 1267321849 1 d none /usr/local/lib/ruby/1.9.1/optparse 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/optparse.rb 0644 root root 48981 27811 1269853812 1 f none /usr/local/lib/ruby/1.9.1/optparse/date.rb 0644 root root 325 27834 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/shellwords.rb 0644 root root 121 10815 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/time.rb 0644 root root 188 16011 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/uri.rb 0644 root root 100 8240 1254480339 1 f none /usr/local/lib/ruby/1.9.1/optparse/version.rb 0644 root root 2034 21100 1254480339 1 f none /usr/local/lib/ruby/1.9.1/ostruct.rb 0644 root root 3455 10747 1254480339 1 f none /usr/local/lib/ruby/1.9.1/pathname.rb 0644 root root 29287 50422 1267937734 1 f none /usr/local/lib/ruby/1.9.1/pp.rb 0644 root root 13611 45632 1272120082 1 f none /usr/local/lib/ruby/1.9.1/prettyprint.rb 0644 root root 9086 2068 1234654605 1 f none /usr/local/lib/ruby/1.9.1/prime.rb 0644 root root 13781 50103 1269055859 1 f none /usr/local/lib/ruby/1.9.1/profile.rb 0644 root root 205 18626 1254480339 1 f none /usr/local/lib/ruby/1.9.1/profiler.rb 0644 root root 1626 51541 1254480339 1 f none /usr/local/lib/ruby/1.9.1/pstore.rb 0644 root root 16163 60151 1266242959 1 d none /usr/local/lib/ruby/1.9.1/psych 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/psych/nodes 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/psych/visitors 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/racc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/racc/parser.rb 0644 root root 11691 18538 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake.rb 0644 root root 71856 56000 1265514921 1 f none /usr/local/lib/ruby/1.9.1/rake/classic_namespace.rb 0644 root root 283 25242 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/clean.rb 0644 root root 1004 15400 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake/contrib 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/compositepublisher.rb 0644 root root 350 27892 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/ftptools.rb 0644 root root 3772 12223 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/publisher.rb 0644 root root 2014 39755 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/rubyforgepublisher.rb 0644 root root 302 24592 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/contrib/sshpublisher.rb 0644 root root 1150 29734 1254584420 1 f none /usr/local/lib/ruby/1.9.1/rake/gempackagetask.rb 0644 root root 2866 31423 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rake/loaders 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rake/loaders/makefile.rb 0644 root root 905 4130 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rake/packagetask.rb 0644 root root 5062 3376 1269055859 1 f none /usr/local/lib/ruby/1.9.1/rake/rake_test_loader.rb 0644 root root 110 9041 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/rdoctask.rb 0644 root root 5817 65457 1272790340 1 f none /usr/local/lib/ruby/1.9.1/rake/runtest.rb 0644 root root 411 32916 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/tasklib.rb 0644 root root 558 44292 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rake/testtask.rb 0644 root root 4337 5912 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rake/win32.rb 0644 root root 1243 29025 1254510475 1 f none /usr/local/lib/ruby/1.9.1/rational.rb 0644 root root 308 25474 1253752943 1 d none /usr/local/lib/ruby/1.9.1/rbconfig 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rbconfig/datadir.rb 0644 root root 541 45743 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rdoc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc.rb 0644 root root 14536 44518 1272690381 1 f none /usr/local/lib/ruby/1.9.1/rdoc/alias.rb 0644 root root 981 13711 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/anon_class.rb 0644 root root 134 10964 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/any_method.rb 0644 root root 5494 18230 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/attr.rb 0644 root root 2987 33124 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/class_module.rb 0644 root root 4503 31518 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/code_object.rb 0644 root root 3534 23074 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/code_objects.rb 0644 root root 535 49036 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/constant.rb 0644 root root 876 1749 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/context.rb 0644 root root 15827 33022 1271653708 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator.rb 0644 root root 75 6298 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/darkfish.rb 0644 root root 12634 32269 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/markup.rb 0644 root root 3616 16515 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/ri.rb 0644 root root 1538 60046 1273647094 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/classpage.rhtml 0644 root root 9463 143 1275212994 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/filepage.rhtml 0644 root root 3905 42086 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/brick.png 0644 root root 452 50494 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/brick_link.png 0644 root root 764 25322 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bug.png 0644 root root 774 22283 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_black.png 0644 root root 211 20831 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png 0644 root root 207 20806 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png 0644 root root 209 20969 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/date.png 0644 root root 626 7752 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/find.png 0644 root root 659 14068 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/loadingAnimation.gif 0644 root root 5886 46806 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/macFFBgHack.png 0644 root root 207 14721 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/package.png 0644 root root 853 35497 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_green.png 0644 root root 621 6719 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_white_text.png 0644 root root 342 33307 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/page_white_width.png 0644 root root 309 31062 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/plugin.png 0644 root root 591 3761 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/ruby.png 0644 root root 592 3853 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/tag_green.png 0644 root root 613 5987 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/wrench.png 0644 root root 610 3771 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/wrench_orange.png 0644 root root 584 3012 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/images/zoom.png 0644 root root 692 15850 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/index.rhtml 0644 root root 2187 46194 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/darkfish.js 0644 root root 3191 63175 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/jquery.js 0644 root root 55772 31428 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/quicksearch.js 0644 root root 2592 3595 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/js/thickbox-compressed.js 0644 root root 5978 54892 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/generator/template/darkfish/rdoc.css 0644 root root 12560 60756 1271989940 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ghost_method.rb 0644 root root 141 12394 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/include.rb 0644 root root 982 10538 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/known_classes.rb 0644 root root 2515 34959 1272339922 1 d none /usr/local/lib/ruby/1.9.1/rdoc/markup 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup.rb 0644 root root 3755 58541 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/attribute_manager.rb 0644 root root 7512 59579 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/blank_line.rb 0644 root root 242 19367 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/document.rb 0644 root root 1188 26751 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/formatter.rb 0644 root root 2782 23811 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/formatter_test_case.rb 0644 root root 7908 41918 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/heading.rb 0644 root root 269 21080 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/inline.rb 0644 root root 2513 61305 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/list.rb 0644 root root 1048 14127 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/list_item.rb 0644 root root 1227 28871 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/paragraph.rb 0644 root root 144 11940 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/parser.rb 0644 root root 12365 35533 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/preprocess.rb 0644 root root 3575 24328 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/raw.rb 0644 root root 922 5209 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/rule.rb 0644 root root 243 19282 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_ansi.rb 0644 root root 1507 40122 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_bs.rb 0644 root root 1556 57870 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_html.rb 0644 root root 7748 60996 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_html_crossref.rb 0644 root root 5297 13541 1271653708 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_rdoc.rb 0644 root root 4922 39164 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/to_test.rb 0644 root root 1059 15303 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/markup/verbatim.rb 0644 root root 595 43815 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/meta_method.rb 0644 root root 126 10988 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/normal_class.rb 0644 root root 1184 28242 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/normal_module.rb 0644 root root 1213 29457 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/options.rb 0644 root root 10486 19946 1272339922 1 d none /usr/local/lib/ruby/1.9.1/rdoc/parser 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser.rb 0644 root root 3932 58808 1287828161 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/c.rb 0644 root root 21248 2372 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/perl.rb 0644 root root 4384 26184 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/ruby.rb 0644 root root 37951 10802 1287826646 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/ruby_tools.rb 0644 root root 2934 30830 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/parser/simple.rb 0644 root root 977 16249 1272339922 1 f none /usr/local/lib/ruby/1.9.1/rdoc/rdoc.rb 0644 root root 10504 3952 1275102355 1 f none /usr/local/lib/ruby/1.9.1/rdoc/require.rb 0644 root root 493 37174 1270107916 1 d none /usr/local/lib/ruby/1.9.1/rdoc/ri 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri.rb 0644 root root 230 18498 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/driver.rb 0644 root root 24256 15382 1277949935 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/formatter.rb 0644 root root 84 7170 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/paths.rb 0644 root root 2631 12767 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ri/store.rb 0644 root root 5516 44129 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ruby_lex.rb 0644 root root 26839 48580 1270881373 1 f none /usr/local/lib/ruby/1.9.1/rdoc/ruby_token.rb 0644 root root 10385 57947 1270183247 1 f none /usr/local/lib/ruby/1.9.1/rdoc/single_class.rb 0644 root root 154 12830 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/stats.rb 0644 root root 5558 46410 1270227014 1 f none /usr/local/lib/ruby/1.9.1/rdoc/task.rb 0644 root root 1245 33568 1272790340 1 f none /usr/local/lib/ruby/1.9.1/rdoc/text.rb 0644 root root 2517 1253 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/tokenstream.rb 0644 root root 1033 23459 1270107916 1 f none /usr/local/lib/ruby/1.9.1/rdoc/top_level.rb 0644 root root 4365 23944 1270107916 1 f none /usr/local/lib/ruby/1.9.1/resolv-replace.rb 0644 root root 1798 18772 1269228794 1 f none /usr/local/lib/ruby/1.9.1/resolv.rb 0644 root root 59849 44915 1271581786 1 d none /usr/local/lib/ruby/1.9.1/rexml 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/attlistdecl.rb 0644 root root 1932 29934 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/attribute.rb 0644 root root 5534 36988 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/cdata.rb 0644 root root 1577 48790 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/child.rb 0644 root root 2695 16467 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/comment.rb 0644 root root 2172 38746 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/doctype.rb 0644 root root 6728 56633 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/document.rb 0644 root root 7916 48023 1264910594 1 d none /usr/local/lib/ruby/1.9.1/rexml/dtd 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/attlistdecl.rb 0644 root root 197 14035 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/dtd.rb 0644 root root 1319 28946 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/elementdecl.rb 0644 root root 420 28751 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/entitydecl.rb 0644 root root 1665 47083 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/dtd/notationdecl.rb 0644 root root 1059 9758 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/element.rb 0644 root root 44906 44833 1255899269 1 f none /usr/local/lib/ruby/1.9.1/rexml/encoding.rb 0644 root root 2109 21840 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/encodings 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/CP-1252.rb 0644 root root 4142 18258 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/EUC-JP.rb 0644 root root 595 42267 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ICONV.rb 0644 root root 433 33871 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ISO-8859-1.rb 0644 root root 134 10578 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/ISO-8859-15.rb 0644 root root 2307 29267 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/SHIFT-JIS.rb 0644 root root 647 45908 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/SHIFT_JIS.rb 0644 root root 36 3142 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UNILE.rb 0644 root root 745 52748 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/US-ASCII.rb 0644 root root 654 47087 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UTF-16.rb 0644 root root 792 55499 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/encodings/UTF-8.rb 0644 root root 268 19805 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/entity.rb 0644 root root 5367 3375 1269055859 1 d none /usr/local/lib/ruby/1.9.1/rexml/formatters 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/default.rb 0644 root root 2857 12491 1259444459 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/pretty.rb 0644 root root 4471 4162 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/formatters/transitive.rb 0644 root root 1852 12869 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/functions.rb 0644 root root 11205 23888 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/instruction.rb 0644 root root 2057 32320 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/light 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/light/node.rb 0644 root root 4798 8970 1293108322 1 f none /usr/local/lib/ruby/1.9.1/rexml/namespace.rb 0644 root root 1117 18913 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/node.rb 0644 root root 2051 33007 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/output.rb 0644 root root 405 30899 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parent.rb 0644 root root 4431 17215 1264920906 1 f none /usr/local/lib/ruby/1.9.1/rexml/parseexception.rb 0644 root root 1223 30124 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rexml/parsers 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/baseparser.rb 0644 root root 19665 50699 1270515194 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/lightparser.rb 0644 root root 1486 44684 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/pullparser.rb 0644 root root 5206 2151 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/sax2parser.rb 0644 root root 8766 58473 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/streamparser.rb 0644 root root 1415 39425 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/treeparser.rb 0644 root root 3565 58894 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/ultralightparser.rb 0644 root root 1386 36419 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/parsers/xpathparser.rb 0644 root root 19870 41946 1270501692 1 f none /usr/local/lib/ruby/1.9.1/rexml/quickpath.rb 0644 root root 8689 62908 1270609173 1 f none /usr/local/lib/ruby/1.9.1/rexml/rexml.rb 0644 root root 1317 45317 1262050586 1 f none /usr/local/lib/ruby/1.9.1/rexml/sax2listener.rb 0644 root root 3686 29528 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/source.rb 0644 root root 7517 50842 1271250671 1 f none /usr/local/lib/ruby/1.9.1/rexml/streamlistener.rb 0644 root root 3971 52566 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/syncenumerator.rb 0644 root root 685 54365 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/text.rb 0644 root root 13632 22268 1270502513 1 f none /usr/local/lib/ruby/1.9.1/rexml/undefinednamespaceexception.rb 0644 root root 210 18136 1195176629 1 d none /usr/local/lib/ruby/1.9.1/rexml/validation 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/relaxng.rb 0644 root root 14951 8033 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/validation.rb 0644 root root 4158 28924 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/validation/validationexception.rb 0644 root root 145 11398 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xmldecl.rb 0644 root root 2846 19334 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xmltokens.rb 0644 root root 526 36187 1270501692 1 f none /usr/local/lib/ruby/1.9.1/rexml/xpath.rb 0644 root root 3190 64093 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rexml/xpath_parser.rb 0644 root root 25796 8694 1290591447 1 d none /usr/local/lib/ruby/1.9.1/rinda 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rinda/rinda.rb 0644 root root 5917 61918 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rinda/ring.rb 0644 root root 5943 18221 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rinda/tuplespace.rb 0644 root root 14192 36492 1254480339 1 d none /usr/local/lib/ruby/1.9.1/ripper 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/ripper.rb 0644 root root 91 8423 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/core.rb 0644 root root 1578 57961 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/filter.rb 0644 root root 1758 6441 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/lexer.rb 0644 root root 4338 53970 1305009845 1 f none /usr/local/lib/ruby/1.9.1/ripper/sexp.rb 0644 root root 2382 36294 1305009845 1 d none /usr/local/lib/ruby/1.9.1/rss 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss.rb 0644 root root 504 44453 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/0.9.rb 0644 root root 9588 15214 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/1.0.rb 0644 root root 8664 13675 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/2.0.rb 0644 root root 2344 32342 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/atom.rb 0644 root root 19329 21644 1242465959 1 d none /usr/local/lib/ruby/1.9.1/rss/content 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/content.rb 0644 root root 771 61828 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/content/1.0.rb 0644 root root 141 11083 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/content/2.0.rb 0644 root root 169 13172 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/converter.rb 0644 root root 3960 30623 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rss/dublincore 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore.rb 0644 root root 4280 56808 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/1.0.rb 0644 root root 278 23089 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/2.0.rb 0644 root root 192 15102 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/dublincore/atom.rb 0644 root root 251 19685 1242465151 1 f none /usr/local/lib/ruby/1.9.1/rss/image.rb 0644 root root 4684 20487 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/itunes.rb 0644 root root 10194 19151 1195176629 1 d none /usr/local/lib/ruby/1.9.1/rss/maker 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rss/maker.rb 0644 root root 1147 27129 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/0.9.rb 0644 root root 12087 33228 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/1.0.rb 0644 root root 10260 43576 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/2.0.rb 0644 root root 5821 65509 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/atom.rb 0644 root root 4607 3878 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/base.rb 0644 root root 24658 33545 1263307931 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/content.rb 0644 root root 384 29946 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/dublincore.rb 0644 root root 4015 42620 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/entry.rb 0644 root root 4835 13671 1242464673 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/feed.rb 0644 root root 12777 48807 1242464938 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/image.rb 0644 root root 2914 28436 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/itunes.rb 0644 root root 7433 35928 1214728480 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/slash.rb 0644 root root 735 55443 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/syndication.rb 0644 root root 349 27843 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/taxonomy.rb 0644 root root 3180 42136 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/maker/trackback.rb 0644 root root 1606 53057 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/parser.rb 0644 root root 15844 47994 1270513324 1 f none /usr/local/lib/ruby/1.9.1/rss/rexmlparser.rb 0644 root root 1121 21431 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/rss.rb 0644 root root 33829 63675 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/slash.rb 0644 root root 1245 30623 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/syndication.rb 0644 root root 1792 4288 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/taxonomy.rb 0644 root root 3051 28900 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/trackback.rb 0644 root root 6713 22976 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/utils.rb 0644 root root 2675 1653 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xml-stylesheet.rb 0644 root root 2179 29325 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xml.rb 0644 root root 1503 40318 1195176629 1 f none /usr/local/lib/ruby/1.9.1/rss/xmlparser.rb 0644 root root 1586 59349 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rss/xmlscanner.rb 0644 root root 2154 31587 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rubygems 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems.rb 0644 root root 29052 36363 1280416497 1 f none /usr/local/lib/ruby/1.9.1/rubygems/builder.rb 0644 root root 2121 41257 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/command.rb 0644 root root 12502 28699 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/command_manager.rb 0644 root root 4556 55745 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/commands 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/build_command.rb 0644 root root 1134 22434 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/cert_command.rb 0644 root root 2848 22889 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/check_command.rb 0644 root root 2176 40574 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/cleanup_command.rb 0644 root root 2699 21279 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/contents_command.rb 0644 root root 2459 56120 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/dependency_command.rb 0644 root root 5210 23481 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/environment_command.rb 0644 root root 3972 54170 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/fetch_command.rb 0644 root root 1679 5425 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/generate_index_command.rb 0644 root root 4387 20476 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/help_command.rb 0644 root root 4667 54184 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/install_command.rb 0644 root root 5362 55373 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/list_command.rb 0644 root root 696 57900 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/lock_command.rb 0644 root root 2768 27812 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/mirror_command.rb 0644 root root 3119 48186 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/outdated_command.rb 0644 root root 773 1441 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/owner_command.rb 0644 root root 1778 17561 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/pristine_command.rb 0644 root root 2482 3417 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/push_command.rb 0644 root root 986 18030 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/query_command.rb 0644 root root 8084 26150 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/rdoc_command.rb 0644 root root 2294 54031 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/search_command.rb 0644 root root 582 47948 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/server_command.rb 0644 root root 2104 38498 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/setup_command.rb 0644 root root 10312 18932 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/sources_command.rb 0644 root root 4167 3400 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/specification_command.rb 0644 root root 2859 32036 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/stale_command.rb 0644 root root 680 55433 1213750295 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/uninstall_command.rb 0644 root root 2220 46157 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/unpack_command.rb 0644 root root 2876 36702 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/update_command.rb 0644 root root 5468 51159 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/commands/which_command.rb 0644 root root 1864 14378 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/config_file.rb 0644 root root 8639 48894 1276002891 1 f none /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb 0644 root root 1172 33089 1280416497 1 f none /usr/local/lib/ruby/1.9.1/rubygems/defaults.rb 0644 root root 2202 47769 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency.rb 0644 root root 5810 22058 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency_installer.rb 0644 root root 9339 22712 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/dependency_list.rb 0644 root root 4617 48697 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/doc_manager.rb 0644 root root 5785 7134 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/errors.rb 0644 root root 793 1162 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/exceptions.rb 0644 root root 2393 14411 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/ext 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext.rb 0644 root root 379 33260 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/builder.rb 0644 root root 1286 36010 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/configure_builder.rb 0644 root root 549 45321 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/ext_conf_builder.rb 0644 root root 522 43956 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/ext/rake_builder.rb 0644 root root 904 8786 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/format.rb 0644 root root 1877 21326 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_openssl.rb 0644 root root 2332 55148 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_path_searcher.rb 0644 root root 2722 24686 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gem_runner.rb 0644 root root 2291 59038 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/gemcutter_utilities.rb 0644 root root 1155 29279 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/indexer.rb 0644 root root 19369 45381 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/install_update_options.rb 0644 root root 3671 26015 1276264938 1 f none /usr/local/lib/ruby/1.9.1/rubygems/installer.rb 0644 root root 15706 44653 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/local_remote_options.rb 0644 root root 3188 58421 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/old_format.rb 0644 root root 3770 42943 1254480339 1 d none /usr/local/lib/ruby/1.9.1/rubygems/package 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package.rb 0644 root root 2516 1838 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/f_sync_dir.rb 0644 root root 403 32422 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_header.rb 0644 root root 6382 43196 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_input.rb 0644 root root 6461 57681 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_output.rb 0644 root root 3856 51509 1271924682 1 d none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader.rb 0644 root root 2048 26739 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_reader/entry.rb 0644 root root 2022 23528 1244583539 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package/tar_writer.rb 0644 root root 4488 8353 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/package_task.rb 0644 root root 3823 49298 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/platform.rb 0644 root root 5533 57149 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/remote_fetcher.rb 0644 root root 10497 62607 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/require_paths_builder.rb 0644 root root 406 35558 1277602900 1 f none /usr/local/lib/ruby/1.9.1/rubygems/requirement.rb 0644 root root 3738 29678 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/security.rb 0644 root root 28975 56804 1260256749 1 f none /usr/local/lib/ruby/1.9.1/rubygems/server.rb 0644 root root 23268 60841 1272691156 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_index.rb 0644 root root 15147 61160 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_info_cache.rb 0644 root root 9175 32529 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/source_info_cache_entry.rb 0644 root root 1204 35008 1254480339 1 f none /usr/local/lib/ruby/1.9.1/rubygems/spec_fetcher.rb 0644 root root 7248 59911 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/specification.rb 0644 root root 38439 48541 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/test_utilities.rb 0644 root root 3204 988 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/text.rb 0644 root root 556 42834 1244583539 1 f none /usr/local/lib/ruby/1.9.1/rubygems/uninstaller.rb 0644 root root 7017 55380 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/user_interaction.rb 0644 root root 8426 18075 1266807155 1 f none /usr/local/lib/ruby/1.9.1/rubygems/validator.rb 0644 root root 6565 291 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/version.rb 0644 root root 9986 41207 1271924682 1 f none /usr/local/lib/ruby/1.9.1/rubygems/version_option.rb 0644 root root 1627 64638 1266807155 1 f none /usr/local/lib/ruby/1.9.1/scanf.rb 0644 root root 21617 47518 1270096342 1 f none /usr/local/lib/ruby/1.9.1/securerandom.rb 0644 root root 8355 54138 1265382278 1 f none /usr/local/lib/ruby/1.9.1/set.rb 0644 root root 29654 4264 1275225317 1 d none /usr/local/lib/ruby/1.9.1/shell 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/shell.rb 0644 root root 5821 9989 1236311798 1 f none /usr/local/lib/ruby/1.9.1/shell/builtin-command.rb 0644 root root 2566 58760 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/command-processor.rb 0644 root root 14944 21128 1269055859 1 f none /usr/local/lib/ruby/1.9.1/shell/error.rb 0644 root root 564 45387 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/filter.rb 0644 root root 1674 55813 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/process-controller.rb 0644 root root 6992 43305 1274604524 1 f none /usr/local/lib/ruby/1.9.1/shell/system-command.rb 0644 root root 3299 58194 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shell/version.rb 0644 root root 236 16564 1254485077 1 f none /usr/local/lib/ruby/1.9.1/shellwords.rb 0644 root root 3763 38220 1254480339 1 f none /usr/local/lib/ruby/1.9.1/singleton.rb 0644 root root 7271 10059 1254480339 1 f none /usr/local/lib/ruby/1.9.1/socket.rb 0644 root root 22888 34721 1305009850 1 d none /usr/local/lib/ruby/1.9.1/syck 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/syck.rb 0644 root root 14274 19018 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/baseemitter.rb 0644 root root 4963 7357 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/basenode.rb 0644 root root 6643 8908 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/constants.rb 0644 root root 1184 13632 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/encoding.rb 0644 root root 751 51832 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/error.rb 0644 root root 1065 19956 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/loader.rb 0644 root root 296 19439 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/rubytypes.rb 0644 root root 14700 61697 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/stream.rb 0644 root root 768 54407 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/stringio.rb 0644 root root 2027 399 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/syck.rb 0644 root root 194 15385 1305009850 1 f none /usr/local/lib/ruby/1.9.1/syck/tag.rb 0644 root root 3240 51540 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/types.rb 0644 root root 4996 59086 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/yamlnode.rb 0644 root root 1219 9572 1305009851 1 f none /usr/local/lib/ruby/1.9.1/syck/ypath.rb 0644 root root 1387 20604 1305009850 1 f none /usr/local/lib/ruby/1.9.1/sync.rb 0644 root root 6202 40052 1274604524 1 f none /usr/local/lib/ruby/1.9.1/tempfile.rb 0644 root root 10510 59513 1276185539 1 d none /usr/local/lib/ruby/1.9.1/test 0755 root root 1 d none /usr/local/lib/ruby/1.9.1/test/unit 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/test/unit.rb 0644 root root 1550 48054 1249410529 1 f none /usr/local/lib/ruby/1.9.1/test/unit/assertions.rb 0644 root root 5089 45595 1272721270 1 f none /usr/local/lib/ruby/1.9.1/test/unit/testcase.rb 0644 root root 290 23616 1254480339 1 f none /usr/local/lib/ruby/1.9.1/thread.rb 0644 root root 6264 25007 1271416208 1 f none /usr/local/lib/ruby/1.9.1/thwait.rb 0644 root root 3537 29940 1272533992 1 f none /usr/local/lib/ruby/1.9.1/time.rb 0644 root root 17059 36059 1259245935 1 f none /usr/local/lib/ruby/1.9.1/timeout.rb 0644 root root 2776 28302 1271648777 1 f none /usr/local/lib/ruby/1.9.1/tmpdir.rb 0644 root root 3783 32197 1276002891 1 f none /usr/local/lib/ruby/1.9.1/tracer.rb 0644 root root 3519 10139 1290591440 1 f none /usr/local/lib/ruby/1.9.1/tsort.rb 0644 root root 6958 41573 1236313385 1 f none /usr/local/lib/ruby/1.9.1/ubygems.rb 0644 root root 268 22859 1254480339 1 f none /usr/local/lib/ruby/1.9.1/un.rb 0644 root root 8274 50147 1287838417 1 d none /usr/local/lib/ruby/1.9.1/uri 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/uri.rb 0644 root root 707 58219 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/common.rb 0644 root root 25060 38852 1293101340 1 f none /usr/local/lib/ruby/1.9.1/uri/ftp.rb 0644 root root 5621 24781 1271338879 1 f none /usr/local/lib/ruby/1.9.1/uri/generic.rb 0644 root root 24892 29520 1271338879 1 f none /usr/local/lib/ruby/1.9.1/uri/http.rb 0644 root root 2637 1371 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/https.rb 0644 root root 498 38655 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/ldap.rb 0644 root root 3331 48286 1254485077 1 f none /usr/local/lib/ruby/1.9.1/uri/ldaps.rb 0644 root root 286 21536 1195176629 1 f none /usr/local/lib/ruby/1.9.1/uri/mailto.rb 0644 root root 6695 23301 1274009759 1 f none /usr/local/lib/ruby/1.9.1/weakref.rb 0644 root root 1874 18999 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick.rb 0644 root root 811 5847 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/accesslog.rb 0644 root root 2300 39683 1263184237 1 f none /usr/local/lib/ruby/1.9.1/webrick/cgi.rb 0644 root root 7068 53778 1254485077 1 f none /usr/local/lib/ruby/1.9.1/webrick/compat.rb 0644 root root 436 35191 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/config.rb 0644 root root 3383 50002 1261209679 1 f none /usr/local/lib/ruby/1.9.1/webrick/cookie.rb 0644 root root 3105 32945 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/htmlutils.rb 0644 root root 584 43964 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick/httpauth 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth.rb 0644 root root 1341 42508 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/authenticator.rb 0644 root root 2341 49186 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/basicauth.rb 0644 root root 1752 5830 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/digestauth.rb 0644 root root 11469 60801 1256051857 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htdigest.rb 0644 root root 2167 26511 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htgroup.rb 0644 root root 1442 39051 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/htpasswd.rb 0644 root root 2027 15127 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpauth/userdb.rb 0644 root root 697 55207 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpproxy.rb 0644 root root 8382 44019 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httprequest.rb 0644 root root 11502 27535 1263116027 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpresponse.rb 0644 root root 8244 28757 1281930072 1 f none /usr/local/lib/ruby/1.9.1/webrick/https.rb 0644 root root 1626 61158 1263706312 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb 0644 root root 6056 65492 1254480339 1 d none /usr/local/lib/ruby/1.9.1/webrick/httpservlet 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet.rb 0644 root root 669 57478 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/abstract.rb 0644 root root 1764 3738 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgi_runner.rb 0644 root root 997 12591 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgihandler.rb 0644 root root 3365 52383 1268383690 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/erbhandler.rb 0644 root root 1445 46394 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/filehandler.rb 0644 root root 14335 65148 1277138082 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpservlet/prochandler.rb 0644 root root 682 53576 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpstatus.rb 0644 root root 3665 6591 1263184237 1 f none /usr/local/lib/ruby/1.9.1/webrick/httputils.rb 0644 root root 10256 3559 1263116027 1 f none /usr/local/lib/ruby/1.9.1/webrick/httpversion.rb 0644 root root 1142 21659 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/log.rb 0644 root root 2082 19953 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/server.rb 0644 root root 5736 33520 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/ssl.rb 0644 root root 4332 3323 1263706312 1 f none /usr/local/lib/ruby/1.9.1/webrick/utils.rb 0644 root root 4546 11910 1254480339 1 f none /usr/local/lib/ruby/1.9.1/webrick/version.rb 0644 root root 351 27332 1254480339 1 d none /usr/local/lib/ruby/1.9.1/xmlrpc 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/base64.rb 0644 root root 1755 8283 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/client.rb 0644 root root 19067 62241 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/config.rb 0644 root root 972 7337 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/create.rb 0644 root root 6632 3829 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/datetime.rb 0644 root root 3693 31753 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/httpserver.rb 0644 root root 3932 34724 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/marshal.rb 0644 root root 1585 56708 1254485077 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/parser.rb 0644 root root 19707 19238 1270522912 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/server.rb 0644 root root 22139 53222 1269055859 1 f none /usr/local/lib/ruby/1.9.1/xmlrpc/utils.rb 0644 root root 3545 11909 1272480695 1 d none /usr/local/lib/ruby/1.9.1/yaml 0755 root root 1 f none /usr/local/lib/ruby/1.9.1/yaml.rb 0644 root root 764 57929 1270694723 1 f none /usr/local/lib/ruby/1.9.1/yaml/dbm.rb 0644 root root 2291 24688 1270948889 1 f none /usr/local/lib/ruby/1.9.1/yaml/store.rb 0644 root root 686 52379 1270948889 1 f none /usr/local/lib/ruby/1.9.1/yaml/syck.rb 0644 root root 220 19346 1305009851 1 d none /usr/local/lib/ruby/gems 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/cache 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/doc 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/gems 0755 root root 1 d none /usr/local/lib/ruby/gems/1.9.1/specifications 0755 root root 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/minitest-1.6.0.gemspec 0644 root root 129 10725 1305010093 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/rake-0.8.7.gemspec 0644 root root 121 9817 1305010093 1 f none /usr/local/lib/ruby/gems/1.9.1/specifications/rdoc-2.5.8.gemspec 0644 root root 121 9827 1305010093 1 d none /usr/local/lib/ruby/site_ruby 0755 root root 1 d none /usr/local/lib/ruby/site_ruby/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/site_ruby/1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby/1.9.1 0755 root root 1 d none /usr/local/lib/ruby/vendor_ruby/1.9.1/i386-solaris2.11 0755 root root 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/erb.1 0644 root root 3119 155 1305010093 1 f none /usr/local/share/man/man1/irb.1 0644 root root 3541 33147 1305010093 1 f none /usr/local/share/man/man1/rake.1 0644 root root 3820 61420 1305010093 1 f none /usr/local/share/man/man1/ri.1 0644 root root 3895 11726 1305010093 1 f none /usr/local/share/man/man1/ruby.1 0644 root root 13333 47296 1305010093 1 i checkinstall 790 2505 1305010671 1 i pkginfo 252 18782 1305010590 0707010018472e000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000000800000000install0707010018472f000081ed0000000000000000000000014dc8e1ef00000316000000b600010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.11" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 07070100184432000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000000500000000root07070100184433000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000000900000000root/usr07070100184434000041ed0000000000000000000000064dc8e19e00000000000000b600010002ffffffffffffffff0000000f00000000root/usr/local07070100184726000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000001500000000root/usr/local/share07070100184727000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000001900000000root/usr/local/share/man07070100184728000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man10707010018472b000081a40000000000000000000000014dc8dfad00000eec000000b600010002ffffffffffffffff0000002500000000root/usr/local/share/man/man1/rake.1.TH RAKE 1 "Ruby Programmers Reference Guide" "November 30, 2008" "UNIX" .SH NAME \fBrake\fP \- Ruby Make .SH SYNOPSIS .br \fBrake\fP [\fB\--f\fP \fIRakefile\fP] [\fB\--version\fP] [\fB\-CGNPgnqstv\fP] [\fB\-D\fP [\fIPATTERN\fP]] [\fB\-E\fP \fICODE\fP] [\fB\-I\fP \fILIBDIR\fP] [\fB\-R\fP \fIRAKELIBDIR\fP] [\fB\-T\fP [\fIPATTERN\fP]] [\fB\-e\fP \fICODE\fP] [\fB\-p\fP \fICODE\fP] [\fB\-r\fP \fIMODULE\fP] [\fB\--rules\fP] [\fIvariable\fP=\fIvalue\fP] \fItarget\fP ... .SH DESCRIPTION \fBRake\fP is a simple \fBruby\fP(1) build program with capabilities similar to the regular \fBmake\fP(1) command. \fBRake\fP has the following features: .IP \(bu Rakefiles (Rake's version of Makefiles) are completely defined in standard Ruby syntax. No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?). .IP \(bu Users can specify tasks with prerequisites. .IP \(bu Rake supports rule patterns to sythesize implicit tasks. .IP \(bu Flexible FileLists that act like arrays but know about manipulating file names and paths. .IP \(bu A library of prepackaged tasks to make building rakefiles easier. .SH OPTIONS .TP \fB\--version\fP Display the program version. .TP \fB\-C\fP .TP \fB\--classic-namespace\fP Put Task and FileTask in the top level namespace .TP \fB\-D\fP [\fIPATTERN\fP] .TP \fB\--describe\fP [\fIPATTERN\fP] Describe the tasks (matching optional \fIPATTERN\fP ), then exit. .TP \fB\-E\fP \fICODE\fP .TP \fB\--execute-continue\fP \fICODE\fP Execute some Ruby code, then continue with normal task processing. .TP \fB\-G\fP .TP \fB\--no-system\fP .TP \fB\--nosystem\fP Use standard project Rakefile search paths, ignore system wide rakefiles. .TP \fB\-I\fP \fILIBDIR\fP .TP \fB\--libdir\fP \fILIBDIR\fP Include \fILIBDIR\fP in the search path for required modules. .TP \fB\-N\fP .TP \fB\--no-search\fP .TP \fB\--nosearch\fP Do not search parent directories for the Rakefile. .TP \fB\-P\fP .TP \fB\--prereqs\fP Display the tasks and dependencies, then exit. .TP \fB\-R\fP \fIRAKELIBDIR\fP .TP \fB\--rakelib\fP \fIRAKELIBDIR\fP .TP \fB\--rakelibdir\fP \fIRAKELIBDIR\fP Auto-import any .rake files in \fIRAKELIBDIR\fP. (default is \fIrakelib\fP ) .TP \fB\-T\fP [\fIPATTERN\fP] .TP \fB\--tasks\fP [\fIPATTERN\fP] Display the tasks (matching optional \fIPATTERN\fP ) with descriptions, then exit. .TP \fB\-e\fP \fICODE\fP .TP \fB\--execute\fP \fICODE\fP Execute some Ruby code and exit. .TP \fB\-f\fP \fIFILE\fP .TP \fB\--rakefile\fP \fIFILE\fP Use FILE as the rakefile. .TP \fB\-h\fP .TP \fB\--help\fP Prints a summary of options. .TP \fB\-g\fP .TP \fB\--system\fP Using system wide (global) rakefiles (usually \fI~/.rake/*.rake\fP ). .TP \fB\-n\fP .TP \fB\--dry-run\fP Do a dry run without executing actions. .TP \fB\-p\fP \fICODE\fP .TP \fB\--execute-print\fP \fICODE\fP Execute some Ruby code, print the result, then exit. .TP \fB\-q\fP .TP \fB\--quiet\fP Do not log messages to standard output. .TP \fB\-r\fP \fIMODULE\fP .TP \fB\--require\fP \fIMODULE\fP Require MODULE before executing rakefile. .TP \fB\-s\fP .TP \fB\--silent\fP Like \fB\--quiet\fP, but also suppresses the 'in directory' announcement. .TP \fB\-t\fP .TP \fB\--trace\fP Turn on invoke/execute tracing, enable full backtrace. .TP \fB\-v\fP .TP \fB\--verbose\fP Log message to standard output (default). .TP \fB\--rules\fP Trace the rules resolution. .SH SEE ALSO \fBruby\fP(1) \fBmake\fP(1) http://rake.rubyforge.org/ .SH REPORTING BUGS Bugs, features requests and other issues can be logged at <\fBhttp://onestepback.org/redmine/projects/show/rake\fR>. You will need an account to before you can post issues. Register at <\fBhttp://onestepback.org/redmine/account/register\fR>. Or you can send an email to the author. .SH AUTHOR \fBRake\fP is written by Jim Weirich 0707010018472a000081a40000000000000000000000014dc8dfad00000dd5000000b600010002ffffffffffffffff0000002400000000root/usr/local/share/man/man1/irb.1.TH IRB 1 "Ruby Programmers Reference Guide" "October 25, 2008" "UNIX" .SH NAME \fBirb\fP \- Interactive Ruby Shell .SH SYNOPSIS .br \fBirb\fP [\fB\--version\fP] [\fB\-dfm\fP] [\fB\-I\fP \fIdirectory\fP] [\fB\-r\fP \fIlibrary\fP] [\fB\--\fP[no]inspect] [\fB\--\fP[no]readline] [\fB\--prompt\fP \fImode\fP] [\fB\--prompt-mode\fP \fImode\fP] [\fB\--inf-ruby-mode\fP] [\fB\--simple-prompt\fP] [\fB\--noprompt\fP] [\fB\--tracer\fP] [\fB\--back-trace-limit\fP \fIn\fP] [\fB\--irb_debug\fP \fIn\fP] [\fB\--\fP] [program_file] [argument ...] .SH DESCRIPTION \fBirb\fP is the REPL(read-eval&print loop) environment for Ruby programs. .SH OPTIONS .TP \fB\--version\fP Prints the version of \fB.\fP .TP \fB\-E\fP \fIexternal\fP[]:\fIinternal\fP .TP \fB\--encoding\fP \fIexternal\fP[]:\fIinternal\fP Same as `ruby -E' . Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). You can ommit the one for internal encodings, then the value ("Encoding.default_internal") will be nil. .TP \fB\-I\fP \fIpath\fP Same as `ruby -I' . Specifies $LOAD_PATH directory .TP \fB\-U\fP Same as `ruby -U' . Sets the defalut value for internal encodings ("Encoding.default_internal") to UTF-8. .TP \fB\-d\fP Same as `ruby -d' . Sets $DEBUG to true. .TP \fB\-f\fP Suppresses read of \fI~/.irbrc\fP. .TP \fB\-h\fP .TP \fB\--help\fP Prints a summary of the options. .TP \fB\-m\fP Bc mode (load mathn, fraction or matrix are available) .TP \fB\-r\fP \fIlibrary\fP Same as `ruby -r'. Causes irb to load the library using require. .TP \fB\--inspect\fP Uses `inspect' for output (default except for bc mode) .TP \fB\--noinspect\fP Doesn't use inspect for output .TP \fB\--readline\fP Uses Readline extension module. .TP \fB\--noreadline\fP Doesn't use Readline extension module. .TP \fB\--prompt\fP \fImode\fP .TP \fB\--prompt-mode\fP \fImode\fP Switch prompt mode. Pre-defined prompt modes are `default', `simple', `xmp' and `inf-ruby'. .TP \fB\--inf-ruby-mode\fP Uses prompt appropriate for inf-ruby-mode on emacs. Suppresses --readline. .TP \fB\--simple-prompt\fP Makes prompts simple. .TP \fB\--noprompt\fP No prompt mode. .TP \fB\--tracer\fP Displays trace for each execution of commands. .TP \fB\--back-trace-limit\fP \fIn\fP Displays backtrace top \fIn\fP and tail \fIn\fP. The default value is 16. .TP \fB\--irb_debug\fP \fIn\fP Sets internal debug level to n (not for popular use) .SH ENVIRONMENT .TP .B IRBRC Also \fBirb\fP depends on same variables as \fBruby\fP(1). .SH FILES .TP .B ~/.irbrc Personal irb initialization. .SH EXAMPLES .nf \& % irb .fi .nf \& irb(main):001:0> \fB1 + 1\fP .fi .nf \& 2 .fi .nf \& irb(main):002:0> \fBdef t(x)\fP .fi .nf \& irb(main):003:1> \fBx+1\fP .fi .nf \& irb(main):004:1> \fBend\fP .fi .nf \& => nil .fi .nf \& irb(main):005:0> \fBt(3)\fP .fi .nf \& => 4 .fi .nf \& irb(main):006:0> \fBif t(3) == 4\fP .fi .nf \& irb(main):007:1> \fBp :ok\fP .fi .nf \& irb(main):008:1> \fBend\fP .fi .nf \& :ok .fi .nf \& => :ok .fi .nf \& irb(main):009:0> \fBquit\fP .fi .nf \& % .fi .SH SEE ALSO \fBruby\fP(1). .SH REPORTING BUGS Security vulnerabilities should be reported via an email to Reported problems will be published after fixed. And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://redmine.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immedately. .SH AUTHORS Written by Keiju ISHITSUKA. 0707010018472d000081a40000000000000000000000014dc8dfad00003415000000b600010002ffffffffffffffff0000002500000000root/usr/local/share/man/man1/ruby.1.TH RUBY 1 "Ruby Programmers Reference Guide" "October 25, 2008" "UNIX" .SH NAME \fBruby\fP \- Interpreted object-oriented scripting language .SH SYNOPSIS .br \fBruby\fP [\fB\--copyright\fP] [\fB\--version\fP] [\fB\-SUacdlnpswvy\fP] [\fB\-0\fP[\fIoctal\fP]] [\fB\-C\fP \fIdirectory\fP] [\fB\-E\fP \fIexternal\fP[]]:\fIinternal\fP [\fB\-F\fP \fIpattern\fP] [\fB\-I\fP \fIdirectory\fP] [\fB\-K\fP \fIc\fP] [\fB\-T\fP[\fIlevel\fP]] [\fB\-W\fP[\fIlevel\fP]] [\fB\-e\fP \fIcommand\fP] [\fB\-i\fP[\fIextension\fP]] [\fB\-r\fP \fIlibrary\fP] [\fB\-x\fP[\fIdirectory\fP]] [-Bro \fBenable\fP|\fBdisable\fP Brc-\fIFEATURE\fP] [\fB\--dump\fP=\fItarget\fP] [\fB\--verbose\fP] [\fB\--\fP] [\fIprogram_file\fP] [\fIargument\fP ...] .SH DESCRIPTION Ruby is an interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. If you want a language for easy object-oriented programming, or you don't like the Perl ugliness, or you do like the concept of LISP, but don't like too much parentheses, Ruby may be the language of your choice. .SH FEATURES Ruby's features are as follows: .TP .B "Interpretive" Ruby is an interpreted language, so you don't have to recompile programs written in Ruby to execute them. .TP .B "Variables have no type (dynamic typing)" Variables in Ruby can contain data of any type. You don't have to worry about variable typing. Consequently, it has a weaker compile time check. .TP .B "No declaration needed" You can use variables in your Ruby programs without any declarations. Variable names denote their scope, local, global, instance, etc. .TP .B "Simple syntax" Ruby has a simple syntax influenced slightly from Eiffel. .TP .B "No user-level memory management" Ruby has automatic memory management. Objects no longer referenced from anywhere are automatically collected by the garbage collector built into the interpreter. .TP .B "Everything is an object" Ruby is the purely object-oriented language, and was so since its creation. Even such basic data as integers are seen as objects. .TP .B "Class, inheritance, and methods" Of course, as an object-oriented language, Ruby has such basic features like classes, inheritance, and methods. .TP .B "Singleton methods" Ruby has the ability to define methods for certain objects. For example, you can define a press-button action for certain widget by defining a singleton method for the button. Or, you can make up your own prototype based object system using singleton methods, if you want to. .TP .B "Mix-in by modules" Ruby intentionally does not have the multiple inheritance as it is a source of confusion. Instead, Ruby has the ability to share implementations across the inheritance tree. This is often called `Mix-in'. .TP .B "Iterators" Ruby has iterators for loop abstraction. .TP .B "Closures" In Ruby, you can objectify the procedure. .TP .B "Text processing and regular expression" Ruby has a bunch of text processing features like in Perl. .TP .B "M17N, character set independent" Ruby supports multilingualized programming. Easy to process texts written in many different natural languages and encoded in many different character encodings, without dependence on Unicode. .TP .B "Bignums" With built-in bignums, you can for example calculate factorial(400). .TP .B "Reflection and domain specific languages" Class is also an instance of Class class. Definition of classes and methods is just an expression as 1+1 is. So your programs can even write and modify programs. Thus you can write your application in your own programming language on top of Ruby. .TP .B "Exception handling" As in Java(tm). .TP .B "Direct access to the OS" Ruby can use most UNIX system calls, often used in system programming. .TP .B "Dynamic loading" On most UNIX systems, you can load object files into the Ruby interpreter on-the-fly. .TP .B "Rich libraries" Libraries called "builtin libraries" and "standard libraries" are bundled with Ruby. And you can obtain more libraries via the package management system called `RubyGems'. Moreover there are thousands of Ruby projects in Rubyforge ( "http://www.rubyforge.org") and RAA ( "http://raa.ruby-lang.org"). .SH OPTIONS Ruby interpreter accepts following command-line options (switches). They are quite similar to those of \fBperl\fP(1). .TP \fB\--copyright\fP Prints the copyright notice. .TP \fB\--version\fP Prints the version of Ruby interpreter. .TP \fB\-0\fP[\fIoctal\fP] (The digit ``zero''.) Specifies the input record separator ("$/") as an octal number. If no digit is given, the null character is taken as the separator. Other switches may follow the digits. \fB\-00\fP turns Ruby into paragraph mode. \fB\-0777\fP makes Ruby read whole file at once as a single string since there is no legal character with that value. .TP \fB\-C\fP \fIdirectory\fP .TP \fB\-X\fP \fIdirectory\fP Causes Ruby to switch to the directory. .TP \fB\-E\fP \fIexternal\fP[]:\fIinternal\fP .TP \fB\--encoding\fP \fIexternal\fP[]:\fIinternal\fP Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). You can ommit the one for internal encodings, then the value ("Encoding.default_internal") will be nil. .TP \fB\-F\fP \fIpattern\fP Specifies input field separator ("$;"). .TP \fB\-I\fP \fIdirectory\fP Used to tell Ruby where to load the library scripts. Directory path will be added to the load-path variable ("$:"). .TP \fB\-K\fP \fIkcode\fP Specifies KANJI (Japanese) encoding. The default value for script encodings ("__ENCODING__") and external encodings ("Encoding.default_external") will be the specified one. \fIkcode\fP can be one of .TP .B e EUC-JP .TP .B s Windows-31J (CP932) .TP .B u UTF-8 .TP .B n ASCII-8BIT (BINARY) .TP \fB\-S\fP Makes Ruby use the .IR PATH environment variable to search for script, unless if its name begins with a slash. This is used to emulate #! on machines that don't support it, in the following manner: #! /usr/local/bin/ruby .br # This line makes the next one a comment in Ruby \e .br exec /usr/local/bin/ruby -S $0 $* .br .TP \fB\-T\fP[\fIlevel=1\fP] Turns on taint checks at the specified level (default 1). .TP \fB\-U\fP Sets the defalut value for internal encodings ("Encoding.default_internal") to UTF-8. .TP \fB\-W\fP[\fIlevel=2\fP] Turns on verbose mode at the specified level, without printing version message at the beginning. The level can be; .TP .B 0 Verbose mode is "silence". It sets the "$VERBOSE" to nil. .TP .B 1 Verbose mode is "medium". It sets the "$VERBOSE" to false. .TP .B 2 (default) Verbose mode is "verbose". It sets the "$VERBOSE" to true. \fB\-W\fP 2 is same as \fB\-w\fP .TP \fB\-a\fP Turns on auto-split mode when used with \fB\-n\fP or \fB\-p\fP. In auto-split mode, Ruby executes .nf \& $F = $_.split .fi at beginning of each loop. .TP \fB\-c\fP Causes Ruby to check the syntax of the script and exit without executing. If there are no syntax errors, Ruby will print ``Syntax OK'' to the standard output. .TP \fB\-d\fP .TP \fB\--debug\fP Turns on debug mode. "$DEBUG" will be set to true. .TP \fB\-e\fP \fIcommand\fP Specifies script from command-line while telling Ruby not to search the rest of arguments for a script file name. .TP \fB\-h\fP .TP \fB\--help\fP Prints a summary of the options. .TP \fB\-i\fP \fIextension\fP Specifies in-place-edit mode. The extension, if specified, is added to old file name to make a backup copy. For example: % echo matz > /tmp/junk .br % cat /tmp/junk .br matz .br % ruby -p -i.bak -e '$_.upcase!' /tmp/junk .br % cat /tmp/junk .br MATZ .br % cat /tmp/junk.bak .br matz .br .TP \fB\-l\fP (The lowercase letter ``ell''.) Enables automatic line-ending processing, which means to firstly set "$\e" to the value of "$/", and secondly chops every line read using chop!. .TP \fB\-n\fP Causes Ruby to assume the following loop around your script, which makes it iterate over file name arguments somewhat like \fBsed\fP \fB\-n\fP or \fBawk\fP. while gets .br ... .br end .br .TP \fB\-p\fP Acts mostly same as -n switch, but print the value of variable "$_" at the each end of the loop. For example: % echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' .br MATZ .br .TP \fB\-r\fP \fIlibrary\fP Causes Ruby to load the library using require. It is useful when using \fB\-n\fP or \fB\-p\fP. .TP \fB\-s\fP Enables some switch parsing for switches after script name but before any file name arguments (or before a \fB\--\fP). Any switches found there are removed from ARGV and set the corresponding variable in the script. For example: #! /usr/local/bin/ruby -s .br # prints "true" if invoked with `-xyz' switch. .br print "true\en" if $xyz .br On some systems "$0" does not always contain the full pathname, so you need the \fB\-S\fP switch to tell Ruby to search for the script if necessary. To handle embedded spaces or such. A better construct than "$*" would be ${1+"$@"}, but it does not work if the script is being interpreted by \fBcsh\fP(1). .TP \fB\-v\fP Enables verbose mode. Ruby will print its version at the beginning, and set the variable "$VERBOSE" to true. Some methods print extra messages if this variable is true. If this switch is given, and no other switches are present, Ruby quits after printing its version. .TP \fB\-w\fP Enables verbose mode without printing version message at the beginning. It sets the "$VERBOSE" variable to true. .TP \fB\-x\fP[\fIdirectory\fP] Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first that starts with ``#!'' and contains the string, ``ruby''. Any meaningful switches on that line will applied. The end of script must be specified with either EOF, "^D" ("control-D"), "^Z" ("control-Z"), or reserved word __END__. If the directory name is specified, Ruby will switch to that directory before executing script. .TP \fB\-y\fP .TP \fB\--yydebug\fP DO NOT USE. Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compiling scripts. You don't have to specify this switch, unless you are going to debug the Ruby interpreter. .TP \fB\--disable-\fP\fIFEATURE\fP .TP \fB\--enable-\fP\fIFEATURE\fP Disables (or enables) the specified \fIFEATURE\fP \&. .TP \fB\--disable-gems\fP .TP \fB\--enable-gems\fP Disables (or enables) RubyGems libraries. By default, Ruby will load the latest version of each installed gem. The Gem constant is true if RubyGems is enabled, false if otherwise. .TP \fB\--disable-rubyopt\fP .TP \fB\--enable-rubyopt\fP Ignores (or considers) the .IR RUBYOPT environment variable. By default, Ruby considers the variable. .TP \fB\--disable-all\fP .TP \fB\--enable-all\fP Disables (or enables) all features. .TP \fB\--dump\fP=\fItarget\fP DO NOT USE. Prints the specified target. \fItarget\fP can be one of; .TP .B insns disassembed instructions You don't have to specify this switch, unless you are going to debug the Ruby interpreter. .TP \fB\--verbose\fP Enables verbose mode without printing version message at the beginning. It sets the "$VERBOSE" variable to true. If this switch is given, and no other switches are present, Ruby quits after printing its version. .SH ENVIRONMENT .TP .B RUBYLIB A colon-separated list of directories that are added to Ruby's library load path ("$:"). Directories from this environment variable are searched before the standard load path is searched. e.g.: .nf \& RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext" .fi .TP .B RUBYOPT Additional Ruby options. e.g. .nf \& RUBYOPT="-w -Ke" .fi Note that RUBYOPT can contain only \fB\-d\fP,\fB\-E\fP,\fB\-I\fP,\fB\-K\fP,\fB\-r\fP,\fB\-T\fP,\fB\-U\fP,\fB\-v\fP,\fB\-w\fP,\fB\-W,\fP \fB\--debug\fP, \fB\--disable-\fP\fIFEATURE\fP and \fB\--enable-\fP\fIFEATURE\fP. .TP .B RUBYPATH A colon-separated list of directories that Ruby searches for Ruby programs when the \fB\-S\fP flag is specified. This variable precedes the .IR PATH environment variable. .TP .B RUBYSHELL The path to the system shell command. This environment variable is enabled for only mswin32, mingw32, and OS/2 platforms. If this variable is not defined, Ruby refers to .IR COMSPEC. .TP .B PATH Ruby refers to the .IR PATH environment variable on calling Kernel#system. .TP .B RUBYLIB_PREFIX This variable is obsolete. And Ruby depends on some RubyGems related environment variables unless disabled RubyGems. See the help of \fBgem\fP(1) as bellow. % gem help .br .SH SEE ALSO .TP http://www.ruby-lang.org The official web site. .TP http://www.rubyforge.org hosting many open source ruby projects. .TP http://raa.ruby-lang.org Ruby Application Archive. .SH REPORTING BUGS Security vulnerabilities should be reported via an email to Reported problems will be published after fixed. And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://redmine.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immedately. .SH AUTHORS Ruby is designed and implemented by Yukihiro Matsumoto . See <\fBhttp://redmine.ruby-lang.org/wiki/ruby/Contributors\fR> for contributors to Ruby. 07070100184729000081a40000000000000000000000014dc8dfad00000c2f000000b600010002ffffffffffffffff0000002400000000root/usr/local/share/man/man1/erb.1.TH ERB 1 "Ruby Programmers Reference Guide" "December 27, 2008" "UNIX" .SH NAME \fBerb\fP \- Ruby Templating .SH SYNOPSIS .br \fBerb\fP [\fB\--version\fP] [\fB\-UPdnvx\fP] [\fB\-E\fP \fIext\fP[]]:int [\fB\-S\fP \fIlevel\fP] [\fB\-T\fP \fImode\fP] [\fB\-r\fP \fIlibrary\fP] [\fB\--\fP] [file ...] .SH DESCRIPTION \fBerb\fP is a command line front-end for "ERB" library, which is an implementation of eRuby. eRuby provdes an easy to use but powerful templating system for Ruby. Using eRuby, actual Ruby code can be added to any plain text document for the purposes of generating document information details and/or flow control. \fBerb\fP is a part of \fBRuby\fP. .SH OPTIONS .TP \fB\--version\fP Prints the version of \fB.\fP .TP \fB\-E\fP \fIexternal\fP[]:\fIinternal\fP .TP \fB\--encoding\fP \fIexternal\fP[]:\fIinternal\fP Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). You can ommit the one for internal encodings, then the value ("Encoding.default_internal") will be nil. .TP \fB\-P\fP Evaluates lines starting with "%" as Ruby code and removes the tailing EOLs. .TP \fB\-S\fP \fIlevel\fP Specifies the safe level in which eRuby script will run. .TP \fB\-T\fP \fImode\fP Specifies trim mode (default 0). \fImode\fP can be one of .TP .B 0 EOL remains after the embedded ruby script is evaluated. .TP .B 1 EOL is removed if the line ends with "%>". .TP .B 2 EOL is removed if the line starts with "<%" and ends with "%>". .TP .B - EOL is removed if the line ends with "-%>". And leading whitespaces are removed if the erb directive starts with "<%-". .TP \fB\-U\fP can be one of Sets the defalut value for internal encodings ("Encoding.default_internal") to UTF-8. .TP \fB\-d\fP .TP \fB\--debug\fP Turns on debug mode. "$DEBUG" will be set to true. .TP \fB\-h\fP .TP \fB\--help\fP Prints a summry of the options. .TP \fB\-n\fP Used with \fB\-x\fP. Prepends the line number to each line in the output. .TP \fB\-v\fP Enables verbose mode. "$VERBOSE" will be set to true. .TP \fB\-x\fP Converts the eRuby script into Ruby script and prints it without line numbers. .SH EXAMPLES Here is an eRuby script .br <% require 'prime' -%> .br .br <%= 1+1 %> .br <%= __FILE__ %> .br <%= Prime.each(10).to_a.join(", ") %> .br .br Command .nf \& "% erb -T - example.erb" .fi prints .br .br 2 .br example.erb .br 2, 3, 5, 7 .br .br .SH SEE ALSO \fBruby\fP(1). And see \fBri\fP(1) documentation for "ERB" class. .SH REPORTING BUGS Security vulnerabilities should be reported via an email to Reported problems will be published after fixed. And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://redmine.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immedately. .SH AUTHORS Written by Masatoshi SEKI. 0707010018472c000081a40000000000000000000000014dc8dfad00000f37000000b600010002ffffffffffffffff0000002300000000root/usr/local/share/man/man1/ri.1.TH RI 1 "Ruby Programmers Reference Guide" "December 29, 2008" "UNIX" .SH NAME \fBri\fP \- Ruby API reference front end .SH SYNOPSIS .br \fBri\fP [\fB\-Ti\fP] [\fB\-d\fP \fIdirectory\fP] [\fB\-f\fP \fIformat\fP] [\fB\--list-doc-dirs\fP] [\fB\--no-standard-docs\fP] [\fB\--\fP[\fBno-\fP]Bro \fBsystem\fP|\fBsite\fP|\fBgems\fP|\fBhome\fP Brc] [\fB\--\fP[\fBno-\fP]\fBuse-cache\fP] [\fB\--width\fP=\fIwidth\fP] [\fItarget\fP ...] .SH DESCRIPTION \fBri\fP is a CUI front end for the Ruby API reference. You can search and read API reference for classes and methods with \fB.\fP \fBri\fP is a part of Ruby. \fItarget\fP can be one of the following forms: It Class for classes It Class::method for class methods It Class#method for instance methods It Class.method for both class and instance methods It method for both class and instance methods All class names may be abbreviated to their minimum unambiguous form. If a name is ambiguous, all valid options will be listed. For example: ri Fil .br ri File .br ri File.new .br ri zip .br Note that shell quoting may be required for method names containing punctuation: ri 'Array.[]' .br ri compact\! .br .SH OPTIONS .TP \fB\--version\fP Prints the version of \fB.\fP .TP \fB\-T\fP .TP \fB\--no-pager\fP Send output directly to stdout, rather than to a pager. .TP \fB\-d\fP \fIdirectory\fP .TP \fB\--doc-dir\fP=\fIdirectory\fP List of directories from which to source documentation in addition to the standard directories. May be repeated. .TP \fB\-f\fP \fIFORMAT\fP .TP \fB\--fmt\fP \fIFORMAT\fP .TP \fB\--format\fP=FORMAT Format to use when displaying output: Use 'bs' (backspace) with most pager programs. To use ANSI, either disable the pager or tell the pager to allow control characters. .TP \fB\-i\fP .TP \fB\--interactive\fP This makes \fBri\fP go into interactive mode. When \fBri\fP is in interactive mode it will allow the user to disambiguate lists of methods in case multiple methods match against a method search string. It also will allow the user to enter in a method name (with auto-completion, if readline is supported) when viewing a class. .TP \fB\--list-doc-dirs\fP List the directories from which ri will source documentation on stdout and exit. .TP \fB\--no-standard-docs\fP Do not include documentation from the Ruby standard library, \fIsite_lib\fP, installed gems, or \fI~/.rdoc\fP. Equivalent to specifying the options \fB\--no-system\fP,\fB\--no-site\fP,\fB\--no-gems\fP, and \fB\--no-home\fP. .TP \fB\--\fP[\fBno-\fP]\fBsystem\fP Include documentation from Ruby's standard library. Defaults to true. .TP \fB\--\fP[\fBno-\fP]\fBsite\fP Include documentation from libraries installed in site_lib. Defaults to true. .TP \fB\--\fP[\fBno-\fP]\fBgems\fP Include documentation from RubyGems. Defaults to true. .TP \fB\--\fP[\fBno-\fP]\fBhome\fP Include documentation stored in ~/.rdoc. Defaults to true. .TP \fB\--\fP[\fBno-\fP]\fBuse-cache\fP Whether or not to use \fBNs\fP 's cache. True by default. .TP \fB\-w\fP \fIwidth\fP .TP \fB\--width\fP=\fIwidth\fP Set the width of the output. .SH ENVIRONMENT .TP .B RI Additional options. .TP .B PAGER Used as the name of pager program for displaying. .TP .B HOME .TP .B USERPROFILE .TP .B HOMEPATH Path to user's home directory. .SH FILES .TP .B ~/.ri Caches recently referenced documents here. .TP .B ~/.rdoc Searches user-wide documents here. .SH SEE ALSO \fBruby\fP(1) \fBrdoc\fP(1) \fBgem\fP(1) .SH REPORTING BUGS Security vulnerabilities should be reported via an email to Reported problems will be published after fixed. And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://redmine.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immedately. .SH AUTHORS Written by Dave Thomas 0707010018443e000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000001700000000root/usr/local/include0707010018443f000041ed0000000000000000000000044dc8e19e00000000000000b600010002ffffffffffffffff0000002200000000root/usr/local/include/ruby-1.9.107070100184443000081a40000000000000000000000014b5d25e200000342000000b600010002ffffffffffffffff0000002900000000root/usr/local/include/ruby-1.9.1/ruby.h/********************************************************************** ruby.h - $Author$ created at: Sun 10 12:06:15 Jun JST 2007 Copyright (C) 2007-2008 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_H #define RUBY_H 1 #define HAVE_RUBY_DEFINES_H 1 #define HAVE_RUBY_ENCODING_H 1 #define HAVE_RUBY_INTERN_H 1 #define HAVE_RUBY_IO_H 1 #define HAVE_RUBY_MISSING_H 1 #define HAVE_RUBY_ONIGURUMA_H 1 #define HAVE_RUBY_RE_H 1 #define HAVE_RUBY_REGEX_H 1 #define HAVE_RUBY_RUBY_H 1 #define HAVE_RUBY_ST_H 1 #define HAVE_RUBY_UTIL_H 1 #define HAVE_RUBY_VERSION_H 1 #define HAVE_RUBY_VM_H 1 #ifdef _WIN32 #define HAVE_RUBY_WIN32_H 1 #endif #include "ruby/ruby.h" #endif /* RUBY_H */ 07070100184444000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000002700000000root/usr/local/include/ruby-1.9.1/ruby0707010018444e000081a40000000000000000000000014c2760b700001316000000b600010002ffffffffffffffff0000002c00000000root/usr/local/include/ruby-1.9.1/ruby/io.h/********************************************************************** rubyio.h - $Author: nobu $ created at: Fri Nov 12 16:47:09 JST 1993 Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_IO_H #define RUBY_IO_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #include #include #include "ruby/encoding.h" #if defined(HAVE_STDIO_EXT_H) #include #endif typedef struct rb_io_t { int fd; /* file descriptor */ FILE *stdio_file; /* stdio ptr for read/write if available */ int mode; /* mode flags: FMODE_XXXs */ rb_pid_t pid; /* child's pid (for pipes) */ int lineno; /* number of lines read */ VALUE pathv; /* pathname for file */ void (*finalize)(struct rb_io_t*,int); /* finalize proc */ char *wbuf; /* wbuf_off + wbuf_len <= wbuf_capa */ int wbuf_off; int wbuf_len; int wbuf_capa; char *rbuf; /* rbuf_off + rbuf_len <= rbuf_capa */ int rbuf_off; int rbuf_len; int rbuf_capa; VALUE tied_io_for_writing; /* * enc enc2 read action write action * NULL NULL force_encoding(default_external) write the byte sequence of str * e1 NULL force_encoding(e1) convert str.encoding to e1 * e1 e2 convert from e2 to e1 convert str.encoding to e2 */ struct rb_io_enc_t { rb_encoding *enc; rb_encoding *enc2; int ecflags; VALUE ecopts; } encs; rb_econv_t *readconv; char *cbuf; /* cbuf_off + cbuf_len <= cbuf_capa */ int cbuf_off; int cbuf_len; int cbuf_capa; rb_econv_t *writeconv; VALUE writeconv_asciicompat; int writeconv_pre_ecflags; VALUE writeconv_pre_ecopts; int writeconv_initialized; VALUE write_lock; } rb_io_t; #define HAVE_RB_IO_T 1 #define FMODE_READABLE 0x00000001 #define FMODE_WRITABLE 0x00000002 #define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE) #define FMODE_BINMODE 0x00000004 #define FMODE_SYNC 0x00000008 #define FMODE_TTY 0x00000010 #define FMODE_DUPLEX 0x00000020 #define FMODE_APPEND 0x00000040 #define FMODE_CREATE 0x00000080 /* #define FMODE_NOREVLOOKUP 0x00000100 */ #define FMODE_WSPLIT 0x00000200 #define FMODE_WSPLIT_INITIALIZED 0x00000400 #define FMODE_TRUNC 0x00000800 #define FMODE_TEXTMODE 0x00001000 /* #define FMODE_PREP 0x00010000 */ #define FMODE_SETENC_BY_BOM 0x00100000 #define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) #define MakeOpenFile(obj, fp) do {\ if (RFILE(obj)->fptr) {\ rb_io_close(obj);\ rb_io_fptr_finalize(RFILE(obj)->fptr);\ RFILE(obj)->fptr = 0;\ }\ fp = 0;\ fp = RFILE(obj)->fptr = ALLOC(rb_io_t);\ fp->fd = -1;\ fp->stdio_file = NULL;\ fp->mode = 0;\ fp->pid = 0;\ fp->lineno = 0;\ fp->pathv = Qnil;\ fp->finalize = 0;\ fp->wbuf = NULL;\ fp->wbuf_off = 0;\ fp->wbuf_len = 0;\ fp->wbuf_capa = 0;\ fp->rbuf = NULL;\ fp->rbuf_off = 0;\ fp->rbuf_len = 0;\ fp->rbuf_capa = 0;\ fp->readconv = NULL;\ fp->cbuf = NULL;\ fp->cbuf_off = 0;\ fp->cbuf_len = 0;\ fp->cbuf_capa = 0;\ fp->writeconv = NULL;\ fp->writeconv_asciicompat = Qnil;\ fp->writeconv_pre_ecflags = 0;\ fp->writeconv_pre_ecopts = Qnil;\ fp->writeconv_initialized = 0;\ fp->tied_io_for_writing = 0;\ fp->encs.enc = NULL;\ fp->encs.enc2 = NULL;\ fp->encs.ecflags = 0;\ fp->encs.ecopts = Qnil;\ fp->write_lock = 0;\ } while (0) FILE *rb_io_stdio_file(rb_io_t *fptr); FILE *rb_fdopen(int, const char*); int rb_io_modestr_fmode(const char *modestr); int rb_io_modestr_oflags(const char *modestr); int rb_io_oflags_fmode(int oflags); void rb_io_check_writable(rb_io_t*); void rb_io_check_readable(rb_io_t*); int rb_io_fptr_finalize(rb_io_t*); void rb_io_synchronized(rb_io_t*); void rb_io_check_initialized(rb_io_t*); void rb_io_check_closed(rb_io_t*); int rb_io_wait_readable(int); int rb_io_wait_writable(int); void rb_io_set_nonblock(rb_io_t *fptr); /* compatibility for ruby 1.8 and older */ #define rb_io_mode_flags(modestr) rb_io_modestr_fmode(modestr) #define rb_io_modenum_flags(oflags) rb_io_oflags_fmode(oflags) VALUE rb_io_taint_check(VALUE); NORETURN(void rb_eof_error(void)); void rb_io_read_check(rb_io_t*); int rb_io_read_pending(rb_io_t*); DEPRECATED(void rb_read_check(FILE*)); #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_IO_H */ 07070100184450000081a40000000000000000000000014b8c37b300008939000000b600010002ffffffffffffffff0000003300000000root/usr/local/include/ruby-1.9.1/ruby/oniguruma.h#ifndef ONIGURUMA_H #define ONIGURUMA_H /********************************************************************** oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2008 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 5 #define ONIGURUMA_VERSION_MINOR 9 #define ONIGURUMA_VERSION_TEENY 2 #ifdef __cplusplus # ifndef HAVE_PROTOTYPES # define HAVE_PROTOTYPES 1 # endif # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif /* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ #if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifdef HAVE_STDARG_H # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifndef P_ #if defined(__STDC__) || defined(_WIN32) # define P_(args) args #else # define P_(args) () #endif #endif #ifndef PV_ #ifdef HAVE_STDARG_PROTOTYPES # define PV_(args) args #else # define PV_(args) () #endif #endif #ifndef ONIG_EXTERN #ifdef RUBY_EXTERN #define ONIG_EXTERN RUBY_EXTERN #else #if defined(_WIN32) && !defined(__GNUC__) #if defined(EXPORT) || defined(RUBY_EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) #endif #endif #endif #endif #ifndef ONIG_EXTERN #define ONIG_EXTERN extern #endif /* PART: character encoding */ #ifndef ONIG_ESCAPE_UCHAR_COLLISION #define UChar OnigUChar #endif typedef unsigned char OnigUChar; typedef unsigned int OnigCodePoint; typedef unsigned int OnigCtype; typedef size_t OnigDistance; #define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) typedef unsigned int OnigCaseFoldType; /* case fold flag */ ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; /* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ /* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ #define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) #define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) #define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR #define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag #define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 #define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13 /* 13 => Unicode:0x1ffc */ /* code range */ #define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) #define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] #define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] typedef struct { int byte_len; /* argument(original) character(s) byte length */ int code_len; /* number of code */ OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; } OnigCaseFoldCodeItem; typedef struct { OnigCodePoint esc; OnigCodePoint anychar; OnigCodePoint anytime; OnigCodePoint zero_or_one_time; OnigCodePoint one_or_more_time; OnigCodePoint anychar_anytime; } OnigMetaCharTableType; typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); typedef struct OnigEncodingTypeST { int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc); const char* name; int max_enc_len; int min_enc_len; int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc); int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc); int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc); int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc); int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc); int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc); int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc); OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); int ruby_encoding_index; } OnigEncodingType; typedef OnigEncodingType* OnigEncoding; ONIG_EXTERN OnigEncodingType OnigEncodingASCII; #define ONIG_ENCODING_ASCII (&OnigEncodingASCII) #define ONIG_ENCODING_UNDEF ((OnigEncoding )0) /* work size */ #define ONIGENC_CODE_TO_MBC_MAXLEN 7 #define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 /* 18: 6(max-byte) * 3(case-fold chars) */ /* character types */ #define ONIGENC_CTYPE_NEWLINE 0 #define ONIGENC_CTYPE_ALPHA 1 #define ONIGENC_CTYPE_BLANK 2 #define ONIGENC_CTYPE_CNTRL 3 #define ONIGENC_CTYPE_DIGIT 4 #define ONIGENC_CTYPE_GRAPH 5 #define ONIGENC_CTYPE_LOWER 6 #define ONIGENC_CTYPE_PRINT 7 #define ONIGENC_CTYPE_PUNCT 8 #define ONIGENC_CTYPE_SPACE 9 #define ONIGENC_CTYPE_UPPER 10 #define ONIGENC_CTYPE_XDIGIT 11 #define ONIGENC_CTYPE_WORD 12 #define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ #define ONIGENC_CTYPE_ASCII 14 #define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII #define ONIGENC_CTYPE_SPECIAL_MASK 128 #define ONIGENC_CTYPE_S /* [\t\n\v\f\r\s] */ \ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_SPACE #define ONIGENC_CTYPE_D /* [0-9] */ \ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_DIGIT #define ONIGENC_CTYPE_W /* [0-9A-Za-z_] */ \ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_WORD #define ONIGENC_CTYPE_SPECIAL_P(ctype) ((ctype) & ONIGENC_CTYPE_SPECIAL_MASK) #define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e) #define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) #define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) #define ONIGENC_IS_MBC_HEAD(enc,p,e) (ONIGENC_MBC_ENC_LEN(enc,p,e) != 1) #define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) #define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) #define ONIGENC_IS_MBC_WORD(enc,s,end) \ ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) #define ONIGENC_NAME(enc) ((enc)->name) #define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc) #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ (enc)->is_allowed_reverse_match(s,end,enc) #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) \ (enc)->left_adjust_char_head(start, s, end, enc) #define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc) #define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc) #define ONIGENC_STEP_BACK(enc,start,s,end,n) \ onigenc_step_back((enc),(start),(s),(end),(n)) #define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n) #define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r)) #define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r) #define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1) #define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1) #define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n)) #define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1) #define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r)) #define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc) ONIG_EXTERN int onigenc_mbclen_approximate P_((const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc)); #define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen_approximate(p,e,enc) #define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) #define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) #define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) #define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc) #define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc) #define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc) #define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc) #define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ (enc)->property_name_to_ctype(enc,p,end) #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc) #define ONIGENC_IS_CODE_NEWLINE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) #define ONIGENC_IS_CODE_GRAPH(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) #define ONIGENC_IS_CODE_PRINT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) #define ONIGENC_IS_CODE_ALNUM(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) #define ONIGENC_IS_CODE_ALPHA(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) #define ONIGENC_IS_CODE_LOWER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) #define ONIGENC_IS_CODE_UPPER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) #define ONIGENC_IS_CODE_CNTRL(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) #define ONIGENC_IS_CODE_PUNCT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) #define ONIGENC_IS_CODE_SPACE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) #define ONIGENC_IS_CODE_BLANK(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) #define ONIGENC_IS_CODE_DIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) #define ONIGENC_IS_CODE_XDIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) #define ONIGENC_IS_CODE_WORD(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) #define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ (enc)->get_ctype_code_range(ctype,sbout,ranges,enc) ONIG_EXTERN OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n)); /* encoding API */ ONIG_EXTERN int onigenc_init P_((void)); ONIG_EXTERN int onigenc_set_default_encoding P_((OnigEncoding enc)); ONIG_EXTERN OnigEncoding onigenc_get_default_encoding P_((void)); ONIG_EXTERN void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev)); ONIG_EXTERN OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); ONIG_EXTERN int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); ONIG_EXTERN int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); /* PART: regular expression */ /* config parameters */ #define ONIG_NREGION 10 #define ONIG_MAX_BACKREF_NUM 1000 #define ONIG_MAX_REPEAT_NUM 100000 #define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 /* constants */ #define ONIG_MAX_ERROR_MESSAGE_LEN 90 typedef unsigned int OnigOptionType; #define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE /* options */ #define ONIG_OPTION_NONE 0U #define ONIG_OPTION_IGNORECASE 1U #define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) #define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) #define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) #define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) #define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) #define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) #define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) #define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) /* options (search time) */ #define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) #define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) #define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) #define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */ #define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) #define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) #define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) /* syntax */ typedef struct { unsigned int op; unsigned int op2; unsigned int behavior; OnigOptionType options; /* default option */ OnigMetaCharTableType meta_char_table; } OnigSyntaxType; ONIG_EXTERN const OnigSyntaxType OnigSyntaxASIS; ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic; ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended; ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs; ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep; ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl_NG; ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) /* default syntax */ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax /* syntax (operators) */ #define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) #define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ #define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ #define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) #define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ #define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) #define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ #define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) #define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ #define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ #define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ #define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ #define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ #define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ #define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ #define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ #define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ #define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ #define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ #define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ #define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ #define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ #define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ #define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ #define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ #define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ #define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ #define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ #define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ #define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ #define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ #define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ #define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ #define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */ #define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ #define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ #define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ #define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ #define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ #define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ #define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ #define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ #define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ #define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ #define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ #define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ #define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ /* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ #define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ #define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ #define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) /* ?, *, +, {n,m} */ #define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) /* error or ignore */ #define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) /* ...)... */ #define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) /* {??? */ #define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) /* {,n} => {0,n} */ #define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ #define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ #define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ #define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ #define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ /* syntax (behavior) in char class [...] */ #define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ #define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ #define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) #define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ /* syntax (behavior) warning */ #define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ #define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ #define ONIG_SYN_WARN_CC_DUP (1U<<26) /* [aa] */ /* meta character specifiers (onig_set_meta_char()) */ #define ONIG_META_CHAR_ESCAPE 0 #define ONIG_META_CHAR_ANYCHAR 1 #define ONIG_META_CHAR_ANYTIME 2 #define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 #define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 #define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 #define ONIG_INEFFECTIVE_META_CHAR 0 /* error codes */ #define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) /* normal return */ #define ONIG_NORMAL 0 #define ONIG_MISMATCH -1 #define ONIG_NO_SUPPORT_CONFIG -2 /* internal error */ #define ONIGERR_MEMORY -5 #define ONIGERR_TYPE_BUG -6 #define ONIGERR_PARSER_BUG -11 #define ONIGERR_STACK_BUG -12 #define ONIGERR_UNDEFINED_BYTECODE -13 #define ONIGERR_UNEXPECTED_BYTECODE -14 #define ONIGERR_MATCH_STACK_LIMIT_OVER -15 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 /* general error */ #define ONIGERR_INVALID_ARGUMENT -30 /* syntax error */ #define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 #define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 #define ONIGERR_EMPTY_CHAR_CLASS -102 #define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 #define ONIGERR_END_PATTERN_AT_ESCAPE -104 #define ONIGERR_END_PATTERN_AT_META -105 #define ONIGERR_END_PATTERN_AT_CONTROL -106 #define ONIGERR_META_CODE_SYNTAX -108 #define ONIGERR_CONTROL_CODE_SYNTAX -109 #define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 #define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 #define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 #define ONIGERR_NESTED_REPEAT_OPERATOR -115 #define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 #define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 #define ONIGERR_END_PATTERN_IN_GROUP -118 #define ONIGERR_UNDEFINED_GROUP_OPTION -119 #define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 #define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 #define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 /* values error (syntax error) */ #define ONIGERR_TOO_BIG_NUMBER -200 #define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 #define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 #define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 #define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 #define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 #define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 #define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 #define ONIGERR_INVALID_BACKREF -208 #define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 #define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 #define ONIGERR_EMPTY_GROUP_NAME -214 #define ONIGERR_INVALID_GROUP_NAME -215 #define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 #define ONIGERR_UNDEFINED_NAME_REFERENCE -217 #define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 #define ONIGERR_MULTIPLEX_DEFINED_NAME -219 #define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 #define ONIGERR_NEVER_ENDING_RECURSION -221 #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 #define ONIGERR_INVALID_CODE_POINT_VALUE -400 #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 #define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 #define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 /* errors related to thread */ #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 /* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ #define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 #define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) typedef struct OnigCaptureTreeNodeStruct { int group; /* group number */ int beg; int end; int allocated; int num_childs; struct OnigCaptureTreeNodeStruct** childs; } OnigCaptureTreeNode; /* match result region type */ struct re_registers { int allocated; int num_regs; int* beg; int* end; /* extended */ OnigCaptureTreeNode* history_root; /* capture history tree root */ }; /* capture tree traverse */ #define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 #define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 #define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) #define ONIG_REGION_NOTPOS -1 typedef struct re_registers OnigRegion; typedef struct { OnigEncoding enc; OnigUChar* par; OnigUChar* par_end; } OnigErrorInfo; typedef struct { int lower; int upper; } OnigRepeatRange; typedef void (*OnigWarnFunc) P_((const char* s)); extern void onig_null_warn P_((const char* s)); #define ONIG_NULL_WARN onig_null_warn #define ONIG_CHAR_TABLE_SIZE 256 /* regex_t state */ #define ONIG_STATE_NORMAL 0 #define ONIG_STATE_SEARCHING 1 #define ONIG_STATE_COMPILING -1 #define ONIG_STATE_MODIFY -2 #define ONIG_STATE(reg) \ ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state) typedef struct re_pattern_buffer { /* common members of BBuf(bytes-buffer) */ unsigned char* p; /* compiled pattern */ unsigned int used; /* used space for p */ unsigned int alloc; /* allocated space for p */ int state; /* normal, searching, compiling */ int num_mem; /* used memory(...) num counted from 1 */ int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ int num_null_check; /* OP_NULL_CHECK_START/END id counter */ int num_comb_exp_check; /* combination explosion check */ int num_call; /* number of subexp call */ unsigned int capture_history; /* (?@...) flag (1-31) */ unsigned int bt_mem_start; /* need backtrack flag */ unsigned int bt_mem_end; /* need backtrack flag */ int stack_pop_level; int repeat_range_alloc; OnigRepeatRange* repeat_range; OnigEncoding enc; OnigOptionType options; const OnigSyntaxType* syntax; OnigCaseFoldType case_fold_flag; void* name_table; /* optimization info (string search, char-map and anchors) */ int optimize; /* optimize flag */ int threshold_len; /* search str-length for apply optimize */ int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ int sub_anchor; /* start-anchor for exact or map */ unsigned char *exact; unsigned char *exact_end; unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ int *int_map; /* BM skip for exact_len > 255 */ int *int_map_backward; /* BM skip for backward search */ OnigDistance dmin; /* min-distance of exact or map */ OnigDistance dmax; /* max-distance of exact or map */ /* regex_t link chain */ struct re_pattern_buffer* chain; /* escape compile-conflict */ } OnigRegexType; typedef OnigRegexType* OnigRegex; #ifndef ONIG_ESCAPE_REGEX_T_COLLISION typedef OnigRegexType regex_t; #endif typedef struct { int num_of_elements; OnigEncoding pattern_enc; OnigEncoding target_enc; OnigSyntaxType* syntax; OnigOptionType option; OnigCaseFoldType case_fold_flag; } OnigCompileInfo; /* Oniguruma Native API */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); ONIG_EXTERN void onig_set_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN void onig_set_verb_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax)); ONIG_EXTERN int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); ONIG_EXTERN void onig_free P_((OnigRegex)); ONIG_EXTERN void onig_free_body P_((OnigRegex)); ONIG_EXTERN int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); ONIG_EXTERN long onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN long onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN OnigRegion* onig_region_new P_((void)); ONIG_EXTERN void onig_region_init P_((OnigRegion* region)); ONIG_EXTERN void onig_region_free P_((OnigRegion* region, int free_self)); ONIG_EXTERN void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); ONIG_EXTERN void onig_region_clear P_((OnigRegion* region)); ONIG_EXTERN int onig_region_resize P_((OnigRegion* region, int n)); ONIG_EXTERN int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); ONIG_EXTERN int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); ONIG_EXTERN int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); ONIG_EXTERN int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg)); ONIG_EXTERN int onig_number_of_names P_((OnigRegex reg)); ONIG_EXTERN int onig_number_of_captures P_((OnigRegex reg)); ONIG_EXTERN int onig_number_of_capture_histories P_((OnigRegex reg)); ONIG_EXTERN OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); ONIG_EXTERN int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); ONIG_EXTERN int onig_noname_group_capture_is_active P_((OnigRegex reg)); ONIG_EXTERN OnigEncoding onig_get_encoding P_((OnigRegex reg)); ONIG_EXTERN OnigOptionType onig_get_options P_((OnigRegex reg)); ONIG_EXTERN OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); ONIG_EXTERN const OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); ONIG_EXTERN int onig_set_default_syntax P_((const OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, const OnigSyntaxType* from)); ONIG_EXTERN unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); ONIG_EXTERN OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); ONIG_EXTERN void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); ONIG_EXTERN void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); ONIG_EXTERN void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); ONIG_EXTERN int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code)); ONIG_EXTERN void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); ONIG_EXTERN OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); ONIG_EXTERN int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); ONIG_EXTERN unsigned int onig_get_match_stack_limit_size P_((void)); ONIG_EXTERN int onig_set_match_stack_limit_size P_((unsigned int size)); ONIG_EXTERN int onig_end P_((void)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); #ifdef __cplusplus #if 0 { /* satisfy cc-mode */ #endif } #endif #endif /* ONIGURUMA_H */ 07070100184456000081a40000000000000000000000014ac5ec55000005ff000000b600010002ffffffffffffffff0000003100000000root/usr/local/include/ruby-1.9.1/ruby/version.h/********************************************************************** ruby/version.h - $Author: akr $ created at: Wed May 13 12:56:56 JST 2009 Copyright (C) 1993-2009 Yukihiro Matsumoto Copyright (C) 2000 Network Applied Communication Laboratory, Inc. Copyright (C) 2000 Information-technology Promotion Agency, Japan **********************************************************************/ /* * This file contains only * - never-changable informations, and * - interfaces accessible from extension libraries. * * Never try to check RUBY_VERSION_CODE etc in extension libraries, * check the features with mkmf.rb instead. */ #ifndef RUBY_VERSION_H #define RUBY_VERSION_H 1 /* The origin. */ #define RUBY_AUTHOR "Yukihiro Matsumoto" #define RUBY_BIRTH_YEAR 1993 #define RUBY_BIRTH_MONTH 2 #define RUBY_BIRTH_DAY 24 #ifdef RUBY_EXTERN #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif /* * Interfaces from extension libraries. * * Before using these infos, think thrice whether they are really * necessary or not, and if the answer was yes, think twice a week * later again. */ RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_release_date[]; RUBY_EXTERN const char ruby_platform[]; RUBY_EXTERN const int ruby_patchlevel; RUBY_EXTERN const char ruby_description[]; RUBY_EXTERN const char ruby_copyright[]; RUBY_EXTERN const char ruby_engine[]; #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif #endif 0707010018444c000081a40000000000000000000000014cf753960000315b000000b600010002ffffffffffffffff0000003200000000root/usr/local/include/ruby-1.9.1/ruby/encoding.h/********************************************************************** encoding.h - $Author: matz $ created at: Thu May 24 11:49:41 JST 2007 Copyright (C) 2007 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_ENCODING_H #define RUBY_ENCODING_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #include #include "ruby/oniguruma.h" #define ENCODING_INLINE_MAX 1023 #define ENCODING_SHIFT (FL_USHIFT+10) #define ENCODING_MASK (((VALUE)ENCODING_INLINE_MAX)<flags &= ~ENCODING_MASK;\ RBASIC(obj)->flags |= (VALUE)(i) << ENCODING_SHIFT;\ } while (0) #define ENCODING_SET(obj,i) do {\ VALUE rb_encoding_set_obj = (obj); \ int encoding_set_enc_index = (i); \ if (encoding_set_enc_index < ENCODING_INLINE_MAX) \ ENCODING_SET_INLINED(rb_encoding_set_obj, encoding_set_enc_index); \ else \ rb_enc_set_index(rb_encoding_set_obj, encoding_set_enc_index); \ } while (0) #define ENCODING_GET_INLINED(obj) (int)((RBASIC(obj)->flags & ENCODING_MASK)>>ENCODING_SHIFT) #define ENCODING_GET(obj) \ (ENCODING_GET_INLINED(obj) != ENCODING_INLINE_MAX ? \ ENCODING_GET_INLINED(obj) : \ rb_enc_get_index(obj)) #define ENCODING_IS_ASCII8BIT(obj) (ENCODING_GET_INLINED(obj) == 0) #define ENCODING_MAXNAMELEN 42 #define ENC_CODERANGE_MASK ((int)(FL_USER8|FL_USER9)) #define ENC_CODERANGE_UNKNOWN 0 #define ENC_CODERANGE_7BIT ((int)FL_USER8) #define ENC_CODERANGE_VALID ((int)FL_USER9) #define ENC_CODERANGE_BROKEN ((int)(FL_USER8|FL_USER9)) #define ENC_CODERANGE(obj) ((int)RBASIC(obj)->flags & ENC_CODERANGE_MASK) #define ENC_CODERANGE_ASCIIONLY(obj) (ENC_CODERANGE(obj) == ENC_CODERANGE_7BIT) #define ENC_CODERANGE_SET(obj,cr) (RBASIC(obj)->flags = \ (RBASIC(obj)->flags & ~ENC_CODERANGE_MASK) | (cr)) #define ENC_CODERANGE_CLEAR(obj) ENC_CODERANGE_SET(obj,0) /* assumed ASCII compatibility */ #define ENC_CODERANGE_AND(a, b) \ (a == ENC_CODERANGE_7BIT ? b : \ a == ENC_CODERANGE_VALID ? (b == ENC_CODERANGE_7BIT ? ENC_CODERANGE_VALID : b) : \ ENC_CODERANGE_UNKNOWN) #define ENCODING_CODERANGE_SET(obj, encindex, cr) \ do { \ VALUE rb_encoding_coderange_obj = (obj); \ ENCODING_SET(rb_encoding_coderange_obj, (encindex)); \ ENC_CODERANGE_SET(rb_encoding_coderange_obj, (cr)); \ } while (0) typedef OnigEncodingType rb_encoding; int rb_enc_replicate(const char *, rb_encoding *); int rb_define_dummy_encoding(const char *); #define rb_enc_to_index(enc) ((enc) ? ENC_TO_ENCINDEX(enc) : 0) int rb_enc_get_index(VALUE obj); void rb_enc_set_index(VALUE obj, int encindex); int rb_enc_find_index(const char *name); int rb_to_encoding_index(VALUE); rb_encoding* rb_to_encoding(VALUE); rb_encoding* rb_enc_get(VALUE); rb_encoding* rb_enc_compatible(VALUE,VALUE); rb_encoding* rb_enc_check(VALUE,VALUE); VALUE rb_enc_associate_index(VALUE, int); VALUE rb_enc_associate(VALUE, rb_encoding*); void rb_enc_copy(VALUE dst, VALUE src); VALUE rb_enc_str_new(const char*, long, rb_encoding*); VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int); PRINTF_ARGS(VALUE rb_enc_sprintf(rb_encoding *, const char*, ...), 2, 3); VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list); long rb_enc_strlen(const char*, const char*, rb_encoding*); char* rb_enc_nth(const char*, const char*, long, rb_encoding*); VALUE rb_obj_encoding(VALUE); VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc); VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc); VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *); VALUE rb_str_export_to_enc(VALUE, rb_encoding *); VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to); VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts); /* index -> rb_encoding */ rb_encoding* rb_enc_from_index(int idx); /* name -> rb_encoding */ rb_encoding * rb_enc_find(const char *name); /* rb_encoding * -> name */ #define rb_enc_name(enc) (enc)->name /* rb_encoding * -> minlen/maxlen */ #define rb_enc_mbminlen(enc) (enc)->min_enc_len #define rb_enc_mbmaxlen(enc) (enc)->max_enc_len /* -> mbclen (no error notification: 0 < ret <= e-p, no exception) */ int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc); /* -> mbclen (only for valid encoding) */ int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc); /* -> chlen, invalid or needmore */ int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc); #define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret) #define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret) #define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret) #define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret) #define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret) /* -> 0x00..0x7f, -1 */ int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc); /* -> code (and len) or raise exception */ unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc); /* prototype for obsolete function */ unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc); /* overriding macro */ #define rb_enc_codepoint(p,e,enc) rb_enc_codepoint_len((p),(e),0,(enc)) #define rb_enc_mbc_to_codepoint(p, e, enc) ONIGENC_MBC_TO_CODE(enc,(UChar*)(p),(UChar*)(e)) /* -> codelen>0 or raise exception */ int rb_enc_codelen(int code, rb_encoding *enc); /* code,ptr,encoding -> write buf */ #define rb_enc_mbcput(c,buf,enc) ONIGENC_CODE_TO_MBC(enc,c,(UChar*)(buf)) /* start, ptr, end, encoding -> prev_char */ #define rb_enc_prev_char(s,p,e,enc) (char *)onigenc_get_prev_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) /* start, ptr, end, encoding -> next_char */ #define rb_enc_left_char_head(s,p,e,enc) (char *)onigenc_get_left_adjust_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) #define rb_enc_right_char_head(s,p,e,enc) (char *)onigenc_get_right_adjust_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) /* ptr, ptr, encoding -> newline_or_not */ #define rb_enc_is_newline(p,end,enc) ONIGENC_IS_MBC_NEWLINE(enc,(UChar*)(p),(UChar*)(end)) #define rb_enc_isctype(c,t,enc) ONIGENC_IS_CODE_CTYPE(enc,c,t) #define rb_enc_isascii(c,enc) ONIGENC_IS_CODE_ASCII(c) #define rb_enc_isalpha(c,enc) ONIGENC_IS_CODE_ALPHA(enc,c) #define rb_enc_islower(c,enc) ONIGENC_IS_CODE_LOWER(enc,c) #define rb_enc_isupper(c,enc) ONIGENC_IS_CODE_UPPER(enc,c) #define rb_enc_ispunct(c,enc) ONIGENC_IS_CODE_PUNCT(enc,c) #define rb_enc_isalnum(c,enc) ONIGENC_IS_CODE_ALNUM(enc,c) #define rb_enc_isprint(c,enc) ONIGENC_IS_CODE_PRINT(enc,c) #define rb_enc_isspace(c,enc) ONIGENC_IS_CODE_SPACE(enc,c) #define rb_enc_isdigit(c,enc) ONIGENC_IS_CODE_DIGIT(enc,c) #define rb_enc_asciicompat(enc) (rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc)) int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc); int rb_enc_toupper(int c, rb_encoding *enc); int rb_enc_tolower(int c, rb_encoding *enc); ID rb_intern3(const char*, long, rb_encoding*); ID rb_interned_id_p(const char *, long, rb_encoding *); int rb_enc_symname_p(const char*, rb_encoding*); int rb_enc_symname2_p(const char*, long, rb_encoding*); int rb_enc_str_coderange(VALUE); long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*); int rb_enc_str_asciionly_p(VALUE); #define rb_enc_str_asciicompat_p(str) rb_enc_asciicompat(rb_enc_get(str)) VALUE rb_enc_from_encoding(rb_encoding *enc); int rb_enc_unicode_p(rb_encoding *enc); rb_encoding *rb_ascii8bit_encoding(void); rb_encoding *rb_utf8_encoding(void); rb_encoding *rb_usascii_encoding(void); rb_encoding *rb_locale_encoding(void); rb_encoding *rb_filesystem_encoding(void); rb_encoding *rb_default_external_encoding(void); rb_encoding *rb_default_internal_encoding(void); int rb_ascii8bit_encindex(void); int rb_utf8_encindex(void); int rb_usascii_encindex(void); int rb_locale_encindex(void); int rb_filesystem_encindex(void); VALUE rb_enc_default_external(void); VALUE rb_enc_default_internal(void); void rb_enc_set_default_external(VALUE encoding); void rb_enc_set_default_internal(VALUE encoding); VALUE rb_locale_charmap(VALUE klass); long rb_memsearch(const void*,long,const void*,long,rb_encoding*); RUBY_EXTERN VALUE rb_cEncoding; #define ENC_DUMMY_FLAG (1<<24) #define ENC_INDEX_MASK (~(~0U<<24)) #define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK) #define ENC_DUMMY_P(enc) ((enc)->ruby_encoding_index & ENC_DUMMY_FLAG) #define ENC_SET_DUMMY(enc) ((enc)->ruby_encoding_index |= ENC_DUMMY_FLAG) static inline int rb_enc_dummy_p(rb_encoding *enc) { return ENC_DUMMY_P(enc) != 0; } /* econv stuff */ typedef enum { econv_invalid_byte_sequence, econv_undefined_conversion, econv_destination_buffer_full, econv_source_buffer_empty, econv_finished, econv_after_output, econv_incomplete_input } rb_econv_result_t; typedef struct rb_econv_t rb_econv_t; VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts); int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding); int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts); rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags); rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts); rb_econv_result_t rb_econv_convert(rb_econv_t *ec, const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end, unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end, int flags); void rb_econv_close(rb_econv_t *ec); /* result: 0:success -1:failure */ int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname); /* result: 0:success -1:failure */ int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name); int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name); VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags); /* result: 0:success -1:failure */ int rb_econv_insert_output(rb_econv_t *ec, const unsigned char *str, size_t len, const char *str_encoding); /* encoding that rb_econv_insert_output doesn't need conversion */ const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec); /* raise an error if the last rb_econv_convert is error */ void rb_econv_check_error(rb_econv_t *ec); /* returns an exception object or nil */ VALUE rb_econv_make_exception(rb_econv_t *ec); int rb_econv_putbackable(rb_econv_t *ec); void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n); /* returns the corresponding ASCII compatible encoding for encname, * or NULL if encname is not ASCII incompatible encoding. */ const char *rb_econv_asciicompat_encoding(const char *encname); VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags); VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags); VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags); VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags); void rb_econv_binmode(rb_econv_t *ec); /* flags for rb_econv_open */ #define ECONV_ERROR_HANDLER_MASK 0x000000ff #define ECONV_INVALID_MASK 0x0000000f #define ECONV_INVALID_REPLACE 0x00000002 #define ECONV_UNDEF_MASK 0x000000f0 #define ECONV_UNDEF_REPLACE 0x00000020 #define ECONV_UNDEF_HEX_CHARREF 0x00000030 #define ECONV_DECORATOR_MASK 0x0000ff00 #define ECONV_UNIVERSAL_NEWLINE_DECORATOR 0x00000100 #define ECONV_CRLF_NEWLINE_DECORATOR 0x00001000 #define ECONV_CR_NEWLINE_DECORATOR 0x00002000 #define ECONV_XML_TEXT_DECORATOR 0x00004000 #define ECONV_XML_ATTR_CONTENT_DECORATOR 0x00008000 #define ECONV_STATEFUL_DECORATOR_MASK 0x00f00000 #define ECONV_XML_ATTR_QUOTE_DECORATOR 0x00100000 /* end of flags for rb_econv_open */ /* flags for rb_econv_convert */ #define ECONV_PARTIAL_INPUT 0x00010000 #define ECONV_AFTER_OUTPUT 0x00020000 /* end of flags for rb_econv_convert */ #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_ENCODING_H */ 0707010018444d000081a40000000000000000000000014ce11cd20000733a000000b600010002ffffffffffffffff0000003000000000root/usr/local/include/ruby-1.9.1/ruby/intern.h/********************************************************************** intern.h - $Author: yugui $ created at: Thu Jun 10 14:22:17 JST 1993 Copyright (C) 1993-2007 Yukihiro Matsumoto Copyright (C) 2000 Network Applied Communication Laboratory, Inc. Copyright (C) 2000 Information-technology Promotion Agency, Japan **********************************************************************/ #ifndef RUBY_INTERN_H #define RUBY_INTERN_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #ifdef HAVE_STDARG_PROTOTYPES # include #else # include #endif #include "ruby/st.h" /* * Functions and variables that are used by more than one source file of * the kernel. */ #define ID_ALLOCATOR 1 /* array.c */ void rb_mem_clear(register VALUE*, register long); VALUE rb_assoc_new(VALUE, VALUE); VALUE rb_check_array_type(VALUE); VALUE rb_ary_new(void); VALUE rb_ary_new2(long); VALUE rb_ary_new3(long,...); VALUE rb_ary_new4(long, const VALUE *); VALUE rb_ary_tmp_new(long); void rb_ary_free(VALUE); VALUE rb_ary_freeze(VALUE); VALUE rb_ary_aref(int, VALUE*, VALUE); VALUE rb_ary_subseq(VALUE, long, long); void rb_ary_store(VALUE, long, VALUE); VALUE rb_ary_dup(VALUE); VALUE rb_ary_to_ary(VALUE); VALUE rb_ary_to_s(VALUE); VALUE rb_ary_push(VALUE, VALUE); VALUE rb_ary_pop(VALUE); VALUE rb_ary_shift(VALUE); VALUE rb_ary_unshift(VALUE, VALUE); VALUE rb_ary_entry(VALUE, long); VALUE rb_ary_each(VALUE); VALUE rb_ary_join(VALUE, VALUE); VALUE rb_ary_print_on(VALUE, VALUE); VALUE rb_ary_reverse(VALUE); VALUE rb_ary_sort(VALUE); VALUE rb_ary_sort_bang(VALUE); VALUE rb_ary_delete(VALUE, VALUE); VALUE rb_ary_delete_at(VALUE, long); VALUE rb_ary_clear(VALUE); VALUE rb_ary_plus(VALUE, VALUE); VALUE rb_ary_concat(VALUE, VALUE); VALUE rb_ary_assoc(VALUE, VALUE); VALUE rb_ary_rassoc(VALUE, VALUE); VALUE rb_ary_includes(VALUE, VALUE); VALUE rb_ary_cmp(VALUE, VALUE); VALUE rb_ary_replace(VALUE copy, VALUE orig); VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long)); /* bignum.c */ VALUE rb_big_new(long, int); int rb_bigzero_p(VALUE x); VALUE rb_big_clone(VALUE); void rb_big_2comp(VALUE); VALUE rb_big_norm(VALUE); void rb_big_resize(VALUE big, long len); VALUE rb_uint2big(VALUE); VALUE rb_int2big(SIGNED_VALUE); VALUE rb_uint2inum(VALUE); VALUE rb_int2inum(SIGNED_VALUE); VALUE rb_cstr_to_inum(const char*, int, int); VALUE rb_str_to_inum(VALUE, int, int); VALUE rb_cstr2inum(const char*, int); VALUE rb_str2inum(VALUE, int); VALUE rb_big2str(VALUE, int); VALUE rb_big2str0(VALUE, int, int); SIGNED_VALUE rb_big2long(VALUE); #define rb_big2int(x) rb_big2long(x) VALUE rb_big2ulong(VALUE); #define rb_big2uint(x) rb_big2ulong(x) #if HAVE_LONG_LONG VALUE rb_ll2inum(LONG_LONG); VALUE rb_ull2inum(unsigned LONG_LONG); LONG_LONG rb_big2ll(VALUE); unsigned LONG_LONG rb_big2ull(VALUE); #endif /* HAVE_LONG_LONG */ void rb_quad_pack(char*,VALUE); VALUE rb_quad_unpack(const char*,int); void rb_big_pack(VALUE val, unsigned long *buf, long num_longs); VALUE rb_big_unpack(unsigned long *buf, long num_longs); int rb_uv_to_utf8(char[6],unsigned long); VALUE rb_dbl2big(double); double rb_big2dbl(VALUE); VALUE rb_big_cmp(VALUE, VALUE); VALUE rb_big_eq(VALUE, VALUE); VALUE rb_big_plus(VALUE, VALUE); VALUE rb_big_minus(VALUE, VALUE); VALUE rb_big_mul(VALUE, VALUE); VALUE rb_big_div(VALUE, VALUE); VALUE rb_big_modulo(VALUE, VALUE); VALUE rb_big_divmod(VALUE, VALUE); VALUE rb_big_pow(VALUE, VALUE); VALUE rb_big_and(VALUE, VALUE); VALUE rb_big_or(VALUE, VALUE); VALUE rb_big_xor(VALUE, VALUE); VALUE rb_big_lshift(VALUE, VALUE); VALUE rb_big_rshift(VALUE, VALUE); /* rational.c */ VALUE rb_rational_raw(VALUE, VALUE); #define rb_rational_raw1(x) rb_rational_raw(x, INT2FIX(1)) #define rb_rational_raw2(x,y) rb_rational_raw(x, y) VALUE rb_rational_new(VALUE, VALUE); #define rb_rational_new1(x) rb_rational_new(x, INT2FIX(1)) #define rb_rational_new2(x,y) rb_rational_new(x, y) VALUE rb_Rational(VALUE, VALUE); #define rb_Rational1(x) rb_Rational(x, INT2FIX(1)) #define rb_Rational2(x,y) rb_Rational(x, y) /* complex.c */ VALUE rb_complex_raw(VALUE, VALUE); #define rb_complex_raw1(x) rb_complex_raw(x, INT2FIX(0)) #define rb_complex_raw2(x,y) rb_complex_raw(x, y) VALUE rb_complex_new(VALUE, VALUE); #define rb_complex_new1(x) rb_complex_new(x, INT2FIX(0)) #define rb_complex_new2(x,y) rb_complex_new(x, y) VALUE rb_complex_polar(VALUE, VALUE); VALUE rb_Complex(VALUE, VALUE); #define rb_Complex1(x) rb_Complex(x, INT2FIX(0)) #define rb_Complex2(x,y) rb_Complex(x, y) /* class.c */ VALUE rb_class_boot(VALUE); VALUE rb_class_new(VALUE); VALUE rb_mod_init_copy(VALUE, VALUE); VALUE rb_class_init_copy(VALUE, VALUE); VALUE rb_singleton_class_clone(VALUE); void rb_singleton_class_attached(VALUE,VALUE); VALUE rb_make_metaclass(VALUE, VALUE); void rb_check_inheritable(VALUE); VALUE rb_class_inherited(VALUE, VALUE); VALUE rb_define_class_id(ID, VALUE); VALUE rb_define_class_id_under(VALUE, ID, VALUE); VALUE rb_module_new(void); VALUE rb_define_module_id(ID); VALUE rb_define_module_id_under(VALUE, ID); VALUE rb_mod_included_modules(VALUE); VALUE rb_mod_include_p(VALUE, VALUE); VALUE rb_mod_ancestors(VALUE); VALUE rb_class_instance_methods(int, VALUE*, VALUE); VALUE rb_class_public_instance_methods(int, VALUE*, VALUE); VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE); VALUE rb_class_private_instance_methods(int, VALUE*, VALUE); VALUE rb_obj_singleton_methods(int, VALUE*, VALUE); void rb_define_method_id(VALUE, ID, VALUE (*)(ANYARGS), int); void rb_frozen_class_p(VALUE); void rb_undef(VALUE, ID); void rb_define_protected_method(VALUE, const char*, VALUE (*)(ANYARGS), int); void rb_define_private_method(VALUE, const char*, VALUE (*)(ANYARGS), int); void rb_define_singleton_method(VALUE, const char*, VALUE(*)(ANYARGS), int); VALUE rb_singleton_class(VALUE); /* compar.c */ int rb_cmpint(VALUE, VALUE, VALUE); NORETURN(void rb_cmperr(VALUE, VALUE)); /* cont.c */ VALUE rb_fiber_new(VALUE (*)(ANYARGS), VALUE); VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args); VALUE rb_fiber_yield(int argc, VALUE *args); VALUE rb_fiber_current(void); VALUE rb_fiber_alive_p(VALUE); /* enum.c */ /* enumerator.c */ VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *); #define RETURN_ENUMERATOR(obj, argc, argv) do { \ if (!rb_block_given_p()) \ return rb_enumeratorize(obj, ID2SYM(rb_frame_this_func()), \ argc, argv); \ } while (0) /* error.c */ VALUE rb_exc_new(VALUE, const char*, long); VALUE rb_exc_new2(VALUE, const char*); VALUE rb_exc_new3(VALUE, VALUE); PRINTF_ARGS(NORETURN(void rb_loaderror(const char*, ...)), 1, 2); PRINTF_ARGS(NORETURN(void rb_name_error(ID, const char*, ...)), 2, 3); NORETURN(void rb_invalid_str(const char*, const char*)); PRINTF_ARGS(void rb_compile_error(const char*, int, const char*, ...), 3, 4); PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2); NORETURN(void rb_load_fail(const char*)); NORETURN(void rb_error_frozen(const char*)); void rb_check_frozen(VALUE); /* eval.c */ int rb_sourceline(void); const char *rb_sourcefile(void); VALUE rb_check_funcall(VALUE, ID, int, VALUE*); #if defined(NFDBITS) && defined(HAVE_RB_FD_INIT) typedef struct { int maxfd; fd_set *fdset; } rb_fdset_t; void rb_fd_init(volatile rb_fdset_t *); void rb_fd_term(rb_fdset_t *); void rb_fd_zero(rb_fdset_t *); void rb_fd_set(int, rb_fdset_t *); void rb_fd_clr(int, rb_fdset_t *); int rb_fd_isset(int, const rb_fdset_t *); void rb_fd_copy(rb_fdset_t *, const fd_set *, int); int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *); #define rb_fd_ptr(f) ((f)->fdset) #define rb_fd_max(f) ((f)->maxfd) #elif defined(_WIN32) typedef struct { int capa; fd_set *fdset; } rb_fdset_t; void rb_fd_init(volatile rb_fdset_t *); void rb_fd_term(rb_fdset_t *); #define rb_fd_zero(f) ((f)->fdset->fd_count = 0) void rb_fd_set(int, rb_fdset_t *); #define rb_fd_clr(n, f) rb_w32_fdclr(n, (f)->fdset) #define rb_fd_isset(n, f) rb_w32_fdisset(n, (f)->fdset) #define rb_fd_select(n, rfds, wfds, efds, timeout) rb_w32_select(n, (rfds) ? ((rb_fdset_t*)rfds)->fdset : NULL, (wfds) ? ((rb_fdset_t*)wfds)->fdset : NULL, (efds) ? ((rb_fdset_t*)efds)->fdset: NULL, timeout) #define rb_fd_resize(n, f) (void)(f) #define rb_fd_ptr(f) ((f)->fdset) #define rb_fd_max(f) ((f)->fdset->fd_count) #else typedef fd_set rb_fdset_t; #define rb_fd_zero(f) FD_ZERO(f) #define rb_fd_set(n, f) FD_SET(n, f) #define rb_fd_clr(n, f) FD_CLR(n, f) #define rb_fd_isset(n, f) FD_ISSET(n, f) #define rb_fd_copy(d, s, n) (*(d) = *(s)) #define rb_fd_resize(n, f) (void)(f) #define rb_fd_ptr(f) (f) #define rb_fd_init(f) FD_ZERO(f) #define rb_fd_term(f) (void)(f) #define rb_fd_max(f) FD_SETSIZE #define rb_fd_select(n, rfds, wfds, efds, timeout) select(n, rfds, wfds, efds, timeout) #endif NORETURN(void rb_exc_raise(VALUE)); NORETURN(void rb_exc_fatal(VALUE)); VALUE rb_f_exit(int,VALUE*); VALUE rb_f_abort(int,VALUE*); void rb_remove_method(VALUE, const char*); void rb_remove_method_id(VALUE, ID); #define rb_disable_super(klass, name) ((void)0) #define rb_enable_super(klass, name) ((void)0) #define HAVE_RB_DEFINE_ALLOC_FUNC 1 typedef VALUE (*rb_alloc_func_t)(VALUE); void rb_define_alloc_func(VALUE, rb_alloc_func_t); void rb_undef_alloc_func(VALUE); rb_alloc_func_t rb_get_alloc_func(VALUE); void rb_clear_cache(void); void rb_clear_cache_by_class(VALUE); void rb_alias(VALUE, ID, ID); void rb_attr(VALUE,ID,int,int,int); int rb_method_boundp(VALUE, ID, int); int rb_method_basic_definition_p(VALUE, ID); VALUE rb_eval_cmd(VALUE, VALUE, int); int rb_obj_respond_to(VALUE, ID, int); int rb_respond_to(VALUE, ID); VALUE rb_f_notimplement(int argc, VALUE *argv, VALUE obj); void rb_interrupt(void); VALUE rb_apply(VALUE, ID, VALUE); void rb_backtrace(void); ID rb_frame_this_func(void); VALUE rb_obj_instance_eval(int, VALUE*, VALUE); VALUE rb_obj_instance_exec(int, VALUE*, VALUE); VALUE rb_mod_module_eval(int, VALUE*, VALUE); VALUE rb_mod_module_exec(int, VALUE*, VALUE); void rb_load(VALUE, int); void rb_load_protect(VALUE, int, int*); NORETURN(void rb_jump_tag(int)); int rb_provided(const char*); int rb_feature_provided(const char *, const char **); void rb_provide(const char*); VALUE rb_f_require(VALUE, VALUE); VALUE rb_require_safe(VALUE, int); void rb_obj_call_init(VALUE, int, VALUE*); VALUE rb_class_new_instance(int, VALUE*, VALUE); VALUE rb_block_proc(void); VALUE rb_f_lambda(void); VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE); VALUE rb_obj_is_proc(VALUE); VALUE rb_proc_call(VALUE, VALUE); VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE); int rb_proc_arity(VALUE); VALUE rb_proc_lambda_p(VALUE); VALUE rb_binding_new(void); VALUE rb_obj_method(VALUE, VALUE); VALUE rb_method_call(int, VALUE*, VALUE); int rb_mod_method_arity(VALUE, ID); int rb_obj_method_arity(VALUE, ID); VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*); void rb_set_end_proc(void (*)(VALUE), VALUE); void rb_mark_end_proc(void); void rb_exec_end_proc(void); void ruby_finalize(void); NORETURN(void ruby_stop(int)); int ruby_cleanup(volatile int); void rb_gc_mark_threads(void); void rb_thread_schedule(void); void rb_thread_wait_fd(int); int rb_thread_fd_writable(int); void rb_thread_fd_close(int); int rb_thread_alone(void); void rb_thread_polling(void); void rb_thread_sleep(int); void rb_thread_sleep_forever(void); VALUE rb_thread_stop(void); VALUE rb_thread_wakeup(VALUE); VALUE rb_thread_run(VALUE); VALUE rb_thread_kill(VALUE); VALUE rb_thread_create(VALUE (*)(ANYARGS), void*); int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *); void rb_thread_wait_for(struct timeval); VALUE rb_thread_current(void); VALUE rb_thread_main(void); VALUE rb_thread_local_aref(VALUE, ID); VALUE rb_thread_local_aset(VALUE, ID, VALUE); void rb_thread_atfork(void); void rb_thread_atfork_before_exec(void); VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE); VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); /* dir.c */ VALUE rb_dir_getwd(void); /* file.c */ VALUE rb_file_s_expand_path(int, VALUE *); VALUE rb_file_expand_path(VALUE, VALUE); VALUE rb_file_s_absolute_path(int, VALUE *); VALUE rb_file_absolute_path(VALUE, VALUE); VALUE rb_file_dirname(VALUE fname); void rb_file_const(const char*, VALUE); int rb_file_load_ok(const char *); int rb_find_file_ext_safe(VALUE*, const char* const*, int); VALUE rb_find_file_safe(VALUE, int); int rb_find_file_ext(VALUE*, const char* const*); VALUE rb_find_file(VALUE); char *rb_path_next(const char *); char *rb_path_skip_prefix(const char *); char *rb_path_last_separator(const char *); char *rb_path_end(const char *); VALUE rb_file_directory_p(VALUE,VALUE); VALUE rb_str_encode_ospath(VALUE); int rb_is_absolute_path(const char *); /* gc.c */ void ruby_set_stack_size(size_t); NORETURN(void rb_memerror(void)); int ruby_stack_check(void); size_t ruby_stack_length(VALUE**); int rb_during_gc(void); void rb_gc_mark_locations(VALUE*, VALUE*); void rb_mark_tbl(struct st_table*); void rb_mark_set(struct st_table*); void rb_mark_hash(struct st_table*); void rb_gc_mark_maybe(VALUE); void rb_gc_mark(VALUE); void rb_gc_force_recycle(VALUE); void rb_gc(void); void rb_gc_copy_finalizer(VALUE,VALUE); void rb_gc_finalize_deferred(void); void rb_gc_call_finalizer_at_exit(void); VALUE rb_gc_enable(void); VALUE rb_gc_disable(void); VALUE rb_gc_start(void); #define Init_stack(addr) ruby_init_stack(addr) /* hash.c */ void st_foreach_safe(struct st_table *, int (*)(ANYARGS), st_data_t); void rb_hash_foreach(VALUE, int (*)(ANYARGS), VALUE); VALUE rb_hash(VALUE); VALUE rb_hash_new(void); VALUE rb_hash_dup(VALUE); VALUE rb_hash_freeze(VALUE); VALUE rb_hash_aref(VALUE, VALUE); VALUE rb_hash_lookup(VALUE, VALUE); VALUE rb_hash_lookup2(VALUE, VALUE, VALUE); VALUE rb_hash_fetch(VALUE, VALUE); VALUE rb_hash_aset(VALUE, VALUE, VALUE); VALUE rb_hash_delete_if(VALUE); VALUE rb_hash_delete(VALUE,VALUE); struct st_table *rb_hash_tbl(VALUE); int rb_path_check(const char*); int rb_env_path_tainted(void); VALUE rb_env_clear(void); /* io.c */ #define rb_defout rb_stdout RUBY_EXTERN VALUE rb_fs; RUBY_EXTERN VALUE rb_output_fs; RUBY_EXTERN VALUE rb_rs; RUBY_EXTERN VALUE rb_default_rs; RUBY_EXTERN VALUE rb_output_rs; VALUE rb_io_write(VALUE, VALUE); VALUE rb_io_gets(VALUE); VALUE rb_io_getbyte(VALUE); VALUE rb_io_ungetc(VALUE, VALUE); VALUE rb_io_ungetbyte(VALUE, VALUE); VALUE rb_io_close(VALUE); VALUE rb_io_flush(VALUE); VALUE rb_io_eof(VALUE); VALUE rb_io_binmode(VALUE); VALUE rb_io_ascii8bit_binmode(VALUE); VALUE rb_io_addstr(VALUE, VALUE); VALUE rb_io_printf(int, VALUE*, VALUE); VALUE rb_io_print(int, VALUE*, VALUE); VALUE rb_io_puts(int, VALUE*, VALUE); VALUE rb_io_fdopen(int, int, const char*); VALUE rb_io_get_io(VALUE); VALUE rb_file_open(const char*, const char*); VALUE rb_file_open_str(VALUE, const char*); VALUE rb_gets(void); void rb_write_error(const char*); void rb_write_error2(const char*, long); void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds); int rb_pipe(int *pipes); /* marshal.c */ VALUE rb_marshal_dump(VALUE, VALUE); VALUE rb_marshal_load(VALUE); void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE)); /* numeric.c */ void rb_num_zerodiv(void); #define RB_NUM_COERCE_FUNCS_NEED_OPID 1 VALUE rb_num_coerce_bin(VALUE, VALUE, ID); VALUE rb_num_coerce_cmp(VALUE, VALUE, ID); VALUE rb_num_coerce_relop(VALUE, VALUE, ID); VALUE rb_float_new(double); VALUE rb_num2fix(VALUE); VALUE rb_fix2str(VALUE, int); VALUE rb_dbl_cmp(double, double); /* object.c */ int rb_eql(VALUE, VALUE); VALUE rb_any_to_s(VALUE); VALUE rb_inspect(VALUE); VALUE rb_obj_is_instance_of(VALUE, VALUE); VALUE rb_obj_is_kind_of(VALUE, VALUE); VALUE rb_obj_alloc(VALUE); VALUE rb_obj_clone(VALUE); VALUE rb_obj_dup(VALUE); VALUE rb_obj_init_copy(VALUE,VALUE); VALUE rb_obj_taint(VALUE); VALUE rb_obj_tainted(VALUE); VALUE rb_obj_untaint(VALUE); VALUE rb_obj_untrust(VALUE); VALUE rb_obj_untrusted(VALUE); VALUE rb_obj_trust(VALUE); VALUE rb_obj_freeze(VALUE); VALUE rb_obj_frozen_p(VALUE); VALUE rb_obj_id(VALUE); VALUE rb_obj_class(VALUE); VALUE rb_class_real(VALUE); VALUE rb_class_inherited_p(VALUE, VALUE); VALUE rb_convert_type(VALUE,int,const char*,const char*); VALUE rb_check_convert_type(VALUE,int,const char*,const char*); VALUE rb_check_to_integer(VALUE, const char *); VALUE rb_check_to_float(VALUE); VALUE rb_to_int(VALUE); VALUE rb_Integer(VALUE); VALUE rb_to_float(VALUE); VALUE rb_Float(VALUE); VALUE rb_String(VALUE); VALUE rb_Array(VALUE); double rb_cstr_to_dbl(const char*, int); double rb_str_to_dbl(VALUE, int); /* parse.y */ RUBY_EXTERN int ruby_sourceline; RUBY_EXTERN char *ruby_sourcefile; ID rb_id_attrset(ID); void rb_gc_mark_parser(void); int rb_is_const_id(ID); int rb_is_instance_id(ID); int rb_is_class_id(ID); int rb_is_local_id(ID); int rb_is_junk_id(ID); int rb_symname_p(const char*); int rb_sym_interned_p(VALUE); void rb_gc_mark_symbols(void); VALUE rb_backref_get(void); void rb_backref_set(VALUE); VALUE rb_lastline_get(void); void rb_lastline_set(VALUE); VALUE rb_sym_all_symbols(void); /* process.c */ void rb_last_status_set(int status, rb_pid_t pid); VALUE rb_last_status_get(void); struct rb_exec_arg { int argc; VALUE *argv; const char *prog; VALUE options; VALUE redirect_fds; }; int rb_proc_exec_n(int, VALUE*, const char*); int rb_proc_exec(const char*); VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e); int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val); void rb_exec_arg_fixup(struct rb_exec_arg *e); int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s); int rb_run_exec_options_err(const struct rb_exec_arg *e, struct rb_exec_arg *s, char*, size_t); int rb_exec(const struct rb_exec_arg*); int rb_exec_err(const struct rb_exec_arg*, char*, size_t); rb_pid_t rb_fork(int*, int (*)(void*), void*, VALUE); rb_pid_t rb_fork_err(int*, int (*)(void*, char*, size_t), void*, VALUE, char*, size_t); VALUE rb_f_exec(int,VALUE*); rb_pid_t rb_waitpid(rb_pid_t pid, int *status, int flags); void rb_syswait(rb_pid_t pid); rb_pid_t rb_spawn(int, VALUE*); rb_pid_t rb_spawn_err(int, VALUE*, char*, size_t); VALUE rb_proc_times(VALUE); VALUE rb_detach_process(rb_pid_t pid); /* range.c */ VALUE rb_range_new(VALUE, VALUE, int); VALUE rb_range_beg_len(VALUE, long*, long*, long, int); int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp); /* random.c */ unsigned int rb_genrand_int32(void); double rb_genrand_real(void); void rb_reset_random_seed(void); VALUE rb_random_bytes(VALUE rnd, long n); VALUE rb_random_int(VALUE rnd, VALUE max); unsigned int rb_random_int32(VALUE rnd); double rb_random_real(VALUE rnd); /* re.c */ #define rb_memcmp memcmp int rb_memcicmp(const void*,const void*,long); void rb_match_busy(VALUE); VALUE rb_reg_nth_defined(int, VALUE); VALUE rb_reg_nth_match(int, VALUE); int rb_reg_backref_number(VALUE match, VALUE backref); VALUE rb_reg_last_match(VALUE); VALUE rb_reg_match_pre(VALUE); VALUE rb_reg_match_post(VALUE); VALUE rb_reg_match_last(VALUE); #define HAVE_RB_REG_NEW_STR 1 VALUE rb_reg_new_str(VALUE, int); VALUE rb_reg_new(const char *, long, int); VALUE rb_reg_alloc(void); VALUE rb_reg_init_str(VALUE re, VALUE s, int options); VALUE rb_reg_match(VALUE, VALUE); VALUE rb_reg_match2(VALUE); int rb_reg_options(VALUE); /* ruby.c */ #define rb_argv rb_get_argv() RUBY_EXTERN VALUE rb_argv0; VALUE rb_get_argv(void); void *rb_load_file(const char*); void ruby_script(const char*); void ruby_prog_init(void); void ruby_set_argv(int, char**); void *ruby_process_options(int, char**); void ruby_init_loadpath(void); void ruby_incpush(const char*); /* signal.c */ VALUE rb_f_kill(int, VALUE*); void rb_gc_mark_trap_list(void); #ifdef POSIX_SIGNAL #define posix_signal ruby_posix_signal RETSIGTYPE (*posix_signal(int, RETSIGTYPE (*)(int)))(int); #endif void ruby_sig_finalize(void); void rb_trap_exit(void); void rb_trap_exec(void); const char *ruby_signal_name(int); void ruby_default_signal(int); /* sprintf.c */ VALUE rb_f_sprintf(int, const VALUE*); PRINTF_ARGS(VALUE rb_sprintf(const char*, ...), 1, 2); VALUE rb_vsprintf(const char*, va_list); PRINTF_ARGS(VALUE rb_str_catf(VALUE, const char*, ...), 2, 3); VALUE rb_str_vcatf(VALUE, const char*, va_list); VALUE rb_str_format(int, const VALUE *, VALUE); /* string.c */ VALUE rb_str_new(const char*, long); VALUE rb_str_new_cstr(const char*); VALUE rb_str_new2(const char*); VALUE rb_str_new_shared(VALUE); VALUE rb_str_new3(VALUE); VALUE rb_str_new_frozen(VALUE); VALUE rb_str_new4(VALUE); VALUE rb_str_new_with_class(VALUE, const char*, long); VALUE rb_str_new5(VALUE, const char*, long); VALUE rb_tainted_str_new_cstr(const char*); VALUE rb_tainted_str_new(const char*, long); VALUE rb_tainted_str_new2(const char*); VALUE rb_external_str_new(const char*, long); VALUE rb_external_str_new_cstr(const char*); VALUE rb_locale_str_new(const char*, long); VALUE rb_locale_str_new_cstr(const char*); VALUE rb_filesystem_str_new(const char*, long); VALUE rb_filesystem_str_new_cstr(const char*); VALUE rb_str_buf_new(long); VALUE rb_str_buf_new_cstr(const char*); VALUE rb_str_buf_new2(const char*); VALUE rb_str_tmp_new(long); VALUE rb_usascii_str_new(const char*, long); VALUE rb_usascii_str_new_cstr(const char*); VALUE rb_usascii_str_new2(const char*); void rb_str_free(VALUE); void rb_str_shared_replace(VALUE, VALUE); VALUE rb_str_buf_append(VALUE, VALUE); VALUE rb_str_buf_cat(VALUE, const char*, long); VALUE rb_str_buf_cat2(VALUE, const char*); VALUE rb_str_buf_cat_ascii(VALUE, const char*); VALUE rb_obj_as_string(VALUE); VALUE rb_check_string_type(VALUE); VALUE rb_str_dup(VALUE); VALUE rb_str_locktmp(VALUE); VALUE rb_str_unlocktmp(VALUE); VALUE rb_str_dup_frozen(VALUE); #define rb_str_dup_frozen rb_str_new_frozen VALUE rb_str_plus(VALUE, VALUE); VALUE rb_str_times(VALUE, VALUE); long rb_str_sublen(VALUE, long); VALUE rb_str_substr(VALUE, long, long); VALUE rb_str_subseq(VALUE, long, long); void rb_str_modify(VALUE); VALUE rb_str_freeze(VALUE); void rb_str_set_len(VALUE, long); VALUE rb_str_resize(VALUE, long); VALUE rb_str_cat(VALUE, const char*, long); VALUE rb_str_cat2(VALUE, const char*); VALUE rb_str_append(VALUE, VALUE); VALUE rb_str_concat(VALUE, VALUE); st_index_t rb_memhash(const void *ptr, long len); st_index_t rb_hash_start(st_index_t); st_index_t rb_hash_uint32(st_index_t, uint32_t); st_index_t rb_hash_uint(st_index_t, st_index_t); st_index_t rb_hash_end(st_index_t); #define rb_hash_uint32(h, i) st_hash_uint32(h, i) #define rb_hash_uint(h, i) st_hash_uint(h, i) #define rb_hash_end(h) st_hash_end(h) st_index_t rb_str_hash(VALUE); int rb_str_hash_cmp(VALUE,VALUE); int rb_str_comparable(VALUE, VALUE); int rb_str_cmp(VALUE, VALUE); VALUE rb_str_equal(VALUE str1, VALUE str2); VALUE rb_str_drop_bytes(VALUE, long); void rb_str_update(VALUE, long, long, VALUE); VALUE rb_str_replace(VALUE, VALUE); VALUE rb_str_inspect(VALUE); VALUE rb_str_dump(VALUE); VALUE rb_str_split(VALUE, const char*); void rb_str_associate(VALUE, VALUE); VALUE rb_str_associated(VALUE); void rb_str_setter(VALUE, ID, VALUE*); VALUE rb_str_intern(VALUE); VALUE rb_sym_to_s(VALUE); long rb_str_strlen(VALUE); VALUE rb_str_length(VALUE); long rb_str_offset(VALUE, long); size_t rb_str_capacity(VALUE); #if defined __GNUC__ #define rb_str_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_str_new(str, (long)strlen(str)) : \ rb_str_new_cstr(str); \ }) #define rb_tainted_str_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_tainted_str_new(str, (long)strlen(str)) : \ rb_tainted_str_new_cstr(str); \ }) #define rb_usascii_str_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_usascii_str_new(str, (long)strlen(str)) : \ rb_usascii_str_new_cstr(str); \ }) #define rb_external_str_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_external_str_new(str, (long)strlen(str)) : \ rb_external_str_new_cstr(str); \ }) #define rb_locale_str_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_locale_str_new(str, (long)strlen(str)) : \ rb_locale_str_new_cstr(str); \ }) #define rb_str_buf_new_cstr(str) __extension__ ( \ { \ (__builtin_constant_p(str)) ? \ rb_str_buf_cat(rb_str_buf_new((long)strlen(str)), \ str, (long)strlen(str)) : \ rb_str_buf_new_cstr(str); \ }) #define rb_str_buf_cat2(str, ptr) __extension__ ( \ { \ (__builtin_constant_p(ptr)) ? \ rb_str_buf_cat(str, ptr, (long)strlen(ptr)) : \ rb_str_buf_cat2(str, ptr); \ }) #define rb_str_cat2(str, ptr) __extension__ ( \ { \ (__builtin_constant_p(ptr)) ? \ rb_str_cat(str, ptr, (long)strlen(ptr)) : \ rb_str_cat2(str, ptr); \ }) #define rb_exc_new2(klass, ptr) __extension__ ( \ { \ (__builtin_constant_p(ptr)) ? \ rb_exc_new(klass, ptr, (long)strlen(ptr)) : \ rb_exc_new2(klass, ptr); \ }) #endif #define rb_str_new2 rb_str_new_cstr #define rb_str_new3 rb_str_new_shared #define rb_str_new4 rb_str_new_frozen #define rb_str_new5 rb_str_new_with_class #define rb_tainted_str_new2 rb_tainted_str_new_cstr #define rb_str_buf_new2 rb_str_buf_new_cstr #define rb_usascii_str_new2 rb_usascii_str_new_cstr /* struct.c */ VALUE rb_struct_new(VALUE, ...); VALUE rb_struct_define(const char*, ...); VALUE rb_struct_alloc(VALUE, VALUE); VALUE rb_struct_initialize(VALUE, VALUE); VALUE rb_struct_aref(VALUE, VALUE); VALUE rb_struct_aset(VALUE, VALUE, VALUE); VALUE rb_struct_getmember(VALUE, ID); DEPRECATED(VALUE rb_struct_iv_get(VALUE, const char*)); VALUE rb_struct_s_members(VALUE); VALUE rb_struct_members(VALUE); VALUE rb_struct_alloc_noinit(VALUE); VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...); /* thread.c */ typedef void rb_unblock_function_t(void *); typedef VALUE rb_blocking_function_t(void *); void rb_thread_check_ints(void); int rb_thread_interrupted(VALUE thval); VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1, rb_unblock_function_t *ubf, void *data2); #define RUBY_UBF_IO ((rb_unblock_function_t *)-1) #define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1) VALUE rb_mutex_new(void); VALUE rb_mutex_locked_p(VALUE mutex); VALUE rb_mutex_try_lock(VALUE mutex); VALUE rb_mutex_lock(VALUE mutex); VALUE rb_mutex_unlock(VALUE mutex); VALUE rb_mutex_sleep(VALUE self, VALUE timeout); VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg); VALUE rb_barrier_new(void); VALUE rb_barrier_wait(VALUE self); VALUE rb_barrier_release(VALUE self); VALUE rb_barrier_destroy(VALUE self); /* time.c */ VALUE rb_time_new(time_t, long); VALUE rb_time_nano_new(time_t, long); VALUE rb_time_num_new(VALUE, VALUE); /* variable.c */ VALUE rb_mod_name(VALUE); VALUE rb_class_path(VALUE); void rb_set_class_path(VALUE, VALUE, const char*); void rb_set_class_path_string(VALUE, VALUE, VALUE); VALUE rb_path_to_class(VALUE); VALUE rb_path2class(const char*); void rb_name_class(VALUE, ID); VALUE rb_class_name(VALUE); void rb_autoload(VALUE, ID, const char*); VALUE rb_autoload_load(VALUE, ID); VALUE rb_autoload_p(VALUE, ID); void rb_gc_mark_global_tbl(void); VALUE rb_f_trace_var(int, VALUE*); VALUE rb_f_untrace_var(int, VALUE*); VALUE rb_f_global_variables(void); void rb_alias_variable(ID, ID); struct st_table* rb_generic_ivar_table(VALUE); void rb_copy_generic_ivar(VALUE,VALUE); void rb_mark_generic_ivar(VALUE); void rb_mark_generic_ivar_tbl(void); void rb_free_generic_ivar(VALUE); VALUE rb_ivar_get(VALUE, ID); VALUE rb_ivar_set(VALUE, ID, VALUE); VALUE rb_ivar_defined(VALUE, ID); void rb_ivar_foreach(VALUE, int (*)(ANYARGS), st_data_t); st_index_t rb_ivar_count(VALUE); VALUE rb_iv_set(VALUE, const char*, VALUE); VALUE rb_iv_get(VALUE, const char*); VALUE rb_attr_get(VALUE, ID); VALUE rb_obj_instance_variables(VALUE); VALUE rb_obj_remove_instance_variable(VALUE, VALUE); void *rb_mod_const_at(VALUE, void*); void *rb_mod_const_of(VALUE, void*); VALUE rb_const_list(void*); VALUE rb_mod_constants(int, VALUE *, VALUE); VALUE rb_mod_remove_const(VALUE, VALUE); int rb_const_defined(VALUE, ID); int rb_const_defined_at(VALUE, ID); int rb_const_defined_from(VALUE, ID); VALUE rb_const_get(VALUE, ID); VALUE rb_const_get_at(VALUE, ID); VALUE rb_const_get_from(VALUE, ID); void rb_const_set(VALUE, ID, VALUE); VALUE rb_const_remove(VALUE, ID); VALUE rb_mod_const_missing(VALUE,VALUE); VALUE rb_cvar_defined(VALUE, ID); void rb_cvar_set(VALUE, ID, VALUE); VALUE rb_cvar_get(VALUE, ID); void rb_cv_set(VALUE, const char*, VALUE); VALUE rb_cv_get(VALUE, const char*); void rb_define_class_variable(VALUE, const char*, VALUE); VALUE rb_mod_class_variables(VALUE); VALUE rb_mod_remove_cvar(VALUE, VALUE); /* version.c */ void ruby_show_version(void); void ruby_show_copyright(void); ID rb_frame_callee(void); VALUE rb_str_succ(VALUE); VALUE rb_time_succ(VALUE); void rb_frame_pop(void); int rb_frame_method_id_and_class(ID *idp, VALUE *klassp); #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_INTERN_H */ 0707010018444f000081a40000000000000000000000014c5937bf00000d4b000000b600010002ffffffffffffffff0000003100000000root/usr/local/include/ruby-1.9.1/ruby/missing.h/************************************************ missing.h - prototype for *.c in ./missing, and for missing timeval struct $Author: mame $ created at: Sat May 11 23:46:03 JST 2002 ************************************************/ #ifndef RUBY_MISSING_H #define RUBY_MISSING_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #if defined(HAVE_SYS_TIME_H) # include #elif !defined(_WIN32) # define time_t long struct timeval { time_t tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; #endif #if defined(HAVE_SYS_TYPES_H) # include #endif #if !defined(HAVE_STRUCT_TIMESPEC) struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; #endif #if !defined(HAVE_STRUCT_TIMEZONE) struct timezone { int tz_minuteswest; int tz_dsttime; }; #endif #ifndef RUBY_EXTERN #define RUBY_EXTERN extern #endif #ifndef HAVE_ACOSH RUBY_EXTERN double acosh(double); RUBY_EXTERN double asinh(double); RUBY_EXTERN double atanh(double); #endif #ifndef HAVE_CRYPT RUBY_EXTERN char *crypt(const char *, const char *); #endif #ifndef HAVE_DUP2 RUBY_EXTERN int dup2(int, int); #endif #ifndef HAVE_EACCESS RUBY_EXTERN int eaccess(const char*, int); #endif #ifndef HAVE_FINITE RUBY_EXTERN int finite(double); #endif #ifndef HAVE_FLOCK RUBY_EXTERN int flock(int, int); #endif /* #ifndef HAVE_FREXP RUBY_EXTERN double frexp(double, int *); #endif */ #ifndef HAVE_HYPOT RUBY_EXTERN double hypot(double, double); #endif #ifndef HAVE_ERF RUBY_EXTERN double erf(double); RUBY_EXTERN double erfc(double); #endif #ifndef HAVE_TGAMMA RUBY_EXTERN double tgamma(double); #endif #ifndef HAVE_LGAMMA_R RUBY_EXTERN double lgamma_r(double, int *); #endif #ifndef HAVE_CBRT RUBY_EXTERN double cbrt(double); #endif #ifndef isinf # ifndef HAVE_ISINF # if defined(HAVE_FINITE) && defined(HAVE_ISNAN) # define isinf(x) (!finite(x) && !isnan(x)) # else RUBY_EXTERN int isinf(double); # endif # endif #endif #ifndef isnan # ifndef HAVE_ISNAN RUBY_EXTERN int isnan(double); # endif #endif /* #ifndef HAVE_MEMCMP RUBY_EXTERN int memcmp(const void *, const void *, size_t); #endif */ #ifndef HAVE_MEMMOVE RUBY_EXTERN void *memmove(void *, const void *, size_t); #endif /* #ifndef HAVE_MODF RUBY_EXTERN double modf(double, double *); #endif */ #ifndef HAVE_STRCHR RUBY_EXTERN char *strchr(const char *, int); RUBY_EXTERN char *strrchr(const char *, int); #endif #ifndef HAVE_STRERROR RUBY_EXTERN char *strerror(int); #endif #ifndef HAVE_STRSTR RUBY_EXTERN char *strstr(const char *, const char *); #endif /* #ifndef HAVE_STRTOL RUBY_EXTERN long strtol(const char *, char **, int); #endif */ #ifndef HAVE_STRLCPY RUBY_EXTERN size_t strlcpy(char *, const char*, size_t); #endif #ifndef HAVE_STRLCAT RUBY_EXTERN size_t strlcat(char *, const char*, size_t); #endif #ifndef HAVE_SIGNBIT RUBY_EXTERN int signbit(double x); #endif #ifndef HAVE_FFS RUBY_EXTERN int ffs(int); #endif #ifdef BROKEN_CLOSE #include #include RUBY_EXTERN int ruby_getpeername(int, struct sockaddr *, socklen_t *); RUBY_EXTERN int ruby_getsockname(int, struct sockaddr *, socklen_t *); RUBY_EXTERN int ruby_shutdown(int, int); RUBY_EXTERN int ruby_close(int); #endif #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_MISSING_H */ 07070100184452000081a40000000000000000000000014ac5ec55000002dd000000b600010002ffffffffffffffff0000002f00000000root/usr/local/include/ruby-1.9.1/ruby/regex.h/********************************************************************** regex.h - $Author: akr $ Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ #ifndef ONIGURUMA_REGEX_H #define ONIGURUMA_REGEX_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #ifdef RUBY #include "ruby/oniguruma.h" #else #include "oniguruma.h" #endif #ifndef ONIG_RUBY_M17N ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; #define mbclen(p,e,enc) rb_enc_mbclen((p),(e),(enc)) #endif /* ifndef ONIG_RUBY_M17N */ #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* ONIGURUMA_REGEX_H */ 07070100184454000081a40000000000000000000000014b5d57fe00000ea9000000b600010002ffffffffffffffff0000002c00000000root/usr/local/include/ruby-1.9.1/ruby/st.h/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ /* @(#) st.h 5.1 89/12/14 */ #ifndef RUBY_ST_H #define RUBY_ST_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #ifndef RUBY_LIB_PREFIX #include "ruby/config.h" #include "ruby/defines.h" #ifdef RUBY_EXTCONF_H #include RUBY_EXTCONF_H #endif #endif #if defined STDC_HEADERS #include #elif defined HAVE_STDLIB_H #include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #if SIZEOF_LONG == SIZEOF_VOIDP typedef unsigned long st_data_t; #elif SIZEOF_LONG_LONG == SIZEOF_VOIDP typedef unsigned LONG_LONG st_data_t; #else # error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<---- #endif #define ST_DATA_T_DEFINED #ifndef CHAR_BIT # ifdef HAVE_LIMITS_H # include # else # define CHAR_BIT 8 # endif #endif #ifndef _ # define _(args) args #endif #ifndef ANYARGS # ifdef __cplusplus # define ANYARGS ... # else # define ANYARGS # endif #endif typedef struct st_table st_table; typedef st_data_t st_index_t; typedef int st_compare_func(st_data_t, st_data_t); typedef st_index_t st_hash_func(st_data_t); typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; #define SIZEOF_ST_INDEX_T SIZEOF_VOIDP struct st_hash_type { int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */ st_index_t (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */ }; #define ST_INDEX_BITS (sizeof(st_index_t) * CHAR_BIT) struct st_table { const struct st_hash_type *type; st_index_t num_bins; unsigned int entries_packed : 1; #ifdef __GNUC__ __extension__ #endif st_index_t num_entries : ST_INDEX_BITS - 1; struct st_table_entry **bins; struct st_table_entry *head, *tail; }; #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; st_table *st_init_table(const struct st_hash_type *); st_table *st_init_table_with_size(const struct st_hash_type *, st_index_t); st_table *st_init_numtable(void); st_table *st_init_numtable_with_size(st_index_t); st_table *st_init_strtable(void); st_table *st_init_strtable_with_size(st_index_t); st_table *st_init_strcasetable(void); st_table *st_init_strcasetable_with_size(st_index_t); int st_delete(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */ int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); int st_insert(st_table *, st_data_t, st_data_t); int st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t)); int st_lookup(st_table *, st_data_t, st_data_t *); int st_get_key(st_table *, st_data_t, st_data_t *); int st_foreach(st_table *, int (*)(ANYARGS), st_data_t); int st_reverse_foreach(st_table *, int (*)(ANYARGS), st_data_t); void st_add_direct(st_table *, st_data_t, st_data_t); void st_free_table(st_table *); void st_cleanup_safe(st_table *, st_data_t); void st_clear(st_table *); st_table *st_copy(st_table *); int st_numcmp(st_data_t, st_data_t); st_index_t st_numhash(st_data_t); int st_strcasecmp(const char *s1, const char *s2); int st_strncasecmp(const char *s1, const char *s2, size_t n); size_t st_memsize(const st_table *); st_index_t st_hash(const void *ptr, size_t len, st_index_t h); st_index_t st_hash_uint32(st_index_t h, uint32_t i); st_index_t st_hash_uint(st_index_t h, st_index_t i); st_index_t st_hash_end(st_index_t h); st_index_t st_hash_start(st_index_t h); #define st_hash_start(h) ((st_index_t)(h)) #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_ST_H */ 0707010018444a000081a40000000000000000000000014b3b2ef200001a63000000b600010002ffffffffffffffff0000003100000000root/usr/local/include/ruby-1.9.1/ruby/defines.h/************************************************ defines.h - $Author: naruse $ created at: Wed May 18 00:21:44 JST 1994 ************************************************/ #ifndef RUBY_DEFINES_H #define RUBY_DEFINES_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #define RUBY #include #ifdef __cplusplus # ifndef HAVE_PROTOTYPES # define HAVE_PROTOTYPES 1 # endif # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #undef _ #ifdef HAVE_PROTOTYPES # define _(args) args #else # define _(args) () #endif #undef __ #ifdef HAVE_STDARG_PROTOTYPES # define __(args) args #else # define __(args) () #endif #ifdef __cplusplus #define ANYARGS ... #else #define ANYARGS #endif #define xmalloc ruby_xmalloc #define xmalloc2 ruby_xmalloc2 #define xcalloc ruby_xcalloc #define xrealloc ruby_xrealloc #define xrealloc2 ruby_xrealloc2 #define xfree ruby_xfree void *xmalloc(size_t); void *xmalloc2(size_t,size_t); void *xcalloc(size_t,size_t); void *xrealloc(void*,size_t); void *xrealloc2(void*,size_t,size_t); void xfree(void*); #define STRINGIZE(expr) STRINGIZE0(expr) #ifndef STRINGIZE0 #define STRINGIZE0(expr) #expr #endif #if SIZEOF_LONG_LONG > 0 # define LONG_LONG long long #elif SIZEOF___INT64 > 0 # define HAVE_LONG_LONG 1 # define LONG_LONG __int64 # undef SIZEOF_LONG_LONG # define SIZEOF_LONG_LONG SIZEOF___INT64 #endif #if SIZEOF_INT*2 <= SIZEOF_LONG_LONG # define BDIGIT unsigned int # define SIZEOF_BDIGITS SIZEOF_INT # define BDIGIT_DBL unsigned LONG_LONG # define BDIGIT_DBL_SIGNED LONG_LONG #elif SIZEOF_INT*2 <= SIZEOF_LONG # define BDIGIT unsigned int # define SIZEOF_BDIGITS SIZEOF_INT # define BDIGIT_DBL unsigned long # define BDIGIT_DBL_SIGNED long #elif SIZEOF_SHORT*2 <= SIZEOF_LONG # define BDIGIT unsigned short # define SIZEOF_BDIGITS SIZEOF_SHORT # define BDIGIT_DBL unsigned long # define BDIGIT_DBL_SIGNED long #else # define BDIGIT unsigned short # define SIZEOF_BDIGITS (SIZEOF_LONG/2) # define BDIGIT_DBL unsigned long # define BDIGIT_DBL_SIGNED long #endif #ifdef INFINITY # define HAVE_INFINITY #else /** @internal */ extern const unsigned char rb_infinity[]; # define INFINITY (*(float *)rb_infinity) #endif #ifdef NAN # define HAVE_NAN #else /** @internal */ extern const unsigned char rb_nan[]; # define NAN (*(float *)rb_nan) #endif #ifdef __CYGWIN__ #undef _WIN32 #endif #if defined(_WIN32) || defined(__EMX__) #define DOSISH 1 # define DOSISH_DRIVE_LETTER #endif #ifdef AC_APPLE_UNIVERSAL_BUILD #undef WORDS_BIGENDIAN #ifdef __BIG_ENDIAN__ #define WORDS_BIGENDIAN #endif #endif #ifdef __NeXT__ /* NextStep, OpenStep, Rhapsody */ #ifndef S_IRUSR #define S_IRUSR 0000400 /* read permission, owner */ #endif #ifndef S_IRGRP #define S_IRGRP 0000040 /* read permission, group */ #endif #ifndef S_IROTH #define S_IROTH 0000004 /* read permission, other */ #endif #ifndef S_IWUSR #define S_IWUSR 0000200 /* write permission, owner */ #endif #ifndef S_IWGRP #define S_IWGRP 0000020 /* write permission, group */ #endif #ifndef S_IWOTH #define S_IWOTH 0000002 /* write permission, other */ #endif #ifndef S_IXUSR #define S_IXUSR 0000100 /* execute/search permission, owner */ #endif #ifndef S_IXGRP #define S_IXGRP 0000010 /* execute/search permission, group */ #endif #ifndef S_IXOTH #define S_IXOTH 0000001 /* execute/search permission, other */ #endif #ifndef S_IRWXU #define S_IRWXU 0000700 /* read, write, execute permissions, owner */ #endif #ifndef S_IRWXG #define S_IRWXG 0000070 /* read, write, execute permissions, group */ #endif #ifndef S_IRWXO #define S_IRWXO 0000007 /* read, write, execute permissions, other */ #endif #ifndef S_ISBLK #define S_ISBLK(mode) (((mode) & (0170000)) == (0060000)) #endif #ifndef S_ISCHR #define S_ISCHR(mode) (((mode) & (0170000)) == (0020000)) #endif #ifndef S_ISDIR #define S_ISDIR(mode) (((mode) & (0170000)) == (0040000)) #endif #ifndef S_ISFIFO #define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000)) #endif #ifndef S_ISREG #define S_ISREG(mode) (((mode) & (0170000)) == (0100000)) #endif #ifndef __APPLE__ /* NextStep, OpenStep (but not Rhapsody) */ #ifndef GETPGRP_VOID #define GETPGRP_VOID 1 #endif #ifndef WNOHANG #define WNOHANG 01 #endif #ifndef WUNTRACED #define WUNTRACED 02 #endif #ifndef X_OK #define X_OK 1 #endif #endif /* __APPLE__ */ #endif /* NeXT */ #ifdef _WIN32 #include "ruby/win32.h" #endif #if defined(__BEOS__) && !defined(__HAIKU__) && !defined(BONE) #include /* intern.h needs fd_set definition */ #elif defined (__SYMBIAN32__) && defined (HAVE_SYS_SELECT_H) # include #endif #ifdef __SYMBIAN32__ # define FALSE 0 # define TRUE 1 #endif #ifdef RUBY_EXPORT #undef RUBY_EXTERN #ifndef FALSE # define FALSE 0 #elif FALSE # error FALSE must be false #endif #ifndef TRUE # define TRUE 1 #elif !TRUE # error TRUE must be true #endif #endif #ifndef RUBY_EXTERN #define RUBY_EXTERN extern #endif #ifndef EXTERN #define EXTERN RUBY_EXTERN /* deprecated */ #endif #ifndef RUBY_MBCHAR_MAXSIZE #define RUBY_MBCHAR_MAXSIZE INT_MAX /* MB_CUR_MAX will not work well in C locale */ #endif #if defined(sparc) || defined(__sparc__) static inline void flush_register_windows(void) { asm #ifdef __GNUC__ volatile #endif # if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) ("flushw") # else ("ta 0x03") # endif /* trap always to flush register windows if we are on a Sparc system */ ; } # define FLUSH_REGISTER_WINDOWS flush_register_windows() #elif defined(__ia64) void *rb_ia64_bsp(void); void rb_ia64_flushrs(void); # define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs() #else # define FLUSH_REGISTER_WINDOWS ((void)0) #endif #if defined(DOSISH) #define PATH_SEP ";" #else #define PATH_SEP ":" #endif #define PATH_SEP_CHAR PATH_SEP[0] #define PATH_ENV "PATH" #if defined(DOSISH) && !defined(__EMX__) #define ENV_IGNORECASE #endif #ifndef CASEFOLD_FILESYSTEM # if defined DOSISH # define CASEFOLD_FILESYSTEM 1 # else # define CASEFOLD_FILESYSTEM 0 # endif #endif #ifndef DLEXT_MAXLEN #define DLEXT_MAXLEN 4 #endif #ifndef RUBY_PLATFORM #define RUBY_PLATFORM "unknown-unknown" #endif #ifndef RUBY_ALIAS_FUNCTION_TYPE #define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args) \ type prot {return name args;} #endif #ifndef RUBY_ALIAS_FUNCTION_VOID #define RUBY_ALIAS_FUNCTION_VOID(prot, name, args) \ void prot {name args;} #endif #ifndef RUBY_ALIAS_FUNCTION #define RUBY_ALIAS_FUNCTION(prot, name, args) \ RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args) #endif #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_DEFINES_H */ 07070100184457000081a40000000000000000000000014bfb518a00000339000000b600010002ffffffffffffffff0000002c00000000root/usr/local/include/ruby-1.9.1/ruby/vm.h/********************************************************************** ruby/vm.h - $Author: nobu $ created at: Sat May 31 15:17:36 2008 Copyright (C) 2008 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_VM_H #define RUBY_VM_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif /* Place holder. * * We will prepare VM creation/control APIs on 1.9.2 or later. * If you have an interest about it, please see mvm branch. * http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/ */ /* VM type declaration */ typedef struct rb_vm_struct ruby_vm_t; /* core API */ int ruby_vm_destruct(ruby_vm_t *vm); #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_VM_H */ 0707010018444b000081a40000000000000000000000014dc8deaf00000371000000b600010002ffffffffffffffff0000003000000000root/usr/local/include/ruby-1.9.1/ruby/digest.h/************************************************ digest.h - header file for ruby digest modules $Author: akr $ created at: Fri May 25 08:54:56 JST 2001 Copyright (C) 2001-2006 Akinori MUSHA $RoughId: digest.h,v 1.3 2001/07/13 15:38:27 knu Exp $ $Id: digest.h 25189 2009-10-02 12:04:37Z akr $ ************************************************/ #include "ruby.h" #define RUBY_DIGEST_API_VERSION 2 typedef void (*rb_digest_hash_init_func_t)(void *); typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t); typedef void (*rb_digest_hash_finish_func_t)(void *, unsigned char *); typedef struct { int api_version; size_t digest_len; size_t block_len; size_t ctx_size; rb_digest_hash_init_func_t init_func; rb_digest_hash_update_func_t update_func; rb_digest_hash_finish_func_t finish_func; } rb_digest_metadata_t; 07070100184453000081a40000000000000000000000014ca330420000a70c000000b600010002ffffffffffffffff0000002e00000000root/usr/local/include/ruby-1.9.1/ruby/ruby.h/********************************************************************** ruby/ruby.h - $Author: yugui $ created at: Thu Jun 10 14:26:32 JST 1993 Copyright (C) 1993-2008 Yukihiro Matsumoto Copyright (C) 2000 Network Applied Communication Laboratory, Inc. Copyright (C) 2000 Information-technology Promotion Agency, Japan **********************************************************************/ #ifndef RUBY_RUBY_H #define RUBY_RUBY_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #ifndef RUBY_LIB_PREFIX #include "ruby/config.h" #ifdef RUBY_EXTCONF_H #include RUBY_EXTCONF_H #endif #endif #define NORETURN_STYLE_NEW 1 #ifndef NORETURN # define NORETURN(x) x #endif #ifndef DEPRECATED # define DEPRECATED(x) x #endif #ifndef NOINLINE # define NOINLINE(x) x #endif #ifdef __GNUC__ #define PRINTF_ARGS(decl, string_index, first_to_check) \ decl __attribute__((format(printf, string_index, first_to_check))) #else #define PRINTF_ARGS(decl, string_index, first_to_check) decl #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #else # include #endif #ifdef HAVE_INTRINSICS_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #include #include #include #include "defines.h" #if defined(HAVE_ALLOCA_H) #include #else # ifdef _AIX #pragma alloca # endif #endif #if defined HAVE_UINTPTR_T && 0 typedef uintptr_t VALUE; typedef uintptr_t ID; # define SIGNED_VALUE intptr_t # define SIZEOF_VALUE SIZEOF_UINTPTR_T # undef PRI_VALUE_PREFIX #elif SIZEOF_LONG == SIZEOF_VOIDP typedef unsigned long VALUE; typedef unsigned long ID; # define SIGNED_VALUE long # define SIZEOF_VALUE SIZEOF_LONG # define PRI_VALUE_PREFIX "l" #elif SIZEOF_LONG_LONG == SIZEOF_VOIDP typedef unsigned LONG_LONG VALUE; typedef unsigned LONG_LONG ID; # define SIGNED_VALUE LONG_LONG # define LONG_LONG_VALUE 1 # define SIZEOF_VALUE SIZEOF_LONG_LONG # define PRI_VALUE_PREFIX "ll" #else # error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<---- #endif typedef char ruby_check_sizeof_int[SIZEOF_INT == sizeof(int) ? 1 : -1]; typedef char ruby_check_sizeof_long[SIZEOF_LONG == sizeof(long) ? 1 : -1]; #ifdef SIZEOF_LONG_LONG typedef char ruby_check_sizeof_long_long[SIZEOF_LONG_LONG == sizeof(LONG_LONG) ? 1 : -1]; #endif typedef char ruby_check_sizeof_voidp[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1]; #if defined PRIdPTR && !defined PRI_VALUE_PREFIX #define PRIdVALUE PRIdPTR #define PRIiVALUE PRIiPTR #define PRIoVALUE PRIoPTR #define PRIuVALUE PRIuPTR #define PRIxVALUE PRIxPTR #define PRIXVALUE PRIXPTR #else #define PRIdVALUE PRI_VALUE_PREFIX"d" #define PRIiVALUE PRI_VALUE_PREFIX"i" #define PRIoVALUE PRI_VALUE_PREFIX"o" #define PRIuVALUE PRI_VALUE_PREFIX"u" #define PRIxVALUE PRI_VALUE_PREFIX"x" #define PRIXVALUE PRI_VALUE_PREFIX"X" #endif #ifndef PRI_VALUE_PREFIX # define PRI_VALUE_PREFIX "" #endif #ifndef PRI_TIMET_PREFIX # if SIZEOF_TIME_T == SIZEOF_INT # define PRI_TIMET_PREFIX # elif SIZEOF_TIME_T == SIZEOF_LONG # define PRI_TIMET_PREFIX "l" # elif SIZEOF_TIME_T == SIZEOF_LONG_LONG # define PRI_TIMET_PREFIX "ll" # endif #endif #if defined PRIdPTR # define PRI_PTRDIFF_PREFIX "t" #elif SIZEOF_PTRDIFF_T == SIZEOF_INT # define PRI_PTRDIFF_PREFIX #elif SIZEOF_PTRDIFF_T == SIZEOF_LONG # define PRI_PTRDIFF_PREFIX "l" #elif SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG # define PRI_PTRDIFF_PREFIX "ll" #endif #define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d" #define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i" #define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o" #define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u" #define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x" #define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X" #if defined PRIdPTR # define PRI_SIZE_PREFIX "z" #elif SIZEOF_SIZE_T == SIZEOF_INT # define PRI_SIZE_PREFIX #elif SIZEOF_SIZE_T == SIZEOF_LONG # define PRI_SIZE_PREFIX "l" #elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG # define PRI_SIZE_PREFIX "ll" #endif #define PRIdSIZE PRI_SIZE_PREFIX"d" #define PRIiSIZE PRI_SIZE_PREFIX"i" #define PRIoSIZE PRI_SIZE_PREFIX"o" #define PRIuSIZE PRI_SIZE_PREFIX"u" #define PRIxSIZE PRI_SIZE_PREFIX"x" #define PRIXSIZE PRI_SIZE_PREFIX"X" #ifdef __STDC__ # include #else # ifndef LONG_MAX # ifdef HAVE_LIMITS_H # include # else /* assuming 32bit(2's compliment) long */ # define LONG_MAX 2147483647 # endif # endif # ifndef LONG_MIN # define LONG_MIN (-LONG_MAX-1) # endif # ifndef CHAR_BIT # define CHAR_BIT 8 # endif #endif #ifdef HAVE_LONG_LONG # ifndef LLONG_MAX # ifdef LONG_LONG_MAX # define LLONG_MAX LONG_LONG_MAX # else # ifdef _I64_MAX # define LLONG_MAX _I64_MAX # else /* assuming 64bit(2's complement) long long */ # define LLONG_MAX 9223372036854775807LL # endif # endif # endif # ifndef LLONG_MIN # ifdef LONG_LONG_MIN # define LLONG_MIN LONG_LONG_MIN # else # ifdef _I64_MIN # define LLONG_MIN _I64_MIN # else # define LLONG_MIN (-LLONG_MAX-1) # endif # endif # endif #endif #define FIXNUM_MAX (LONG_MAX>>1) #define FIXNUM_MIN RSHIFT((long)LONG_MIN,1) #define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG)) #define LONG2FIX(i) INT2FIX(i) #define rb_fix_new(v) INT2FIX(v) VALUE rb_int2inum(SIGNED_VALUE); #define rb_int_new(v) rb_int2inum(v) VALUE rb_uint2inum(VALUE); #define rb_uint_new(v) rb_uint2inum(v) #ifdef HAVE_LONG_LONG VALUE rb_ll2inum(LONG_LONG); #define LL2NUM(v) rb_ll2inum(v) VALUE rb_ull2inum(unsigned LONG_LONG); #define ULL2NUM(v) rb_ull2inum(v) #endif #if SIZEOF_OFF_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) # define OFFT2NUM(v) LL2NUM(v) #elif SIZEOF_OFF_T == SIZEOF_LONG # define OFFT2NUM(v) LONG2NUM(v) #else # define OFFT2NUM(v) INT2NUM(v) #endif #if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) # define SIZET2NUM(v) ULL2NUM(v) # define SSIZET2NUM(v) LL2NUM(v) #elif SIZEOF_SIZE_T == SIZEOF_LONG # define SIZET2NUM(v) ULONG2NUM(v) # define SSIZET2NUM(v) LONG2NUM(v) #else # define SIZET2NUM(v) UINT2NUM(v) # define SSIZET2NUM(v) INT2NUM(v) #endif #ifndef SSIZE_MAX # if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) # define SSIZE_MAX LLONG_MAX # define SSIZE_MIN LLONG_MIN # elif SIZEOF_SIZE_T == SIZEOF_LONG # define SSIZE_MAX LONG_MAX # define SSIZE_MIN LONG_MIN # elif SIZEOF_SIZE_T == SIZEOF_INT # define SSIZE_MAX INT_MAX # define SSIZE_MIN INT_MIN # else # define SSIZE_MAX SHRT_MAX # define SSIZE_MIN SHRT_MIN # endif #endif #if SIZEOF_INT < SIZEOF_VALUE NORETURN(void rb_out_of_int(SIGNED_VALUE num)); #endif #if SIZEOF_INT < SIZEOF_LONG #define rb_long2int_internal(n, i) \ int i = (int)(n); \ if ((long)i != (n)) rb_out_of_int(n) #ifdef __GNUC__ #define rb_long2int(n) __extension__ ({long i2l_n = (n); rb_long2int_internal(i2l_n, i2l_i); i2l_i;}) #else static inline int rb_long2int(long n) {rb_long2int_internal(n, i); return i;} #endif #else #define rb_long2int(n) ((int)(n)) #endif #ifndef PIDT2NUM #define PIDT2NUM(v) LONG2NUM(v) #endif #ifndef NUM2PIDT #define NUM2PIDT(v) NUM2LONG(v) #endif #ifndef UIDT2NUM #define UIDT2NUM(v) LONG2NUM(v) #endif #ifndef NUM2UIDT #define NUM2UIDT(v) NUM2LONG(v) #endif #ifndef GIDT2NUM #define GIDT2NUM(v) LONG2NUM(v) #endif #ifndef NUM2GIDT #define NUM2GIDT(v) NUM2LONG(v) #endif #define FIX2LONG(x) RSHIFT((SIGNED_VALUE)x,1) #define FIX2ULONG(x) ((((VALUE)(x))>>1)&LONG_MAX) #define FIXNUM_P(f) (((SIGNED_VALUE)(f))&FIXNUM_FLAG) #define POSFIXABLE(f) ((f) < FIXNUM_MAX+1) #define NEGFIXABLE(f) ((f) >= FIXNUM_MIN) #define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) #define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) #define SYMBOL_P(x) (((VALUE)(x)&~(~(VALUE)0<flags & T_MASK) static inline int rb_type(VALUE obj); #define TYPE(x) rb_type((VALUE)(x)) #ifdef __GNUC__ #define RB_GC_GUARD_PTR(ptr) \ __extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); rb_gc_guarded_ptr;}) #else #ifdef _MSC_VER #pragma optimize("", off) #endif static inline volatile VALUE *rb_gc_guarded_ptr(volatile VALUE *ptr) {return ptr;} #ifdef _MSC_VER #pragma optimize("", on) #endif #define RB_GC_GUARD_PTR(ptr) rb_gc_guarded_ptr(ptr) #endif #define RB_GC_GUARD(v) (*RB_GC_GUARD_PTR(&(v))) void rb_check_type(VALUE,int); #define Check_Type(v,t) rb_check_type((VALUE)(v),t) VALUE rb_str_to_str(VALUE); VALUE rb_string_value(volatile VALUE*); char *rb_string_value_ptr(volatile VALUE*); char *rb_string_value_cstr(volatile VALUE*); #define StringValue(v) rb_string_value(&(v)) #define StringValuePtr(v) rb_string_value_ptr(&(v)) #define StringValueCStr(v) rb_string_value_cstr(&(v)) void rb_check_safe_obj(VALUE); DEPRECATED(void rb_check_safe_str(VALUE)); #define SafeStringValue(v) do {\ StringValue(v);\ rb_check_safe_obj(v);\ } while (0) /* obsolete macro - use SafeStringValue(v) */ #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v)) VALUE rb_str_export(VALUE); #define ExportStringValue(v) do {\ SafeStringValue(v);\ (v) = rb_str_export(v);\ } while (0) VALUE rb_str_export_locale(VALUE); VALUE rb_get_path(VALUE); #define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v)) VALUE rb_get_path_no_checksafe(VALUE); #define FilePathStringValue(v) ((v) = rb_get_path_no_checksafe(v)) void rb_secure(int); int rb_safe_level(void); void rb_set_safe_level(int); void rb_set_safe_level_force(int); void rb_secure_update(VALUE); NORETURN(void rb_insecure_operation(void)); VALUE rb_errinfo(void); void rb_set_errinfo(VALUE); SIGNED_VALUE rb_num2long(VALUE); VALUE rb_num2ulong(VALUE); #define NUM2LONG_internal(x) (FIXNUM_P(x) ? FIX2LONG(x) : rb_num2long(x)) #ifdef __GNUC__ #define NUM2LONG(x) \ __extension__ ({VALUE num2long_x = (x); NUM2LONG_internal(num2long_x);}) #else static inline long NUM2LONG(VALUE x) { return NUM2LONG_internal(x); } #endif #define NUM2ULONG(x) rb_num2ulong((VALUE)x) #if SIZEOF_INT < SIZEOF_LONG long rb_num2int(VALUE); long rb_fix2int(VALUE); #define FIX2INT(x) ((int)rb_fix2int((VALUE)x)) #define NUM2INT_internal(x) (FIXNUM_P(x) ? FIX2INT(x) : (int)rb_num2int(x)) #ifdef __GNUC__ #define NUM2INT(x) \ __extension__ ({VALUE num2int_x = (x); NUM2INT_internal(num2int_x);}) #else static inline int NUM2INT(VALUE x) { return NUM2INT_internal(x); } #endif unsigned long rb_num2uint(VALUE); #define NUM2UINT(x) ((unsigned int)rb_num2uint(x)) unsigned long rb_fix2uint(VALUE); #define FIX2UINT(x) ((unsigned int)rb_fix2uint(x)) #else #define NUM2INT(x) ((int)NUM2LONG(x)) #define NUM2UINT(x) ((unsigned int)NUM2ULONG(x)) #define FIX2INT(x) ((int)FIX2LONG(x)) #define FIX2UINT(x) ((unsigned int)FIX2ULONG(x)) #endif #ifdef HAVE_LONG_LONG LONG_LONG rb_num2ll(VALUE); unsigned LONG_LONG rb_num2ull(VALUE); # define NUM2LL_internal(x) (FIXNUM_P(x) ? FIX2LONG(x) : rb_num2ll(x)) # ifdef __GNUC__ # define NUM2LL(x) \ __extension__ ({VALUE num2ll_x = (x); NUM2LL_internal(num2ll_x);}) # else static inline LONG_LONG NUM2LL(VALUE x) { return NUM2LL_internal(x); } # endif # define NUM2ULL(x) rb_num2ull((VALUE)x) #endif #if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG # define NUM2OFFT(x) ((off_t)NUM2LL(x)) #else # define NUM2OFFT(x) NUM2LONG(x) #endif #if defined(HAVE_LONG_LONG) && SIZEOF_SIZE_T > SIZEOF_LONG # define NUM2SIZET(x) ((size_t)NUM2ULL(x)) # define NUM2SSIZET(x) ((size_t)NUM2LL(x)) #else # define NUM2SIZET(x) NUM2ULONG(x) # define NUM2SSIZET(x) NUM2LONG(x) #endif double rb_num2dbl(VALUE); #define NUM2DBL(x) rb_num2dbl((VALUE)(x)) VALUE rb_uint2big(VALUE); VALUE rb_int2big(SIGNED_VALUE); VALUE rb_newobj(void); #define NEWOBJ(obj,type) type *obj = (type*)rb_newobj() #define OBJSETUP(obj,c,t) do {\ RBASIC(obj)->flags = (t);\ RBASIC(obj)->klass = (c);\ if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT | FL_UNTRUSTED);\ } while (0) #define CLONESETUP(clone,obj) do {\ OBJSETUP(clone,rb_singleton_class_clone((VALUE)obj),RBASIC(obj)->flags);\ rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\ if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)clone,(VALUE)obj);\ } while (0) #define DUPSETUP(dup,obj) do {\ OBJSETUP(dup,rb_obj_class(obj), (RBASIC(obj)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT|FL_UNTRUSTED)); \ if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)dup,(VALUE)obj);\ } while (0) struct RBasic { VALUE flags; VALUE klass; }; #define ROBJECT_EMBED_LEN_MAX 3 struct RObject { struct RBasic basic; union { struct { long numiv; VALUE *ivptr; struct st_table *iv_index_tbl; /* shortcut for RCLASS_IV_INDEX_TBL(rb_obj_class(obj)) */ } heap; VALUE ary[ROBJECT_EMBED_LEN_MAX]; } as; }; #define ROBJECT_EMBED FL_USER1 #define ROBJECT_NUMIV(o) \ ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ ROBJECT_EMBED_LEN_MAX : \ ROBJECT(o)->as.heap.numiv) #define ROBJECT_IVPTR(o) \ ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ ROBJECT(o)->as.ary : \ ROBJECT(o)->as.heap.ivptr) #define ROBJECT_IV_INDEX_TBL(o) \ ((RBASIC(o)->flags & ROBJECT_EMBED) ? \ RCLASS_IV_INDEX_TBL(rb_obj_class(o)) : \ ROBJECT(o)->as.heap.iv_index_tbl) /** @internal */ typedef struct { VALUE super; struct st_table *iv_tbl; } rb_classext_t; struct RClass { struct RBasic basic; rb_classext_t *ptr; struct st_table *m_tbl; struct st_table *iv_index_tbl; }; #define RCLASS_IV_TBL(c) (RCLASS(c)->ptr->iv_tbl) #define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl) #define RCLASS_SUPER(c) (RCLASS(c)->ptr->super) #define RCLASS_IV_INDEX_TBL(c) (RCLASS(c)->iv_index_tbl) #define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m) #define RMODULE_M_TBL(m) RCLASS_M_TBL(m) #define RMODULE_SUPER(m) RCLASS_SUPER(m) struct RFloat { struct RBasic basic; double float_value; }; #define RFLOAT_VALUE(v) (RFLOAT(v)->float_value) #define DBL2NUM(dbl) rb_float_new(dbl) #define ELTS_SHARED FL_USER2 #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) struct RString { struct RBasic basic; union { struct { long len; char *ptr; union { long capa; VALUE shared; } aux; } heap; char ary[RSTRING_EMBED_LEN_MAX + 1]; } as; }; #define RSTRING_NOEMBED FL_USER1 #define RSTRING_EMBED_LEN_MASK (FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6) #define RSTRING_EMBED_LEN_SHIFT (FL_USHIFT+2) #define RSTRING_LEN(str) \ (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : \ RSTRING(str)->as.heap.len) #define RSTRING_PTR(str) \ (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ RSTRING(str)->as.ary : \ RSTRING(str)->as.heap.ptr) #define RSTRING_END(str) \ (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ (RSTRING(str)->as.ary + \ ((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))) : \ (RSTRING(str)->as.heap.ptr + RSTRING(str)->as.heap.len)) #define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str)) #define RARRAY_EMBED_LEN_MAX 3 struct RArray { struct RBasic basic; union { struct { long len; union { long capa; VALUE shared; } aux; VALUE *ptr; } heap; VALUE ary[RARRAY_EMBED_LEN_MAX]; } as; }; #define RARRAY_EMBED_FLAG FL_USER1 /* FL_USER2 is for ELTS_SHARED */ #define RARRAY_EMBED_LEN_MASK (FL_USER4|FL_USER3) #define RARRAY_EMBED_LEN_SHIFT (FL_USHIFT+3) #define RARRAY_LEN(a) \ ((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? \ (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \ (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : \ RARRAY(a)->as.heap.len) #define RARRAY_PTR(a) \ ((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? \ RARRAY(a)->as.ary : \ RARRAY(a)->as.heap.ptr) #define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary)) struct RRegexp { struct RBasic basic; struct re_pattern_buffer *ptr; VALUE src; unsigned long usecnt; }; #define RREGEXP_SRC(r) RREGEXP(r)->src #define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src) #define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src) #define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src) struct RHash { struct RBasic basic; struct st_table *ntbl; /* possibly 0 */ int iter_lev; VALUE ifnone; }; /* RHASH_TBL allocates st_table if not available. */ #define RHASH_TBL(h) rb_hash_tbl(h) #define RHASH_ITER_LEV(h) (RHASH(h)->iter_lev) #define RHASH_IFNONE(h) (RHASH(h)->ifnone) #define RHASH_SIZE(h) (RHASH(h)->ntbl ? RHASH(h)->ntbl->num_entries : 0) #define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0) struct RFile { struct RBasic basic; struct rb_io_t *fptr; }; struct RRational { struct RBasic basic; VALUE num; VALUE den; }; struct RComplex { struct RBasic basic; VALUE real; VALUE imag; }; struct RData { struct RBasic basic; void (*dmark)(void*); void (*dfree)(void*); void *data; }; typedef struct rb_data_type_struct { const char *wrap_struct_name; void (*dmark)(void*); void (*dfree)(void*); size_t (*dsize)(const void *); void *reserved[3]; /* For future extension. This array *must* be filled with ZERO. */ void *data; /* This area can be used for any purpose by a programmer who define the type. */ } rb_data_type_t; struct RTypedData { struct RBasic basic; const rb_data_type_t *type; VALUE typed_flag; /* 1 or not */ void *data; }; #define DATA_PTR(dta) (RDATA(dta)->data) #define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1) #define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type) #define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data) /* #define RUBY_DATA_FUNC(func) ((void (*)(void*))func) */ typedef void (*RUBY_DATA_FUNC)(void*); VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC); VALUE rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *); int rb_typeddata_is_kind_of(VALUE, const rb_data_type_t *); void *rb_check_typeddata(VALUE, const rb_data_type_t *); #define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),t) #define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1) #define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0) #define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE #define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE #define Data_Wrap_Struct(klass,mark,free,sval)\ rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free) #define Data_Make_Struct(klass,type,mark,free,sval) (\ sval = ALLOC(type),\ memset(sval, 0, sizeof(type)),\ Data_Wrap_Struct(klass,mark,free,sval)\ ) #define TypedData_Wrap_Struct(klass,data_type,sval)\ rb_data_typed_object_alloc(klass,sval,data_type) #define TypedData_Make_Struct(klass, type, data_type, sval) (\ sval = ALLOC(type),\ memset(sval, 0, sizeof(type)),\ TypedData_Wrap_Struct(klass,data_type,sval)\ ) #define Data_Get_Struct(obj,type,sval) do {\ Check_Type(obj, T_DATA); \ sval = (type*)DATA_PTR(obj);\ } while (0) #define TypedData_Get_Struct(obj,type,data_type,sval) do {\ sval = (type*)rb_check_typeddata(obj, data_type); \ } while (0) #define RSTRUCT_EMBED_LEN_MAX 3 struct RStruct { struct RBasic basic; union { struct { long len; VALUE *ptr; } heap; VALUE ary[RSTRUCT_EMBED_LEN_MAX]; } as; }; #define RSTRUCT_EMBED_LEN_MASK (FL_USER2|FL_USER1) #define RSTRUCT_EMBED_LEN_SHIFT (FL_USHIFT+1) #define RSTRUCT_LEN(st) \ ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & \ (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : \ RSTRUCT(st)->as.heap.len) #define RSTRUCT_PTR(st) \ ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ RSTRUCT(st)->as.ary : \ RSTRUCT(st)->as.heap.ptr) #define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st)) #define RBIGNUM_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(BDIGIT))) struct RBignum { struct RBasic basic; union { struct { long len; BDIGIT *digits; } heap; BDIGIT ary[RBIGNUM_EMBED_LEN_MAX]; } as; }; #define RBIGNUM_SIGN_BIT FL_USER1 /* sign: positive:1, negative:0 */ #define RBIGNUM_SIGN(b) ((RBASIC(b)->flags & RBIGNUM_SIGN_BIT) != 0) #define RBIGNUM_SET_SIGN(b,sign) \ ((sign) ? (RBASIC(b)->flags |= RBIGNUM_SIGN_BIT) \ : (RBASIC(b)->flags &= ~RBIGNUM_SIGN_BIT)) #define RBIGNUM_POSITIVE_P(b) RBIGNUM_SIGN(b) #define RBIGNUM_NEGATIVE_P(b) (!RBIGNUM_SIGN(b)) #define RBIGNUM_EMBED_FLAG FL_USER2 #define RBIGNUM_EMBED_LEN_MASK (FL_USER5|FL_USER4|FL_USER3) #define RBIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3) #define RBIGNUM_LEN(b) \ ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ (long)((RBASIC(b)->flags >> RBIGNUM_EMBED_LEN_SHIFT) & \ (RBIGNUM_EMBED_LEN_MASK >> RBIGNUM_EMBED_LEN_SHIFT)) : \ RBIGNUM(b)->as.heap.len) /* LSB:RBIGNUM_DIGITS(b)[0], MSB:RBIGNUM_DIGITS(b)[RBIGNUM_LEN(b)-1] */ #define RBIGNUM_DIGITS(b) \ ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ RBIGNUM(b)->as.ary : \ RBIGNUM(b)->as.heap.digits) #define RBIGNUM_LENINT(b) rb_long2int(RBIGNUM_LEN(b)) #define R_CAST(st) (struct st*) #define RBASIC(obj) (R_CAST(RBasic)(obj)) #define ROBJECT(obj) (R_CAST(RObject)(obj)) #define RCLASS(obj) (R_CAST(RClass)(obj)) #define RMODULE(obj) RCLASS(obj) #define RFLOAT(obj) (R_CAST(RFloat)(obj)) #define RSTRING(obj) (R_CAST(RString)(obj)) #define RREGEXP(obj) (R_CAST(RRegexp)(obj)) #define RARRAY(obj) (R_CAST(RArray)(obj)) #define RHASH(obj) (R_CAST(RHash)(obj)) #define RDATA(obj) (R_CAST(RData)(obj)) #define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj)) #define RSTRUCT(obj) (R_CAST(RStruct)(obj)) #define RBIGNUM(obj) (R_CAST(RBignum)(obj)) #define RFILE(obj) (R_CAST(RFile)(obj)) #define RRATIONAL(obj) (R_CAST(RRational)(obj)) #define RCOMPLEX(obj) (R_CAST(RComplex)(obj)) #define FL_SINGLETON FL_USER0 #define FL_MARK (((VALUE)1)<<5) #define FL_RESERVED (((VALUE)1)<<6) /* will be used in the future GC */ #define FL_FINALIZE (((VALUE)1)<<7) #define FL_TAINT (((VALUE)1)<<8) #define FL_UNTRUSTED (((VALUE)1)<<9) #define FL_EXIVAR (((VALUE)1)<<10) #define FL_FREEZE (((VALUE)1)<<11) #define FL_USHIFT 12 #define FL_USER0 (((VALUE)1)<<(FL_USHIFT+0)) #define FL_USER1 (((VALUE)1)<<(FL_USHIFT+1)) #define FL_USER2 (((VALUE)1)<<(FL_USHIFT+2)) #define FL_USER3 (((VALUE)1)<<(FL_USHIFT+3)) #define FL_USER4 (((VALUE)1)<<(FL_USHIFT+4)) #define FL_USER5 (((VALUE)1)<<(FL_USHIFT+5)) #define FL_USER6 (((VALUE)1)<<(FL_USHIFT+6)) #define FL_USER7 (((VALUE)1)<<(FL_USHIFT+7)) #define FL_USER8 (((VALUE)1)<<(FL_USHIFT+8)) #define FL_USER9 (((VALUE)1)<<(FL_USHIFT+9)) #define FL_USER10 (((VALUE)1)<<(FL_USHIFT+10)) #define FL_USER11 (((VALUE)1)<<(FL_USHIFT+11)) #define FL_USER12 (((VALUE)1)<<(FL_USHIFT+12)) #define FL_USER13 (((VALUE)1)<<(FL_USHIFT+13)) #define FL_USER14 (((VALUE)1)<<(FL_USHIFT+14)) #define FL_USER15 (((VALUE)1)<<(FL_USHIFT+15)) #define FL_USER16 (((VALUE)1)<<(FL_USHIFT+16)) #define FL_USER17 (((VALUE)1)<<(FL_USHIFT+17)) #define FL_USER18 (((VALUE)1)<<(FL_USHIFT+18)) #define FL_USER19 (((VALUE)1)<<(FL_USHIFT+19)) #define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x)) #define FL_ABLE(x) (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) != T_NODE) #define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0) #define FL_ANY(x,f) FL_TEST(x,f) #define FL_ALL(x,f) (FL_TEST(x,f) == (f)) #define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0) #define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0) #define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0) #define OBJ_TAINTED(x) (!!FL_TEST((x), FL_TAINT)) #define OBJ_TAINT(x) FL_SET((x), FL_TAINT) #define OBJ_UNTRUSTED(x) (!!FL_TEST((x), FL_UNTRUSTED)) #define OBJ_UNTRUST(x) FL_SET((x), FL_UNTRUSTED) #define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & (FL_TAINT | FL_UNTRUSTED);} while (0) #define OBJ_FROZEN(x) (!!FL_TEST((x), FL_FREEZE)) #define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE) #if SIZEOF_INT < SIZEOF_LONG # define INT2NUM(v) INT2FIX((int)(v)) # define UINT2NUM(v) LONG2FIX((unsigned int)(v)) #else # define INT2NUM_internal(v) (FIXABLE(v) ? INT2FIX(v) : rb_int2big(v)) # ifdef __GNUC__ # define INT2NUM(v) __extension__ ({int int2num_v = (v); INT2NUM_internal(int2num_v);}) # else static inline VALUE INT2NUM(int v) { return INT2NUM_internal(v); } # endif # define UINT2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v)) # ifdef __GNUC__ # define UINT2NUM(v) __extension__ ({unsigned int uint2num_v = (v); UINT2NUM_internal(uint2num_v);}) # else static inline VALUE UINT2NUM(unsigned int v) { return UINT2NUM_internal(v); } # endif #endif #define LONG2NUM_internal(v) (FIXABLE(v) ? LONG2FIX(v) : rb_int2big(v)) #ifdef __GNUC__ # define LONG2NUM(v) __extension__ ({long long2num_v = (v); LONG2NUM_internal(long2num_v);}) #else static inline VALUE LONG2NUM(long v) { return LONG2NUM_internal(v); } #endif #define ULONG2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v)) #ifdef __GNUC__ # define ULONG2NUM(v) __extension__ ({unsigned long ulong2num_v = (v); ULONG2NUM_internal(ulong2num_v);}) #else static inline VALUE ULONG2NUM(unsigned long v) { return ULONG2NUM_internal(v); } #endif #define NUM2CHR_internal(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\ RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff)) #ifdef __GNUC__ # define NUM2CHR(x) __extension__ ({VALUE num2chr_x = (x); NUM2CHR_internal(num2chr_x);}) #else static inline char NUM2CHR(VALUE x) { return NUM2CHR_internal(x); } #endif #define CHR2FIX(x) INT2FIX((long)((x)&0xff)) #define ALLOC_N(type,n) (type*)xmalloc2((n),sizeof(type)) #define ALLOC(type) (type*)xmalloc(sizeof(type)) #define REALLOC_N(var,type,n) (var)=(type*)xrealloc2((char*)(var),(n),sizeof(type)) #define ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n)) #define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n)) #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n)) #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n)) void rb_obj_infect(VALUE,VALUE); typedef int ruby_glob_func(const char*,VALUE, void*); void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE); int ruby_glob(const char*,int,ruby_glob_func*,VALUE); int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE); VALUE rb_define_class(const char*,VALUE); VALUE rb_define_module(const char*); VALUE rb_define_class_under(VALUE, const char*, VALUE); VALUE rb_define_module_under(VALUE, const char*); void rb_include_module(VALUE,VALUE); void rb_extend_object(VALUE,VALUE); struct rb_global_variable; typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar); typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar); typedef void rb_gvar_marker_t(VALUE *var); VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_undef_marker(VALUE *var); VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_val_marker(VALUE *var); VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar); void rb_gvar_var_marker(VALUE *var); void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar); void rb_define_variable(const char*,VALUE*); void rb_define_virtual_variable(const char*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); void rb_define_readonly_variable(const char*,VALUE*); void rb_define_const(VALUE,const char*,VALUE); void rb_define_global_const(const char*,VALUE); #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))func) void rb_define_method(VALUE,const char*,VALUE(*)(ANYARGS),int); void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int); void rb_define_global_function(const char*,VALUE(*)(ANYARGS),int); void rb_undef_method(VALUE,const char*); void rb_define_alias(VALUE,const char*,const char*); void rb_define_attr(VALUE,const char*,int,int); void rb_global_variable(VALUE*); void rb_gc_register_mark_object(VALUE); void rb_gc_register_address(VALUE*); void rb_gc_unregister_address(VALUE*); ID rb_intern(const char*); ID rb_intern2(const char*, long); ID rb_intern_str(VALUE str); const char *rb_id2name(ID); ID rb_to_id(VALUE); VALUE rb_id2str(ID); #define CONST_ID_CACHE(result, str) \ { \ static ID rb_intern_id_cache; \ if (!rb_intern_id_cache) \ rb_intern_id_cache = rb_intern2(str, (long)strlen(str)); \ result rb_intern_id_cache; \ } #define CONST_ID(var, str) \ do CONST_ID_CACHE(var =, str) while (0) #ifdef __GNUC__ /* __builtin_constant_p and statement expression is available * since gcc-2.7.2.3 at least. */ #define rb_intern(str) \ (__builtin_constant_p(str) ? \ __extension__ (CONST_ID_CACHE((ID), str)) : \ rb_intern(str)) #define rb_intern_const(str) \ (__builtin_constant_p(str) ? \ __extension__ (rb_intern2(str, (long)strlen(str))) : \ (rb_intern)(str)) #else #define rb_intern_const(str) rb_intern2(str, (long)strlen(str)) #endif const char *rb_class2name(VALUE); const char *rb_obj_classname(VALUE); void rb_p(VALUE); VALUE rb_eval_string(const char*); VALUE rb_eval_string_protect(const char*, int*); VALUE rb_eval_string_wrap(const char*, int*); VALUE rb_funcall(VALUE, ID, int, ...); VALUE rb_funcall2(VALUE, ID, int, const VALUE*); VALUE rb_funcall3(VALUE, ID, int, const VALUE*); int rb_scan_args(int, const VALUE*, const char*, ...); VALUE rb_call_super(int, const VALUE*); VALUE rb_gv_set(const char*, VALUE); VALUE rb_gv_get(const char*); VALUE rb_iv_get(VALUE, const char*); VALUE rb_iv_set(VALUE, const char*, VALUE); VALUE rb_equal(VALUE,VALUE); VALUE *rb_ruby_verbose_ptr(void); VALUE *rb_ruby_debug_ptr(void); #define ruby_verbose (*rb_ruby_verbose_ptr()) #define ruby_debug (*rb_ruby_debug_ptr()) PRINTF_ARGS(NORETURN(void rb_raise(VALUE, const char*, ...)), 2, 3); PRINTF_ARGS(NORETURN(void rb_fatal(const char*, ...)), 1, 2); PRINTF_ARGS(NORETURN(void rb_bug(const char*, ...)), 1, 2); NORETURN(void rb_bug_errno(const char*, int)); NORETURN(void rb_sys_fail(const char*)); NORETURN(void rb_mod_sys_fail(VALUE, const char*)); NORETURN(void rb_iter_break(void)); NORETURN(void rb_exit(int)); NORETURN(void rb_notimplement(void)); /* reports if `-W' specified */ PRINTF_ARGS(void rb_warning(const char*, ...), 1, 2); PRINTF_ARGS(void rb_compile_warning(const char *, int, const char*, ...), 3, 4); PRINTF_ARGS(void rb_sys_warning(const char*, ...), 1, 2); /* reports always */ PRINTF_ARGS(void rb_warn(const char*, ...), 1, 2); PRINTF_ARGS(void rb_compile_warn(const char *, int, const char*, ...), 3, 4); typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*); VALUE rb_each(VALUE); VALUE rb_yield(VALUE); VALUE rb_yield_values(int n, ...); VALUE rb_yield_values2(int n, const VALUE *argv); VALUE rb_yield_splat(VALUE); int rb_block_given_p(void); void rb_need_block(void); VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE); VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(ANYARGS),VALUE); VALUE rb_rescue(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); VALUE rb_rescue2(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...); VALUE rb_ensure(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); VALUE rb_catch(const char*,VALUE(*)(ANYARGS),VALUE); VALUE rb_catch_obj(VALUE,VALUE(*)(ANYARGS),VALUE); NORETURN(void rb_throw(const char*,VALUE)); NORETURN(void rb_throw_obj(VALUE,VALUE)); VALUE rb_require(const char*); #ifdef __ia64 void ruby_init_stack(volatile VALUE*, void*); #define ruby_init_stack(addr) ruby_init_stack(addr, rb_ia64_bsp()) #else void ruby_init_stack(volatile VALUE*); #endif #define RUBY_INIT_STACK \ VALUE variable_in_this_stack_frame; \ ruby_init_stack(&variable_in_this_stack_frame); void ruby_init(void); void *ruby_options(int, char**); int ruby_run_node(void *); int ruby_exec_node(void *); RUBY_EXTERN VALUE rb_mKernel; RUBY_EXTERN VALUE rb_mComparable; RUBY_EXTERN VALUE rb_mEnumerable; RUBY_EXTERN VALUE rb_mErrno; RUBY_EXTERN VALUE rb_mFileTest; RUBY_EXTERN VALUE rb_mGC; RUBY_EXTERN VALUE rb_mMath; RUBY_EXTERN VALUE rb_mProcess; RUBY_EXTERN VALUE rb_mWaitReadable; RUBY_EXTERN VALUE rb_mWaitWritable; RUBY_EXTERN VALUE rb_cBasicObject; RUBY_EXTERN VALUE rb_cObject; RUBY_EXTERN VALUE rb_cArray; RUBY_EXTERN VALUE rb_cBignum; RUBY_EXTERN VALUE rb_cBinding; RUBY_EXTERN VALUE rb_cClass; RUBY_EXTERN VALUE rb_cCont; RUBY_EXTERN VALUE rb_cDir; RUBY_EXTERN VALUE rb_cData; RUBY_EXTERN VALUE rb_cFalseClass; RUBY_EXTERN VALUE rb_cEncoding; RUBY_EXTERN VALUE rb_cEnumerator; RUBY_EXTERN VALUE rb_cFile; RUBY_EXTERN VALUE rb_cFixnum; RUBY_EXTERN VALUE rb_cFloat; RUBY_EXTERN VALUE rb_cHash; RUBY_EXTERN VALUE rb_cInteger; RUBY_EXTERN VALUE rb_cIO; RUBY_EXTERN VALUE rb_cMatch; RUBY_EXTERN VALUE rb_cMethod; RUBY_EXTERN VALUE rb_cModule; RUBY_EXTERN VALUE rb_cNameErrorMesg; RUBY_EXTERN VALUE rb_cNilClass; RUBY_EXTERN VALUE rb_cNumeric; RUBY_EXTERN VALUE rb_cProc; RUBY_EXTERN VALUE rb_cRandom; RUBY_EXTERN VALUE rb_cRange; RUBY_EXTERN VALUE rb_cRational; RUBY_EXTERN VALUE rb_cComplex; RUBY_EXTERN VALUE rb_cRegexp; RUBY_EXTERN VALUE rb_cStat; RUBY_EXTERN VALUE rb_cString; RUBY_EXTERN VALUE rb_cStruct; RUBY_EXTERN VALUE rb_cSymbol; RUBY_EXTERN VALUE rb_cThread; RUBY_EXTERN VALUE rb_cTime; RUBY_EXTERN VALUE rb_cTrueClass; RUBY_EXTERN VALUE rb_cUnboundMethod; RUBY_EXTERN VALUE rb_eException; RUBY_EXTERN VALUE rb_eStandardError; RUBY_EXTERN VALUE rb_eSystemExit; RUBY_EXTERN VALUE rb_eInterrupt; RUBY_EXTERN VALUE rb_eSignal; RUBY_EXTERN VALUE rb_eFatal; RUBY_EXTERN VALUE rb_eArgError; RUBY_EXTERN VALUE rb_eEOFError; RUBY_EXTERN VALUE rb_eIndexError; RUBY_EXTERN VALUE rb_eStopIteration; RUBY_EXTERN VALUE rb_eKeyError; RUBY_EXTERN VALUE rb_eRangeError; RUBY_EXTERN VALUE rb_eIOError; RUBY_EXTERN VALUE rb_eRuntimeError; RUBY_EXTERN VALUE rb_eSecurityError; RUBY_EXTERN VALUE rb_eSystemCallError; RUBY_EXTERN VALUE rb_eThreadError; RUBY_EXTERN VALUE rb_eTypeError; RUBY_EXTERN VALUE rb_eZeroDivError; RUBY_EXTERN VALUE rb_eNotImpError; RUBY_EXTERN VALUE rb_eNoMemError; RUBY_EXTERN VALUE rb_eNoMethodError; RUBY_EXTERN VALUE rb_eFloatDomainError; RUBY_EXTERN VALUE rb_eLocalJumpError; RUBY_EXTERN VALUE rb_eSysStackError; RUBY_EXTERN VALUE rb_eRegexpError; RUBY_EXTERN VALUE rb_eEncodingError; RUBY_EXTERN VALUE rb_eEncCompatError; RUBY_EXTERN VALUE rb_eScriptError; RUBY_EXTERN VALUE rb_eNameError; RUBY_EXTERN VALUE rb_eSyntaxError; RUBY_EXTERN VALUE rb_eLoadError; RUBY_EXTERN VALUE rb_eMathDomainError; RUBY_EXTERN VALUE rb_stdin, rb_stdout, rb_stderr; static inline VALUE rb_class_of(VALUE obj) { if (IMMEDIATE_P(obj)) { if (FIXNUM_P(obj)) return rb_cFixnum; if (obj == Qtrue) return rb_cTrueClass; if (SYMBOL_P(obj)) return rb_cSymbol; } else if (!RTEST(obj)) { if (obj == Qnil) return rb_cNilClass; if (obj == Qfalse) return rb_cFalseClass; } return RBASIC(obj)->klass; } static inline int rb_type(VALUE obj) { if (IMMEDIATE_P(obj)) { if (FIXNUM_P(obj)) return T_FIXNUM; if (obj == Qtrue) return T_TRUE; if (SYMBOL_P(obj)) return T_SYMBOL; if (obj == Qundef) return T_UNDEF; } else if (!RTEST(obj)) { if (obj == Qnil) return T_NIL; if (obj == Qfalse) return T_FALSE; } return BUILTIN_TYPE(obj); } #define RB_TYPE_P(obj, type) ( \ ((type) == T_FIXNUM) ? FIXNUM_P(obj) : \ ((type) == T_TRUE) ? ((obj) == Qtrue) : \ ((type) == T_FALSE) ? ((obj) == Qfalse) : \ ((type) == T_NIL) ? ((obj) == Qnil) : \ ((type) == T_UNDEF) ? ((obj) == Qundef) : \ ((type) == T_SYMBOL) ? SYMBOL_P(obj) : \ (!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == (type))) #ifdef __GNUC__ #define rb_type_p(obj, type) \ __extension__ (__builtin_constant_p(type) ? RB_TYPE_P(obj, type) : \ rb_type(obj) == (type)) #else #define rb_type_p(obj, type) (rb_type(obj) == (type)) #endif #ifdef __GNUC__ #define rb_special_const_p(obj) \ __extension__ ({VALUE special_const_obj = (obj); (int)(SPECIAL_CONST_P(special_const_obj) ? Qtrue : Qfalse);}) #else static inline int rb_special_const_p(VALUE obj) { if (SPECIAL_CONST_P(obj)) return (int)Qtrue; return (int)Qfalse; } #endif #include "ruby/missing.h" #include "ruby/intern.h" #if defined(EXTLIB) && defined(USE_DLN_A_OUT) /* hook for external modules */ static char *dln_libs_to_be_linked[] = { EXTLIB, 0 }; #endif #if (defined(__APPLE__) || defined(__NeXT__)) && defined(__MACH__) #define RUBY_GLOBAL_SETUP /* use linker option to link startup code with ObjC support */ #else #define RUBY_GLOBAL_SETUP #endif void ruby_sysinit(int *, char ***); #define RUBY_VM 1 /* YARV */ #define HAVE_NATIVETHREAD int ruby_native_thread_p(void); #define RUBY_EVENT_NONE 0x0000 #define RUBY_EVENT_LINE 0x0001 #define RUBY_EVENT_CLASS 0x0002 #define RUBY_EVENT_END 0x0004 #define RUBY_EVENT_CALL 0x0008 #define RUBY_EVENT_RETURN 0x0010 #define RUBY_EVENT_C_CALL 0x0020 #define RUBY_EVENT_C_RETURN 0x0040 #define RUBY_EVENT_RAISE 0x0080 #define RUBY_EVENT_ALL 0xffff #define RUBY_EVENT_VM 0x10000 #define RUBY_EVENT_SWITCH 0x20000 #define RUBY_EVENT_COVERAGE 0x40000 typedef unsigned int rb_event_flag_t; typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass); typedef struct rb_event_hook_struct { rb_event_flag_t flag; rb_event_hook_func_t func; VALUE data; struct rb_event_hook_struct *next; } rb_event_hook_t; #define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data); int rb_remove_event_hook(rb_event_hook_func_t func); /* locale insensitive functions */ #define rb_isascii(c) ((unsigned long)(c) < 128) int rb_isalnum(int c); int rb_isalpha(int c); int rb_isblank(int c); int rb_iscntrl(int c); int rb_isdigit(int c); int rb_isgraph(int c); int rb_islower(int c); int rb_isprint(int c); int rb_ispunct(int c); int rb_isspace(int c); int rb_isupper(int c); int rb_isxdigit(int c); int rb_tolower(int c); int rb_toupper(int c); #ifndef ISPRINT #define ISASCII(c) rb_isascii((unsigned char)(c)) #undef ISPRINT #define ISPRINT(c) rb_isprint((unsigned char)(c)) #define ISSPACE(c) rb_isspace((unsigned char)(c)) #define ISUPPER(c) rb_isupper((unsigned char)(c)) #define ISLOWER(c) rb_islower((unsigned char)(c)) #define ISALNUM(c) rb_isalnum((unsigned char)(c)) #define ISALPHA(c) rb_isalpha((unsigned char)(c)) #define ISDIGIT(c) rb_isdigit((unsigned char)(c)) #define ISXDIGIT(c) rb_isxdigit((unsigned char)(c)) #endif #define TOUPPER(c) rb_toupper((unsigned char)(c)) #define TOLOWER(c) rb_tolower((unsigned char)(c)) int st_strcasecmp(const char *s1, const char *s2); int st_strncasecmp(const char *s1, const char *s2, size_t n); #define STRCASECMP(s1, s2) (st_strcasecmp(s1, s2)) #define STRNCASECMP(s1, s2, n) (st_strncasecmp(s1, s2, n)) unsigned long ruby_strtoul(const char *str, char **endptr, int base); #define STRTOUL(str, endptr, base) (ruby_strtoul(str, endptr, base)) #define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();} int ruby_snprintf(char *str, size_t n, char const *fmt, ...); int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap); #undef snprintf #undef vsnprintf #define snprintf ruby_snprintf #define vsnprintf ruby_vsnprintf #ifdef BROKEN_CLOSE #undef getpeername #define getpeername ruby_getpeername #undef getsockname #define getsockname ruby_getsockname #undef shutdown #define shutdown ruby_shutdown #undef close #define close ruby_close #endif #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_RUBY_H */ 07070100184451000081a40000000000000000000000014ac5ec5500000510000000b600010002ffffffffffffffff0000002c00000000root/usr/local/include/ruby-1.9.1/ruby/re.h/********************************************************************** re.h - $Author: akr $ created at: Thu Sep 30 14:18:32 JST 1993 Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_RE_H #define RUBY_RE_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #include #include #include "ruby/regex.h" typedef struct re_pattern_buffer Regexp; struct rmatch_offset { long beg; long end; }; struct rmatch { struct re_registers regs; int char_offset_updated; int char_offset_num_allocated; struct rmatch_offset *char_offset; }; struct RMatch { struct RBasic basic; VALUE str; struct rmatch *rmatch; VALUE regexp; /* RRegexp */ }; #define RMATCH(obj) (R_CAST(RMatch)(obj)) #define RMATCH_REGS(obj) (&(R_CAST(RMatch)(obj))->rmatch->regs) VALUE rb_reg_regcomp(VALUE); long rb_reg_search(VALUE, VALUE, long, int); VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE); long rb_reg_adjust_startpos(VALUE, VALUE, long, int); void rb_match_busy(VALUE); VALUE rb_reg_quote(VALUE); #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_RE_H */ 07070100184455000081a40000000000000000000000014b39aa43000007c4000000b600010002ffffffffffffffff0000002e00000000root/usr/local/include/ruby-1.9.1/ruby/util.h/********************************************************************** util.h - $Author: naruse $ created at: Thu Mar 9 11:55:53 JST 1995 Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ #ifndef RUBY_UTIL_H #define RUBY_UTIL_H 1 #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif #ifndef _ #ifdef __cplusplus # ifndef HAVE_PROTOTYPES # define HAVE_PROTOTYPES 1 # endif # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifdef HAVE_PROTOTYPES # define _(args) args #else # define _(args) () #endif #ifdef HAVE_STDARG_PROTOTYPES # define __(args) args #else # define __(args) () #endif #endif #define scan_oct(s,l,e) (int)ruby_scan_oct(s,l,e) unsigned long ruby_scan_oct(const char *, size_t, size_t *); #define scan_hex(s,l,e) (int)ruby_scan_hex(s,l,e) unsigned long ruby_scan_hex(const char *, size_t, size_t *); #if defined(__CYGWIN32__) || defined(_WIN32) void ruby_add_suffix(VALUE str, const char *suffix); #endif void ruby_qsort(void *, const size_t, const size_t, int (*)(const void *, const void *, void *), void *); void ruby_setenv(const char *, const char *); void ruby_unsetenv(const char *); #undef setenv #undef unsetenv #define setenv(name,val) ruby_setenv(name,val) #define unsetenv(name,val) ruby_unsetenv(name); char *ruby_strdup(const char *); #undef strdup #define strdup(s) ruby_strdup(s) char *ruby_getcwd(void); #define my_getcwd() ruby_getcwd() double ruby_strtod(const char *, char **); #undef strtod #define strtod(s,e) ruby_strtod(s,e) #if defined _MSC_VER && _MSC_VER >= 1300 #pragma warning(push) #pragma warning(disable:4723) #endif #if defined _MSC_VER && _MSC_VER >= 1300 #pragma warning(pop) #endif void ruby_each_words(const char *, void (*)(const char*, int, void*), void *); #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif /* RUBY_UTIL_H */ 07070100184445000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000003000000000root/usr/local/include/ruby-1.9.1/ruby/backward07070100184447000081a40000000000000000000000014ac5ec5500000527000000b600010002ffffffffffffffff0000003a00000000root/usr/local/include/ruby-1.9.1/ruby/backward/rubysig.h/********************************************************************** rubysig.h - $Author: akr $ $Date: 2009-10-02 21:04:37 +0900 (Fri, 02 Oct 2009) $ created at: Wed Aug 16 01:15:38 JST 1995 Copyright (C) 1993-2008 Yukihiro Matsumoto **********************************************************************/ #if defined __GNUC__ #warning rubysig.h is obsolete #elif defined _MSC_VER || defined __BORLANDC__ #pragma message("warning: rubysig.h is obsolete") #endif #ifndef RUBYSIG_H #define RUBYSIG_H #include "ruby/ruby.h" #if defined(__cplusplus) extern "C" { #if 0 } /* satisfy cc-mode */ #endif #endif struct rb_blocking_region_buffer; DEPRECATED(RUBY_EXTERN struct rb_blocking_region_buffer *rb_thread_blocking_region_begin(void)); DEPRECATED(RUBY_EXTERN void rb_thread_blocking_region_end(struct rb_blocking_region_buffer *)); #define TRAP_BEG do {struct rb_blocking_region_buffer *__region = rb_thread_blocking_region_begin(); #define TRAP_END rb_thread_blocking_region_end(__region);} while (0) #define RUBY_CRITICAL(statements) do {statements;} while (0) #define DEFER_INTS (0) #define ENABLE_INTS (1) #define ALLOW_INTS do {CHECK_INTS;} while (0) #define CHECK_INTS rb_thread_check_ints() #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ #endif } /* extern "C" { */ #endif #endif 07070100184449000081a40000000000000000000000014ac5d9d3000000e3000000b600010002ffffffffffffffff0000003700000000root/usr/local/include/ruby-1.9.1/ruby/backward/util.h#if defined __GNUC__ #warning use "ruby/util.h" instead of bare "util.h" #elif defined _MSC_VER || defined __BORLANDC__ #pragma message("warning: use \"ruby/util.h\" instead of bare \"util.h\"") #endif #include "ruby/util.h" 07070100184446000081a40000000000000000000000014ac5d9d3000000d7000000b600010002ffffffffffffffff0000003900000000root/usr/local/include/ruby-1.9.1/ruby/backward/rubyio.h#if defined __GNUC__ #warning use "ruby/io.h" instead of "rubyio.h" #elif defined _MSC_VER || defined __BORLANDC__ #pragma message("warning: use \"ruby/io.h\" instead of \"rubyio.h\"") #endif #include "ruby/io.h" 07070100184448000081a40000000000000000000000014ac5d9d3000000d9000000b600010002ffffffffffffffff0000003500000000root/usr/local/include/ruby-1.9.1/ruby/backward/st.h#if defined __GNUC__ #warning use "ruby/st.h" instead of bare "st.h" #elif defined _MSC_VER || defined __BORLANDC__ #pragma message("warning: use \"ruby/st.h\" instead of bare \"st.h\"") #endif #include "ruby/st.h" 07070100184440000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000003300000000root/usr/local/include/ruby-1.9.1/i386-solaris2.1107070100184441000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000003800000000root/usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby07070100184442000081a40000000000000000000000014dc8de9900001bb8000000b600010002ffffffffffffffff0000004100000000root/usr/local/include/ruby-1.9.1/i386-solaris2.11/ruby/config.h/* confdefs.h */ #define CANONICALIZATION_FOR_MATHN 1 #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_MEMORY_H 1 #define HAVE_STRINGS_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDINT_H 1 #define HAVE_UNISTD_H 1 #define __EXTENSIONS__ 1 #define _ALL_SOURCE 1 #define _GNU_SOURCE 1 #define _POSIX_PTHREAD_SEMANTICS 1 #define _TANDEM_SOURCE 1 #define _FILE_OFFSET_BITS 64 #define HAVE_LONG_LONG 1 #define HAVE_OFF_T 1 #define SIZEOF_INT 4 #define SIZEOF_SHORT 2 #define SIZEOF_LONG 4 #define SIZEOF_LONG_LONG 8 #define SIZEOF___INT64 0 #define SIZEOF_OFF_T 8 #define SIZEOF_VOIDP 4 #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 #define SIZEOF_TIME_T 4 #define rb_pid_t pid_t #define PIDT2NUM(v) LONG2NUM(v) #define NUM2PIDT(v) NUM2LONG(v) #define PRI_PIDT_PREFIX "l" #define rb_uid_t uid_t #define UIDT2NUM(v) UINT2NUM(v) #define NUM2UIDT(v) NUM2UINT(v) #define PRI_UIDT_PREFIX "" #define rb_gid_t gid_t #define GIDT2NUM(v) UINT2NUM(v) #define NUM2GIDT(v) NUM2UINT(v) #define PRI_GIDT_PREFIX "" #define rb_time_t time_t #define TIMET2NUM(v) LONG2NUM(v) #define NUM2TIMET(v) NUM2LONG(v) #define PRI_TIMET_PREFIX "l" #define rb_dev_t dev_t #define DEVT2NUM(v) ULONG2NUM(v) #define NUM2DEVT(v) NUM2ULONG(v) #define PRI_DEVT_PREFIX "l" #define HAVE_PROTOTYPES 1 #define TOKEN_PASTE(x,y) x##y #define STRINGIZE(expr) STRINGIZE0(expr) #define HAVE_STDARG_PROTOTYPES 1 #define HAVE_VA_ARGS_MACRO 1 #define NORETURN(x) __attribute__ ((noreturn)) x #define NOINLINE(x) __attribute__ ((noinline)) x #define HAVE_DECL_SYS_NERR 0 #define SIZEOF_STRUCT_DIRENT_TOO_SMALL 1 #define HAVE_LIBCRYPT 1 #define HAVE_LIBDL 1 #define HAVE_LIBSOCKET 1 #define HAVE_LIBRT 1 #define HAVE_DIRENT_H 1 #define HAVE__BOOL 1 #define HAVE_STDBOOL_H 1 #define HAVE_SYS_WAIT_H 1 #define HAVE_LIMITS_H 1 #define HAVE_SYS_FILE_H 1 #define HAVE_SYS_IOCTL_H 1 #define HAVE_SYS_SYSCALL_H 1 #define HAVE_FCNTL_H 1 #define HAVE_SYS_FCNTL_H 1 #define HAVE_SYS_SELECT_H 1 #define HAVE_SYS_TIME_H 1 #define HAVE_SYS_TIMES_H 1 #define HAVE_SYS_PARAM_H 1 #define HAVE_PWD_H 1 #define HAVE_GRP_H 1 #define HAVE_UTIME_H 1 #define HAVE_SYS_RESOURCE_H 1 #define HAVE_SYS_MKDEV_H 1 #define HAVE_SYS_UTIME_H 1 #define HAVE_XTI_H 1 #define HAVE_NETINET_IN_SYSTM_H 1 #define HAVE_FLOAT_H 1 #define HAVE_IEEEFP_H 1 #define HAVE_UCONTEXT_H 1 #define HAVE_LANGINFO_H 1 #define HAVE_LOCALE_H 1 #define HAVE_SYS_SENDFILE_H 1 #define HAVE_TIME_H 1 #define HAVE_SYS_SOCKET_H 1 #define SIZEOF_RLIM_T 8 #define SIZEOF_SIZE_T 4 #define SIZEOF_PTRDIFF_T 4 #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 #define HAVE_ST_BLKSIZE 1 #define HAVE_STRUCT_STAT_ST_BLOCKS 1 #define HAVE_ST_BLOCKS 1 #define HAVE_STRUCT_STAT_ST_RDEV 1 #define HAVE_ST_RDEV 1 #define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_LONG_LONG #define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_LONG_LONG #define HAVE_STRUCT_STAT_ST_ATIM 1 #define HAVE_STRUCT_STAT_ST_MTIM 1 #define HAVE_STRUCT_STAT_ST_CTIM 1 #define HAVE_STRUCT_TIMESPEC 1 #define HAVE_STRUCT_TIMEZONE 1 #define HAVE_RB_FD_INIT 1 #define HAVE_INT8_T 1 #define SIZEOF_INT8_T 1 #define HAVE_UINT8_T 1 #define SIZEOF_UINT8_T 1 #define HAVE_INT16_T 1 #define SIZEOF_INT16_T 2 #define HAVE_UINT16_T 1 #define SIZEOF_UINT16_T 2 #define HAVE_INT32_T 1 #define SIZEOF_INT32_T 4 #define HAVE_UINT32_T 1 #define SIZEOF_UINT32_T 4 #define HAVE_INT64_T 1 #define SIZEOF_INT64_T 8 #define HAVE_UINT64_T 1 #define SIZEOF_UINT64_T 8 #define HAVE_INTPTR_T 1 #define SIZEOF_INTPTR_T 4 #define HAVE_UINTPTR_T 1 #define SIZEOF_UINTPTR_T 4 #define HAVE_SSIZE_T 1 #define SIZEOF_SSIZE_T 4 #define GETGROUPS_T gid_t #define RETSIGTYPE void #define HAVE_ALLOCA_H 1 #define HAVE_ALLOCA 1 #define HAVE_DUP2 1 #define HAVE_MEMMOVE 1 #define HAVE_STRERROR 1 #define HAVE_STRCHR 1 #define HAVE_STRSTR 1 #define HAVE_CRYPT 1 #define HAVE_ISNAN 1 #define HAVE_FINITE 1 #define HAVE_HYPOT 1 #define HAVE_ACOSH 1 #define HAVE_ERF 1 #define HAVE_TGAMMA 1 #define HAVE_LGAMMA_R 1 #define HAVE_CBRT 1 #define HAVE_STRLCPY 1 #define HAVE_STRLCAT 1 #define HAVE_SIGNBIT 1 #define HAVE_FMOD 1 #define HAVE_KILLPG 1 #define HAVE_WAIT4 1 #define HAVE_WAITPID 1 #define HAVE_FORK 1 #define HAVE_SYSCALL 1 #define HAVE_CHROOT 1 #define HAVE_GETCWD 1 #define HAVE_TRUNCATE 1 #define HAVE_FTRUNCATE 1 #define HAVE_TIMES 1 #define HAVE_UTIMES 1 #define HAVE_UTIMENSAT 1 #define HAVE_FCNTL 1 #define HAVE_LOCKF 1 #define HAVE_LSTAT 1 #define HAVE_LINK 1 #define HAVE_SYMLINK 1 #define HAVE_READLINK 1 #define HAVE_READDIR_R 1 #define HAVE_FSYNC 1 #define HAVE_FDATASYNC 1 #define HAVE_FCHOWN 1 #define HAVE_SETITIMER 1 #define HAVE_SETEUID 1 #define HAVE_SETREUID 1 #define HAVE_SOCKETPAIR 1 #define HAVE_SETEGID 1 #define HAVE_SETREGID 1 #define HAVE_ISSETUGID 1 #define HAVE_PAUSE 1 #define HAVE_LCHOWN 1 #define HAVE_GETPGRP 1 #define HAVE_SETPGRP 1 #define HAVE_GETPGID 1 #define HAVE_SETPGID 1 #define HAVE_INITGROUPS 1 #define HAVE_GETGROUPS 1 #define HAVE_SETGROUPS 1 #define HAVE_GETPRIORITY 1 #define HAVE_GETRLIMIT 1 #define HAVE_SETRLIMIT 1 #define HAVE_SYSCONF 1 #define HAVE_CLOSE 1 #define HAVE_DLOPEN 1 #define HAVE_SIGPROCMASK 1 #define HAVE_SIGACTION 1 #define HAVE_SIGSETJMP 1 #define HAVE__SETJMP 1 #define HAVE__LONGJMP 1 #define HAVE_SETSID 1 #define HAVE_TELLDIR 1 #define HAVE_SEEKDIR 1 #define HAVE_FCHMOD 1 #define HAVE_COSH 1 #define HAVE_SINH 1 #define HAVE_TANH 1 #define HAVE_LOG2 1 #define HAVE_ROUND 1 #define HAVE_SETUID 1 #define HAVE_SETGID 1 #define HAVE_SELECT_LARGE_FDSET 1 #define HAVE_SETENV 1 #define HAVE_UNSETENV 1 #define HAVE_MKTIME 1 #define HAVE_GMTIME_R 1 #define HAVE_CLOCK_GETTIME 1 #define HAVE_GETTIMEOFDAY 1 #define HAVE_PREAD 1 #define HAVE_SHUTDOWN 1 #define HAVE_SIGALTSTACK 1 #define RUBY_SETJMP(env) __builtin_setjmp(env) #define RUBY_LONGJMP(env,val) __builtin_longjmp(env,val) #define RUBY_JMP_BUF jmp_buf #define HAVE_DECL_TZNAME 1 #define HAVE_TZNAME 1 #define HAVE_DAYLIGHT 1 #define HAVE_VAR_TIMEZONE 1 #define TYPEOF_VAR_TIMEZONE long #define HAVE_VAR_ALTZONE 1 #define TYPEOF_VAR_ALTZONE long #define HAVE_TIMEZONE 1 #define TIMEZONE_VOID 1 #define NEGATIVE_TIME_T 1 #define LOCALTIME_OVERFLOW_PROBLEM 1 #define POSIX_SIGNAL 1 #define GETPGRP_VOID 1 #define SETPGRP_VOID 1 #define RSHIFT(x,y) ((x)>>(int)(y)) #define FILE_COUNT _cnt #define FILE_READPTR _ptr #define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG_LONG #define HAVE__SC_CLK_TCK 1 #define STACK_GROW_DIRECTION -1 #define _REENTRANT 1 #define _THREAD_SAFE 1 #define HAVE_LIBPTHREAD 1 #define HAVE_NANOSLEEP 1 #define HAVE_SCHED_YIELD 1 #define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1 #define HAVE_PTHREAD_ATTR_GETSTACK 1 #define HAVE_THR_STKSEGMENT 1 #define HAVE_GETCONTEXT 1 #define HAVE_SETCONTEXT 1 #define HAVE_BACKTRACE 1 #define USE_ELF 1 #define DLEXT_MAXLEN 3 #define DLEXT ".so" #define HAVE_PTHREAD_H 1 #define RUBY_LIB_VERSION_STYLE 3 /* full */ #define RUBY_EXEC_PREFIX "/usr/local" #define RUBY_LIB_PREFIX RUBY_EXEC_PREFIX"/lib/ruby" #define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby" #define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby" #define RUBY_PLATFORM "i386-solaris2.11" 07070100184458000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000001300000000root/usr/local/lib0707010018445b000041ed0000000000000000000000044dc8e19e00000000000000b600010002ffffffffffffffff0000001800000000root/usr/local/lib/ruby0707010018445c000041ed00000000000000000000001d4dc8e19e00000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/lib/ruby/1.9.1070701001845d5000081a40000000000000000000000014ba6e4fa00000706000000b600010002ffffffffffffffff0000003000000000root/usr/local/lib/ruby/1.9.1/resolv-replace.rbrequire 'socket' require 'resolv' class << IPSocket # :stopdoc: alias original_resolv_getaddress getaddress # :startdoc: def getaddress(host) begin return Resolv.getaddress(host).to_s rescue Resolv::ResolvError raise SocketError, "Hostname not known: #{host}" end end end class TCPSocket < IPSocket # :stopdoc: alias original_resolv_initialize initialize # :startdoc: def initialize(host, serv, *rest) rest[0] = IPSocket.getaddress(rest[0]) unless rest.empty? original_resolv_initialize(IPSocket.getaddress(host), serv, *rest) end end class UDPSocket < IPSocket # :stopdoc: alias original_resolv_bind bind # :startdoc: def bind(host, port) host = IPSocket.getaddress(host) if host != "" original_resolv_bind(host, port) end # :stopdoc: alias original_resolv_connect connect # :startdoc: def connect(host, port) original_resolv_connect(IPSocket.getaddress(host), port) end # :stopdoc: alias original_resolv_send send # :startdoc: def send(mesg, flags, *rest) if rest.length == 2 host, port = rest begin addrs = Resolv.getaddresses(host) rescue Resolv::ResolvError raise SocketError, "Hostname not known: #{host}" end err = nil addrs[0...-1].each {|addr| begin return original_resolv_send(mesg, flags, addr, port) rescue SystemCallError end } original_resolv_send(mesg, flags, addrs[-1], port) else original_resolv_send(mesg, flags, *rest) end end end class SOCKSSocket < TCPSocket # :stopdoc: alias original_resolv_initialize initialize # :startdoc: def initialize(host, serv) original_resolv_initialize(IPSocket.getaddress(host), port) end end if defined? SOCKSSocket 070701001846cf000081a40000000000000000000000014c110bc30000290e000000b600010002ffffffffffffffff0000002a00000000root/usr/local/lib/ruby/1.9.1/tempfile.rb# # tempfile - manipulates temporary files # # $Id: tempfile.rb 28266 2010-06-10 15:58:59Z yugui $ # require 'delegate' require 'tmpdir' require 'thread' # A utility class for managing temporary files. When you create a Tempfile # object, it will create a temporary file with a unique filename. A Tempfile # objects behaves just like a File object, and you can perform all the usual # file operations on it: reading data, writing data, changing its permissions, # etc. So although this class does not explicitly document all instance methods # supported by File, you can in fact call any File instance method on a # Tempfile object. # # == Synopsis # # require 'tempfile' # # file = Tempfile.new('foo') # file.path # => A unique filename in the OS's temp directory, # # e.g.: "/tmp/foo.24722.0" # # This filename contains 'foo' in its basename. # file.write("hello world") # file.rewind # file.read # => "hello world" # file.close # file.unlink # deletes the temp file # # == Good practices # # === Explicit close # # When a Tempfile object is garbage collected, or when the Ruby interpreter # exits, its associated temporary file is automatically deleted. This means # that's it's unnecessary to explicitly delete a Tempfile after use, though # it's good practice to do so: not explicitly deleting unused Tempfiles can # potentially leave behind large amounts of tempfiles on the filesystem # until they're garbage collected. The existance of these temp files can make # it harder to determine a new Tempfile filename. # # Therefore, one should always call #unlink or close in an ensure block, like # this: # # file = Tempfile.new('foo') # begin # ...do something with file... # ensure # file.close # file.unlink # deletes the temp file # end # # === Unlink after creation # # On POSIX systems, it's possible to unlink a file right after creating it, # and before closing it. This removes the filesystem entry without closing # the file handle, so it ensures that only the processes that already had # the file handle open can access the file's contents. It's strongly # recommended that you do this if you do not want any other processes to # be able to read from or write to the Tempfile, and you do not need to # know the Tempfile's filename either. # # For example, a practical use case for unlink-after-creation would be this: # you need a large byte buffer that's too large to comfortably fit in RAM, # e.g. when you're writing a web server and you want to buffer the client's # file upload data. # # Please refer to #unlink for more information and a code example. # # == Minor notes # # Tempfile's filename picking method is both thread-safe and inter-process-safe: # it guarantees that no other threads or processes will pick the same filename. # # Tempfile itself however may not be entirely thread-safe. If you access the # same Tempfile object from multiple threads then you should protect it with a # mutex. class Tempfile < DelegateClass(File) MAX_TRY = 10 # :nodoc: include Dir::Tmpname # call-seq: # new(basename, [tmpdir = Dir.tmpdir], [options]) # # Creates a temporary file with permissions 0600 (= only readable and # writable by the owner) and opens it with mode "w+". # # The +basename+ parameter is used to determine the name of the # temporary file. You can either pass a String or an Array with # 2 String elements. In the former form, the temporary file's base # name will begin with the given string. In the latter form, # the temporary file's base name will begin with the array's first # element, and end with the second element. For example: # # file = Tempfile.new('hello') # file.path # => something like: "/tmp/foo2843-8392-92849382--0" # # # Use the Array form to enforce an extension in the filename: # file = Tempfile.new(['hello', '.jpg']) # file.path # => something like: "/tmp/foo2843-8392-92849382--0.jpg" # # The temporary file will be placed in the directory as specified # by the +tmpdir+ parameter. By default, this is +Dir.tmpdir+. # When $SAFE > 0 and the given +tmpdir+ is tainted, it uses # '/tmp' as the temporary directory. Please note that ENV values # are tainted by default, and +Dir.tmpdir+'s return value might # come from environment variables (e.g. $TMPDIR). # # file = Tempfile.new('hello', '/home/aisaka') # file.path # => something like: "/home/aisaka/foo2843-8392-92849382--0" # # You can also pass an options hash. Under the hood, Tempfile creates # the temporary file using +File.open+. These options will be passed to # +File.open+. This is mostly useful for specifying encoding # options, e.g.: # # Tempfile.new('hello', '/home/aisaka', :encoding => 'ascii-8bit') # # # You can also omit the 'tmpdir' parameter: # Tempfile.new('hello', :encoding => 'ascii-8bit') # # === Exceptions # # If Tempfile.new cannot find a unique filename within a limited # number of tries, then it will raise an exception. def initialize(basename, *rest) @data = [] @clean_proc = Remover.new(@data) ObjectSpace.define_finalizer(self, @clean_proc) create(basename, *rest) do |tmpname, n, opts| lock = tmpname + '.lock' mode = File::RDWR|File::CREAT|File::EXCL perm = 0600 if opts mode |= opts.delete(:mode) || 0 opts[:perm] = perm perm = nil else opts = perm end self.class.mkdir(lock) begin @data[1] = @tmpfile = File.open(tmpname, mode, opts) @data[0] = @tmpname = tmpname ensure self.class.rmdir(lock) end @mode = mode & ~(File::CREAT|File::EXCL) perm or opts.freeze @opts = opts end super(@tmpfile) end # Opens or reopens the file with mode "r+". def open @tmpfile.close if @tmpfile @tmpfile = File.open(@tmpname, @mode, @opts) @data[1] = @tmpfile __setobj__(@tmpfile) end def _close # :nodoc: @tmpfile.close if @tmpfile @tmpfile = nil @data[1] = nil if @data end protected :_close # Closes the file. If +unlink_now+ is true, then the file will be unlinked # (deleted) after closing. Of course, you can choose to later call #unlink # if you do not unlink it now. # # If you don't explicitly unlink the temporary file, the removal # will be delayed until the object is finalized. def close(unlink_now=false) if unlink_now close! else _close end end # Closes and unlinks (deletes) the file. Has the same effect as called # close(true). def close! _close unlink ObjectSpace.undefine_finalizer(self) end # Unlinks (deletes) the file from the filesystem. One should always unlink # the file after using it, as is explained in the "Explicit close" good # practice section in the Tempfile overview: # # file = Tempfile.new('foo') # begin # ...do something with file... # ensure # file.close # file.unlink # deletes the temp file # end # # === Unlink-before-close # # On POSIX systems it's possible to unlink a file before closing it. This # practice is explained in detail in the Tempfile overview (section # "Unlink after creation"); please refer there for more information. # # However, unlink-before-close may not be supported on non-POSIX operating # systems. Microsoft Windows is the most notable case: unlinking a non-closed # file will result in an error, which this method will silently ignore. If # you want to practice unlink-before-close whenever possible, then you should # write code like this: # # file = Tempfile.new('foo') # file.unlink # On Windows this silently fails. # begin # ... do something with file ... # ensure # file.close! # Closes the file handle. If the file wasn't unlinked # # because #unlink failed, then this method will attempt # # to do so again. # end def unlink # keep this order for thread safeness return unless @tmpname begin if File.exist?(@tmpname) File.unlink(@tmpname) end # remove tmpname from remover @data[0] = @data[2] = nil @tmpname = nil rescue Errno::EACCES # may not be able to unlink on Windows; just ignore end end alias delete unlink # Returns the full path name of the temporary file. # This will be nil if #unlink has been called. def path @tmpname end # Returns the size of the temporary file. As a side effect, the IO # buffer is flushed before determining the size. def size if @tmpfile @tmpfile.flush @tmpfile.stat.size elsif @tmpname File.size(@tmpname) else 0 end end alias length size # :stopdoc: class Remover def initialize(data) @pid = $$ @data = data end def call(*args) if @pid == $$ path, tmpfile = *@data STDERR.print "removing ", path, "..." if $DEBUG tmpfile.close if tmpfile # keep this order for thread safeness if path File.unlink(path) if File.exist?(path) end STDERR.print "done\n" if $DEBUG end end end # :startdoc: class << self # Creates a new Tempfile. # # If no block is given, this is a synonym for Tempfile.new. # # If a block is given, then a Tempfile object will be constructed, # and the block is run with said object as argument. The Tempfile # oject will be automatically closed after the block terminates. # The call returns the value of the block. # # In any case, all arguments (+*args+) will be passed to Tempfile.new. # # Tempfile.open('foo', '/home/temp') do |f| # ... do something with f ... # end # # # Equivalent: # f = Tempfile.open('foo', '/home/temp') # begin # ... do something with f ... # ensure # f.close # end def open(*args) tempfile = new(*args) if block_given? begin yield(tempfile) ensure tempfile.close end else tempfile end end def mkdir(*args) Dir.mkdir(*args) end def rmdir(*args) Dir.rmdir(*args) end end end if __FILE__ == $0 # $DEBUG = true f = Tempfile.new("foo") f.print("foo\n") f.close f.open p f.gets # => "foo\n" f.close! end 07070100184468000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000002200000000root/usr/local/lib/ruby/1.9.1/cgi0707010018446c000081a40000000000000000000000014ac5d9d30000495e000000b600010002ffffffffffffffff0000002d00000000root/usr/local/lib/ruby/1.9.1/cgi/session.rb# # cgi/session.rb - session support for cgi scripts # # Copyright (C) 2001 Yukihiro "Matz" Matsumoto # Copyright (C) 2000 Network Applied Communication Laboratory, Inc. # Copyright (C) 2000 Information-technology Promotion Agency, Japan # # Author: Yukihiro "Matz" Matsumoto # # Documentation: William Webber (william@williamwebber.com) # # == Overview # # This file provides the +CGI::Session+ class, which provides session # support for CGI scripts. A session is a sequence of HTTP requests # and responses linked together and associated with a single client. # Information associated with the session is stored # on the server between requests. A session id is passed between client # and server with every request and response, transparently # to the user. This adds state information to the otherwise stateless # HTTP request/response protocol. # # See the documentation to the +CGI::Session+ class for more details # and examples of usage. See cgi.rb for the +CGI+ class itself. require 'cgi' require 'tmpdir' class CGI # Class representing an HTTP session. See documentation for the file # cgi/session.rb for an introduction to HTTP sessions. # # == Lifecycle # # A CGI::Session instance is created from a CGI object. By default, # this CGI::Session instance will start a new session if none currently # exists, or continue the current session for this client if one does # exist. The +new_session+ option can be used to either always or # never create a new session. See #new() for more details. # # #delete() deletes a session from session storage. It # does not however remove the session id from the client. If the client # makes another request with the same id, the effect will be to start # a new session with the old session's id. # # == Setting and retrieving session data. # # The Session class associates data with a session as key-value pairs. # This data can be set and retrieved by indexing the Session instance # using '[]', much the same as hashes (although other hash methods # are not supported). # # When session processing has been completed for a request, the # session should be closed using the close() method. This will # store the session's state to persistent storage. If you want # to store the session's state to persistent storage without # finishing session processing for this request, call the update() # method. # # == Storing session state # # The caller can specify what form of storage to use for the session's # data with the +database_manager+ option to CGI::Session::new. The # following storage classes are provided as part of the standard library: # # CGI::Session::FileStore:: stores data as plain text in a flat file. Only # works with String data. This is the default # storage type. # CGI::Session::MemoryStore:: stores data in an in-memory hash. The data # only persists for as long as the current ruby # interpreter instance does. # CGI::Session::PStore:: stores data in Marshalled format. Provided by # cgi/session/pstore.rb. Supports data of any type, # and provides file-locking and transaction support. # # Custom storage types can also be created by defining a class with # the following methods: # # new(session, options) # restore # returns hash of session data. # update # close # delete # # Changing storage type mid-session does not work. Note in particular # that by default the FileStore and PStore session data files have the # same name. If your application switches from one to the other without # making sure that filenames will be different # and clients still have old sessions lying around in cookies, then # things will break nastily! # # == Maintaining the session id. # # Most session state is maintained on the server. However, a session # id must be passed backwards and forwards between client and server # to maintain a reference to this session state. # # The simplest way to do this is via cookies. The CGI::Session class # provides transparent support for session id communication via cookies # if the client has cookies enabled. # # If the client has cookies disabled, the session id must be included # as a parameter of all requests sent by the client to the server. The # CGI::Session class in conjunction with the CGI class will transparently # add the session id as a hidden input field to all forms generated # using the CGI#form() HTML generation method. No built-in support is # provided for other mechanisms, such as URL re-writing. The caller is # responsible for extracting the session id from the session_id # attribute and manually encoding it in URLs and adding it as a hidden # input to HTML forms created by other mechanisms. Also, session expiry # is not automatically handled. # # == Examples of use # # === Setting the user's name # # require 'cgi' # require 'cgi/session' # require 'cgi/session/pstore' # provides CGI::Session::PStore # # cgi = CGI.new("html4") # # session = CGI::Session.new(cgi, # 'database_manager' => CGI::Session::PStore, # use PStore # 'session_key' => '_rb_sess_id', # custom session key # 'session_expires' => Time.now + 30 * 60, # 30 minute timeout # 'prefix' => 'pstore_sid_') # PStore option # if cgi.has_key?('user_name') and cgi['user_name'] != '' # # coerce to String: cgi[] returns the # # string-like CGI::QueryExtension::Value # session['user_name'] = cgi['user_name'].to_s # elsif !session['user_name'] # session['user_name'] = "guest" # end # session.close # # === Creating a new session safely # # require 'cgi' # require 'cgi/session' # # cgi = CGI.new("html4") # # # We make sure to delete an old session if one exists, # # not just to free resources, but to prevent the session # # from being maliciously hijacked later on. # begin # session = CGI::Session.new(cgi, 'new_session' => false) # session.delete # rescue ArgumentError # if no old session # end # session = CGI::Session.new(cgi, 'new_session' => true) # session.close # class Session class NoSession < RuntimeError #:nodoc: end # The id of this session. attr_reader :session_id, :new_session def Session::callback(dbman) #:nodoc: Proc.new{ dbman[0].close unless dbman.empty? } end # Create a new session id. # # The session id is an MD5 hash based upon the time, # a random number, and a constant string. This routine # is used internally for automatically generated # session ids. def create_new_id require 'securerandom' begin session_id = SecureRandom.hex(16) rescue NotImplementedError require 'digest/md5' md5 = Digest::MD5::new now = Time::now md5.update(now.to_s) md5.update(String(now.usec)) md5.update(String(rand(0))) md5.update(String($$)) md5.update('foobar') session_id = md5.hexdigest end session_id end private :create_new_id # Create a new CGI::Session object for +request+. # # +request+ is an instance of the +CGI+ class (see cgi.rb). # +option+ is a hash of options for initialising this # CGI::Session instance. The following options are # recognised: # # session_key:: the parameter name used for the session id. # Defaults to '_session_id'. # session_id:: the session id to use. If not provided, then # it is retrieved from the +session_key+ parameter # of the request, or automatically generated for # a new session. # new_session:: if true, force creation of a new session. If not set, # a new session is only created if none currently # exists. If false, a new session is never created, # and if none currently exists and the +session_id+ # option is not set, an ArgumentError is raised. # database_manager:: the name of the class providing storage facilities # for session state persistence. Built-in support # is provided for +FileStore+ (the default), # +MemoryStore+, and +PStore+ (from # cgi/session/pstore.rb). See the documentation for # these classes for more details. # # The following options are also recognised, but only apply if the # session id is stored in a cookie. # # session_expires:: the time the current session expires, as a # +Time+ object. If not set, the session will terminate # when the user's browser is closed. # session_domain:: the hostname domain for which this session is valid. # If not set, defaults to the hostname of the server. # session_secure:: if +true+, this session will only work over HTTPS. # session_path:: the path for which this session applies. Defaults # to the directory of the CGI script. # # +option+ is also passed on to the session storage class initializer; see # the documentation for each session storage class for the options # they support. # # The retrieved or created session is automatically added to +request+ # as a cookie, and also to its +output_hidden+ table, which is used # to add hidden input elements to forms. # # *WARNING* the +output_hidden+ # fields are surrounded by a
tag in HTML 4 generation, which # is _not_ invisible on many browsers; you may wish to disable the # use of fieldsets with code similar to the following # (see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37805) # # cgi = CGI.new("html4") # class << cgi # undef_method :fieldset # end # def initialize(request, option={}) @new_session = false session_key = option['session_key'] || '_session_id' session_id = option['session_id'] unless session_id if option['new_session'] session_id = create_new_id @new_session = true end end unless session_id if request.key?(session_key) session_id = request[session_key] session_id = session_id.read if session_id.respond_to?(:read) end unless session_id session_id, = request.cookies[session_key] end unless session_id unless option.fetch('new_session', true) raise ArgumentError, "session_key `%s' should be supplied"%session_key end session_id = create_new_id @new_session = true end end @session_id = session_id dbman = option['database_manager'] || FileStore begin @dbman = dbman::new(self, option) rescue NoSession unless option.fetch('new_session', true) raise ArgumentError, "invalid session_id `%s'"%session_id end session_id = @session_id = create_new_id unless session_id @new_session=true retry end request.instance_eval do @output_hidden = {session_key => session_id} unless option['no_hidden'] @output_cookies = [ Cookie::new("name" => session_key, "value" => session_id, "expires" => option['session_expires'], "domain" => option['session_domain'], "secure" => option['session_secure'], "path" => if option['session_path'] option['session_path'] elsif ENV["SCRIPT_NAME"] File::dirname(ENV["SCRIPT_NAME"]) else "" end) ] unless option['no_cookies'] end @dbprot = [@dbman] ObjectSpace::define_finalizer(self, Session::callback(@dbprot)) end # Retrieve the session data for key +key+. def [](key) @data ||= @dbman.restore @data[key] end # Set the session date for key +key+. def []=(key, val) @write_lock ||= true @data ||= @dbman.restore @data[key] = val end # Store session data on the server. For some session storage types, # this is a no-op. def update @dbman.update end # Store session data on the server and close the session storage. # For some session storage types, this is a no-op. def close @dbman.close @dbprot.clear end # Delete the session from storage. Also closes the storage. # # Note that the session's data is _not_ automatically deleted # upon the session expiring. def delete @dbman.delete @dbprot.clear end # File-based session storage class. # # Implements session storage as a flat file of 'key=value' values. # This storage type only works directly with String values; the # user is responsible for converting other types to Strings when # storing and from Strings when retrieving. class FileStore # Create a new FileStore instance. # # This constructor is used internally by CGI::Session. The # user does not generally need to call it directly. # # +session+ is the session for which this instance is being # created. The session id must only contain alphanumeric # characters; automatically generated session ids observe # this requirement. # # +option+ is a hash of options for the initializer. The # following options are recognised: # # tmpdir:: the directory to use for storing the FileStore # file. Defaults to Dir::tmpdir (generally "/tmp" # on Unix systems). # prefix:: the prefix to add to the session id when generating # the filename for this session's FileStore file. # Defaults to "cgi_sid_". # suffix:: the prefix to add to the session id when generating # the filename for this session's FileStore file. # Defaults to the empty string. # # This session's FileStore file will be created if it does # not exist, or opened if it does. def initialize(session, option={}) dir = option['tmpdir'] || Dir::tmpdir prefix = option['prefix'] || 'cgi_sid_' suffix = option['suffix'] || '' id = session.session_id require 'digest/md5' md5 = Digest::MD5.hexdigest(id)[0,16] @path = dir+"/"+prefix+md5+suffix if File::exist? @path @hash = nil else unless session.new_session raise CGI::Session::NoSession, "uninitialized session" end @hash = {} end end # Restore session state from the session's FileStore file. # # Returns the session state as a hash. def restore unless @hash @hash = {} begin lockf = File.open(@path+".lock", "r") lockf.flock File::LOCK_SH f = File.open(@path, 'r') for line in f line.chomp! k, v = line.split('=',2) @hash[CGI::unescape(k)] = Marshal.restore(CGI::unescape(v)) end ensure f.close unless f.nil? lockf.close if lockf end end @hash end # Save session state to the session's FileStore file. def update return unless @hash begin lockf = File.open(@path+".lock", File::CREAT|File::RDWR, 0600) lockf.flock File::LOCK_EX f = File.open(@path+".new", File::CREAT|File::TRUNC|File::WRONLY, 0600) for k,v in @hash f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(Marshal.dump(v))) end f.close File.rename @path+".new", @path ensure f.close if f and !f.closed? lockf.close if lockf end end # Update and close the session's FileStore file. def close update end # Close and delete the session's FileStore file. def delete File::unlink @path+".lock" rescue nil File::unlink @path+".new" rescue nil File::unlink @path rescue Errno::ENOENT end end # In-memory session storage class. # # Implements session storage as a global in-memory hash. Session # data will only persist for as long as the ruby interpreter # instance does. class MemoryStore GLOBAL_HASH_TABLE = {} #:nodoc: # Create a new MemoryStore instance. # # +session+ is the session this instance is associated with. # +option+ is a list of initialisation options. None are # currently recognised. def initialize(session, option=nil) @session_id = session.session_id unless GLOBAL_HASH_TABLE.key?(@session_id) unless session.new_session raise CGI::Session::NoSession, "uninitialized session" end GLOBAL_HASH_TABLE[@session_id] = {} end end # Restore session state. # # Returns session data as a hash. def restore GLOBAL_HASH_TABLE[@session_id] end # Update session state. # # A no-op. def update # don't need to update; hash is shared end # Close session storage. # # A no-op. def close # don't need to close end # Delete the session state. def delete GLOBAL_HASH_TABLE.delete(@session_id) end end # Dummy session storage class. # # Implements session storage place holder. No actual storage # will be done. class NullStore # Create a new NullStore instance. # # +session+ is the session this instance is associated with. # +option+ is a list of initialisation options. None are # currently recognised. def initialize(session, option=nil) end # Restore (empty) session state. def restore {} end # Update session state. # # A no-op. def update end # Close session storage. # # A no-op. def close end # Delete the session state. # # A no-op. def delete end end end end 07070100184469000081a40000000000000000000000014bbaa42000001143000000b600010002ffffffffffffffff0000002c00000000root/usr/local/lib/ruby/1.9.1/cgi/cookie.rb# Class representing an HTTP cookie. # # In addition to its specific fields and methods, a Cookie instance # is a delegator to the array of its values. # # See RFC 2965. # # == Examples of use # cookie1 = CGI::Cookie::new("name", "value1", "value2", ...) # cookie1 = CGI::Cookie::new("name" => "name", "value" => "value") # cookie1 = CGI::Cookie::new('name' => 'name', # 'value' => ['value1', 'value2', ...], # 'path' => 'path', # optional # 'domain' => 'domain', # optional # 'expires' => Time.now, # optional # 'secure' => true # optional # ) # # cgi.out("cookie" => [cookie1, cookie2]) { "string" } # # name = cookie1.name # values = cookie1.value # path = cookie1.path # domain = cookie1.domain # expires = cookie1.expires # secure = cookie1.secure # # cookie1.name = 'name' # cookie1.value = ['value1', 'value2', ...] # cookie1.path = 'path' # cookie1.domain = 'domain' # cookie1.expires = Time.now + 30 # cookie1.secure = true class CGI @@accept_charset="UTF-8" unless defined?(@@accept_charset) class Cookie < Array # Create a new CGI::Cookie object. # # The contents of the cookie can be specified as a +name+ and one # or more +value+ arguments. Alternatively, the contents can # be specified as a single hash argument. The possible keywords of # this hash are as follows: # # name:: the name of the cookie. Required. # value:: the cookie's value or list of values. # path:: the path for which this cookie applies. Defaults to the # base directory of the CGI script. # domain:: the domain for which this cookie applies. # expires:: the time at which this cookie expires, as a +Time+ object. # secure:: whether this cookie is a secure cookie or not (default to # false). Secure cookies are only transmitted to HTTPS # servers. # # These keywords correspond to attributes of the cookie object. def initialize(name = "", *value) @domain = nil @expires = nil if name.kind_of?(String) @name = name %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") @secure = false return super(value) end options = name unless options.has_key?("name") raise ArgumentError, "`name' required" end @name = options["name"] value = Array(options["value"]) # simple support for IE if options["path"] @path = options["path"] else %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") end @domain = options["domain"] @expires = options["expires"] @secure = options["secure"] == true ? true : false super(value) end attr_accessor("name", "path", "domain", "expires") attr_reader("secure") def value self end def value=(val) replace(Array(val)) end # Set whether the Cookie is a secure cookie or not. # # +val+ must be a boolean. def secure=(val) @secure = val if val == true or val == false @secure end # Convert the Cookie to its string representation. def to_s val = collect{|v| CGI::escape(v) }.join("&") buf = "#{@name}=#{val}" buf << "; domain=#{@domain}" if @domain buf << "; path=#{@path}" if @path buf << "; expires=#{CGI::rfc1123_date(@expires)}" if @expires buf << "; secure" if @secure == true buf end end # class Cookie # Parse a raw cookie string into a hash of cookie-name=>Cookie # pairs. # # cookies = CGI::Cookie::parse("raw_cookie_string") # # { "name1" => cookie1, "name2" => cookie2, ... } # def Cookie::parse(raw_cookie) cookies = Hash.new([]) return cookies unless raw_cookie raw_cookie.split(/[;,]\s?/).each do |pairs| name, values = pairs.split('=',2) next unless name and values name = CGI::unescape(name) values ||= "" values = values.split('&').collect{|v| CGI::unescape(v,@@accept_charset) } if cookies.has_key?(name) values = cookies[name].value + values end cookies[name] = Cookie::new(name, *values) end cookies end end 0707010018446d000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000002a00000000root/usr/local/lib/ruby/1.9.1/cgi/session0707010018446e000081a40000000000000000000000014ac5d9d300000cdf000000b600010002ffffffffffffffff0000003400000000root/usr/local/lib/ruby/1.9.1/cgi/session/pstore.rb# # cgi/session/pstore.rb - persistent storage of marshalled session data # # Documentation: William Webber (william@williamwebber.com) # # == Overview # # This file provides the CGI::Session::PStore class, which builds # persistent of session data on top of the pstore library. See # cgi/session.rb for more details on session storage managers. require 'cgi/session' require 'pstore' class CGI class Session # PStore-based session storage class. # # This builds upon the top-level PStore class provided by the # library file pstore.rb. Session data is marshalled and stored # in a file. File locking and transaction services are provided. class PStore # Create a new CGI::Session::PStore instance # # This constructor is used internally by CGI::Session. The # user does not generally need to call it directly. # # +session+ is the session for which this instance is being # created. The session id must only contain alphanumeric # characters; automatically generated session ids observe # this requirement. # # +option+ is a hash of options for the initializer. The # following options are recognised: # # tmpdir:: the directory to use for storing the PStore # file. Defaults to Dir::tmpdir (generally "/tmp" # on Unix systems). # prefix:: the prefix to add to the session id when generating # the filename for this session's PStore file. # Defaults to the empty string. # # This session's PStore file will be created if it does # not exist, or opened if it does. def initialize(session, option={}) dir = option['tmpdir'] || Dir::tmpdir prefix = option['prefix'] || '' id = session.session_id require 'digest/md5' md5 = Digest::MD5.hexdigest(id)[0,16] path = dir+"/"+prefix+md5 path.untaint if File::exist?(path) @hash = nil else unless session.new_session raise CGI::Session::NoSession, "uninitialized session" end @hash = {} end @p = ::PStore.new(path) @p.transaction do |p| File.chmod(0600, p.path) end end # Restore session state from the session's PStore file. # # Returns the session state as a hash. def restore unless @hash @p.transaction do @hash = @p['hash'] || {} end end @hash end # Save session state to the session's PStore file. def update @p.transaction do @p['hash'] = @hash end end # Update and close the session's PStore file. def close update end # Close and delete the session's PStore file. def delete path = @p.path File::unlink path end end end end if $0 == __FILE__ # :enddoc: STDIN.reopen("/dev/null") cgi = CGI.new session = CGI::Session.new(cgi, 'database_manager' => CGI::Session::PStore) session['key'] = {'k' => 'v'} puts session['key'].class fail unless Hash === session['key'] puts session['key'].inspect fail unless session['key'].inspect == '{"k"=>"v"}' end 0707010018446f000081a40000000000000000000000014cf753b600001815000000b600010002ffffffffffffffff0000002a00000000root/usr/local/lib/ruby/1.9.1/cgi/util.rbclass CGI @@accept_charset="UTF-8" unless defined?(@@accept_charset) # URL-encode a string. # url_encoded_string = CGI::escape("'Stop!' said Fred") # # => "%27Stop%21%27+said+Fred" def CGI::escape(string) string.gsub(/([^ a-zA-Z0-9_.-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end.tr(' ', '+') end # URL-decode a string with encoding(optional). # string = CGI::unescape("%27Stop%21%27+said+Fred") # # => "'Stop!' said Fred" def CGI::unescape(string,encoding=@@accept_charset) str=string.tr('+', ' ').force_encoding(Encoding::ASCII_8BIT).gsub(/((?:%[0-9a-fA-F]{2})+)/) do [$1.delete('%')].pack('H*') end.force_encoding(encoding) str.valid_encoding? ? str : str.force_encoding(string.encoding) end TABLE_FOR_ESCAPE_HTML__ = { '&' => '&', '"' => '"', '<' => '<', '>' => '>', } # Escape special characters in HTML, namely &\"<> # CGI::escapeHTML('Usage: foo "bar" ') # # => "Usage: foo "bar" <baz>" def CGI::escapeHTML(string) string.gsub(/[&\"<>]/, TABLE_FOR_ESCAPE_HTML__) end # Unescape a string that has been HTML-escaped # CGI::unescapeHTML("Usage: foo "bar" <baz>") # # => "Usage: foo \"bar\" " def CGI::unescapeHTML(string) enc = string.encoding if [Encoding::UTF_16BE, Encoding::UTF_16LE, Encoding::UTF_32BE, Encoding::UTF_32LE].include?(enc) return string.gsub(Regexp.new('&(amp|quot|gt|lt|#[0-9]+|#x[0-9A-Fa-f]+);'.encode(enc))) do case $1.encode("US-ASCII") when 'amp' then '&'.encode(enc) when 'quot' then '"'.encode(enc) when 'gt' then '>'.encode(enc) when 'lt' then '<'.encode(enc) when /\A#0*(\d+)\z/ then $1.to_i.chr(enc) when /\A#x([0-9a-f]+)\z/i then $1.hex.chr(enc) end end end asciicompat = Encoding.compatible?(string, "a") string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/) do match = $1.dup case match when 'amp' then '&' when 'quot' then '"' when 'gt' then '>' when 'lt' then '<' when /\A#0*(\d+)\z/ n = $1.to_i if enc == Encoding::UTF_8 or enc == Encoding::ISO_8859_1 && n < 256 or asciicompat && n < 128 n.chr(enc) else "&##{$1};" end when /\A#x([0-9a-f]+)\z/i n = $1.hex if enc == Encoding::UTF_8 or enc == Encoding::ISO_8859_1 && n < 256 or asciicompat && n < 128 n.chr(enc) else "&#x#{$1};" end else "&#{match};" end end end def CGI::escape_html(str) escapeHTML(str) end def CGI::unescape_html(str) unescapeHTML(str) end # Escape only the tags of certain HTML elements in +string+. # # Takes an element or elements or array of elements. Each element # is specified by the name of the element, without angle brackets. # This matches both the start and the end tag of that element. # The attribute list of the open tag will also be escaped (for # instance, the double-quotes surrounding attribute values). # # print CGI::escapeElement('
', "A", "IMG") # # "
<A HREF="url"></A>" # # print CGI::escapeElement('
', ["A", "IMG"]) # # "
<A HREF="url"></A>" def CGI::escapeElement(string, *elements) elements = elements[0] if elements[0].kind_of?(Array) unless elements.empty? string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/i) do CGI::escapeHTML($&) end else string end end # Undo escaping such as that done by CGI::escapeElement() # # print CGI::unescapeElement( # CGI::escapeHTML('
'), "A", "IMG") # # "<BR>" # # print CGI::unescapeElement( # CGI::escapeHTML('
'), ["A", "IMG"]) # # "<BR>" def CGI::unescapeElement(string, *elements) elements = elements[0] if elements[0].kind_of?(Array) unless elements.empty? string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/i) do CGI::unescapeHTML($&) end else string end end def CGI::escape_element(str) escapeElement(str) end def CGI::unescape_element(str) unescapeElement(str) end # Abbreviated day-of-week names specified by RFC 822 RFC822_DAYS = %w[ Sun Mon Tue Wed Thu Fri Sat ] # Abbreviated month names specified by RFC 822 RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ] # Format a +Time+ object as a String using the format specified by RFC 1123. # # CGI::rfc1123_date(Time.now) # # Sat, 01 Jan 2000 00:00:00 GMT def CGI::rfc1123_date(time) t = time.clone.gmtime return format("%s, %.2d %s %.4d %.2d:%.2d:%.2d GMT", RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year, t.hour, t.min, t.sec) end # Prettify (indent) an HTML string. # # +string+ is the HTML string to indent. +shift+ is the indentation # unit to use; it defaults to two spaces. # # print CGI::pretty("") # # # # # # # # # # print CGI::pretty("", "\t") # # # # # # # # # def CGI::pretty(string, shift = " ") lines = string.gsub(/(?!\A)<.*?>/m, "\n\\0").gsub(/<.*?>(?!\n)/m, "\\0\n") end_pos = 0 while end_pos = lines.index(/^<\/(\w+)/, end_pos) element = $1.dup start_pos = lines.rindex(/^\s*<#{element}/i, end_pos) lines[start_pos ... end_pos] = "__" + lines[start_pos ... end_pos].gsub(/\n(?!\z)/, "\n" + shift) + "__" end lines.gsub(/^((?:#{Regexp::quote(shift)})*)__(?=<\/?\w)/, '\1') end end 0707010018446b000081a40000000000000000000000014ba441730000866f000000b600010002ffffffffffffffff0000002a00000000root/usr/local/lib/ruby/1.9.1/cgi/html.rb # Base module for HTML-generation mixins. # # Provides methods for code generation for tags following # the various DTD element types. class CGI module TagMaker # :nodoc: # Generate code for an element with required start and end tags. # # - - def nn_element_def(element) nOE_element_def(element, <<-END) if block_given? yield.to_s else "" end + "" END end # Generate code for an empty element. # # - O EMPTY def nOE_element_def(element, append = nil) s = <<-END attributes={attributes=>nil} if attributes.kind_of?(String) "<#{element.upcase}" + attributes.collect{|name, value| next unless value " " + CGI::escapeHTML(name.to_s) + if true == value "" else '="' + CGI::escapeHTML(value.to_s) + '"' end }.join + ">" END s.sub!(/\Z/, " +") << append if append s end # Generate code for an element for which the end (and possibly the # start) tag is optional. # # O O or - O def nO_element_def(element) nOE_element_def(element, <<-END) if block_given? yield.to_s + "" else "" end END end end # TagMaker # # Mixin module providing HTML generation methods. # # For example, # cgi.a("http://www.example.com") { "Example" } # # => "Example" # # Modules Http3, Http4, etc., contain more basic HTML-generation methods # (:title, :center, etc.). # # See class CGI for a detailed example. # module HtmlExtension # Generate an Anchor element as a string. # # +href+ can either be a string, giving the URL # for the HREF attribute, or it can be a hash of # the element's attributes. # # The body of the element is the string returned by the no-argument # block passed in. # # a("http://www.example.com") { "Example" } # # => "Example" # # a("HREF" => "http://www.example.com", "TARGET" => "_top") { "Example" } # # => "Example" # def a(href = "") # :yield: attributes = if href.kind_of?(String) { "HREF" => href } else href end if block_given? super(attributes){ yield } else super(attributes) end end # Generate a Document Base URI element as a String. # # +href+ can either by a string, giving the base URL for the HREF # attribute, or it can be a has of the element's attributes. # # The passed-in no-argument block is ignored. # # base("http://www.example.com/cgi") # # => "" def base(href = "") # :yield: attributes = if href.kind_of?(String) { "HREF" => href } else href end if block_given? super(attributes){ yield } else super(attributes) end end # Generate a BlockQuote element as a string. # # +cite+ can either be a string, give the URI for the source of # the quoted text, or a hash, giving all attributes of the element, # or it can be omitted, in which case the element has no attributes. # # The body is provided by the passed-in no-argument block # # blockquote("http://www.example.com/quotes/foo.html") { "Foo!" } # #=> "
Foo!
def blockquote(cite = {}) # :yield: attributes = if cite.kind_of?(String) { "CITE" => cite } else cite end if block_given? super(attributes){ yield } else super(attributes) end end # Generate a Table Caption element as a string. # # +align+ can be a string, giving the alignment of the caption # (one of top, bottom, left, or right). It can be a hash of # all the attributes of the element. Or it can be omitted. # # The body of the element is provided by the passed-in no-argument block. # # caption("left") { "Capital Cities" } # # => Capital Cities def caption(align = {}) # :yield: attributes = if align.kind_of?(String) { "ALIGN" => align } else align end if block_given? super(attributes){ yield } else super(attributes) end end # Generate a Checkbox Input element as a string. # # The attributes of the element can be specified as three arguments, # +name+, +value+, and +checked+. +checked+ is a boolean value; # if true, the CHECKED attribute will be included in the element. # # Alternatively, the attributes can be specified as a hash. # # checkbox("name") # # = checkbox("NAME" => "name") # # checkbox("name", "value") # # = checkbox("NAME" => "name", "VALUE" => "value") # # checkbox("name", "value", true) # # = checkbox("NAME" => "name", "VALUE" => "value", "CHECKED" => true) def checkbox(name = "", value = nil, checked = nil) attributes = if name.kind_of?(String) { "TYPE" => "checkbox", "NAME" => name, "VALUE" => value, "CHECKED" => checked } else name["TYPE"] = "checkbox" name end input(attributes) end # Generate a sequence of checkbox elements, as a String. # # The checkboxes will all have the same +name+ attribute. # Each checkbox is followed by a label. # There will be one checkbox for each value. Each value # can be specified as a String, which will be used both # as the value of the VALUE attribute and as the label # for that checkbox. A single-element array has the # same effect. # # Each value can also be specified as a three-element array. # The first element is the VALUE attribute; the second is the # label; and the third is a boolean specifying whether this # checkbox is CHECKED. # # Each value can also be specified as a two-element # array, by omitting either the value element (defaults # to the same as the label), or the boolean checked element # (defaults to false). # # checkbox_group("name", "foo", "bar", "baz") # # foo # # bar # # baz # # checkbox_group("name", ["foo"], ["bar", true], "baz") # # foo # # bar # # baz # # checkbox_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz") # # Foo # # Bar # # Baz # # checkbox_group("NAME" => "name", # "VALUES" => ["foo", "bar", "baz"]) # # checkbox_group("NAME" => "name", # "VALUES" => [["foo"], ["bar", true], "baz"]) # # checkbox_group("NAME" => "name", # "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"]) def checkbox_group(name = "", *values) if name.kind_of?(Hash) values = name["VALUES"] name = name["NAME"] end values.collect{|value| if value.kind_of?(String) checkbox(name, value) + value else if value[-1] == true || value[-1] == false checkbox(name, value[0], value[-1]) + value[-2] else checkbox(name, value[0]) + value[-1] end end }.join end # Generate an File Upload Input element as a string. # # The attributes of the element can be specified as three arguments, # +name+, +size+, and +maxlength+. +maxlength+ is the maximum length # of the file's _name_, not of the file's _contents_. # # Alternatively, the attributes can be specified as a hash. # # See #multipart_form() for forms that include file uploads. # # file_field("name") # # # # file_field("name", 40) # # # # file_field("name", 40, 100) # # # # file_field("NAME" => "name", "SIZE" => 40) # # def file_field(name = "", size = 20, maxlength = nil) attributes = if name.kind_of?(String) { "TYPE" => "file", "NAME" => name, "SIZE" => size.to_s } else name["TYPE"] = "file" name end attributes["MAXLENGTH"] = maxlength.to_s if maxlength input(attributes) end # Generate a Form element as a string. # # +method+ should be either "get" or "post", and defaults to the latter. # +action+ defaults to the current CGI script name. +enctype+ # defaults to "application/x-www-form-urlencoded". # # Alternatively, the attributes can be specified as a hash. # # See also #multipart_form() for forms that include file uploads. # # form{ "string" } # #
string
# # form("get") { "string" } # #
string
# # form("get", "url") { "string" } # #
string
# # form("METHOD" => "post", "ENCTYPE" => "enctype") { "string" } # #
string
def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded") attributes = if method.kind_of?(String) { "METHOD" => method, "ACTION" => action, "ENCTYPE" => enctype } else unless method.has_key?("METHOD") method["METHOD"] = "post" end unless method.has_key?("ENCTYPE") method["ENCTYPE"] = enctype end method end if block_given? body = yield else body = "" end if @output_hidden body += @output_hidden.collect{|k,v| "" }.join end super(attributes){body} end # Generate a Hidden Input element as a string. # # The attributes of the element can be specified as two arguments, # +name+ and +value+. # # Alternatively, the attributes can be specified as a hash. # # hidden("name") # # # # hidden("name", "value") # # # # hidden("NAME" => "name", "VALUE" => "reset", "ID" => "foo") # # def hidden(name = "", value = nil) attributes = if name.kind_of?(String) { "TYPE" => "hidden", "NAME" => name, "VALUE" => value } else name["TYPE"] = "hidden" name end input(attributes) end # Generate a top-level HTML element as a string. # # The attributes of the element are specified as a hash. The # pseudo-attribute "PRETTY" can be used to specify that the generated # HTML string should be indented. "PRETTY" can also be specified as # a string as the sole argument to this method. The pseudo-attribute # "DOCTYPE", if given, is used as the leading DOCTYPE SGML tag; it # should include the entire text of this tag, including angle brackets. # # The body of the html element is supplied as a block. # # html{ "string" } # # string # # html("LANG" => "ja") { "string" } # # string # # html("DOCTYPE" => false) { "string" } # # string # # html("DOCTYPE" => '') { "string" } # # string # # html("PRETTY" => " ") { "" } # # # # # # # # # # # # html("PRETTY" => "\t") { "" } # # # # # # # # # # # # html("PRETTY") { "" } # # = html("PRETTY" => " ") { "" } # # html(if $VERBOSE then "PRETTY" end) { "HTML string" } # def html(attributes = {}) # :yield: if nil == attributes attributes = {} elsif "PRETTY" == attributes attributes = { "PRETTY" => true } end pretty = attributes.delete("PRETTY") pretty = " " if true == pretty buf = "" if attributes.has_key?("DOCTYPE") if attributes["DOCTYPE"] buf += attributes.delete("DOCTYPE") else attributes.delete("DOCTYPE") end else buf += doctype end if block_given? buf += super(attributes){ yield } else buf += super(attributes) end if pretty CGI::pretty(buf, pretty) else buf end end # Generate an Image Button Input element as a string. # # +src+ is the URL of the image to use for the button. +name+ # is the input name. +alt+ is the alternative text for the image. # # Alternatively, the attributes can be specified as a hash. # # image_button("url") # # # # image_button("url", "name", "string") # # # # image_button("SRC" => "url", "ALT" => "string") # # def image_button(src = "", name = nil, alt = nil) attributes = if src.kind_of?(String) { "TYPE" => "image", "SRC" => src, "NAME" => name, "ALT" => alt } else src["TYPE"] = "image" src["SRC"] ||= "" src end input(attributes) end # Generate an Image element as a string. # # +src+ is the URL of the image. +alt+ is the alternative text for # the image. +width+ is the width of the image, and +height+ is # its height. # # Alternatively, the attributes can be specified as a hash. # # img("src", "alt", 100, 50) # # alt # # img("SRC" => "src", "ALT" => "alt", "WIDTH" => 100, "HEIGHT" => 50) # # alt def img(src = "", alt = "", width = nil, height = nil) attributes = if src.kind_of?(String) { "SRC" => src, "ALT" => alt } else src end attributes["WIDTH"] = width.to_s if width attributes["HEIGHT"] = height.to_s if height super(attributes) end # Generate a Form element with multipart encoding as a String. # # Multipart encoding is used for forms that include file uploads. # # +action+ is the action to perform. +enctype+ is the encoding # type, which defaults to "multipart/form-data". # # Alternatively, the attributes can be specified as a hash. # # multipart_form{ "string" } # #
string
# # multipart_form("url") { "string" } # #
string
def multipart_form(action = nil, enctype = "multipart/form-data") attributes = if action == nil { "METHOD" => "post", "ENCTYPE" => enctype } elsif action.kind_of?(String) { "METHOD" => "post", "ACTION" => action, "ENCTYPE" => enctype } else unless action.has_key?("METHOD") action["METHOD"] = "post" end unless action.has_key?("ENCTYPE") action["ENCTYPE"] = enctype end action end if block_given? form(attributes){ yield } else form(attributes) end end # Generate a Password Input element as a string. # # +name+ is the name of the input field. +value+ is its default # value. +size+ is the size of the input field display. +maxlength+ # is the maximum length of the inputted password. # # Alternatively, attributes can be specified as a hash. # # password_field("name") # # # # password_field("name", "value") # # # # password_field("password", "value", 80, 200) # # # # password_field("NAME" => "name", "VALUE" => "value") # # def password_field(name = "", value = nil, size = 40, maxlength = nil) attributes = if name.kind_of?(String) { "TYPE" => "password", "NAME" => name, "VALUE" => value, "SIZE" => size.to_s } else name["TYPE"] = "password" name end attributes["MAXLENGTH"] = maxlength.to_s if maxlength input(attributes) end # Generate a Select element as a string. # # +name+ is the name of the element. The +values+ are the options that # can be selected from the Select menu. Each value can be a String or # a one, two, or three-element Array. If a String or a one-element # Array, this is both the value of that option and the text displayed for # it. If a three-element Array, the elements are the option value, displayed # text, and a boolean value specifying whether this option starts as selected. # The two-element version omits either the option value (defaults to the same # as the display text) or the boolean selected specifier (defaults to false). # # The attributes and options can also be specified as a hash. In this # case, options are specified as an array of values as described above, # with the hash key of "VALUES". # # popup_menu("name", "foo", "bar", "baz") # # # # popup_menu("name", ["foo"], ["bar", true], "baz") # # # # popup_menu("name", ["1", "Foo"], ["2", "Bar", true], "Baz") # # # # popup_menu("NAME" => "name", "SIZE" => 2, "MULTIPLE" => true, # "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"]) # # def popup_menu(name = "", *values) if name.kind_of?(Hash) values = name["VALUES"] size = name["SIZE"].to_s if name["SIZE"] multiple = name["MULTIPLE"] name = name["NAME"] else size = nil multiple = nil end select({ "NAME" => name, "SIZE" => size, "MULTIPLE" => multiple }){ values.collect{|value| if value.kind_of?(String) option({ "VALUE" => value }){ value } else if value[value.size - 1] == true option({ "VALUE" => value[0], "SELECTED" => true }){ value[value.size - 2] } else option({ "VALUE" => value[0] }){ value[value.size - 1] } end end }.join } end # Generates a radio-button Input element. # # +name+ is the name of the input field. +value+ is the value of # the field if checked. +checked+ specifies whether the field # starts off checked. # # Alternatively, the attributes can be specified as a hash. # # radio_button("name", "value") # # # # radio_button("name", "value", true) # # # # radio_button("NAME" => "name", "VALUE" => "value", "ID" => "foo") # # def radio_button(name = "", value = nil, checked = nil) attributes = if name.kind_of?(String) { "TYPE" => "radio", "NAME" => name, "VALUE" => value, "CHECKED" => checked } else name["TYPE"] = "radio" name end input(attributes) end # Generate a sequence of radio button Input elements, as a String. # # This works the same as #checkbox_group(). However, it is not valid # to have more than one radiobutton in a group checked. # # radio_group("name", "foo", "bar", "baz") # # foo # # bar # # baz # # radio_group("name", ["foo"], ["bar", true], "baz") # # foo # # bar # # baz # # radio_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz") # # Foo # # Bar # # Baz # # radio_group("NAME" => "name", # "VALUES" => ["foo", "bar", "baz"]) # # radio_group("NAME" => "name", # "VALUES" => [["foo"], ["bar", true], "baz"]) # # radio_group("NAME" => "name", # "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"]) def radio_group(name = "", *values) if name.kind_of?(Hash) values = name["VALUES"] name = name["NAME"] end values.collect{|value| if value.kind_of?(String) radio_button(name, value) + value else if value[-1] == true || value[-1] == false radio_button(name, value[0], value[-1]) + value[-2] else radio_button(name, value[0]) + value[-1] end end }.join end # Generate a reset button Input element, as a String. # # This resets the values on a form to their initial values. +value+ # is the text displayed on the button. +name+ is the name of this button. # # Alternatively, the attributes can be specified as a hash. # # reset # # # # reset("reset") # # # # reset("VALUE" => "reset", "ID" => "foo") # # def reset(value = nil, name = nil) attributes = if (not value) or value.kind_of?(String) { "TYPE" => "reset", "VALUE" => value, "NAME" => name } else value["TYPE"] = "reset" value end input(attributes) end alias scrolling_list popup_menu # Generate a submit button Input element, as a String. # # +value+ is the text to display on the button. +name+ is the name # of the input. # # Alternatively, the attributes can be specified as a hash. # # submit # # # # submit("ok") # # # # submit("ok", "button1") # # # # submit("VALUE" => "ok", "NAME" => "button1", "ID" => "foo") # # def submit(value = nil, name = nil) attributes = if (not value) or value.kind_of?(String) { "TYPE" => "submit", "VALUE" => value, "NAME" => name } else value["TYPE"] = "submit" value end input(attributes) end # Generate a text field Input element, as a String. # # +name+ is the name of the input field. +value+ is its initial # value. +size+ is the size of the input area. +maxlength+ # is the maximum length of input accepted. # # Alternatively, the attributes can be specified as a hash. # # text_field("name") # # # # text_field("name", "value") # # # # text_field("name", "value", 80) # # # # text_field("name", "value", 80, 200) # # # # text_field("NAME" => "name", "VALUE" => "value") # # def text_field(name = "", value = nil, size = 40, maxlength = nil) attributes = if name.kind_of?(String) { "TYPE" => "text", "NAME" => name, "VALUE" => value, "SIZE" => size.to_s } else name["TYPE"] = "text" name end attributes["MAXLENGTH"] = maxlength.to_s if maxlength input(attributes) end # Generate a TextArea element, as a String. # # +name+ is the name of the textarea. +cols+ is the number of # columns and +rows+ is the number of rows in the display. # # Alternatively, the attributes can be specified as a hash. # # The body is provided by the passed-in no-argument block # # textarea("name") # # = textarea("NAME" => "name", "COLS" => 70, "ROWS" => 10) # # textarea("name", 40, 5) # # = textarea("NAME" => "name", "COLS" => 40, "ROWS" => 5) def textarea(name = "", cols = 70, rows = 10) # :yield: attributes = if name.kind_of?(String) { "NAME" => name, "COLS" => cols.to_s, "ROWS" => rows.to_s } else name end if block_given? super(attributes){ yield } else super(attributes) end end end # HtmlExtension # Mixin module for HTML version 3 generation methods. module Html3 # :nodoc: # The DOCTYPE declaration for this version of HTML def doctype %|| end # Initialise the HTML generation methods for this version. def element_init extend TagMaker methods = "" # - - for element in %w[ A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE CAPTION ] methods += <<-BEGIN + nn_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # - O EMPTY for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT ISINDEX META ] methods += <<-BEGIN + nOE_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # O O or - O for element in %w[ HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr th td ] methods += <<-BEGIN + nO_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end eval(methods) end end # Html3 # Mixin module for HTML version 4 generation methods. module Html4 # :nodoc: # The DOCTYPE declaration for this version of HTML def doctype %|| end # Initialise the HTML generation methods for this version. def element_init extend TagMaker methods = "" # - - for element in %w[ TT I B BIG SMALL EM STRONG DFN CODE SAMP KBD VAR CITE ABBR ACRONYM SUB SUP SPAN BDO ADDRESS DIV MAP OBJECT H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT OPTGROUP FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT TEXTAREA FORM A BLOCKQUOTE CAPTION ] methods += <<-BEGIN + nn_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # - O EMPTY for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META ] methods += <<-BEGIN + nOE_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # O O or - O for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY COLGROUP TR TH TD HEAD] methods += <<-BEGIN + nO_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end eval(methods) end end # Html4 # Mixin module for HTML version 4 transitional generation methods. module Html4Tr # :nodoc: # The DOCTYPE declaration for this version of HTML def doctype %|| end # Initialise the HTML generation methods for this version. def element_init extend TagMaker methods = "" # - - for element in %w[ TT I B U S STRIKE BIG SMALL EM STRONG DFN CODE SAMP KBD VAR CITE ABBR ACRONYM FONT SUB SUP SPAN BDO ADDRESS DIV CENTER MAP OBJECT APPLET H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL DIR MENU LABEL SELECT OPTGROUP FIELDSET LEGEND BUTTON TABLE IFRAME NOFRAMES TITLE STYLE SCRIPT NOSCRIPT TEXTAREA FORM A BLOCKQUOTE CAPTION ] methods += <<-BEGIN + nn_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # - O EMPTY for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT COL ISINDEX META ] methods += <<-BEGIN + nOE_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # O O or - O for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY COLGROUP TR TH TD HEAD ] methods += <<-BEGIN + nO_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end eval(methods) end end # Html4Tr # Mixin module for generating HTML version 4 with framesets. module Html4Fr # :nodoc: # The DOCTYPE declaration for this version of HTML def doctype %|| end # Initialise the HTML generation methods for this version. def element_init methods = "" # - - for element in %w[ FRAMESET ] methods += <<-BEGIN + nn_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end # - O EMPTY for element in %w[ FRAME ] methods += <<-BEGIN + nOE_element_def(element) + <<-END def #{element.downcase}(attributes = {}) BEGIN end END end eval(methods) end end # Html4Fr end 0707010018446a000081a40000000000000000000000014bdcbf3f00006496000000b600010002ffffffffffffffff0000002a00000000root/usr/local/lib/ruby/1.9.1/cgi/core.rbclass CGI $CGI_ENV = ENV # for FCGI support # String for carriage return CR = "\015" # String for linefeed LF = "\012" # Standard internet newline sequence EOL = CR + LF REVISION = '$Id: core.rb 27581 2010-05-01 23:54:39Z nobu $' #:nodoc: NEEDS_BINMODE = File::BINARY != 0 # Path separators in different environments. PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'} # HTTP status codes. HTTP_STATUS = { "OK" => "200 OK", "PARTIAL_CONTENT" => "206 Partial Content", "MULTIPLE_CHOICES" => "300 Multiple Choices", "MOVED" => "301 Moved Permanently", "REDIRECT" => "302 Found", "NOT_MODIFIED" => "304 Not Modified", "BAD_REQUEST" => "400 Bad Request", "AUTH_REQUIRED" => "401 Authorization Required", "FORBIDDEN" => "403 Forbidden", "NOT_FOUND" => "404 Not Found", "METHOD_NOT_ALLOWED" => "405 Method Not Allowed", "NOT_ACCEPTABLE" => "406 Not Acceptable", "LENGTH_REQUIRED" => "411 Length Required", "PRECONDITION_FAILED" => "412 Precondition Failed", "SERVER_ERROR" => "500 Internal Server Error", "NOT_IMPLEMENTED" => "501 Method Not Implemented", "BAD_GATEWAY" => "502 Bad Gateway", "VARIANT_ALSO_VARIES" => "506 Variant Also Negotiates" } # :startdoc: def env_table ENV end def stdinput $stdin end def stdoutput $stdout end private :env_table, :stdinput, :stdoutput # Create an HTTP header block as a string. # # Includes the empty line that ends the header block. # # +options+ can be a string specifying the Content-Type (defaults # to text/html), or a hash of header key/value pairs. The following # header keys are recognized: # # type:: the Content-Type header. Defaults to "text/html" # charset:: the charset of the body, appended to the Content-Type header. # nph:: a boolean value. If true, prepend protocol string and status code, and # date; and sets default values for "server" and "connection" if not # explicitly set. # status:: the HTTP status code, returned as the Status header. See the # list of available status codes below. # server:: the server software, returned as the Server header. # connection:: the connection type, returned as the Connection header (for # instance, "close". # length:: the length of the content that will be sent, returned as the # Content-Length header. # language:: the language of the content, returned as the Content-Language # header. # expires:: the time on which the current content expires, as a +Time+ # object, returned as the Expires header. # cookie:: a cookie or cookies, returned as one or more Set-Cookie headers. # The value can be the literal string of the cookie; a CGI::Cookie # object; an Array of literal cookie strings or Cookie objects; or a # hash all of whose values are literal cookie strings or Cookie objects. # These cookies are in addition to the cookies held in the # @output_cookies field. # # Other header lines can also be set; they are appended as key: value. # # header # # Content-Type: text/html # # header("text/plain") # # Content-Type: text/plain # # header("nph" => true, # "status" => "OK", # == "200 OK" # # "status" => "200 GOOD", # "server" => ENV['SERVER_SOFTWARE'], # "connection" => "close", # "type" => "text/html", # "charset" => "iso-2022-jp", # # Content-Type: text/html; charset=iso-2022-jp # "length" => 103, # "language" => "ja", # "expires" => Time.now + 30, # "cookie" => [cookie1, cookie2], # "my_header1" => "my_value" # "my_header2" => "my_value") # # The status codes are: # # "OK" --> "200 OK" # "PARTIAL_CONTENT" --> "206 Partial Content" # "MULTIPLE_CHOICES" --> "300 Multiple Choices" # "MOVED" --> "301 Moved Permanently" # "REDIRECT" --> "302 Found" # "NOT_MODIFIED" --> "304 Not Modified" # "BAD_REQUEST" --> "400 Bad Request" # "AUTH_REQUIRED" --> "401 Authorization Required" # "FORBIDDEN" --> "403 Forbidden" # "NOT_FOUND" --> "404 Not Found" # "METHOD_NOT_ALLOWED" --> "405 Method Not Allowed" # "NOT_ACCEPTABLE" --> "406 Not Acceptable" # "LENGTH_REQUIRED" --> "411 Length Required" # "PRECONDITION_FAILED" --> "412 Precondition Failed" # "SERVER_ERROR" --> "500 Internal Server Error" # "NOT_IMPLEMENTED" --> "501 Method Not Implemented" # "BAD_GATEWAY" --> "502 Bad Gateway" # "VARIANT_ALSO_VARIES" --> "506 Variant Also Negotiates" # # This method does not perform charset conversion. def header(options='text/html') if options.is_a?(String) content_type = options buf = _header_for_string(content_type) elsif options.is_a?(Hash) if options.size == 1 && options.has_key?('type') content_type = options['type'] buf = _header_for_string(content_type) else buf = _header_for_hash(options.dup) end else raise ArgumentError.new("expected String or Hash but got #{options.class}") end if defined?(MOD_RUBY) _header_for_modruby(buf) return '' else buf << EOL # empty line of separator return buf end end # header() def _header_for_string(content_type) #:nodoc: buf = '' if nph?() buf << "#{$CGI_ENV['SERVER_PROTOCOL'] || 'HTTP/1.0'} 200 OK#{EOL}" buf << "Date: #{CGI.rfc1123_date(Time.now)}#{EOL}" buf << "Server: #{$CGI_ENV['SERVER_SOFTWARE']}#{EOL}" buf << "Connection: close#{EOL}" end buf << "Content-Type: #{content_type}#{EOL}" if @output_cookies @output_cookies.each {|cookie| buf << "Set-Cookie: #{cookie}#{EOL}" } end return buf end # _header_for_string private :_header_for_string def _header_for_hash(options) #:nodoc: buf = '' ## add charset to option['type'] options['type'] ||= 'text/html' charset = options.delete('charset') options['type'] += "; charset=#{charset}" if charset ## NPH options.delete('nph') if defined?(MOD_RUBY) if options.delete('nph') || nph?() protocol = $CGI_ENV['SERVER_PROTOCOL'] || 'HTTP/1.0' status = options.delete('status') status = HTTP_STATUS[status] || status || '200 OK' buf << "#{protocol} #{status}#{EOL}" buf << "Date: #{CGI.rfc1123_date(Time.now)}#{EOL}" options['server'] ||= $CGI_ENV['SERVER_SOFTWARE'] || '' options['connection'] ||= 'close' end ## common headers status = options.delete('status') buf << "Status: #{HTTP_STATUS[status] || status}#{EOL}" if status server = options.delete('server') buf << "Server: #{server}#{EOL}" if server connection = options.delete('connection') buf << "Connection: #{connection}#{EOL}" if connection type = options.delete('type') buf << "Content-Type: #{type}#{EOL}" #if type length = options.delete('length') buf << "Content-Length: #{length}#{EOL}" if length language = options.delete('language') buf << "Content-Language: #{language}#{EOL}" if language expires = options.delete('expires') buf << "Expires: #{CGI.rfc1123_date(expires)}#{EOL}" if expires ## cookie if cookie = options.delete('cookie') case cookie when String, Cookie buf << "Set-Cookie: #{cookie}#{EOL}" when Array arr = cookie arr.each {|c| buf << "Set-Cookie: #{c}#{EOL}" } when Hash hash = cookie hash.each {|name, c| buf << "Set-Cookie: #{c}#{EOL}" } end end if @output_cookies @output_cookies.each {|c| buf << "Set-Cookie: #{c}#{EOL}" } end ## other headers options.each do |key, value| buf << "#{key}: #{value}#{EOL}" end return buf end # _header_for_hash private :_header_for_hash def nph? #:nodoc: return /IIS\/(\d+)/.match($CGI_ENV['SERVER_SOFTWARE']) && $1.to_i < 5 end def _header_for_modruby(buf) #:nodoc: request = Apache::request buf.scan(/([^:]+): (.+)#{EOL}/o) do |name, value| warn sprintf("name:%s value:%s\n", name, value) if $DEBUG case name when 'Set-Cookie' request.headers_out.add(name, value) when /^status$/i request.status_line = value request.status = value.to_i when /^content-type$/i request.content_type = value when /^content-encoding$/i request.content_encoding = value when /^location$/i request.status = 302 if request.status == 200 request.headers_out[name] = value else request.headers_out[name] = value end end request.send_http_header return '' end private :_header_for_modruby # # Print an HTTP header and body to $DEFAULT_OUTPUT ($>) # # The header is provided by +options+, as for #header(). # The body of the document is that returned by the passed- # in block. This block takes no arguments. It is required. # # cgi = CGI.new # cgi.out{ "string" } # # Content-Type: text/html # # Content-Length: 6 # # # # string # # cgi.out("text/plain") { "string" } # # Content-Type: text/plain # # Content-Length: 6 # # # # string # # cgi.out("nph" => true, # "status" => "OK", # == "200 OK" # "server" => ENV['SERVER_SOFTWARE'], # "connection" => "close", # "type" => "text/html", # "charset" => "iso-2022-jp", # # Content-Type: text/html; charset=iso-2022-jp # "language" => "ja", # "expires" => Time.now + (3600 * 24 * 30), # "cookie" => [cookie1, cookie2], # "my_header1" => "my_value", # "my_header2" => "my_value") { "string" } # # Content-Length is automatically calculated from the size of # the String returned by the content block. # # If ENV['REQUEST_METHOD'] == "HEAD", then only the header # is outputted (the content block is still required, but it # is ignored). # # If the charset is "iso-2022-jp" or "euc-jp" or "shift_jis" then # the content is converted to this charset, and the language is set # to "ja". def out(options = "text/html") # :yield: options = { "type" => options } if options.kind_of?(String) content = yield options["length"] = content.bytesize.to_s output = stdoutput output.binmode if defined? output.binmode output.print header(options) output.print content unless "HEAD" == env_table['REQUEST_METHOD'] end # Print an argument or list of arguments to the default output stream # # cgi = CGI.new # cgi.print # default: cgi.print == $DEFAULT_OUTPUT.print def print(*options) stdoutput.print(*options) end # Parse an HTTP query string into a hash of key=>value pairs. # # params = CGI::parse("query_string") # # {"name1" => ["value1", "value2", ...], # # "name2" => ["value1", "value2", ...], ... } # def CGI::parse(query) params = {} query.split(/[&;]/).each do |pairs| key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) } if key && value params.has_key?(key) ? params[key].push(value) : params[key] = [value] elsif key params[key]=[] end end params.default=[].freeze params end # Maximum content length of post data ##MAX_CONTENT_LENGTH = 2 * 1024 * 1024 # Maximum content length of multipart data MAX_MULTIPART_LENGTH = 128 * 1024 * 1024 # Maximum number of request parameters when multipart MAX_MULTIPART_COUNT = 128 # Mixin module. It provides the follow functionality groups: # # 1. Access to CGI environment variables as methods. See # documentation to the CGI class for a list of these variables. # # 2. Access to cookies, including the cookies attribute. # # 3. Access to parameters, including the params attribute, and overloading # [] to perform parameter value lookup by key. # # 4. The initialize_query method, for initialising the above # mechanisms, handling multipart forms, and allowing the # class to be used in "offline" mode. # module QueryExtension %w[ CONTENT_LENGTH SERVER_PORT ].each do |env| define_method(env.sub(/^HTTP_/, '').downcase) do (val = env_table[env]) && Integer(val) end end %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_HOST HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT ].each do |env| define_method(env.sub(/^HTTP_/, '').downcase) do env_table[env] end end # Get the raw cookies as a string. def raw_cookie env_table["HTTP_COOKIE"] end # Get the raw RFC2965 cookies as a string. def raw_cookie2 env_table["HTTP_COOKIE2"] end # Get the cookies as a hash of cookie-name=>Cookie pairs. attr_accessor :cookies # Get the parameters as a hash of name=>values pairs, where # values is an Array. attr_reader :params # Get the uploaded files as a hash of name=>values pairs attr_reader :files # Set all the parameters. def params=(hash) @params.clear @params.update(hash) end def read_multipart(boundary, content_length) ## read first boundary stdin = $stdin first_line = "--#{boundary}#{EOL}" content_length -= first_line.bytesize status = stdin.read(first_line.bytesize) raise EOFError.new("no content body") unless status raise EOFError.new("bad content body") unless first_line == status ## parse and set params params = {} @files = {} boundary_rexp = /--#{Regexp.quote(boundary)}(#{EOL}|--)/ boundary_size = "#{EOL}--#{boundary}#{EOL}".bytesize boundary_end = nil buf = '' bufsize = 10 * 1024 max_count = MAX_MULTIPART_COUNT n = 0 while true (n += 1) < max_count or raise StandardError.new("too many parameters.") ## create body (StringIO or Tempfile) body = create_body(bufsize < content_length) class << body if method_defined?(:path) alias local_path path else def local_path nil end end attr_reader :original_filename, :content_type end ## find head and boundary head = nil separator = EOL * 2 until head && matched = boundary_rexp.match(buf) if !head && pos = buf.index(separator) len = pos + EOL.bytesize head = buf[0, len] buf = buf[(pos+separator.bytesize)..-1] else if head && buf.size > boundary_size len = buf.size - boundary_size body.print(buf[0, len]) buf[0, len] = '' end c = stdin.read(bufsize < content_length ? bufsize : content_length) raise EOFError.new("bad content body") if c.nil? || c.empty? buf << c content_length -= c.bytesize end end ## read to end of boundary m = matched len = m.begin(0) s = buf[0, len] if s =~ /(\r?\n)\z/ s = buf[0, len - $1.bytesize] end body.print(s) buf = buf[m.end(0)..-1] boundary_end = m[1] content_length = -1 if boundary_end == '--' ## reset file cursor position body.rewind ## original filename /Content-Disposition:.* filename=(?:"(.*?)"|([^;\r\n]*))/i.match(head) filename = $1 || $2 || '' filename = CGI.unescape(filename) if unescape_filename?() body.instance_variable_set('@original_filename', filename.taint) ## content type /Content-Type: (.*)/i.match(head) (content_type = $1 || '').chomp! body.instance_variable_set('@content_type', content_type.taint) ## query parameter name /Content-Disposition:.* name=(?:"(.*?)"|([^;\r\n]*))/i.match(head) name = $1 || $2 || '' if body.original_filename.empty? value=body.read.dup.force_encoding(@accept_charset) (params[name] ||= []) << value unless value.valid_encoding? if @accept_charset_error_block @accept_charset_error_block.call(name,value) else raise InvalidEncoding,"Accept-Charset encoding error" end end class << params[name].last;self;end.class_eval do define_method(:read){self} define_method(:original_filename){""} define_method(:content_type){""} end else (params[name] ||= []) << body @files[name]=body end ## break loop break if buf.size == 0 break if content_length == -1 end raise EOFError, "bad boundary end of body part" unless boundary_end =~ /--/ params.default = [] params end # read_multipart private :read_multipart def create_body(is_large) #:nodoc: if is_large require 'tempfile' body = Tempfile.new('CGI', encoding: "ascii-8bit") else begin require 'stringio' body = StringIO.new("".force_encoding("ascii-8bit")) rescue LoadError require 'tempfile' body = Tempfile.new('CGI', encoding: "ascii-8bit") end end body.binmode if defined? body.binmode return body end def unescape_filename? #:nodoc: user_agent = $CGI_ENV['HTTP_USER_AGENT'] return /Mac/i.match(user_agent) && /Mozilla/i.match(user_agent) && !/MSIE/i.match(user_agent) end # offline mode. read name=value pairs on standard input. def read_from_cmdline require "shellwords" string = unless ARGV.empty? ARGV.join(' ') else if STDIN.tty? STDERR.print( %|(offline mode: enter name=value pairs on standard input)\n| ) end array = readlines rescue nil if not array.nil? array.join(' ').gsub(/\n/n, '') else "" end end.gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26') words = Shellwords.shellwords(string) if words.find{|x| /=/n.match(x) } words.join('&') else words.join('+') end end private :read_from_cmdline # A wrapper class to use a StringIO object as the body and switch # to a TempFile when the passed threshold is passed. # Initialize the data from the query. # # Handles multipart forms (in particular, forms that involve file uploads). # Reads query parameters in the @params field, and cookies into @cookies. def initialize_query() if ("POST" == env_table['REQUEST_METHOD']) and %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|.match(env_table['CONTENT_TYPE']) raise StandardError.new("too large multipart data.") if env_table['CONTENT_LENGTH'].to_i > MAX_MULTIPART_LENGTH boundary = $1.dup @multipart = true @params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH'])) else @multipart = false @params = CGI::parse( case env_table['REQUEST_METHOD'] when "GET", "HEAD" if defined?(MOD_RUBY) Apache::request.args or "" else env_table['QUERY_STRING'] or "" end when "POST" stdinput.binmode if defined? stdinput.binmode stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or '' else read_from_cmdline end.dup.force_encoding(@accept_charset) ) unless Encoding.find(@accept_charset) == Encoding::ASCII_8BIT @params.each do |key,values| values.each do |value| unless value.valid_encoding? if @accept_charset_error_block @accept_charset_error_block.call(key,value) else raise InvalidEncoding,"Accept-Charset encoding error" end end end end end end @cookies = CGI::Cookie::parse((env_table['HTTP_COOKIE'] or env_table['COOKIE'])) end private :initialize_query def multipart? @multipart end # Get the value for the parameter with a given key. # # If the parameter has multiple values, only the first will be # retrieved; use #params() to get the array of values. def [](key) params = @params[key] return '' unless params value = params[0] if @multipart if value return value elsif defined? StringIO StringIO.new("".force_encoding("ascii-8bit")) else Tempfile.new("CGI",encoding:"ascii-8bit") end else str = if value then value.dup else "" end str end end # Return all parameter keys as an array. def keys(*args) @params.keys(*args) end # Returns true if a given parameter key exists in the query. def has_key?(*args) @params.has_key?(*args) end alias key? has_key? alias include? has_key? end # QueryExtension # InvalidEncoding Exception class class InvalidEncoding < Exception; end # @@accept_charset is default accept character set. # This default value default is "UTF-8" # If you want to change the default accept character set # when create a new CGI instance, set this: # # CGI.accept_charset = "EUC-JP" # @@accept_charset="UTF-8" def self.accept_charset @@accept_charset end def self.accept_charset=(accept_charset) @@accept_charset=accept_charset end # Create a new CGI instance. # # CGI accept constructor parameters either in a hash, string as a block. # But string is as same as using :tag_maker of hash. # # CGI.new("html3") #=> CGI.new(:tag_maker=>"html3") # # And, if you specify string, @accept_charset cannot be changed. # Instead, please use hash parameter. # # == accept_charset # # :accept_charset specifies encoding of received query string. # ( Default value is @@accept_charset. ) # If not valid, raise CGI::InvalidEncoding # # Example. Suppose @@accept_charset # => "UTF-8" # # when not specified: # # cgi=CGI.new # @accept_charset # => "UTF-8" # # when specified "EUC-JP": # # cgi=CGI.new(:accept_charset => "EUC-JP") # => "EUC-JP" # # == block # # When you use a block, you can write a process # that query encoding is invalid. Example: # # encoding_error={} # cgi=CGI.new(:accept_charset=>"EUC-JP") do |name,value| # encoding_error[key] = value # end # # == tag_maker # # :tag_maker specifies which version of HTML to load the HTML generation # methods for. The following versions of HTML are supported: # # html3:: HTML 3.x # html4:: HTML 4.0 # html4Tr:: HTML 4.0 Transitional # html4Fr:: HTML 4.0 with Framesets # # If not specified, no HTML generation methods will be loaded. # # If the CGI object is not created in a standard CGI call environment # (that is, it can't locate REQUEST_METHOD in its environment), then # it will run in "offline" mode. In this mode, it reads its parameters # from the command line or (failing that) from standard input. Otherwise, # cookies and other parameters are parsed automatically from the standard # CGI locations, which varies according to the REQUEST_METHOD. It works this: # # CGI.new(:tag_maker=>"html3") # # This will be obsolete: # # CGI.new("html3") # attr_reader :accept_charset def initialize(options = {},&block) @accept_charset_error_block=block if block_given? @options={:accept_charset=>@@accept_charset} case options when Hash @options.merge!(options) when String @options[:tag_maker]=options end @accept_charset=@options[:accept_charset] if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE") Apache.request.setup_cgi_env end extend QueryExtension @multipart = false initialize_query() # set @params, @cookies @output_cookies = nil @output_hidden = nil case @options[:tag_maker] when "html3" require 'cgi/html' extend Html3 element_init() extend HtmlExtension when "html4" require 'cgi/html' extend Html4 element_init() extend HtmlExtension when "html4Tr" require 'cgi/html' extend Html4Tr element_init() extend HtmlExtension when "html4Fr" require 'cgi/html' extend Html4Tr element_init() extend Html4Fr element_init() extend HtmlExtension end end end # class CGI 0707010018461f000081a40000000000000000000000014dc8deb50000005b000000b600010002ffffffffffffffff0000002800000000root/usr/local/lib/ruby/1.9.1/ripper.rbrequire 'ripper/core' require 'ripper/lexer' require 'ripper/filter' require 'ripper/sexp' 070701001846dd000081a40000000000000000000000014cc2dad100002052000000b600010002ffffffffffffffff0000002400000000root/usr/local/lib/ruby/1.9.1/un.rb# # = un.rb # # Copyright (c) 2003 WATANABE Hirofumi # # This program is free software. # You can distribute/modify this program under the same terms of Ruby. # # == Utilities to replace common UNIX commands in Makefiles etc # # == SYNOPSIS # # ruby -run -e cp -- [OPTION] SOURCE DEST # ruby -run -e ln -- [OPTION] TARGET LINK_NAME # ruby -run -e mv -- [OPTION] SOURCE DEST # ruby -run -e rm -- [OPTION] FILE # ruby -run -e mkdir -- [OPTION] DIRS # ruby -run -e rmdir -- [OPTION] DIRS # ruby -run -e install -- [OPTION] SOURCE DEST # ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE # ruby -run -e touch -- [OPTION] FILE # ruby -run -e wait_writable -- [OPTION] FILE # ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION] # ruby -run -e httpd -- [OPTION] DocumentRoot # ruby -run -e help [COMMAND] require "fileutils" require "optparse" module FileUtils # @fileutils_label = "" @fileutils_output = $stdout end def setup(options = "", *long_options) opt_hash = {} argv = [] OptionParser.new do |o| options.scan(/.:?/) do |s| opt_name = s.delete(":").intern o.on("-" + s.tr(":", " ")) do |val| opt_hash[opt_name] = val end end long_options.each do |s| opt_name, arg_name = s.split(/(?=[\s=])/, 2) opt_name.sub!(/\A--/, '') s = "--#{opt_name.gsub(/([A-Z]+|[a-z])([A-Z])/, '\1-\2').downcase}#{arg_name}" puts "#{opt_name}=>#{s}" if $DEBUG opt_name = opt_name.intern o.on(s) do |val| opt_hash[opt_name] = val end end o.on("-v") do opt_hash[:verbose] = true end o.order!(ARGV) do |x| if /[*?\[{]/ =~ x argv.concat(Dir[x]) else argv << x end end end yield argv, opt_hash end ## # Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY # # ruby -run -e cp -- [OPTION] SOURCE DEST # # -p preserve file attributes if possible # -r copy recursively # -v verbose # def cp setup("pr") do |argv, options| cmd = "cp" cmd += "_r" if options.delete :r options[:preserve] = true if options.delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, options end end ## # Create a link to the specified TARGET with LINK_NAME. # # ruby -run -e ln -- [OPTION] TARGET LINK_NAME # # -s make symbolic links instead of hard links # -f remove existing destination files # -v verbose # def ln setup("sf") do |argv, options| cmd = "ln" cmd += "_s" if options.delete :s options[:force] = true if options.delete :f dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, options end end ## # Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. # # ruby -run -e mv -- [OPTION] SOURCE DEST # # -v verbose # def mv setup do |argv, options| dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.mv argv, dest, options end end ## # Remove the FILE # # ruby -run -e rm -- [OPTION] FILE # # -f ignore nonexistent files # -r remove the contents of directories recursively # -v verbose # def rm setup("fr") do |argv, options| cmd = "rm" cmd += "_r" if options.delete :r options[:force] = true if options.delete :f FileUtils.send cmd, argv, options end end ## # Create the DIR, if they do not already exist. # # ruby -run -e mkdir -- [OPTION] DIR # # -p no error if existing, make parent directories as needed # -v verbose # def mkdir setup("p") do |argv, options| cmd = "mkdir" cmd += "_p" if options.delete :p FileUtils.send cmd, argv, options end end ## # Remove the DIR. # # ruby -run -e rmdir -- [OPTION] DIR # # -p remove DIRECTORY and its ancestors. # -v verbose # def rmdir setup("p") do |argv, options| options[:parents] = true if options.delete :p FileUtils.rmdir argv, options end end ## # Copy SOURCE to DEST. # # ruby -run -e install -- [OPTION] SOURCE DEST # # -p apply access/modification times of SOURCE files to # corresponding destination files # -m set permission mode (as in chmod), instead of 0755 # -v verbose # def install setup("pm:") do |argv, options| options[:mode] = (mode = options.delete :m) ? mode.oct : 0755 options[:preserve] = true if options.delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.install argv, dest, options end end ## # Change the mode of each FILE to OCTAL-MODE. # # ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE # # -v verbose # def chmod setup do |argv, options| mode = argv.shift.oct FileUtils.chmod mode, argv, options end end ## # Update the access and modification times of each FILE to the current time. # # ruby -run -e touch -- [OPTION] FILE # # -v verbose # def touch setup do |argv, options| FileUtils.touch argv, options end end ## # Wait until the file becomes writable. # # ruby -run -e wait_writable -- [OPTION] FILE # # -n RETRY count to retry # -w SEC each wait time in seconds # -v verbose # def wait_writable setup("n:w:v") do |argv, options| verbose = options[:verbose] n = options[:n] and n = Integer(n) wait = (wait = options[:w]) ? Float(wait) : 0.2 argv.each do |file| begin open(file, "r+b") rescue Errno::ENOENT break rescue Errno::EACCES => e raise if n and (n -= 1) <= 0 puts e STDOUT.flush sleep wait retry end end end end ## # Create makefile using mkmf. # # ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION] # # -d ARGS run dir_config # -h ARGS run have_header # -l ARGS run have_library # -f ARGS run have_func # -v ARGS run have_var # -t ARGS run have_type # -m ARGS run have_macro # -c ARGS run have_const # --vendor install to vendor_ruby # def mkmf setup("d:h:l:f:v:t:m:c:", "vendor") do |argv, options| require 'mkmf' opt = options[:d] and opt.split(/:/).each {|n| dir_config(*n.split(/,/))} opt = options[:h] and opt.split(/:/).each {|n| have_header(*n.split(/,/))} opt = options[:l] and opt.split(/:/).each {|n| have_library(*n.split(/,/))} opt = options[:f] and opt.split(/:/).each {|n| have_func(*n.split(/,/))} opt = options[:v] and opt.split(/:/).each {|n| have_var(*n.split(/,/))} opt = options[:t] and opt.split(/:/).each {|n| have_type(*n.split(/,/))} opt = options[:m] and opt.split(/:/).each {|n| have_macro(*n.split(/,/))} opt = options[:c] and opt.split(/:/).each {|n| have_const(*n.split(/,/))} $configure_args["--vendor"] = true if options[:vendor] create_makefile(*argv) end end ## # Run WEBrick HTTP server. # # ruby -run -e httpd -- [OPTION] DocumentRoot # # --bind-address=ADDR address to bind # --port=NUM listening port number # --max-clients=MAX max number of simultaneous clients # --temp-dir=DIR temporary directory # --do-not-reverse-lookup disable reverse lookup # --request-timeout=SECOND request timeout in seconds # --http-version=VERSION HTTP version # -v verbose # def httpd setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR", "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION") do |argv, options| require 'webrick' opt = options[:RequestTimeout] and options[:RequestTimeout] = opt.to_i [:Port, :MaxClients].each do |name| opt = options[name] and (options[name] = Integer(opt)) rescue nil end unless argv.empty? options[:DocumentRoot] = argv.shift end s = WEBrick::HTTPServer.new(options) shut = proc {s.shutdown} Signal.trap("TERM", shut) Signal.trap("QUIT", shut) if Signal.list.has_key?("QUIT") if STDIN.tty? Signal.trap("HUP", shut) if Signal.list.has_key?("HUP") Signal.trap("INT", shut) end s.start end end ## # Display help message. # # ruby -run -e help [COMMAND] # def help setup do |argv,| all = argv.empty? open(__FILE__) do |me| while me.gets("##\n") if help = me.gets("\n\n") if all or argv.delete help[/-e \w+/].sub(/-e /, "") print help.gsub(/^# ?/, "") end end end end end end 070701001846eb000041ed0000000000000000000000044dc8e19e00000000000000b600010002ffffffffffffffff0000002600000000root/usr/local/lib/ruby/1.9.1/webrick0707010018470a000081a40000000000000000000000014ac5d9d300000476000000b600010002ffffffffffffffff0000003500000000root/usr/local/lib/ruby/1.9.1/webrick/httpversion.rb# # HTTPVersion.rb -- presentation of HTTP version # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $ module WEBrick class HTTPVersion include Comparable attr_accessor :major, :minor def self.convert(version) version.is_a?(self) ? version : new(version) end def initialize(version) case version when HTTPVersion @major, @minor = version.major, version.minor when String if /^(\d+)\.(\d+)$/ =~ version @major, @minor = $1.to_i, $2.to_i end end if @major.nil? || @minor.nil? raise ArgumentError, format("cannot convert %s into %s", version.class, self.class) end end def <=>(other) unless other.is_a?(self.class) other = self.class.new(other) end if (ret = @major <=> other.major) == 0 return @minor <=> other.minor end return ret end def to_s format("%d.%d", @major, @minor) end end end 07070100184700000081a40000000000000000000000014ac5d9d30000029d000000b600010002ffffffffffffffff0000003500000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet.rb# # httpservlet.rb -- HTTPServlet Utility File # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpservlet.rb,v 1.21 2003/02/23 12:24:46 gotoyuzo Exp $ require 'webrick/httpservlet/abstract' require 'webrick/httpservlet/filehandler' require 'webrick/httpservlet/cgihandler' require 'webrick/httpservlet/erbhandler' require 'webrick/httpservlet/prochandler' module WEBrick module HTTPServlet FileHandler.add_handler("cgi", CGIHandler) FileHandler.add_handler("rhtml", ERBHandler) end end 070701001846f0000081a40000000000000000000000014ac5d9d300000c21000000b600010002ffffffffffffffff0000003000000000root/usr/local/lib/ruby/1.9.1/webrick/cookie.rb# # cookie.rb -- Cookie class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: cookie.rb,v 1.16 2002/09/21 12:23:35 gotoyuzo Exp $ require 'time' require 'webrick/httputils' module WEBrick class Cookie attr_reader :name attr_accessor :value, :version attr_accessor :domain, :path, :secure attr_accessor :comment, :max_age #attr_accessor :comment_url, :discard, :port def initialize(name, value) @name = name @value = value @version = 0 # Netscape Cookie @domain = @path = @secure = @comment = @max_age = @expires = @comment_url = @discard = @port = nil end def expires=(t) @expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s) end def expires @expires && Time.parse(@expires) end def to_s ret = "" ret << @name << "=" << @value ret << "; " << "Version=" << @version.to_s if @version > 0 ret << "; " << "Domain=" << @domain if @domain ret << "; " << "Expires=" << @expires if @expires ret << "; " << "Max-Age=" << @max_age.to_s if @max_age ret << "; " << "Comment=" << @comment if @comment ret << "; " << "Path=" << @path if @path ret << "; " << "Secure" if @secure ret end # Cookie::parse() # It parses Cookie field sent from the user agent. def self.parse(str) if str ret = [] cookie = nil ver = 0 str.split(/[;,]\s+/).each{|x| key, val = x.split(/=/,2) val = val ? HTTPUtils::dequote(val) : "" case key when "$Version"; ver = val.to_i when "$Path"; cookie.path = val when "$Domain"; cookie.domain = val when "$Port"; cookie.port = val else ret << cookie if cookie cookie = self.new(key, val) cookie.version = ver end } ret << cookie if cookie ret end end def self.parse_set_cookie(str) cookie_elem = str.split(/;/) first_elem = cookie_elem.shift first_elem.strip! key, value = first_elem.split(/=/, 2) cookie = new(key, HTTPUtils.dequote(value)) cookie_elem.each{|pair| pair.strip! key, value = pair.split(/=/, 2) if value value = HTTPUtils.dequote(value.strip) end case key.downcase when "domain" then cookie.domain = value when "path" then cookie.path = value when "expires" then cookie.expires = value when "max-age" then cookie.max_age = Integer(value) when "comment" then cookie.comment = value when "version" then cookie.version = Integer(value) when "secure" then cookie.secure = true end } return cookie end def self.parse_set_cookies(str) return str.split(/,(?=[^;,]*=)|,$/).collect{|c| parse_set_cookie(c) } end end end 07070100184701000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000003200000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet07070100184704000081a40000000000000000000000014b99ffca00000d25000000b600010002ffffffffffffffff0000004000000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgihandler.rb# # cgihandler.rb -- CGIHandler Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: cgihandler.rb,v 1.27 2003/03/21 19:56:01 gotoyuzo Exp $ require 'rbconfig' require 'tempfile' require 'webrick/config' require 'webrick/httpservlet/abstract' module WEBrick module HTTPServlet class CGIHandler < AbstractServlet Ruby = RbConfig.ruby CGIRunner = "\"#{Ruby}\" \"#{WEBrick::Config::LIBDIR}/httpservlet/cgi_runner.rb\"" def initialize(server, name) super(server, name) @script_filename = name @tempdir = server[:TempDir] @cgicmd = "#{CGIRunner} #{server[:CGIInterpreter]}" end def do_GET(req, res) data = nil status = -1 cgi_in = IO::popen(@cgicmd, "wb") cgi_out = Tempfile.new("webrick.cgiout.", @tempdir, mode: IO::BINARY) cgi_out.set_encoding("ASCII-8BIT") cgi_err = Tempfile.new("webrick.cgierr.", @tempdir, mode: IO::BINARY) cgi_err.set_encoding("ASCII-8BIT") begin cgi_in.sync = true meta = req.meta_vars meta["SCRIPT_FILENAME"] = @script_filename meta["PATH"] = @config[:CGIPathEnv] if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM meta["SystemRoot"] = ENV["SystemRoot"] end dump = Marshal.dump(meta) cgi_in.write("%8d" % cgi_out.path.bytesize) cgi_in.write(cgi_out.path) cgi_in.write("%8d" % cgi_err.path.bytesize) cgi_in.write(cgi_err.path) cgi_in.write("%8d" % dump.bytesize) cgi_in.write(dump) if req.body and req.body.bytesize > 0 cgi_in.write(req.body) end ensure cgi_in.close status = $?.exitstatus sleep 0.1 if /mswin|bccwin|mingw/ =~ RUBY_PLATFORM data = cgi_out.read cgi_out.close(true) if errmsg = cgi_err.read if errmsg.bytesize > 0 @logger.error("CGIHandler: #{@script_filename}:\n" + errmsg) end end cgi_err.close(true) end if status != 0 @logger.error("CGIHandler: #{@script_filename} exit with #{status}") end data = "" unless data raw_header, body = data.split(/^[\xd\xa]+/, 2) raise HTTPStatus::InternalServerError, "Premature end of script headers: #{@script_filename}" if body.nil? begin header = HTTPUtils::parse_header(raw_header) if /^(\d+)/ =~ header['status'][0] res.status = $1.to_i header.delete('status') end if header.has_key?('location') # RFC 3875 6.2.3, 6.2.4 res.status = 302 unless (300...400) === res.status end if header.has_key?('set-cookie') header['set-cookie'].each{|k| res.cookies << Cookie.parse_set_cookie(k) } header.delete('set-cookie') end header.each{|key, val| res[key] = val.join(", ") } rescue => ex raise HTTPStatus::InternalServerError, ex.message end res.body = body end alias do_POST do_GET end end end 07070100184707000081a40000000000000000000000014ac5d9d3000002aa000000b600010002ffffffffffffffff0000004100000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/prochandler.rb# # prochandler.rb -- ProcHandler Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: prochandler.rb,v 1.7 2002/09/21 12:23:42 gotoyuzo Exp $ require 'webrick/httpservlet/abstract.rb' module WEBrick module HTTPServlet class ProcHandler < AbstractServlet def get_instance(server, *options) self end def initialize(proc) @proc = proc end def do_GET(request, response) @proc.call(request, response) end alias do_POST do_GET end end end 07070100184705000081a40000000000000000000000014ac5d9d3000005a5000000b600010002ffffffffffffffff0000004000000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/erbhandler.rb# # erbhandler.rb -- ERBHandler Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: erbhandler.rb,v 1.25 2003/02/24 19:25:31 gotoyuzo Exp $ require 'webrick/httpservlet/abstract.rb' require 'erb' module WEBrick module HTTPServlet class ERBHandler < AbstractServlet def initialize(server, name) super(server, name) @script_filename = name end def do_GET(req, res) unless defined?(ERB) @logger.warn "#{self.class}: ERB not defined." raise HTTPStatus::Forbidden, "ERBHandler cannot work." end begin data = open(@script_filename){|io| io.read } res.body = evaluate(ERB.new(data), req, res) res['content-type'] = HTTPUtils::mime_type(@script_filename, @config[:MimeTypes]) rescue StandardError => ex raise rescue Exception => ex @logger.error(ex) raise HTTPStatus::InternalServerError, ex.message end end alias do_POST do_GET private def evaluate(erb, servlet_request, servlet_response) Module.new.module_eval{ meta_vars = servlet_request.meta_vars query = servlet_request.query erb.result(binding) } end end end end 07070100184703000081a40000000000000000000000014ac5d9d3000003e5000000b600010002ffffffffffffffff0000004000000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/cgi_runner.rb# # cgi_runner.rb -- CGI launcher. # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $ def sysread(io, size) buf = "" while size > 0 tmp = io.sysread(size) buf << tmp size -= tmp.bytesize end return buf end STDIN.binmode buf = "" len = sysread(STDIN, 8).to_i out = sysread(STDIN, len) STDOUT.reopen(open(out, "w")) len = sysread(STDIN, 8).to_i err = sysread(STDIN, len) STDERR.reopen(open(err, "w")) len = sysread(STDIN, 8).to_i dump = sysread(STDIN, len) hash = Marshal.restore(dump) ENV.keys.each{|name| ENV.delete(name) } hash.each{|k, v| ENV[k] = v if v } dir = File::dirname(ENV["SCRIPT_FILENAME"]) Dir::chdir dir if interpreter = ARGV[0] argv = ARGV.dup argv << ENV["SCRIPT_FILENAME"] exec(*argv) # NOTREACHED end exec ENV["SCRIPT_FILENAME"] 07070100184706000081a40000000000000000000000014c1f94a2000037ff000000b600010002ffffffffffffffff0000004100000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/filehandler.rb# # filehandler.rb -- FileHandler Module # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: filehandler.rb,v 1.44 2003/06/07 01:34:51 gotoyuzo Exp $ require 'thread' require 'time' require 'webrick/htmlutils' require 'webrick/httputils' require 'webrick/httpstatus' module WEBrick module HTTPServlet class DefaultFileHandler < AbstractServlet def initialize(server, local_path) super(server, local_path) @local_path = local_path end def do_GET(req, res) st = File::stat(@local_path) mtime = st.mtime res['etag'] = sprintf("%x-%x-%x", st.ino, st.size, st.mtime.to_i) if not_modified?(req, res, mtime, res['etag']) res.body = '' raise HTTPStatus::NotModified elsif req['range'] make_partial_content(req, res, @local_path, st.size) raise HTTPStatus::PartialContent else mtype = HTTPUtils::mime_type(@local_path, @config[:MimeTypes]) res['content-type'] = mtype res['content-length'] = st.size res['last-modified'] = mtime.httpdate res.body = open(@local_path, "rb") end end def not_modified?(req, res, mtime, etag) if ir = req['if-range'] begin if Time.httpdate(ir) >= mtime return true end rescue if HTTPUtils::split_header_value(ir).member?(res['etag']) return true end end end if (ims = req['if-modified-since']) && Time.parse(ims) >= mtime return true end if (inm = req['if-none-match']) && HTTPUtils::split_header_value(inm).member?(res['etag']) return true end return false end def make_partial_content(req, res, filename, filesize) mtype = HTTPUtils::mime_type(filename, @config[:MimeTypes]) unless ranges = HTTPUtils::parse_range_header(req['range']) raise HTTPStatus::BadRequest, "Unrecognized range-spec: \"#{req['range']}\"" end open(filename, "rb"){|io| if ranges.size > 1 time = Time.now boundary = "#{time.sec}_#{time.usec}_#{Process::pid}" body = '' ranges.each{|range| first, last = prepare_range(range, filesize) next if first < 0 io.pos = first content = io.read(last-first+1) body << "--" << boundary << CRLF body << "Content-Type: #{mtype}" << CRLF body << "Content-Range: bytes #{first}-#{last}/#{filesize}" << CRLF body << CRLF body << content body << CRLF } raise HTTPStatus::RequestRangeNotSatisfiable if body.empty? body << "--" << boundary << "--" << CRLF res["content-type"] = "multipart/byteranges; boundary=#{boundary}" res.body = body elsif range = ranges[0] first, last = prepare_range(range, filesize) raise HTTPStatus::RequestRangeNotSatisfiable if first < 0 if last == filesize - 1 content = io.dup content.pos = first else io.pos = first content = io.read(last-first+1) end res['content-type'] = mtype res['content-range'] = "bytes #{first}-#{last}/#{filesize}" res['content-length'] = last - first + 1 res.body = content else raise HTTPStatus::BadRequest end } end def prepare_range(range, filesize) first = range.first < 0 ? filesize + range.first : range.first return -1, -1 if first < 0 || first >= filesize last = range.last < 0 ? filesize + range.last : range.last last = filesize - 1 if last >= filesize return first, last end end class FileHandler < AbstractServlet HandlerTable = Hash.new def self.add_handler(suffix, handler) HandlerTable[suffix] = handler end def self.remove_handler(suffix) HandlerTable.delete(suffix) end def initialize(server, root, options={}, default=Config::FileHandler) @config = server.config @logger = @config[:Logger] @root = File.expand_path(root) if options == true || options == false options = { :FancyIndexing => options } end @options = default.dup.update(options) end def service(req, res) # if this class is mounted on "/" and /~username is requested. # we're going to override path informations before invoking service. if defined?(Etc) && @options[:UserDir] && req.script_name.empty? if %r|^(/~([^/]+))| =~ req.path_info script_name, user = $1, $2 path_info = $' begin passwd = Etc::getpwnam(user) @root = File::join(passwd.dir, @options[:UserDir]) req.script_name = script_name req.path_info = path_info rescue @logger.debug "#{self.class}#do_GET: getpwnam(#{user}) failed" end end end prevent_directory_traversal(req, res) super(req, res) end def do_GET(req, res) unless exec_handler(req, res) set_dir_list(req, res) end end def do_POST(req, res) unless exec_handler(req, res) raise HTTPStatus::NotFound, "`#{req.path}' not found." end end def do_OPTIONS(req, res) unless exec_handler(req, res) super(req, res) end end # ToDo # RFC2518: HTTP Extensions for Distributed Authoring -- WEBDAV # # PROPFIND PROPPATCH MKCOL DELETE PUT COPY MOVE # LOCK UNLOCK # RFC3253: Versioning Extensions to WebDAV # (Web Distributed Authoring and Versioning) # # VERSION-CONTROL REPORT CHECKOUT CHECK_IN UNCHECKOUT # MKWORKSPACE UPDATE LABEL MERGE ACTIVITY private def trailing_pathsep?(path) # check for trailing path separator: # File.dirname("/aaaa/bbbb/") #=> "/aaaa") # File.dirname("/aaaa/bbbb/x") #=> "/aaaa/bbbb") # File.dirname("/aaaa/bbbb") #=> "/aaaa") # File.dirname("/aaaa/bbbbx") #=> "/aaaa") return File.dirname(path) != File.dirname(path+"x") end def prevent_directory_traversal(req, res) # Preventing directory traversal on Windows platforms; # Backslashes (0x5c) in path_info are not interpreted as special # character in URI notation. So the value of path_info should be # normalize before accessing to the filesystem. # dirty hack for filesystem encoding; in nature, File.expand_path # should not be used for path normalization. [Bug #3345] path = req.path_info.dup.force_encoding(Encoding.find("filesystem")) if trailing_pathsep?(req.path_info) # File.expand_path removes the trailing path separator. # Adding a character is a workaround to save it. # File.expand_path("/aaa/") #=> "/aaa" # File.expand_path("/aaa/" + "x") #=> "/aaa/x" expanded = File.expand_path(path + "x") expanded.chop! # remove trailing "x" else expanded = File.expand_path(path) end expanded.force_encoding(req.path_info.encoding) req.path_info = expanded end def exec_handler(req, res) raise HTTPStatus::NotFound, "`#{req.path}' not found" unless @root if set_filename(req, res) handler = get_handler(req, res) call_callback(:HandlerCallback, req, res) h = handler.get_instance(@config, res.filename) h.service(req, res) return true end call_callback(:HandlerCallback, req, res) return false end def get_handler(req, res) suffix1 = (/\.(\w+)\z/ =~ res.filename) && $1.downcase if /\.(\w+)\.([\w\-]+)\z/ =~ res.filename if @options[:AcceptableLanguages].include?($2.downcase) suffix2 = $1.downcase end end handler_table = @options[:HandlerTable] return handler_table[suffix1] || handler_table[suffix2] || HandlerTable[suffix1] || HandlerTable[suffix2] || DefaultFileHandler end def set_filename(req, res) res.filename = @root.dup path_info = req.path_info.scan(%r|/[^/]*|) path_info.unshift("") # dummy for checking @root dir while base = path_info.first break if base == "/" break unless File.directory?(File.expand_path(res.filename + base)) shift_path_info(req, res, path_info) call_callback(:DirectoryCallback, req, res) end if base = path_info.first if base == "/" if file = search_index_file(req, res) shift_path_info(req, res, path_info, file) call_callback(:FileCallback, req, res) return true end shift_path_info(req, res, path_info) elsif file = search_file(req, res, base) shift_path_info(req, res, path_info, file) call_callback(:FileCallback, req, res) return true else raise HTTPStatus::NotFound, "`#{req.path}' not found." end end return false end def check_filename(req, res, name) if nondisclosure_name?(name) || windows_ambiguous_name?(name) @logger.warn("the request refers nondisclosure name `#{name}'.") raise HTTPStatus::NotFound, "`#{req.path}' not found." end end def shift_path_info(req, res, path_info, base=nil) tmp = path_info.shift base = base || tmp req.path_info = path_info.join req.script_name << base res.filename = File.expand_path(res.filename + base) check_filename(req, res, File.basename(res.filename)) end def search_index_file(req, res) @config[:DirectoryIndex].each{|index| if file = search_file(req, res, "/"+index) return file end } return nil end def search_file(req, res, basename) langs = @options[:AcceptableLanguages] path = res.filename + basename if File.file?(path) return basename elsif langs.size > 0 req.accept_language.each{|lang| path_with_lang = path + ".#{lang}" if langs.member?(lang) && File.file?(path_with_lang) return basename + ".#{lang}" end } (langs - req.accept_language).each{|lang| path_with_lang = path + ".#{lang}" if File.file?(path_with_lang) return basename + ".#{lang}" end } end return nil end def call_callback(callback_name, req, res) if cb = @options[callback_name] cb.call(req, res) end end def windows_ambiguous_name?(name) return true if /[. ]+\z/ =~ name return true if /::\$DATA\z/ =~ name return false end def nondisclosure_name?(name) @options[:NondisclosureName].each{|pattern| if File.fnmatch(pattern, name, File::FNM_CASEFOLD) return true end } return false end def set_dir_list(req, res) redirect_to_directory_uri(req, res) unless @options[:FancyIndexing] raise HTTPStatus::Forbidden, "no access permission to `#{req.path}'" end local_path = res.filename list = Dir::entries(local_path).collect{|name| next if name == "." || name == ".." next if nondisclosure_name?(name) next if windows_ambiguous_name?(name) st = (File::stat(File.join(local_path, name)) rescue nil) if st.nil? [ name, nil, -1 ] elsif st.directory? [ name + "/", st.mtime, -1 ] else [ name, st.mtime, st.size ] end } list.compact! if d0 = req.query["N"]; idx = 0 elsif d0 = req.query["M"]; idx = 1 elsif d0 = req.query["S"]; idx = 2 else d0 = "A" ; idx = 0 end d1 = (d0 == "A") ? "D" : "A" if d0 == "A" list.sort!{|a,b| a[idx] <=> b[idx] } else list.sort!{|a,b| b[idx] <=> a[idx] } end res['content-type'] = "text/html" res.body = <<-_end_of_html_ Index of #{HTMLUtils::escape(req.path)}

Index of #{HTMLUtils::escape(req.path)}

_end_of_html_ res.body << "
\n"
        res.body << " Name                          "
        res.body << "Last modified         "
        res.body << "Size\n"
        res.body << "
\n" list.unshift [ "..", File::mtime(local_path+"/.."), -1 ] list.each{ |name, time, size| if name == ".." dname = "Parent Directory" elsif name.bytesize > 25 dname = name.sub(/^(.{23})(?:.*)/, '\1..') else dname = name end s = " #{HTMLUtils::escape(dname)}" s << " " * (30 - dname.bytesize) s << (time ? time.strftime("%Y/%m/%d %H:%M ") : " " * 22) s << (size >= 0 ? size.to_s : "-") << "\n" res.body << s } res.body << "

" res.body << <<-_end_of_html_
#{HTMLUtils::escape(@config[:ServerSoftware])}
at #{req.host}:#{req.port}
_end_of_html_ end end end end 07070100184702000081a40000000000000000000000014ac5d9d3000006e4000000b600010002ffffffffffffffff0000003e00000000root/usr/local/lib/ruby/1.9.1/webrick/httpservlet/abstract.rb# # httpservlet.rb -- HTTPServlet Module # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: abstract.rb,v 1.24 2003/07/11 11:16:46 gotoyuzo Exp $ require 'thread' require 'webrick/htmlutils' require 'webrick/httputils' require 'webrick/httpstatus' module WEBrick module HTTPServlet class HTTPServletError < StandardError; end class AbstractServlet def self.get_instance(config, *options) self.new(config, *options) end def initialize(server, *options) @server = @config = server @logger = @server[:Logger] @options = options end def service(req, res) method_name = "do_" + req.request_method.gsub(/-/, "_") if respond_to?(method_name) __send__(method_name, req, res) else raise HTTPStatus::MethodNotAllowed, "unsupported method `#{req.request_method}'." end end def do_GET(req, res) raise HTTPStatus::NotFound, "not found." end def do_HEAD(req, res) do_GET(req, res) end def do_OPTIONS(req, res) m = self.methods.grep(/\Ado_([A-Z]+)\z/) {$1} m.sort! res["allow"] = m.join(",") end private def redirect_to_directory_uri(req, res) if req.path[-1] != ?/ location = WEBrick::HTTPUtils.escape_path(req.path + "/") if req.query_string && req.query_string.bytesize > 0 location << "?" << req.query_string end res.set_redirect(HTTPStatus::MovedPermanently, location) end end end end end 0707010018470f000081a40000000000000000000000014ac5d9d30000015f000000b600010002ffffffffffffffff0000003100000000root/usr/local/lib/ruby/1.9.1/webrick/version.rb# # version.rb -- version and release date # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: version.rb,v 1.74 2003/07/22 19:20:43 gotoyuzo Exp $ module WEBrick VERSION = "1.3.1" end 070701001846fc000081a40000000000000000000000014b499efb00002cee000000b600010002ffffffffffffffff0000003500000000root/usr/local/lib/ruby/1.9.1/webrick/httprequest.rb# # httprequest.rb -- HTTPRequest Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httprequest.rb,v 1.64 2003/07/13 17:18:22 gotoyuzo Exp $ require 'uri' require 'webrick/httpversion' require 'webrick/httpstatus' require 'webrick/httputils' require 'webrick/cookie' module WEBrick class HTTPRequest BODY_CONTAINABLE_METHODS = [ "POST", "PUT" ] # Request line attr_reader :request_line attr_reader :request_method, :unparsed_uri, :http_version # Request-URI attr_reader :request_uri, :path attr_accessor :script_name, :path_info, :query_string # Header and entity body attr_reader :raw_header, :header, :cookies attr_reader :accept, :accept_charset attr_reader :accept_encoding, :accept_language # Misc attr_accessor :user attr_reader :addr, :peeraddr attr_reader :attributes attr_reader :keep_alive attr_reader :request_time def initialize(config) @config = config @buffer_size = @config[:InputBufferSize] @logger = config[:Logger] @request_line = @request_method = @unparsed_uri = @http_version = nil @request_uri = @host = @port = @path = nil @script_name = @path_info = nil @query_string = nil @query = nil @form_data = nil @raw_header = Array.new @header = nil @cookies = [] @accept = [] @accept_charset = [] @accept_encoding = [] @accept_language = [] @body = "" @addr = @peeraddr = nil @attributes = {} @user = nil @keep_alive = false @request_time = nil @remaining_size = nil @socket = nil @forwarded_proto = @forwarded_host = @forwarded_port = @forwarded_server = @forwarded_for = nil end def parse(socket=nil) @socket = socket begin @peeraddr = socket.respond_to?(:peeraddr) ? socket.peeraddr : [] @addr = socket.respond_to?(:addr) ? socket.addr : [] rescue Errno::ENOTCONN raise HTTPStatus::EOFError end read_request_line(socket) if @http_version.major > 0 read_header(socket) @header['cookie'].each{|cookie| @cookies += Cookie::parse(cookie) } @accept = HTTPUtils.parse_qvalues(self['accept']) @accept_charset = HTTPUtils.parse_qvalues(self['accept-charset']) @accept_encoding = HTTPUtils.parse_qvalues(self['accept-encoding']) @accept_language = HTTPUtils.parse_qvalues(self['accept-language']) end return if @request_method == "CONNECT" return if @unparsed_uri == "*" begin setup_forwarded_info @request_uri = parse_uri(@unparsed_uri) @path = HTTPUtils::unescape(@request_uri.path) @path = HTTPUtils::normalize_path(@path) @host = @request_uri.host @port = @request_uri.port @query_string = @request_uri.query @script_name = "" @path_info = @path.dup rescue raise HTTPStatus::BadRequest, "bad URI `#{@unparsed_uri}'." end if /close/io =~ self["connection"] @keep_alive = false elsif /keep-alive/io =~ self["connection"] @keep_alive = true elsif @http_version < "1.1" @keep_alive = false else @keep_alive = true end end def body(&block) block ||= Proc.new{|chunk| @body << chunk } read_body(@socket, block) @body.empty? ? nil : @body end def query unless @query parse_query() end @query end def content_length return Integer(self['content-length']) end def content_type return self['content-type'] end def [](header_name) if @header value = @header[header_name.downcase] value.empty? ? nil : value.join(", ") end end def each @header.each{|k, v| value = @header[k] yield(k, value.empty? ? nil : value.join(", ")) } end def host return @forwarded_host || @host end def port return @forwarded_port || @port end def server_name return @forwarded_server || @config[:ServerName] end def remote_ip return self["client-ip"] || @forwarded_for || @peeraddr[3] end def ssl? return @request_uri.scheme == "https" end def keep_alive? @keep_alive end def to_s ret = @request_line.dup @raw_header.each{|line| ret << line } ret << CRLF ret << body if body ret end def fixup() begin body{|chunk| } # read remaining body rescue HTTPStatus::Error => ex @logger.error("HTTPRequest#fixup: #{ex.class} occured.") @keep_alive = false rescue => ex @logger.error(ex) @keep_alive = false end end def meta_vars # This method provides the metavariables defined by the revision 3 # of ``The WWW Common Gateway Interface Version 1.1''. # (http://Web.Golux.Com/coar/cgi/) meta = Hash.new cl = self["Content-Length"] ct = self["Content-Type"] meta["CONTENT_LENGTH"] = cl if cl.to_i > 0 meta["CONTENT_TYPE"] = ct.dup if ct meta["GATEWAY_INTERFACE"] = "CGI/1.1" meta["PATH_INFO"] = @path_info ? @path_info.dup : "" #meta["PATH_TRANSLATED"] = nil # no plan to be provided meta["QUERY_STRING"] = @query_string ? @query_string.dup : "" meta["REMOTE_ADDR"] = @peeraddr[3] meta["REMOTE_HOST"] = @peeraddr[2] #meta["REMOTE_IDENT"] = nil # no plan to be provided meta["REMOTE_USER"] = @user meta["REQUEST_METHOD"] = @request_method.dup meta["REQUEST_URI"] = @request_uri.to_s meta["SCRIPT_NAME"] = @script_name.dup meta["SERVER_NAME"] = @host meta["SERVER_PORT"] = @port.to_s meta["SERVER_PROTOCOL"] = "HTTP/" + @config[:HTTPVersion].to_s meta["SERVER_SOFTWARE"] = @config[:ServerSoftware].dup self.each{|key, val| next if /^content-type$/i =~ key next if /^content-length$/i =~ key name = "HTTP_" + key name.gsub!(/-/o, "_") name.upcase! meta[name] = val } meta end private def read_request_line(socket) @request_line = read_line(socket, 1024) if socket if @request_line.bytesize >= 1024 and @request_line[-1, 1] != LF raise HTTPStatus::RequestURITooLarge end @request_time = Time.now raise HTTPStatus::EOFError unless @request_line if /^(\S+)\s+(\S++)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line @request_method = $1 @unparsed_uri = $2 @http_version = HTTPVersion.new($3 ? $3 : "0.9") else rl = @request_line.sub(/\x0d?\x0a\z/o, '') raise HTTPStatus::BadRequest, "bad Request-Line `#{rl}'." end end def read_header(socket) if socket while line = read_line(socket) break if /\A(#{CRLF}|#{LF})\z/om =~ line @raw_header << line end end @header = HTTPUtils::parse_header(@raw_header.join) end def parse_uri(str, scheme="http") if @config[:Escape8bitURI] str = HTTPUtils::escape8bit(str) end uri = URI::parse(str) return uri if uri.absolute? if @forwarded_host host, port = @forwarded_host, @forwarded_port elsif self["host"] pattern = /\A(#{URI::REGEXP::PATTERN::HOST})(?::(\d+))?\z/n host, port = *self['host'].scan(pattern)[0] elsif @addr.size > 0 host, port = @addr[2], @addr[1] else host, port = @config[:ServerName], @config[:Port] end uri.scheme = @forwarded_proto || scheme uri.host = host uri.port = port ? port.to_i : nil return URI::parse(uri.to_s) end def read_body(socket, block) return unless socket if tc = self['transfer-encoding'] case tc when /chunked/io then read_chunked(socket, block) else raise HTTPStatus::NotImplemented, "Transfer-Encoding: #{tc}." end elsif self['content-length'] || @remaining_size @remaining_size ||= self['content-length'].to_i while @remaining_size > 0 sz = [@buffer_size, @remaining_size].min break unless buf = read_data(socket, sz) @remaining_size -= buf.bytesize block.call(buf) end if @remaining_size > 0 && @socket.eof? raise HTTPStatus::BadRequest, "invalid body size." end elsif BODY_CONTAINABLE_METHODS.member?(@request_method) raise HTTPStatus::LengthRequired end return @body end def read_chunk_size(socket) line = read_line(socket) if /^([0-9a-fA-F]+)(?:;(\S+))?/ =~ line chunk_size = $1.hex chunk_ext = $2 [ chunk_size, chunk_ext ] else raise HTTPStatus::BadRequest, "bad chunk `#{line}'." end end def read_chunked(socket, block) chunk_size, = read_chunk_size(socket) while chunk_size > 0 data = read_data(socket, chunk_size) # read chunk-data if data.nil? || data.bytesize != chunk_size raise BadRequest, "bad chunk data size." end read_line(socket) # skip CRLF block.call(data) chunk_size, = read_chunk_size(socket) end read_header(socket) # trailer + CRLF @header.delete("transfer-encoding") @remaining_size = 0 end def _read_data(io, method, *arg) begin WEBrick::Utils.timeout(@config[:RequestTimeout]){ return io.__send__(method, *arg) } rescue Errno::ECONNRESET return nil rescue TimeoutError raise HTTPStatus::RequestTimeout end end def read_line(io, size=4096) _read_data(io, :gets, LF, size) end def read_data(io, size) _read_data(io, :read, size) end def parse_query() begin if @request_method == "GET" || @request_method == "HEAD" @query = HTTPUtils::parse_query(@query_string) elsif self['content-type'] =~ /^application\/x-www-form-urlencoded/ @query = HTTPUtils::parse_query(body) elsif self['content-type'] =~ /^multipart\/form-data; boundary=(.+)/ boundary = HTTPUtils::dequote($1) @query = HTTPUtils::parse_form_data(body, boundary) else @query = Hash.new end rescue => ex raise HTTPStatus::BadRequest, ex.message end end PrivateNetworkRegexp = / ^unknown$| ^((::ffff:)?127.0.0.1|::1)$| ^(::ffff:)?(10|172\.(1[6-9]|2[0-9]|3[01])|192\.168)\. /ixo def setup_forwarded_info @forwarded_server = self["x-forwarded-server"] @forwarded_proto = self["x-forwarded-proto"] if host_port = self["x-forwarded-host"] @forwarded_host, tmp = host_port.split(":", 2) @forwarded_port = (tmp || (@forwarded_proto == "https" ? 443 : 80)).to_i end if addrs = self["x-forwarded-for"] addrs = addrs.split(",").collect(&:strip) addrs.reject!{|ip| PrivateNetworkRegexp =~ ip } @forwarded_for = addrs.first end end end end 070701001846ff000081a40000000000000000000000014ac5d9d3000017a8000000b600010002ffffffffffffffff0000003400000000root/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb# # httpserver.rb -- HTTPServer Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpserver.rb,v 1.63 2002/10/01 17:16:32 gotoyuzo Exp $ require 'webrick/server' require 'webrick/httputils' require 'webrick/httpstatus' require 'webrick/httprequest' require 'webrick/httpresponse' require 'webrick/httpservlet' require 'webrick/accesslog' module WEBrick class HTTPServerError < ServerError; end class HTTPServer < ::WEBrick::GenericServer def initialize(config={}, default=Config::HTTP) super(config, default) @http_version = HTTPVersion::convert(@config[:HTTPVersion]) @mount_tab = MountTable.new if @config[:DocumentRoot] mount("/", HTTPServlet::FileHandler, @config[:DocumentRoot], @config[:DocumentRootOptions]) end unless @config[:AccessLog] @config[:AccessLog] = [ [ $stderr, AccessLog::COMMON_LOG_FORMAT ], [ $stderr, AccessLog::REFERER_LOG_FORMAT ] ] end @virtual_hosts = Array.new end def run(sock) while true res = HTTPResponse.new(@config) req = HTTPRequest.new(@config) server = self begin timeout = @config[:RequestTimeout] while timeout > 0 break if IO.select([sock], nil, nil, 0.5) timeout = 0 if @status != :Running timeout -= 0.5 end raise HTTPStatus::EOFError if timeout <= 0 raise HTTPStatus::EOFError if sock.eof? req.parse(sock) res.request_method = req.request_method res.request_uri = req.request_uri res.request_http_version = req.http_version res.keep_alive = req.keep_alive? server = lookup_server(req) || self if callback = server[:RequestCallback] callback.call(req, res) elsif callback = server[:RequestHandler] msg = ":RequestHandler is deprecated, please use :RequestCallback" @logger.warn(msg) callback.call(req, res) end server.service(req, res) rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex res.set_error(ex) rescue HTTPStatus::Error => ex @logger.error(ex.message) res.set_error(ex) rescue HTTPStatus::Status => ex res.status = ex.code rescue StandardError => ex @logger.error(ex) res.set_error(ex, true) ensure if req.request_line if req.keep_alive? && res.keep_alive? req.fixup() end res.send_response(sock) server.access_log(@config, req, res) end end break if @http_version < "1.1" break unless req.keep_alive? break unless res.keep_alive? end end def service(req, res) if req.unparsed_uri == "*" if req.request_method == "OPTIONS" do_OPTIONS(req, res) raise HTTPStatus::OK end raise HTTPStatus::NotFound, "`#{req.unparsed_uri}' not found." end servlet, options, script_name, path_info = search_servlet(req.path) raise HTTPStatus::NotFound, "`#{req.path}' not found." unless servlet req.script_name = script_name req.path_info = path_info si = servlet.get_instance(self, *options) @logger.debug(format("%s is invoked.", si.class.name)) si.service(req, res) end def do_OPTIONS(req, res) res["allow"] = "GET,HEAD,POST,OPTIONS" end def mount(dir, servlet, *options) @logger.debug(sprintf("%s is mounted on %s.", servlet.inspect, dir)) @mount_tab[dir] = [ servlet, options ] end def mount_proc(dir, proc=nil, &block) proc ||= block raise HTTPServerError, "must pass a proc or block" unless proc mount(dir, HTTPServlet::ProcHandler.new(proc)) end def unmount(dir) @logger.debug(sprintf("unmount %s.", dir)) @mount_tab.delete(dir) end alias umount unmount def search_servlet(path) script_name, path_info = @mount_tab.scan(path) servlet, options = @mount_tab[script_name] if servlet [ servlet, options, script_name, path_info ] end end def virtual_host(server) @virtual_hosts << server @virtual_hosts = @virtual_hosts.sort_by{|s| num = 0 num -= 4 if s[:BindAddress] num -= 2 if s[:Port] num -= 1 if s[:ServerName] num } end def lookup_server(req) @virtual_hosts.find{|s| (s[:BindAddress].nil? || req.addr[3] == s[:BindAddress]) && (s[:Port].nil? || req.port == s[:Port]) && ((s[:ServerName].nil? || req.host == s[:ServerName]) || (!s[:ServerAlias].nil? && s[:ServerAlias].find{|h| h === req.host})) } end def access_log(config, req, res) param = AccessLog::setup_params(config, req, res) @config[:AccessLog].each{|logger, fmt| logger << AccessLog::format(fmt+"\n", param) } end class MountTable def initialize @tab = Hash.new compile end def [](dir) dir = normalize(dir) @tab[dir] end def []=(dir, val) dir = normalize(dir) @tab[dir] = val compile val end def delete(dir) dir = normalize(dir) res = @tab.delete(dir) compile res end def scan(path) @scanner =~ path [ $&, $' ] end private def compile k = @tab.keys k.sort! k.reverse! k.collect!{|path| Regexp.escape(path) } @scanner = Regexp.new("^(" + k.join("|") +")(?=/|$)") end def normalize(dir) ret = dir ? dir.dup : "" ret.sub!(%r|/+$|, "") ret end end end end 070701001846ec000081a40000000000000000000000014b4aa96d000008fc000000b600010002ffffffffffffffff0000003300000000root/usr/local/lib/ruby/1.9.1/webrick/accesslog.rb# # accesslog.rb -- Access log handling utilities # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2002 keita yamaguchi # Copyright (c) 2002 Internet Programming with Ruby writers # # $IPR: accesslog.rb,v 1.1 2002/10/01 17:16:32 gotoyuzo Exp $ module WEBrick module AccessLog class AccessLogError < StandardError; end CLF_TIME_FORMAT = "[%d/%b/%Y:%H:%M:%S %Z]" COMMON_LOG_FORMAT = "%h %l %u %t \"%r\" %s %b" CLF = COMMON_LOG_FORMAT REFERER_LOG_FORMAT = "%{Referer}i -> %U" AGENT_LOG_FORMAT = "%{User-Agent}i" COMBINED_LOG_FORMAT = "#{CLF} \"%{Referer}i\" \"%{User-agent}i\"" module_function # This format specification is a subset of mod_log_config of Apache. # http://httpd.apache.org/docs/mod/mod_log_config.html#formats def setup_params(config, req, res) params = Hash.new("") params["a"] = req.peeraddr[3] params["b"] = res.sent_size params["e"] = ENV params["f"] = res.filename || "" params["h"] = req.peeraddr[2] params["i"] = req params["l"] = "-" params["m"] = req.request_method params["n"] = req.attributes params["o"] = res params["p"] = req.port params["q"] = req.query_string params["r"] = req.request_line.sub(/\x0d?\x0a\z/o, '') params["s"] = res.status # won't support "%>s" params["t"] = req.request_time params["T"] = Time.now - req.request_time params["u"] = req.user || "-" params["U"] = req.unparsed_uri params["v"] = config[:ServerName] params end def format(format_string, params) format_string.gsub(/\%(?:\{(.*?)\})?>?([a-zA-Z%])/){ param, spec = $1, $2 case spec[0] when ?e, ?i, ?n, ?o raise AccessLogError, "parameter is required for \"#{spec}\"" unless param (param = params[spec][param]) ? escape(param) : "-" when ?t params[spec].strftime(param || CLF_TIME_FORMAT) when ?% "%" else escape(params[spec].to_s) end } end def escape(data) if data.tainted? data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}.untaint else data end end end end 070701001846fe000081a40000000000000000000000014b52a0c80000065a000000b600010002ffffffffffffffff0000002f00000000root/usr/local/lib/ruby/1.9.1/webrick/https.rb# # https.rb -- SSL/TLS enhancement for HTTPServer # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: https.rb,v 1.15 2003/07/22 19:20:42 gotoyuzo Exp $ require 'webrick/ssl' module WEBrick module Config HTTP.update(SSL) end class HTTPRequest attr_reader :cipher, :server_cert, :client_cert alias orig_parse parse def parse(socket=nil) if socket.respond_to?(:cert) @server_cert = socket.cert || @config[:SSLCertificate] @client_cert = socket.peer_cert @client_cert_chain = socket.peer_cert_chain @cipher = socket.cipher end orig_parse(socket) end alias orig_parse_uri parse_uri def parse_uri(str, scheme="https") if server_cert return orig_parse_uri(str, scheme) end return orig_parse_uri(str) end alias orig_meta_vars meta_vars def meta_vars meta = orig_meta_vars if server_cert meta["HTTPS"] = "on" meta["SSL_SERVER_CERT"] = @server_cert.to_pem meta["SSL_CLIENT_CERT"] = @client_cert ? @client_cert.to_pem : "" if @client_cert_chain @client_cert_chain.each_with_index{|cert, i| meta["SSL_CLIENT_CERT_CHAIN_#{i}"] = cert.to_pem } end meta["SSL_CIPHER"] = @cipher[0] meta["SSL_PROTOCOL"] = @cipher[1] meta["SSL_CIPHER_USEKEYSIZE"] = @cipher[2].to_s meta["SSL_CIPHER_ALGKEYSIZE"] = @cipher[3].to_s end meta end end end 070701001846fd000081a40000000000000000000000014c68b35800002034000000b600010002ffffffffffffffff0000003600000000root/usr/local/lib/ruby/1.9.1/webrick/httpresponse.rb# # httpresponse.rb -- HTTPResponse Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpresponse.rb,v 1.45 2003/07/11 11:02:25 gotoyuzo Exp $ require 'time' require 'webrick/httpversion' require 'webrick/htmlutils' require 'webrick/httputils' require 'webrick/httpstatus' module WEBrick class HTTPResponse attr_reader :http_version, :status, :header attr_reader :cookies attr_accessor :reason_phrase attr_accessor :body attr_accessor :request_method, :request_uri, :request_http_version attr_accessor :filename attr_accessor :keep_alive attr_reader :config, :sent_size def initialize(config) @config = config @buffer_size = config[:OutputBufferSize] @logger = config[:Logger] @header = Hash.new @status = HTTPStatus::RC_OK @reason_phrase = nil @http_version = HTTPVersion::convert(@config[:HTTPVersion]) @body = '' @keep_alive = true @cookies = [] @request_method = nil @request_uri = nil @request_http_version = @http_version # temporary @chunked = false @filename = nil @sent_size = 0 end def status_line "HTTP/#@http_version #@status #@reason_phrase #{CRLF}" end def status=(status) @status = status @reason_phrase = HTTPStatus::reason_phrase(status) end def [](field) @header[field.downcase] end def []=(field, value) @header[field.downcase] = value.to_s end def content_length if len = self['content-length'] return Integer(len) end end def content_length=(len) self['content-length'] = len.to_s end def content_type self['content-type'] end def content_type=(type) self['content-type'] = type end def each @header.each{|k, v| yield(k, v) } end def chunked? @chunked end def chunked=(val) @chunked = val ? true : false end def keep_alive? @keep_alive end def send_response(socket) begin setup_header() send_header(socket) send_body(socket) rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ENOTCONN => ex @logger.debug(ex) @keep_alive = false rescue Exception => ex @logger.error(ex) @keep_alive = false end end def setup_header() @reason_phrase ||= HTTPStatus::reason_phrase(@status) @header['server'] ||= @config[:ServerSoftware] @header['date'] ||= Time.now.httpdate # HTTP/0.9 features if @request_http_version < "1.0" @http_version = HTTPVersion.new("0.9") @keep_alive = false end # HTTP/1.0 features if @request_http_version < "1.1" if chunked? @chunked = false ver = @request_http_version.to_s msg = "chunked is set for an HTTP/#{ver} request. (ignored)" @logger.warn(msg) end end # Determine the message length (RFC2616 -- 4.4 Message Length) if @status == 304 || @status == 204 || HTTPStatus::info?(@status) @header.delete('content-length') @body = "" elsif chunked? @header["transfer-encoding"] = "chunked" @header.delete('content-length') elsif %r{^multipart/byteranges} =~ @header['content-type'] @header.delete('content-length') elsif @header['content-length'].nil? unless @body.is_a?(IO) @header['content-length'] = @body ? @body.bytesize : 0 end end # Keep-Alive connection. if @header['connection'] == "close" @keep_alive = false elsif keep_alive? if chunked? || @header['content-length'] @header['connection'] = "Keep-Alive" end else @header['connection'] = "close" end # Location is a single absoluteURI. if location = @header['location'] if @request_uri @header['location'] = @request_uri.merge(location) end end end def send_header(socket) if @http_version.major > 0 data = status_line() @header.each{|key, value| tmp = key.gsub(/\bwww|^te$|\b\w/){ $&.upcase } data << "#{tmp}: #{value}" << CRLF } @cookies.each{|cookie| data << "Set-Cookie: " << cookie.to_s << CRLF } data << CRLF _write_data(socket, data) end end def send_body(socket) case @body when IO then send_body_io(socket) else send_body_string(socket) end end def to_s ret = "" send_response(ret) ret end def set_redirect(status, url) @body = "#{url.to_s}.\n" @header['location'] = url.to_s raise status end def set_error(ex, backtrace=false) case ex when HTTPStatus::Status @keep_alive = false if HTTPStatus::error?(ex.code) self.status = ex.code else @keep_alive = false self.status = HTTPStatus::RC_INTERNAL_SERVER_ERROR end @header['content-type'] = "text/html; charset=ISO-8859-1" if respond_to?(:create_error_page) create_error_page() return end if @request_uri host, port = @request_uri.host, @request_uri.port else host, port = @config[:ServerName], @config[:Port] end @body = '' @body << <<-_end_of_html_ #{HTMLUtils::escape(@reason_phrase)}

#{HTMLUtils::escape(@reason_phrase)}

#{HTMLUtils::escape(ex.message)}
_end_of_html_ if backtrace && $DEBUG @body << "backtrace of `#{HTMLUtils::escape(ex.class.to_s)}' " @body << "#{HTMLUtils::escape(ex.message)}" @body << "
"
        ex.backtrace.each{|line| @body << "\t#{line}\n"}
        @body << "

" end @body << <<-_end_of_html_
#{HTMLUtils::escape(@config[:ServerSoftware])} at #{host}:#{port}
_end_of_html_ end private def send_body_io(socket) begin if @request_method == "HEAD" # do nothing elsif chunked? while buf = @body.read(@buffer_size) next if buf.empty? data = "" data << format("%x", buf.bytesize) << CRLF data << buf << CRLF _write_data(socket, data) @sent_size += buf.bytesize end _write_data(socket, "0#{CRLF}#{CRLF}") else size = @header['content-length'].to_i _send_file(socket, @body, 0, size) @sent_size = size end ensure @body.close end end def send_body_string(socket) if @request_method == "HEAD" # do nothing elsif chunked? remain = body ? @body.bytesize : 0 while buf = @body[@sent_size, @buffer_size] break if buf.empty? data = "" data << format("%x", buf.bytesize) << CRLF data << buf << CRLF _write_data(socket, data) @sent_size += buf.bytesize end _write_data(socket, "0#{CRLF}#{CRLF}") else if @body && @body.bytesize > 0 _write_data(socket, @body) @sent_size = @body.bytesize end end end def _send_file(output, input, offset, size) while offset > 0 sz = @buffer_size < size ? @buffer_size : size buf = input.read(sz) offset -= buf.bytesize end if size == 0 while buf = input.read(@buffer_size) _write_data(output, buf) end else while size > 0 sz = @buffer_size < size ? @buffer_size : size buf = input.read(sz) _write_data(output, buf) size -= buf.bytesize end end end def _write_data(socket, data) socket << data end end end 070701001846ef000081a40000000000000000000000014b2c884f00000d37000000b600010002ffffffffffffffff0000003000000000root/usr/local/lib/ruby/1.9.1/webrick/config.rb# # config.rb -- Default configurations. # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: config.rb,v 1.52 2003/07/22 19:20:42 gotoyuzo Exp $ require 'webrick/version' require 'webrick/httpversion' require 'webrick/httputils' require 'webrick/utils' require 'webrick/log' module WEBrick module Config LIBDIR = File::dirname(__FILE__) # for GenericServer General = { :ServerName => Utils::getservername, :BindAddress => nil, # "0.0.0.0" or "::" or nil :Port => nil, # users MUST specify this!! :MaxClients => 100, # maximum number of the concurrent connections :ServerType => nil, # default: WEBrick::SimpleServer :Logger => nil, # default: WEBrick::Log.new :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " + "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})", :TempDir => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp', :DoNotListen => false, :StartCallback => nil, :StopCallback => nil, :AcceptCallback => nil, :DoNotReverseLookup => nil, :ShutdownSocketWithoutClose => false, } # for HTTPServer, HTTPRequest, HTTPResponse ... HTTP = General.dup.update( :Port => 80, :RequestTimeout => 30, :HTTPVersion => HTTPVersion.new("1.1"), :AccessLog => nil, :MimeTypes => HTTPUtils::DefaultMimeTypes, :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"], :DocumentRoot => nil, :DocumentRootOptions => { :FancyIndexing => true }, :RequestCallback => nil, :ServerAlias => nil, :InputBufferSize => 65536, # input buffer size in reading request body :OutputBufferSize => 65536, # output buffer size in sending File or IO # for HTTPProxyServer :ProxyAuthProc => nil, :ProxyContentHandler => nil, :ProxyVia => true, :ProxyTimeout => true, :ProxyURI => nil, :CGIInterpreter => nil, :CGIPathEnv => nil, # workaround: if Request-URIs contain 8bit chars, # they should be escaped before calling of URI::parse(). :Escape8bitURI => false ) FileHandler = { :NondisclosureName => [".ht*", "*~"], :FancyIndexing => false, :HandlerTable => {}, :HandlerCallback => nil, :DirectoryCallback => nil, :FileCallback => nil, :UserDir => nil, # e.g. "public_html" :AcceptableLanguages => [] # ["en", "ja", ... ] } BasicAuth = { :AutoReloadUserDB => true, } DigestAuth = { :Algorithm => 'MD5-sess', # or 'MD5' :Domain => nil, # an array includes domain names. :Qop => [ 'auth' ], # 'auth' or 'auth-int' or both. :UseOpaque => true, :UseNextNonce => false, :CheckNc => false, :UseAuthenticationInfoHeader => true, :AutoReloadUserDB => true, :NonceExpirePeriod => 30*60, :NonceExpireDelta => 60, :InternetExplorerHack => true, :OperaHack => true, } end end 070701001846f1000081a40000000000000000000000014ac5d9d300000248000000b600010002ffffffffffffffff0000003300000000root/usr/local/lib/ruby/1.9.1/webrick/htmlutils.rb# # htmlutils.rb -- HTMLUtils Module # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: htmlutils.rb,v 1.7 2002/09/21 12:23:35 gotoyuzo Exp $ module WEBrick module HTMLUtils def escape(string) str = string ? string.dup : "" str.gsub!(/&/n, '&') str.gsub!(/\"/n, '"') str.gsub!(/>/n, '>') str.gsub!(/ ex # if the listening socket was closed in GenericServer#shutdown, # IO::select raise it. rescue Exception => ex msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" @logger.error msg end end @logger.info "going to shutdown ..." thgroup.list.each{|th| th.join if th[:WEBrickThread] } call_callback(:StopCallback) @logger.info "#{self.class}#start done." @status = :Stop } end def stop if @status == :Running @status = :Shutdown end end def shutdown stop @listeners.each{|s| if @logger.debug? addr = s.addr @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})") end begin s.shutdown rescue Errno::ENOTCONN # when `Errno::ENOTCONN: Socket is not connected' on some platforms, # call #close instead of #shutdown. # (ignore @config[:ShutdownSocketWithoutClose]) s.close else unless @config[:ShutdownSocketWithoutClose] s.close end end } @listeners.clear end def run(sock) @logger.fatal "run() must be provided by user." end private def accept_client(svr) sock = nil begin sock = svr.accept sock.sync = true Utils::set_non_blocking(sock) Utils::set_close_on_exec(sock) rescue Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPROTO, Errno::EINVAL => ex rescue Exception => ex msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" @logger.error msg end return sock end def start_thread(sock, &block) Thread.start{ begin Thread.current[:WEBrickSocket] = sock begin addr = sock.peeraddr @logger.debug "accept: #{addr[3]}:#{addr[1]}" rescue SocketError @logger.debug "accept:
" raise end call_callback(:AcceptCallback, sock) block ? block.call(sock) : run(sock) rescue Errno::ENOTCONN @logger.debug "Errno::ENOTCONN raised" rescue ServerError => ex msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" @logger.error msg rescue Exception => ex @logger.error ex ensure @tokens.push(nil) Thread.current[:WEBrickSocket] = nil if addr @logger.debug "close: #{addr[3]}:#{addr[1]}" else @logger.debug "close:
" end sock.close end } end def call_callback(callback_name, *args) if cb = @config[callback_name] cb.call(*args) end end end # end of GenericServer end 07070100184708000081a40000000000000000000000014b4aa96d00000e51000000b600010002ffffffffffffffff0000003400000000root/usr/local/lib/ruby/1.9.1/webrick/httpstatus.rb# # httpstatus.rb -- HTTPStatus Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpstatus.rb,v 1.11 2003/03/24 20:18:55 gotoyuzo Exp $ module WEBrick module HTTPStatus class Status < StandardError def initialize(*args) args[0] = AccessLog.escape(args[0]) unless args.empty? super(*args) end class << self attr_reader :code, :reason_phrase end def code() self::class::code end def reason_phrase() self::class::reason_phrase end alias to_i code end class Info < Status; end class Success < Status; end class Redirect < Status; end class Error < Status; end class ClientError < Error; end class ServerError < Error; end class EOFError < StandardError; end StatusMessage = { 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Request Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported' } CodeToError = {} StatusMessage.each{|code, message| message.freeze var_name = message.gsub(/[ \-]/,'_').upcase err_name = message.gsub(/[ \-]/,'') case code when 100...200; parent = Info when 200...300; parent = Success when 300...400; parent = Redirect when 400...500; parent = ClientError when 500...600; parent = ServerError end const_set("RC_#{var_name}", code) err_class = Class.new(parent) err_class.instance_variable_set(:@code, code) err_class.instance_variable_set(:@reason_phrase, message) const_set(err_name, err_class) CodeToError[code] = err_class } def reason_phrase(code) StatusMessage[code.to_i] end def info?(code) code.to_i >= 100 and code.to_i < 200 end def success?(code) code.to_i >= 200 and code.to_i < 300 end def redirect?(code) code.to_i >= 300 and code.to_i < 400 end def error?(code) code.to_i >= 400 and code.to_i < 600 end def client_error?(code) code.to_i >= 400 and code.to_i < 500 end def server_error?(code) code.to_i >= 500 and code.to_i < 600 end def self.[](code) CodeToError[code] end module_function :reason_phrase module_function :info?, :success?, :redirect?, :error? module_function :client_error?, :server_error? end end 07070100184709000081a40000000000000000000000014b499efb00002810000000b600010002ffffffffffffffff0000003300000000root/usr/local/lib/ruby/1.9.1/webrick/httputils.rb# # httputils.rb -- HTTPUtils Module # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httputils.rb,v 1.34 2003/06/05 21:34:08 gotoyuzo Exp $ require 'socket' require 'tempfile' module WEBrick CR = "\x0d" LF = "\x0a" CRLF = "\x0d\x0a" module HTTPUtils def normalize_path(path) raise "abnormal path `#{path}'" if path[0] != ?/ ret = path.dup ret.gsub!(%r{/+}o, '/') # // => / while ret.sub!(%r'/\.(?:/|\Z)', '/'); end # /. => / while ret.sub!(%r'/(?!\.\./)[^/]+/\.\.(?:/|\Z)', '/'); end # /foo/.. => /foo raise "abnormal path `#{path}'" if %r{/\.\.(/|\Z)} =~ ret ret end module_function :normalize_path ##### DefaultMimeTypes = { "ai" => "application/postscript", "asc" => "text/plain", "avi" => "video/x-msvideo", "bin" => "application/octet-stream", "bmp" => "image/bmp", "class" => "application/octet-stream", "cer" => "application/pkix-cert", "crl" => "application/pkix-crl", "crt" => "application/x-x509-ca-cert", #"crl" => "application/x-pkcs7-crl", "css" => "text/css", "dms" => "application/octet-stream", "doc" => "application/msword", "dvi" => "application/x-dvi", "eps" => "application/postscript", "etx" => "text/x-setext", "exe" => "application/octet-stream", "gif" => "image/gif", "htm" => "text/html", "html" => "text/html", "jpe" => "image/jpeg", "jpeg" => "image/jpeg", "jpg" => "image/jpeg", "lha" => "application/octet-stream", "lzh" => "application/octet-stream", "mov" => "video/quicktime", "mpe" => "video/mpeg", "mpeg" => "video/mpeg", "mpg" => "video/mpeg", "pbm" => "image/x-portable-bitmap", "pdf" => "application/pdf", "pgm" => "image/x-portable-graymap", "png" => "image/png", "pnm" => "image/x-portable-anymap", "ppm" => "image/x-portable-pixmap", "ppt" => "application/vnd.ms-powerpoint", "ps" => "application/postscript", "qt" => "video/quicktime", "ras" => "image/x-cmu-raster", "rb" => "text/plain", "rd" => "text/plain", "rtf" => "application/rtf", "sgm" => "text/sgml", "sgml" => "text/sgml", "tif" => "image/tiff", "tiff" => "image/tiff", "txt" => "text/plain", "xbm" => "image/x-xbitmap", "xhtml" => "text/html", "xls" => "application/vnd.ms-excel", "xml" => "text/xml", "xpm" => "image/x-xpixmap", "xwd" => "image/x-xwindowdump", "zip" => "application/zip", } # Load Apache compatible mime.types file. def load_mime_types(file) open(file){ |io| hash = Hash.new io.each{ |line| next if /^#/ =~ line line.chomp! mimetype, ext0 = line.split(/\s+/, 2) next unless ext0 next if ext0.empty? ext0.split(/\s+/).each{ |ext| hash[ext] = mimetype } } hash } end module_function :load_mime_types def mime_type(filename, mime_tab) suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase) suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase) mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream" end module_function :mime_type ##### def parse_header(raw) header = Hash.new([].freeze) field = nil raw.each_line{|line| case line when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om field, value = $1, $2 field.downcase! header[field] = [] unless header.has_key?(field) header[field] << value when /^\s+(.*?)\s*\z/om value = $1 unless field raise HTTPStatus::BadRequest, "bad header '#{line}'." end header[field][-1] << " " << value else raise HTTPStatus::BadRequest, "bad header '#{line}'." end } header.each{|key, values| values.each{|value| value.strip! value.gsub!(/\s+/, " ") } } header end module_function :parse_header def split_header_value(str) str.scan(%r'\G((?:"(?:\\.|[^"])+?"|[^",]+)+) (?:,\s*|\Z)'xn).flatten end module_function :split_header_value def parse_range_header(ranges_specifier) if /^bytes=(.*)/ =~ ranges_specifier byte_range_set = split_header_value($1) byte_range_set.collect{|range_spec| case range_spec when /^(\d+)-(\d+)/ then $1.to_i .. $2.to_i when /^(\d+)-/ then $1.to_i .. -1 when /^-(\d+)/ then -($1.to_i) .. -1 else return nil end } end end module_function :parse_range_header def parse_qvalues(value) tmp = [] if value parts = value.split(/,\s*/) parts.each {|part| if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part) val = m[1] q = (m[2] or 1).to_f tmp.push([val, q]) end } tmp = tmp.sort_by{|val, q| -q} tmp.collect!{|val, q| val} end return tmp end module_function :parse_qvalues ##### def dequote(str) ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup ret.gsub!(/\\(.)/, "\\1") ret end module_function :dequote def quote(str) '"' << str.gsub(/[\\\"]/o, "\\\1") << '"' end module_function :quote ##### class FormData < String EmptyRawHeader = [].freeze EmptyHeader = {}.freeze attr_accessor :name, :filename, :next_data protected :next_data def initialize(*args) @name = @filename = @next_data = nil if args.empty? @raw_header = [] @header = nil super("") else @raw_header = EmptyRawHeader @header = EmptyHeader super(args.shift) unless args.empty? @next_data = self.class.new(*args) end end end def [](*key) begin @header[key[0].downcase].join(", ") rescue StandardError, NameError super end end def <<(str) if @header super elsif str == CRLF @header = HTTPUtils::parse_header(@raw_header.join) if cd = self['content-disposition'] if /\s+name="(.*?)"/ =~ cd then @name = $1 end if /\s+filename="(.*?)"/ =~ cd then @filename = $1 end end else @raw_header << str end self end def append_data(data) tmp = self while tmp unless tmp.next_data tmp.next_data = data break end tmp = tmp.next_data end self end def each_data tmp = self while tmp next_data = tmp.next_data yield(tmp) tmp = next_data end end def list ret = [] each_data{|data| ret << data.to_s } ret end alias :to_ary :list def to_s String.new(self) end end def parse_query(str) query = Hash.new if str str.split(/[&;]/).each{|x| next if x.empty? key, val = x.split(/=/,2) key = unescape_form(key) val = unescape_form(val.to_s) val = FormData.new(val) val.name = key if query.has_key?(key) query[key].append_data(val) next end query[key] = val } end query end module_function :parse_query def parse_form_data(io, boundary) boundary_regexp = /\A--#{Regexp.quote(boundary)}(--)?#{CRLF}\z/ form_data = Hash.new return form_data unless io data = nil io.each_line{|line| if boundary_regexp =~ line if data data.chop! key = data.name if form_data.has_key?(key) form_data[key].append_data(data) else form_data[key] = data end end data = FormData.new next else if data data << line end end } return form_data end module_function :parse_form_data ##### reserved = ';/?:@&=+$,' num = '0123456789' lowalpha = 'abcdefghijklmnopqrstuvwxyz' upalpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' mark = '-_.!~*\'()' unreserved = num + lowalpha + upalpha + mark control = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f" space = " " delims = '<>#%"' unwise = '{}|\\^[]`' nonascii = (0x80..0xff).collect{|c| c.chr }.join module_function def _make_regex(str) /([#{Regexp.escape(str)}])/n end def _make_regex!(str) /([^#{Regexp.escape(str)}])/n end def _escape(str, regex) str.gsub(regex){ "%%%02X" % $1.ord } end def _unescape(str, regex) str.gsub(regex){ $1.hex.chr } end UNESCAPED = _make_regex(control+space+delims+unwise+nonascii) UNESCAPED_FORM = _make_regex(reserved+control+delims+unwise+nonascii) NONASCII = _make_regex(nonascii) ESCAPED = /%([0-9a-fA-F]{2})/ UNESCAPED_PCHAR = _make_regex!(unreserved+":@&=+$,") def escape(str) _escape(str, UNESCAPED) end def unescape(str) _unescape(str, ESCAPED) end def escape_form(str) ret = _escape(str, UNESCAPED_FORM) ret.gsub!(/ /, "+") ret end def unescape_form(str) _unescape(str.gsub(/\+/, " "), ESCAPED) end def escape_path(str) result = "" str.scan(%r{/([^/]*)}).each{|i| result << "/" << _escape(i[0], UNESCAPED_PCHAR) } return result end def escape8bit(str) _escape(str, NONASCII) end end end 0707010018470d000081a40000000000000000000000014b52a0c8000010ec000000b600010002ffffffffffffffff0000002d00000000root/usr/local/lib/ruby/1.9.1/webrick/ssl.rb# # ssl.rb -- SSL/TLS enhancement for GenericServer # # Copyright (c) 2003 GOTOU Yuuzou All rights reserved. # # $Id: ssl.rb 26334 2010-01-17 05:31:52Z nobu $ require 'webrick' require 'openssl' module WEBrick module Config svrsoft = General[:ServerSoftware] osslv = ::OpenSSL::OPENSSL_VERSION.split[1] SSL = { :ServerSoftware => "#{svrsoft} OpenSSL/#{osslv}", :SSLEnable => false, :SSLCertificate => nil, :SSLPrivateKey => nil, :SSLClientCA => nil, :SSLExtraChainCert => nil, :SSLCACertificateFile => nil, :SSLCACertificatePath => nil, :SSLCertificateStore => nil, :SSLVerifyClient => ::OpenSSL::SSL::VERIFY_NONE, :SSLVerifyDepth => nil, :SSLVerifyCallback => nil, # custom verification :SSLTimeout => nil, :SSLOptions => nil, :SSLStartImmediately => true, # Must specify if you use auto generated certificate. :SSLCertName => nil, :SSLCertComment => "Generated by Ruby/OpenSSL" } General.update(SSL) end module Utils def create_self_signed_cert(bits, cn, comment) rsa = OpenSSL::PKey::RSA.new(bits){|p, n| case p when 0; $stderr.putc "." # BN_generate_prime when 1; $stderr.putc "+" # BN_generate_prime when 2; $stderr.putc "*" # searching good prime, # n = #of try, # but also data from BN_generate_prime when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q, # but also data from BN_generate_prime else; $stderr.putc "*" # BN_generate_prime end } cert = OpenSSL::X509::Certificate.new cert.version = 3 cert.serial = 0 name = OpenSSL::X509::Name.new(cn) cert.subject = name cert.issuer = name cert.not_before = Time.now cert.not_after = Time.now + (365*24*60*60) cert.public_key = rsa.public_key ef = OpenSSL::X509::ExtensionFactory.new(nil,cert) ef.issuer_certificate = cert cert.extensions = [ ef.create_extension("basicConstraints","CA:FALSE"), ef.create_extension("keyUsage", "keyEncipherment"), ef.create_extension("subjectKeyIdentifier", "hash"), ef.create_extension("extendedKeyUsage", "serverAuth"), ef.create_extension("nsComment", comment), ] aki = ef.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always") cert.add_extension(aki) cert.sign(rsa, OpenSSL::Digest::SHA1.new) return [ cert, rsa ] end module_function :create_self_signed_cert end class GenericServer def ssl_context @ssl_context ||= nil end undef listen def listen(address, port) listeners = Utils::create_listeners(address, port, @logger) if @config[:SSLEnable] unless ssl_context @ssl_context = setup_ssl_context(@config) @logger.info("\n" + @config[:SSLCertificate].to_text) end listeners.collect!{|svr| ssvr = ::OpenSSL::SSL::SSLServer.new(svr, ssl_context) ssvr.start_immediately = @config[:SSLStartImmediately] ssvr } end @listeners += listeners end def setup_ssl_context(config) unless config[:SSLCertificate] cn = config[:SSLCertName] comment = config[:SSLCertComment] cert, key = Utils::create_self_signed_cert(1024, cn, comment) config[:SSLCertificate] = cert config[:SSLPrivateKey] = key end ctx = OpenSSL::SSL::SSLContext.new ctx.key = config[:SSLPrivateKey] ctx.cert = config[:SSLCertificate] ctx.client_ca = config[:SSLClientCA] ctx.extra_chain_cert = config[:SSLExtraChainCert] ctx.ca_file = config[:SSLCACertificateFile] ctx.ca_path = config[:SSLCACertificatePath] ctx.cert_store = config[:SSLCertificateStore] ctx.verify_mode = config[:SSLVerifyClient] ctx.verify_depth = config[:SSLVerifyDepth] ctx.verify_callback = config[:SSLVerifyCallback] ctx.timeout = config[:SSLTimeout] ctx.options = config[:SSLOptions] ctx end end end 070701001846ee000081a40000000000000000000000014ac5d9d3000001b4000000b600010002ffffffffffffffff0000003000000000root/usr/local/lib/ruby/1.9.1/webrick/compat.rb# # compat.rb -- cross platform compatibility # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2002 GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: compat.rb,v 1.6 2002/10/01 17:16:32 gotoyuzo Exp $ module Errno class EPROTO < SystemCallError; end class ECONNRESET < SystemCallError; end class ECONNABORTED < SystemCallError; end end 0707010018470b000081a40000000000000000000000014ac5d9d300000822000000b600010002ffffffffffffffff0000002d00000000root/usr/local/lib/ruby/1.9.1/webrick/log.rb# # log.rb -- Log Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: log.rb,v 1.26 2002/10/06 17:06:10 gotoyuzo Exp $ module WEBrick class BasicLog # log-level constant FATAL, ERROR, WARN, INFO, DEBUG = 1, 2, 3, 4, 5 attr_accessor :level def initialize(log_file=nil, level=nil) @level = level || INFO case log_file when String @log = open(log_file, "a+") @log.sync = true @opened = true when NilClass @log = $stderr else @log = log_file # requires "<<". (see BasicLog#log) end end def close @log.close if @opened @log = nil end def log(level, data) if @log && level <= @level data += "\n" if /\n\Z/ !~ data @log << data end end def <<(obj) log(INFO, obj.to_s) end def fatal(msg) log(FATAL, "FATAL " << format(msg)); end def error(msg) log(ERROR, "ERROR " << format(msg)); end def warn(msg) log(WARN, "WARN " << format(msg)); end def info(msg) log(INFO, "INFO " << format(msg)); end def debug(msg) log(DEBUG, "DEBUG " << format(msg)); end def fatal?; @level >= FATAL; end def error?; @level >= ERROR; end def warn?; @level >= WARN; end def info?; @level >= INFO; end def debug?; @level >= DEBUG; end private def format(arg) str = if arg.is_a?(Exception) "#{arg.class}: #{arg.message}\n\t" << arg.backtrace.join("\n\t") << "\n" elsif arg.respond_to?(:to_str) arg.to_str else arg.inspect end end end class Log < BasicLog attr_accessor :time_format def initialize(log_file=nil, level=nil) super(log_file, level) @time_format = "[%Y-%m-%d %H:%M:%S]" end def log(level, data) tmp = Time.now.strftime(@time_format) tmp << " " << data super(level, tmp) end end end 070701001846fb000081a40000000000000000000000014ac5d9d3000020be000000b600010002ffffffffffffffff0000003300000000root/usr/local/lib/ruby/1.9.1/webrick/httpproxy.rb# # httpproxy.rb -- HTTPProxy Class # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2002 GOTO Kentaro # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpproxy.rb,v 1.18 2003/03/08 18:58:10 gotoyuzo Exp $ # $kNotwork: straw.rb,v 1.3 2002/02/12 15:13:07 gotoken Exp $ require "webrick/httpserver" require "net/http" Net::HTTP::version_1_2 if RUBY_VERSION < "1.7" module WEBrick NullReader = Object.new class << NullReader def read(*args) nil end alias gets read end FakeProxyURI = Object.new class << FakeProxyURI def method_missing(meth, *args) if %w(scheme host port path query userinfo).member?(meth.to_s) return nil end super end end class HTTPProxyServer < HTTPServer def initialize(config={}, default=Config::HTTP) super(config, default) c = @config @via = "#{c[:HTTPVersion]} #{c[:ServerName]}:#{c[:Port]}" end def service(req, res) if req.request_method == "CONNECT" do_CONNECT(req, res) elsif req.unparsed_uri =~ %r!^http://! proxy_service(req, res) else super(req, res) end end def proxy_auth(req, res) if proc = @config[:ProxyAuthProc] proc.call(req, res) end req.header.delete("proxy-authorization") end def proxy_uri(req, res) # should return upstream proxy server's URI return @config[:ProxyURI] end def proxy_service(req, res) # Proxy Authentication proxy_auth(req, res) begin self.send("do_#{req.request_method}", req, res) rescue NoMethodError raise HTTPStatus::MethodNotAllowed, "unsupported method `#{req.request_method}'." rescue => err logger.debug("#{err.class}: #{err.message}") raise HTTPStatus::ServiceUnavailable, err.message end # Process contents if handler = @config[:ProxyContentHandler] handler.call(req, res) end end def do_CONNECT(req, res) # Proxy Authentication proxy_auth(req, res) ua = Thread.current[:WEBrickSocket] # User-Agent raise HTTPStatus::InternalServerError, "[BUG] cannot get socket" unless ua host, port = req.unparsed_uri.split(":", 2) # Proxy authentication for upstream proxy server if proxy = proxy_uri(req, res) proxy_request_line = "CONNECT #{host}:#{port} HTTP/1.0" if proxy.userinfo credentials = "Basic " + [proxy.userinfo].pack("m").delete("\n") end host, port = proxy.host, proxy.port end begin @logger.debug("CONNECT: upstream proxy is `#{host}:#{port}'.") os = TCPSocket.new(host, port) # origin server if proxy @logger.debug("CONNECT: sending a Request-Line") os << proxy_request_line << CRLF @logger.debug("CONNECT: > #{proxy_request_line}") if credentials @logger.debug("CONNECT: sending a credentials") os << "Proxy-Authorization: " << credentials << CRLF end os << CRLF proxy_status_line = os.gets(LF) @logger.debug("CONNECT: read a Status-Line form the upstream server") @logger.debug("CONNECT: < #{proxy_status_line}") if %r{^HTTP/\d+\.\d+\s+200\s*} =~ proxy_status_line while line = os.gets(LF) break if /\A(#{CRLF}|#{LF})\z/om =~ line end else raise HTTPStatus::BadGateway end end @logger.debug("CONNECT #{host}:#{port}: succeeded") res.status = HTTPStatus::RC_OK rescue => ex @logger.debug("CONNECT #{host}:#{port}: failed `#{ex.message}'") res.set_error(ex) raise HTTPStatus::EOFError ensure if handler = @config[:ProxyContentHandler] handler.call(req, res) end res.send_response(ua) access_log(@config, req, res) # Should clear request-line not to send the sesponse twice. # see: HTTPServer#run req.parse(NullReader) rescue nil end begin while fds = IO::select([ua, os]) if fds[0].member?(ua) buf = ua.sysread(1024); @logger.debug("CONNECT: #{buf.bytesize} byte from User-Agent") os.syswrite(buf) elsif fds[0].member?(os) buf = os.sysread(1024); @logger.debug("CONNECT: #{buf.bytesize} byte from #{host}:#{port}") ua.syswrite(buf) end end rescue => ex os.close @logger.debug("CONNECT #{host}:#{port}: closed") end raise HTTPStatus::EOFError end def do_GET(req, res) perform_proxy_request(req, res) do |http, path, header| http.get(path, header) end end def do_HEAD(req, res) perform_proxy_request(req, res) do |http, path, header| http.head(path, header) end end def do_POST(req, res) perform_proxy_request(req, res) do |http, path, header| http.post(path, req.body || "", header) end end def do_OPTIONS(req, res) res['allow'] = "GET,HEAD,POST,OPTIONS,CONNECT" end private # Some header fields should not be transferred. HopByHop = %w( connection keep-alive proxy-authenticate upgrade proxy-authorization te trailers transfer-encoding ) ShouldNotTransfer = %w( set-cookie proxy-connection ) def split_field(f) f ? f.split(/,\s+/).collect{|i| i.downcase } : [] end def choose_header(src, dst) connections = split_field(src['connection']) src.each{|key, value| key = key.downcase if HopByHop.member?(key) || # RFC2616: 13.5.1 connections.member?(key) || # RFC2616: 14.10 ShouldNotTransfer.member?(key) # pragmatics @logger.debug("choose_header: `#{key}: #{value}'") next end dst[key] = value } end # Net::HTTP is stupid about the multiple header fields. # Here is workaround: def set_cookie(src, dst) if str = src['set-cookie'] cookies = [] str.split(/,\s*/).each{|token| if /^[^=]+;/o =~ token cookies[-1] << ", " << token elsif /=/o =~ token cookies << token else cookies[-1] << ", " << token end } dst.cookies.replace(cookies) end end def set_via(h) if @config[:ProxyVia] if h['via'] h['via'] << ", " << @via else h['via'] = @via end end end def setup_proxy_header(req, res) # Choose header fields to transfer header = Hash.new choose_header(req, header) set_via(header) return header end def setup_upstream_proxy_authentication(req, res, header) if upstream = proxy_uri(req, res) if upstream.userinfo header['proxy-authorization'] = "Basic " + [upstream.userinfo].pack("m").delete("\n") end return upstream end return FakeProxyURI end def perform_proxy_request(req, res) uri = req.request_uri path = uri.path.dup path << "?" << uri.query if uri.query header = setup_proxy_header(req, res) upstream = setup_upstream_proxy_authentication(req, res, header) response = nil http = Net::HTTP.new(uri.host, uri.port, upstream.host, upstream.port) http.start do if @config[:ProxyTimeout] ################################## these issues are http.open_timeout = 30 # secs # necessary (maybe bacause http.read_timeout = 60 # secs # Ruby's bug, but why?) ################################## end response = yield(http, path, header) end # Persistent connection requirements are mysterious for me. # So I will close the connection in every response. res['proxy-connection'] = "close" res['connection'] = "close" # Convert Net::HTTP::HTTPResponse to WEBrick::HTTPResponse res.status = response.code.to_i choose_header(response, res) set_cookie(response, res) set_via(res) res.body = response.body end end end 0707010018470e000081a40000000000000000000000014ac5d9d3000011c2000000b600010002ffffffffffffffff0000002f00000000root/usr/local/lib/ruby/1.9.1/webrick/utils.rb# # utils.rb -- Miscellaneous utilities # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $ require 'socket' require 'fcntl' begin require 'etc' rescue LoadError nil end module WEBrick module Utils def set_non_blocking(io) flag = File::NONBLOCK if defined?(Fcntl::F_GETFL) flag |= io.fcntl(Fcntl::F_GETFL) end io.fcntl(Fcntl::F_SETFL, flag) end module_function :set_non_blocking def set_close_on_exec(io) if defined?(Fcntl::FD_CLOEXEC) io.fcntl(Fcntl::FD_CLOEXEC, 1) end end module_function :set_close_on_exec def su(user) if defined?(Etc) pw = Etc.getpwnam(user) Process::initgroups(user, pw.gid) Process::Sys::setgid(pw.gid) Process::Sys::setuid(pw.uid) else warn("WEBrick::Utils::su doesn't work on this platform") end end module_function :su def getservername host = Socket::gethostname begin Socket::gethostbyname(host)[0] rescue host end end module_function :getservername def create_listeners(address, port, logger=nil) unless port raise ArgumentError, "must specify port" end res = Socket::getaddrinfo(address, port, Socket::AF_UNSPEC, # address family Socket::SOCK_STREAM, # socket type 0, # protocol Socket::AI_PASSIVE) # flag last_error = nil sockets = [] res.each{|ai| begin logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger sock = TCPServer.new(ai[3], port) port = sock.addr[1] if port == 0 Utils::set_close_on_exec(sock) sockets << sock rescue => ex logger.warn("TCPServer Error: #{ex}") if logger last_error = ex end } raise last_error if sockets.empty? return sockets end module_function :create_listeners RAND_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "abcdefghijklmnopqrstuvwxyz" def random_string(len) rand_max = RAND_CHARS.bytesize ret = "" len.times{ ret << RAND_CHARS[rand(rand_max)] } ret end module_function :random_string ########### require "thread" require "timeout" require "singleton" class TimeoutHandler include Singleton TimeoutMutex = Mutex.new def TimeoutHandler.register(seconds, exception) TimeoutMutex.synchronize{ instance.register(Thread.current, Time.now + seconds, exception) } end def TimeoutHandler.cancel(id) TimeoutMutex.synchronize{ instance.cancel(Thread.current, id) } end def initialize @timeout_info = Hash.new Thread.start{ while true now = Time.now @timeout_info.each{|thread, ary| ary.dup.each{|info| time, exception = *info interrupt(thread, info.object_id, exception) if time < now } } sleep 0.5 end } end def interrupt(thread, id, exception) TimeoutMutex.synchronize{ if cancel(thread, id) && thread.alive? thread.raise(exception, "execution timeout") end } end def register(thread, time, exception) @timeout_info[thread] ||= Array.new @timeout_info[thread] << [time, exception] return @timeout_info[thread].last.object_id end def cancel(thread, id) if ary = @timeout_info[thread] ary.delete_if{|info| info.object_id == id } if ary.empty? @timeout_info.delete(thread) end return true end return false end end def timeout(seconds, exception=Timeout::Error) return yield if seconds.nil? or seconds.zero? # raise ThreadError, "timeout within critical session" if Thread.critical id = TimeoutHandler.register(seconds, exception) begin yield(seconds) ensure TimeoutHandler.cancel(id) end end module_function :timeout end end 070701001846ed000081a40000000000000000000000014ac5ec5500001b9c000000b600010002ffffffffffffffff0000002d00000000root/usr/local/lib/ruby/1.9.1/webrick/cgi.rb# # cgi.rb -- Yet another CGI library # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $Id: cgi.rb 25189 2009-10-02 12:04:37Z akr $ require "webrick/httprequest" require "webrick/httpresponse" require "webrick/config" require "stringio" module WEBrick class CGI CGIError = Class.new(StandardError) attr_reader :config, :logger def initialize(*args) if defined?(MOD_RUBY) unless ENV.has_key?("GATEWAY_INTERFACE") Apache.request.setup_cgi_env end end if %r{HTTP/(\d+\.\d+)} =~ ENV["SERVER_PROTOCOL"] httpv = $1 end @config = WEBrick::Config::HTTP.dup.update( :ServerSoftware => ENV["SERVER_SOFTWARE"] || "null", :HTTPVersion => HTTPVersion.new(httpv || "1.0"), :RunOnCGI => true, # to detect if it runs on CGI. :NPH => false # set true to run as NPH script. ) if config = args.shift @config.update(config) end @config[:Logger] ||= WEBrick::BasicLog.new($stderr) @logger = @config[:Logger] @options = args end def [](key) @config[key] end def start(env=ENV, stdin=$stdin, stdout=$stdout) sock = WEBrick::CGI::Socket.new(@config, env, stdin, stdout) req = HTTPRequest.new(@config) res = HTTPResponse.new(@config) unless @config[:NPH] or defined?(MOD_RUBY) def res.setup_header unless @header["status"] phrase = HTTPStatus::reason_phrase(@status) @header["status"] = "#{@status} #{phrase}" end super end def res.status_line "" end end begin req.parse(sock) req.script_name = (env["SCRIPT_NAME"] || File.expand_path($0)).dup req.path_info = (env["PATH_INFO"] || "").dup req.query_string = env["QUERY_STRING"] req.user = env["REMOTE_USER"] res.request_method = req.request_method res.request_uri = req.request_uri res.request_http_version = req.http_version res.keep_alive = req.keep_alive? self.service(req, res) rescue HTTPStatus::Error => ex res.set_error(ex) rescue HTTPStatus::Status => ex res.status = ex.code rescue Exception => ex @logger.error(ex) res.set_error(ex, true) ensure req.fixup if defined?(MOD_RUBY) res.setup_header Apache.request.status_line = "#{res.status} #{res.reason_phrase}" Apache.request.status = res.status table = Apache.request.headers_out res.header.each{|key, val| case key when /^content-encoding$/i Apache::request.content_encoding = val when /^content-type$/i Apache::request.content_type = val else table[key] = val.to_s end } res.cookies.each{|cookie| table.add("Set-Cookie", cookie.to_s) } Apache.request.send_http_header res.send_body(sock) else res.send_response(sock) end end end def service(req, res) method_name = "do_" + req.request_method.gsub(/-/, "_") if respond_to?(method_name) __send__(method_name, req, res) else raise HTTPStatus::MethodNotAllowed, "unsupported method `#{req.request_method}'." end end class Socket include Enumerable private def initialize(config, env, stdin, stdout) @config = config @env = env @header_part = StringIO.new @body_part = stdin @out_port = stdout @out_port.binmode @server_addr = @env["SERVER_ADDR"] || "0.0.0.0" @server_name = @env["SERVER_NAME"] @server_port = @env["SERVER_PORT"] @remote_addr = @env["REMOTE_ADDR"] @remote_host = @env["REMOTE_HOST"] || @remote_addr @remote_port = @env["REMOTE_PORT"] || 0 begin @header_part << request_line << CRLF setup_header @header_part << CRLF @header_part.rewind rescue Exception => ex raise CGIError, "invalid CGI environment" end end def request_line meth = @env["REQUEST_METHOD"] || "GET" unless url = @env["REQUEST_URI"] url = (@env["SCRIPT_NAME"] || File.expand_path($0)).dup url << @env["PATH_INFO"].to_s url = WEBrick::HTTPUtils.escape_path(url) if query_string = @env["QUERY_STRING"] unless query_string.empty? url << "?" << query_string end end end # we cannot get real HTTP version of client ;) httpv = @config[:HTTPVersion] return "#{meth} #{url} HTTP/#{httpv}" end def setup_header @env.each{|key, value| case key when "CONTENT_TYPE", "CONTENT_LENGTH" add_header(key.gsub(/_/, "-"), value) when /^HTTP_(.*)/ add_header($1.gsub(/_/, "-"), value) end } end def add_header(hdrname, value) unless value.empty? @header_part << hdrname << ": " << value << CRLF end end def input @header_part.eof? ? @body_part : @header_part end public def peeraddr [nil, @remote_port, @remote_host, @remote_addr] end def addr [nil, @server_port, @server_name, @server_addr] end def gets(eol=LF, size=nil) input.gets(eol, size) end def read(size=nil) input.read(size) end def each input.each{|line| yield(line) } end def eof? input.eof? end def <<(data) @out_port << data end def cert return nil unless defined?(OpenSSL) if pem = @env["SSL_SERVER_CERT"] OpenSSL::X509::Certificate.new(pem) unless pem.empty? end end def peer_cert return nil unless defined?(OpenSSL) if pem = @env["SSL_CLIENT_CERT"] OpenSSL::X509::Certificate.new(pem) unless pem.empty? end end def peer_cert_chain return nil unless defined?(OpenSSL) if @env["SSL_CLIENT_CERT_CHAIN_0"] keys = @env.keys certs = keys.sort.collect{|k| if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k if pem = @env[k] OpenSSL::X509::Certificate.new(pem) unless pem.empty? end end } certs.compact end end def cipher return nil unless defined?(OpenSSL) if cipher = @env["SSL_CIPHER"] ret = [ cipher ] ret << @env["SSL_PROTOCOL"] ret << @env["SSL_CIPHER_USEKEYSIZE"] ret << @env["SSL_CIPHER_ALGKEYSIZE"] ret end end end end end 070701001846f2000081a40000000000000000000000014ac5d9d30000053d000000b600010002ffffffffffffffff0000003200000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth.rb# # httpauth.rb -- HTTP access authentication # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou # Copyright (c) 2002 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: httpauth.rb,v 1.14 2003/07/22 19:20:42 gotoyuzo Exp $ require 'webrick/httpauth/basicauth' require 'webrick/httpauth/digestauth' require 'webrick/httpauth/htpasswd' require 'webrick/httpauth/htdigest' require 'webrick/httpauth/htgroup' module WEBrick module HTTPAuth module_function def _basic_auth(req, res, realm, req_field, res_field, err_type, block) user = pass = nil if /^Basic\s+(.*)/o =~ req[req_field] userpass = $1 user, pass = userpass.unpack("m*")[0].split(":", 2) end if block.call(user, pass) req.user = user return end res[res_field] = "Basic realm=\"#{realm}\"" raise err_type end def basic_auth(req, res, realm, &block) _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate", HTTPStatus::Unauthorized, block) end def proxy_basic_auth(req, res, realm, &block) _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate", HTTPStatus::ProxyAuthenticationRequired, block) end end end 070701001846f3000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000002f00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth070701001846f4000081a40000000000000000000000014ac5d9d300000925000000b600010002ffffffffffffffff0000004000000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/authenticator.rb# # httpauth/authenticator.rb -- Authenticator mix-in module. # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: authenticator.rb,v 1.3 2003/02/20 07:15:47 gotoyuzo Exp $ module WEBrick module HTTPAuth module Authenticator RequestField = "Authorization" ResponseField = "WWW-Authenticate" ResponseInfoField = "Authentication-Info" AuthException = HTTPStatus::Unauthorized AuthScheme = nil # must override by the derived class attr_reader :realm, :userdb, :logger private def check_init(config) [:UserDB, :Realm].each{|sym| unless config[sym] raise ArgumentError, "Argument #{sym.inspect} missing." end } @realm = config[:Realm] @userdb = config[:UserDB] @logger = config[:Logger] || Log::new($stderr) @reload_db = config[:AutoReloadUserDB] @request_field = self::class::RequestField @response_field = self::class::ResponseField @resp_info_field = self::class::ResponseInfoField @auth_exception = self::class::AuthException @auth_scheme = self::class::AuthScheme end def check_scheme(req) unless credentials = req[@request_field] error("no credentials in the request.") return nil end unless match = /^#{@auth_scheme}\s+/i.match(credentials) error("invalid scheme in %s.", credentials) info("%s: %s", @request_field, credentials) if $DEBUG return nil end return match.post_match end def log(meth, fmt, *args) msg = format("%s %s: ", @auth_scheme, @realm) msg << fmt % args @logger.send(meth, msg) end def error(fmt, *args) if @logger.error? log(:error, fmt, *args) end end def info(fmt, *args) if @logger.info? log(:info, fmt, *args) end end end module ProxyAuthenticator RequestField = "Proxy-Authorization" ResponseField = "Proxy-Authenticate" InfoField = "Proxy-Authentication-Info" AuthException = HTTPStatus::ProxyAuthenticationRequired end end end 070701001846f7000081a40000000000000000000000014ac5d9d300000877000000b600010002ffffffffffffffff0000003b00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/htdigest.rb# # httpauth/htdigest.rb -- Apache compatible htdigest file # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: htdigest.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $ require 'webrick/httpauth/userdb' require 'webrick/httpauth/digestauth' require 'tempfile' module WEBrick module HTTPAuth class Htdigest include UserDB def initialize(path) @path = path @mtime = Time.at(0) @digest = Hash.new @mutex = Mutex::new @auth_type = DigestAuth open(@path,"a").close unless File::exist?(@path) reload end def reload mtime = File::mtime(@path) if mtime > @mtime @digest.clear open(@path){|io| while line = io.gets line.chomp! user, realm, pass = line.split(/:/, 3) unless @digest[realm] @digest[realm] = Hash.new end @digest[realm][user] = pass end } @mtime = mtime end end def flush(output=nil) output ||= @path tmp = Tempfile.new("htpasswd", File::dirname(output)) begin each{|item| tmp.puts(item.join(":")) } tmp.close File::rename(tmp.path, output) rescue tmp.close(true) end end def get_passwd(realm, user, reload_db) reload() if reload_db if hash = @digest[realm] hash[user] end end def set_passwd(realm, user, pass) @mutex.synchronize{ unless @digest[realm] @digest[realm] = Hash.new end @digest[realm][user] = make_passwd(realm, user, pass) } end def delete_passwd(realm, user) if hash = @digest[realm] hash.delete(user) end end def each @digest.keys.sort.each{|realm| hash = @digest[realm] hash.keys.sort.each{|user| yield([user, realm, hash[user]]) } } end end end end 070701001846f8000081a40000000000000000000000014ac5d9d3000005a2000000b600010002ffffffffffffffff0000003a00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/htgroup.rb# # httpauth/htgroup.rb -- Apache compatible htgroup file # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: htgroup.rb,v 1.1 2003/02/16 22:22:56 gotoyuzo Exp $ require 'tempfile' module WEBrick module HTTPAuth class Htgroup def initialize(path) @path = path @mtime = Time.at(0) @group = Hash.new open(@path,"a").close unless File::exist?(@path) reload end def reload if (mtime = File::mtime(@path)) > @mtime @group.clear open(@path){|io| while line = io.gets line.chomp! group, members = line.split(/:\s*/) @group[group] = members.split(/\s+/) end } @mtime = mtime end end def flush(output=nil) output ||= @path tmp = Tempfile.new("htgroup", File::dirname(output)) begin @group.keys.sort.each{|group| tmp.puts(format("%s: %s", group, self.members(group).join(" "))) } tmp.close File::rename(tmp.path, output) rescue tmp.close(true) end end def members(group) reload @group[group] || [] end def add(group, members) @group[group] = members(group) | members end end end end 070701001846f6000081a40000000000000000000000014addd49100002ccd000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/digestauth.rb# # httpauth/digestauth.rb -- HTTP digest access authentication # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. # Copyright (c) 2003 H.M. # # The original implementation is provided by H.M. # URL: http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name= # %C7%A7%BE%DA%B5%A1%C7%BD%A4%F2%B2%FE%C2%A4%A4%B7%A4%C6%A4%DF%A4%EB # # $IPR: digestauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $ require 'webrick/config' require 'webrick/httpstatus' require 'webrick/httpauth/authenticator' require 'digest/md5' require 'digest/sha1' module WEBrick module HTTPAuth class DigestAuth include Authenticator AuthScheme = "Digest" OpaqueInfo = Struct.new(:time, :nonce, :nc) attr_reader :algorithm, :qop def self.make_passwd(realm, user, pass) pass ||= "" Digest::MD5::hexdigest([user, realm, pass].join(":")) end def initialize(config, default=Config::DigestAuth) check_init(config) @config = default.dup.update(config) @algorithm = @config[:Algorithm] @domain = @config[:Domain] @qop = @config[:Qop] @use_opaque = @config[:UseOpaque] @use_next_nonce = @config[:UseNextNonce] @check_nc = @config[:CheckNc] @use_auth_info_header = @config[:UseAuthenticationInfoHeader] @nonce_expire_period = @config[:NonceExpirePeriod] @nonce_expire_delta = @config[:NonceExpireDelta] @internet_explorer_hack = @config[:InternetExplorerHack] @opera_hack = @config[:OperaHack] case @algorithm when 'MD5','MD5-sess' @h = Digest::MD5 when 'SHA1','SHA1-sess' # it is a bonus feature :-) @h = Digest::SHA1 else msg = format('Algorithm "%s" is not supported.', @algorithm) raise ArgumentError.new(msg) end @instance_key = hexdigest(self.__id__, Time.now.to_i, Process.pid) @opaques = {} @last_nonce_expire = Time.now @mutex = Mutex.new end def authenticate(req, res) unless result = @mutex.synchronize{ _authenticate(req, res) } challenge(req, res) end if result == :nonce_is_stale challenge(req, res, true) end return true end def challenge(req, res, stale=false) nonce = generate_next_nonce(req) if @use_opaque opaque = generate_opaque(req) @opaques[opaque].nonce = nonce end param = Hash.new param["realm"] = HTTPUtils::quote(@realm) param["domain"] = HTTPUtils::quote(@domain.to_a.join(" ")) if @domain param["nonce"] = HTTPUtils::quote(nonce) param["opaque"] = HTTPUtils::quote(opaque) if opaque param["stale"] = stale.to_s param["algorithm"] = @algorithm param["qop"] = HTTPUtils::quote(@qop.to_a.join(",")) if @qop res[@response_field] = "#{@auth_scheme} " + param.map{|k,v| "#{k}=#{v}" }.join(", ") info("%s: %s", @response_field, res[@response_field]) if $DEBUG raise @auth_exception end private MustParams = ['username','realm','nonce','uri','response'] MustParamsAuth = ['cnonce','nc'] def _authenticate(req, res) unless digest_credentials = check_scheme(req) return false end auth_req = split_param_value(digest_credentials) if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int" req_params = MustParams + MustParamsAuth else req_params = MustParams end req_params.each{|key| unless auth_req.has_key?(key) error('%s: parameter missing. "%s"', auth_req['username'], key) raise HTTPStatus::BadRequest end } if !check_uri(req, auth_req) raise HTTPStatus::BadRequest end if auth_req['realm'] != @realm error('%s: realm unmatch. "%s" for "%s"', auth_req['username'], auth_req['realm'], @realm) return false end auth_req['algorithm'] ||= 'MD5' if auth_req['algorithm'] != @algorithm && (@opera_hack && auth_req['algorithm'] != @algorithm.upcase) error('%s: algorithm unmatch. "%s" for "%s"', auth_req['username'], auth_req['algorithm'], @algorithm) return false end if (@qop.nil? && auth_req.has_key?('qop')) || (@qop && (! @qop.member?(auth_req['qop']))) error('%s: the qop is not allowed. "%s"', auth_req['username'], auth_req['qop']) return false end password = @userdb.get_passwd(@realm, auth_req['username'], @reload_db) unless password error('%s: the user is not allowd.', auth_req['username']) return false end nonce_is_invalid = false if @use_opaque info("@opaque = %s", @opaque.inspect) if $DEBUG if !(opaque = auth_req['opaque']) error('%s: opaque is not given.', auth_req['username']) nonce_is_invalid = true elsif !(opaque_struct = @opaques[opaque]) error('%s: invalid opaque is given.', auth_req['username']) nonce_is_invalid = true elsif !check_opaque(opaque_struct, req, auth_req) @opaques.delete(auth_req['opaque']) nonce_is_invalid = true end elsif !check_nonce(req, auth_req) nonce_is_invalid = true end if /-sess$/ =~ auth_req['algorithm'] || (@opera_hack && /-SESS$/ =~ auth_req['algorithm']) ha1 = hexdigest(password, auth_req['nonce'], auth_req['cnonce']) else ha1 = password end if auth_req['qop'] == "auth" || auth_req['qop'] == nil ha2 = hexdigest(req.request_method, auth_req['uri']) ha2_res = hexdigest("", auth_req['uri']) elsif auth_req['qop'] == "auth-int" ha2 = hexdigest(req.request_method, auth_req['uri'], hexdigest(req.body)) ha2_res = hexdigest("", auth_req['uri'], hexdigest(res.body)) end if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int" param2 = ['nonce', 'nc', 'cnonce', 'qop'].map{|key| auth_req[key] }.join(':') digest = hexdigest(ha1, param2, ha2) digest_res = hexdigest(ha1, param2, ha2_res) else digest = hexdigest(ha1, auth_req['nonce'], ha2) digest_res = hexdigest(ha1, auth_req['nonce'], ha2_res) end if digest != auth_req['response'] error("%s: digest unmatch.", auth_req['username']) return false elsif nonce_is_invalid error('%s: digest is valid, but nonce is not valid.', auth_req['username']) return :nonce_is_stale elsif @use_auth_info_header auth_info = { 'nextnonce' => generate_next_nonce(req), 'rspauth' => digest_res } if @use_opaque opaque_struct.time = req.request_time opaque_struct.nonce = auth_info['nextnonce'] opaque_struct.nc = "%08x" % (auth_req['nc'].hex + 1) end if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int" ['qop','cnonce','nc'].each{|key| auth_info[key] = auth_req[key] } end res[@resp_info_field] = auth_info.keys.map{|key| if key == 'nc' key + '=' + auth_info[key] else key + "=" + HTTPUtils::quote(auth_info[key]) end }.join(', ') end info('%s: authentication succeeded.', auth_req['username']) req.user = auth_req['username'] return true end def split_param_value(string) ret = {} while string.bytesize != 0 case string when /^\s*([\w\-\.\*\%\!]+)=\s*\"((\\.|[^\"])*)\"\s*,?/ key = $1 matched = $2 string = $' ret[key] = matched.gsub(/\\(.)/, "\\1") when /^\s*([\w\-\.\*\%\!]+)=\s*([^,\"]*),?/ key = $1 matched = $2 string = $' ret[key] = matched.clone when /^s*^,/ string = $' else break end end ret end def generate_next_nonce(req) now = "%012d" % req.request_time.to_i pk = hexdigest(now, @instance_key)[0,32] nonce = [now + ":" + pk].pack("m*").chop # it has 60 length of chars. nonce end def check_nonce(req, auth_req) username = auth_req['username'] nonce = auth_req['nonce'] pub_time, pk = nonce.unpack("m*")[0].split(":", 2) if (!pub_time || !pk) error("%s: empty nonce is given", username) return false elsif (hexdigest(pub_time, @instance_key)[0,32] != pk) error("%s: invalid private-key: %s for %s", username, hexdigest(pub_time, @instance_key)[0,32], pk) return false end diff_time = req.request_time.to_i - pub_time.to_i if (diff_time < 0) error("%s: difference of time-stamp is negative.", username) return false elsif diff_time > @nonce_expire_period error("%s: nonce is expired.", username) return false end return true end def generate_opaque(req) @mutex.synchronize{ now = req.request_time if now - @last_nonce_expire > @nonce_expire_delta @opaques.delete_if{|key,val| (now - val.time) > @nonce_expire_period } @last_nonce_expire = now end begin opaque = Utils::random_string(16) end while @opaques[opaque] @opaques[opaque] = OpaqueInfo.new(now, nil, '00000001') opaque } end def check_opaque(opaque_struct, req, auth_req) if (@use_next_nonce && auth_req['nonce'] != opaque_struct.nonce) error('%s: nonce unmatched. "%s" for "%s"', auth_req['username'], auth_req['nonce'], opaque_struct.nonce) return false elsif !check_nonce(req, auth_req) return false end if (@check_nc && auth_req['nc'] != opaque_struct.nc) error('%s: nc unmatched."%s" for "%s"', auth_req['username'], auth_req['nc'], opaque_struct.nc) return false end true end def check_uri(req, auth_req) uri = auth_req['uri'] if uri != req.request_uri.to_s && uri != req.unparsed_uri && (@internet_explorer_hack && uri != req.path) error('%s: uri unmatch. "%s" for "%s"', auth_req['username'], auth_req['uri'], req.request_uri.to_s) return false end true end def hexdigest(*args) @h.hexdigest(args.join(":")) end end class ProxyDigestAuth < DigestAuth include ProxyAuthenticator def check_uri(req, auth_req) return true end end end end 070701001846f9000081a40000000000000000000000014ac5d9d3000007eb000000b600010002ffffffffffffffff0000003b00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/htpasswd.rb# # httpauth/htpasswd -- Apache compatible htpasswd file # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: htpasswd.rb,v 1.4 2003/07/22 19:20:45 gotoyuzo Exp $ require 'webrick/httpauth/userdb' require 'webrick/httpauth/basicauth' require 'tempfile' module WEBrick module HTTPAuth class Htpasswd include UserDB def initialize(path) @path = path @mtime = Time.at(0) @passwd = Hash.new @auth_type = BasicAuth open(@path,"a").close unless File::exist?(@path) reload end def reload mtime = File::mtime(@path) if mtime > @mtime @passwd.clear open(@path){|io| while line = io.gets line.chomp! case line when %r!\A[^:]+:[a-zA-Z0-9./]{13}\z! user, pass = line.split(":") when /:\$/, /:{SHA}/ raise NotImplementedError, 'MD5, SHA1 .htpasswd file not supported' else raise StandardError, 'bad .htpasswd file' end @passwd[user] = pass end } @mtime = mtime end end def flush(output=nil) output ||= @path tmp = Tempfile.new("htpasswd", File::dirname(output)) begin each{|item| tmp.puts(item.join(":")) } tmp.close File::rename(tmp.path, output) rescue tmp.close(true) end end def get_passwd(realm, user, reload_db) reload() if reload_db @passwd[user] end def set_passwd(realm, user, pass) @passwd[user] = make_passwd(realm, user, pass) end def delete_passwd(realm, user) @passwd.delete(user) end def each @passwd.keys.sort.each{|user| yield([user, @passwd[user]]) } end end end end 070701001846fa000081a40000000000000000000000014ac5d9d3000002b9000000b600010002ffffffffffffffff0000003900000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/userdb.rb# # httpauth/userdb.rb -- UserDB mix-in module. # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: userdb.rb,v 1.2 2003/02/20 07:15:48 gotoyuzo Exp $ module WEBrick module HTTPAuth module UserDB attr_accessor :auth_type # BasicAuth or DigestAuth def make_passwd(realm, user, pass) @auth_type::make_passwd(realm, user, pass) end def set_passwd(realm, user, pass) self[user] = pass end def get_passwd(realm, user, reload_db=false) # reload_db is dummy make_passwd(realm, user, self[user]) end end end end 070701001846f5000081a40000000000000000000000014ac5d9d3000006d8000000b600010002ffffffffffffffff0000003c00000000root/usr/local/lib/ruby/1.9.1/webrick/httpauth/basicauth.rb# # httpauth/basicauth.rb -- HTTP basic access authentication # # Author: IPR -- Internet Programming with Ruby -- writers # Copyright (c) 2003 Internet Programming with Ruby writers. All rights # reserved. # # $IPR: basicauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $ require 'webrick/config' require 'webrick/httpstatus' require 'webrick/httpauth/authenticator' module WEBrick module HTTPAuth class BasicAuth include Authenticator AuthScheme = "Basic" def self.make_passwd(realm, user, pass) pass ||= "" pass.crypt(Utils::random_string(2)) end attr_reader :realm, :userdb, :logger def initialize(config, default=Config::BasicAuth) check_init(config) @config = default.dup.update(config) end def authenticate(req, res) unless basic_credentials = check_scheme(req) challenge(req, res) end userid, password = basic_credentials.unpack("m*")[0].split(":", 2) password ||= "" if userid.empty? error("user id was not given.") challenge(req, res) end unless encpass = @userdb.get_passwd(@realm, userid, @reload_db) error("%s: the user is not allowed.", userid) challenge(req, res) end if password.crypt(encpass) != encpass error("%s: password unmatch.", userid) challenge(req, res) end info("%s: authentication succeeded.", userid) req.user = userid end def challenge(req, res) res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\"" raise @auth_exception end end class ProxyBasicAuth < BasicAuth include ProxyAuthenticator end end end 0707010018448d000081a40000000000000000000000014bd7529a00000e90000000b600010002ffffffffffffffff0000002800000000root/usr/local/lib/ruby/1.9.1/e2mmap.rb# # e2mmap.rb - for ruby 1.1 # $Release Version: 2.0$ # $Revision: 1.10 $ # by Keiju ISHITSUKA # # -- # Usage: # # U1) # class Foo # extend Exception2MessageMapper # def_e2message ExistingExceptionClass, "message..." # def_exception :NewExceptionClass, "message..."[, superclass] # ... # end # # U2) # module Error # extend Exception2MessageMapper # def_e2meggage ExistingExceptionClass, "message..." # def_exception :NewExceptionClass, "message..."[, superclass] # ... # end # class Foo # include Error # ... # end # # foo = Foo.new # foo.Fail .... # # U3) # module Error # extend Exception2MessageMapper # def_e2message ExistingExceptionClass, "message..." # def_exception :NewExceptionClass, "message..."[, superclass] # ... # end # class Foo # extend Exception2MessageMapper # include Error # ... # end # # Foo.Fail NewExceptionClass, arg... # Foo.Fail ExistingExceptionClass, arg... # # module Exception2MessageMapper @RCS_ID='-$Id: e2mmap.rb,v 1.10 1999/02/17 12:33:17 keiju Exp keiju $-' E2MM = Exception2MessageMapper def E2MM.extend_object(cl) super cl.bind(self) unless cl < E2MM end def bind(cl) self.module_eval %[ def Raise(err = nil, *rest) Exception2MessageMapper.Raise(self.class, err, *rest) end alias Fail Raise def self.included(mod) mod.extend Exception2MessageMapper end ] end # Fail(err, *rest) # err: exception # rest: message arguments # def Raise(err = nil, *rest) E2MM.Raise(self, err, *rest) end alias Fail Raise alias fail Raise # def_e2message(c, m) # c: exception # m: message_form # define exception c with message m. # def def_e2message(c, m) E2MM.def_e2message(self, c, m) end # def_exception(n, m, s) # n: exception_name # m: message_form # s: superclass(default: StandardError) # define exception named ``c'' with message m. # def def_exception(n, m, s = StandardError) E2MM.def_exception(self, n, m, s) end # # Private definitions. # # {[class, exp] => message, ...} @MessageMap = {} # E2MM.def_e2message(k, e, m) # k: class to define exception under. # e: exception # m: message_form # define exception c with message m. # def E2MM.def_e2message(k, c, m) E2MM.instance_eval{@MessageMap[[k, c]] = m} c end # E2MM.def_exception(k, n, m, s) # k: class to define exception under. # n: exception_name # m: message_form # s: superclass(default: StandardError) # define exception named ``c'' with message m. # def E2MM.def_exception(k, n, m, s = StandardError) n = n.id2name if n.kind_of?(Fixnum) e = Class.new(s) E2MM.instance_eval{@MessageMap[[k, e]] = m} k.const_set(n, e) end # Fail(klass, err, *rest) # klass: class to define exception under. # err: exception # rest: message arguments # def E2MM.Raise(klass = E2MM, err = nil, *rest) if form = e2mm_message(klass, err) b = $@.nil? ? caller(1) : $@ #p $@ #p __FILE__ b.shift if b[0] =~ /^#{Regexp.quote(__FILE__)}:/ raise err, sprintf(form, *rest), b else E2MM.Fail E2MM, ErrNotRegisteredException, err.inspect end end class << E2MM alias Fail Raise end def E2MM.e2mm_message(klass, exp) for c in klass.ancestors if mes = @MessageMap[[c,exp]] #p mes m = klass.instance_eval('"' + mes + '"') return m end end nil end class << self alias message e2mm_message end E2MM.def_exception(E2MM, :ErrNotRegisteredException, "not registerd exception(%s)") end 070701001845d6000081a40000000000000000000000014bcacc5a0000e9c9000000b600010002ffffffffffffffff0000002800000000root/usr/local/lib/ruby/1.9.1/resolv.rbrequire 'socket' require 'fcntl' require 'timeout' require 'thread' begin require 'securerandom' rescue LoadError end # Resolv is a thread-aware DNS resolver library written in Ruby. Resolv can # handle multiple DNS requests concurrently without blocking the entire ruby # interpreter. # # See also resolv-replace.rb to replace the libc resolver with Resolv. # # Resolv can look up various DNS resources using the DNS module directly. # # Examples: # # p Resolv.getaddress "www.ruby-lang.org" # p Resolv.getname "210.251.121.214" # # Resolv::DNS.open do |dns| # ress = dns.getresources "www.ruby-lang.org", Resolv::DNS::Resource::IN::A # p ress.map { |r| r.address } # ress = dns.getresources "ruby-lang.org", Resolv::DNS::Resource::IN::MX # p ress.map { |r| [r.exchange.to_s, r.preference] } # end # # # == Bugs # # * NIS is not supported. # * /etc/nsswitch.conf is not supported. class Resolv ## # Looks up the first IP address for +name+. def self.getaddress(name) DefaultResolver.getaddress(name) end ## # Looks up all IP address for +name+. def self.getaddresses(name) DefaultResolver.getaddresses(name) end ## # Iterates over all IP addresses for +name+. def self.each_address(name, &block) DefaultResolver.each_address(name, &block) end ## # Looks up the hostname of +address+. def self.getname(address) DefaultResolver.getname(address) end ## # Looks up all hostnames for +address+. def self.getnames(address) DefaultResolver.getnames(address) end ## # Iterates over all hostnames for +address+. def self.each_name(address, &proc) DefaultResolver.each_name(address, &proc) end ## # Creates a new Resolv using +resolvers+. def initialize(resolvers=[Hosts.new, DNS.new]) @resolvers = resolvers end ## # Looks up the first IP address for +name+. def getaddress(name) each_address(name) {|address| return address} raise ResolvError.new("no address for #{name}") end ## # Looks up all IP address for +name+. def getaddresses(name) ret = [] each_address(name) {|address| ret << address} return ret end ## # Iterates over all IP addresses for +name+. def each_address(name) if AddressRegex =~ name yield name return end yielded = false @resolvers.each {|r| r.each_address(name) {|address| yield address.to_s yielded = true } return if yielded } end ## # Looks up the hostname of +address+. def getname(address) each_name(address) {|name| return name} raise ResolvError.new("no name for #{address}") end ## # Looks up all hostnames for +address+. def getnames(address) ret = [] each_name(address) {|name| ret << name} return ret end ## # Iterates over all hostnames for +address+. def each_name(address) yielded = false @resolvers.each {|r| r.each_name(address) {|name| yield name.to_s yielded = true } return if yielded } end ## # Indicates a failure to resolve a name or address. class ResolvError < StandardError; end ## # Indicates a timeout resolving a name or address. class ResolvTimeout < TimeoutError; end ## # Resolv::Hosts is a hostname resolver that uses the system hosts file. class Hosts if /mswin|mingw|bccwin/ =~ RUBY_PLATFORM require 'win32/resolv' DefaultFileName = Win32::Resolv.get_hosts_path else DefaultFileName = '/etc/hosts' end ## # Creates a new Resolv::Hosts, using +filename+ for its data source. def initialize(filename = DefaultFileName) @filename = filename @mutex = Mutex.new @initialized = nil end def lazy_initialize # :nodoc: @mutex.synchronize { unless @initialized @name2addr = {} @addr2name = {} open(@filename) {|f| f.each {|line| line.sub!(/#.*/, '') addr, hostname, *aliases = line.split(/\s+/) next unless addr addr.untaint hostname.untaint @addr2name[addr] = [] unless @addr2name.include? addr @addr2name[addr] << hostname @addr2name[addr] += aliases @name2addr[hostname] = [] unless @name2addr.include? hostname @name2addr[hostname] << addr aliases.each {|n| n.untaint @name2addr[n] = [] unless @name2addr.include? n @name2addr[n] << addr } } } @name2addr.each {|name, arr| arr.reverse!} @initialized = true end } self end ## # Gets the IP address of +name+ from the hosts file. def getaddress(name) each_address(name) {|address| return address} raise ResolvError.new("#{@filename} has no name: #{name}") end ## # Gets all IP addresses for +name+ from the hosts file. def getaddresses(name) ret = [] each_address(name) {|address| ret << address} return ret end ## # Iterates over all IP addresses for +name+ retrieved from the hosts file. def each_address(name, &proc) lazy_initialize if @name2addr.include?(name) @name2addr[name].each(&proc) end end ## # Gets the hostname of +address+ from the hosts file. def getname(address) each_name(address) {|name| return name} raise ResolvError.new("#{@filename} has no address: #{address}") end ## # Gets all hostnames for +address+ from the hosts file. def getnames(address) ret = [] each_name(address) {|name| ret << name} return ret end ## # Iterates over all hostnames for +address+ retrieved from the hosts file. def each_name(address, &proc) lazy_initialize if @addr2name.include?(address) @addr2name[address].each(&proc) end end end ## # Resolv::DNS is a DNS stub resolver. # # Information taken from the following places: # # * STD0013 # * RFC 1035 # * ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters # * etc. class DNS ## # Default DNS Port Port = 53 ## # Default DNS UDP packet size UDPSize = 512 ## # Creates a new DNS resolver. See Resolv::DNS.new for argument details. # # Yields the created DNS resolver to the block, if given, otherwise # returns it. def self.open(*args) dns = new(*args) return dns unless block_given? begin yield dns ensure dns.close end end ## # Creates a new DNS resolver. # # +config_info+ can be: # # nil:: Uses /etc/resolv.conf. # String:: Path to a file using /etc/resolv.conf's format. # Hash:: Must contain :nameserver, :search and :ndots keys. # :nameserver_port can be used to specify port number of nameserver address. # # The value of :nameserver should be an address string or # an array of address strings. # - :nameserver => '8.8.8.8' # - :nameserver => ['8.8.8.8', '8.8.4.4'] # # The value of :nameserver_port should be an array of # pair of nameserver address and port number. # - :nameserver_port => [['8.8.8.8', 53], ['8.8.4.4', 53]] # # Example: # # Resolv::DNS.new(:nameserver => ['210.251.121.21'], # :search => ['ruby-lang.org'], # :ndots => 1) def initialize(config_info=nil) @mutex = Mutex.new @config = Config.new(config_info) @initialized = nil end def lazy_initialize # :nodoc: @mutex.synchronize { unless @initialized @config.lazy_initialize @initialized = true end } self end ## # Closes the DNS resolver. def close @mutex.synchronize { if @initialized @initialized = false end } end ## # Gets the IP address of +name+ from the DNS resolver. # # +name+ can be a Resolv::DNS::Name or a String. Retrieved address will # be a Resolv::IPv4 or Resolv::IPv6 def getaddress(name) each_address(name) {|address| return address} raise ResolvError.new("DNS result has no information for #{name}") end ## # Gets all IP addresses for +name+ from the DNS resolver. # # +name+ can be a Resolv::DNS::Name or a String. Retrieved addresses will # be a Resolv::IPv4 or Resolv::IPv6 def getaddresses(name) ret = [] each_address(name) {|address| ret << address} return ret end ## # Iterates over all IP addresses for +name+ retrieved from the DNS # resolver. # # +name+ can be a Resolv::DNS::Name or a String. Retrieved addresses will # be a Resolv::IPv4 or Resolv::IPv6 def each_address(name) each_resource(name, Resource::IN::A) {|resource| yield resource.address} if use_ipv6? each_resource(name, Resource::IN::AAAA) {|resource| yield resource.address} end end def use_ipv6? begin list = Socket.ip_address_list rescue NotImplementedError return true end list.any? {|a| a.ipv6? && !a.ipv6_loopback? && !a.ipv6_linklocal? } end private :use_ipv6? ## # Gets the hostname for +address+ from the DNS resolver. # # +address+ must be a Resolv::IPv4, Resolv::IPv6 or a String. Retrieved # name will be a Resolv::DNS::Name. def getname(address) each_name(address) {|name| return name} raise ResolvError.new("DNS result has no information for #{address}") end ## # Gets all hostnames for +address+ from the DNS resolver. # # +address+ must be a Resolv::IPv4, Resolv::IPv6 or a String. Retrieved # names will be Resolv::DNS::Name instances. def getnames(address) ret = [] each_name(address) {|name| ret << name} return ret end ## # Iterates over all hostnames for +address+ retrieved from the DNS # resolver. # # +address+ must be a Resolv::IPv4, Resolv::IPv6 or a String. Retrieved # names will be Resolv::DNS::Name instances. def each_name(address) case address when Name ptr = address when IPv4::Regex ptr = IPv4.create(address).to_name when IPv6::Regex ptr = IPv6.create(address).to_name else raise ResolvError.new("cannot interpret as address: #{address}") end each_resource(ptr, Resource::IN::PTR) {|resource| yield resource.name} end ## # Look up the +typeclass+ DNS resource of +name+. # # +name+ must be a Resolv::DNS::Name or a String. # # +typeclass+ should be one of the following: # # * Resolv::DNS::Resource::IN::A # * Resolv::DNS::Resource::IN::AAAA # * Resolv::DNS::Resource::IN::ANY # * Resolv::DNS::Resource::IN::CNAME # * Resolv::DNS::Resource::IN::HINFO # * Resolv::DNS::Resource::IN::MINFO # * Resolv::DNS::Resource::IN::MX # * Resolv::DNS::Resource::IN::NS # * Resolv::DNS::Resource::IN::PTR # * Resolv::DNS::Resource::IN::SOA # * Resolv::DNS::Resource::IN::TXT # * Resolv::DNS::Resource::IN::WKS # # Returned resource is represented as a Resolv::DNS::Resource instance, # i.e. Resolv::DNS::Resource::IN::A. def getresource(name, typeclass) each_resource(name, typeclass) {|resource| return resource} raise ResolvError.new("DNS result has no information for #{name}") end ## # Looks up all +typeclass+ DNS resources for +name+. See #getresource for # argument details. def getresources(name, typeclass) ret = [] each_resource(name, typeclass) {|resource| ret << resource} return ret end ## # Iterates over all +typeclass+ DNS resources for +name+. See # #getresource for argument details. def each_resource(name, typeclass, &proc) lazy_initialize requester = make_requester senders = {} begin @config.resolv(name) {|candidate, tout, nameserver, port| msg = Message.new msg.rd = 1 msg.add_question(candidate, typeclass) unless sender = senders[[candidate, nameserver, port]] sender = senders[[candidate, nameserver, port]] = requester.sender(msg, candidate, nameserver, port) end reply, reply_name = requester.request(sender, tout) case reply.rcode when RCode::NoError extract_resources(reply, reply_name, typeclass, &proc) return when RCode::NXDomain raise Config::NXDomain.new(reply_name.to_s) else raise Config::OtherResolvError.new(reply_name.to_s) end } ensure requester.close end end def make_requester # :nodoc: nameserver_port = @config.nameserver_port if nameserver_port.length == 1 Requester::ConnectedUDP.new(*nameserver_port[0]) else Requester::UnconnectedUDP.new(*nameserver_port) end end def extract_resources(msg, name, typeclass) # :nodoc: if typeclass < Resource::ANY n0 = Name.create(name) msg.each_answer {|n, ttl, data| yield data if n0 == n } end yielded = false n0 = Name.create(name) msg.each_answer {|n, ttl, data| if n0 == n case data when typeclass yield data yielded = true when Resource::CNAME n0 = data.name end end } return if yielded msg.each_answer {|n, ttl, data| if n0 == n case data when typeclass yield data end end } end if defined? SecureRandom def self.random(arg) # :nodoc: begin SecureRandom.random_number(arg) rescue NotImplementedError rand(arg) end end else def self.random(arg) # :nodoc: rand(arg) end end def self.rangerand(range) # :nodoc: base = range.begin len = range.end - range.begin if !range.exclude_end? len += 1 end base + random(len) end RequestID = {} RequestIDMutex = Mutex.new def self.allocate_request_id(host, port) # :nodoc: id = nil RequestIDMutex.synchronize { h = (RequestID[[host, port]] ||= {}) begin id = rangerand(0x0000..0xffff) end while h[id] h[id] = true } id end def self.free_request_id(host, port, id) # :nodoc: RequestIDMutex.synchronize { key = [host, port] if h = RequestID[key] h.delete id if h.empty? RequestID.delete key end end } end def self.bind_random_port(udpsock, bind_host="0.0.0.0") # :nodoc: begin port = rangerand(1024..65535) udpsock.bind(bind_host, port) rescue Errno::EADDRINUSE retry end end class Requester # :nodoc: def initialize @senders = {} @socks = nil end def request(sender, tout) timelimit = Time.now + tout sender.send while true now = Time.now timeout = timelimit - now if timeout <= 0 raise ResolvTimeout end select_result = IO.select(@socks, nil, nil, timeout) if !select_result raise ResolvTimeout end reply, from = recv_reply(select_result[0]) begin msg = Message.decode(reply) rescue DecodeError next # broken DNS message ignored end if s = @senders[[from,msg.id]] break else # unexpected DNS message ignored end end return msg, s.data end def close socks = @socks @socks = nil if socks socks.each {|sock| sock.close } end end class Sender # :nodoc: def initialize(msg, data, sock) @msg = msg @data = data @sock = sock end end class UnconnectedUDP < Requester # :nodoc: def initialize(*nameserver_port) super() @nameserver_port = nameserver_port @socks_hash = {} @socks = [] nameserver_port.each {|host, port| if host.index(':') bind_host = "::" af = Socket::AF_INET6 else bind_host = "0.0.0.0" af = Socket::AF_INET end next if @socks_hash[bind_host] sock = UDPSocket.new(af) sock.do_not_reverse_lookup = true sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD DNS.bind_random_port(sock, bind_host) @socks << sock @socks_hash[bind_host] = sock } end def recv_reply(readable_socks) reply, from = readable_socks[0].recvfrom(UDPSize) return reply, [from[3],from[1]] end def sender(msg, data, host, port=Port) service = [host, port] id = DNS.allocate_request_id(host, port) request = msg.encode request[0,2] = [id].pack('n') sock = @socks_hash[host.index(':') ? "::" : "0.0.0.0"] return @senders[[service, id]] = Sender.new(request, data, sock, host, port) end def close super @senders.each_key {|service, id| DNS.free_request_id(service[0], service[1], id) } end class Sender < Requester::Sender # :nodoc: def initialize(msg, data, sock, host, port) super(msg, data, sock) @host = host @port = port end attr_reader :data def send @sock.send(@msg, 0, @host, @port) end end end class ConnectedUDP < Requester # :nodoc: def initialize(host, port=Port) super() @host = host @port = port is_ipv6 = host.index(':') sock = UDPSocket.new(is_ipv6 ? Socket::AF_INET6 : Socket::AF_INET) @socks = [sock] sock.do_not_reverse_lookup = true sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD DNS.bind_random_port(sock, is_ipv6 ? "::" : "0.0.0.0") sock.connect(host, port) end def recv_reply(readable_socks) reply = readable_socks[0].recv(UDPSize) return reply, nil end def sender(msg, data, host=@host, port=@port) unless host == @host && port == @port raise RequestError.new("host/port don't match: #{host}:#{port}") end id = DNS.allocate_request_id(@host, @port) request = msg.encode request[0,2] = [id].pack('n') return @senders[[nil,id]] = Sender.new(request, data, @socks[0]) end def close super @senders.each_key {|from, id| DNS.free_request_id(@host, @port, id) } end class Sender < Requester::Sender # :nodoc: def send @sock.send(@msg, 0) end attr_reader :data end end class TCP < Requester # :nodoc: def initialize(host, port=Port) super() @host = host @port = port sock = TCPSocket.new(@host, @port) @socks = [sock] sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD @senders = {} end def recv_reply(readable_socks) len = readable_socks[0].read(2).unpack('n')[0] reply = @socks[0].read(len) return reply, nil end def sender(msg, data, host=@host, port=@port) unless host == @host && port == @port raise RequestError.new("host/port don't match: #{host}:#{port}") end id = DNS.allocate_request_id(@host, @port) request = msg.encode request[0,2] = [request.length, id].pack('nn') return @senders[[nil,id]] = Sender.new(request, data, @socks[0]) end class Sender < Requester::Sender # :nodoc: def send @sock.print(@msg) @sock.flush end attr_reader :data end def close super @senders.each_key {|from,id| DNS.free_request_id(@host, @port, id) } end end ## # Indicates a problem with the DNS request. class RequestError < StandardError end end class Config # :nodoc: def initialize(config_info=nil) @mutex = Mutex.new @config_info = config_info @initialized = nil end def Config.parse_resolv_conf(filename) nameserver = [] search = nil ndots = 1 open(filename) {|f| f.each {|line| line.sub!(/[#;].*/, '') keyword, *args = line.split(/\s+/) args.each { |arg| arg.untaint } next unless keyword case keyword when 'nameserver' nameserver += args when 'domain' next if args.empty? search = [args[0]] when 'search' next if args.empty? search = args when 'options' args.each {|arg| case arg when /\Andots:(\d+)\z/ ndots = $1.to_i end } end } } return { :nameserver => nameserver, :search => search, :ndots => ndots } end def Config.default_config_hash(filename="/etc/resolv.conf") if File.exist? filename config_hash = Config.parse_resolv_conf(filename) else if /mswin|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM require 'win32/resolv' search, nameserver = Win32::Resolv.get_resolv_info config_hash = {} config_hash[:nameserver] = nameserver if nameserver config_hash[:search] = [search].flatten if search end end config_hash || {} end def lazy_initialize @mutex.synchronize { unless @initialized @nameserver_port = [] @search = nil @ndots = 1 case @config_info when nil config_hash = Config.default_config_hash when String config_hash = Config.parse_resolv_conf(@config_info) when Hash config_hash = @config_info.dup if String === config_hash[:nameserver] config_hash[:nameserver] = [config_hash[:nameserver]] end if String === config_hash[:search] config_hash[:search] = [config_hash[:search]] end else raise ArgumentError.new("invalid resolv configuration: #{@config_info.inspect}") end if config_hash.include? :nameserver @nameserver_port = config_hash[:nameserver].map {|ns| [ns, Port] } end if config_hash.include? :nameserver_port @nameserver_port = config_hash[:nameserver_port].map {|ns, port| [ns, (port || Port)] } end @search = config_hash[:search] if config_hash.include? :search @ndots = config_hash[:ndots] if config_hash.include? :ndots if @nameserver_port.empty? @nameserver_port << ['0.0.0.0', Port] end if @search @search = @search.map {|arg| Label.split(arg) } else hostname = Socket.gethostname if /\./ =~ hostname @search = [Label.split($')] else @search = [[]] end end if !@nameserver_port.kind_of?(Array) || @nameserver_port.any? {|ns_port| !(Array === ns_port) || ns_port.length != 2 !(String === ns_port[0]) || !(Integer === ns_port[1]) } raise ArgumentError.new("invalid nameserver config: #{@nameserver_port.inspect}") end if !@search.kind_of?(Array) || !@search.all? {|ls| ls.all? {|l| Label::Str === l } } raise ArgumentError.new("invalid search config: #{@search.inspect}") end if !@ndots.kind_of?(Integer) raise ArgumentError.new("invalid ndots config: #{@ndots.inspect}") end @initialized = true end } self end def single? lazy_initialize if @nameserver_port.length == 1 return @nameserver_port[0] else return nil end end def nameserver_port @nameserver_port end def generate_candidates(name) candidates = nil name = Name.create(name) if name.absolute? candidates = [name] else if @ndots <= name.length - 1 candidates = [Name.new(name.to_a)] else candidates = [] end candidates.concat(@search.map {|domain| Name.new(name.to_a + domain)}) end return candidates end InitialTimeout = 5 def generate_timeouts ts = [InitialTimeout] ts << ts[-1] * 2 / @nameserver_port.length ts << ts[-1] * 2 ts << ts[-1] * 2 return ts end def resolv(name) candidates = generate_candidates(name) timeouts = generate_timeouts begin candidates.each {|candidate| begin timeouts.each {|tout| @nameserver_port.each {|nameserver, port| begin yield candidate, tout, nameserver, port rescue ResolvTimeout end } } raise ResolvError.new("DNS resolv timeout: #{name}") rescue NXDomain end } rescue ResolvError end end ## # Indicates no such domain was found. class NXDomain < ResolvError end ## # Indicates some other unhandled resolver error was encountered. class OtherResolvError < ResolvError end end module OpCode # :nodoc: Query = 0 IQuery = 1 Status = 2 Notify = 4 Update = 5 end module RCode # :nodoc: NoError = 0 FormErr = 1 ServFail = 2 NXDomain = 3 NotImp = 4 Refused = 5 YXDomain = 6 YXRRSet = 7 NXRRSet = 8 NotAuth = 9 NotZone = 10 BADVERS = 16 BADSIG = 16 BADKEY = 17 BADTIME = 18 BADMODE = 19 BADNAME = 20 BADALG = 21 end ## # Indicates that the DNS response was unable to be decoded. class DecodeError < StandardError end ## # Indicates that the DNS request was unable to be encoded. class EncodeError < StandardError end module Label # :nodoc: def self.split(arg) labels = [] arg.scan(/[^\.]+/) {labels << Str.new($&)} return labels end class Str # :nodoc: def initialize(string) @string = string @downcase = string.downcase end attr_reader :string, :downcase def to_s return @string end def inspect return "#<#{self.class} #{self.to_s}>" end def ==(other) return @downcase == other.downcase end def eql?(other) return self == other end def hash return @downcase.hash end end end ## # A representation of a DNS name. class Name ## # Creates a new DNS name from +arg+. +arg+ can be: # # Name:: returns +arg+. # String:: Creates a new Name. def self.create(arg) case arg when Name return arg when String return Name.new(Label.split(arg), /\.\z/ =~ arg ? true : false) else raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}") end end def initialize(labels, absolute=true) # :nodoc: @labels = labels @absolute = absolute end def inspect # :nodoc: "#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>" end ## # True if this name is absolute. def absolute? return @absolute end def ==(other) # :nodoc: return false unless Name === other return @labels.join == other.to_a.join && @absolute == other.absolute? end alias eql? == # :nodoc: ## # Returns true if +other+ is a subdomain. # # Example: # # domain = Resolv::DNS::Name.create("y.z") # p Resolv::DNS::Name.create("w.x.y.z").subdomain_of?(domain) #=> true # p Resolv::DNS::Name.create("x.y.z").subdomain_of?(domain) #=> true # p Resolv::DNS::Name.create("y.z").subdomain_of?(domain) #=> false # p Resolv::DNS::Name.create("z").subdomain_of?(domain) #=> false # p Resolv::DNS::Name.create("x.y.z.").subdomain_of?(domain) #=> false # p Resolv::DNS::Name.create("w.z").subdomain_of?(domain) #=> false # def subdomain_of?(other) raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other return false if @absolute != other.absolute? other_len = other.length return false if @labels.length <= other_len return @labels[-other_len, other_len] == other.to_a end def hash # :nodoc: return @labels.hash ^ @absolute.hash end def to_a # :nodoc: return @labels end def length # :nodoc: return @labels.length end def [](i) # :nodoc: return @labels[i] end ## # returns the domain name as a string. # # The domain name doesn't have a trailing dot even if the name object is # absolute. # # Example: # # p Resolv::DNS::Name.create("x.y.z.").to_s #=> "x.y.z" # p Resolv::DNS::Name.create("x.y.z").to_s #=> "x.y.z" def to_s return @labels.join('.') end end class Message # :nodoc: @@identifier = -1 def initialize(id = (@@identifier += 1) & 0xffff) @id = id @qr = 0 @opcode = 0 @aa = 0 @tc = 0 @rd = 0 # recursion desired @ra = 0 # recursion available @rcode = 0 @question = [] @answer = [] @authority = [] @additional = [] end attr_accessor :id, :qr, :opcode, :aa, :tc, :rd, :ra, :rcode attr_reader :question, :answer, :authority, :additional def ==(other) return @id == other.id && @qr == other.qr && @opcode == other.opcode && @aa == other.aa && @tc == other.tc && @rd == other.rd && @ra == other.ra && @rcode == other.rcode && @question == other.question && @answer == other.answer && @authority == other.authority && @additional == other.additional end def add_question(name, typeclass) @question << [Name.create(name), typeclass] end def each_question @question.each {|name, typeclass| yield name, typeclass } end def add_answer(name, ttl, data) @answer << [Name.create(name), ttl, data] end def each_answer @answer.each {|name, ttl, data| yield name, ttl, data } end def add_authority(name, ttl, data) @authority << [Name.create(name), ttl, data] end def each_authority @authority.each {|name, ttl, data| yield name, ttl, data } end def add_additional(name, ttl, data) @additional << [Name.create(name), ttl, data] end def each_additional @additional.each {|name, ttl, data| yield name, ttl, data } end def each_resource each_answer {|name, ttl, data| yield name, ttl, data} each_authority {|name, ttl, data| yield name, ttl, data} each_additional {|name, ttl, data| yield name, ttl, data} end def encode return MessageEncoder.new {|msg| msg.put_pack('nnnnnn', @id, (@qr & 1) << 15 | (@opcode & 15) << 11 | (@aa & 1) << 10 | (@tc & 1) << 9 | (@rd & 1) << 8 | (@ra & 1) << 7 | (@rcode & 15), @question.length, @answer.length, @authority.length, @additional.length) @question.each {|q| name, typeclass = q msg.put_name(name) msg.put_pack('nn', typeclass::TypeValue, typeclass::ClassValue) } [@answer, @authority, @additional].each {|rr| rr.each {|r| name, ttl, data = r msg.put_name(name) msg.put_pack('nnN', data.class::TypeValue, data.class::ClassValue, ttl) msg.put_length16 {data.encode_rdata(msg)} } } }.to_s end class MessageEncoder # :nodoc: def initialize @data = '' @names = {} yield self end def to_s return @data end def put_bytes(d) @data << d end def put_pack(template, *d) @data << d.pack(template) end def put_length16 length_index = @data.length @data << "\0\0" data_start = @data.length yield data_end = @data.length @data[length_index, 2] = [data_end - data_start].pack("n") end def put_string(d) self.put_pack("C", d.length) @data << d end def put_string_list(ds) ds.each {|d| self.put_string(d) } end def put_name(d) put_labels(d.to_a) end def put_labels(d) d.each_index {|i| domain = d[i..-1] if idx = @names[domain] self.put_pack("n", 0xc000 | idx) return else @names[domain] = @data.length self.put_label(d[i]) end } @data << "\0" end def put_label(d) self.put_string(d.to_s) end end def Message.decode(m) o = Message.new(0) MessageDecoder.new(m) {|msg| id, flag, qdcount, ancount, nscount, arcount = msg.get_unpack('nnnnnn') o.id = id o.qr = (flag >> 15) & 1 o.opcode = (flag >> 11) & 15 o.aa = (flag >> 10) & 1 o.tc = (flag >> 9) & 1 o.rd = (flag >> 8) & 1 o.ra = (flag >> 7) & 1 o.rcode = flag & 15 (1..qdcount).each { name, typeclass = msg.get_question o.add_question(name, typeclass) } (1..ancount).each { name, ttl, data = msg.get_rr o.add_answer(name, ttl, data) } (1..nscount).each { name, ttl, data = msg.get_rr o.add_authority(name, ttl, data) } (1..arcount).each { name, ttl, data = msg.get_rr o.add_additional(name, ttl, data) } } return o end class MessageDecoder # :nodoc: def initialize(data) @data = data @index = 0 @limit = data.length yield self end def inspect "\#<#{self.class}: #{@data[0, @index].inspect} #{@data[@index..-1].inspect}>" end def get_length16 len, = self.get_unpack('n') save_limit = @limit @limit = @index + len d = yield(len) if @index < @limit raise DecodeError.new("junk exists") elsif @limit < @index raise DecodeError.new("limit exceeded") end @limit = save_limit return d end def get_bytes(len = @limit - @index) d = @data[@index, len] @index += len return d end def get_unpack(template) len = 0 template.each_byte {|byte| byte = "%c" % byte case byte when ?c, ?C len += 1 when ?n len += 2 when ?N len += 4 else raise StandardError.new("unsupported template: '#{byte.chr}' in '#{template}'") end } raise DecodeError.new("limit exceeded") if @limit < @index + len arr = @data.unpack("@#{@index}#{template}") @index += len return arr end def get_string len = @data[@index].ord raise DecodeError.new("limit exceeded") if @limit < @index + 1 + len d = @data[@index + 1, len] @index += 1 + len return d end def get_string_list strings = [] while @index < @limit strings << self.get_string end strings end def get_name return Name.new(self.get_labels) end def get_labels(limit=nil) limit = @index if !limit || @index < limit d = [] while true case @data[@index].ord when 0 @index += 1 return d when 192..255 idx = self.get_unpack('n')[0] & 0x3fff if limit <= idx raise DecodeError.new("non-backward name pointer") end save_index = @index @index = idx d += self.get_labels(limit) @index = save_index return d else d << self.get_label end end return d end def get_label return Label::Str.new(self.get_string) end def get_question name = self.get_name type, klass = self.get_unpack("nn") return name, Resource.get_class(type, klass) end def get_rr name = self.get_name type, klass, ttl = self.get_unpack('nnN') typeclass = Resource.get_class(type, klass) res = self.get_length16 { typeclass.decode_rdata self } res.instance_variable_set :@ttl, ttl return name, ttl, res end end end ## # A DNS query abstract class. class Query def encode_rdata(msg) # :nodoc: raise EncodeError.new("#{self.class} is query.") end def self.decode_rdata(msg) # :nodoc: raise DecodeError.new("#{self.class} is query.") end end ## # A DNS resource abstract class. class Resource < Query ## # Remaining Time To Live for this Resource. attr_reader :ttl ClassHash = {} # :nodoc: def encode_rdata(msg) # :nodoc: raise NotImplementedError.new end def self.decode_rdata(msg) # :nodoc: raise NotImplementedError.new end def ==(other) # :nodoc: return false unless self.class == other.class s_ivars = self.instance_variables s_ivars.sort! s_ivars.delete "@ttl" o_ivars = other.instance_variables o_ivars.sort! o_ivars.delete "@ttl" return s_ivars == o_ivars && s_ivars.collect {|name| self.instance_variable_get name} == o_ivars.collect {|name| other.instance_variable_get name} end def eql?(other) # :nodoc: return self == other end def hash # :nodoc: h = 0 vars = self.instance_variables vars.delete "@ttl" vars.each {|name| h ^= self.instance_variable_get(name).hash } return h end def self.get_class(type_value, class_value) # :nodoc: return ClassHash[[type_value, class_value]] || Generic.create(type_value, class_value) end ## # A generic resource abstract class. class Generic < Resource ## # Creates a new generic resource. def initialize(data) @data = data end ## # Data for this generic resource. attr_reader :data def encode_rdata(msg) # :nodoc: msg.put_bytes(data) end def self.decode_rdata(msg) # :nodoc: return self.new(msg.get_bytes) end def self.create(type_value, class_value) # :nodoc: c = Class.new(Generic) c.const_set(:TypeValue, type_value) c.const_set(:ClassValue, class_value) Generic.const_set("Type#{type_value}_Class#{class_value}", c) ClassHash[[type_value, class_value]] = c return c end end ## # Domain Name resource abstract class. class DomainName < Resource ## # Creates a new DomainName from +name+. def initialize(name) @name = name end ## # The name of this DomainName. attr_reader :name def encode_rdata(msg) # :nodoc: msg.put_name(@name) end def self.decode_rdata(msg) # :nodoc: return self.new(msg.get_name) end end # Standard (class generic) RRs ClassValue = nil # :nodoc: ## # An authoritative name server. class NS < DomainName TypeValue = 2 # :nodoc: end ## # The canonical name for an alias. class CNAME < DomainName TypeValue = 5 # :nodoc: end ## # Start Of Authority resource. class SOA < Resource TypeValue = 6 # :nodoc: ## # Creates a new SOA record. See the attr documentation for the # details of each argument. def initialize(mname, rname, serial, refresh, retry_, expire, minimum) @mname = mname @rname = rname @serial = serial @refresh = refresh @retry = retry_ @expire = expire @minimum = minimum end ## # Name of the host where the master zone file for this zone resides. attr_reader :mname ## # The person responsible for this domain name. attr_reader :rname ## # The version number of the zone file. attr_reader :serial ## # How often, in seconds, a secondary name server is to check for # updates from the primary name server. attr_reader :refresh ## # How often, in seconds, a secondary name server is to retry after a # failure to check for a refresh. attr_reader :retry ## # Time in seconds that a secondary name server is to use the data # before refreshing from the primary name server. attr_reader :expire ## # The minimum number of seconds to be used for TTL values in RRs. attr_reader :minimum def encode_rdata(msg) # :nodoc: msg.put_name(@mname) msg.put_name(@rname) msg.put_pack('NNNNN', @serial, @refresh, @retry, @expire, @minimum) end def self.decode_rdata(msg) # :nodoc: mname = msg.get_name rname = msg.get_name serial, refresh, retry_, expire, minimum = msg.get_unpack('NNNNN') return self.new( mname, rname, serial, refresh, retry_, expire, minimum) end end ## # A Pointer to another DNS name. class PTR < DomainName TypeValue = 12 # :nodoc: end ## # Host Information resource. class HINFO < Resource TypeValue = 13 # :nodoc: ## # Creates a new HINFO running +os+ on +cpu+. def initialize(cpu, os) @cpu = cpu @os = os end ## # CPU architecture for this resource. attr_reader :cpu ## # Operating system for this resource. attr_reader :os def encode_rdata(msg) # :nodoc: msg.put_string(@cpu) msg.put_string(@os) end def self.decode_rdata(msg) # :nodoc: cpu = msg.get_string os = msg.get_string return self.new(cpu, os) end end ## # Mailing list or mailbox information. class MINFO < Resource TypeValue = 14 # :nodoc: def initialize(rmailbx, emailbx) @rmailbx = rmailbx @emailbx = emailbx end ## # Domain name responsible for this mail list or mailbox. attr_reader :rmailbx ## # Mailbox to use for error messages related to the mail list or mailbox. attr_reader :emailbx def encode_rdata(msg) # :nodoc: msg.put_name(@rmailbx) msg.put_name(@emailbx) end def self.decode_rdata(msg) # :nodoc: rmailbx = msg.get_string emailbx = msg.get_string return self.new(rmailbx, emailbx) end end ## # Mail Exchanger resource. class MX < Resource TypeValue= 15 # :nodoc: ## # Creates a new MX record with +preference+, accepting mail at # +exchange+. def initialize(preference, exchange) @preference = preference @exchange = exchange end ## # The preference for this MX. attr_reader :preference ## # The host of this MX. attr_reader :exchange def encode_rdata(msg) # :nodoc: msg.put_pack('n', @preference) msg.put_name(@exchange) end def self.decode_rdata(msg) # :nodoc: preference, = msg.get_unpack('n') exchange = msg.get_name return self.new(preference, exchange) end end ## # Unstructured text resource. class TXT < Resource TypeValue = 16 # :nodoc: def initialize(first_string, *rest_strings) @strings = [first_string, *rest_strings] end ## # Returns an Array of Strings for this TXT record. attr_reader :strings ## # Returns the first string from +strings+. def data @strings[0] end def encode_rdata(msg) # :nodoc: msg.put_string_list(@strings) end def self.decode_rdata(msg) # :nodoc: strings = msg.get_string_list return self.new(*strings) end end ## # A Query type requesting any RR. class ANY < Query TypeValue = 255 # :nodoc: end ClassInsensitiveTypes = [ # :nodoc: NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, ANY ] ## # module IN contains ARPA Internet specific RRs. module IN ClassValue = 1 # :nodoc: ClassInsensitiveTypes.each {|s| c = Class.new(s) c.const_set(:TypeValue, s::TypeValue) c.const_set(:ClassValue, ClassValue) ClassHash[[s::TypeValue, ClassValue]] = c self.const_set(s.name.sub(/.*::/, ''), c) } ## # IPv4 Address resource class A < Resource TypeValue = 1 ClassValue = IN::ClassValue ClassHash[[TypeValue, ClassValue]] = self # :nodoc: ## # Creates a new A for +address+. def initialize(address) @address = IPv4.create(address) end ## # The Resolv::IPv4 address for this A. attr_reader :address def encode_rdata(msg) # :nodoc: msg.put_bytes(@address.address) end def self.decode_rdata(msg) # :nodoc: return self.new(IPv4.new(msg.get_bytes(4))) end end ## # Well Known Service resource. class WKS < Resource TypeValue = 11 ClassValue = IN::ClassValue ClassHash[[TypeValue, ClassValue]] = self # :nodoc: def initialize(address, protocol, bitmap) @address = IPv4.create(address) @protocol = protocol @bitmap = bitmap end ## # The host these services run on. attr_reader :address ## # IP protocol number for these services. attr_reader :protocol ## # A bit map of enabled services on this host. # # If protocol is 6 (TCP) then the 26th bit corresponds to the SMTP # service (port 25). If this bit is set, then an SMTP server should # be listening on TCP port 25; if zero, SMTP service is not # supported. attr_reader :bitmap def encode_rdata(msg) # :nodoc: msg.put_bytes(@address.address) msg.put_pack("n", @protocol) msg.put_bytes(@bitmap) end def self.decode_rdata(msg) # :nodoc: address = IPv4.new(msg.get_bytes(4)) protocol, = msg.get_unpack("n") bitmap = msg.get_bytes return self.new(address, protocol, bitmap) end end ## # An IPv6 address record. class AAAA < Resource TypeValue = 28 ClassValue = IN::ClassValue ClassHash[[TypeValue, ClassValue]] = self # :nodoc: ## # Creates a new AAAA for +address+. def initialize(address) @address = IPv6.create(address) end ## # The Resolv::IPv6 address for this AAAA. attr_reader :address def encode_rdata(msg) # :nodoc: msg.put_bytes(@address.address) end def self.decode_rdata(msg) # :nodoc: return self.new(IPv6.new(msg.get_bytes(16))) end end ## # SRV resource record defined in RFC 2782 # # These records identify the hostname and port that a service is # available at. class SRV < Resource TypeValue = 33 ClassValue = IN::ClassValue ClassHash[[TypeValue, ClassValue]] = self # :nodoc: # Create a SRV resource record. # # See the documentation for #priority, #weight, #port and #target # for +priority+, +weight+, +port and +target+ respectively. def initialize(priority, weight, port, target) @priority = priority.to_int @weight = weight.to_int @port = port.to_int @target = Name.create(target) end # The priority of this target host. # # A client MUST attempt to contact the target host with the # lowest-numbered priority it can reach; target hosts with the same # priority SHOULD be tried in an order defined by the weight field. # The range is 0-65535. Note that it is not widely implemented and # should be set to zero. attr_reader :priority # A server selection mechanism. # # The weight field specifies a relative weight for entries with the # same priority. Larger weights SHOULD be given a proportionately # higher probability of being selected. The range of this number is # 0-65535. Domain administrators SHOULD use Weight 0 when there # isn't any server selection to do, to make the RR easier to read # for humans (less noisy). Note that it is not widely implemented # and should be set to zero. attr_reader :weight # The port on this target host of this service. # # The range is 0-65535. attr_reader :port # The domain name of the target host. # # A target of "." means that the service is decidedly not available # at this domain. attr_reader :target def encode_rdata(msg) # :nodoc: msg.put_pack("n", @priority) msg.put_pack("n", @weight) msg.put_pack("n", @port) msg.put_name(@target) end def self.decode_rdata(msg) # :nodoc: priority, = msg.get_unpack("n") weight, = msg.get_unpack("n") port, = msg.get_unpack("n") target = msg.get_name return self.new(priority, weight, port, target) end end end end end ## # A Resolv::DNS IPv4 address. class IPv4 ## # Regular expression IPv4 addresses must match. Regex256 = /0 |1(?:[0-9][0-9]?)? |2(?:[0-4][0-9]?|5[0-5]?|[6-9])? |[3-9][0-9]?/x Regex = /\A(#{Regex256})\.(#{Regex256})\.(#{Regex256})\.(#{Regex256})\z/ def self.create(arg) case arg when IPv4 return arg when Regex if (0..255) === (a = $1.to_i) && (0..255) === (b = $2.to_i) && (0..255) === (c = $3.to_i) && (0..255) === (d = $4.to_i) return self.new([a, b, c, d].pack("CCCC")) else raise ArgumentError.new("IPv4 address with invalid value: " + arg) end else raise ArgumentError.new("cannot interpret as IPv4 address: #{arg.inspect}") end end def initialize(address) # :nodoc: unless address.kind_of?(String) raise ArgumentError, 'IPv4 address must be a string' end unless address.length == 4 raise ArgumentError, "IPv4 address expects 4 bytes but #{address.length} bytes" end @address = address end ## # A String representation of this IPv4 address. ## # The raw IPv4 address as a String. attr_reader :address def to_s # :nodoc: return sprintf("%d.%d.%d.%d", *@address.unpack("CCCC")) end def inspect # :nodoc: return "#<#{self.class} #{self.to_s}>" end ## # Turns this IPv4 address into a Resolv::DNS::Name. def to_name return DNS::Name.create( '%d.%d.%d.%d.in-addr.arpa.' % @address.unpack('CCCC').reverse) end def ==(other) # :nodoc: return @address == other.address end def eql?(other) # :nodoc: return self == other end def hash # :nodoc: return @address.hash end end ## # A Resolv::DNS IPv6 address. class IPv6 ## # IPv6 address format a:b:c:d:e:f:g:h Regex_8Hex = /\A (?:[0-9A-Fa-f]{1,4}:){7} [0-9A-Fa-f]{1,4} \z/x ## # Compressed IPv6 address format a::b Regex_CompressedHex = /\A ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) :: ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) \z/x ## # IPv4 mapped IPv6 address format a:b:c:d:e:f:w.x.y.z Regex_6Hex4Dec = /\A ((?:[0-9A-Fa-f]{1,4}:){6,6}) (\d+)\.(\d+)\.(\d+)\.(\d+) \z/x ## # Compressed IPv4 mapped IPv6 address format a::b:w.x.y.z Regex_CompressedHex4Dec = /\A ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) :: ((?:[0-9A-Fa-f]{1,4}:)*) (\d+)\.(\d+)\.(\d+)\.(\d+) \z/x ## # A composite IPv6 address Regexp. Regex = / (?:#{Regex_8Hex}) | (?:#{Regex_CompressedHex}) | (?:#{Regex_6Hex4Dec}) | (?:#{Regex_CompressedHex4Dec})/x ## # Creates a new IPv6 address from +arg+ which may be: # # IPv6:: returns +arg+. # String:: +arg+ must match one of the IPv6::Regex* constants def self.create(arg) case arg when IPv6 return arg when String address = '' if Regex_8Hex =~ arg arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')} elsif Regex_CompressedHex =~ arg prefix = $1 suffix = $2 a1 = '' a2 = '' prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')} suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')} omitlen = 16 - a1.length - a2.length address << a1 << "\0" * omitlen << a2 elsif Regex_6Hex4Dec =~ arg prefix, a, b, c, d = $1, $2.to_i, $3.to_i, $4.to_i, $5.to_i if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d prefix.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')} address << [a, b, c, d].pack('CCCC') else raise ArgumentError.new("not numeric IPv6 address: " + arg) end elsif Regex_CompressedHex4Dec =~ arg prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d a1 = '' a2 = '' prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')} suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')} omitlen = 12 - a1.length - a2.length address << a1 << "\0" * omitlen << a2 << [a, b, c, d].pack('CCCC') else raise ArgumentError.new("not numeric IPv6 address: " + arg) end else raise ArgumentError.new("not numeric IPv6 address: " + arg) end return IPv6.new(address) else raise ArgumentError.new("cannot interpret as IPv6 address: #{arg.inspect}") end end def initialize(address) # :nodoc: unless address.kind_of?(String) && address.length == 16 raise ArgumentError.new('IPv6 address must be 16 bytes') end @address = address end ## # The raw IPv6 address as a String. attr_reader :address def to_s # :nodoc: address = sprintf("%X:%X:%X:%X:%X:%X:%X:%X", *@address.unpack("nnnnnnnn")) unless address.sub!(/(^|:)0(:0)+(:|$)/, '::') address.sub!(/(^|:)0(:|$)/, '::') end return address end def inspect # :nodoc: return "#<#{self.class} #{self.to_s}>" end ## # Turns this IPv6 address into a Resolv::DNS::Name. #-- # ip6.arpa should be searched too. [RFC3152] def to_name return DNS::Name.new( @address.unpack("H32")[0].split(//).reverse + ['ip6', 'arpa']) end def ==(other) # :nodoc: return @address == other.address end def eql?(other) # :nodoc: return self == other end def hash # :nodoc: return @address.hash end end ## # Default resolver to use for Resolv class methods. DefaultResolver = self.new ## # Address Regexp to use for matching IP addresses. AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/ end 07070100184495000041ed0000000000000000000000084dc8e19e00000000000000b600010002ffffffffffffffff0000002f00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11070701001844a1000041ed0000000000000000000000034dc8e19e00000000000000b600010002ffffffffffffffff0000003300000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc070701001844a4000081ed0000000000000000000000014dc8dea10000371c000000b600010002ffffffffffffffff0000004100000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/emacs_mule.soELF4434 (k"k"l"l"""`  )6  H W Q@ k Y g X _ b g a _ kP s {  7    0 @ o   L %0" 9D\$Kbk"  l" 6 ? FR\$.ext/i386-solaris2.11/enc/emacs_mule.soemacs_mule.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_pmbc_enc_lenmbc_to_codecode_to_mbclencode_to_mbcmbc_case_foldleft_adjust_char_headis_code_ctyperb_uint2big_PROCEDURE_LINKAGE_TABLE_rb_cSymbol_DYNAMICrb_int2big_edataOnigEncAsciiCtypeTableonigenc_minimum_property_name_to_ctype_etextonigenc_not_support_get_ctype_code_rangeonigenc_ascii_apply_all_case_foldrb_cTrueClassonigenc_mbclen_approximateonigenc_is_mbc_newline_0x0a_GLOBAL_OFFSET_TABLE_Init_emacs_mulerb_num2longonigenc_always_true_is_allowed_reverse_matchonigenc_ascii_get_case_fold_codes_by_strrb_cFalseClass_endrb_cFixnumrb_cNilClassOnigEncAsciiToLowerCaseTablerb_num2llrb_enc_registerlibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib %$*"""$$,$0$4$8$H$P$"" """""($<$ @$D$L$ T$x"|"""" " hhhh8h Hh(U]EEE]ÐU]ZUڋEt EEjEP9EEEE]ÐU]ZU#ڋEtEUEjEPEUEUEUEU]ÐU]ZUڋE=@}E=|EEEjEPyEEEE]ÐU]ZUCڋE=@sEEEjEP!EEEE]ÐU]ZUڋE=@}E=|EEEjEPEEEE]ÐU]ZUsڋE=@sEEEjEPQEEEE]ÐU]ZUjEPtuhE@% uE@E E@EE|3E@% u EE E@ EE@EjEP%EEEE]ÐU ]ZUCڋEtTEt@E}Eu @EgE%u$@EJ>Eu1Eu(@E$Eu,@E E@EE]ÐU]Et\Et EEu EoE%u EVEu EC2Eu%Eu E Eu EE@EE]ÐU]Eu Eu EEE]ÐU]ZUsڋE@EE@E0UEE}&Eu EEEEOE;E uU4HHE-E0E@EE@EE}'Eu E EEEE;E uU4HEE0E@EE@EE}#Eu E EEEfE;E uU4HEFE0E@EE@EEu E EEEE]ÐU ]ZU丣ڋEU@;B u E@ EEPE PEP EEEE@EE@EEu EEVEE;E}?E;E r5E@EE@EEEEEEE@EE;E|EEE]ÐU]E=s EcEv ERE%=r E7E%=r EE%=r EEpE]ÐU]ZU3ڋE EE%tE%UBE@EE%tE%UBE@EE%tE%UBE@EE%UBE@EEU@;B u E@ EEPEPE P EE+E U;t Ep E+E EE]ÐU]ZU# ڋE @EE@=}0E@<UBE @U @BEhEPEPEP7 EEE;E}*E@UBE@EE@EE@EE;E|֋E PUE PEEE]ÐU ]E ;Ew E ENE EE@-+E;Ev#EHEE@-E;Ew݋EEE]ÐU]ZU ڋE=s)U@PM #ƒE/EPEP~ E EEEE]ÐU]ZUC ڋDDPBPU]Emacs-Mule"b r `` $  &1@KYcc|  `|``` `\o:o 0 \ oo``>l"`"0@ || \  L   ` `" l" " $\$\$^\$d)6  H W Q@ k Y g X _ b g a _ kP s {  7  ` `   0 @ o  $D*\$3$>` M\$lxL " \$k" &HVql"  ? $\$)4A^h.ext/i386-solaris2.11/enc/emacs_mule.soemacs_mule.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_pmbc_enc_lentransEncLen_EmacsMulembc_to_codecode_to_mbclencode_to_mbcmbc_case_foldleft_adjust_char_headis_code_ctypeencoding_Emacs_MuleBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_rb_uint2big_PROCEDURE_LINKAGE_TABLE_rb_cSymbol_DYNAMICrb_int2big_edataOnigEncAsciiCtypeTableonigenc_minimum_property_name_to_ctype_etextonigenc_not_support_get_ctype_code_rangeonigenc_ascii_apply_all_case_foldrb_cTrueClassonigenc_mbclen_approximateonigenc_is_mbc_newline_0x0a_GLOBAL_OFFSET_TABLE_Init_emacs_mulerb_num2longonigenc_always_true_is_allowed_reverse_matchonigenc_ascii_get_case_fold_codes_by_strrb_cFalseClass_endrb_cFixnumrb_cNilClassOnigEncAsciiToLowerCaseTablerb_num2llrb_enc_register%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/emacs_mule.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/emacs_mule.o -c ./enc/emacs_mule.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7,& ./encemacs_mule.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo||P "||%o \6 \ \ B B  0FL L pK Q`` Y`"`" bl"l"Lg""`p$$Dv\$\$\$\$\$6 \)x,0020C2 Y2070701001844af000081ed0000000000000000000000014dc8dea20000201c000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_13.soELF444 ($$`  *8  F c T K hp O 9f |$  ? 1 8Hk.ext/i386-solaris2.11/enc/iso_8859_13.soiso_8859_13.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMICInit_iso_8859_13onigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib     hh$hU]ZUڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUCڋE=s)UPM #ƒE EE]ÐU ]ZUڋEPE PEPjRjgEE]ÐU ]ZUڋEPEPE PEPjRj#EE]ÐU]ZU3ڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@44400004444444444444444444444444444440000000000000000000000000000000ISO-8859-13$   `8````$oo  oo``> p 8      $ *8  F  f c t  K  p O D   El $ " ? 3S .ext/i386-solaris2.11/enc/iso_8859_13.soiso_8859_13.cmbc_case_foldEncISO_8859_13_ToLowerCaseTableis_code_ctypeEncISO_8859_13_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_13Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMICInit_iso_8859_13onigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_13.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_13.o -c ./enc/iso_8859_13.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_13.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6   B BF@K Q Y b(g$$`pDv) $}}1D Z070701001844b9000081ed0000000000000000000000014dc8dea200001ba0000000b600010002ffffffffffffffff0000004100000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_8.soELF44 (+ + , , D D `  )6pc Dd+  kP%Aa fD  o,   -M? .ext/i386-solaris2.11/enc/iso_8859_8.soiso_8859_8.cis_code_ctypeonigenc_single_byte_mbc_to_code_etextonigenc_single_byte_left_adjust_char_headonigenc_always_true_is_allowed_reverse_match_PROCEDURE_LINKAGE_TABLE_onigenc_minimum_property_name_to_ctypeonigenc_ascii_apply_all_case_foldonigenc_is_mbc_newline_0x0aonigenc_single_byte_code_to_mbc_end_DYNAMIC_GLOBAL_OFFSET_TABLE_onigenc_ascii_mbc_case_foldonigenc_single_byte_code_to_mbclen_edataonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_rangerb_enc_registeronigenc_single_byte_mbc_enc_lenInit_iso_8859_8libruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib 8 <               @ hU ]ZUڋE=s)U PM #ƒE EE]ÐU]ZUCڋPBPI]@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@0000000000000000000000000000ISO-8859-8D  f]hx  `L````ooHoo``>,  pLHPp   ,  D     )6pc D  ] Dq z   +  1PKr D  ,  3 :c? .ext/i386-solaris2.11/enc/iso_8859_8.soiso_8859_8.cis_code_ctypeEncISO_8859_8_CtypeTableencoding_ISO_8859_8Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_single_byte_mbc_to_code_etextonigenc_single_byte_left_adjust_char_headonigenc_always_true_is_allowed_reverse_match_PROCEDURE_LINKAGE_TABLE_onigenc_minimum_property_name_to_ctypeonigenc_ascii_apply_all_case_foldonigenc_is_mbc_newline_0x0aonigenc_single_byte_code_to_mbc_end_DYNAMIC_GLOBAL_OFFSET_TABLE_onigenc_ascii_mbc_case_foldonigenc_single_byte_code_to_mbclen_edataonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_rangerb_enc_registeronigenc_single_byte_mbc_enc_lenInit_iso_8859_8%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_8.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_8.o -c ./enc/iso_8859_8.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7,& ./enciso_8859_8.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtaboLL@ P"%o6 B BHHFPP KppQ Y b, , gD D `p  Dv     $ h40 070701001844ae000081ed0000000000000000000000014dc8dea200001bb8000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_11.soELF44 (< < < < T T `  *8c Ff<  mT'GcT  l? } <   0@.ext/i386-solaris2.11/enc/iso_8859_11.soiso_8859_11.cis_code_ctypeonigenc_single_byte_mbc_to_code_etextonigenc_single_byte_left_adjust_char_headonigenc_always_true_is_allowed_reverse_match_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldonigenc_minimum_property_name_to_ctypeonigenc_single_byte_code_to_mbconigenc_is_mbc_newline_0x0a_DYNAMICInit_iso_8859_11_end_GLOBAL_OFFSET_TABLE_onigenc_single_byte_code_to_mbclenonigenc_ascii_mbc_case_fold_edataonigenc_not_support_get_ctype_code_rangeonigenc_ascii_get_case_fold_codes_by_strrb_enc_registeronigenc_single_byte_mbc_enc_lenlibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib H L               P hU ]ZUڋE=s)U PM #ƒE EE]ÐU]ZUCڋPBP=]@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ISO-8859-11T 0 j`k{  `L````o6oLoo``>< 0 LLT 0  0  <  T     *8c F0  ` Du ~ 0  <  5TOqT  ?  <  ,H Ox.ext/i386-solaris2.11/enc/iso_8859_11.soiso_8859_11.cis_code_ctypeEncISO_8859_11_CtypeTableencoding_ISO_8859_11Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_single_byte_mbc_to_code_etextonigenc_single_byte_left_adjust_char_headonigenc_always_true_is_allowed_reverse_match_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldonigenc_minimum_property_name_to_ctypeonigenc_single_byte_code_to_mbconigenc_is_mbc_newline_0x0a_DYNAMICInit_iso_8859_11_end_GLOBAL_OFFSET_TABLE_onigenc_single_byte_code_to_mbclenonigenc_ascii_mbc_case_fold_edataonigenc_not_support_get_ctype_code_rangeonigenc_ascii_get_case_fold_codes_by_strrb_enc_registeronigenc_single_byte_mbc_enc_len%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_11.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_11.o -c ./enc/iso_8859_11.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_11.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtaboLL@ P"%o6 B BLLFTT KQ0 0 Y0 0 b< < gT T `p  Dv     $ xI1 070701001844aa000081ed0000000000000000000000014dc8dea100001fac000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/gb2312.soELF44 (//00pp`  %.p @W Ik Q` g P _ Z0 g Y _ c  k  s  ` 7 ( 0  p   M ,8DI/ P`kv.ext/i386-solaris2.11/enc/gb2312.sogb2312.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_prb_enc_dummy_prb_num2llrb_int2big_PROCEDURE_LINKAGE_TABLE_rb_cFalseClass_edata_GLOBAL_OFFSET_TABLE_rb_cTrueClass_DYNAMICrb_cNilClassInit_gb2312rb_num2longrb_enc_find_end_etextrb_enc_registerrb_cFixnumrb_cSymbolrb_uint2biglibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib `dLPTX \< @DHh l hhhh8h <h(U]EEE]ÐU]ZUڋEt EEjEP5EEEE]ÐU]ZU7ڋEtEUEjEPEUEUEUEU]ÐU]ZUڋE=@}E=|EEEjEPuEEEE]ÐU]ZUWڋE=@sEEEjEPEEEE]ÐU]ZUڋE=@}E=|EEEjEPEEEE]ÐU]ZUڋE=@sEEEjEPMEEEE]ÐU]ZU'jEPtuhE@% uE@E E@EE|3E@% u EE E@ EE@EjEP%EEEE]ÐU ]ZUWڋEtTEt@E}Eu @EgE%u$@EJ>Eu1Eu(@E$Eu,@E E@EE]ÐU]Et\Et EEu EoE%u EVEu EC2Eu%Eu E Eu EE@EE]ÐU]Eu Eu EEE]ÐU]E@@%EE]ÐU ]uZUTڋ04jP@PVF]uGB2312EUC-KRp.> (N^T $ `4` ``L`Do:o0hoo``>04$TLp   0 p %.p @W Ik Q` g P _ Z0 g Y _ c  k  s  ` 7 (  (  -40 JXp an M z/ .ext/i386-solaris2.11/enc/gb2312.sogb2312.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_prb_enc_dummy_p.L155.L156Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_rb_num2llrb_int2big_PROCEDURE_LINKAGE_TABLE_rb_cFalseClass_edata_GLOBAL_OFFSET_TABLE_rb_cTrueClass_DYNAMICrb_cNilClassInit_gb2312rb_num2longrb_enc_find_end_etextrb_enc_registerrb_cFixnumrb_cSymbolrb_uint2big%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/gb2312.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/gb2312.o -c ./enc/gb2312.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7(" ./encgb2312.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo44 $$0"TT%oLLD6 8B B0FpKppQY  b00@gpp`pv/ s##, 070701001844bc000081ed0000000000000000000000014dc8dea200001fe8000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_u.soELF44 (`  %. ] C` c X K s O "Kx  2 9Ip ? Ux.ext/i386-solaris2.11/enc/koi8_u.sokoi8_u.ckoi8_u_mbc_case_foldkoi8_u_is_code_ctypekoi8_u_apply_all_case_foldkoi8_u_get_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE_onigenc_single_byte_mbc_enc_len_edataonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registerInit_koi8_uonigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib lhx|   hh$hU]ZUڋE @EE@ UBE @U @BEE]ÐU ]ZUwڋE=s)UPM #ƒE EE]ÐU ]ZUڋEPE PEPjRj%EE]ÐU ]ZUڋEPEPE PEPjRj%EE]ÐU]ZUgڋ PBPI]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@00000444440000000000000000000000000000000044444444444444444444444444444444KOI8-U h  `8````$oo oo``> ` 8      h%. ] C  ^` c s  K ( O hDh  #Ho  %Eq p ? .ext/i386-solaris2.11/enc/koi8_u.sokoi8_u.ckoi8_u_mbc_case_foldEncKOI8_U_ToLowerCaseTablekoi8_u_is_code_ctypeEncKOI8_U_CtypeTablekoi8_u_apply_all_case_foldCaseFoldMapkoi8_u_get_case_fold_codes_by_strencoding_KOI8_UBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE_onigenc_single_byte_mbc_enc_len_edataonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registerInit_koi8_uonigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/koi8_u.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/koi8_u.o -c ./enc/koi8_u.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7(" ./enckoi8_u.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @" %o$6 B BF@K Q (Yb(g`phhDv) l"__, (070701001844a7000081ed0000000000000000000000014dc8dea1000023dc000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_kr.soELF44 (`  %.p  @P @ R @ d J x @ `  ` 7  8Rt  ?  - 49Id.ext/i386-solaris2.11/enc/euc_kr.soeuc_kr.ceuckr_mbc_enc_leneuckr_mbc_to_codeeuckr_code_to_mbceuckr_mbc_case_foldeuckr_is_code_ctypeeuckr_left_adjust_char_headeuckr_is_allowed_reverse_matchonigenc_mb2_code_to_mbconigenc_mbn_mbc_case_foldonigenc_minimum_property_name_to_ctypeonigenc_mbn_mbc_to_code_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldonigenc_mbclen_approximate_edataonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_range_GLOBAL_OFFSET_TABLE_Init_euc_kr_DYNAMIConigenc_mb2_is_code_ctype_etext_endrb_enc_registeronigenc_mb2_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib x|   hhh h$h ,h(U]ZUo ڋE@EE@E UEE}"Eu EEEEfE;E uUHHEHE E@EE@EEu E EEEE]ÐU ]ZUڋE PEPEP EE]U ]ZUOڋE PEPEPV EE]U ]ZUjEPEPE PEPEPEE]ÐU ]ZUڋE PEPEP EE]U]ZUڋE ;Ew E EE EE@=|AE@=t3E;Ev+EHEE@=|E@=tE;EwՋEU@;B u E@ EEPEPEP3 EEEEE;E vEEEEEE +EU‰EE]ÐU ]E@EE~ E EE]ÐU]ZU?ڋ((PBP]EUC-KR   . > N x^   `8````0oo 0@oo``>p P ` ` 8@p      x$%.p  @  F SP @ e @ w J @ `  ` 7 xDx  ,D^$M c ? o x .ext/i386-solaris2.11/enc/euc_kr.soeuc_kr.ceuckr_mbc_enc_lentransEncLen_EUCKReuckr_mbc_to_codeeuckr_code_to_mbceuckr_mbc_case_foldeuckr_is_code_ctypeeuckr_left_adjust_char_headeuckr_is_allowed_reverse_matchencoding_EUC_KRBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_mb2_code_to_mbconigenc_mbn_mbc_case_foldonigenc_minimum_property_name_to_ctypeonigenc_mbn_mbc_to_code_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldonigenc_mbclen_approximate_edataonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_range_GLOBAL_OFFSET_TABLE_Init_euc_kr_DYNAMIConigenc_mb2_is_code_ctype_etext_endrb_enc_registeronigenc_mb2_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/euc_kr.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/euc_kr.o -c ./enc/euc_kr.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7(" ./enceuc_kr.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88  @"%o06 @@B B0FpKp p oQ Yb0g`pxxDv+ RR, 070701001844ad000081ed0000000000000000000000014dc8dea20000208c000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_10.soELF44 (llll`  *8  F c T K hp O 89fl | ?  81l 8Hk.ext/i386-solaris2.11/enc/iso_8859_10.soiso_8859_10.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE_Init_iso_8859_10_DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib x|$  (,0 hh$hU]ZUcڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUڋE=s)UPM #ƒE EE]ÐU ]ZUCڋEPE PEPjRj,gEE]ÐU ]ZUڋEPEPE PEPjRj,#EE]ÐU]ZUڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@444444444444400000000000004444444444444444444444444444444000000000000000000000000000000000ISO-8859-10   `8````$oo  oo``>l` p 8    ` l  888*8  F  f c t  K ` p O D8  8 El8l  ? * 3S8l .ext/i386-solaris2.11/enc/iso_8859_10.soiso_8859_10.cmbc_case_foldEncISO_8859_10_ToLowerCaseTableis_code_ctypeEncISO_8859_10_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_10Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE_Init_iso_8859_10_DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_10.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_10.o -c ./enc/iso_8859_10.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_10.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6   B BF@K Q `Y`` bll(g`pDv88888) $1 070701001844ba000081ed0000000000000000000000014dc8dea200002000000000b600010002ffffffffffffffff0000004100000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_9.soELF44 (`  )6 D c R K f` O 7d z  ? . 5Eh.ext/i386-solaris2.11/enc/iso_8859_9.soiso_8859_9.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_headInit_iso_8859_9_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib  xt   hh$hU]ZUڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUCڋE=s)UPM #ƒE EE]ÐU ]ZUڋEPE PEPjRjsEE]ÐU ]ZUڋEPEPE PEPjRj/EE]ÐU]ZU3ڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@00044444444444444444444444444444400000000000000000000000000000000ISO-8859-9 t  `8````$oo oo``> ` 8     t )6 D  c c q   K  ` O tDt  @g  =i ?  .ext/i386-solaris2.11/enc/iso_8859_9.soiso_8859_9.cmbc_case_foldEncISO_8859_9_ToLowerCaseTableis_code_ctypeEncISO_8859_9_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_9Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_headInit_iso_8859_9_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_9.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_9.o -c ./enc/iso_8859_9.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7,& ./enciso_8859_9.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6 B BF@KQ Y b(g`pttDv) xgg0* @070701001844b0000081ed0000000000000000000000014dc8dea20000208c000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_14.soELF44 (llll`  *8  F c T K hp O 89fl |  ? 81l 8Hk.ext/i386-solaris2.11/enc/iso_8859_14.soiso_8859_14.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_mapInit_iso_8859_14onigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib x|$  (,0 hh$hU]ZUcڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUڋE=s)UPM #ƒE EE]ÐU ]ZUCڋEPE PEPjRj,gEE]ÐU ]ZUڋEPEPE PEPjRj,#EE]ÐU]ZUڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@40404440444040404000404004444444444444444444444444444444000000000000000000000000000000000ISO-8859-14   `8````$oo  oo``>l` p 8    ` l  888*8  F  f c t  K ` p O D8  8 El8l  "Bn ? 8l .ext/i386-solaris2.11/enc/iso_8859_14.soiso_8859_14.cmbc_case_foldEncISO_8859_14_ToLowerCaseTableis_code_ctypeEncISO_8859_14_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_14Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_mapInit_iso_8859_14onigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_14.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_14.o -c ./enc/iso_8859_14.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_14.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6   B BF@K Q `Y`` bll(g`pDv88888) $1 070701001844a6000081ed0000000000000000000000014dc8dea1000039ec000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/euc_jp.soELF464 (g#g#h#h#0@##`  %.P  @p W I k Q@g P_ Zg Y_ c k s @7 M  o    K P %0 <; J  _k # %g# &Hch# ? %'D.ext/i386-solaris2.11/enc/euc_jp.soeuc_jp.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_pmbc_enc_lenmbc_to_codecode_to_mbclencode_to_mbcmbc_case_foldleft_adjust_char_headis_allowed_reverse_matchinit_property_listonigenc_minimum_property_name_to_ctypeis_code_ctypeget_ctype_code_rangerb_uint2big_PROCEDURE_LINKAGE_TABLE__DYNAMICrb_cSymbolonig_is_in_code_rangeOnigEncAsciiCtypeTableonig_st_lookup_strendrb_int2big_edata_etextonigenc_property_list_add_propertyrb_cTrueClassonigenc_ascii_apply_all_case_foldonigenc_mbclen_approximateonigenc_is_mbc_newline_0x0a_GLOBAL_OFFSET_TABLE_rb_num2longInit_euc_jponigenc_ascii_get_case_fold_codes_by_strrb_cFalseClass_endonigenc_property_list_initrb_cFixnumrb_cNilClassrb_num2llOnigEncAsciiToLowerCaseTablerb_enc_registerlibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib ,*/#############T%X%h%l%p%t%%%%%%## #####d%x%|%t#x#|#### ### ## hhhh8h Xh(lh0ph8pth@`|hHPhP@U]EEE]ÐU]ZUڋEt EEjEPEEEE]ÐU]ZU츏ڋEtEUEjEPEUEUEUEU]ÐU]ZUڋE=@}E=|EEEjEP!EEEE]ÐU]ZUڋE=@sEEEjEPEEEE]ÐU]ZUOڋE=@}E=|EEEjEPQEEEE]ÐU]ZUڋE=@sEEEjEPEEEE]ÐU]ZUjEPtuhE@% uE@E E@EE|3E@% u EE E@ EE@EjEP%EEEE]ÐU ]ZUڋEtTEt@E}Eu @EgE%u$@EJ>Eu1Eu(@E$Eu,@E E@EE]ÐU]Et\Et EEu EoE%u EVEu EC2Eu%Eu E Eu EE@EE]ÐU]Eu Eu EEE]ÐU]ZUڋE@EE@E0UEE}&Eu EEEEE;E uU4HHEE0E@EE@EE}#Eu E EEEfE;E uU4HEFE0E@EE@EEu E EEEE]ÐU ]ZU丏ڋEU@;B u E@ EEPE PEP EEEE@EE@EEu EEVEE;E}?E;E r5E@EE@EEEEEEE@EE;E|EEE]ÐU]E=s EKE=v E8E%=r EE%=r EEpE]ÐU]ZU?ڋE EE%tE%UBE@EE%tE%UBE@EE%UBE@EEU@;B u E@ EEPEPE P EE+E U;t Ep E+E EE]ÐU]ZUO ڋE @EE@=}0E@<UBE @U @BEEU@;B uE@ EEPEPEP/ EEEEE;E}*E@UBE@EE@EE@EE;E|֋E PUE PEEE]ÐU]ZUO ڋE ;Ew E EE EE@-]+E;Ev#EHEE@-]E;Ew݋EU@;B u E@ EEPEPEP EEEEE;E vEEEEEE +EU‰EE]ÐU ]E@EE~~E=t E=u EEE]ÐU$]u}ZU ڋ@E苻DHLPTPRQVWEP8EEtU\E苻`HLPTPRQVWEPEEtd@EEE]u}ÐU]ZU/ ڋd@u%hjPEEt EEGHjjEPEPE PBPauEPE PEPX EEEE]ÐU]ZU ڋE E=s-UxPM #ƒEE tE tE u4EPEPG~ E EEEzd@u&hjPDEEt EEME E PU ;Pr E+LM PEPP#E EE]ÐU]ZU?ڋEw EzE @d@u$hjPzEEtEEh#`# 0   ,  P   H# h# # P%%%)%/%.P  @p W I k Q@g P_ Zg Y_ c k s @7 M    o    K P (H#  . #  :%L%Y%i%zT#  ,# P%0 ;   T%D%P%   %7C ]# fq%g#  ;Wh# my? %.ext/i386-solaris2.11/enc/euc_jp.soeuc_jp.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_pmbc_enc_lentransEncLen_EUCJPmbc_to_codecode_to_mbclencode_to_mbcmbc_case_foldleft_adjust_char_headis_allowed_reverse_matchinit_property_list.L267CR_HiraganaPropertyNameTablePropertyListPropertyListNumPropertyListSize.L271CR_KatakanaPropertyInitedonigenc_minimum_property_name_to_ctypeis_code_ctypeget_ctype_code_rangeencoding_EUC_JPBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_rb_uint2big_PROCEDURE_LINKAGE_TABLE__DYNAMICrb_cSymbolonig_is_in_code_rangeOnigEncAsciiCtypeTableonig_st_lookup_strendrb_int2big_edata_etextonigenc_property_list_add_propertyrb_cTrueClassonigenc_ascii_apply_all_case_foldonigenc_mbclen_approximateonigenc_is_mbc_newline_0x0a_GLOBAL_OFFSET_TABLE_rb_num2longInit_euc_jponigenc_ascii_get_case_fold_codes_by_strrb_cFalseClass_endonigenc_property_list_initrb_cFixnumrb_cNilClassrb_num2llOnigEncAsciiToLowerCaseTablerb_enc_register%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/euc_jp.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/euc_jp.o -c ./enc/euc_jp.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7(" ./enceuc_jp.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo "%o l6   B B, , XF KP P Q  (YH#H#bh#h#g##`pP%P%Hv%%%%%C +,/`3`34,5 )5070701001844b1000081ed0000000000000000000000014dc8dea20000203c000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_15.soELF4T4 (DD`  *8  F c T K hp O 9f |D   ? 1 8Hk.ext/i386-solaris2.11/enc/iso_8859_15.soiso_8859_15.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_headInit_iso_8859_15_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib (,0<  48 @hh$hU]ZUڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUcڋE=s)UPM #ƒE EE]ÐU ]ZUڋEPE PEPjRj"gEE]ÐU ]ZUڋEPEPE PEPjRj"#EE]ÐU]ZUSڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@400400040444444444444444444444444444444400000000000000000000000000000000ISO-8859-15D   `8````$oƲo  oo``> p 8      D *8  F  f c t  K  p O D   El D "Bn ?  .ext/i386-solaris2.11/enc/iso_8859_15.soiso_8859_15.cmbc_case_foldEncISO_8859_15_ToLowerCaseTableis_code_ctypeEncISO_8859_15_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_15Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_headInit_iso_8859_15_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_15.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_15.o -c ./enc/iso_8859_15.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_15.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6   B BF@K Q Y b(gDD`pDv) $31d z070701001844bb000081ed0000000000000000000000014dc8dea200001fc8000000b600010002ffffffffffffffff0000003d00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/koi8_r.soELF44 (`  %. ] C` c X K s O "Kx  p ? > EUx.ext/i386-solaris2.11/enc/koi8_r.sokoi8_r.ckoi8_r_mbc_case_foldkoi8_r_is_code_ctypekoi8_r_apply_all_case_foldkoi8_r_get_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE_onigenc_single_byte_mbc_enc_len_edataonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMICInit_koi8_ronigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_mbc_to_codeonigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib LhlpxHX\ `d t| hh$hU]ZUڋE @EE@ UBE @U @BEE]ÐU ]ZUWڋE=s)UPM #ƒE EE]ÐU ]ZUڋEPE PEPjRj!EE]ÐU ]ZUڋEPEPE PEPjRj!EE]ÐU]ZUGڋ PBPI]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@040000000000000000000000000000000044444444444444444444444444444444KOI8-R H  `8````$oo oo``> ` 8      H%. ] C  ^` c s  K  O HDH  #Ho  %p ? 1]} .ext/i386-solaris2.11/enc/koi8_r.sokoi8_r.ckoi8_r_mbc_case_foldEncKOI8_R_ToLowerCaseTablekoi8_r_is_code_ctypeEncKOI8_R_CtypeTablekoi8_r_apply_all_case_foldCaseFoldMapkoi8_r_get_case_fold_codes_by_strencoding_KOI8_RBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE_onigenc_single_byte_mbc_enc_len_edataonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMICInit_koi8_ronigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_mbc_to_codeonigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registeronigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/koi8_r.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/koi8_r.o -c ./enc/koi8_r.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7(" ./enckoi8_r.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @" %o$6 B BF@K Q Yb(g`pHHDv) L"n??, 070701001844b2000081ed0000000000000000000000014dc8dea200002074000000b600010002ffffffffffffffff0000004200000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/iso_8859_16.soELF44 (TTTT||`  *8  F c T K hp O  9fT ||   T '7 ? Hk.ext/i386-solaris2.11/enc/iso_8859_16.soiso_8859_16.cmbc_case_foldis_code_ctypeapply_all_case_foldget_case_fold_codes_by_stronigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registerInit_iso_8859_16onigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0alibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib `dht   lp xhh$hU]ZUKڋE @EE@=u@E%@t3sUBE@EsUBE @U @BE+E@ UBE @U @BEE]ÐU ]ZUڋE=s)UPM #ƒE EE]ÐU ]ZU+ڋEPE PEPjRj)gEE]ÐU ]ZUڋEPEPE PEPjRj)#EE]ÐU]ZUڋ PBP]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@ B BBBB@@@@@@@@@@@@@@@@@@BAAAAAAAAAAAAAAAxxxxxxxxxxAAAAAAA||||||ttttttttttttttttttttAAAAQAxxxxxxppppppppppppppppppppAAAA@40440440440400040404444444444444444444444444444444000000000000000000000000000000000ISO-8859-16|   `8````$oo  oo``>TH p 8    H T |    *8  F  f c t  K H p O D     El T | "Bn T  ? .ext/i386-solaris2.11/enc/iso_8859_16.soiso_8859_16.cmbc_case_foldEncISO_8859_16_ToLowerCaseTableis_code_ctypeEncISO_8859_16_CtypeTableapply_all_case_foldCaseFoldMapget_case_fold_codes_by_strencoding_ISO_8859_16Bbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START_onigenc_apply_all_case_fold_with_maponigenc_minimum_property_name_to_ctype_PROCEDURE_LINKAGE_TABLE__edataonigenc_single_byte_mbc_enc_lenonigenc_not_support_get_ctype_code_rangeonigenc_always_true_is_allowed_reverse_match_GLOBAL_OFFSET_TABLE__DYNAMIConigenc_single_byte_mbc_to_codeonigenc_get_case_fold_codes_by_str_with_maponigenc_single_byte_code_to_mbc_endonigenc_single_byte_left_adjust_char_head_etextrb_enc_registerInit_iso_8859_16onigenc_single_byte_code_to_mbclenonigenc_is_mbc_newline_0x0a%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/iso_8859_16.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/iso_8859_16.o -c ./enc/iso_8859_16.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7-' ./enciso_8859_16.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo88p @"%o$6   B BF@K Q HYHH bTT(g||`pDv     ) $k1 070701001844a2000081ed0000000000000000000000014dc8dea100003388000000b600010002ffffffffffffffff0000003b00000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/big5.soELF4/4 (  tt `  #*P  <@ I M I d I y0 @ p @ J @ @& p]   =? Mt$#?   P?   $# 8a.ext/i386-solaris2.11/enc/big5.sobig5.cbig5_mbc_enc_len0big5_mbc_enc_lenbig5_hkscs_mbc_enc_lenbig5_uao_mbc_enc_lenbig5_mbc_to_codebig5_code_to_mbcbig5_mbc_case_foldbig5_is_code_ctypebig5_left_adjust_char_headbig5_is_allowed_reverse_match_etext_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldInit_big5_hkscsonigenc_minimum_property_name_to_ctypeonigenc_is_mbc_newline_0x0a_endInit_big5_DYNAMICInit_big5_uaoonigenc_mbn_mbc_case_foldonigenc_mb2_code_to_mbc_GLOBAL_OFFSET_TABLE_onigenc_mb2_code_to_mbclen_edataonigenc_mbn_mbc_to_codeonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_rangeonigenc_mbclen_approximaterb_enc_registeronigenc_mb2_is_code_ctypelibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib          X"\"l"t"x""""""""""""""""####h"""p"""|""#""#"" #""#      h h$h(h4h <h(U]ZUWڋE@EE@EE MAEE}$Eu E EEEbE;E uUEHHEGE E@EE@EEu E EEEE]ÐU ]ZUgڋjjPjE PEPEE]ÐU ]ZUڋjjPjE PEPEE]ÐU ]ZUڋjjPjE PEP5EE]ÐU ]ZUwڋE PEPEP EE]U ]ZU7ڋE PEPEPR EE]U ]ZUjEPEPE PEPEPEE]ÐU ]ZUڋE PEPEP EE]U]ZUgڋE ;Ew E EE EE@,thE;Ev`E0@;u EHEEP,EHEEP E@E E;EwEU@;B uE@ EEPEPEP EEEEE;E vEEEEEE +EU‰EE]ÐU]ZU7ڋE@EE,t EEEEE]ÐU]ZUڋ88PBP-]ÐU]ZUڋ@@PBP]ÐU]ZUWڋDDPBP]Big5Big5-HKSCSBig5-UAO    * X": ""'' E  `P`0```Do>fo!0  oo``> @ 0 p @p 0 p @p 0 p @pP    P      X"$#$#$##*P  < B@ I S _ I v I  0 @ p @ J @ @&  (p] FX"DT"Dh"Dz$#X" $#   ? 6R$#W? a  jP? x  $##Lgw.ext/i386-solaris2.11/enc/big5.sobig5.cbig5_mbc_enc_len0transbig5_mbc_enc_lenEncLen_BIG5big5_hkscs_mbc_enc_lenEncLen_BIG5_HKSCSbig5_uao_mbc_enc_lenEncLen_BIG5_UAObig5_mbc_to_codebig5_code_to_mbcbig5_mbc_case_foldbig5_is_code_ctypebig5_left_adjust_char_headBIG5_CAN_BE_TRAIL_TABLEbig5_is_allowed_reverse_matchencoding_BIG5encoding_BIG5_HKSCSencoding_BIG5_UAOBbss.bssDdata.dataDrodata.rodataDpicdata.picdata_END__START__etext_PROCEDURE_LINKAGE_TABLE_onigenc_ascii_apply_all_case_foldInit_big5_hkscsonigenc_minimum_property_name_to_ctypeonigenc_is_mbc_newline_0x0a_endInit_big5_DYNAMICInit_big5_uaoonigenc_mbn_mbc_case_foldonigenc_mb2_code_to_mbc_GLOBAL_OFFSET_TABLE_onigenc_mb2_code_to_mbclen_edataonigenc_mbn_mbc_to_codeonigenc_ascii_get_case_fold_codes_by_stronigenc_not_support_get_ctype_code_rangeonigenc_mbclen_approximaterb_enc_registeronigenc_mb2_is_code_ctype%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21}./enc/big5.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/big5.o -c ./enc/big5.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7&  ./encbig5.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtaboPP    `"E%oD6  B B 0F pKP P ?QY b  Hg  `pX"X"v$#$#$#$#$#3 '5+--.*. .070701001844be000041ed0000000000000000000000024dc8e19e00000000000000b600010002ffffffffffffffff0000003900000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans070701001844c8000081ed0000000000000000000000014dc8deaa00030304000000b600010002ffffffffffffffff0000004000000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gbk.soELF44 (TT`  (.P @pW Ik Q@ g P _ Z g Y _ c  k  s  @ 7   H   #-8CHT.ext/i386-solaris2.11/enc/trans/gbk.sogbk.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_p_edata_PROCEDURE_LINKAGE_TABLE_rb_cFalseClass_GLOBAL_OFFSET_TABLE_rb_cNilClass_etextInit_gbk_DYNAMICrb_num2longrb_cFixnumrb_cTrueClassrb_num2llrb_cSymbolrb_int2big_endrb_uint2bigrb_register_transcoderlibruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib PT\d      hhhh4h U]EEE]ÐU]ZU;ڋEt EEjEPIEEEE]ÐU]ZUڋEtEUEjEPEUEUEUEU]ÐU]ZUkڋE=@}E=|EEEjEPEEEE]ÐU]ZUڋE=@sEEEjEP1EEEE]ÐU]ZUڋE=@}E=|EEEjEPEEEE]ÐU]ZU+ڋE=@sEEEjEPaEEEE]ÐU]ZUjEPtuhE@% uE@E E@EE|3E@% u EE E@ EE@EjEP%EEEE]ÐU ]ZUڋEtTEt@E}Eu @EgE%u$@EJ>Eu1Eu(@E$Eu,@E E@EE]ÐU]Et\Et EEu EoE%u EVEu EC2Eu%Eu E Eu EE@EE]ÐU]Eu Eu EEE]ÐU]ZU+ڋ0jP8jP|]@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW@  !"#$%&'()*+,-./0123456789:;<=>?@ABCD@  !"#$%&'()*+,-./0123456789:;<=>?@ABC@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVVVVVVVVVVWXYZ[\]^_`abcdefghijklmnopqVrsVtVVVVuvwxyz{|}~VVVVVVVVVVVVVVVVVVVVV@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'(   !"#$%&'()*+,-./012                 !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./01        !"#  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234567888889:;8  !"#$%&      !"#$%&''''''''''''''''''''''''''      !"#$%&      丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎 匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡 咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻 夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠$婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇(孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨,!岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠0$嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅4'廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇8*怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆<-慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊@0扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀D3揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據H6擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫L9旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會P<朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛T?桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟XB楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚\E橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮`H欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘dK汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊hN淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯lQ滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥pT濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚tW烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓xZ燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛|]  、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓` ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫb !"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄`c ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんCd ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶDf ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴g АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяhˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞 āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩGi〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦ ℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋Pl狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱 n獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷 0p珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺 q瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲 Ps瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇 t疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄 pv癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥x盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳{睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖~矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚 碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹 笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈$篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖(籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕,粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件0紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸4継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻8緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀<繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐@罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿D翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫H聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸L腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁P臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗T艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐X茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠\菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁`葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳d蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱h薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔l藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃p虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威t蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺x螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓|蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座 谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺 釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹 锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋#闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰&隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻)霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐,鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨/頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪2顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔5餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙8馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃;駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒>驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋A鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤E魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜H鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋K鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄 N鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂 Q鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢 R鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂 0T鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪 U麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱 PW鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣 X兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩 KpZ    $!($,'0*4-80<3@6D9H<L?PBTEXH\K`NdQhTlWpZt]x`bXcdADGKNQR(TUHWXhZZ Z  \ O \  <]  \]  |] W ]  ] @AB ]  ] _ ^  ^  _]% ` ` \CDEFG ` GHY h`  ` IJKL ` MNOO$a PQRa Sa a Wa dbb TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwc xyz{|}~_d 0e de %e``]``aaaaa\bbcd(e\exeege e@ABCDEFGHe f abfgg `cd-xh opi Zj IPj JKLMNO5dj PQRSTwjxfgphhi j]Hj\jjjjһ@ABCآDؤEרاFҵ˿ةGHIJKɥحLѾMNOPQؼRΪSدjTUVWXرôY֮էZƹ[\]^ؿҲϰ_`abcdefghijklmnopqrstuǬvkwxyz{|}~ءبЩؽĶͤlʲǪnɡΰα٣٤oλס٢١Ӷ٦٥٬ٮ٫ʹ p٩ֶ٨٪٧ٰ@٭AٯBCDEFGHIJKLMNOP,qQRSٴTUVWXYZٸ[\]^_`ٵaٷٹbcٶdeٱfٲٳghijٽklmnٺopqrs8r]kln op$q0r>ҫSTUVWˣXYZ[\]^_`abcdefghijkҮlmno?pqrstuvְwxyz{|}~Ƹ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ @@ABCDEFGHIJKLMФNOP֫QRSTUVWXYZ[\Aвθ]^_`ab̥cdefghijʤklmnطopqrstuvBwx֬yz{|}~ÀŧÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßƢàC@ABCDEFGҸHIJKǻLMNOPQRSTUVWXYZ[\]^_`abcDdefghijklmnopqrstuvwĤϥxyz{|}~ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēEӷĔĕĖėĘęĚěĜĝĞğĠ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aFҨbcdefghijklmnopq˴rstuvwxyz{|}~GŀŁłŃńŅͧņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠ@ABCDɫEFGHܳIJܴܵIKLMܹNOPQܷRܺܶSܻâTUVWܼܽXY֥Z[\]«^ܸܾо_`aܿbcdѿeJfghijέklԷ̦mnopqrstuɻvwxyӢz{|}~ƻƀƁƂƃƄKƅïéƆƇƈƉƊƋƌƍƎݢƏƐƑƒƓƔƕƖƗƘƙƚãƛƜƝƞƟƠ@A(LBCDEFGHIJKLMNOPQRSӫݡݣݥݤݦݧҩTUVWXYZݩ[\ݶݱݴ]^4M_`abcݰdefghiɯjklݮmnopݷqrݯsݸtݬuvwxyz{ݹݳݭĪ|}~ǀݨݪݫǁݲݵӨݺǂݻçǃDŽ@NݼDždžLJLjljNJNjnjǍǎǏǐǑǒǓݿǔǕǖǗǘǙǚݾǛǜǝǞǟǠ@ABCDEFGHIJKLOLݽMNOPQRƼήSTUVWXYZ[\]^_`abөӪcdefghijklmnopqrstuXPvwxyz{|}~ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠ@ABdQCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopRpqrstuvwxyz{|}~ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛޤɜɝޣ|Sɞɟɠ@ABCDEFGHIJKLMNOPQRεSTUVWXYZ[\]^_`abcdefghijǾޢklTmnoެpqrsަtuvwxyz{|}~ޡʀʁޥʂʃʄʅީʆʇʈʉʊިʋʌʍާʎʏʐʑʒʓʔʕʖޭʗʘʙʚʛ޳ުޮʜʝʞUʟʠ@A޶BޱCDEFGHI޲JKLMNOPQRSTѦ޵UVWXYZ[ޯ\]^ް_н`ab޴޹cdefgh޸i޷jklmnoVp޻qrstuvwxyz{|}~޺ˀźˁ˂˃˄˅ˆ޼ˇˈˉˊˋˌˍˎˏːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ˠ@ABCD޽WEFGHI޿JKLMNOPQRSTĢUVWXYZ[\]^_`abcdefgh޾ijklmnopqrstuvwպxyz{|}X~̀́̂̃̄̅̆̇̈̉̊̋²Ư̖̗̘̙̜̝̞̟̠̋̌̍̎̏̐̑̒̓̔̕̚@ABʭCDEFGHIϺYʴJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopZqrstuvwxyz{|}~͇͈͉͍͎̀́͂̓̈́͆͊͋͌ͅ͏Ӽ͓͔͐͑͒[͕͖͙͚͗͛֩͘͜͟͝͞͠@ABCDEFGHIJKLMNOPQRSTUVW\XYZ[\]^Ӭ_`aЫbcdefghijklmnopqrstuvwxyz{|}~΀΁΂΃΄]΅Ά·ΈΉΊ΋Ό΍ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠ@ABCDEFGHIJKLMNOPQ_RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~зπρςστ `υφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠ@ABCDEFGHIJKLMNOPQRSTUVWXaѪYZ[\]^_`abcdefghijklmnopqrstuv˥wxyz{|}~ЀЁ$bЂԬЃЄЅІЇЈЉЊЋЌ̻ЍЎЏАБВГДЕЖЗИЙКЛМНОПР@ϮABCDEFGHIJKLMNO0cPQRװSTUVWXYZ[\ԣ]^ȹ_`abcdefghijklmnopqrstuv\ p8&h p8&(( LP     PP(.P @pW Ik Q@ g P _ Z g Y _ c  k  s  @ 7 P\\P  P p 8&p )8 N[ b H k t.ext/i386-solaris2.11/enc/trans/gbk.sogbk.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_prb_from_GBKrb_to_GBKBbss.bssDdata.dataDrodata.rodataDpicdata.picdatagbk_byte_arraygbk_word_array_END__START__edata_PROCEDURE_LINKAGE_TABLE_rb_cFalseClass_GLOBAL_OFFSET_TABLE_rb_cNilClass_etextInit_gbk_DYNAMICrb_num2longrb_cFixnumrb_cTrueClassrb_num2llrb_cSymbolrb_int2big_endrb_uint2bigrb_register_transcoder%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21./enc/trans/gbk.c /var/tmp/ruby-1.9.2-p180 /opt/sunstudio12.1/prod/bin/cc -I. -I.ext/include/i386-solaris2.11 -I./include -I. -D_FILE_OFFSET_BITS='64' -DONIG_ENC_REGISTER='rb_enc_register' -KPIC -I/usr/local/include -L/usr/local/lib -DHAVE_UCRED_H -KPIC -o enc/trans/gbk.o -c ./enc/trans/gbk.cXa;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;backend;raw;cd;DBG_GEN 5.2.7+% ./enc/transgbk.c DD%.hash.SUNW_ldynsym.dynsym.dynstr.SUNW_dynsymsort.SUNW_reloc.rel.plt.text.rodata.rodata1.got.dynamic.data.picdata.bss.symtab.strtab.comment.debug_loc.debug_info.debug_line.debug_abbrev.shstrtabo((  "((%o  @6 LLxB B(F`KPPxQ Y b<g`pPPvPP0 sll/+ A070701001844c7000081ed0000000000000000000000014dc8dea90002c4c8000000b600010002ffffffffffffffff0000004400000000root/usr/local/lib/ruby/1.9.1/i386-solaris2.11/enc/trans/gb18030.soELF44 (TT`  ,6  H@ W Q k Y g X _ b g aP _ k  sP  {  7 P ` @ I  .; D KWbpzpH .ext/i386-solaris2.11/enc/trans/gb18030.sogb18030.crb_gc_guarded_ptrNUM2LONGNUM2LLUINT2NUMULONG2NUMNUM2CHRrb_typerb_class_ofrb_special_const_pfun_so_from_gb18030fun_so_to_gb18030fun_sio_from_gb18030fun_sio_to_gb18030_edatarb_cFalseClass_PROCEDURE_LINKAGE_TABLE__GLOBAL_OFFSET_TABLE_rb_cNilClass_DYNAMIC_etextrb_num2longrb_cFixnumrb_cTrueClassrb_num2llrb_cSymbolrb_int2big_endrb_uint2bigrb_register_transcoderInit_gb18030libruby.solibpthread.so.1librt.so.1libsocket.so.1libdl.so.1libcrypt.so.1libm.so.2/usr/local/lib:/usr/local/lib # \`hpij̳ܱ   ̱б Ա ر hhhh4h U]EEE]ÐU]ZUwڋEt EEjEPAEEEE]ÐU]ZUڋEtEUEjEPEUEUEUEU]ÐU]ZUڋE=@}E=|EEEjEPEEEE]ÐU]ZU7ڋE=@sEEEjEP)EEEE]ÐU]ZUצڋE=@}E=|EEEjEPEEEE]ÐU]ZUgڋE=@sEEEjEPYEEEE]ÐU]ZUjEPtuhE@% uE@E E@EE|3E@% u EE E@ EE@EjEP%EEEE]ÐU ]ZU7ڋEtTEt@E}Eu @EgE%u$@EJ>Eu1Eu(@E$Eu,@E E@EE]ÐU]Et\Et EEu EoE%u EVEu EC2Eu%Eu E Eu EE@EE]ÐU]Eu Eu EEE]ÐU(]܉u؋E @p‹ u u‰EE @HЋ Ѝ+Ћ+Ћ+ U+щUEUЋE @ uEЍЋE @EE UBE ? UBE? UBE? UBEE]܋uÐU ]E @E @? ЋE @? ЋE @? ЉUE-EE +‹U0BE +EE~+‹UBE~+EE +‹U0BE +UBEE]ÐU]EEE%tUE HME @ЋȍU+ȋE @ȍME @+E-E"E @E @]+EEE UBE? UBE? UBEE]ÐU]EEE @ E @? ЋE @? ЉUE%EUEE-EEEE +‹U0BE +EE2EE~+‹UBE~+EE@EE +‹U0BE +EEUBE2EU EE%UBEUBEE]ÐU]ZUGڋ0jPe8jPT]09   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0909  !"#$%&'()*+,-./012344444444444444444444444444444444444444444444444444444444444444444444444444409090909090909090909090909090909  090909 0909090909090909 0  !!!!!!"##########$$$$$$$%&'(()***+,---.////0001233455567889:::;<===>?@AAAAAAABBCCCCCDDEFGGHHHIJKLMNOOOOOPPQQQQQQRSTUUVWXXYYZZ[\\\\]^^^___`abcddeefffghhii  0909 09 0  !!!"##$%%%&'((((((((((()*++++,,,---./////0000122222222333333444444444555667777889999:::::::::::::::::::::;<==>>>>>???????@0909 0   !!""##$$$$%%&'((()*+++++,,-...//0001234456666660909 09 0  !!""#$$###$%%&&&'())))**++++++++++,-.....///////00111111123333444555555555566677789::::;<<<=>>>>>>????@@@@@@@@@@@AAAAAAAABBBCCCCDEEEEF0  !""#####""$%%&''()****+++++++,,,,---./////000112344455678999:;<=>???@ABBCDEFFGHIJJKKLMNNNNOPQQQQQRSTUUUUUUUUVWWXXYZ[\\\\]^_``abbbb0  !"###$$$$%&'())*****++++,,,,,----..//0111111223455666788999::;<<<<<<<=========>?@ABCDDDDDEEEFFGGGHIIIIIJKLMNOOPPQRSSSSSTUUUU0  !!!!!!!!!!!!!"""""""""##$$%&''''''())**+++,,---./00000000  !"###$%%%&&&&&&&&&'''''''(())*++,,-...////////01111222334456667778999:::;;;<<<<=>>?????@@@@@AAAABBBBBBBB0  !!"""""#$$$$%%&''(((()*+,--../0  !!!!!!!"""####$$%&'''''())***++++++++++++,---./00111123333444556678889999999:;<<<<<===>>>>>??@@@@@@@@@@AAAABBBBBB0  !!""""""""#######0  !""##$$$$$%&&&&&&&''())*++,,,,-../01222234555566667788899::;;<<<===>>>>?@ABBBBBBBCDDDDDDDEEEEFGGGGGHHHIIJJKLLLLLMMMMM0  !!!!!!!!""""""""##$$$$$$$$$$$%%&'''''''''''())****+++++++++++++,,,,,,,,,,,,,,,,,,,,,,---...0  !!!!!!!!!!!!!!!"#$%&&&'(()))*+,-..../////000001222233333330  !!!"#$$%&&'((()*+++,-.../00122333344444456677777789999:::::;;<<=>>>???@@AABBCCDEEFFFGGHHIJ0  !"###$%&&''())*+,---..////////000111112223345677777899:;;<<<<<====>???@@@@@AAAABBBBCCDEEEFFFFFFFFFFFFFFFFFFFGGGGGGG0  !"""#$%%%%&'(((())*****+,,,-0  !!"##$%&''''())))****++,,,,---.//01112233333344555567789999::::::::;<<<=>>>??@@@@AABBBBCDDDDEFGHHHIJJJJJJJKLMNOPPQQRSTUU0  !""#$$$$$$$%&&&'''''(((((((()***++++++++++,,,,,,,-./////////00112222333334444556777789:;;;<==>>>>>>>?@AAAABB0  !!!"""#$$$%&''())*+,-.////////001112333345566677777777899::0  !!!!!"""#$$%%%&&&'(())))****++++,,,,,---------...../////0000111122222222222222222222222222344444444556666667889::;<<<0  !"""""#$%%&&'())))****+,-.../01234456666666678888888888999:;<==>>>??@@ABBBBBBBBCDDDDEFGHIIJJJJJKKKLLLLLLLMMMMMMMNNNOOPQRSTUVVVVVV0  !!!!"""#####$%&''''''''''''((())))))))**+++,,,,---.//0000000000000000011223340  !!!!!!!!!!"##########$$$$$$$$$$$$%%%%%%&''''''())))*+++,,,,,,,-----..////////000000010 0  !"#####$$$$$$$$%%%&&&'((()))*******+++++,-.///0123334566777788999:;;;;;<<<=>0  !! "#$$%&&'()**++,,---.///000012233333345566778999:;;<=>?@AAAABCDEEFFGGHHHIIIIJJKKKLLLLLMMNNOOPQQRSSSSSTUVWWXXYYZZ[[[[[[\\\]]]0   !!!!!!!!""""""""####$%&&'''((((((((((())***************+++,--.....///////0001122334556666789::;<<<====>>>???@ABCCDDDEFGGGGGG0  !!!""#############$$$$%%%%%&&&&&&&&&&&''(())))))*++++++,,,,,,,-----------.////0  0  !!!!""""###$$$$$%%%%%%%&&&''''''()))*********++++++++++,,,,,0  !!!!!"#$$%%%%%%%%%%%%&&&&&&&&&&&&'((()*******+++,,,,-.////0110  !"#$%&'()*+,,--./012344567889:;<=>?@ABCDEFGHIIJK0 0000  !"#$%&'()*+,-./012345555555667788779999::;;<<=>==?????????0  !"#$%%%%%%%%%%%%%%%&'()*+,-./0123456789:;<=>?@ABCDEFGGGGGGGGGGGGG0  !"#$%&'()*+,-./0123456789:;<====>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????0  !!!!!!!!!!!!!!!0 0  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0 0 0  !!!!!"""##$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0  !! !"""####$%&&&'())*++,,--.../00122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_P`abcdefghijklmnopqrstuvw0  !"""########$$$$$$$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdFefghijjklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx0  !!!""!!!!!!!!!!!!########$$$$%%%%%%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh5ijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv0  !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE6FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk7lmnopqrs0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!"""###$$%%%&&&&&&&&'''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr0  !!!!!!""#$%&'()*+,-./0123456789:;<:=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\2]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!""#$%&'((()))))))))))))**+,,,-...../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu1vwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[?\;]^_`abcdefghijklmnopqrstuvwxyz{|0  !!""##$$$$$%%&'(()**++++++++++,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"###$%%%&&&'''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvrwxyz0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn0  !!""""#$%&'()*+,-./01234*56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!!!!!"""""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{p|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./0123456789:;<=>?@A)BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh0   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefffff0   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXY3Z[\]^_`abcdecfghijklm0   !"#$%&'()*+,-./01232456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ0  !"##$%%&''()*+++,--.//011234567889:;<=>>???@A>ABBBCDEEFFGGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdedf0  !!""#$%&'()*+,*-./*0-123456789:;<=>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[WW\]^_`_abcdefghijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./012345(67889:;+.<=>?@AB@CD8E9FDG=HIJHHK2ALMMGNOPQRSTUVWLX5YZ[\LY0  !"#$%&!'()*+,," -./012345667859:;<=>?1@ABCDBEFGHIJKLHMNOPQRST0  !"#$%&'()*+,-&./0123456789:;<=>?@ABCBDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"""##$$$%&'())**+,,-,./0123456789:;<=>?@ABCDDDEFGHDIJKLMNOPPQNELRSTUVWPXXYZ[\]^[[_``abcdeVfghijjklmnopqrstuvwx0  !"#$%&'()*++,-./012332'45*677889:;<=>?@A=:*BCDEFBGHIFJKLMNOPPQRSTUVWXYZ[\]^_`abcdee0  !"#$%&'()((*+(,-./01(23.4567889:;<=>?@ABCDEFEGHIJDKLMNOPQRSTUVWXYZ[\]^_`abccdefghijklmnopoq0  !"#$%&'(()))*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOKPQRSSTUV0  !"#$%&'()*+,,-.//0122223455566789:;<=>?@ABCCDEFGHIJKKLMJNOPQRSTQU0   !"#!$%&'()*+,-./01--234567879:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVW0  !"#$%&'()(*(+,-./01233.4566789:;<=>?@ABCDEFGHIJKLMNOPQRSTMUVWXXY0  !"#$%&'()*(*%+,-./0123456789::;<=>>?@ABCCDEFFFGGHHIJKLMNOO0  !!!!!"#$%&'()*+,-.-/012.345637489:;<=>=?@A0  !"#$$$%&'()*+,-./012345-6789:;<=>?@=ABCDEFGHHIIJKLKMNOPQRHSTUVWMXYZ[\]^__`0   !""#$%&'()*+,-./01234567889:;<=>?@AB6CDEFGHAHIJKKLKMMNOOPQRSTTTUUVTUUVWXXYZ[0  !"#$%&'(')*+,-./012344456789:;<=>?>@ABCDEFGHIJKLMNOOPQRRSTUVWWXXYZ[\]^^^____`abcdeefghijklm0  !""#$%&'(')*+,-.///0123456789:;<=>?@ABCDEFDGHHHHIJKLMNOLPQRSTTUVWTXYZ[\]^_`abbcdeffghijklmnopqrst0  !"""#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJDKLMNOPQRSTUVWXYZ[\]]^_`abbcdefghijklmnopq0   !"#$%&''()*''+++,-./,0123345-6789:;:<=>?<@ABCDEDFGHIJKLLMNOPNNQRSTUVWXXYZ[\0   !"#$%%%&'((&&)*+,,,--././..0122222334566666667778889:9;;;<==>>?0  !!!"##$%&&'((()**+$+++,-..///000012202233333333345556789:;<=>?@AB0  !"#$""%&&'(((())*+,-.../011111112324567897::;<=>?@ABCDEFDGHIJKLMNOPQRSTL0   !"#$%&'()*+,-.,/01/23414567879:;:<=>?@ABCDEFGHIJJJKLMNOPQRSTUVWXY0  !"#$%&''()*+,- ./0(102/3456789:;<=;>?@AABCD9E?FGHIJKLMNO0  !"#$%&'()*+,-./0123456789:;<<=>?@AABCDEFGHIJKLMNJOPQRGSTQUVWRXYZ[[\]^_S_`^a]bcdefgghijkilm0  !""#$%&'()*+,-./01233456789:;<==>?@@ABCD%E2FGHIJKLMNOPQRSTUVWXYZ[\]^_`aab0   !"##$%&&' ())$*)#+*,-./0/1234567118829:;<9=>?@ABCDEFGHIJKL0   !"#$%&'()*+,----./0111223344444455555677888888889999::::;;0  !"#$%&'%()*+*,,-./.0123456789:;<=>=?@ABCDEEFGHHIJKLMNNNONOPQORSTUVWXYYZ00 0  0 0      !"## $%#&'() *+,-./0122334567889:::;<=======>8??????????????????????????????????????????????????????????????????????????????????????????????  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@    !""            !"#$%&'()*++,-./0123456789:;  !""#$$$$$$%&'())))))))))*+  !"#$%&'((()*+,----.///0  !"#$$%&'()***+,-./01233345678  !"#$%&'()*+,-.//  !""#$$%&''()*+,,,,-)./0  !"!#$%&&&&&'((((((((()  !"#$%&&&&'()***+,  !"#$  !"#$      !"#$%&'()*+,-./01233  !!"#$%&'()*+++,-.//  !!"#$%&'()*+,-.  !"#$%&'(()**+,-./01234  !!!!!!!!!!"#$     !"#$$%&  !"#$%&'()**+,-./0123456788889   !"""""""#$$$$%&&&'  !"#$%&'()*+,-./0123455  !"##$%&'()*+,-./01234456789:;<  !"#$$%&'((  !"#$%&'()*+++,--./012  !"##$%&&&'())))))*+,-./  !!!"####$%&'  !!"#$%&  !"#$%&'())*   !"#$%%%%%&"'  !"#$$$%     !"#  !  ! "#$%&&&'(()*+++,-...  !"#$$$%&&&&&&&  !"##$%%       !"#$%%&''()*+,-...  !"#$%&'''())  !!"#$$%&&&&&&'()**+,     !!!!!"""        !"#$%&&&&'(()**  !"#$%%%&'(((()**+,-./01222345  !""#  !""""#$$%&&&'()*+,-.  !"""""""#$%%%%&  !"#$$$$%&'       !"  !!"#####$%&&''())    !!!!!"#####$%&'()*++++,-   !""#$%&'((((((()*+,---  !"#$%&'''  !"######$%&''''()**  !"#$$%&&&'(()**+,-./  !"#$$$%&&&&&'((((()*++,  !"##$%%&'(()*+,-.  !"#$%&'()))*++,-...  !"#$%%&'(((((      !"#$$$$%&''()))))*+,  !"#$$%&&'(()**+,-.  !"""#$$$%&'()*+  !"#$%&''()*+,-./012344445678  !""#$$$$$$%&''())  !""""#$%%&'((((  !"#$%&''()**+,-./0123  !"#$%%%%&'(  !""#$%   !"###     !"#$$%&&&&&&&&  !"#$$$$$$$$%&&'())  !""""#$%%&'''''  !"#$$%&%'''''()*+  !"#$%%&'''()    !"#$$%&''''())*++  !""#$%&'()*+,-,,,,)./0  !"#$%&'(()*+,-.///////  !"#$%%%%%%%%&'(  !""#$%&  !"########$%&'((((((((   !"""    !!!"##!!          !!!"###$%%  !"#$%&'())*++++,--  !"#$%&''()))*+,  !"#$%&'(()&*++++,-./0123  !!" #$%&'()**+,-./01  !"#$$$%&'()*+   !"###$%&&&&'(()*+++,---  !"##$%&&'(()**+,,,,,,-  !"#$$$%&'()*+++   !"##$%&$$'&()))))   !"##$%&'((  !!!!"####$%%%%%%  !        !"#$%&&  !!!"##       !"""#$%%%&&   !"#$%&&'()*+,---  !!"##$%&''''()   !""#$%%%%    !"""""#$$$     !"#$%&'())*+    !"#$%&''())*+,,-./0  !" ####$%&&'(((()**+,,-   !""#$$!%&''()))*+,-    !"#$%&&&'())*+,-  !"#$%%%    !"   !"""#$$%&'''()*+   !"####$%%%%&'    !"#####   !"#$$$$$$$%&&'()**  !"#$   !"#####$%%%%%%%%%%%&   !"#$%%&'$(((()*+,-./0  !!"#$%&'())*+   !"     !    !!"#$  !"#$%&'()*++,--./01234556789   !"#$%&'(((((  !""""#$    !!!!!!!"#$$$  !""""""#$%&'()*++,-./0   !"#$%&'()*+),,-.."/0123  !"#$%&'()*+,-.//  !"#####$%  !""""#$%&&'(    !"#$%&'()**)+  !   !"#$%&'()*++,-.///012   !"""#$%&&'(()*+*,----    !"#$%&'()*+,-..    !!!!!!!"#$$%&''  !"#$%&'((  !"#####$$%%%&''                   !!!!!   !!"#$$$%&&&&'(  !""#$$%&&%'''())*+    !""     !!!"#$  !!!  !""#$#%    !"""""""     !"#$$%&'()*+,-./0123456789:  !"#$$%&''()**+,,-........    !"#$  !"#$%&&&'()**+,,-./0122222222    !"#$%%&'%(&))  !"       !!"#$$$$%&''''())*+++,-.  !"#$%&'()**+,,,-./000122  !"###$%%%%%%$&'((((())*+,,-./01  !!!!!!!"#$  !"#$%&'()(*+,-.//01    !!!!"###$%%%%&'(   !"#$%&$'()*+,-...//0     ! "#$%&'''''())*+  !"###$%&'()**+,  !!"#$%&''() ***+,-./00  !   !!"#$%&'(((()*+,-  !"#$$$$$%&'()*++++++++  !"  !""""#$  !!!!"#      !""#$$$$$$$$$$$$$$$$$$$$$$$$